Skip to main content

How to Remove the Ads from Your Google TV Home Screen

The sponsored rows on Google TV come from several services, not one setting. Here is how I switched them off over ADB on a Xiaomi Mi TV and a Sony Bravia — reversibly, no root — plus what it cannot fix.

Part 1 of a three-part series on taking back two Google TV sets — a Xiaomi Mi TV and a Sony Bravia — over ADB, with an AI doing the driving.

The short answer

The sponsored rows on a Google TV home screen are fed by a handful of background services and, on some sets, the manufacturer’s own content launcher (Xiaomi’s PatchWall). You can switch most of them off over ADB with pm disable-user --user 0, point the TV’s private DNS at AdGuard to starve the ad domains, and every change is reversible with pm enable. No root. The one thing this does not remove is YouTube’s in-app adverts.

2 TVsreclaimed over ADB
0root required
~8 minper set

What you’ll learn

  • Where the home-screen ads actually come from (it isn’t one setting)
  • The exact packages I disabled on each TV, and why
  • How to set AdGuard DNS on the TV itself
  • How to undo all of it if something misbehaves
  • What this approach can’t fix (and what Part 2 does about it)

Where this comes from

This is based on a real clean-up I ran on two of my own Google TV sets in October 2026. The commands and package names below were captured from the live ADB session. I’ve generalised my home IP addresses to the documentation range 192.0.2.x; nothing else has been changed.

The symptom

Both of my living-room sets had slowly turned into billboards. The Sony Bravia’s home screen led with a full-width recommendation banner that was really an advert, followed by rows of films I’d never watch from services I don’t subscribe to. The Xiaomi Mi TV was worse: its PatchWall layer added its own carousel of sponsored apps and trailers that auto-played sound.

I didn’t want a different dashboard launcher yet (that’s Part 2). I wanted the ads off the stock experience, with the ability to put everything back if a change broke something.

Advertisement

The environment

TV 1 Xiaomi Mi TV (MiTV-AFMU1), Google TV + Xiaomi PatchWall
TV 2 Sony Bravia, Google TV (launcherx)
Access ADB over the network (port 5555), both TVs on my LAN
Root none — everything is --user 0, reversible
Who did the work I had Claude (an AI) drive the ADB session: enumerate packages, classify them, and generate the undo list

A quick, honest note on the “AI did it” part, because it’s the hook of this series and I don’t want to overstate it: I didn’t type these commands one by one. I connected ADB and had Claude list every installed package, sort the ad/telemetry/recommendation ones from the load-bearing ones, and hand me back both the disable commands and the matching pm enable undo for each. I read the list before running anything. The judgement of what is safe to disable is the valuable bit, and that’s exactly where an AI that can cross-reference package names against what they do earns its keep. (This article was also drafted with AI help; the work and the evidence are from the real clean-up.)

To connect ADB over the network, enable Developer options → USB/Network debugging on the TV, then from a computer on the same network:

adb connect 192.0.2.11:5555   # the TV's LAN IP
adb devices                    # confirm it shows "device", not "unauthorised"

Accept the on-screen authorisation prompt on the TV the first time.

What I first suspected (and why it was only half right)

My first assumption was that the ads were a single “personalised ads” toggle buried in Settings. They aren’t. Google TV does have a few relevant switches (under Settings → Privacy → Ads, and a per-launcher “Customise channels”), and they help — but they don’t remove the sponsored row itself, and on the Xiaomi they do nothing about PatchWall at all.

The verified cause is that the home screen is assembled from several independent sources:

  1. The Google TV launcher (com.google.android.apps.tv.launcherx) and its recommendation/sponsored rows (com.google.android.apps.tv.launcherx.home).
  2. Google’s ad and on-device personalisation services, which feed targeting data to those rows.
  3. On the Xiaomi, PatchWall — a whole second content launcher (com.mitv.tvhome.*) with its own ad channels.

So there’s no single switch because there’s no single source. You have to deal with each.

The fix

1. Disable Google’s ad and personalisation services

These are the services that profile you and feed the targeted rows. Disabling them (rather than uninstalling) keeps them on disk so you can turn them back on:

adb -s 192.0.2.11:5555 shell pm disable-user --user 0 com.android.adservices.api
adb -s 192.0.2.11:5555 shell pm disable-user --user 0 com.android.ondevicepersonalization.services
adb -s 192.0.2.11:5555 shell pm disable-user --user 0 com.android.federatedcompute.services
adb -s 192.0.2.11:5555 shell pm disable-user --user 0 com.google.android.feedback
adb -s 192.0.2.11:5555 shell pm disable-user --user 0 com.android.tv.feedbackconsent

com.android.adservices.api, ondevicepersonalization and federatedcompute are the Android ad/personalisation stack; feedback and feedbackconsent are usage reporting. None are needed to watch television.

2. On the Xiaomi: switch off PatchWall’s ad channels

PatchWall is the biggest offender on a Mi TV. Its content rows live in their own packages:

adb -s 192.0.2.12:5555 shell pm disable-user --user 0 com.mitv.tvhome.michannel
adb -s 192.0.2.12:5555 shell pm disable-user --user 0 com.mitv.tvhome.mitvplus
adb -s 192.0.2.12:5555 shell pm disable-user --user 0 com.mitv.tvhome.oemtab
adb -s 192.0.2.12:5555 shell pm disable-user --user 0 com.xiaomi.statistic

com.xiaomi.statistic is Xiaomi’s analytics collector. I left the core com.mitv.tvhome.atv in place at this stage — on the Mi TV that is the home surface itself, and disabling it without a replacement launcher ready will drop you to a black screen. (Replacing the launcher cleanly is Part 2.)

Caution: disable packages one at a time and check the TV still behaves after each. If a set ever boots to a blank screen, re-enable the last package you touched (next section). Don’t batch the whole list blind on a TV you can’t easily recover.

3. Point the TV’s private DNS at AdGuard

This is the network-level backstop: it blocks ad and tracker domains for everything on the TV, including rows you didn’t disable.

adb -s 192.0.2.11:5555 shell settings put global private_dns_mode hostname
adb -s 192.0.2.11:5555 shell settings put global private_dns_specifier dns.adguard-dns.com

You can also set this in the UI (Settings → Network → Private DNS → dns.adguard-dns.com), but doing it over ADB means you can script both TVs identically.

4. (Optional) Turn off the launcher’s own “recommended content”

In the Google TV UI, scroll to the bottom of the home screen, open Customise channels, and switch off everything you don’t use. This trims what’s left after steps 1–3. It’s a UI step, not ADB, but it’s worth doing on the Sony where you’re keeping launcherx.

How to undo everything

Every disabled package comes back with:

adb -s 192.0.2.11:5555 shell pm enable com.android.adservices.api
# …and so on for each package you disabled

And to clear the DNS override:

adb -s 192.0.2.11:5555 shell settings put global private_dns_mode off

If you’d uninstalled rather than disabled a package (I didn’t need to here, but it’s the same idea), the reverse is adb shell cmd package install-existing <package>. Because nothing was rooted and nothing was deleted, a factory reset also restores the lot.

Verification

After the changes, both home screens lost their sponsored banners and the Xiaomi’s PatchWall carousels. I confirmed the DNS was actually in force with:

adb -s 192.0.2.11:5555 shell settings get global private_dns_specifier
# -> dns.adguard-dns.com

and checked that normal apps (the streaming services I actually pay for) still launched and played. They did.

When this won’t help

Being straight about the limits, because this is where most “remove TV ads” guides quietly stop:

  • It does not remove YouTube’s in-app adverts. Those are served from the same Google domains the YouTube app needs to function, so neither disabling the ad services nor AdGuard DNS touches them. If anyone tells you a DNS change kills YouTube ads on a TV, test it — it didn’t on mine.
  • It thins the stock launcher; it doesn’t replace it. The Google TV launcher still wants to show recommendation rows. If you want a home screen with genuinely no sponsored space at all, you replace the launcher — which is Part 2 of this series.
  • Your packages may differ. Package names vary by manufacturer, model and firmware. Enumerate your own set (adb shell pm list packages) rather than pasting mine blind.

Reusable checklist

  1. Enable network ADB debugging on the TV; adb connect <tv-ip>:5555.
  2. pm list packages and read it before disabling anything.
  3. Disable the Google ad/personalisation/feedback services (adservices.api, ondevicepersonalization.services, federatedcompute.services, feedback, tv.feedbackconsent).
  4. On a Xiaomi, disable the PatchWall ad channels (michannel, mitvplus, oemtab) and xiaomi.statistic — but leave the home surface itself until you have a replacement launcher.
  5. Set private DNS to dns.adguard-dns.com.
  6. Trim Customise channels in the UI.
  7. Keep the matching pm enable command for every package you touch.

The takeaway: the ads aren’t one setting because they aren’t one source. Switch off the services that feed them, block the domains at DNS, and keep an undo for each step — and if you want the home screen genuinely ad-free rather than just quieter, Part 2 replaces the launcher without root.

Your turn

Advertisement

How do you deal with ads on a smart TV?

I went down the ADB route because I’d rather spend twenty minutes reclaiming a TV I already paid for than look at adverts on it every evening. Where do you land?

Follow the conversation on XEach answer opens a post on X that you can edit before sending.

Tell me on X @mustafa_homelab — and if your TV’s a different brand, I’d like to know which packages map to the ad rows on yours.

Share this article
Written by MustafaEngineer running a 24/7 homelab since 2022. Every guide here is built and tested on my own hardware. No paid placements.

Keep reading