A Roku remote through Tailscale
My daughter's grandma called while I was outside the house. She wanted me to stop a show on the Roku, but she could not find the remote. I had my phone, Tailscale was connected, and the Roku app looked like the obvious answer.
At first the app refused to enable its remote without Wi-Fi. Tailscale could route traffic to my home network, but it did not make mobile data look like Wi-Fi to the Roku app.
ChatGPT suggested the missing combination: connect the phone to any available Wi-Fi so the app enables its remote, then bypass discovery by entering the Roku's home IP address manually. The Wi-Fi connection satisfied the app's local check; it did not need to be my home Wi-Fi.
I connected the phone to another Wi-Fi network, kept Tailscale connected, opened Devices help, chose Connect manually, and entered the living-room Roku's private IP address.
- Any Wi-Fi enables the remote
- Roku app Connect manually
- Home IP bypasses discovery
- Tailscale routes traffic home
- Roku :8060 receives the command
That worked. The official Roku app connected to the Roku at home, and its remote controls worked while I was outside. I could stop the show for Grandma without a separate web remote or exposing the Roku to the public internet.
Each part solved a different restriction. Wi-Fi made the Roku app show and enable the remote. Manual entry avoided local multicast discovery, which did not cross the route. Tailscale carried the ordinary connection to the Roku's private address on the home LAN.
For this to keep working, the Roku needs a stable IP address and must allow mobile-app control. A DHCP reservation keeps the address from changing. The Roku remains private; traffic still travels through Tailscale.
What I remember is the shape of the workaround: Grandma needed a show stopped, the remote was missing, and I was not home. One question to ChatGPT revealed that the app's Wi-Fi check and the actual network path were separate problems. Any Wi-Fi satisfied the first, manual IP entry solved discovery, and Tailscale solved the distance.