{
  "description": "Browse aymeric's, an independent, searchable archive of readable snapshots from followed feeds, preserved in Git with aggr.",
  "feed_url": "https://aggr.aymericbeaumet.com/sources/cretezy.com/feed.json",
  "home_page_url": "https://aggr.aymericbeaumet.com/sources/cretezy.com/",
  "items": [
    {
      "authors": [
        {
          "name": "CraftThatBlock"
        }
      ],
      "content_html": "<p>I like Android TV. It runs every app I care about, it’s cheap on a <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://store.google.com/product/chromecast_google_tv\">Chromecast</a>, and it’s built into plenty of TVs. What I don’t like is ads.</p>\n<p>Google TV, the default interface on most Android TV devices, puts a large banner at the top of the home screen promoting whatever Google wants you to watch next. <strong>Apps only mode</strong> is supposed to strip the home screen down to your apps, but the banner stays. There’s no setting to change the launcher, and YouTube adds its own ads on top.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://cretezy.com/2026/ad-free-android-tv\" alt=\"The Google TV home screen in Apps only mode, still showing a large promotional banner\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture> <em>Before: Google TV, in Apps only mode</em></p>\n<p>After setting up a few devices around the house, I landed on a setup with no ads at all, and a nicer interface to go with it.</p>\n<h2>The setup</h2>\n<ul>\n<li><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://play.google.com/store/apps/details?id=com.spocky.projengmenu\"><strong>Projectivy Launcher</strong></a> replaces the home screen. It shows your apps and nothing else, and it’s very customizable.</li>\n<li><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/yuliskov/SmartTube\"><strong>SmartTube</strong></a> replaces YouTube, with no ads, a better interface, and <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://sponsor.ajay.app/\">SponsorBlock</a> built in. I still pay for YouTube Premium to support creators, but I vastly prefer SmartTube to the official app.</li>\n<li><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://play.google.com/store/apps/details?id=com.github.damontecres.wholphin\"><strong>Wholphin</strong></a> is my preferred <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://jellyfin.org/\">Jellyfin</a> client, for its UI and customization options.</li>\n<li><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://play.google.com/store/apps/details?id=flar2.homebutton\"><strong>Button Mapper</strong></a> remaps the remote, so the YouTube button opens SmartTube.</li>\n</ul>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://cretezy.com/2026/ad-free-android-tv\" alt=\"My Projectivy Launcher home screen, with just my apps\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture> <em>After: Projectivy Launcher</em></p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://cretezy.com/2026/ad-free-android-tv\" alt=\"The SmartTube home screen\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture> <em>SmartTube, blurred</em></p>\n<p>I’ve set this up on two Chromecasts with Google TV and a Hisense TV, and it should work on most Android TV devices.</p>\n<h2>Tutorial</h2>\n<blockquote>\n<p><strong>Tip:</strong> Hand this article to an AI agent (like <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://claude.com/claude-code\">Claude Code</a>) and have it guide you through the setup. It can run the ADB commands for you and adapt them to your device.</p>\n</blockquote>\n<p>Install the apps first. Projectivy, Wholphin, and Button Mapper are on the Play Store, and SmartTube can be sideloaded with <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://play.google.com/store/apps/details?id=com.esaba.downloader\">Downloader</a>. The rest needs <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://developer.android.com/tools/adb\">ADB</a>.</p>\n<h3>Connecting ADB</h3>\n<p>Enable Developer options by clicking <strong>Settings → System → About → Android TV OS build</strong> 7 times. Then, in <strong>Developer options</strong>, enable <strong>Wireless debugging</strong> and choose <strong>Pair device with pairing code</strong>:</p>\n<pre><code class=\"language-bash\"><span class=\"code-snippet\" data-language=\"Shell\"><span class=\"syntax-source syntax-shell syntax-bash\"><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">adb</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> pair <span class=\"syntax-keyword syntax-operator syntax-assignment syntax-redirection syntax-shell\">&lt;</span>ip<span class=\"syntax-keyword syntax-operator syntax-assignment syntax-redirection syntax-shell\">&gt;</span>:<span class=\"syntax-keyword syntax-operator syntax-assignment syntax-redirection syntax-shell\">&lt;</span>pairing-port<span class=\"syntax-keyword syntax-operator syntax-assignment syntax-redirection syntax-shell\">&gt;</span> <span class=\"syntax-keyword syntax-operator syntax-assignment syntax-redirection syntax-shell\">&lt;</span>code<span class=\"syntax-keyword syntax-operator syntax-assignment syntax-redirection syntax-shell\">&gt;</span>\n</span><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">adb</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> mdns services <span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"> Find the connect port</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span></span><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">adb</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> connect <span class=\"syntax-keyword syntax-operator syntax-assignment syntax-redirection syntax-shell\">&lt;</span>ip<span class=\"syntax-keyword syntax-operator syntax-assignment syntax-redirection syntax-shell\">&gt;</span>:<span class=\"syntax-keyword syntax-operator syntax-assignment syntax-redirection syntax-shell\">&lt;</span>connect-port<span class=\"syntax-keyword syntax-operator syntax-assignment syntax-redirection syntax-shell\">&gt;</span>\n</span>\n<span class=\"syntax-variable syntax-other syntax-readwrite syntax-assignment syntax-shell\">D</span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-shell\">=</span><span class=\"syntax-string syntax-unquoted syntax-shell\">&lt;ip&gt;:&lt;connect-port&gt;</span> <span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"> Used in the commands below</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span></span></span></code></pre>\n<p>Wireless debugging only works over Wi-Fi. If your device doesn’t have it (like my Hisense TV), enable <strong>USB debugging</strong> instead and connect with <code>adb connect &lt;ip&gt;:5555</code>.</p>\n<h3>Replacing the launcher</h3>\n<p>Projectivy has an <strong>Override current launcher</strong> option, but the stock home screen still flashes before it. Instead, disable the stock launcher and the package that restores it, then set Projectivy as the home app:</p>\n<pre><code class=\"language-bash\"><span class=\"code-snippet\" data-language=\"Shell\"><span class=\"syntax-source syntax-shell syntax-bash\"><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">adb</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"><span class=\"syntax-variable syntax-parameter syntax-option syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-parameter syntax-shell\"> -</span>s</span> <span class=\"syntax-meta syntax-group syntax-expansion syntax-parameter syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-variable syntax-shell\">$</span><span class=\"syntax-variable syntax-other syntax-readwrite syntax-shell\">D</span></span> shell pm disable-user<span class=\"syntax-variable syntax-parameter syntax-option syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-parameter syntax-shell\"> --</span>user</span> 0 com.google.android.apps.tv.launcherx</span>\n<span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">adb</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"><span class=\"syntax-variable syntax-parameter syntax-option syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-parameter syntax-shell\"> -</span>s</span> <span class=\"syntax-meta syntax-group syntax-expansion syntax-parameter syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-variable syntax-shell\">$</span><span class=\"syntax-variable syntax-other syntax-readwrite syntax-shell\">D</span></span> shell pm disable-user<span class=\"syntax-variable syntax-parameter syntax-option syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-parameter syntax-shell\"> --</span>user</span> 0 com.google.android.tungsten.setupwraith</span>\n<span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">adb</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"><span class=\"syntax-variable syntax-parameter syntax-option syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-parameter syntax-shell\"> -</span>s</span> <span class=\"syntax-meta syntax-group syntax-expansion syntax-parameter syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-variable syntax-shell\">$</span><span class=\"syntax-variable syntax-other syntax-readwrite syntax-shell\">D</span></span> shell cmd package set-home-activity com.spocky.projengmenu/.ui.home.MainActivity</span>\n</span></span></code></pre>\n<p>On a TV, the stock launcher may also handle switching HDMI inputs, so check that still works afterward.</p>\n<h3>Replacing YouTube</h3>\n<p>Once SmartTube is set up, remove the official app:</p>\n<pre><code class=\"language-bash\"><span class=\"code-snippet\" data-language=\"Shell\"><span class=\"syntax-source syntax-shell syntax-bash\"><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">adb</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"><span class=\"syntax-variable syntax-parameter syntax-option syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-parameter syntax-shell\"> -</span>s</span> <span class=\"syntax-meta syntax-group syntax-expansion syntax-parameter syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-variable syntax-shell\">$</span><span class=\"syntax-variable syntax-other syntax-readwrite syntax-shell\">D</span></span> uninstall com.google.android.youtube.tv</span>\n</span></span></code></pre>\n<p>If it’s built into the firmware (<code>DELETE_FAILED_INTERNAL_ERROR</code>), use <code>adb -s $D shell pm uninstall --user 0 com.google.android.youtube.tv</code> instead.</p>\n<h3>Remapping the remote</h3>\n<p>Button Mapper and Projectivy both need their accessibility services enabled. This replaces the whole list, so check the current one first with <code>adb -s $D shell settings get secure enabled_accessibility_services</code> and keep anything else you use:</p>\n<pre><code class=\"language-bash\"><span class=\"code-snippet\" data-language=\"Shell\"><span class=\"syntax-source syntax-shell syntax-bash\"><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">adb</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"><span class=\"syntax-variable syntax-parameter syntax-option syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-parameter syntax-shell\"> -</span>s</span> <span class=\"syntax-meta syntax-group syntax-expansion syntax-parameter syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-variable syntax-shell\">$</span><span class=\"syntax-variable syntax-other syntax-readwrite syntax-shell\">D</span></span> shell settings put secure enabled_accessibility_services <span class=\"syntax-punctuation syntax-separator syntax-continuation syntax-line syntax-shell\">\\\n</span>  <span class=\"syntax-string syntax-quoted syntax-single syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-shell\">&#39;</span>flar2.homebutton/a.i:com.spocky.projengmenu/com.spocky.projengmenu.services.ProjectivyAccessibilityService<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-shell\">&#39;</span></span></span>\n<span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">adb</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"><span class=\"syntax-variable syntax-parameter syntax-option syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-parameter syntax-shell\"> -</span>s</span> <span class=\"syntax-meta syntax-group syntax-expansion syntax-parameter syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-variable syntax-shell\">$</span><span class=\"syntax-variable syntax-other syntax-readwrite syntax-shell\">D</span></span> shell settings put secure accessibility_enabled 1</span>\n</span></span></code></pre>\n<blockquote>\n<p>Use Projectivy’s full component name, as above. With the short form (<code>com.spocky.projengmenu/.services...</code>), Projectivy shows <strong>Enabled: No</strong> even though the service is running.</p>\n</blockquote>\n<p>Android sometimes turns accessibility services off. Granting Button Mapper <code>WRITE_SECURE_SETTINGS</code> lets it turn itself back on, and exempting it from battery optimization keeps it responsive:</p>\n<pre><code class=\"language-bash\"><span class=\"code-snippet\" data-language=\"Shell\"><span class=\"syntax-source syntax-shell syntax-bash\"><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">adb</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"><span class=\"syntax-variable syntax-parameter syntax-option syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-parameter syntax-shell\"> -</span>s</span> <span class=\"syntax-meta syntax-group syntax-expansion syntax-parameter syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-variable syntax-shell\">$</span><span class=\"syntax-variable syntax-other syntax-readwrite syntax-shell\">D</span></span> shell pm grant flar2.homebutton android.permission.WRITE_SECURE_SETTINGS</span>\n<span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">adb</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"><span class=\"syntax-variable syntax-parameter syntax-option syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-parameter syntax-shell\"> -</span>s</span> <span class=\"syntax-meta syntax-group syntax-expansion syntax-parameter syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-variable syntax-shell\">$</span><span class=\"syntax-variable syntax-other syntax-readwrite syntax-shell\">D</span></span> shell dumpsys deviceidle whitelist +flar2.homebutton</span>\n</span></span></code></pre>\n<p>Then, in Button Mapper, map the YouTube button to SmartTube.</p>\n<h3>Cleaning up</h3>\n<p>While you’re connected, speed up animations and disable some Google apps you probably won’t use:</p>\n<pre><code class=\"language-bash\"><span class=\"code-snippet\" data-language=\"Shell\"><span class=\"syntax-source syntax-shell syntax-bash\"><span class=\"syntax-keyword syntax-control syntax-for syntax-shell\">for</span><span class=\"syntax-meta syntax-group syntax-for syntax-shell\"> k <span class=\"syntax-keyword syntax-control syntax-in syntax-shell\">in</span> window_animation_scale transition_animation_scale animator_duration_scale</span><span class=\"syntax-keyword syntax-operator syntax-logical syntax-continue syntax-shell\">;</span> <span class=\"syntax-keyword syntax-control syntax-do syntax-shell\">do</span>\n  <span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">adb</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"><span class=\"syntax-variable syntax-parameter syntax-option syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-parameter syntax-shell\"> -</span>s</span> <span class=\"syntax-meta syntax-group syntax-expansion syntax-parameter syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-variable syntax-shell\">$</span><span class=\"syntax-variable syntax-other syntax-readwrite syntax-shell\">D</span></span> shell settings put global <span class=\"syntax-meta syntax-group syntax-expansion syntax-parameter syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-variable syntax-shell\">$</span><span class=\"syntax-variable syntax-other syntax-readwrite syntax-shell\">k</span></span> 0.75</span>\n<span class=\"syntax-keyword syntax-control syntax-done syntax-shell\">done</span>\n\n<span class=\"syntax-keyword syntax-control syntax-for syntax-shell\">for</span><span class=\"syntax-meta syntax-group syntax-for syntax-shell\"> p <span class=\"syntax-keyword syntax-control syntax-in syntax-shell\">in</span> com.google.android.videos com.google.android.play.games <span class=\"syntax-punctuation syntax-separator syntax-continuation syntax-line syntax-shell\">\\\n</span>         com.google.android.feedback com.google.android.partnersetup</span><span class=\"syntax-keyword syntax-operator syntax-logical syntax-continue syntax-shell\">;</span> <span class=\"syntax-keyword syntax-control syntax-do syntax-shell\">do</span>\n  <span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">adb</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"><span class=\"syntax-variable syntax-parameter syntax-option syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-parameter syntax-shell\"> -</span>s</span> <span class=\"syntax-meta syntax-group syntax-expansion syntax-parameter syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-variable syntax-shell\">$</span><span class=\"syntax-variable syntax-other syntax-readwrite syntax-shell\">D</span></span> shell pm disable-user<span class=\"syntax-variable syntax-parameter syntax-option syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-parameter syntax-shell\"> --</span>user</span> 0 <span class=\"syntax-meta syntax-group syntax-expansion syntax-parameter syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-variable syntax-shell\">$</span><span class=\"syntax-variable syntax-other syntax-readwrite syntax-shell\">p</span></span></span>\n<span class=\"syntax-keyword syntax-control syntax-done syntax-shell\">done</span>\n</span></span></code></pre>\n<p>Everything can be undone with <code>adb shell pm enable &lt;package&gt;</code> (or <code>adb shell cmd package install-existing &lt;package&gt;</code> for YouTube). Turn Wireless debugging off when you’re done.</p>\n<p>That’s it: no banner, no ads, and a remote that opens the apps you actually use.</p>\n",
      "date_modified": "2026-10-19T22:32:37+00:00",
      "date_published": "2026-10-19T22:32:37+00:00",
      "external_url": "https://cretezy.com/2026/ad-free-android-tv",
      "id": "urn:aggr:item:bf352986dd5813c385420e52f1f92b72045d0eb3",
      "image": "https://cretezy.com/_astro/google-tv-home.DjqU9jQc_Z14wlzx.webp",
      "summary": "I like Android TV. It runs every app I care about, it’s cheap on a Chromecast, and it’s built into plenty of TVs. What I don’t like is ads. Google TV, the default interface on most Android TV devices, puts a large banner at the top of the…",
      "tags": [
        "news"
      ],
      "title": "An ad-free Android TV",
      "url": "https://aggr.aymericbeaumet.com/items/hnrss-org/2026-10-19-an-ad-free-android-tv/"
    }
  ],
  "language": "en",
  "title": "cretezy.com",
  "version": "https://jsonfeed.org/version/1.1"
}