Script: Update Tailscale on (nearly) all devices

Thanks for letting me know!

Hey there!

I just found this page while trying to find a solution about updating tailscale on my router.

I’ve read some of the posts here but I still can’t update it. I guess it’s because of storage? Although, it says that storage has 92mb free and the script asks for 83mb, so I don’t know.

Here is what it shows me in putty:

 root@GL-AR750S:\~# wget -q https://get.admon.me/tailscale -O update-tailscale.sh
; sh update-tailscale.sh
ℹ️  Checking for script updates
✅ The script is up to date

OpenWrt/GL.iNet Tailscale Updater by Admon
Version: 2026.01.06.01

============================================================

WARNING: THIS SCRIPT MIGHT HARM YOUR ROUTER!
Use at your own risk. Only proceed if you know
what you're doing.

============================================================

Support this project:
- GitHub: 
- Ko-fi: ko-fi
- Buy Me a Coffee: buymeacoffee

============================================================

ℹ️  Checking if prerequisites are met
✅ GL.iNet firmware version: 4
✅ Architecture: mips
✅ Available space: 83 MB
✅ xz is installed.
✅ wget is installed.
✅ Prerequisites are met.
ℹ️  Collecting user preferences before starting the update process

┌───────────────────────────────────────────────────────────────────────────────                                    ─┐
| Make 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) n

┌──────────────────────────────────────────────────┐
| Are you sure you want to continue? (y/N)         |
└──────────────────────────────────────────────────┘
y
ℹ️  Starting update process...

ℹ️  Detecting latest tiny tailscale version
ℹ️  The latest tailscale version is: 1.92.5-tiny.by.admon.1131
ℹ️  Downloading latest tailscale version
ℹ️  Creating backup of tailscale config
✅ Backup created: /root/tailscale_config_backup/2026-01-26_03-42-32.tar.gz
ℹ️  The binaries will not be backed up, you can restore them by using the --resto                                    re flag.
ℹ️  Stopping tailscale
ℹ️  Moving tailscale to /usr/sbin
ℹ️  Removing temporary files
ℹ️  Starting tailscale
ℹ️  Not a GL.iNet router or gl_tailscale script not found, skipping GL-specific m                                    odifications
ℹ️  Stopping tailscale
ℹ️  Starting tailscale
✅ Script finished successfully. The current tailscale version (software, daemon                                    ) is:
Illegal instruction
Illegal instruction

If you like this script, please consider supporting the project:

* GitHub: 
* Ko-fi: ko-fi.
* Buy Me a Coffee: buymea

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

The CPU on this router is old and there is no update that supports this CPU?

I will check this and will come back to you later.

Could you please run cat /etc/openwrt_release?

1 Like

Hello. Yes.

root@GL-AR750S:~# cat /etc/openwrt_release
DISTRIB_ID='OpenWrt'
DISTRIB_RELEASE='22.03.4'
DISTRIB_REVISION='r20123-38ccc47687'
DISTRIB_TARGET='ath79/nand'
DISTRIB_ARCH='mips_24kc'
DISTRIB_DESCRIPTION='OpenWrt 22.03.4 r20123-38ccc47687'
DISTRIB_TAINTS='busybox'
root@GL-AR750S:~#

can cofirm again the script worked flawlessly for updating my gl-a1300’s agent version from 1.82.1 to 1.94.1 while i was connected to it through ssh. Thanks heaps.

wget -q https://get.admon.me/tailscale -O update-tailscale.sh ; sh update-tailscale.sh
1 Like

Issue should be fixed, please re-run the script.

1 Like

Hello admon,

I ran the script again and it shows the same output as before.

“Illegal instruction”

And it also shows “Illegal instruction” when I try to run “tailscale up” and “tailscale status”

Thank you. This worked

Hm, it appears that the results of our research don't fit the actual system architecture. Weird.
Could you please share the output of file /bin/busybox and file /rom/usr/sbin/tailscaled?

This is the output that it shows.

root@GL-AR750S:~# file /bin/busybox
-ash: file: not found
root@GL-AR750S:~# file /rom/usr/sbin/tailscaled
-ash: file: not found
root@GL-AR750S:~#

Hello Aaron, Any plans to update the script to 1.94.2? Changelog · Tailscale

Narf. The Tailscale crew failed to push a release rather than just a tag ... again.
I modified my build script and triggered a manual resync. The new version will be available in 5 min.

3 Likes

Thank you so much!! ^^

It took more time than I thought, but the new version is online now!

2 Likes

Opps a get the following error when updating using Beryl 7:
:information_source: Starting update process...

:information_source: Detecting latest tiny tailscale version
:information_source: The latest tailscale version is: 1.94.2-tiny.by.admon.1180
:information_source: Downloading latest tailscale version
:cross_mark: Could not download tailscale. Exiting
:cross_mark: File not found: /tmp/tailscaled-linux-arm64

Hm, can't reproduce it on my end. Please try again and make sure to turn off VPN before, sometimes Github does not like it.

1 Like

Yes, now works without any change xDDD Thanks mate!!!

1 Like

Hi @admon I am attempting to upgrade tailscale [as-provided] on my GL-MT6000 router (v4.8.3) and I reviewed the available upgrade script arguments, and I have chosen this statement to execute the script:

sh update-tailscale.sh --ignore-free-space --no-tiny --select-release --log

However, the script is enumerating thousands of selections to choose from. (I don’t think the script is parsing the output correctly.)

I may eventually omit the “–select-release” argument. But it would be nice to have a choice to revert back to a specific build if some bug is encountered.

Can you please take a look?

Thanks for all you do!
-Jonathan