Script: Update Tailscale on (nearly) all devices

eventually this worked:

opkg remove tailscale --force-depends
opkg install tailscale
sudo ./update-tailscale.sh
1 Like

Great to hear!

sudo isn't necessary on OpenWrt, btw. Everything runs as root by default.

1 Like

right, of course..... :person_facepalming:

Thanks a lot for your work! I can confirm that this script not only working on my GL-MT3000 but also on my three Xiaomi AX3000T OpenWRT 23.05.2 routers. It also frees up some space greatly since non-tiny Tailscale.ipk is about 10mb but your script is updating it to tiny version of Tailscale.

2 Likes

Script also doesn't like GL-E750 :

root@GL-E750:~# uname -a
Linux GL-E750 5.10.176 #0 Sun Apr 9 12:27:46 2023 mips GNU/Linux
root@GL-E750:~# grep 'machine' /proc/cpuinfo | awk -F ': ' '{print $2}'
GL.iNet GL-E750
root@GL-E750:~#

But :

[2024-09-20 13:19:16] [→] Checking if prerequisites are met
[2024-09-20 13:19:16] [✓] Firmware version: 4
[2024-09-20 13:19:16] [✓] Architecture: mips
[2024-09-20 13:19:16] [✓] Available space: 82 MB
[2024-09-20 13:19:16] [!] xz is not installed. We can install it for you later.
[2024-09-20 13:19:16] [✓] Prerequisites are met.

Hi Admon,

I checked your script on GL-E750 V2 (Mudi), it downloads an install version which crashes. Do you know any version of updated Tailscale which can run on this device (without replacing the entire firmware...)

@Dorin @MucFlyer
I don't own a Mudi and can't test - but I assumed it might use "mipsel" instead of "mips".
Could you please re-try the newest version of the script?

I wrote a post, mentioning your update script as well as the official binaries from Tailscale with some simple explanation.

5 Likes

Illegal instruction error on script exit

I also have a Mundi GL-E750 that failed to install. Mundi had a full factory reset just prior to running the script:

  • Version4.0
  • Firmware Type0319release3
  • root@GL-E750:~# uname -a
    Linux GL-E750 5.10.176 #0 Sun Apr 9 12:27:46 2023 mips GNU/Linux
    root@GL-E750:~# grep 'machine' /proc/cpuinfo | awk -F ': ' '{print $2}'
    GL.iNet GL-E750

[2024-10-12 11:40:40] [→] Checking if prerequisites are met
[2024-10-12 11:40:40] [✓] Firmware version: 4
[2024-10-12 11:40:40] [✓] Architecture: mips
[2024-10-12 11:40:40] [✓] Available space: 88 MB
[2024-10-12 11:40:40] [!] xz is not installed. We can install it for you later.
[2024-10-12 11:40:40] [✓] Prerequisites are met.
┌──────────────────────────────────────────────────┐
| Are you sure you want to continue? (y/N) |
└──────────────────────────────────────────────────┘
y
[2024-10-12 11:40:47] [→] Detecting latest tiny tailscale version
update-tailscale.sh: line 134: tailscale: not found
[2024-10-12 11:40:48] [→] The latest tailscale version is: 1.76.0
[2024-10-12 11:40:48] [→] Downloading latest tailscale version
[2024-10-12 11:40:56] [→] Creating backup of tailscale config
tar: etc/config/tailscale: No such file or directory
tar: error exit delayed from previous errors
[2024-10-12 11:40:56] [✓] Backup created: /root/tailscale_config_backup/2024-10-12_11-40-56.tar.gz
[2024-10-12 11:40:56] [→] The binaries will not be backed up, you can restore them by using the --restore flag.
[2024-10-12 11:40:56] [→] Stopping tailscale
[2024-10-12 11:41:01] [→] Moving tailscale to /usr/sbin
[2024-10-12 11:41:01] [→] Removing temporary files
[2024-10-12 11:41:01] [→] Modifying gl_tailscale script to work with the new tailscale version
sed: /usr/bin/gl_tailscale: No such file or directory
[2024-10-12 11:41:01] [✓] gl_tailscale script modified successfully
[2024-10-12 11:41:01] [→] Restarting tailscale
┌────────────────────────────────────────────────────────────────────────────────┐
| The update was successful. Do you want to make the installation permanent? |
| This will make your tailscale installation persistent over firmware upgrades. |
| Please note that this is not officially supported by GL.iNet. |
| It could lead to issues, even if not likely. Just keep that in mind. |
| In worst case, you might need to remove the config from /etc/sysupgrade.conf |
└────────────────────────────────────────────────────────────────────────────────┘

Do you want to make the installation permanent? (y/N)
y
[2024-10-12 11:41:04] [→] Making installation permanent
[2024-10-12 11:41:05] [→] Modifying /etc/sysupgrade.conf
[2024-10-12 11:41:05] [✓] Script finished successfully. The new tailscale version (software, daemon) is:
Illegal instruction
Illegal instruction

Mudi is unfortunately not supported yet, I am sorry :frowning:

Just wanted to say thank you to @admon for writing and maintaining the script!

3 Likes

Hi @admon do you have script like this on zerotier? Gl-zerotier version 1.10 latest version is 1.14.

Unfortunately not, I am sorry.

1 Like

No worries, I am happy to setup SSH/GUI access if you would like to remote in and review what it might take to make it work.

I know the issue, I am just not able to build a working version without having hands on.
Maybe I will buy a MudiV2 in future and try it.

Hi Admon!

Good job, script worked well on my Brume2.
However, when I tried to update Tailscale on Mango router (GL-MT300N-V2) it didn't work.
Most probably because Mango has mipsle (MIPS 32-bit little-endian) architecture.
I've checked Router original files (v1.32.3-1) with Cygwin:

I managed to update it manually using these binaries:

Thanks for your information, I added support for the Mango as well :slight_smile:

2 Likes

Hi, thanks for your effort with this.

Is ts.net lan an expected, non-problematic value for this field after running this script? I didn't realize more than one suffix could live in that field..?

My script does not modify this so I can't tell. Must be something you added by yourself.

I'm almost certain I didn't put ts.net in myself, but I can't prove it because my memory is Swiss cheese. I had to factory reset one of my routers and will be installing Tailscale and updating via your script, I'll let you know if it shows up again.

Edit: It's also set like that on my Beryl AX - I may be only 92% sure I didn't set that myself on one device, but I'm like 99.8% sure I didn't set it myself on two of them.

Am I correct in thinking that field can't normally contain a space-separated list of values?