# 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=<tv ip> tools/disable.sh examples/tcl-43s5k/debloat.txt
# Undo:    TV_HOST=<tv ip> 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
