# TV Remote > Free, open-source remote control for Android TV and Google TV (and LG, Samsung, Roku, Hisense / Toshiba VIDAA TVs) from an Android phone, an iPhone (any browser) or a computer (Mac, Windows, Linux). It talks straight to the TV over the home network (or Tailscale when away), with no server in between, no account and no ads. Site: https://tvremote.pages.dev · Source: https://github.com/HoangTran0410/tv-remote Works on TVs that run Android TV / Google TV (Sony, TCL, Xiaomi, Philips, Google TV boxes, operator boxes such as FPT Play Box...). Tested for real on a Sony BRAVIA (Android 9); TCL, Xiaomi, Hisense, Philips, OnePlus, BenQ, CHiQ, RCA, SANYO, Toshiba, Insignia, Thomson TVs, Chromecast with Google TV, NVIDIA Shield, Mi Box, Fire TV and XGIMI / Epson projectors are reported working by owners (via cleanyourtv), not re-tested by us (Fire OS: remote and ADB work, Optimize TV cannot change Home). Android 11+ TVs with only Wireless debugging (no port 5555) are found and paired with the 6-digit code. LG (webOS), Samsung (Tizen, 2016 on), Roku (TVs and players) and Hisense / Toshiba (VIDAA) TVs work in the phone and computer apps for keys, typing, opening apps, Wake-on-LAN and scenes (LG, Roku, VIDAA also: inputs; LG and VIDAA: volume to a number; LG: screen off; VIDAA pairs with a 4-digit code on the TV); screen view, apps, files, health and timers need Android TV. These are a beta, not yet tried on a real TV; every app has "Send the log" in About (commands sent, the TV's answers and the errors shown, no pairing keys) for reporting what a real TV did. ## Three apps and a web page - **Phone app** ("TV Remote", Android): remote, see and touch the TV's screen, widget, Quick Settings tiles, the phone's volume keys control the TV. Download: https://github.com/HoangTran0410/tv-remote/releases/latest/download/tv-remote.apk (Downloader code 2973135) - **TV app** ("TV Setup", installed on the TV): sleep timer, bedtime, daily app limits, drawing over the TV's screen, usage stats, one-button Tailscale. It also serves the **TV web page** on port 8765, so any browser (iPhone included) controls the TV after typing a 6-digit code shown on the TV. Download: https://github.com/HoangTran0410/tv-remote/releases/latest/download/tv-setup.apk (Downloader code 2397346) - **Computer app** ("TV Remote" for Mac, Windows, Linux, about 20 MB, nothing else to install): https://github.com/HoangTran0410/tv-remote/releases/latest ## What it does - Remote keys, D-pad, volume, power; typing on the TV with the phone's keyboard (accented text included); voice commands. - See the TV's screen live and touch / click on it (scrcpy); screenshots; listen to the TV's sound on the phone or computer. - Now playing: title, seek, pause, next; the TV's clipboard (copy from / send to the TV). - Apps (open, install APKs, turn off, uninstall), files, TV health (RAM, storage, temperature) and its sleep: when the TV went off and on and why, day by day. - Optimize TV: turn off unused system apps and animations, a lighter home screen; nothing deleted, one-tap Undo. Its per-brand lists (what to suggest, what to never touch) are synced every few days from cleanyourtv (github.com/Gathin23/cleanyourtv: per-TV debloat lists of 400+ TVs from their owners, plus its forks, PRs and issues), UAD-NG and TV Slim, plus TV Remote users' reports; only apps off on many TVs and kept on none are suggested. Signed list read from the site at each use; sources and choices: dev/sign/bloat-sources.md. Safety rules: only `pm disable-user`, never uninstalls; a protected list plus per-brand keep lists that cannot be overridden, and a check on the TV before each change (apps owning HDMI / tuner inputs, a saved Wi-Fi network, the Settings screen, or persistent ones are refused); what it turned off is recorded on the TV and offered as an adb-only restore script; the new home screen must open and answer Home before the old launcher goes off, else it rolls back; Undo turns back on only what it turned off; after a firmware update it re-applies; remote keys the old launcher handled are taken over by TV Setup. - Themes page https://tvremote.pages.dev/themes : every ready-made and community TV Home theme with search, tag filters, a large preview (photo, video or slideshow) and a download of the theme file (.tvtheme.json); # opens one. - DNS filter (Setup tab): ad / malware blocking for every app through Private DNS; it checks names resolve within 30 s and puts the old setting back if not, and TV Setup turns it off by itself if it breaks later (DnsWatch). - Clean caches (Apps tab): every app's cache, app data and sign-ins kept. - Paired devices: each browser pairs once with a 6-digit code; the Setup tab lists them, forget one or all. "Allow USB debugging?" is answered only for the key whose fingerprint matches ours. The TV's own list of allowed ADB keys is not managed. - Launcher gallery, first its own TV Home (dev.tvremote.home, tv-home.apk in each release, Downloader code 4356026): a home screen without ads, set up from the phone or computer (favourite apps, hidden apps, background photo, clock, widgets: system stats, most used apps / app limits and the sleep timer read from TV Setup, a month calendar with solar and lunar days, an offline lunar calendar, weather from Open-Meteo for a typed city or a place found by itself, a note pinned from the phone, a Market widget (gold, Vietcombank rates, optional Bitcoin), a News widget (RSS headlines, up to 5 own links, big-text reader), a Windy weather map on OK, a ⚙ settings box per widget; Quick keys on the number and colour keys; Add to home screen lists apps, widgets and pinned shortcuts, and an uninstalled app takes its app tiles off; 18 ready-made themes with live miniature previews and saved themes of your own; hold OK on an app for its grouped menu: move, rename, hide, open at power-on, assign a number or colour key, lock or a daily limit with the parent PIN, force stop, clear cache, uninstall); switching asks Keep on the TV and goes back on its own if the launcher fails. - TV Channels (dev.tvremote.channels, tv-channels.apk in each release, Downloader code 8135635): free TV channels from iptv-org's public playlists plus VieON's free channels (sources listed in a signed docs/channels/providers.json), with a programme guide for Vietnamese channels (TV360, VieON), by country and category, favourites and the person's own groups, pinned to the home screen; installed and opened by name from the phone or computer (link tvchannels://find/, voice "open channel X"). - TV Apps (dev.tvremote.apps, tv-apps.apk in each release, Downloader code 1082201): a store of free, open-source TV apps (SmartTube, Kodi, VLC, Jellyfin, Moonlight, LocalSend…) from a signed list (docs/apps/apps.json); each APK comes from its maker's latest release and is installed only when its signing certificate matches the one pinned in the list; installed with no question through TV Setup's ADB link, else through Android's installer; also on the phone / computer page (Apps tab → TV Apps). Add-ons (Stremio, Kodi) are never installed for the person. - Parental controls on the TV itself: daily limits per app, bedtime, sleep timer; enforced by the TV with every phone off. - Draw on the picture: the strokes show on the TV over any app (to guide someone far away). - Video on the TV: a video file or the phone's / computer's camera plays in a box over any app; the box is moved and resized from the page while it plays (needs TV Setup 0.42.0). - Several TVs at once: install / restart on all; scenes (a list of steps run with one tap). - Quick talk (phone app): hold the voice button and speak; the actions the sentence will do show above the finger, let go to send. The TV remote's mic button can open the same voice on the TV (off by default). TV Setup Voice (tv-voice.apk Vietnamese 25 MB, tv-voice-en.apk English 36 MB, each its own app, side by side): speech understood on the TV itself, no Google or Internet; TV Setup installs and removes it. - Anonymous stats (on by default, one switch in Settings): once a day brand, model, chip, Android version, app version, whether ADB / picture / Optimize TV worked and a random ID; never IP, serial, TV name, apps or account. - Telegram: the TV answers your own bot (made with @BotFather, token pasted in Settings of TV Setup's page, chats paired with a one-time 6-digit code): /status /off /on /vol /key /open /scene /timer /say /shot /remote /apps /usage /now /channel /type /scenes /bedtime /limits /schedule /alerts (alerts: opt-in per chat, 1 per kind per minute; rules changes need Full scope and have Undo). /start pairs like /pair. Managed from the phone/computer apps too. Long polling, no open port. Needs TV Setup 0.21.1. - Home Assistant and iPhone Shortcuts (Siri): a home-network link with its own token (off until switched on in Settings) presses keys, opens apps, runs scenes, sets volume / power: `/api/hook?k=&key=HOME`, `/api/hook/state`. In TV Setup's web page and the computer app (which opens one extra port only while on). - Privacy: no account, no ads. Once a day each app sends one anonymous note (TV brand, model, chip, Android version, the app's version, whether ADB / picture / Optimize TV worked, a random install ID): never an IP address, serial, TV name, app list or account. On by default; off in Settings → Send anonymous stats (Phone app: Settings → Privacy), then nothing is sent. - Infrared remote (Phone app, on phones with an IR blaster): works with no network and no TV picked; Samsung, LG, Sony, TCL, Philips and more from Flipper-IRDB (CC0), and "Find code" for a box that is in no list. - Game controller as a remote: plug or pair a pad into the device running the app, press a button once; D-pad / stick = arrows, A OK, B Back, X play/pause, Y mute, LB/RB volume, LT/RT channel, Start Home, Select Menu; while the picture is shown the buttons go to the TV as real gamepad buttons. - Self-check: when connecting fails, the app tests the network and the TV in under 4 seconds and gives one conclusion with a fix (TV off, new address, ADB off, waiting for Allow, other network, no Wi-Fi, Tailscale off, VPN in the way, wrong TV clock, TV not listening). - Away from home through Tailscale, installed and signed in from the app with one button; TV Setup turns Tailscale back on when the TV stops it to free memory, and can keep the TV reachable while it is off. Wake-on-LAN for a TV that is fully off. ## Setup in short 1. On the TV: Settings → Device Preferences (Google TV, Chromecast: System) → About → Build ("Android TV OS build"), press OK 7 times; then Developer options in the same list → ADB debugging on. 2. Install the app for your device (links above). The first time, the TV asks "Allow USB debugging?": choose Always allow. 3. Easiest with only the TV remote: install Downloader (AFTVnews) from the Play Store on the TV, type code 2397346, install TV Setup, scan its QR code with the phone and type the 6-digit code. Keys work without ADB on the phone and computer apps (Google's Android TV Remote protocol, pairing code); the screen, apps, files and timers need ADB. ## FAQ - Cost: free, no ads, no paid tier; the source is public. - iPhone: yes, through the TV web page (install TV Setup on the TV, open the page in Safari, Add to Home Screen). - Netflix and other protected video show black on the mirrored screen (Android's copy protection); keys, volume and sound still work. - A TV fully off can be woken with Wake-on-LAN from inside the home network; from standby one press wakes it, over Tailscale too. - Android may call the APK "harmful" (Play Protect warns about any non-Play app that can install APKs); the full source is on GitHub. - Security: ADB has no password, so every device must be approved on the TV's screen; never expose port 8765 to the Internet, use Tailscale away from home. ## Docs - [Live demo](https://tvremote.pages.dev/demo/): a picker of four apps in the browser, nothing installed or sent: the real remote page against a made-up TV (#remote), TV Home (#home), TV Channels with real streams (#channels) and TV Games with a playable quiz and phone pads (#games) - [User guide](https://tvremote.pages.dev/guide): step by step for every feature (install, remote, typing, voice, picture, game controller, apps, files, timers, scenes, Home Assistant, Tailscale, turning off tracking on Samsung / LG / Roku / VIDAA TVs, troubleshooting), Vietnamese and English, with search. For agents, the same guide as Markdown: [index](https://tvremote.pages.dev/guide/en/index.md) (one line per topic, then one file per topic), [everything in one file](https://tvremote.pages.dev/guide/en/all.md); Vietnamese under /guide/vi/ - [How the apps fit together](https://tvremote.pages.dev/apps): a map of what each app (phone, web page, computer, TV Setup, TV Home, TV Channels, TV Games, TV Apps) needs from the others, by what route, what happens when one is missing, and how each is installed; Vietnamese and English. - [Tested TVs](https://tvremote.pages.dev/tvs): the TVs, boxes and projectors the apps have run on, counted anonymously (brand, model, Android version; no IP, no account), with search (a growing list, not a compatibility list: any Android / Google TV works); also a section of the home page - [README (English)](https://github.com/HoangTran0410/tv-remote/blob/main/README.md): setup for each app, Tailscale, troubleshooting, security, technical details - [README (Tiếng Việt)](https://github.com/HoangTran0410/tv-remote/blob/main/README.vi.md) - [Changelog](https://github.com/HoangTran0410/tv-remote/blob/main/CHANGELOG.md) - [Releases](https://github.com/HoangTran0410/tv-remote/releases)