Script: Update Tailscale on (nearly) all devices

In that case, your device isn't supported by the tiny version right now. Please use the official Tailscale binary or use --no-tiny

Sorry for the late response.

Running it with “--no-tiny” seems to have installed it but now it needs “tailscaled”? What’s the best way to install that? Is it through the openwrt interface or running another command?

Why do you think it needs "tailscaled"? Where do you read this message?

When I try to use tailscale up, login or other commands, I keep getting “failed to connect to local tailscaled; it doesn't appear to be running”

I was using Tailscale and did run the script to auto-update Tailscale in my Slate 7 as well as set as “persistent”. However, since I no longer use Tailscale, I disabled it through the GL router page.

I now have a quick question, since I no longer use Tailscale (I really never used it much anyway) do I need to “uninstall” your script, or will it not cause any issues leaving it be. If I should need to remove the script, what are the steps and command(s) to do so.

Thanks

You can simply run my script with the --restore flag to remove all adjustments. Not really necessary, but I would recommend it when you don't use Tailscale anymore.

1 Like

Is it a device that never had Tailscale before? In that case, you need to write your own wrapper to run the service. In the tiny binaries tailscale and tailscaled are the same - they will act differently based on the name it gets called with.

Sorry, I’m not that savvy, typing tailscale update in the terminal shows

root@GL-AR750S:~# tailscale update
already running stable version 1.96.4; no update needed

but in openwrt it shows that tailscale and tailscaled are both installed as version 1.32.3-1 for both. I don’t really understand

Sorry, I can't really help here. Something is odd, but I'm not sure what's wrong.

This issue occurs on firmware with fw4 and Tailscale after commit util/linuxfw,wgengine/router: add connmark rules for rp_filter workar… · tailscale/tailscale@26ef46b · GitHub

Could you please check?. @admon

2 Likes

Thanks for the PR! :gl_emoji_woah:
I already merged it and rebuilt the most up to date TS version.

Fix is implemented now :gl_emoji_nice:
People just need to rerun my script to get the fixed version. No need for a restore or anything else since my script uses the internal workflow number as the TS release version.

3 Likes

Quick question, (sorry if this has already been asked and answered) but for most people, wouldn’t ssh-ing into the router and just running ‘tailscale update‘ solve this issue?

Yup. Was asked here:

and answered below it

And yes, you can still ssh in and run

tailscale set –auto-update

1 Like

Thank you, Admon. Some users say the previous change still doesn't fully fix the issue on their side. I've submitted a follow-up PR to adjust the Tailscale nftables connmark behaviour—the current rule was too intrusive for coexisting with other mark bits (vpn policy 0x8000). The endianness patch remains necessary and helpful; this follow-up only tightens the connmark restore rule on top of it.

Merged and rebuilt. Tailscale should contain this fix now.

1 Like

Thanks, double checked it's working:

root@GL-AXT1800:/tmp# tailscale --version
1.96.4-tiny.by.admon.1266
  tailscale commit: 41cb72f27119f95b859335f3ffc3434d6ca55e23-dirty
  long version: 1.96.4-t41cb72f27-tiny.by.admon.1266
  go version: go1.26.3
root@GL-AXT1800:/tmp#  
root@GL-AXT1800:/tmp# nft list table ip mangle
table ip mangle {
        chain PREROUTING {
                type filter hook prerouting priority mangle; policy accept;
                ct state established,related ct mark & 0x00ff0000 != 0x00000000 meta mark set ct mark
        }

        chain OUTPUT {
                type filter hook output priority mangle; policy accept;
                ct state new meta mark & 0x00ff0000 != 0x00000000 ct mark set meta mark & 0x00ff0000
        }
}
root@GL-AXT1800:/tmp# 
root@GL-AXT1800:/tmp# 
root@GL-AXT1800:/tmp# netns_client.sh -c br-lan 1
Entering existing namespace client_br-lan_1
Entering namespace client_br-lan_1 shell. Type 'exit' to leave.


BusyBox v1.36.1 (2026-04-30 11:01:21 UTC) built-in shell (ash)

[ns:client_br-lan_1] # ping 1.1.1.1
PING 1.1.1.1 (1.1.1.1): 56 data bytes
64 bytes from 1.1.1.1: seq=0 ttl=48 time=121.039 ms
64 bytes from 1.1.1.1: seq=1 ttl=48 time=119.721 ms
64 bytes from 1.1.1.1: seq=2 ttl=48 time=119.364 ms
64 bytes from 1.1.1.1: seq=3 ttl=48 time=119.673 ms
64 bytes from 1.1.1.1: seq=4 ttl=48 time=119.280 ms
^C
--- 1.1.1.1 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 119.280/119.815/121.039 ms
[ns:client_br-lan_1] # 
[ns:client_br-lan_1] # 

Thank you for taking the time to try to help me. I guess this router is just old, but I can’t find a newer router with more storage and ram that can be powered just through a laptop usb. I tried using Ai chatbot to see if it can narrow down what the issue is and one of the responses was that it puts installations in ram which is divided in chunks and there isn’t enough of it to install it, I tried using external storage and force it to use it for tmp files but it refuses to use external storage, I don’t know any commands so I guess I just need to maybe get a raspberry pi 2w for example?

I can confirm that my script works fine on firmware 4.9.0 running on Flint 4 :partying_face:

2 Likes

Do all threads really close 3 months after the last reply? Prod prod…

Most of them, yeah. :wink:
But I can open them again.

1 Like