Accessibility Service wasn't made for this
I pressed Home on the remote. The screen filled with banners of every kind of ad. I turned it off. Turned it back on. Same thing.
I decided to cut what I could, without root, without custom firmware. Just what was possible with what I had at home. A Deco M4 in mesh and an Android TV 11”.
I started with DNS because setting up a Pi-hole on a Raspberry Pi felt like overkill for home use. Pointing the router’s DNS to the public AdGuard would probably already solve it. Every device on Wi-Fi now resolves through their list to block common trackers and ads.
In the Deco app, I went to More, Advanced, DHCP Server.
Primary: 94.140.14.14
Secondary: 94.140.15.15
Save.
Phone worked. PC didn’t. I thought it was AdGuard but it wasn’t.
Windows had 1.1.1.1 hardcoded directly on the Wi-Fi adapter. Had been there for a while, before AdGuard. Anna’s Archive needs a DNS that Windows default doesn’t serve here and overrides any DHCP. Settings, Network, Wi-Fi, connected network, DNS server assignment to Automatic. Then in PowerShell
nslookup doubleclick.net
Got back *** can't find doubleclick.net: Non-existent domain. NXDOMAIN, blocked.
Another trap. If you have uBlock Origin Lite on Chrome or Brave, it blocks ads before the query even leaves the PC. I spent about 10 minutes thinking AdGuard was flying, but it was uBO doing the work by itself. Only nslookup is a clean test.
And then I had a small setback. With AdGuard, annas-archive.org went down. It ended up on some blocklist. The mirrors .gd, .se, .li pass clean. Bookmark on .gd. Blocking Anna’s Archive by default is a political decision dressed up as security.
Since I was already in the Deco app, I tightened the rest. UPnP was the first to go — it opens ports on its own without warning. WPS too. Notorious protocol (CVE-2011-5053, Reaver); modern firmware like the Deco M4 already mitigates it with lockout, but I’ve never used it in my life. Enabled Fast Roaming and Beamforming, handoff between the two Decos became less dramatic. Firmware on auto-update and a permanent Guest Network, because explaining a 24-character password to every visitor is a hassle.
Then I moved to the TV. Ads there come from three directions. Native YouTube, the manufacturer’s launcher, and apps that serve ads through the same CDN as the content (Pluto, Tubi). I went after the first two.
YouTube is the biggest offender. For that I used SmartTube Next, which replaces it. Zero ads, SponsorBlock integrated, optional login. It’s not on the Play Store and needs sideloading. I installed Downloader (AFTVnews), enabled Unknown Sources for Downloader, opened it, typed smarttubeapp.github.io, grabbed the Stable APK and installed it.
I moved on to Projectivy. I wanted to swap out the OEM launcher — the OK one — which fills the home screen with rows of “Featured”, “Recommended”, “Top picks”. Projectivy builds a clean minimal grid with only the installed apps.
Easy to install, it’s on the Play Store. Setting it as default was more annoying than I expected.
The “Override current launcher” toggle in Projectivy itself didn’t take. I went to Clear defaults for the old launcher in Settings, Apps, but OK doesn’t expose that option. Developer options — I pressed OK 7 times on “Android TV OS Build”, activated it, went looking for USB debugging and Wireless debugging, which don’t exist in this firmware. OK removed them.
Firmware crippled like this isn’t a technical decision, it’s sabotage. An OEM that hides Settings and blocks ADB is saying the product lives off forced ads.
After a long search I found a way out. Grant Accessibility Service permission to Projectivy. Accessibility was built for screen readers, but some launchers use that permission to intercept the Home button when the normal path is blocked. It’s the equivalent of going through the window because someone locked the door.
Settings, Accessibility, list of services, Projectivy, enabled. Pressed Home. Projectivy opened. Reboot. It booted straight into it. Worked.
This isn’t obviously documented. Leaving it here for anyone with an OK TV or any OEM that blocks launcher choice via Settings and doesn’t expose ADB. I didn’t find official documentation for Accessibility Service intercepting Home on Android TV. If anyone knows the mechanism behind it, leave a comment.
Ads inside Netflix basic tier and Prime Video come through the content CDN. Filtering them requires HTTPS MITM with a root CA installed, which also breaks streaming. Not worth it.
Built-in telemetry in OK’s firmware is a black box. Without a custom ROM, there’s nothing to do.
Anna’s Archive still works via mirror. What’s left of the ads is “acceptable”.
Next step if the annoyance grows is NextDNS instead of public AdGuard, which has per-domain logs and whitelist.
Apertei Home no controle. A tela encheu de banners de todo o tipo de propaganda. Desliguei. Liguei de novo. Mesma coisa.
Decidi cortar o que desse pra cortar, sem root, sem firmware custom. Só o que era possível com o que tinha em casa. Um Deco M4 em mesh e uma Android TV 11”.
Comecei pelo DNS porque usar um Pi-hole num Raspberry pra uso doméstico seria overkill. Apontar o DNS do roteador pro AdGuard público provavelmente já resolvia. Todo device no Wi-Fi passa a resolver pela lista deles pra bloquear tracker e ad comum.
No app Deco, entrei em More, Advanced, DHCP Server.
Primary: 94.140.14.14
Secondary: 94.140.15.15
Save.
Celular funcionou. PC não. Achei que era o AdGuard mas não era.
O Windows tinha 1.1.1.1 fixado direto no adapter Wi-Fi. Tinha fixado há tempos, antes do AdGuard. O Anna’s Archive pede um DNS que o Windows padrão não entrega por aqui e sobrescreve qualquer DHCP. Settings, Network, Wi-Fi, rede conectada, DNS server assignment em Automatic. Aí no PowerShell
nslookup doubleclick.net
Voltou *** can't find doubleclick.net: Non-existent domain. NXDOMAIN, bloqueado.
Outra armadilha. Se tem uBlock Origin Lite no Chrome ou Brave, ele bloqueia ads antes da consulta sair do PC. Passei uns 10 minutos achando que o AdGuard tava voando, era o uBO fazendo o trabalho sozinho. Só o nslookup é teste limpo.
E nisso eu tive um pequeno contratempo. Com AdGuard, o annas-archive.org caiu. Entrou em alguma blocklist. Os mirrors .gd, .se, .li passam limpo. Bookmark no .gd. Bloquear Anna’s Archive por default é decisão política fantasiada de segurança.
Já que estava no app do Deco, aproveitei pra endurecer o resto. UPnP foi o primeiro a cair, abre porta sozinho sem avisar. WPS também. Protocolo famigerado (CVE-2011-5053, Reaver), firmware moderno tipo do Deco M4 já mitiga com lockout, mas eu nunca usei na vida. Liguei Fast Roaming e Beamforming, handoff entre os dois Decos ficou menos dramático. Firmware em auto-update e Guest Network separada, ligada permanente, porque explicar senha de 24 caracteres pra visita é um saco.
Nisso eu fui pra TV. Ads ali vêm de três frentes. YouTube nativo, launcher da fabricante, e apps que servem ads pelo mesmo CDN do conteúdo (Pluto, Tubi). Ataquei os dois primeiros.
YouTube é o maior ofensor. Pra isso usei SmartTube Next, que o substitui. Zero ads, SponsorBlock integrado, login opcional. Não tá na Play Store e precisa de sideload. Instalei o Downloader (AFTVnews), liberei Unknown Sources pro Downloader, abri, digitei smarttubeapp.github.io, peguei o APK Stable e instalei.
Parti pro Projectivy. Quis trocar o launcher OEM da OK, que enche a home de linhas “Featured”, “Recomendado”, “Top picks”. Projectivy monta grid limpo limpíssimo, só com os apps instalados.
Instalação tranquila, tá na Play Store. Definir como padrão foi mais chato do que eu pensei que seria.
O toggle “Override current launcher” do próprio Projectivy não assumiu. Fui em Clear defaults do launcher antigo em Settings, Apps, mas a OK não expõe a opção. Developer options, apertei OK 7 vezes no “Android TV OS Build”, ativou, entrei em busca de USB debugging e Wireless debugging, que não existem nesse firmware. A OK removeu.
Firmware capado desse jeito não é decisão técnica, é sabotagem. OEM que esconde Settings e bloqueia ADB tá dizendo que o produto vive de ad forçado.
Um bom tempo depois (e um bom tempo de pesquisa) achei uma opção. Dar permissão de Accessibility Service pro Projectivy. Accessibility é feito pra leitor de tela, mas alguns launchers usam essa permissão pra interceptar o botão Home quando o caminho normal tá bloqueado. É o equivalente de abrir a porta pela janela porque trancaram a fechadura.
Settings, Accessibility, lista de serviços, Projectivy, ativei. Apertei Home. Abriu Projectivy. Reboot. Ligou direto nele. Funcionou.
Esse caminho não tá documentado de forma óbvia. Fica aqui pra quem tem TV OK ou qualquer OEM que bloqueia escolha de launcher via Settings e não expõe ADB. Não achei documentação oficial pro Accessibility Service interceptar o Home em Android TV. Se alguém souber o mecanismo por trás, comenta.
Ads dentro do Netflix tier básico e Prime Video vêm pelo CDN do conteúdo. Filtrar exige HTTPS MITM com CA raiz instalada, o que quebra o streaming junto. Não compensou.
Telemetria embutida no firmware da OK é caixa preta. Sem ROM custom, não tem.
Anna’s Archive ainda funciona via mirror. O que sobra de ad é “aceitável”.
Próximo passo se o incômodo crescer é o NextDNS no lugar do AdGuard público, que tem logs e whitelist por domínio.
Presioné Home en el control remoto. La pantalla se llenó de banners de todo tipo de publicidad. Apagué. Encendí de nuevo. Lo mismo.
Decidí cortar lo que se pudiera, sin root, sin firmware personalizado. Solo lo posible con lo que tenía en casa. Un Deco M4 en mesh y una Android TV 11”.
Empecé por el DNS porque configurar un Pi-hole en una Raspberry Pi me parecía exagerado para uso doméstico. Apuntar el DNS del router al AdGuard público probablemente ya lo resolvía. Cada dispositivo en el Wi-Fi resuelve ahora a través de su lista para bloquear trackers y anuncios comunes.
En la app Deco, fui a More, Advanced, DHCP Server.
Primary: 94.140.14.14
Secondary: 94.140.15.15
Save.
El celular funcionó. La PC no. Pensé que era AdGuard pero no lo era.
Windows tenía 1.1.1.1 fijado directamente en el adaptador Wi-Fi. Llevaba tiempo así, antes de AdGuard. Anna’s Archive necesita un DNS que Windows por defecto no entrega aquí y sobreescribe cualquier DHCP. Settings, Network, Wi-Fi, red conectada, DNS server assignment en Automatic. Luego en PowerShell
nslookup doubleclick.net
Devolvió *** can't find doubleclick.net: Non-existent domain. NXDOMAIN, bloqueado.
Otra trampa. Si tenés uBlock Origin Lite en Chrome o Brave, bloquea los anuncios antes de que la consulta salga de la PC. Pasé unos 10 minutos pensando que AdGuard volaba, pero era uBO haciendo el trabajo solo. Solo el nslookup es un test limpio.
Y ahí tuve un pequeño contratiempo. Con AdGuard, annas-archive.org cayó. Entró en alguna blocklist. Los mirrors .gd, .se, .li pasan limpio. Marcador en .gd. Bloquear Anna’s Archive por defecto es una decisión política disfrazada de seguridad.
Ya que estaba en la app de Deco, aproveché para endurecer el resto. UPnP fue lo primero en caer, abre puertos solo sin avisar. WPS también. Protocolo tristemente célebre (CVE-2011-5053, Reaver), el firmware moderno como el del Deco M4 ya lo mitiga con lockout, pero nunca lo usé en mi vida. Activé Fast Roaming y Beamforming, el handoff entre los dos Decos se volvió menos dramático. Firmware en auto-update y Guest Network separada y permanente, porque explicar una contraseña de 24 caracteres a cada visita es un fastidio.
Luego fui a la TV. Los anuncios allí vienen de tres frentes. YouTube nativo, el launcher del fabricante, y apps que sirven anuncios por el mismo CDN que el contenido (Pluto, Tubi). Fui por los dos primeros.
YouTube es el mayor ofensor. Para eso usé SmartTube Next, que lo reemplaza. Cero anuncios, SponsorBlock integrado, login opcional. No está en la Play Store y requiere sideload. Instalé Downloader (AFTVnews), habilité Unknown Sources para Downloader, lo abrí, escribí smarttubeapp.github.io, bajé el APK Stable y lo instalé.
Pasé a Projectivy. Quería cambiar el launcher OEM de la OK, que llena la pantalla de inicio con filas de “Featured”, “Recomendado”, “Top picks”. Projectivy arma una grilla limpa y mínima con solo las apps instaladas.
Instalación sencilla, está en la Play Store. Configurarlo como predeterminado fue más molesto de lo que esperaba.
El toggle “Override current launcher” del propio Projectivy no funcionó. Fui a Clear defaults del launcher antiguo en Settings, Apps, pero la OK no expone esa opción. Developer options, presioné OK 7 veces en “Android TV OS Build”, lo activé, busqué USB debugging y Wireless debugging, que no existen en este firmware. La OK los removió.
Un firmware capado así no es una decisión técnica, es sabotaje. Un OEM que oculta Settings y bloquea ADB está diciendo que el producto vive de publicidad forzada.
Después de bastante tiempo de búsqueda encontré una salida. Darle permiso de Accessibility Service a Projectivy. Accessibility fue diseñado para lectores de pantalla, pero algunos launchers usan ese permiso para interceptar el botón Home cuando el camino normal está bloqueado. Es el equivalente de entrar por la ventana porque cerraron la puerta con llave.
Settings, Accessibility, lista de servicios, Projectivy, activado. Presioné Home. Se abrió Projectivy. Reboot. Arrancó directo en él. Funcionó.
Esto no está documentado de forma obvia. Lo dejo aquí para quien tenga una TV OK o cualquier OEM que bloquee la elección de launcher vía Settings y no exponga ADB. No encontré documentación oficial sobre Accessibility Service interceptando Home en Android TV. Si alguien conoce el mecanismo detrás, que comente.
Los anuncios dentro del tier básico de Netflix y Prime Video vienen por el CDN del contenido. Filtrarlos requiere HTTPS MITM con una CA raíz instalada, lo que también rompe el streaming. No valió la pena.
La telemetría integrada en el firmware de OK es una caja negra. Sin ROM personalizada, no hay mucho que hacer.
Anna’s Archive sigue funcionando vía mirror. Lo que queda de anuncios es “aceptable”.
El próximo paso si el malestar crece es NextDNS en lugar del AdGuard público, que tiene logs y whitelist por dominio.