No description
Find a file
2026-09-26 14:46:20 -06:00
docs feat: add additional util scripts 2026-07-19 21:18:54 -06:00
hooks chore: fix lefthook commit-msg hook 2026-08-29 19:13:11 -06:00
packages chore: add more missing binaries 2026-07-19 21:54:17 -06:00
tools feat: add shfmt, shellcheck, prettier via mise + pre-commit hooks 2026-08-30 14:00:29 -06:00
workflows feat: add shfmt, shellcheck, prettier via mise + pre-commit hooks 2026-08-30 14:00:29 -06:00
.gitignore chore: ignore graft's local graph cache 2026-09-26 14:46:20 -06:00
config.sh chore: remove youtube apps 2026-08-30 10:14:42 -06:00
install.sh feat: add shfmt, shellcheck, prettier via mise + pre-commit hooks 2026-08-30 14:00:29 -06:00
lefthook.yml feat: add shfmt, shellcheck, prettier via mise + pre-commit hooks 2026-08-30 14:00:29 -06:00
mise.toml feat: add shfmt, shellcheck, prettier via mise + pre-commit hooks 2026-08-30 14:00:29 -06:00
README.md feat: add shfmt, shellcheck, prettier via mise + pre-commit hooks 2026-08-30 14:00:29 -06:00

onntv-setup

Scripts for managing onn Google TV boxes — backup, provision, and day-to-day app installs.

Quick Start

New box from scratch:

./workflows/provision.sh              # uses IP from config.sh
./workflows/provision.sh 192.168.1.50 # override IP

Check box status:

./tools/audit-box.sh

Install a single APK:

./tools/install-apk.sh '/path/to/app.apk'

Directory Structure

onntv-setup/
├── config.sh              # shared device IP — edit once, all scripts use it
├── install.sh             # install all apps from packages/
├── packages/              # backed-up APKs (one folder per app)
│
├── workflows/             # multi-step operations
│   ├── provision.sh       # one-shot: connect → install → clean → reboot
│   └── backup.sh          # pull APKs from a box into packages/
│
└── tools/                 # single-purpose utilities
    ├── audit-box.sh       # read-only diagnostic (apps, security, privacy, performance)
    ├── clean-box.sh       # full cleanup: launcher, bloatware, privacy hardening
    ├── connect.sh         # connect to device
    ├── list-packages.sh   # list installed packages
    └── install-apk.sh     # install a single APK

Scripts

Script Purpose When to use
config.sh Device IP Edit once, all scripts source it
install.sh Install all apps from packages/ After backup, before provision
workflows/provision.sh Full setup for new box First-time setup
workflows/backup.sh Pull APKs from working box Capture app list before moving
tools/audit-box.sh Diagnostic checkup Check box health, privacy, security
tools/clean-box.sh Full cleanup Launcher, bloatware, privacy
tools/connect.sh Connect to device Debug connection issues
tools/list-packages.sh List installed packages See what's on a box
tools/install-apk.sh Install single APK Sideload an app

Configuration

Edit config.sh to set your device IP:

DEVICE_IP="192.168.1.186"
DEVICE="$DEVICE_IP:5555"

All scripts source this file so you only update it once.

Backup & Restore Flow

  1. Backup from working box: ./workflows/backup.sh
  2. Install on new box: ./install.sh (or ./workflows/provision.sh for full setup)
  3. Install single APK: ./tools/install-apk.sh /path/to/app.apk

Troubleshooting

Connection fails:

  • Check TV screen for authorization popup
  • Verify IP in config.sh
  • Try adb connect <ip>:5555 manually

Launcher reverts after reboot:

  • Re-run ./tools/clean-box.sh
  • The stock launcher needs to be disabled AND Projectivity set as home role