# Chromecast with Google TV 4K (2020, device sabrina, product sabrina_prod_stable), 2 GB RAM # Google TV 14 (SDK 34), build UTTC.250917.004 (14193937) # # Apply: TV_HOST= tools/disable.sh examples/google-chromecast-gtv-4k/debloat.txt # Undo: TV_HOST= tools/restore.sh examples/google-chromecast-gtv-4k/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. No Live TV app and no HDMI inputs (it's a dongle): # leave live_tv_package empty in config.xml. # # Known quirks on this firmware: # - ADB on port 5555 is closed (connection refused) until you pair once through Wireless debugging with # the stock adb: Developer options > Wireless debugging > Pair device with pairing code, `adb pair # `, `adb connect ` (`adb mdns services` lists both ports), then # `adb tcpip 5555`. After that tools/tv.py works on 5555 (README, Troubleshooting). # - `cmd package set-home-activity com.gathin.tvhome` returns Success but launcherx stays the default. # Disable BOTH com.google.android.apps.tv.launcherx and com.google.android.tungsten.setupwraith # (setupwraith re-enables launcherx), only after the new launcher is installed. # - With launcherx disabled the YouTube button on the remote does nothing. It sends BUTTON_3 # (keycode 190). Button Mapper only remaps added buttons in its paid Pro version; Key Mapper # (open source, keymapperorg/KeyMapper) does it for free. Play Store lists Key Mapper as incompatible # with this device, so install the -foss APK from its GitHub releases, then over ADB: # pm grant io.github.sds100.keymapper android.permission.WRITE_SECURE_SETTINGS # settings put secure enabled_accessibility_services io.github.sds100.keymapper/io.github.sds100.keymapper.system.accessibility.MyAccessibilityService # Map trigger "Button 3" (short press) to action "Launch app > YouTube". Record the trigger with the # physical remote: keys injected with `input keyevent 190` don't reach Key Mapper, and D-pad presses # made while recording get added to the trigger. # - com.google.android.tvrecommendations and com.google.android.apps.education.cast2class ship # disabled at the factory; `pm disable-user` on them fails with "Shell cannot change component # state". Don't add them to a restore list either. # - Disabling dreamx leaves screensaver_components pointing at it. Point it at the launcher's clock: # settings put secure screensaver_components com.gathin.tvhome/.ClockDream # - Animation scales already ship at 0.5x on this build. # # Kept on purpose (all work after this list): Google Assistant (com.google.android.katniss), # Cast receiver (com.google.android.apps.mediashell), phone remote (com.google.android.tv.remote.service), # Play Store / Play Services, Gboard, Bluetooth, com.google.android.tv.dfuservice (remote firmware updates). # Telemetry, feedback and ads com.google.android.feedback com.android.tv.feedbackconsent com.google.android.tv.remotecontrol.logging # remote usage logging com.google.android.apps.tv.netoscope # network diagnostics reporting # The next four are Privacy Sandbox / federated-learning Mainline modules: worked here, re-enable if # the Play Store or Assistant misbehave. com.google.android.federatedcompute com.google.android.ondevicepersonalization.services com.google.android.adservices.api # Privacy Sandbox ad services com.google.android.ext.adservices.api # Preloaded apps com.google.android.play.games com.google.android.videos # Google TV / Play Movies com.android.printspooler com.google.android.marvin.talkback # re-enable if you need the screen reader # Google ambient mode screensaver (replaced by the launcher's Clock screensaver) com.google.android.apps.tv.dreamx com.google.android.backdrop # Stock home. launcher/build-and-install.sh disables launcherx itself once the new launcher is installed # and verified, and restore.sh re-enables it; setupwraith has to go too on this firmware (see quirks), # so it stays in the list for restore.sh to bring back. # com.google.android.apps.tv.launcherx com.google.android.tungsten.setupwraith # setup wizard; its RecoveryActivity otherwise takes over Home