Android TV without ads: launcher, SmartTube and ADB instead of the Google TV banner
Summary
The developer Cretezy shows how to run Android TV devices such as a Chromecast with Google TV or Hisense TVs without the ad banner and without ads. At the heart of the guide is a set of ADB commands that sets a different launcher as the home screen, disables the Google launcher, replaces YouTube with SmartTube and remaps the remote. This post summarises the steps, names the pitfalls such as a lost Wi-Fi connection or missing HDMI input switching, and explains where DNS filters like Pi-hole fit in.
The problem
Google TV, the default interface on most Android TV devices, shows a large banner with recommendations at the top of the home screen, often from apps you do not even use. Even the “Apps only” mode does not hide it, and there is no setting for it. Cretezy implemented the following setup on two Chromecasts with Google TV and a Hisense TV.
The building blocks
Projectivy Launcher replaces the home screen and shows only your own apps; Cretezy names FLauncher and ATV Launcher Pro as alternatives. SmartTube replaces the YouTube app, without ads and with SponsorBlock built in, but it is not on the Play Store. Wholphin serves as the Jellyfin client (alternatively Moonfin), and Button Mapper maps the remote's YouTube button to SmartTube.
Setting it up with ADB
Everything runs through the Android Debug Bridge. Developer options are unlocked (tap the build entry seven times), wireless debugging is enabled and the device is paired with a pairing code. Devices without wireless debugging, the Hisense TV in the example, are reached via USB debugging and adb connect on port 5555.
The order matters: first Projectivy becomes the home screen with cmd package set-home-activity, then the Google launcher (com.google.android.apps.tv.launcherx) and the package that restores it (com.google.android.tungsten.setupwraith) are disabled with pm disable-user. According to Cretezy, disabling setupwraith can make some devices forget the saved Wi-Fi network, and on TVs the stock launcher sometimes handles HDMI input switching.
YouTube is uninstalled or, if it is part of the firmware, removed for the user only with pm uninstall --user 0. Button Mapper and Projectivy need accessibility services; the enabled_accessibility_services setting replaces the whole list, so read the current value first. To keep Android from disabling the service, Button Mapper is granted the WRITE_SECURE_SETTINGS permission and an exemption from battery optimisation.
Everything can be undone with pm enable or cmd package install-existing. Finally, Cretezy advises turning debugging off again, because an open ADB port gives other devices on the network access.
DNS filters as a complement
After the discussion on Hacker News, Cretezy added Pi-hole on 20 October: a DNS filter blocks ad and tracking domains for every device in the house, including the TV's telemetry. If you want to keep the stock launcher, blocking androidtvwatsonfe-pa.googleapis.com reportedly hides the banner. Without your own filter, a private DNS such as AdGuard DNS can be set via ADB.
Ideas
- A custom launcher removes ads that no setting can turn off.
- Set the new home screen first, then disable the old one.
- pm disable-user turns off system apps without changing the firmware.
- Read a replacing setting first, or existing values get lost.
- A DNS filter works for every device on the network, not just the TV.
- Close debugging access again after the setup.
Insights
- Android TV is more open than its interface suggests: with ADB, the home screen, apps and services can be swapped without root, and every step stays reversible. That makes the guide useful for devices you cannot or do not want to flash.
- Device-side and network-side ad blocking complement each other. Swapping the launcher removes built-in ads that the DNS filter does not catch; the DNS filter covers telemetry and ads in apps that stay on the device.
Facts
- Google TV's “Apps only” mode does not hide the recommendation banner.
- Wireless debugging only works over Wi-Fi; without it, USB debugging with adb connect on port 5555 helps.
- SmartTube is not on the Play Store and is installed as an APK from GitHub.
- The enabled_accessibility_services setting replaces the entire list of active accessibility services.
References
- Cretezy: An ad-free Android TV
- Android Developers: Android Debug Bridge (adb)
- SmartTube on GitHub
- Projectivy Launcher (Google Play)
- Wholphin, Jellyfin client (Google Play)
- cleanyourtv: package lists for debloating many TVs
- Pi-hole
- Hacker News: discussion of the post
Critique
- The guide grants Button Mapper the WRITE_SECURE_SETTINGS permission via ADB and installs SmartTube straight from the latest GitHub release without checking a signature or checksum. Both are common, but the guide does not mention how much trust this places in a single app and its developer.
Remarks
- A private DNS such as AdGuard DNS sends all of the TV's name lookups to a third-party provider. Your own Pi-hole or the router's DNS filter keeps this data on your own network.
- From 2027, Google wants to require developer registration for all Android apps, including outside the Play Store (the “Keep Android Open” initiative). The initiative does not say whether Android TV and installation via ADB are covered; for apps like SmartTube it is worth following.
Recommendations
- Save the initial state before disabling anything: note adb shell pm list packages -d (packages already disabled) and adb shell settings get secure enabled_accessibility_services.
- After disabling setupwraith and swapping the launcher, check the Wi-Fi connection and HDMI input switching, and keep the remote at hand.
- On your home network, use your own DNS filter and block androidtvwatsonfe-pa.googleapis.com there instead of sending all lookups to an external resolver.
- After the setup, turn wireless and USB debugging off again in the developer options.
Links to the original source and the Web Archive open in a new tab.