# Sony BRAVIA VU31 4K (device BRAVIA_VU31_4K, Realtek SoC), India firmware, 2 GB RAM # Google TV 14 (API 34), build UKR1.240726.001 # # Apply: TV_HOST= tools/disable.sh examples/sony-bravia-vu31/debloat.txt # Undo: TV_HOST= tools/restore.sh examples/sony-bravia-vu31/debloat.txt com.google.android.apps.tv.launcherx # Everything is DISABLED, not uninstalled. Comment out any line you want to keep. # # Stock launcher: com.google.android.apps.tv.launcherx (Google TV); pass it to restore.sh as above. # Launcher: done on a second VU31 (see the last group). setupwraith also claims HOME (priority 1), so it # goes before launcherx; build-and-install.sh disables launcherx itself. # Tuner / inputs on this Realtek set are com.realtek.dtv, com.realtek.tv.atv and com.android.tv (Live # Channels): keep them, plus com.sony.dtv.tvapi-style services (sonysystemservice, smartui = Input menu, # m2.devicecontrolservice, ipcontrol) and all com.realtek.* overlays. # Unlike the MediaTek Sony sets, this firmware ships no Samba TV, Qterics or IDD agents, so there is # nothing of that kind to disable. com.sony.dtv.b2b.vendorprotocol was already disabled from the factory. # ADB: USB debugging alone opens port 5555 (no wireless-debugging pairing needed); the "Allow USB # debugging?" prompt appears on first connect. On macOS the terminal app needs Local Network permission # or every LAN host answers "No route to host". # Applied 2026-10-20 in two batches with a screenshot and crash-log check after each, then reboot-checked: # all 18 stayed disabled, no crashes, Home, Inputs and the kept apps fine. Not lived with for days yet. # With 2 GB of RAM the set still swaps after this; the stock home screen (~170 MB over two processes) # is the next thing to replace. # # Second VU31, same build, 2026-10-20: the extra lines marked (2nd) disabled in batches with a screenshot and # crash-log check after each, then the launcher installed and Home switched, reboot-checked. Notes from it: # - Live TV and every HDMI/AV input play in com.android.tv; the inputs come from com.realtek.tv.passthrough # (HDMI 1-3, a CEC soundbar on HDMI 3, Video). In the launcher set live_tv_package to com.android.tv and # hide it. The Input key opens smartui's menu system-wide, so no INPUT_KEY_SERVICE is needed. # - Before disabling setupwraith check `dumpsys wifi | grep -o 'cname=[^ ]*'`: here the network belonged to # android.uid.system, so Wi-Fi and ADB stayed up. # - com.sony.dtv.applicationdisabler re-enables com.sony.dtv.ecodashboard at every boot (as on the BF1), so # it is not listed; hide its tile in the launcher (hidden_apps) instead. # - Sony's Timers & Clock declares two leanback activities with one label, which showed as two tiles # (launcher fix in #298). # - Real remote checked after the switch: Home, Input, the mic and the app buttons all work. # # Third VU31, same build, 2026-10-21: the list above plus the launcher, reboot-checked. On this set the remote's # app buttons did NOT work once launcherx was off: # - Realtek's com.realtek.advancesetting owns the app buttons (`dumpsys window policy`: KEYCODE_BUTTON_2/4/14/15 # go to its GlobalKeyReceiver), but on Google TV it does not open the app itself: Utils.startApp hands every # launch to launcherx's globalbutton.GlobalButtonLaunch_Receiver whenever the # com.google.android.feature.AMATI_EXPERIENCE feature is present. With launcherx disabled that broadcast has no # receiver and the press does nothing; logcat shows "Failed to find provider info for # ...launcherx.coreservices.DeviceModeContentProvider". # - Fix for four of them: app_keys in the launcher with INPUT_KEY_SERVICE=1, which catches the keycode first: # 201:com.google.android.youtube.tv, 202:com.google.android.youtube.tv (second YouTube button), # 191:com.netflix.ninja, 189:com.amazon.amazonvideo.livingroom. Checked with the real remote. # - SonyLIV (3004) and JioHotstar (3006) cannot be fixed this way: Realtek's KeyEventManager delivers those Sony # codes to advancesetting only, they never reach Android's input pipeline, so no accessibility service sees # them. Only re-enabling launcherx brings those two buttons back. # - InputKeyService also takes the Input key, but com.android.tv.action.VIEW_INPUTS resolves to # com.sony.dtv.smartui/.select.SmartSelectActivity here, the same menu the button opened before. # - The Ambient screensaver (dreamx) keeps working with launcherx disabled, for owners who want to keep it. # - com.android.camera2 is installed and crashes on open (the set has no camera); safe to disable. # # Fourth VU31, same build, 2026-10-25/26: most of the list above (Google TV, Apple TV and dreamx kept; Alexa and # camera2 off by choice), four batches with a screenshot and crash-log check after each, then the launcher; several # reboots. Lived with for 2 days so far. Remote: SONY TV VRC 001 (Bluetooth, mic). Notes from it: # - com.sony.dtv.m2.seeds.iot and com.sony.dtv.m2.seeds.iot.remotestart (Alexa) were enabled again after every # reboot, like Eco Dashboard (applicationdisabler presumably; not confirmed). Left alone: harmless while Alexa is # not linked to an account. # - The gear (Settings) button sends keycode 83 to advancesetting, which hands it to launcherx like the app buttons # (same DeviceModeContentProvider error), so it does nothing once launcherx is off. 83:settings in app_keys # (INPUT_KEY_SERVICE=1) brings it back. Checked with the real remote. # - Holding volume up or down moves one step per press while InputKeyService is bound: the key-repeat trade in # docs/devices/tcl-55p71b-g09-key-repeat.md. consume_volume_keys did not help; empty-service control not run. # - The mic button did nothing because Android's microphone privacy toggle was on (dumpsys sensor_privacy, sensor 1; # AtvRemote logged "katniss doesn't have access to the on-remote mic"), not because of a disabled package. # Settings > Privacy > Microphone on (or cmd sensor_privacy disable 0 microphone) fixed it. Whether it was on # before the debloat is not known. # - With launcherx off, Down in the Ambient screensaver no longer opens its Screensaver settings panel # (dreamx/.settingsv2.TwoPanelActivity); the same panel is under Settings > System > Ambient screensaver > Settings. # - The stock screensaver delay was 10 minutes (screen_off_timeout 600000); Google TV has no on-screen setting for it. # Sony promos, store demo and help tiles com.sony.dtv.promos # My BRAVIA promos com.sony.dtv.sonyselect # Sony Select app promos com.sony.dtv.sonytab # Sony tab / partner content on the stock home com.sony.dtv.multiscreendemo # shop demo com.sony.dtv.smarthelp # Sony help tile com.sony.dtv.helpguidecontents # help guide content (2nd) com.sonypicturescore # Sony Pictures Core preload (2nd) # Ads and on-device ad personalisation (2nd) com.android.adservices.api # Privacy Sandbox ad services com.android.federatedcompute.services # federated learning for ad/usage models com.android.ondevicepersonalization.services # on-device ad personalisation # Google leftovers a TV never needs com.google.android.feedback # Google feedback reporter com.google.android.play.games # Play Games com.google.android.partnersetup # RLZ install-attribution provider com.google.android.onetimeinitializer # runs once after first setup com.google.android.syncadapters.calendar # calendar sync; also carries Google's GrowthKit promos com.android.printspooler # printing android.autoinstalls.config.google.gtvpai # Play partner auto-installs (2nd) com.android.gallery3d # legacy photo viewer (2nd) com.android.camera2 # crashes on open; no camera on this set # Screensaver: set `settings put secure screensaver_components com.android.dreams.basic/.Colors` first, or # with the launcher installed its clock, com.gathin.tvhome/.ClockDream (2nd; runs in the launcher's process) com.google.android.apps.tv.dreamx # Ambient photo/art screensaver (~46 MB resident; ~80 MB PSS # right after it has run) and two photo-sync jobs # Off by choice (owner does not use them). Alexa (m2.seeds.iot), Chromecast, AirPlay, the phone # remote and Assistant were kept on purpose. com.google.android.videos # Google TV / Play Movies com.apple.atve.androidtv.appletv # Apple TV (preloaded in /data) com.crunchyroll.crunchyroid # Crunchyroll com.suntv.sunnxt # Sun NXT com.yupptv.scope.tvapp # YuppTV com.analiti.fastest.android # analiti speed test com.google.android.marvin.talkback # screen reader, off by choice (2nd) com.google.android.tts # text-to-speech, off by choice com.viacom18.tv.voot # Voot streaming preload # Launcher handover (2nd): setupwraith is safe to disable before the launcher (launcherx keeps Home), but # only once the Wi-Fi owner check above is clean. com.google.android.tungsten.setupwraith # setup wizard; its RecoveryActivity claims HOME once launcherx is off # com.google.android.apps.tv.launcherx # launcher/build-and-install.sh disables the stock launcher itself, after Home has moved