Required Configuration/Backup Files
The configuration/backup files are required for restoring the app settings for Projectivy, TiviMate, and Button Mapper. These files are located in my NAS.
| File | How to Create | What It Contains |
|---|---|---|
| projectivy-backup.json | Projectivy โ Settings โ Backup โ Export to file | Layout, auto-start, theme, all settings |
| projectivy-icon-pack.apk | Sideload APK stored on NAS | Custom icon pack for Projectivy Launcher |
| tivimate-backup.tmb | TiviMate โ Settings โ Backup โ Backup to file | Playlists, EPG, favorites, playback settings |
| ButtonMapper.bm_backup | Button Mapper โ Settings โ Backup โ Export | All button remapping configurations |
Have your Tailscale account credentials handy. Each box needs manual sign-in, so stay signed in on your phone to approve device authorizations quickly.
Per-Box Setup Process
Follow this workflow for every box. Each box is configured identically. Target: 20โ30 minutes per box.
1 โ Initial Setup & Device Naming
Power on the Streamer and run through the Google TV setup wizard.
- โPlug in the Streamer and pair the remote
- โSelect language and region
- โConnect to your father's WiFi network
- โSign in with the designated Google account
- โName the device during setup (refer to the Device Tracking Table)
- โSkip or decline optional personalization prompts
- โDecline Google TV's suggested apps (you will install manually)
- โComplete the wizard and reach the home screen
Use the same Google account for all 12 boxes. Previously installed apps will appear in the account's app library for quick reinstall.
2 โ Manual App Installation
Install all required apps from the Google Play Store in the following order (unless otherwise noted).
Apps to Install from Google Play Store
| # | App | Source |
|---|---|---|
| 1 | Apple TV | Play Store |
| 2 | Button Mapper | Play Store |
| 3 | CX File Explorer | Play Store |
| 4 | DirecTV | Play Store |
| 5 | Disney+ | Play Store |
| 6 | Fox One | Play Store |
| 7 | HBO Max | Play Store |
| 8 | Netflix | Play Store |
| 9 | Paramount+ | Play Store |
| 10 | Peacock TV | Play Store |
| 11 | Plex | Play Store |
| 12 | Pluto | Play Store |
| 13 | Prime Video | Play Store |
| 14 | Projectivy | Play Store |
| 15 | Projectivy Icon Pack | Sideloaded from NAS as APK |
| 16 | TiviMate | Play Store |
| 17 | VLC | Play Store |
| 18 | YouTube | Play Store |
Install Last (in this order)
| # | App | Source |
|---|---|---|
| 19 | AnyDesk | Play Store |
| 20 | AdControl AD1 | Play Store |
| 21 | Tailscale | Play Store |
The last two apps installed from the main list should be AnyDesk and AdControl AD1, followed finally by Tailscale. This ensures all other apps are already present before configuring remote access and the VPN.
Open the Play Store and go to your app library (profile icon โ Manage apps & device โ Manage). You can select multiple apps and install them in batch.
3 โ Enable Developer Options & Wireless Debugging
4 โ Configure All Apps
With all apps installed, configure each app in the following order using the TV remote.
Step 1: Configure Tailscale
How Split Tunneling Works With This
Your streaming apps (DirecTV, Netflix, Disney+, etc.), with the exception of TiviMate and Pluto, are routed through Tailscale for exit node routing. The always-on VPN ensures Tailscale reconnects automatically so these apps remain connected through the VPN rather than directly to the internet.
Step 2: Configure CX File Explorer
Add a NAS connection so you can access backup and configuration files from the device.
| Setting | Value |
|---|---|
| Protocol | FTP (not SFTP) |
| IP Address | 107.132.118.229 |
| Port | 21 (default) |
| Name | NAS |
Step 3: Configure TiviMate
Step 4: Configure Projectivy Launcher
Step 5: Configure Button Mapper
Main storage/Android/data/flar2.homebutton/files/Any future Button Mapper configuration changes that create a new backup are stored in the same internal folder (Main storage/Android/data/flar2.homebutton/files/). You must copy any new backups to the NAS for safekeeping.
5 โ Connect with Bugjaeger
Work quickly after connecting. Wireless Debugging can time out on idle connections. If it drops, re-pair (the port may have changed).
6 โ Core ADB Optimization Commands
With all apps configured, switch to Bugjaeger and run the following commands.
settings put global wifi_sleep_policy 2 dumpsys deviceidle whitelist +com.tailscale.ipn dumpsys deviceidle whitelist +com.anydesk.anydeskandroid dumpsys deviceidle whitelist +com.spocky.projengmenu dumpsys deviceidle whitelist +ar.tvplayer.tv settings put global background_dex_opt_job_enabled 0 settings put global activity_manager_constants max_cached_processes=32 settings put global stay_on_while_plugged_in 3 settings put secure screensaver_enabled 0 settings put system screen_off_timeout 1800000 settings put global adb_notify 0 settings put global device_provisioned 1 settings put secure user_setup_complete 1 settings put global usage_stats_enabled 0 settings put global dns_resolver_sample_validity_seconds 3600 settings put global window_animation_scale 0.5 settings put global transition_animation_scale 0.5 settings put global animator_duration_scale 0.5 settings put global hdmi_control_enabled 1 settings put global hdmi_control_auto_device_off_enabled 1 settings put global hdmi_control_auto_wakeup_enabled 1 appops set com.anydesk.anydeskandroid PROJECT_MEDIA allow
Tailscale VPN Persistence
Run these immediately after the commands above to ensure Tailscale reconnects automatically after reboots.
settings put secure always_on_vpn_app com.tailscale.ipn settings put secure always_on_vpn_lockdown 0
AnyDesk and AdControl AD1 setup should be completed last, after all ADB commands have been applied.
Configure AnyDesk & AdControl AD1
Even if AdControl AD1 installation or remote touch does not work, AnyDesk screen viewing will still function perfectly. The primary support workflow is viewing the screen while guiding your father over the phone.
Sign Into Streaming Apps
Sign into all streaming apps and test playback on each one to confirm they work correctly through the Tailscale exit node.
7 โ Remote Access Verification (DO NOT SKIP)
Test EVERY box from mobile data before moving on. This confirms your primary remote support tool works from outside your father's network.
- โAnyDesk screen viewing confirmed via mobile data
Your Remote Support Capabilities
| From Anywhere (Internet) | What You Can Do |
|---|---|
| AnyDesk | View screen, guide father by phone, potentially interact via touch |
| Tailscale | Secure network for IPTV/streaming exit node routing |
| Phone call + AnyDesk | See exactly what your father sees, tell him where to navigate |
| On Father's WiFi Only | What You Can Do |
|---|---|
| Bugjaeger (Wireless Debug) | Full ADB shell: install apps, change settings, run commands |
| AnyDesk (also works here) | Screen viewing and interaction |
Device Tracking Table
Plan your device names before you start. Name each box during the setup wizard (Step 1). Record the AnyDesk ID after completing Step 6.
Device Tracking Table
Also rename each device in the Tailscale admin console to match the name you chose during setup.
| # | Device Name | AnyDesk ID | Location / Notes |
|---|---|---|---|
| 1 | |||
| 2 | |||
| 3 | |||
| 4 | |||
| 5 | |||
| 6 | |||
| 7 | |||
| 8 | |||
| 9 | |||
| 10 | |||
| 11 | |||
| 12 |
Post-Deployment
Tailscale Admin Console
Verify all 12 devices appear. Rename each to match the names you chose during the setup wizard.
AnyDesk Address Book
Add all 12 boxes to your AnyDesk address book on your phone. One-tap access to any box for remote support.
Ongoing Maintenance
All ADB commands are permanent and survive reboots and updates. The only reset scenario is a factory reset.
For day-to-day support: AnyDesk + phone call to your father. For deeper system changes: Bugjaeger on local WiFi (rare after initial setup).
Cache Clear (when needed, via local Bugjaeger)
pm trim-caches 999G
Troubleshooting
If a box is misbehaving after deployment, use these tools to diagnose the issue before re-running commands or factory resetting.
Verify ADB Settings
If something isn't working right โ Tailscale dropping after sleep, screensaver kicking in, AnyDesk not connecting โ connect Bugjaeger and run these queries to check whether a setting reverted. Compare each result against the expected values below.
settings get global wifi_sleep_policy settings get global stay_on_while_plugged_in settings get system screen_off_timeout settings get secure screensaver_enabled settings get global hdmi_control_enabled dumpsys deviceidle whitelist settings get secure always_on_vpn_app
| Setting | Expected Value | If Wrong, Re-run |
|---|---|---|
| wifi_sleep_policy | 2 | settings put global wifi_sleep_policy 2 |
| stay_on_while_plugged_in | 3 | settings put global stay_on_while_plugged_in 3 |
| screen_off_timeout | 1800000 | settings put system screen_off_timeout 1800000 |
| screensaver_enabled | 0 | settings put secure screensaver_enabled 0 |
| hdmi_control_enabled | 1 | settings put global hdmi_control_enabled 1 |
| always_on_vpn_app | com.tailscale.ipn | settings put secure always_on_vpn_app com.tailscale.ipn |
Check Doze Whitelist
The dumpsys deviceidle whitelist output should include all four of these packages. If any are missing, re-add them:
dumpsys deviceidle whitelist +com.tailscale.ipn dumpsys deviceidle whitelist +com.anydesk.anydeskandroid dumpsys deviceidle whitelist +com.spocky.projengmenu dumpsys deviceidle whitelist +ar.tvplayer.tv
Common Issues
Tailscale disconnects after sleep or reboot
Check that always_on_vpn_app is set to com.tailscale.ipn and that Tailscale is in the Doze whitelist. Also confirm Projectivy is configured to launch Tailscale on startup.
Streaming apps won't load or show location errors
This usually means the app is bypassing Tailscale. Open Tailscale's split tunneling settings and confirm the affected app is unchecked (meaning it routes through the VPN, not directly to the internet).
AnyDesk shows the screen but can't accept touch input
The AdControl AD1 plugin may not have accessibility permissions. Open Settings โ Accessibility on the TV and confirm AdControl AD1 is enabled. If it's missing, open AnyDesk and follow the plugin install prompts again.
Projectivy isn't loading as the home screen
Go to Settings โ Apps โ Default apps โ Home app and set Projectivy as the default. If it was set but reverted, restore the Projectivy backup from the NAS again.
Button Mapper remaps aren't working
Check that Button Mapper has accessibility service permissions enabled in Settings โ Accessibility. If the backup restore didn't take, re-copy ButtonMapper.bm_backup from the NAS to Main storage/Android/data/flar2.homebutton/files/ and restore again.
HDMI-CEC not syncing power between TV and Streamer
Verify hdmi_control_enabled is set to 1 via ADB. Also check the TV's own CEC setting (may be called Anynet+, Simplink, or Bravia Sync depending on the brand) โ it may be disabled on the TV side even when the Streamer is configured correctly.
Wireless Debugging won't connect or keeps dropping
The pairing port changes each time Wireless Debugging is toggled. Toggle it off and back on, then re-pair with the new port and code. Work quickly โ idle connections time out.
Quick Reference โ All Commands
# Core Persistence settings put global wifi_sleep_policy 2 dumpsys deviceidle whitelist +com.tailscale.ipn dumpsys deviceidle whitelist +com.anydesk.anydeskandroid dumpsys deviceidle whitelist +com.spocky.projengmenu dumpsys deviceidle whitelist +ar.tvplayer.tv settings put global background_dex_opt_job_enabled 0 settings put global activity_manager_constants max_cached_processes=32 settings put global stay_on_while_plugged_in 3 # Display & Interface settings put secure screensaver_enabled 0 settings put system screen_off_timeout 1800000 settings put global adb_notify 0 settings put global device_provisioned 1 settings put secure user_setup_complete 1 settings put global window_animation_scale 0.5 settings put global transition_animation_scale 0.5 settings put global animator_duration_scale 0.5 # Network & Performance settings put global usage_stats_enabled 0 settings put global dns_resolver_sample_validity_seconds 3600 # HDMI-CEC settings put global hdmi_control_enabled 1 settings put global hdmi_control_auto_device_off_enabled 1 settings put global hdmi_control_auto_wakeup_enabled 1 # AnyDesk Remote Permission appops set com.anydesk.anydeskandroid PROJECT_MEDIA allow # Tailscale VPN Persistence settings put secure always_on_vpn_app com.tailscale.ipn settings put secure always_on_vpn_lockdown 0