Skip to main content

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

Metadata

Release files for adbtvremote 0.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for adbtvremote 0.1.3
File Size Uploaded
adbtvremote-0.1.3.tar.gz 7.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for adbtvremote 0.1.3
File Interpreter ABI Platform
adbtvremote-0.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 14.8 kB

Release files / adbtvremote-0.1.3.tar.gz

Download URL adbtvremote-0.1.3.tar.gz
Size 7.3 kB
Tags Source
SHA-256 checksum
How to use checksums
48d5381b6426d95d240bb7cf5df46faade05664eb70506d087ea74bc54482e3a
BLAKE2b-256 checksum
How to use checksums
27639e51d85fb74a8d65a3761a7885c7bdcc774407c40b62f1ea461a9ced3c4d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.10

Release files / adbtvremote-0.1.3-py3-none-any.whl

Download URL adbtvremote-0.1.3-py3-none-any.whl
Size 7.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f736a298149dc725e01eed47ec32889f4433401b5db8f8b8c701cc4f61f0a1ec
BLAKE2b-256 checksum
How to use checksums
96fdc2a8c2add3802b0422162411d91fbc71286bc7874f838a66a6bba6de5258
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.10

Release history Release notifications | RSS feed

This release

0.1.3 This release

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page