# TCL 43S5K and 32V5C, India (device G13, product G13_2K_GB, model "Smart TV"), Google TV 14 (SDK 34), # build UKN2.241110.001 AU10, security patch 2025-12-01. The 43S5K reports MediaTek MT9221 and the # 32V5C reports MT5867 (both ro.board.platform mt5867); about 1 GB RAM (954 MB, low_ram=true), 32-bit # only (armeabi-v7a). # Unlike the G08 TCL Google TVs, Live TV and HDMI are MediaTek's com.mediatek.wwtv.tvcenter, not com.tcl.tv. # # A TCL 40" 2K QHD Google TV (V5C series), same device/product on a newer firmware sub-build # (UKN2.241110.001 AU13, security patch 2026-06-01): the debloat packages below all applied cleanly and reboot-checked (storage 66%->53% # after also running `cmd package trim-caches`). com.mediatek.MtkDemo (MediaTek's demo app, not in # this unit's build) was also disabled there with no issue. # # The launcher half now works on the AU13 unit too, confirming it was never an AU13-specific # regression: the first two attempts skipped Batch 3 (setupwraith stayed enabled) and both landed on # its RecoveryActivity, exactly as this list's own Batch 3 note predicts. Redone with setupwraith # disabled first (Wi-Fi forgotten/re-joined, as below), then the same build-and-install.sh sequence - # reboot-checked, Home came back on launcher/ cleanly (home splash to usable Home in ~10s, vs. hanging # indefinitely on the attempts that skipped setupwraith). # # On the AU13 unit, settings_key_keycodes=[83] (the known quirk below) restored the gear/Settings # button as expected. But fixing it costs the same thing noted for the G09 unit elsewhere in this repo: # once HomeKeyService is bound at all (HOME_KEY_SERVICE=1), long-pressing volume steps once instead of # ramping - confirmed here too, and confirmed by logcat to be unfixable from app code on this firmware: # `interceptKeyBeforeQueueing`/`interceptKeyBeforeDispatching` (WindowManager) handle volume directly, # with zero trace of AccessibilityInputFilter or this app anywhere near the event. Volume keys never # reach any accessibility service's onKeyEvent on this unit, so no app-side remap or synthesized repeat # can restore ramping without root. All-or-nothing, same as the G09 case; this one chose the gear button. # # Apply: TV_HOST= tools/disable.sh examples/tcl-43s5k/debloat.txt # Undo: TV_HOST= tools/restore.sh examples/tcl-43s5k/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. Live TV / HDMI app: com.mediatek.wwtv.tvcenter. # Keep: com.mediatek.wwtv.tvcenter, com.mediatek.tvinput, com.mediatek.tv.service, com.tcl.partnercustomizer, com.tcl.suspension # (source panel / Input button), com.tcl.keyhelp (virtual keys), com.tcl.useragreement, com.tcl.factory.view, # mediatek.factorymenu.ui, com.mediatek.wwtv.setupwizard, com.google.android.tv.remote.service. # Live TV/HDMI safety (both models): keep com.mediatek.wwtv.tvcenter; it also plays HDMI, so disabling it # breaks both. Keep com.mediatek.tvinput, com.mediatek.tv.service and com.tcl.suspension as well. # On G13/AU10, com.tcl.partnercustomizer owns the tvlauncher.widget provider used by the persistent # com.mediatek.tv.service. Keep it enabled: a related MediaTek build repeatedly crashed the service after # that provider was removed (#2138). The G13 provider owner was verified, but the crash was not reproduced # on this TV; the rest of the list was applied and reboot-checked with partnercustomizer still enabled. # Earlier 43S5K, AU07 and AU13 reports disabled it without a reported crash; those historical runs do not # establish that removing this provider is safe on every G13 build after a reboot. # # com.tcl.ttvs on this firmware is BOTH TCL's analytics (bi.core.BIService, identifier, trackdata) AND # TCL's firmware/app updater (versionUpdateApp.core.SystemUpdateService). Disabling it stops TCL # firmware updates until it is enabled again, so it is commented out below; uncomment it to trade # updates for less tracking. # # The saved Wi-Fi network was created by com.google.android.tungsten.setupwraith on the 43S5K (cname= in # dumpsys wifi), so forget and re-join it in Settings before setupwraith is disabled there. On the 32V5C # the saved network survived disabling setupwraith without forgetting and re-joining; check dumpsys wifi / # the network owner on another unit before copying that step. # # Applied in four batches on 2026-10-20 with a screenshot after each and lived with for an afternoon so far # (shorter than CONTRIBUTING.md asks; I'll report back if anything breaks). Since then: two power cuts and a # reboot, Home came back on launcher/ each time; Wi-Fi, the remote's Input key (TCL's source panel), the # launcher's Inputs menu (HDMI 1, HDMI 2, Composite, Live TV), YouTube, Netflix and JioHotstar (with AdGuard # Private DNS) all fine. launcherx was disabled by launcher/build-and-install.sh after the new Home ran. # # 32V5C variant (32-inch V5C, MT5867, 954 MB): applied and reboot-checked; package state was re-checked on # 2026-10-22, and the owner reports several days of use. Home and ClockDream survived a reboot. The nine # entries verified on this unit (exact match with pm list packages -d) are: # com.tcl.messagebox # com.tcl.logkit # android.autoinstalls.config.google.gtvpai # com.google.android.partnersetup # com.tcl.browser # com.google.android.feedback # com.android.tv.feedbackconsent # com.google.android.tungsten.setupwraith # com.google.android.apps.tv.dreamx # The three entries marked [43S5K ONLY] below were not disabled on the 32V5C. Comment them out before # applying this file to a 32V5C; they remain part of the tested 43S5K set. # # Another G13 unit on AU10 (G13_2K_GB, UKN2.241110.001 AU10, mt5867, 954 MB). Status: applied 2026-10-27 # with tools/disable.sh in four batches, reboot-checked the same day, in use for two days so far. # - Disabled: messagebox, logkit, partnersetup, browser, feedback, feedbackconsent, dreamx, setupwraith, # then launcherx through launcher/build-and-install.sh. gtvpai came last: disable.sh skips it # (no readable permission block), so it was disabled with TVINPUT_ALLOW=1 after HDMI and Live TV were # checked after the reboot. com.tcl.ttvs was also disabled by the owner's choice (it stays commented # out here). # - Kept: com.tcl.partnercustomizer (#2138), katniss, Play Games and Cast. After the reboot the TV booted # straight into the new Home, every disabled package stayed disabled, com.mediatek.tv.service kept one # PID and `logcat -b crash` was empty. # - com.mediatek.MtkDemo is installed on this AU10 unit as well. disable.sh skips it because it holds # TV_INPUT_HARDWARE, and it was left enabled. # - The saved Wi-Fi network belonged to setupwraith (cname= in dumpsys wifi). After forgetting and # re-joining it in Settings, dumpsys wifi still showed the same network id with cname=setupwraith, and # that happened twice. The way through was switching to another saved network that already belonged # to android.uid.system, then FORCE_SETUPWRAITH=1. That deleted only the setupwraith-owned entry, and # the TV stayed online. Check cname= again after re-joining before you disable setupwraith. # - The owner reports that the remote's Input key, app buttons, settings (gear) button and mic all # worked after launcherx was off, with no key helper enabled. HDMI and Live TV through Inputs also # worked. # # Brazilian unit (G13, G13_2K_GB, MediaTek MT9221, 954 MB, build UKN2.241110.001 AU07, security patch # 2025-06-01, locale pt-BR; the commercial model was not read): every active entry below was applied in four # batches on 2026-10-24, with a screenshot after each, and checked after a reboot. The two Brazilian partner # apps at the end were disabled too; they stay commented here because the Indian units do not ship them. Live # TV and HDMI are com.mediatek.wwtv.tvcenter here as well; no Ginga package is installed. The network in use belonged to android.uid.system, but an unused # network saved during setup belonged to setupwraith, so tools/disable.sh skipped setupwraith; it was # disabled with FORCE_SETUPWRAITH=1 after checking the owners, which deleted only the unused network. Home # on this unit is the CleanYourTV UI fork from SHOWCASE.md, not launcher/, and its install script disabled # launcherx. After the reboot: Home came back on it, Wi-Fi reconnected, and MemAvailable was 385 MB # (295 MB before the list). `input keyevent 83` did nothing once launcherx was off (simulated, not a press # on the remote). # # Indonesian unit: TCL 32V51C, 32" (G13, G13_2K_GB, MediaTek mt5867, 954 MB, build UKN2.241110.001 AU13, # security patch 2026-06-01, bought in Indonesia). Applied in five batches on 2026-10-27 with a screenshot after # each, and checked after two reboots. Home came back on launcher/ both times, Wi-Fi reconnected, and YouTube # and Netflix played. Three findings on this unit: # - tools/disable.sh skips two active entries of this list here, so the Apply line alone leaves them enabled. # com.mediatek.MtkDemo requests TV_INPUT_HARDWARE, which the input-driver check (#321) refuses, although # `pm query-services --components -a android.media.tv.TvInputService` does not list it. It was kept enabled # here because no HDMI device was at hand to check the inputs afterwards. And # android.autoinstalls.config.google.gtvpai shows no permission block in dumpsys (it is a stub with one # DummyReceiver), so the same check cannot read it; it went with TVINPUT_ALLOW=1 on a one-line list. # - The network in use belonged to android.uid.system, and an unused network saved during setup belonged to # setupwraith, as on the Brazilian unit: FORCE_SETUPWRAITH=1 deleted only the unused one. # - TGuard (com.tcl.guard) and a store demo (fusion.android.tv.demo) ship enabled here and were disabled; # they are listed, commented, at the end. # # Known quirks on this firmware: # - The remote's gear button sends keycode 83 (KEYCODE_NOTIFICATION, scancode 561), which only launcherx # handled: set settings_key_keycodes to [83] (config.xml or a theme) so it opens Settings again. # - On both models, launcherx is disabled only after CleanYourTV owns Home; build-and-install does it, # and restore.sh needs launcherx as its argument. # - HomeKeyService, used for the gear button, can stop volume long-press from repeating on some TCL # Google TV builds: holding volume then steps once. Set key_filter=false to restore the repeat and # lose the remapped keys, or leave HomeKeyService off. Not measured on the 32V5C; see # docs/TROUBLESHOOTING.md. # - With katniss off the mic button does nothing; leave it enabled if you use voice. # - Usage statistics restart empty after a power cut (they are written to disk only now and then). # - Without HomeKeyService the gear does nothing, so Settings is reached through Home, and on this 1 GB set # that costs the app: on the 32V51C, YouTube was killed in the background (am_proc_died at oom_adj 900) # between Home and Settings and started cold afterwards. Opened over the app (the gear with # settings_key_keycodes [83]), Settings left YouTube's process alive, and Back returned to it. One test each. # The 32V51C took the gear and lost the volume ramp, as the AU13 unit above did. # - With setupwraith disabled, Settings > Privacy > Usage & diagnostics spins for ever: setupwraith serves # that page (com.google.android.settings.USAGE_AND_DIAGNOSTICS_SETTING). On the 32V51C it was enabled for # a minute to switch the toggle off, then disabled again with tools/disable.sh; Home stayed on launcher/. # Batch 1: TCL tracking, ads and auto-installs # com.tcl.ttvs # TCL analytics AND the firmware updater: kept on so updates arrive (#322) com.tcl.messagebox # TCL push messages and promos; carries an org.tcl.ttvs receiver com.tcl.logkit # log capture and upload # com.tcl.partnercustomizer # keep: tvlauncher.widget provider for com.mediatek.tv.service (#2138) android.autoinstalls.config.google.gtvpai # silently installs partner apps com.google.android.partnersetup # partner attribution (RLZ pings) # Batch 2: preloaded apps and extras not used on this unit com.tcl.browser # TCL "BrowseHere" browser and web-video portal com.google.android.play.games # [43S5K ONLY] com.google.android.feedback com.android.tv.feedbackconsent com.google.android.katniss # Google Assistant voice (mic button), about 63 MB; off by choice; [43S5K ONLY] com.mediatek.MtkDemo # MediaTek demo app; on one AU10 unit and the AU13 unit; disable.sh skips it (TV_INPUT_HARDWARE) # Batch 3: setup wizard. It claims HOME (RecoveryActivity, priority 1) once launcherx is gone. # 43S5K: disabled while launcherx still owned Home, and only after the Wi-Fi network was forgotten and # re-joined in Settings so that it belongs to android.uid.system instead of setupwraith. # 32V5C: the saved network survived disabling setupwraith without that step here; verify the owner on # another unit before copying. com.google.android.tungsten.setupwraith # Batch 4: after launcher/ is Home and the screensaver is switched to the launcher's clock: # tools/tv.py 'settings put secure screensaver_components com.gathin.tvhome/.ClockDream' # (it was unset, so the default com.google.android.apps.tv.dreamx/.service.Backdrop ran; # undo with 'settings delete secure screensaver_components') com.google.android.apps.tv.dreamx # Google TV Ambient mode screensaver (promos) # Brazilian unit only: partner apps preloaded on the Brazilian firmware, disabled there by choice. The Indian # units do not ship them, so they stay commented; uncomment them on a Brazilian unit if nobody uses them. # br.com.claro.now.smarttvclient # Claro TV+ # com.mercadolibre.android.mplay_tv # Mercado Play # Indonesian 32V51C only: present on that unit and disabled there; check they exist on yours first. # com.tcl.guard # TGuard: TCL cleaner and app manager, starts at boot (BootStartReceiver) # fusion.android.tv.demo # store demo player # Android 14's Privacy Sandbox (ad topics worked out on the TV), disabled on the 32V51C on 2026-10-27 after # the two reboot checks above, so not yet reboot-checked there; SmartTube, Netflix and YouTube opened after. # com.android.adservices.api # com.android.ondevicepersonalization.services # com.android.federatedcompute.services