Skip to main content

Minimal Android TV remote over ADB (WiFi), works on PC and Pydroid

Project description

Android TV Remote 📺

A lightweight Python remote control for Android TV using ADB over network.
Works on desktop and mobile (Pydroid3).

Python Platform ADB PyPI

screenshot

✨ Features

  • 📡 ADB over WiFi (no USB required)
  • 🎮 Full D-Pad control (navigation + OK)
  • 🔊 Volume & Power controls
  • 🏠 System buttons (Home, Back, Menu)
  • ⌨️ Send text input to the device
  • 🧵 Async ADB calls (non-blocking UI)
  • 📱 Responsive UI (auto scaling)
  • ⌨️ Keyboard shortcuts support
  • 📝 Logging system (remote.log)

📦 Requirements

  • Python 3.8+
  • ADB installed and accessible in PATH (PC only)

⚡ Quick Start

Option 1: Install with pipx (Recommended)

pipx install adbtvremote
adbtvremote

Why pipx? Keeps the app isolated in its own virtual environment, avoiding dependency conflicts with other Python projects.

Option 2: Install with pip

pip install adbtvremote
adbtvremote

Option 3: Run from source

git clone https://github.com/DanVerseDev/android-tv-remote.git
cd android-tv-remote
pip install -r requirements.txt
python main.py

Pydroid3 (Android)

Note: On Pydroid3, this app uses a pure Python ADB implementation (adb-shell), so no ADB binary is required.

  1. Install the package via pip in Pydroid3:
pip install adbtvremote
  1. Create a new Python script (e.g., run.py) with the following content:
from adbtvremote.app import main
import tkinter
main()
  1. Run the script in Pydroid3.

Note: Make sure customtkinter is installed and the ADB binary is available on your Android device (manual setup may be required).

⚙️ Setup (ADB over Network)

  1. Enable developer options on your Android TV

  2. Enable:

    • USB debugging
    • Wireless debugging (if available)
  3. Connect once via USB (optional but recommended):

adb tcpip 5555
  1. Get device IP and connect:
adb connect 192.168.x.x:5555

🚀 Usage

After installation, simply run:

adbtvremote

Or if running from source:

python main.py

Connect

  • Enter IP: 192.168.x.x:####
  • Click Connect

Controls

  • UI buttons for navigation and system actions
  • Keyboard:
    • Arrow keys → Navigation
    • Enter → OK
    • Backspace → Back
    • Escape → Home

Send Text

  • Click Send Text
  • Input text and send directly to device

🧠 How it works

  • Uses adb shell input keyevent for buttons
  • Uses adb shell input text for text input
  • Runs ADB commands in background threads
  • Logs all activity for debugging to remote.log

📁 Project Structure

.
├── main.py
├── remote.log (generated)
└── README.md

🔁 Smart Backend

The app automatically selects the best ADB method:

  • 💻 PC → Uses system adb binary (fast, full compatibility)
  • 📱 Pydroid3 → Uses pure Python adb-shell (no ADB required)

No configuration needed.

⚠️ Notes

  • Device and host must be on the same network
  • Some TVs may require pairing for wireless ADB
  • Text input replaces spaces with %s (ADB limitation)

🐞 Logging

All ADB calls and errors are logged in remote.log

📄 License

MIT License - Copyright (c) 2026 Daniel Martí


Built with ❤️ by Daniel Martí aka DanVerse

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

adbtvremote-0.1.3.tar.gz (7.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

adbtvremote-0.1.3-py3-none-any.whl (7.5 kB view details)

Uploaded Python 3

File details

Details for the file adbtvremote-0.1.3.tar.gz.

File metadata

  • Download URL: adbtvremote-0.1.3.tar.gz
  • Upload date:
  • Size: 7.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for adbtvremote-0.1.3.tar.gz
Algorithm Hash digest
SHA256 48d5381b6426d95d240bb7cf5df46faade05664eb70506d087ea74bc54482e3a
MD5 ea3c5ecd9b5c98fd679370666a3efe22
BLAKE2b-256 27639e51d85fb74a8d65a3761a7885c7bdcc774407c40b62f1ea461a9ced3c4d

See more details on using hashes here.

File details

Details for the file adbtvremote-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: adbtvremote-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 7.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for adbtvremote-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 f736a298149dc725e01eed47ec32889f4433401b5db8f8b8c701cc4f61f0a1ec
MD5 b7d07e445a2d7bc9ac59ed33d00a8d36
BLAKE2b-256 96fdc2a8c2add3802b0422162411d91fbc71286bc7874f838a66a6bba6de5258

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page