# TCL 40S5400A (40" FHD, S5400 series), EU unit: device C06, product C06_2K_GB, model "Smart TV". # Android TV 11 (SDK 30), build AR2101, TCL software V8-T221T05-LF1V325, security patch 2025-03-05. # MediaTek MT9221 (ro.board.platform mt5867), 4x Cortex-A55, about 1 GB RAM (low_ram=true). # Likely a good starting point for other TCL S-series Android TV 11 sets on MT9221. # # Apply: TV_HOST= tools/disable.sh examples/tcl-40s5400a/debloat.txt # Undo: TV_HOST= tools/restore.sh examples/tcl-40s5400a/debloat.txt # Everything is DISABLED, not uninstalled. Comment out any line you want to keep. # # Stock launcher: com.google.android.tvlauncher (the restore.sh / build-and-install.sh default). # Live TV app: com.tcl.tv. It also plays HDMI: it is the only handler of the passthrough-input # VIEW intent the Inputs menu sends, and the remote's Input key opens its source picker. # Inputs come from com.tcl.tvinput (2x HDMI, AV, tuner). # # Applied in three rounds on 2026-10-18 and lived with for one day so far (shorter than # CONTRIBUTING.md asks; I'll report back if anything breaks). Rebooted after each round. # Checked after the full list: launcher/ comes up as Home after a reboot, YouTube and Netflix open, # switching to HDMI 2 (PS5) works, the remote's Input key opens the source picker. # Checked after the first two rounds: Disney+, picture settings, the firmware update check. # Not tested: casting from a phone (the Cast receiver is kept). # Memory, PSS: stock tvlauncher 64 MB + 15 MB swapped vs 41 to 46 MB for my build of launcher/ # (a few local changes); tvrecommendations about 20 MB, katniss about 52 MB (two processes). # # Second unit: Asia-Pacific (persist.tcl.client_type TCL-AP-MT9221-01), same product C06_2K_GB and # build AR2101, security patch 2024-02-05. The firmware update check reports "up to date" on this # region's server, so AP units may stay behind the EU unit above. Remote: BT_RC833_M4 (Bluetooth LE, # with mic). Applied on 2026-10-23 with the list below, except where noted; lived with until 2026-10-26. # - Voice from the Bluetooth remote needs com.google.android.tv.remote.service as well as katniss. # With remote.service disabled the mic button does nothing and logs nothing. Both re-enabled here. # - After katniss is re-enabled, the mic first opens the Assistant setup screen once; "Use # Assistant without signing in" is enough for voice search in YouTube. # - Here the saved Wi-Fi network belonged to setupwraith (dumpsys wifi | grep cname=), so it was # left enabled; disabling it would have dropped Wi-Fi and ADB. # # Vietnam unit, 2026-10-27 (@d0nj): same model "Smart TV", product C06_2K_GB and build # AR2101 / AR14, Android TV 11 (SDK 30), security patch 2022-01-05, mt5867, about 918 MB RAM. # One session, not a several-day test. Kept setupwraith: dumpsys wifi showed four saved-network # entries with cname=com.google.android.tungsten.setupwraith; disabling it would delete those # networks and disconnect Wi-Fi and ADB. Chromecast (mediashell), ttvs firmware updates, YouTube, # TV360 and VTVgo were kept. Google TTS was left enabled. Stan, Rakuten TV and TCL Alexa were # already disabled. The photo screensaver was switched to AOSP Colors before disabling backdrop # (command and undo below). # - Off by owner choice: voice (katniss), the remote-mic bridge (tv.remote.service), TalkBack and # all four TCL USB media apps, as in the labelled block below. The mic button is unused. # - Additional packages disabled on this unit are listed as commented choices at the end; they # do not change the EU/AP list's defaults. Remote buttons were not physically tested afterwards. # - After sync, a wait and one reboot, usercenter alone returned among the disabled packages. # Left enabled after that, rather than disabling it again at every boot. # - YouTube, Live TV and SmartTube opened; the TV input framework created an HDMI 1 session # (HW1413744128). HDMI screenshots were empty. Hardware inventory reported more HDMI IDs than # the registered input map, so those IDs are not evidence of extra physical ports. # - launcher/ became Home with stock tvlauncher disabled (mFocusedApp confirmed). The final # launcher configuration was not reboot-tested, and physical remote buttons remain unverified. # - Dock note: four columns, YouTube (com.google.android.youtube.tv), TV360 (com.viettel.tv360.tv), # VTVgo (vn.vtv.vtvgotv), SmartTube (org.smarttube.stable), left to right; live_tv_package=com.tcl.tv. # These are per-unit config.json/theme values, not shared launcher defaults. # # Brazil unit, 2026-10-28: same model "Smart TV", product C06_2K_GB and build AR2101 / AR13, # Android TV 11 (SDK 30), TCL software V8-T221T01-LF1V014 (persist.tcl.client_type TCL-LA-MT9221-01), # 1280x720 panel, about 922 MB RAM (low_ram=true). The settings menu calls the TCL layer "TV+ OS"; it is # this Android TV 11 build. One session of about an hour, not a several-day test. # - Applied the list above in three batches, with plain `pm disable-user --user 0`, plus TCL Alexa and # the Assistant stub (labelled block at the end). Kept by choice: Chromecast (mediashell), Prime Video, # ttvs. Voice, TalkBack/TTS, the photo screensaver and the four TCL USB players are off by choice. # - setupwraith was safe here: dumpsys wifi showed the saved networks under com.google.uid.shared, not # setupwraith, and Wi-Fi and ADB stayed up after disabling it. # - Reboot too soon and the state is lost: `adb reboot` a few seconds after the last batch brought that # whole batch back enabled. Disabled again, waited 60 s, rebooted: all of it stayed disabled. # - com.tcl.usercenter and com.tcl.smartalexa are switched back on at every boot, as on the # 32ES570F; both stay idle. # - MemAvailable: about 250 MB on the stock setup (TV running), about 320 MB after a reboot with the # list, about 370-380 MB after a reboot with launcher/ as Home. # - launcher/ became Home with stock tvlauncher disabled (resolve-activity and mFocusedApp) and stayed # Home after a reboot. Config: live_tv_package and hidden_apps com.tcl.tv, reduced_motion true (as on # the L40S66E, same MT9221). # - Checked by the owner: the physical remote on Home and switching to an HDMI input. Not tested yet: # streaming playback and casting from a phone. # - `adb exec-out screencap -p` wrote the firmware's "Init wrapper sys mutex successful" line into the # file instead of a PNG; `screencap -p /data/local/tmp/s.png` followed by `adb pull` works. # # Known quirks on this firmware: # - The stock launcher declares HOME priority 2, so `cmd package set-home-activity` alone does not # take Home while it is enabled (Home still opens it). Disabling it, as build-and-install.sh # does, is required. # - com.tcl.usercenter (TCL account) is switched back on by the system at every boot. It stays # idle, so it is left in the list. # - com.tcl.ttvs is NOT text-to-speech: its activities are versionUpdateApp SystemUpdateActivity and # NetworkUpdateActivity, i.e. the firmware updater. Keep it for OTA updates. # - After a reboot the system can switch to the last HDMI source on its own (com.tcl.tv started by # uid 1000 about 2 s after Home). Seen once; a PS5 on HDMI-CEC may be the trigger. Home brings # the launcher back. # - The photo screensaver (com.google.android.backdrop) used about 105 MB while running. Before # disabling it, switch to the AOSP one: # tools/tv.py 'settings put secure screensaver_components com.android.dreams.basic/.Colors' # (restore: com.google.android.backdrop/com.google.android.backdrop.Backdrop) # - screencap writes an empty file while an HDMI input is on screen. Press Home first. # # DO NOT DISABLE on this TV (kept and working): # com.tcl.tv # Live TV app, plays HDMI, source picker on the Input key # com.tcl.tvinput # TV input services for HDMI, AV and the tuner # com.tcl.ttvs # firmware updater (see quirks) # com.tcl.messagebox # carries a ttvs receiver (org.tcl.ttvs); kept to be safe # com.tcl.system.server # remote-key plumbing # com.tcl.tcl_bt_rcu_service # Bluetooth remote # com.tcl.autopair # Bluetooth remote auto-pairing # com.tcl.settings # picture/sound settings # com.tcl.dashboard # "TCL HOME" tile; kept, only hidden in the launcher config # com.tcl.suspension # Quick Panel; kept, not tested without it # com.android.location.fused # boot-looped a 43S5400A into recovery on V325 (#2803) # com.tcl.providers.config # reported to drop Wi-Fi on the 65C725; not tried here # com.tcl.keyhelp # remote-key help/virtual keys; kept # TCL account, promos and content com.tcl.usercenter # TCL account, re-enabled by the system at boot (idle) com.tcl.guard # TGuard cleaner/support com.tcl.partnercustomizer # promo rows on the stock home com.tcl.waterfall.overseas # TCL web-video portal com.tcl.esticker # store-demo sticker android.autoinstalls.config.tcl.device # partner-app auto installer config # Google extras com.google.android.feedback com.google.android.play.games com.google.android.videos # Play Movies com.google.android.youtube.tvmusic com.google.android.syncadapters.calendar com.google.android.tungsten.setupwraith # first-run wizard, setup already done; check it does not own the Wi-Fi first (header) # Stock home and its recommendation rows, replaced by launcher/ # com.google.android.tvlauncher # launcher/build-and-install.sh disables the stock launcher itself, after Home has moved com.google.android.tvrecommendations # Off by choice on this unit: comment out what you use com.google.android.katniss # Google search/voice, keep for the mic button com.google.android.tv.remote.service # phone-app remote AND the BT remote's mic bridge: re-enable with katniss for voice (tested, AP unit) com.google.android.tts # Google text-to-speech, keep for TalkBack com.google.android.marvin.talkback # TalkBack com.google.android.backdrop # photo screensaver, switch the screensaver first (quirks) com.tcl.ui_mediaCenter # USB media player, together with the next three com.tcl.audioplayer com.tcl.videoplayer com.tcl.imageplayer # com.google.android.apps.mediashell # Cast receiver: kept here for casting from a phone # Already disabled when this unit arrived; left as-is. # au.com.stan.and # Stan # com.amazon.amazonvideo.livingroom # Prime Video # tv.wuaki.apptv # Rakuten TV # com.tcl.smartalexa # TCL Alexa bridge # Additional choices on the Vietnam unit only; uncomment only if wanted on your TV. # com.tcl.copydatatotv # phone data-migration helper # com.tcl.t_solo # Bluetooth "listen alone" helper # com.tcl.dashboard # TCL HOME; kept on the EU/AP units above # com.tcl.suspension # Quick Panel; kept on the EU/AP units above # com.google.android.partnersetup # includes an RLZ ping receiver # Additional choices on the Brazil unit only; uncomment only if wanted on your TV. # com.google.android.tv.assistant # Assistant stub; disabled with katniss and tv.remote.service (voice off)