Ma TV Sony BRAVIA passait son temps à me pousser des promos, des bannières “films en vedette” et des applications que je n’utilise jamais. Pas envie de rooter l’appareil pour autant : trop risqué, et pas nécessaire. ADB (Android Debug Bridge) permet de désactiver une bonne partie de ce qui gêne, sans toucher au système lui-même. Pas tout, comme on va le voir.

On parle beaucoup des agents IA capables d’attaquer des sites web tout seuls, comme si l’autonomie n’avait de valeur que dans un contexte de sécurité offensive. Configurer une télé Android n’a rien d’offensif, mais c’est le même genre de travail : explorer un système qu’on ne connaît pas, repérer ce qui compte, agir dessus sans tout casser. J’ai fait la partie que je ne pouvais pas déléguer, activer le mode développeur, le pairing, connecter ADB, puis j’ai laissé un agent (Claude Code) reprendre la main sur trois fronts : les applications installées en trop, les publicités qui s’affichent, et les paramètres de confidentialité. Voici comment ça s’est passé, avec les pièges en route et ce qui n’a pas marché.

Le matériel et les prérequis

  • Sony BRAVIA, Android 14 (SDK 34)
  • CPU 32 bits uniquement (armeabi-v7a), chipset Realtek
  • adb installé sur votre machine de dev (paquet android-tools-adb sous Ubuntu/Debian, platform-tools via le SDK Android sinon)

Le point important n’est pas le modèle exact : c’est qu’Android TV, quel que soit le fabricant, expose un mode de debug sans fil depuis Android 11. C’est ce mode qui rend tout ça possible sans câble ni root.

Étape 1 : débloquer le mode développeur

Sur Android TV, les options développeur sont cachées par défaut. Dans Paramètres > Système > À propos, il faut aller sur “Build” (ou “Numéro de build” en français) et appuyer dessus sept fois de suite. Un compteur apparaît après quelques taps, et un nouveau menu “Options pour les développeurs” s’ajoute au menu Système une fois les sept taps effectués.

Étape 2 : activer le débogage sans fil

Dans ce nouveau menu, activez le “Wireless debugging”. Un écran affiche alors un port de connexion, qui change à chaque activation.

C’est le premier piège : depuis Android 11, ce port est aléatoire, et il est différent du port de pairing, qui est lui-même généré séparément sur un second écran. Avant Android 11, tout le monde utilisait le port fixe 5555. Ce temps-là est révolu.

Étape 3 : le pairing, la partie qui plante le plus souvent

Sur votre machine de dev, sur le même réseau local que la TV :

adb pair <ip-tv>:<port_pairing>   # une fois, avec le code affiché à l'écran
adb connect <ip-tv>:<port_connect>
adb devices

Deux pièges classiques ici :

  • adb connect sur le port de pairing échoue silencieusement. Il faut bien utiliser adb pair sur ce port-là, pas adb connect.
  • Le code de pairing expire vite. Si adb pair semble figé, sans jamais demander le code, ne pas insister : générer un nouveau code sur la TV et relancer immédiatement, au besoin après adb kill-server && adb start-server.

Une fois le pairing réussi, adb devices va afficher le port de pairing comme offline en permanence. C’est normal : seul le port de connexion passe à device. Pas de panique si l’entrée offline reste là.

Étape 4 : désactiver les paquets superflus

Une fois ADB connecté, c’est là que j’ai laissé la main à l’agent : lister les paquets installés (adb shell pm list packages), repérer ceux qui sentent la promo ou le bloatware, et les désactiver un par un avec pm disable-user. Ce dernier désactive un paquet pour l’utilisateur courant, sans le désinstaller et sans toucher au système. C’est réversible, donc un risque raisonnable à déléguer. Voici le groupe promos/démo qui est passé sans souci :

adb shell pm disable-user --user 0 com.sony.dtv.promos
adb shell pm disable-user --user 0 com.sony.dtv.sonyselect
adb shell pm disable-user --user 0 com.sony.dtv.smarthelp
adb shell pm disable-user --user 0 com.sony.dtv.multiscreendemo
adb shell pm disable-user --user 0 com.sony.dtv.b2b.vendorprotocol
adb shell pm disable-user --user 0 com.sony.qrmt
adb shell pm disable-user --user 0 com.sony.dtv.eulaviewer
adb shell pm disable-user --user 0 com.sony.dtv.helpguidecontents

À ne surtout pas toucher : tout ce qui commence par com.realtek.* (pilotes tuner/wifi/USB/BT), le launcher (com.google.android.apps.tv.launcherx), com.google.android.tungsten.setupwraith, com.android.systemui, et les services Google (com.google.android.gms, gsf). Désactiver l’un de ces paquets peut casser l’interface ou la connectivité.

Autre avertissement trouvé dans les recherches de l’agent : désactiver com.google.android.katniss coupe la recherche et l’assistant vocal. À éviter si vous utilisez l’un des deux.

Étape 5 : le bandeau publicitaire, la limite qu’on n’a pas passée

Après avoir désactivé le groupe promos/démo, un bandeau “Films en vedette” restait affiché sur l’accueil. En creusant, l’agent a établi qu’il ne venait pas de com.sony.dtv.sonyselect (déjà désactivé), mais bien de Android TV.

Pour aller plus loin que ça sur l’affichage publicitaire, la seule alternative que je connaisse est radicale : sortir complètement du système Android TV natif de la TV, en branchant un boîtier externe (mini PC, stick Android TV) qui tourne son propre système et masque le launcher Android par défaut. Ça marche, mais ça ajoute un appareil, une télécommande de plus, et on perd les optimisations audio/vidéo intégrées au firmware du fabricant, etc. Je ne suis pas allé jusque-là pour ce projet : un bandeau cosmétique ne justifie pas de sacrifier l’intégration native.

Étape 6 : couper l’identifiant publicitaire

Ce réglage n’est exposé par aucun paquet qu’on peut manipuler avec pm, il est enterré dans un sous-menu de l’interface : Paramètres > Confidentialité > Annonces > Supprimer l'identifiant publicitaire.

Plutôt que de naviguer moi-même à la télécommande, j’ai laissé l’agent s’en charger avec les deux commandes qu’ADB expose pour piloter l’interface à l’aveugle :

adb shell screencap -p /sdcard/screen.png && adb pull /sdcard/screen.png
adb shell input tap <x> <y>

Des aller-retours capture-clic-capture, menu après menu, jusqu’à tomber sur le bon écran.

Piège de traduction sur l’interface française : le menu traduit “Ads” par “Annonces”, pas par “Publicité”. Un piège pour un humain qui cherche le mauvais mot, mais aussi pour l’agent, qui a dû ajuster sa recherche visuelle sur le même mot avant de trouver le bon bouton.

Étape 7 : SmartTube contre les publicités YouTube

L’application YouTube officielle a droit à son propre lot de pubs, que rien de ce qui précède ne touche. SmartTube est un client YouTube alternatif, sans pub, qui se sideload directement via ADB une fois la connexion établie :

adb install SmartTubeNext_xx.xx.apk

Pas de version sur le Play Store, sans surprise : Google ne laisse pas passer une appli qui bloque les pubs qui financent YouTube. Il faut récupérer l’APK depuis les releases GitHub du projet et le sideloader à la main.

Tout est réversible

Rien de ce qui précède n’est destructif. Pour annuler :

adb shell pm enable --user 0 <package>              # annule un disable-user
adb shell cmd package install-existing <package>    # annule un uninstall --user 0
adb shell pm clear com.google.android.apps.tv.launcherx   # si l'accueil bug après coup

Et en dernier recours, une réinitialisation d’usine restaure tout.

Sources qui m’ont bien aidé (et l’agent)

Le point commun de ces guides communautaires : ils listent des paquets “à faible risque”, confirmés par plusieurs sources indépendantes, mais aucun ne remplace un test prudent, paquet par paquet, sur son propre modèle de TV.

Bilan : huit paquets de bloatware désactivés, YouTube débarrassé de ses pubs via SmartTube, un bandeau publicitaire toujours vivant (ouin), un identifiant pub coupé “à la main” parce que ADB ne va pas jusque-là. Pas une victoire totale. Mais la question n’était pas de gagner contre les pubs, c’était de voir jusqu’où un agent avance seul sur un système qu’il ne connaissait pas et le voir cliquer sur les menus à distance, c’est magique. Et perturbant.