Philips · Android TV 11
Philips 50PUS8517/12 debloat list
The cleanyourtv list for the Philips 50PUS8517/12 disables 41 packages on Android TV 11: the manufacturer's telemetry, sponsored content rows and preloaded apps you never asked for, plus the stock launcher once the clean home screen is in place. It was tested on a real set by a cleanyourtv contributor.
41
packages disabled
Android TV 11
operating system
Debloat + launcher
what cleanyourtv does
About this Philips 50PUS8517/12 list
Header: Philips 50PUS8517/12 (50" 4K UHD LED, 3-sided Ambilight, P5 Picture Engine, 2022 model)
Android TV 11 (ro.build.version.release=11), firmware RTT2.211108.001, board PH1M_EA_9970A ro.product.model=2021_22_Philips_UHD_Android_TV ro.product.device=PH1M_EA_9970A Fingerprint: Philips/PH1M_EA_9970A/PH1M_EA_9970A:11/RTT2.211108.001/21029:user/release-keys TP Vision build: MediaTek MT5895, 2.67 GB RAM, armeabi-v7a userspace. Vendor packages use the org.droidtv prefix. Match on the BOARD and firmware, not on the model number. Philips/TP Vision ships one org.droidtv layer across a whole generation, so the x PUS85xx / PUS88xx sets of 2021-2022 on board PH1M_EA_9970A should carry the same package set; a different board or a Google TV (Android 12+) Philips will not. Check your own `pm list packages` against this file first — `tools/tv.py --probe` prints model, Android version and build. NOT the same platform as examples/philips-smart-4k-google-tv, which is a Skyworth-built India-market set on Google TV 14 with com.smartdevice/com.sky/com.tianci packages and no org.droidtv at all. Nothing from that file applies here and nothing here applies there. Stock launcher: com.google.android.tvlauncher (pass it to restore.sh, as above). Live TV app: org.droidtv.playtv App labels below were resolved by pulling each APK and reading it with `aapt dump badging`, not guessed from the package name. That matters on this firmware: org.droidtv.nettvapp4546 is MEGOGO, nettvapp4655 is Deezer, nettvapp5512 is Fishing TV, and org.droidtv.candeebug is labelled "DAC" and is the analytics uploader, not a debug tool. QUIRKS ON THIS FIRMWARE, in the order they will bite you: 1. pm disable-user persists to /data/system/users/0/package-restrictions.xml with a delay (~10 s on AOSP). If you run disable.sh and power-cycle the TV straight away, the changes are silently lost: packages come back as enabled=0 (DEFAULT). Wait, or run `pm list packages -d` and confirm your packages are listed before pulling the plug. 2. `adb reboot` over TCP hangs holding the dropped connection. Kill the adb server right after sending it and wait on port 5555 coming back instead of on the adb command. 3. The Android 11 shell cannot disable individual components of another app ("SecurityException: Shell cannot change component state") and cannot `pm hide` ("Neither user 2000 nor current process has android.permission.MANAGE_USERS"). So if a package refuses to stay disabled, the shell has no second lever. `pm suspend` does work and survives a reboot, but it does not stop services: an app that starts itself from its own boot receiver keeps running with suspended=true. 4. com.google.android.apps.mediashell (Chromecast built-in) could NOT be kept disabled on this firmware and is deliberately absent from the list below. It returns to enabled=1 about 35 s after every boot, reproducibly. pm disable-user, pm suspend, per-component disable and pm hide were all tried; the first is undone, the second does not stop it, the last two are refused by the platform. Left enabled, at a cost of about 37 MB. 5. A DISABLED PACKAGE CAN LEAVE A PERSISTENT PROCESS RETRYING FOREVER, AND pidof WILL NOT SHOW IT. org.droidtv.xtv is the persistent TV engine and has five outbound service bindings. Two of them, eum and aurora, were on the first version of this list, and BOTH leave xtv in a permanent retry loop when disabled. Neither is in the list above now; both are in the DO NOT DISABLE block below. org.droidtv.eum -- bound via CONTEXTUALHELP. About five retries per second, logged as xtvContextInterface ... connectCotextService - Service failed to connec i is null 51 of them in 10 seconds of an idle TV. This one also BREAKS A VISIBLE FUNCTION, and not the one you would guess: the Philips sources drawer opens and vanishes within a second, so HDMI inputs stop being reachable from the remote's SOURCES key. SourcesService logged a correct, complete source list every time and the drawer still died. org.droidtv.aurora -- about five retries per second too, logged as xtvService: xtvService handleConnectAurora at a steady 201 ms interval, 59 in 30 seconds of an idle TV. This one breaks nothing visible and costs little: xtv sits at 0.2% of one core while doing it. It is log noise plus a retry that can never succeed. Re-enabling it is free in practice -- aurora's process does not start at idle even when the package is enabled, so xtv only needed the package to be resolvable. `pm enable` on either took its counter to zero immediately, with no reboot. THE METHOD, which is the transferable part: a live PID proves the process exists, not that it is healthy. xtv held the same PID through all eleven batches while both loops ran. And do not grep for a string you already know -- that is how I missed the second loop for a day after fixing the first. Clear the log, wait 30 seconds on an idle TV, then group EVERYTHING by frequency and look at what repeats: adb shell logcat -c; sleep 30; adb shell logcat -d > idle.txt # then collapse digits and count: anything repeating several times a second is a loop On this set that takes an idle log from 130 lines per 30 s down to 50, and the 50 that remain are the firmware's own heartbeats. 6. The replacement launcher takes over on its own. Projectivy declares android.intent.category.HOME, so the moment com.google.android.tvlauncher is disabled the system resolves HOME to it — immediately, without a reboot and without enabling any accessibility service. Check with `cmd package resolve-activity --brief -a android.intent.action.MAIN -c android.intent.category.HOME` BEFORE disabling the stock launcher, and make sure your replacement is listed by `cmd package query-activities` for that intent. If it is not, you will be left without a home screen (see issue #90).
Before you run it: every package below is disabled, not uninstalled. Comment out (prefix with #) any line for an app you use. Never disable the Play Store, Play Services, the on-screen keyboard or the TV input services that play HDMI. Switch USB debugging off when you are done.
Packages the Philips 50PUS8517/12 list disables
TP Vision telemetry. org.droidtv.gel runs inside the candeebug process (android:process="org.droidtv.candeebug"), so disabling candeebug alone leaves a process with (3)
| Package | Note |
|---|---|
org.droidtv.candeebug | "DAC" analytics uploader: channel watched, resolution, HDMI-CEC devices, viewing times, Ambilight config; uploads to AWS Firehose/S3 and geolocates the public IP via ipinfo.io |
org.droidtv.gel | metrics collector sharing candeebug's process; no INTERNET permission of its own |
org.droidtv.usagelogger | boot stats, remote keypress counts, panel/eMMC telemetry forwarded to the above |
Philips content promos and the app gallery (12)
| Package | Note |
|---|---|
org.droidtv.nettvrecommender | "Top Picks" content promotion row |
org.droidtv.recommendation | its headless backend; disable the row above first or you get a live tile with no data source |
org.droidtv.nettv.market | "Smart TV Collection" app storefront |
org.droidtv.nettvapp1814 | ARTE |
org.droidtv.nettvapp4546 | MEGOGO |
org.droidtv.nettvapp4633 | alacarta RTVE |
org.droidtv.nettvapp4655 | Deezer |
org.droidtv.nettvapp4932 | Free Games by PlayWorks |
org.droidtv.nettvapp5326 | Toon Goggles |
org.droidtv.nettvapp5512 | Fishing TV |
org.droidtv.nettvapp20004410 | Couchplay Games |
org.droidtv.android.fitness | Fitness Buddy |
Philips features this owner does not use. Check each against your own setup (5)
| Package | Note |
|---|---|
org.droidtv.amazonalexa | Alexa bridge; live TV holds a binding into it, so test channel zapping and the EPG after disabling -- NOT exercised on this unit |
org.droidtv.dlna | DLNA/UPnP server and renderer; persistent + coreApp, yet disables cleanly and contentexplorer ("Media") still starts and keeps its PID. Its DLNA init is gated behind a broadcast dlna itself sends, so the USB source should be unaffected -- reasoned from the code, not tested here |
org.droidtv.ipcontrol | LAN control of volume, audio output, Ambilight on/off and ShopMode. NOTE: this is NOT the JointSpace API on ports 1925/1926 — that is served by org.droidtv.xtv, which must stay. Keep this if you drive the TV from Home Assistant |
org.droidtv.demome | "Demo me" retail demo mode, e-sticker and shop loop; bound at boot by org.droidtv.settings to clear demo clips before a firmware update, null-guarded |
org.droidtv.m7opapp | M7 satellite operator promo (Canal Digitaal, TV Vlaanderen, Skylink, HD Austria); keep if you use one of those |
Google telemetry and first-setup leftovers (5)
| Package | Note |
|---|---|
com.google.android.feedback | Market Feedback Agent |
com.google.android.partnersetup | partner referrer / attribution |
com.google.android.onetimeinitializer | runs once at first setup, nothing afterwards |
com.google.android.sss.authbridge | Second Screen Setup Auth Bridge (set-up-from-phone helper) |
com.google.android.syncadapters.calendar | Google Calendar sync; no calendar app is installed on this TV |
Google apps this owner does not use (5)
| Package | Note |
|---|---|
com.google.android.katniss | Assistant and voice search, ~101 MB across two processes. Kills the remote's mic button, "Hey Google", on-screen voice search and the mic icon inside YouTube and Play Store search. Settings and tvsystemui guard their calls into it, so nothing crashes |
com.google.android.play.games | — |
com.google.android.videos | Google TV / Play Movies |
com.google.android.youtube.tvmusic | YouTube Music |
com.google.android.marvin.talkback | TalkBack screen reader; keep if anyone needs it |
Preinstalled streaming apps. All of these sit in /data/app rather than on the system (9)
| Package | Note |
|---|---|
com.netflix.ninja | — |
com.amazon.amazonvideo.livingroom | Prime Video |
com.apple.atve.androidtv.appletv | — |
com.disney.disneyplus | — |
com.zeasn.whalelive | WhaleLive (Zeasn) ad-supported FAST channels |
com.boosteroidtv.streaming | Boosteroid cloud gaming |
com.witsoftware.ir.vodafonetv | Vodafone TV; runs headless, no icon |
tv.sweet.tvplayer | Sweet TV (Ukrainian IPTV) |
tv.wuaki.apptv | Rakuten TV |
Stock launcher and its content engine, replaced by launcher/ (or Projectivy). ORDER MATTERS: disable the launcher FIRST. com.google.android.tvlauncher holds a stable (1)
| Package | Note |
|---|---|
com.google.android.tvrecommendations | "Android TV Core Services" despite the name: recommendation rows, channels, notification panel |
Stock YouTube, replaced by SmartTube (ads and sponsor segments). 119 MB resident vs ~35 MB (1)
| Package | Note |
|---|---|
com.google.android.youtube.tv | — |
Apply the Philips 50PUS8517/12 debloat
Turn on Developer options on the TV (Settings → Device Preferences → About → press OK on Build seven times), switch on USB debugging and, if shown, Network or ADB debugging. Then, from a clone of the cleanyourtv repository on a computer on the same Wi-Fi:
export TV_HOST=192.168.1.50 # your TV's IP address
tools/venv/bin/python -I tools/tv.py --probe
tools/disable.sh examples/philips-50pus8517/debloat.txt Then build and install the clean launcher, which makes itself the default Home and rolls back if it fails:
TV_HOST=192.168.1.50 launcher/build-and-install.sh Prefer to let an assistant do it? Paste the cleanyourtv prompt into Claude Code with "Philips 50PUS8517/12" as the model; it reads this list, checks each package on your TV and asks before anything that depends on your preferences.
Restore the Philips 50PUS8517/12
TV_HOST=192.168.1.50 tools/restore.sh examples/philips-50pus8517/debloat.txt The restore script replays the state recorded before the change, so Home goes back to the launcher that owned it. More in the restore guide and the Android TV debloat guide.
Source: examples/philips-50pus8517/debloat.txt in the MIT-licensed cleanyourtv repository.