Provisioning Guide

Google Streamer 4K
12-Box Setup

A repeatable, step-by-step provisioning workflow for the setup of Google Android TV set top boxes with Projectivy, Tailscale, AnyDesk, and a full streaming app suite โ€” each box is configured identically and optimized for remote access family support.

Scroll to begin

๐Ÿ—‚๏ธ
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.

NAS / Streamer-Backups/ โ”œโ”€โ”€ projectivy-backup.json โ”œโ”€โ”€ projectivy-icon-pack.apk โ”œโ”€โ”€ tivimate-backup.tmb โ””โ”€โ”€ ButtonMapper.bm_backup
FileHow to CreateWhat It Contains
projectivy-backup.jsonProjectivy โ†’ Settings โ†’ Backup โ†’ Export to fileLayout, auto-start, theme, all settings
projectivy-icon-pack.apkSideload APK stored on NASCustom icon pack for Projectivy Launcher
tivimate-backup.tmbTiviMate โ†’ Settings โ†’ Backup โ†’ Backup to filePlaylists, EPG, favorites, playback settings
ButtonMapper.bm_backupButton Mapper โ†’ Settings โ†’ Backup โ†’ ExportAll button remapping configurations
๐Ÿ’ก
Tip

Have your Tailscale account credentials handy. Each box needs manual sign-in, so stay signed in on your phone to approve device authorizations quickly.

Repeat for Each Box

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
โœ“
Tip

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

#AppSource
1Apple TVPlay Store
2Button MapperPlay Store
3CX File ExplorerPlay Store
4DirecTVPlay Store
5Disney+Play Store
6Fox OnePlay Store
7HBO MaxPlay Store
8NetflixPlay Store
9Paramount+Play Store
10Peacock TVPlay Store
11PlexPlay Store
12PlutoPlay Store
13Prime VideoPlay Store
14ProjectivyPlay Store
15Projectivy Icon PackSideloaded from NAS as APK
16TiviMatePlay Store
17VLCPlay Store
18YouTubePlay Store

Install Last (in this order)

#AppSource
19AnyDeskPlay Store
20AdControl AD1Play Store
21TailscalePlay Store
i
Install Order Note

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.

๐Ÿ’ก
Tip

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

1
Go to Settings โ†’ System โ†’ About
2
Tap "Android TV OS build" 7 times rapidly
3
You should see: "You are now a developer!"
4
Go to Settings โ†’ System โ†’ Developer Options
5
Turn on USB Debugging
6
Turn on Wireless Debugging
7
Note the IP address, pairing port, and pairing code

โš™๏ธ
4 โ€” Configure All Apps

With all apps installed, configure each app in the following order using the TV remote.

Step 1: Configure Tailscale

1
Open Tailscale, sign in, and approve the device authorization
2
Disable the use of Tailscale DNS
3
Enable split tunneling and check all apps that should access the internet directly
4
Leave the following apps unchecked (these route through the Tailscale network): Apple TV, DirecTV, Disney+, Fox One, HBO Max, Netflix, Paramount+, Peacock TV, and Prime Video

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.

1
Open CX File Explorer
2
Add a new remote connection with the following settings:
SettingValue
ProtocolFTP (not SFTP)
IP Address107.132.118.229
Port21 (default)
NameNAS

Step 3: Configure TiviMate

1
Open TiviMate and activate it to your account
2
Give the device a unique name within TiviMate
3
Import the configuration file containing playlists from your NAS via CX File Explorer

Step 4: Configure Projectivy Launcher

1
Access the Projectivy configuration file from the NAS via CX File Explorer
2
Install the Projectivy Icon Pack before restoring the configuration backup
3
Restore the Projectivy configuration backup
4
Set Projectivy as the default launcher
5
Confirm that Projectivy is configured to launch Tailscale on startup

Step 5: Configure Button Mapper

1
Using CX File Explorer, copy the backup file ButtonMapper.bm_backup from the NAS to the device
2
Place the file at: Main storage/Android/data/flar2.homebutton/files/
3
Open Button Mapper and restore from the backup file
i
Note

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

1
Open Bugjaeger on your Samsung Galaxy S25 Ultra
2
Tap the pair/connect button and enter the pairing port and 6-digit code
3
After pairing, connect using the Streamer's IP and connection port
4
Open Interactive Shell โ€” you should see a shell prompt
!
Warning

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.

Core ADB Optimization Commands โ€” Paste One at a Time
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
i
Note

AnyDesk and AdControl AD1 setup should be completed last, after all ADB commands have been applied.

Configure AnyDesk & AdControl AD1

1
Open AnyDesk on the Streamer
2
AnyDesk will prompt you to install the AdControl AD1 plugin (or find it in AnyDesk Settings โ†’ Plugin)
3
Follow the on-screen prompts to install AdControl AD1
4
When prompted, grant AdControl AD1 accessibility permissions
5
Note the AnyDesk ID and record it in the Device Tracking Table
i
Note

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)

!
Important

Test EVERY box from mobile data before moving on. This confirms your primary remote support tool works from outside your father's network.

1
On your phone, turn OFF WiFi (use mobile data only)
2
Open AnyDesk and enter the Streamer's AnyDesk ID
3
Have someone accept the AnyDesk connection on the TV (or accept yourself if in the same room)
4
Confirm you can see the screen clearly
5
Try tapping to test remote interaction
6
Turn WiFi back on
  • โœ“
    AnyDesk screen viewing confirmed via mobile data

Your Remote Support Capabilities

From Anywhere (Internet)What You Can Do
AnyDeskView screen, guide father by phone, potentially interact via touch
TailscaleSecure network for IPTV/streaming exit node routing
Phone call + AnyDeskSee exactly what your father sees, tell him where to navigate
On Father's WiFi OnlyWhat You Can Do
Bugjaeger (Wireless Debug)Full ADB shell: install apps, change settings, run commands
AnyDesk (also works here)Screen viewing and interaction
Track Your Fleet

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 NameAnyDesk IDLocation / 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
Reference

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
SettingExpected ValueIf Wrong, Re-run
wifi_sleep_policy2settings put global wifi_sleep_policy 2
stay_on_while_plugged_in3settings put global stay_on_while_plugged_in 3
screen_off_timeout1800000settings put system screen_off_timeout 1800000
screensaver_enabled0settings put secure screensaver_enabled 0
hdmi_control_enabled1settings put global hdmi_control_enabled 1
always_on_vpn_appcom.tailscale.ipnsettings 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

Complete Command Set
# 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