Control, manage, and de-bloat your Android TV from Linux — over ADB, with no Windows or macOS required. TV Tools ships as both a terminal CLI and a browser-based Web UI, so you can drive your TV from a shell or from any device on your network.
Built for Linux, by a Linux user. Auto-installs ADB and scrcpy across 40+ distributions.
Author: @eli6 · Repo: EliseyRotar/tv-tools-for-linux
| Dashboard | Tools & Utilities |
|---|---|
![]() |
![]() |
| Device Settings | Advanced (Backup / Batch) |
|---|---|
![]() |
![]() |
| Multi-Device Management | Login |
|---|---|
![]() |
![]() |
╔══════════════════════════════════════════════════════════════════════════════╗
║ 🚀 TV Tools for Linux v1.0 ║
║ Author: @eli6 | https://github.com/EliseyRotar ║
╠══════════════════════════════════════════════════════════════════════════════╣
║ 📱 Connected: 192.168.1.11:5555 (Sony BRAVIA 4K) ║
╠══════════════════════════════════════════════════════════════════════════════╣
Main Menu
1. 📁 File Transfer 8. ⚡ Optimizations
2. 📦 App Management 9. 🎤 Voice Commands
3. 💾 Backup & Restore 10. 🎮 Remote Control
4. ⚙️ Custom Settings 11. 🛡️ Ad Blocking
5. 🖥️ Display Settings 12. 📊 Device Info
6. 📸 Screenshot & Recording 13. 📈 System Monitor (btop)
7. ⬇️ Installation Helper 14. 🔌 Disconnect Device
15. 🚪 Exit
Enter your choice (1-15, 0 to exit):
- Connect over Wi-Fi (ADB IP) or USB
- Network scanner to auto-discover Android TV devices
- Wireless ADB setup, multi-device support
- Live connection status and reconnect to last device
- Install / uninstall / enable / disable apps
- Batch operations across many packages at once
- Search and list packages with friendly names
- Bloatware removal with risk-tiered categories (safe → aggressive)
Auto-download and install popular TV apps:
- SmartTube (ad-free YouTube)
- TiviMate, Kodi, TDTChannels (IPTV)
- Aurora Store, Aptoide TV (app stores)
- Projectivy, FLauncher, Google TV (launchers)
- Stremio, Shizuku
- Full APK backup with metadata tracking
- Batch backup/restore, archive management
- Push / pull files
- Built-in FTP server integration
- Clipboard text transfer to the device
- Screenshot capture with a gallery
- Screen recording
- Live screen mirror via scrcpy
- Screen timeout, animation scale, display density, font size
- USB debugging, ADB-over-network, stay-awake, GPS, unknown sources
- Toggle automatic OTA updates
- Private DNS (AdGuard, ControlD, Cloudflare)
- AdGuard app installation
- System monitor (CPU / memory / storage / battery / temps)
- Diagnostics: logcat, processes, storage management
- Permission manager, IME manager, accessibility helpers
- Icon generation for hidden apps, auto-update checker
A full-featured browser interface with feature parity to the CLI — manage your TV from your phone, laptop, or any device on your LAN.
git clone https://github.com/EliseyRotar/tv-tools-for-linux.git
cd tv-tools-for-linux# Interactive CLI
python android-tv-tools.py
# Web UI (default: http://127.0.0.1:5000)
python android-tv-tools.py --web --port 8080ADB is detected automatically and installed for you if missing. On first launch of the Web UI, a random admin password is generated and printed to your terminal.
chmod +x install.sh
./install.sh
android-tv-tools- Enable ADB on your Android TV
- Settings → Device Preferences → About → click Build 7 times
- Settings → Device Preferences → Developer Options → enable Network debugging
- Find your TV's IP
- Settings → Network & Internet → your network → Advanced → IP address
- Connect — enter the IP in the CLI / Web UI, or type
FINDin the CLI to scan your network.
The Web UI is built for safe LAN use:
- No default password. A random admin password is generated on first run and stored hashed at
~/.android-tv-tools/web_credentials.json. - Override credentials with environment variables for headless setups:
TVTOOLS_WEB_USER=myuser TVTOOLS_WEB_PASSWORD=mypass python android-tv-tools.py --web
- Session secret is persisted (sessions survive restarts), cookies are
HttpOnly+SameSite=Lax. - Loopback (
127.0.0.1) connections are trusted for local single-user convenience.
The bundled server is Flask's development server. For exposure beyond your trusted LAN, place it behind a reverse proxy with TLS.
ADB and scrcpy are auto-installed. The tool detects your package manager from /etc/os-release (ID / ID_LIKE) or by scanning for known package-manager binaries — so even unlisted distros generally work.
| Family | Distros | Package Manager |
|---|---|---|
| Arch | Arch, Manjaro, EndeavourOS, Garuda, CachyOS, Artix, Parabola | pacman |
| Debian/Ubuntu | Ubuntu, Debian, Mint, Pop!_OS, Kali, Parrot, Zorin, Raspberry Pi OS, Elementary, MX, Deepin, Devuan | apt |
| Fedora/RHEL | Fedora, RHEL, CentOS, AlmaLinux, Rocky, Oracle, Nobara, Ultramarine | dnf |
| openSUSE | Leap, Tumbleweed, SLES | zypper |
| Alpine | Alpine | apk |
| Void | Void | xbps-install |
| Gentoo | Gentoo, Funtoo, Calculate | emerge |
| NixOS | NixOS | nix-env |
| Solus | Solus | eopkg |
| Clear Linux | Clear Linux OS | swupd |
| Slackware | Slackware | slackpkg |
| Mageia | Mageia | urpmi |
- A Linux distribution (see table above)
- Python 3.8+
- ADB (auto-installed) — and scrcpy for live screen mirroring (auto-installed)
- For the Web UI:
flask,werkzeug,requests,coloramapip install flask werkzeug requests colorama
Config lives at ~/.android-tv-tools/:
| File | Purpose |
|---|---|
config.json |
App settings (timeout, scan range, directories) |
device_history.txt |
Connection history |
web_credentials.json |
Hashed Web UI credentials (mode 600) |
flask_secret.key |
Persisted session secret (mode 600) |
backups/ · downloads/ |
Backup archives and downloaded APKs |
| Problem | Fix |
|---|---|
| Cannot connect | Verify the IP, enable Network debugging, ensure port 5555 is reachable, try adb kill-server |
| Permission denied | sudo usermod -aG adbusers $USER, then re-login |
| APK install fails | Enable "Unknown sources", check free space and APK architecture |
| Web UI shows "Not Connected" | Connect a device from the Dashboard before using device-specific pages |
| Forgot Web UI password | Delete ~/.android-tv-tools/web_credentials.json — a new one is generated on next launch |
PRs welcome — clone, branch, and open a pull request. Issues and feature requests go in the GitHub Issues tab.
MIT — see LICENSE.
Made for Linux by @eli6





