Using Channels away from home

So sadly, my stepfather passed away and my mother is now living alone. I want her to be able to access my Channels instance that I'm hosting at home that way, she can have some background noise and TV, and hopefully, take her mind off of everything going on.

I just have a really, really simple question. I have my port 8089 forwarded out, I logged in two Onn 4K Plus boxed at her house to my Channels DVR account set up away from home using my forum credentials. I was just wondering how long that connection lasts for before it needs to be reauthenticated, or is it fairly durable and will it last just until she logs out one day? Hopefully not.

I know in the past when I've set up my Plex for her, it's just worked as long as she's used it for. I've never set up Channels for a close family member in such a situation, so I just am curious how it would work in that sort of environment. Everything was streaming great for her and was working really well, and it really made her happy, especially given the tough circumstances. I'm just curious if it's a durable solution or if I should be looking more into setting up Tailscale. I just need it simple for her, and I know Tailscale could get a little confusing on the Android boxes, especially if the VPN gets shut off.

If she uses it regularly it will stay authorized at least a month plus. If it is not used for a few weeks it will prompt to login again. This is my experience with an Apple TV and I would guess android would be the same. I would run with away from home login first and if it prompts to frequently go to Tailscale.

1 Like

I'm sorry to learn of your stepfathers passing. Opening port 8089 to the internet is a security risk as it's unknown what vulnerabilities exist. You are much better off using a VPN. Tailscail is pretty easy to set up yet It can cause some strange issues though your mom's setup is probably too simple to face them. It's probably plug and play for your application.

I'm a big fan of Tailscale, but be aware that it is not persistent on Android, in the sense that it needs to be re-enabled after any restart.

2 Likes

Ah that would be a huge problem for her. Better off re-authenticating every now and then.

1 Like

I have an infosec background and an IDS on my network. It's fine. Thanks for the concern.

Also use 2FA in case some hacker cracks your login info

1 Like

Of course lol. Everything has 2FA and like 100 char+ random passwords.

1 Like

I'm sorry to know of your family's loss. You have my condolances.

I have used Tailscale on my remote Android boxes without any problems for quite some time.

I have managed this issue by adding an app to automatically launch Tailscale on startup/reboot.

1 Like

Thanks John!
What app do you use?

That's an excellent question. Right off the top of my head... I have no idea. It was quite a while ago since I set it up. It's truly a "set it and forget it" situation. I'll be at the remote location tomorrow, and can check for you.

I'll agree with @Rice , If you're using the remote connection often, it stays connected fairly well. I do find that I occasionally have to reconnect upon arriving after an extended absence.

I actually figured it out. It was just a couple of adb commands.

I rebooted the box a few times and it reconnected right away.

1 Like

Do you need to know the IP address to send the ADB commands? If so, you may want to set a static IP.

No, you just send them once.
They seem to persist across reboots.

adb shell appops set com.tailscale.ipn ACTIVATE_VPN allow
adb shell settings put secure always_on_vpn_app com.tailscale.ipn
adb shell settings put secure always_on_vpn_lockdown 0
adb shell settings get secure always_on_vpn_app

then reboot

1 Like

glad you found it. I have a couple osprey's at my dad's, and setup persistent tailscale and channels. he really only uses the channels part during football season for local channels, otherwise he just uses dtv. he only ever has 1 on at a time so it only eats up 1 of the away streams.

1 Like

Yeah, persistent Tailscale over ADB on the Onn 4K boxes seemed to work pretty well.

Be sure to disable expiry on her clients, in Tailscale.

2 Likes

Thank you so much. Already done!!

Alright, so I found a really durable solution for this. The ADB commands do work, but there's a better way of doing this. It involved purchasing TV QuickActions Pro on the Google Play Store. The following are instructions from Claude, but they work perfectly, so I'm just copying and pasting them as is!


Auto-Starting Tailscale on Google TV with tvQuickActions Pro

Background

Tailscale's Android app has no BOOT_COMPLETED receiver — verified against the current AndroidManifest.xml in tailscale/tailscale-android. There is no setting to enable and no hidden option. Tailscale's position has been to defer to Android's Always-on VPN, which many Android TV builds don't expose in the UI.

However, the manifest does declare an exported broadcast receiver:

<receiver android:name="IPNReceiver" android:exported="true">
    <intent-filter>
        <action android:name="com.tailscale.ipn.CONNECT_VPN" />
        <action android:name="com.tailscale.ipn.DISCONNECT_VPN" />
        <action android:name="com.tailscale.ipn.USE_EXIT_NODE" />
    </intent-filter>
</receiver>

IPNReceiver enqueues a StartVPNWorker via WorkManager on CONNECT_VPN. No permission gate, no signature check — any app can fire it. That's the hook this guide uses.


Prerequisites

Complete these on every device before the automation will work:

  • [ ] tvQuickActions Pro installed (trigger actions are Pro-only)
  • [ ] Accessibility service enabled — Settings → System → Accessibility → tvQuickActions
  • [ ] "Display over other apps" permission granted
  • [ ] Usage access granted (needed for constraints)
  • [ ] Tailscale opened manually once, signed in, and the system VPN consent dialog accepted
  • [ ] Battery optimization disabled for both apps — Settings → Apps → Special access → Energy optimization

The VPN consent dialog is system-signed. Nothing can automate past it. The broadcast only works once consent is on file.


1. Build the intent action

Path: Sidebar → Trigger actions & Macros → Add

This creates a new macro. The editor shows four rows: Title, Icon, Actions, Triggers.

  1. Open ActionsAdd
  2. From the tab strip, choose Custom actions
  3. Press Add at the bottom → select Intent
  4. Fill in:
Field Value
Title Tailscale Up
Type Broadcast receiver
Action com.tailscale.ipn.CONNECT_VPN
Package com.tailscale.ipn
Class com.tailscale.ipn.IPNReceiver
  1. Leave Categories, Data, Type (MIME), Flags, and Extras empty
  2. Do not tick "Non-exported activity" — the receiver is exported
  3. Save

2. Add the delay and second send

Back in the macro's Actions list:

  1. Set a delay of ~25 seconds on the Tailscale Up action — on cold boot the intent otherwise fires before Wi-Fi/DHCP settles and the worker fails silently
  2. Press Add again → Custom actions tab → select the same saved Tailscale Up action
  3. Set a delay of ~5 seconds on this second copy

The double-send works around the StartVPNWorker stall under Android 15/16 background-start restrictions (tailscale#18847).

  1. Give the macro a recognizable title, then back out

Long-press any action in the macro list to reorder or delete it.


3. Attach to triggers

On the Trigger actions & Macros screen, the three predefined triggers sit above your macro list.

  1. Open Turning on the deviceActionsAddMacros tab → select your macro → ensure Enable is on
  2. Repeat identically for Screen on (after sleep)

Both are required. The reboot trigger does not fire on a remote-button wake, and vice versa.


4. Editing a saved intent

Tapping a saved custom action selects it. To edit it, long-press.

Path: Trigger actions & Macros → your macro → Actions → Add → Custom actions tab

That tab is the library of every saved custom action. Long-press the entry → Edit. After saving, back out of the Add dialog with the Back button so you don't add another copy.

Because both entries in the macro reference the same saved action, editing once updates both sends.

Long-pressing inside the macro's action list instead only offers sort/delete for that one instance. That's also where you change the delay — delay is a property of the instance, not of the saved action.


5. Testing

Quick check

Long-press the macro in the Trigger actions & Macros list — if the menu offers Run, use it.

Map to a button

Sidebar → Mappings → Add button → press a spare remote button (Netflix, a color button, Mute) → Usual actionSingle pressMacros tab → select your macro.

Test the intent before the macro

In that same flow, select from the Custom actions tab and pick Tailscale Up directly. This skips the 25-second delay. If the raw intent doesn't bring the tunnel up, no trigger wiring will fix it.

Test hygiene

  • Force-stop Tailscale before each test (Settings → Apps → Tailscale → Force stop) so you're testing a genuine cold start
  • Enable toasts — Sidebar → Settings → Toasts — to confirm the action actually fired. This separates "tvQuickActions didn't run it" from "it ran and Tailscale ignored it"
  • Confirm success in the Tailscale admin console rather than trusting the VPN key icon

Validate the Tailscale half independently

adb shell am broadcast -a com.tailscale.ipn.CONNECT_VPN -n com.tailscale.ipn/.IPNReceiver

result=0 plus a tunnel coming up means the receiver works and anything still broken is on the tvQuickActions side.

Delete the temporary button mapping once testing is done.


6. Back up and transfer to another device

Create the backup (source device)

Path: Sidebar → Settings → Backup → Create backup

Choose macro scope rather than a full backup. A macro backup includes all custom actions it references, so the Tailscale Up intent rides along. A full backup drags over button mappings, dock config, and AFR settings that may not suit the other box — and restore is a merge, so you'd be layering one device's mappings onto the other.

On Android 11+ the location is not selectable. The file is written to Documents on internal storage (/sdcard/Documents/).

Verify and pull

Some file managers won't show the file due to scoped storage. Verify from a shell:

adb shell ls -la /sdcard/Documents/
adb pull /sdcard/Documents/<filename> .

Push to the target

adb push <filename> /sdcard/Documents/

Both adb commands are identical on macOS and Windows.

Restore (target device)

Prerequisite: a file manager app must be installed on the target — Android 11+ won't provide a picker otherwise.

  1. Settings → Backup → Restore backup → Merge
  2. Browse to Main storage → Documents
  3. Select the file
  4. Wait for the Success popup

To make the target match exactly instead of merging, clear tvQuickActions' app data in device settings first.

What does not transfer

The backup carries config only. On the new device you must still:

  • Enable the accessibility service
  • Grant display-over-other-apps and usage access
  • Disable battery optimization
  • Open Tailscale and accept the VPN consent dialog

Restoring the macro does not grant VPN permission. The trigger will fire into a void until that dialog is accepted manually.

So, back when this thread started, I was going to recommend tvQuickActions Pro. I use it to auto start Tailscale whenever my Android client boxes reboot. My actions are a bit less sophisticated (complicated?).