No description
Find a file
2026-07-19 21:54:17 -06:00
docs feat: add additional util scripts 2026-07-19 21:18:54 -06:00
packages chore: add more missing binaries 2026-07-19 21:54:17 -06:00
.gitignore feat: add apk binaries 2026-07-19 21:42:00 -06:00
backup.sh feat: add more apps 2026-07-19 21:50:32 -06:00
clean-box.sh refactor: scripts to use config file 2026-07-19 21:31:25 -06:00
config.sh refactor: scripts to use config file 2026-07-19 21:31:25 -06:00
connect.sh refactor: scripts to use config file 2026-07-19 21:31:25 -06:00
install.sh refactor: scripts to use config file 2026-07-19 21:31:25 -06:00
list-packages.sh refactor: scripts to use config file 2026-07-19 21:31:25 -06:00
provision.sh refactor: scripts to use config file 2026-07-19 21:31:25 -06:00
README.md refactor: scripts to use config file 2026-07-19 21:31:25 -06:00

onn-fleet-provisioning

Scripts and docs for provisioning, backing up, and restoring app installs across a fleet of onn 4K Amlogic-based streaming boxes via ADB.

Repo structure

onn-fleet-provisioning/
├── config.sh            # single source of truth for the target box's IP
├── connect.sh           # connect to a box and verify it's ready
├── list-packages.sh     # list/search installed packages on a box
├── backup.sh            # pull installed APKs from a box into packages/
├── install.sh           # install APKs from packages/ onto a new box
├── clean-box.sh          # disable stock launcher, set Projectivity home, remove unwanted apps
├── provision.sh           # one-shot: connect check + install + clean, for a fresh box
├── packages/              # per-app APK backups (gitignored, run backup.sh to populate)
│   └── _removed/          # stale package folders, moved here rather than deleted
├── docs/
│   └── backup-restore.md
├── .gitignore
└── README.md

Device IP is set in one place: edit DEVICE_IP in config.sh, and every script picks it up automatically. To target a different box for a single run without editing the file, pass an IP as an argument:

./connect.sh 192.168.1.250
./install.sh 192.168.1.250
./provision.sh 192.168.1.250

(backup.sh and clean-box.sh also accept an optional IP argument the same way; list-packages.sh always uses config.sh.)

Prerequisites

  • ADB installed on your Mac (which adb to confirm)
  • Target onn box and your Mac on the same local network
  • Developer Options + Network debugging enabled on the box

Quick start

Connecting to a new box for the first time:

  1. On the TV: Settings → System → About → click "Build" 7 times
  2. Settings → System → Developer Options → enable Network debugging
  3. Find the IP: Settings → Network & Internet → [connection]
  4. ./connect.sh <box-ip> and accept the popup on the TV with the remote

Backing up a box (edit DEVICE= in backup.sh first):

./backup.sh

Provisioning a brand new box from an existing backup:

./provision.sh <box-ip>

Runs install + clean-box in one pass. Use install.sh and clean-box.sh separately if you want to run those steps independently or re-run just one.

Finding a package name you don't know:

./list-packages.sh magis

See docs/backup-restore.md for the full step-by-step walkthrough and troubleshooting notes.

Currently tracked apps

SmartTube, Stremio, Nuvio, Jellyfin, FCast Receiver, LocalSend, MX Player, Tubi, Windscribe, Button Mapper, Projectivity, RB (rblive), Shiru, Magis/Xuper (com.android.mgstv).

Not yet in the backup list:

  • VLC — official Play Store listing exists; install directly, or pull from a device that already has it (see docs).
  • LeanKey — not on Play Store; sideload from its GitHub releases.

Known limitations

  • App private data is not backed up. APKs only — logins, watch progress, and app settings (including Button Mapper / LeanKey key remaps) are not included. adb backup doesn't work for third-party apps on modern Android (12+). Current fallback: reconfigure manually per box, or check each app's own settings for an export feature. Rooting (Magisk) was considered for /data/data/ access but is on hold given brick risk on these boxes — revisit only after testing on a single spare box.
  • Architecture-locked. All APKs assume ARM (Amlogic SoC). Don't restore this backup onto a box with a different CPU architecture.

Notes

"Xuper" and "Magis TV" are the same app — package com.android.mgstv.

License

Internal/personal use — no license specified.