Voltar para o Blog

tv-vibehack em 2026: Como Tirar os Anúncios da Sua Android TV com ADB

Olá HaWkers, você liga a TV para ver um filme e a primeira coisa que aparece é uma fileira de trailers patrocinados, um banner de streaming que você nem assina e um aplicativo pré-instalado do fabricante pedindo atualização. Essa é a tela inicial padrão de boa parte das TVs com Android TV e Google TV hoje. Nesta semana, um projeto open source chamado tv-vibehack passou das 3,1 mil estrelas no GitHub prometendo exatamente o contrário: "sua TV, sem os anúncios".

A pergunta que fica é: dá para limpar uma TV que você comprou sem root, sem cabo e sem gravar firmware nova, e ainda conseguir desfazer tudo se der errado? Neste artigo você vai entender como o tv-vibehack funciona por dentro, quais TVs ele suporta, quais riscos reais existem e, principalmente, o que esse projeto ensina para quem constrói produto digital.

O Que É o tv-vibehack

O tv-vibehack é um kit open source, sob licença MIT, mantido pelo usuário Gathin23 no GitHub. Ele faz três coisas, nesta ordem:

  1. Faz backup da lista de pacotes instalados e das configurações da TV.
  2. Desativa telemetria, serviços de anúncio, fileiras de conteúdo patrocinado e aplicativos pré-instalados usando o comando pm disable-user. Nada é desinstalado.
  3. Instala um launcher nativo de cerca de 250 KB (o pacote com.gathin.tvhome) e define esse launcher como a tela inicial padrão.

O visual do launcher é inspirado na Apple TV: fundo preto puro, um dock com quatro aplicativos favoritos, uma prateleira superior, uma grade de apps e três botões translúcidos para Entradas, Wi-Fi e Configurações. Ele foi pensado para rodar em TVs com 1 GB de RAM, então não tem blur, vídeo, acesso à rede nem serviços em segundo plano.

Um detalhe curioso: o próprio repositório diz que o projeto foi construído com o Claude Code, e o arquivo PROMPT.md traz o prompt que você cola num assistente de código com acesso ao terminal para conduzir a instalação na sua TV. É o "vibe" do nome.

Quais TVs funcionam

Segundo a documentação do projeto, o suporte se divide assim:

  • Funciona: TVs com Android TV e Google TV da Xiaomi/Redmi, TCL, Hisense, Sony, OnePlus, Realme e o NVIDIA Shield. A pasta de exemplos lista cerca de 25 modelos testados.
  • Parcial: Amazon Fire TV recebe só a parte de debloat, porque o Fire OS não deixa um launcher de terceiros assumir o botão Home. Algumas firmwares da TCL para o mercado chinês (Android TV 9) recusam launchers que não sejam assinados pela própria TCL.
  • Não funciona: Samsung (Tizen) e LG (webOS), porque não são Android.

Por Que a Tela Inicial da Sua TV Virou Vitrine

Os anúncios na tela inicial não são novidade. Em 2019, o Google confirmou um programa piloto que adicionou uma fileira de conteúdo patrocinado em alguns aparelhos com Android TV, e usuários de TVs da Sony, do Mi Box 3 da Xiaomi e do NVIDIA Shield relataram a mudança depois de uma atualização. Na época, o suporte da Sony chegou a dizer que a única forma de esconder o canal patrocinado era criar um perfil restrito.

De lá para cá, o modelo só se consolidou. Guias de marketing de 2026 descrevem o Google TV como uma rede de anúncios selecionável dentro das campanhas de vídeo do Google Ads, com unidades que aparecem no feed da tela inicial e tocam sem som até o usuário focar nelas. Ou seja: a tela inicial deixou de ser só um menu e virou inventário publicitário.

Do ponto de vista de produto, a conta faz sentido para quem vende: hardware de TV tem margem apertada, e a tela inicial é vista todos os dias por milhões de pessoas. Do ponto de vista de quem usa, o custo aparece em tempo de carregamento, uso de memória em aparelhos com 1 GB ou 2 GB de RAM e uma sensação constante de que a TV não é bem sua.

É desse atrito que nascem projetos como o tv-vibehack, e o fato de ele ter passado de 3 mil estrelas tão rápido mostra o tamanho da frustração.

Como Funciona por Baixo: ADB pelo Wi-Fi

O coração do projeto é o ADB (Android Debug Bridge), a mesma ferramenta que desenvolvedores Android usam para instalar apps e depurar no celular. Em TVs Android, quando você ativa as opções de desenvolvedor e a depuração, a TV passa a escutar conexões ADB na rede local. Na primeira conexão, ela mostra um diálogo pedindo para você autorizar aquele computador.

O fluxo manual para ativar fica assim na maioria das TVs:

  1. Abra Configurações, vá em Sobre e aperte OK sete vezes em "Build" para liberar as opções de desenvolvedor.
  2. Ative a depuração USB (algumas TVs têm uma opção separada de depuração por rede ou ADB).
  3. Deixe o computador na mesma rede Wi-Fi da TV.

Com isso, um comando básico de ADB já permite conversar com a TV. Veja um exemplo usando o adb oficial do Android SDK:

# Conecta na TV pela rede local (troque pelo IP da sua TV)
adb connect 192.168.1.50:5555

# Confirma que a TV apareceu como dispositivo autorizado
adb devices

# Lista apenas os pacotes do sistema, que é onde mora o bloatware
adb -s 192.168.1.50:5555 shell pm list packages -s

# Mostra qual atividade responde hoje ao botão Home
adb -s 192.168.1.50:5555 shell cmd package resolve-activity \
  -a android.intent.action.MAIN -c android.intent.category.HOME

Um ponto interessante: o tv-vibehack traz o tools/tv.py, um cliente ADB escrito em Python puro. O motivo, segundo o README, é que versões recentes do macOS podem bloquear o binário adb do Google por causa da privacidade de rede local. Escrever o próprio cliente elimina essa dependência.

Debloat Reversível: Desativar Não É Desinstalar

A decisão técnica mais importante do projeto é usar pm disable-user em vez de pm uninstall. A diferença parece pequena, mas muda tudo:

  • pm uninstall --user 0 remove o app do usuário. Se você precisar dele de volta, pode ter que reinstalar o APK manualmente ou até restaurar a TV de fábrica.
  • pm disable-user --user 0 só desliga o pacote. Ele continua no sistema e volta com um único pm enable.

O tv-vibehack organiza isso em listas de debloat por modelo de TV, aplicadas com tools/disable.sh e desfeitas com tools/restore.sh. Você pode reproduzir a mesma ideia com um script simples que registra tudo antes de mexer:

#!/usr/bin/env bash
# Desativa pacotes de uma lista e guarda um log para poder desfazer depois
set -euo pipefail

TV="${TV_HOST:?defina TV_HOST com o IP da TV}:5555"
LISTA="$1"                      # arquivo com um nome de pacote por linha
LOG="desativados-$(date +%Y%m%d-%H%M).txt"

# Backup completo da lista de pacotes antes de qualquer mudança
adb -s "$TV" shell pm list packages > "backup-pacotes.txt"

while read -r pacote; do
  # Ignora linhas vazias e comentários
  [[ -z "$pacote" || "$pacote" == \#* ]] && continue

  if adb -s "$TV" shell pm disable-user --user 0 "$pacote" | grep -q "disabled"; then
    echo "$pacote" >> "$LOG"
    echo "desativado: $pacote"
  else
    echo "falhou (mantido como está): $pacote"
  fi
done < "$LISTA"

echo "Pronto. Para desfazer: ./restaurar.sh $LOG"

E o caminho de volta, que é o que dá segurança para experimentar:

#!/usr/bin/env bash
# Reativa todos os pacotes registrados no log gerado pelo script anterior
set -euo pipefail

TV="${TV_HOST:?defina TV_HOST com o IP da TV}:5555"

while read -r pacote; do
  adb -s "$TV" shell pm enable "$pacote" && echo "reativado: $pacote"
done < "$1"

Esse padrão (backup, mudança registrada, reversão em um comando) é o mesmo que você usaria numa migração de banco de dados. A TV só é um servidor pequeno na sua sala.

O risco que ninguém conta: o loop da tela inicial

O README do projeto é honesto sobre o que pode dar errado, e vale ler antes de tentar. O caso mais sério: se você desativar o launcher original sem cuidar do assistente de configuração inicial, alguns aparelhos com Google TV entram num loop de travamento da tela Home. Nos modelos MiTV-MOOR2 e MZTU0, a correção documentada é desativar também o pacote com.google.android.tungsten.setupwraith, que é o assistente do primeiro uso e tenta trazer o launcher padrão de volta. Usuários em fóruns relatam o mesmo comportamento em TVs TCL.

Outros alertas listados pelo projeto:

  • Uma unidade da Hisense entrou no modo de recuperação do Android até alguém escolher "Try again".
  • No Xiaomi Mi Box S, deixar a depuração USB ligada pode cortar a energia das portas USB. Desligue quando terminar.
  • A maioria das listas desativa o serviço de atualização do fabricante, então as atualizações precisam ser reativadas de propósito.
  • Uma TV com Google TV 14 perdeu o Wi-Fi depois da instalação pelo mesmo problema do setupwraith.

Uma regra prática: reative o setupwraith antes de qualquer restauração de fábrica, e nunca desative o launcher original antes de confirmar que o novo responde ao botão Home.

O Launcher: Como um App Vira a Tela Inicial

Para o Android, a tela inicial é só uma Activity que declara um filtro de intent específico. Quando você aperta Home no controle, o sistema procura quem responde à categoria HOME. Em TVs, a categoria LEANBACK_LAUNCHER também conta, porque é ela que faz o app aparecer na lista de aplicativos.

Um manifesto mínimo de launcher para TV fica assim:

<!-- AndroidManifest.xml: declara a Activity como tela inicial de TV -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.exemplo.minhahome">

    <!-- Diz ao sistema que o app foi feito para TV e não exige touchscreen -->
    <uses-feature android:name="android.software.leanback" android:required="true" />
    <uses-feature android:name="android.hardware.touchscreen" android:required="false" />

    <application android:label="Minha Home" android:banner="@drawable/banner">
        <activity
            android:name=".HomeActivity"
            android:exported="true"
            android:launchMode="singleTask">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <!-- HOME: responde ao botão Home do controle -->
                <category android:name="android.intent.category.HOME" />
                <category android:name="android.intent.category.DEFAULT" />
                <!-- LEANBACK_LAUNCHER: aparece na grade de apps da TV -->
                <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

Depois de instalar o APK, dá para definir o novo launcher como padrão pelo próprio ADB:

# Instala o launcher e define como atividade Home padrão
adb -s 192.168.1.50:5555 install minhahome.apk
adb -s 192.168.1.50:5555 shell cmd package set-home-activity \
  com.exemplo.minhahome/.HomeActivity

É exatamente por isso que o Fire TV é só parcialmente suportado: o Fire OS ignora outros launchers no botão Home. E é por isso que algumas firmwares da TCL recusam o APK: o fabricante passou a exigir assinatura própria para apps com categoria HOME.

O tv-vibehack, aliás, não publica APKs prontos. Você compila o launcher na sua máquina (com JDK 17 e Android SDK plataforma 34) e instala direto na TV. Isso reduz o risco de alguém distribuir um APK adulterado com o nome do projeto.

O Que Isso Ensina Para Quem Faz Produto

Mesmo que você nunca vá mexer na sua TV, o tv-vibehack é um estudo de caso bom sobre produto digital.

1. O usuário percebe quando a interface trabalha contra ele. Ninguém instala um projeto do GitHub e ativa modo de desenvolvedor na TV por diversão. As mais de 3 mil estrelas e 370 forks de um repositório novo medem a frustração acumulada com a tela inicial padrão.

2. Reversibilidade vende confiança. O argumento central do projeto não é "remove tudo", é "nada é desinstalado, tudo volta". Em qualquer produto, um botão de desfazer bem feito reduz o medo de experimentar. O mesmo vale para feature flags, migrações e configurações de usuário.

3. Leveza é funcionalidade. Um launcher de 250 KB, sem serviços em segundo plano, roda melhor numa TV de 1 GB de RAM do que o launcher oficial cheio de vídeos. Muitas vezes o recurso mais pedido é a ausência de recursos.

4. A IA virou interface de instalação. Em vez de um assistente gráfico, o projeto entrega um prompt para um agente de código conduzir o processo, perguntar o modelo da TV e aplicar a lista certa. É uma forma nova de distribuir ferramenta técnica para quem não quer decorar comandos. Falei sobre outro lado dessa relação com assistentes no post sobre o que um caso na Flórida ensina sobre privacidade na IA.

Esse movimento de "deixa eu desligar o que eu não pedi" também aparece nos navegadores, como mostrei no artigo sobre o botão do Firefox para desativar a IA e proteger a privacidade.

Vale a Pena Fazer na Sua TV?

Depende do quanto você aceita de risco. Um checklist honesto antes de começar:

  • Sua TV está na lista de modelos testados? Se sim, a chance de dar certo é bem maior, porque a lista de debloat já foi validada por alguém.
  • Você está confortável com terminal? O caminho com assistente de IA ajuda, mas se algo travar, você vai precisar entender o que está rodando.
  • Você tem um plano B? Saiba como entrar no modo de recuperação do seu modelo antes de começar.
  • Você usa AirPlay ou espelhamento de apps com DRM? O launcher não oferece AirPlay nativo, e apps como Netflix e Apple TV+ não espelham.
  • Você vai lembrar de reativar as atualizações? Atualização de segurança desligada por meses é um problema real numa TV conectada à sua rede.

Se a resposta for sim para quase tudo, o ganho é uma TV mais rápida, sem fileiras patrocinadas e com menos telemetria. Se for não, uma alternativa mais conservadora é só trocar o launcher padrão por outro da loja, sem desativar pacotes do sistema.

Perspectivas: A Briga Pela Tela Inicial Só Está Começando

A tela inicial das TVs virou um dos espaços de publicidade mais disputados da casa, e não há sinal de que fabricantes ou plataformas vão recuar. Ao mesmo tempo, ferramentas como o tv-vibehack mostram que, enquanto o Android TV permitir ADB pela rede e launchers de terceiros, o usuário técnico vai continuar tendo uma saída.

O risco para o futuro é o caminho que a TCL e a Amazon já tomaram: exigir assinatura do fabricante para launchers ou bloquear a troca do botão Home. Se isso se espalhar, projetos como esse ficam restritos ao debloat. Para quem desenvolve produto, a lição fica: quando o usuário começa a instalar ferramentas para desligar partes do seu produto, o problema não está no usuário.

Bora pra cima! 🦅

📚 Quer Acompanhar o Que Vem Por Aí?

Este artigo cobriu como o tv-vibehack remove anúncios da Android TV com ADB e um launcher leve, mas o ecossistema muda toda semana e nem tudo vira artigo aqui.

No X eu compartilho o que estou testando, os bastidores dos projetos e as novidades que aparecem antes de virarem post.

Me Segue Lá

👉 Seguir @jeffbruchado no X

💡 Conteúdo diário sobre desenvolvimento, carreira e as ferramentas que eu realmente uso

Comentários (0)

Esse artigo ainda não possui comentários 😢. Seja o primeiro! 🚀🦅

Adicionar comentário