{
    "type": "article",
    "title": "The packages I kept on a Google TV",
    "canonical": "https://www.dealmobile.co.uk/writing/the-packages-i-kept-on-a-google-tv",
    "path": "/writing/the-packages-i-kept-on-a-google-tv",
    "url": "https://www.dealmobile.co.uk/writing/the-packages-i-kept-on-a-google-tv",
    "markdown": "https://www.dealmobile.co.uk/writing/the-packages-i-kept-on-a-google-tv.md",
    "json": "https://www.dealmobile.co.uk/writing/the-packages-i-kept-on-a-google-tv.json",
    "summary": "The other half of decluttering a TCL Google TV: a keep-list of 35 packages that debloat lists remove or that only look disposable, how each one got there, and the script that refuses to touch them.",
    "published": "2026-10-23T00:00:00+01:00",
    "modified": "2026-10-25T18:32:07+00:00",
    "image": {
        "url": "https://www.dealmobile.co.uk/sites/default/files/content/images/posts/the-packages-i-kept-on-a-google-tv/hero.png",
        "alt": "Ten of the keep-list’s packages, each with the reason it’s kept: the speech recogniser and MediaTek’s picture quality, both checked on the TV, then menus, Wi-Fi, volume and boot loops reported elsewhere, and the setup’s own apps."
    },
    "fields": {
        "image_dark": null
    },
    "tags": [
        {
            "name": "Android",
            "url": "https://www.dealmobile.co.uk/writing/tag/android",
            "json": "https://www.dealmobile.co.uk/writing/tag/android.json"
        },
        {
            "name": "TCL Google TV Tools",
            "url": "https://www.dealmobile.co.uk/writing/tag/tcl-google-tv-tools",
            "json": "https://www.dealmobile.co.uk/writing/tag/tcl-google-tv-tools.json"
        }
    ],
    "projects": [
        {
            "name": "TCL Google TV Tools",
            "url": "https://www.dealmobile.co.uk/projects/tcl-google-tv-tools",
            "json": "https://www.dealmobile.co.uk/projects/tcl-google-tv-tools.json"
        }
    ],
    "body": {
        "html": "<p><a href=\"/writing/decluttering-a-tcl-google-tv\">Decluttering our TCL Google TV</a> switched off 34 packages. The list of packages it wasn’t allowed to touch is one longer, at 35, and took more care. Debloat lists for these TVs are easy to find, and they contradict each other: a package one list removes as junk is, according to another, the one that runs the inputs menu. Every entry on the keep-list has its reason beside it, and the script that switches packages off refuses anything on it. This is how the list was made.</p>\n<h2 id=\"reading-before-running\">Reading before running</h2>\n<p>Fifteen repositories went into a folder for reading: debloat scripts, launchers, remote-control libraries and two old TCL projects, all cloned and none of them run. Three had package lists worth comparing.</p>\n<ul>\n<li>TCL-Google-TV-Debloat-Optimizer is a PowerShell script for TCL Google TVs. It uninstalls rather than disables.</li>\n<li>tv-vibehack is a Google TV clean-up driven by an AI agent, built around the “Clean Your TV” prompt on tv.cobanov.dev: disable in batches, keep a restore script, and never touch the inputs, Wi-Fi, the remote, Play services or the keyboard.</li>\n<li>Universal Android Debloater Next Generation, or UAD-NG, is a phone debloater, but it rates each package from Recommended to Unsafe with a reason, and much of Android is the same on a TV.</li>\n</ul>\n<p>Most of the TCL-specific advice comes from small projects or a single report. None of it was taken as true until it had been checked on this TV, and anything that couldn’t be checked safely went on the keep-list instead.</p>\n<h2 id=\"where-they-disagree\">Where they disagree</h2>\n<p>The TCL script removes <code>com.tcl.suspension</code> and <code>com.tcl.ttvs</code>. The cobanov prompt says the first is the Inputs menu and the second is the update menu. Testing either meant risking the HDMI inputs on a TV we use most evenings, so both stayed.</p>\n<p>The TCL script also removes <code>com.google.android.tts</code>, which sounds like text-to-speech and nothing more. On this TV it’s the speech recogniser, so removing it would have stopped the voice button:</p>\n<pre><code>$ adb shell settings get secure voice_recognition_service\ncom.google.android.tts/com.google.android.apps.speech.tts.googletts.service.GoogleTTSRecognitionService\n</code></pre>\n<p>It removes <code>com.google.android.tungsten.setupwraith</code> too, which UAD-NG says breaks volume control on Sony’s Google TVs, and the print spooler, the HTML viewer and the contacts and calendar providers, which UAD-NG links to a broken Settings menu and boot loops. tv-vibehack’s example for an Acer TV disables <code>com.android.tv.frameworkpackagestubs</code>. UAD-NG rates that one Expert: it answers when an app opens a link that nothing else handles, and some apps crash without it. One blog reports that uninstalling every package with TCL in its name left a TV that wouldn’t boot, or factory reset properly.</p>\n<h2 id=\"checking-on-the-tv\">Checking on the TV</h2>\n<p>Some claims can be checked without changing anything. A setting such as <code>voice_recognition_service</code> names the package behind a feature. <code>dumpsys activity services</code> shows what a package is running, and <code>dumpsys package</code> shows whether the system keeps it alive. That’s how <code>com.mediatek.backgrounddetection</code>, which sounds like something to switch off, turned out to be a persistent system app running <code>AipqService</code>, MediaTek’s AI picture quality, at about 65 MB:</p>\n<pre><code class=\"language-bash\">adb shell dumpsys activity services com.mediatek.backgrounddetection | grep ServiceRecord\nadb shell dumpsys package com.mediatek.backgrounddetection | grep pkgFlags\n</code></pre>\n<p>The reports of boot loops can’t be checked that way. <code>com.android.sdksandbox</code> and <code>com.android.location.fused</code> are each said to stop a TV booting, and disabling the stock launcher on Android 14 is said to leave a black screen. Finding out means risking a factory reset, which would undo everything else as well. Two TCL packages, <code>com.tcl.providers.config</code> and <code>com.tcl.initsetup</code>, are reported to drop the Wi-Fi when disabled, and ADB runs over the Wi-Fi here, so that change would also cut off the way to undo it. All of them went on the list untested, with the source of the claim beside them.</p>\n<h2 id=\"the-ones-that-only-matter-here\">The ones that only matter here</h2>\n<p>Some entries aren’t about what TCL ships. Projectivy Launcher and Key Mapper are on the list because the home screen and the remapped Disney+ button depend on them. <code>com.tcl.guard</code>, TCL’s Safety Guard, sounds disposable, but it owns the per-app Auto Launch setting behind the <code>AUTO_START</code> permission those two need to survive a restart. <code>com.tcl.useragreement</code> holds TCL’s terms, the Freeview Play agreement among them. <code>com.google.android.tv.remote.service</code> is what a phone’s TV remote talks to.</p>\n<p>That leaves the keep-list as a mix of three kinds of entry: packages checked on this TV, claims from elsewhere taken on trust, and things this particular setup needs. The comments say which is which.</p>\n<h2 id=\"how-the-script-uses-it\">How the script uses it</h2>\n<p>The batch script reads the keep-list as exact package names and checks every entry in a batch against it before disabling anything:</p>\n<pre><code class=\"language-bash\">if grep -qxF \"$p\" &lt;&lt;&lt;\"$keep\"; then echo \"REFUSED  $p (on keep-list)\"; continue; fi\n</code></pre>\n<p>Given a batch made of the packages other lists remove, it changes nothing:</p>\n<figure class=\"shot shot--prose\"><img class=\"theme-img theme-img--dark\" src=\"/sites/default/files/styles/almanac_shot/public/content/images/posts/the-packages-i-kept-on-a-google-tv/refused.png.webp?itok=OLffwCUT\" srcset=\"/sites/default/files/styles/almanac_shot_md/public/content/images/posts/the-packages-i-kept-on-a-google-tv/refused.png.webp?itok=lrqaUCUc 1200w, /sites/default/files/styles/almanac_shot/public/content/images/posts/the-packages-i-kept-on-a-google-tv/refused.png.webp?itok=OLffwCUT 2400w\" sizes=\"(width &gt;= 39em) 37rem, calc(100vw - 2rem)\" alt=\"The batch script applying a file of six packages, com.google.android.tts, setupwraith, frameworkpackagestubs, com.tcl.suspension, com.tcl.ttvs and com.android.sdksandbox, and printing REFUSED for each one because it’s on the keep-list.\" width=\"2400\" height=\"679\" loading=\"lazy\" decoding=\"async\"><img class=\"theme-img theme-img--light\" src=\"/sites/default/files/styles/almanac_shot/public/content/images/posts/the-packages-i-kept-on-a-google-tv/refused-light.png.webp?itok=vm_K1V_-\" srcset=\"/sites/default/files/styles/almanac_shot_md/public/content/images/posts/the-packages-i-kept-on-a-google-tv/refused-light.png.webp?itok=gnfGqKdH 1200w, /sites/default/files/styles/almanac_shot/public/content/images/posts/the-packages-i-kept-on-a-google-tv/refused-light.png.webp?itok=vm_K1V_- 2400w\" sizes=\"(width &gt;= 39em) 37rem, calc(100vw - 2rem)\" alt=\"The batch script applying a file of six packages, com.google.android.tts, setupwraith, frameworkpackagestubs, com.tcl.suspension, com.tcl.ttvs and com.android.sdksandbox, and printing REFUSED for each one because it’s on the keep-list.\" width=\"2400\" height=\"679\" loading=\"lazy\" decoding=\"async\"><figcaption>Six packages other lists remove, and six refusals. Nothing on the TV changed.</figcaption></figure>\n<p>The health check reads the list too. <code>tv-status.sh</code> fails if anything on it is disabled, which catches a package switched off by hand, outside the script.</p>\n<h2 id=\"what-it-misses\">What it misses</h2>\n<p>The keep-list protects the TV from my own batches, not from TCL. An update could rename a package, or move a feature into one that isn’t listed. The untested entries are the weak part: some of the packages kept because of a boot-loop report may be harmless on this model, and the list can’t say which. And it’s for one TV, a 65C6K on Android 14. On another model it’s a place to start, not an answer.</p>\n<h2 id=\"using-it\">Using it</h2>\n<p>The list is <code>config/keep-list.txt</code> in the <a href=\"https://github.com/tomgould/tcl-google-tv-tools\">repository</a>, one package per line with its reason as a comment. To see whether anything on it is disabled on your own TV, run the health check, or compare it by hand:</p>\n<pre><code class=\"language-bash\">adb shell pm list packages -d | sed 's/^package://' &gt; disabled.txt\ngrep -vE '^\\s*(#|$)' config/keep-list.txt | awk '{print $1}' | grep -xFf disabled.txt\n</code></pre>\n<p>No output means nothing on the list is switched off. Before experimenting with a package you’re unsure of, add it to the list first, and take it off again once you know.</p>"
    },
    "markdown_text": "---\ntitle: 'The packages I kept on a Google TV'\ncanonical: 'https://www.dealmobile.co.uk/writing/the-packages-i-kept-on-a-google-tv'\nurl: 'https://www.dealmobile.co.uk/writing/the-packages-i-kept-on-a-google-tv'\ntype: Post\npublished: '2026-10-23'\nsummary: 'The other half of decluttering a TCL Google TV: a keep-list of 35 packages that debloat lists remove or that only look disposable, how each one got there, and the script that refuses to touch them.'\n---\n\n# The packages I kept on a Google TV\n\nPublished 2026-10-23\n\n![Ten of the keep-list’s packages, each with the reason it’s kept: the speech recogniser and MediaTek’s picture quality, both checked on the TV, then menus, Wi-Fi, volume and boot loops reported elsewhere, and the setup’s own apps.](https://www.dealmobile.co.uk/sites/default/files/styles/almanac_shot_md/public/content/images/posts/the-packages-i-kept-on-a-google-tv/hero.png.webp?itok=v1TmoAv9)\n\n[Decluttering our TCL Google TV](https://www.dealmobile.co.uk/writing/decluttering-a-tcl-google-tv.md) switched off 34 packages. The list of packages it wasn’t allowed to touch is one longer, at 35, and took more care. Debloat lists for these TVs are easy to find, and they contradict each other: a package one list removes as junk is, according to another, the one that runs the inputs menu. Every entry on the keep-list has its reason beside it, and the script that switches packages off refuses anything on it. This is how the list was made.\n\n## Reading before running\n\nFifteen repositories went into a folder for reading: debloat scripts, launchers, remote-control libraries and two old TCL projects, all cloned and none of them run. Three had package lists worth comparing.\n\n- TCL-Google-TV-Debloat-Optimizer is a PowerShell script for TCL Google TVs. It uninstalls rather than disables.\n- tv-vibehack is a Google TV clean-up driven by an AI agent, built around the “Clean Your TV” prompt on tv.cobanov.dev: disable in batches, keep a restore script, and never touch the inputs, Wi-Fi, the remote, Play services or the keyboard.\n- Universal Android Debloater Next Generation, or UAD-NG, is a phone debloater, but it rates each package from Recommended to Unsafe with a reason, and much of Android is the same on a TV.\n\nMost of the TCL-specific advice comes from small projects or a single report. None of it was taken as true until it had been checked on this TV, and anything that couldn’t be checked safely went on the keep-list instead.\n\n## Where they disagree\n\nThe TCL script removes `com.tcl.suspension` and `com.tcl.ttvs`. The cobanov prompt says the first is the Inputs menu and the second is the update menu. Testing either meant risking the HDMI inputs on a TV we use most evenings, so both stayed.\n\nThe TCL script also removes `com.google.android.tts`, which sounds like text-to-speech and nothing more. On this TV it’s the speech recogniser, so removing it would have stopped the voice button:\n\n```\n$ adb shell settings get secure voice_recognition_service\ncom.google.android.tts/com.google.android.apps.speech.tts.googletts.service.GoogleTTSRecognitionService\n\n```\n\nIt removes `com.google.android.tungsten.setupwraith` too, which UAD-NG says breaks volume control on Sony’s Google TVs, and the print spooler, the HTML viewer and the contacts and calendar providers, which UAD-NG links to a broken Settings menu and boot loops. tv-vibehack’s example for an Acer TV disables `com.android.tv.frameworkpackagestubs`. UAD-NG rates that one Expert: it answers when an app opens a link that nothing else handles, and some apps crash without it. One blog reports that uninstalling every package with TCL in its name left a TV that wouldn’t boot, or factory reset properly.\n\n## Checking on the TV\n\nSome claims can be checked without changing anything. A setting such as `voice_recognition_service` names the package behind a feature. `dumpsys activity services` shows what a package is running, and `dumpsys package` shows whether the system keeps it alive. That’s how `com.mediatek.backgrounddetection`, which sounds like something to switch off, turned out to be a persistent system app running `AipqService`, MediaTek’s AI picture quality, at about 65 MB:\n\n```bash\nadb shell dumpsys activity services com.mediatek.backgrounddetection | grep ServiceRecord\nadb shell dumpsys package com.mediatek.backgrounddetection | grep pkgFlags\n\n```\n\nThe reports of boot loops can’t be checked that way. `com.android.sdksandbox` and `com.android.location.fused` are each said to stop a TV booting, and disabling the stock launcher on Android 14 is said to leave a black screen. Finding out means risking a factory reset, which would undo everything else as well. Two TCL packages, `com.tcl.providers.config` and `com.tcl.initsetup`, are reported to drop the Wi-Fi when disabled, and ADB runs over the Wi-Fi here, so that change would also cut off the way to undo it. All of them went on the list untested, with the source of the claim beside them.\n\n## The ones that only matter here\n\nSome entries aren’t about what TCL ships. Projectivy Launcher and Key Mapper are on the list because the home screen and the remapped Disney+ button depend on them. `com.tcl.guard`, TCL’s Safety Guard, sounds disposable, but it owns the per-app Auto Launch setting behind the `AUTO_START` permission those two need to survive a restart. `com.tcl.useragreement` holds TCL’s terms, the Freeview Play agreement among them. `com.google.android.tv.remote.service` is what a phone’s TV remote talks to.\n\nThat leaves the keep-list as a mix of three kinds of entry: packages checked on this TV, claims from elsewhere taken on trust, and things this particular setup needs. The comments say which is which.\n\n## How the script uses it\n\nThe batch script reads the keep-list as exact package names and checks every entry in a batch against it before disabling anything:\n\n```bash\nif grep -qxF \"$p\" <<<\"$keep\"; then echo \"REFUSED  $p (on keep-list)\"; continue; fi\n\n```\n\nGiven a batch made of the packages other lists remove, it changes nothing:\n\n![The batch script applying a file of six packages, com.google.android.tts, setupwraith, frameworkpackagestubs, com.tcl.suspension, com.tcl.ttvs and com.android.sdksandbox, and printing REFUSED for each one because it’s on the keep-list.](https://www.dealmobile.co.uk/sites/default/files/styles/almanac_shot/public/content/images/posts/the-packages-i-kept-on-a-google-tv/refused-light.png.webp?itok=vm_K1V_-)\n\n*Six packages other lists remove, and six refusals. Nothing on the TV changed.*\n\nThe health check reads the list too. `tv-status.sh` fails if anything on it is disabled, which catches a package switched off by hand, outside the script.\n\n## What it misses\n\nThe keep-list protects the TV from my own batches, not from TCL. An update could rename a package, or move a feature into one that isn’t listed. The untested entries are the weak part: some of the packages kept because of a boot-loop report may be harmless on this model, and the list can’t say which. And it’s for one TV, a 65C6K on Android 14. On another model it’s a place to start, not an answer.\n\n## Using it\n\nThe list is `config/keep-list.txt` in the [repository](https://github.com/tomgould/tcl-google-tv-tools), one package per line with its reason as a comment. To see whether anything on it is disabled on your own TV, run the health check, or compare it by hand:\n\n```bash\nadb shell pm list packages -d | sed 's/^package://' > disabled.txt\ngrep -vE '^\\s*(#|$)' config/keep-list.txt | awk '{print $1}' | grep -xFf disabled.txt\n\n```\n\nNo output means nothing on the list is switched off. Before experimenting with a package you’re unsure of, add it to the list first, and take it off again once you know.\n\n- **Projects:** [TCL Google TV Tools](https://www.dealmobile.co.uk/projects/tcl-google-tv-tools.md)\n- **Tags:** [Android](https://www.dealmobile.co.uk/writing/tag/android.md), [TCL Google TV Tools](https://www.dealmobile.co.uk/writing/tag/tcl-google-tv-tools.md)\n\n---\n\nIndex of this site: [llms.txt](https://www.dealmobile.co.uk/llms.txt)\n"
}