googletv blog post and remove meta
312
src/assets/blog/2025-03-11.md
Normal file
|
@ -0,0 +1,312 @@
|
||||||
|
---
|
||||||
|
name: How to unenshittificate your Google TV
|
||||||
|
date: 25-03-11T19:00:00-05:00
|
||||||
|
desc: Google sucks. I have a google tv. I dont want google on my tv. Go away.
|
||||||
|
---
|
||||||
|
|
||||||
|
In August 2024 I bought my first tv ever at Wallmart, a Pillips 7000 series 4K
|
||||||
|
Ultra HD LED Google TV. For only $280 I had a 4K tv that I could use to stream
|
||||||
|
content from my PS3, Wii, and my local media server. It's a bit sluggish running
|
||||||
|
a cheap 32-bit arm processor, but thats not my biggest problem with the tv. I
|
||||||
|
got sick of those damn ads.
|
||||||
|
|
||||||
|
### Those damn ads
|
||||||
|
|
||||||
|
Below is the promotional image for the tv I purchased from phillips. The biggest
|
||||||
|
thing on the screen is an Oppenheimer ad, taking up 50% of the screen real
|
||||||
|
estate. Below is "Top picks for you" which google puts in ads or
|
||||||
|
"recommendations" for movies/shows that promoters want me to watch. And finally
|
||||||
|
below that is a list of apps installed on the tv which contains a ton of preloaded
|
||||||
|
apps that you cannot remove from my tv. My tv came with Netflix, Prime Video,
|
||||||
|
Tubitv, and Univision none of which I use. But because I could not uninstall
|
||||||
|
these apps from my tv I was locked into them.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Even being a tech savy person I didn't realize what I was getting into when I
|
||||||
|
bought my tv. I personaly use Linux, Ad Block in my Firefox browser, and
|
||||||
|
heavly manage what software is running on the devices I own. When faced with my
|
||||||
|
tv I wanted to do the same. I wanted to strip away the ads, the recommendations,
|
||||||
|
the preinstalled applications, and make the tv truly mine. In this guide I am
|
||||||
|
documenting the process on how to do just this. But first I must quickly talk
|
||||||
|
about dumb tvs.
|
||||||
|
|
||||||
|
### Just use a dumb tv
|
||||||
|
|
||||||
|
The easy and commenly recommended solution to my problem is to just
|
||||||
|
|
||||||
|
> "Get a dumb tv! They dont have any preinstalled apps or ads, just your content."
|
||||||
|
|
||||||
|
It is true that dumb tvs would solve my problem, but the problem is that you
|
||||||
|
cannot but dumb tvs, or at least in retail. Back in the early 2000s all tvs were
|
||||||
|
dumb, I have a tv that is 720p with massive bezels that just shows content from
|
||||||
|
my console and computers but its 720p. I want a tv that is at least 1440p and
|
||||||
|
50in. I commenly have people over where I live and its a nice-to-have. The problem
|
||||||
|
is that dumb tvs that fit this criteria are not sold to consumers any more. It
|
||||||
|
is more profitable for OEMs to slap smart software on to their devices to get
|
||||||
|
monetary kickbacks from either Google, Roku, or Amazon. There are still dumb tvs
|
||||||
|
being sold to business but you should expect to pay a pretty penny for one.
|
||||||
|
Since they are made for businesses, and the manufacturer doesnt get kickbacks,
|
||||||
|
they cost a lot more. Getting a Dumb tv is not a solution for most people,
|
||||||
|
especially those who already bought an affordable smart tv from retail.
|
||||||
|
|
||||||
|
### The Guide
|
||||||
|
|
||||||
|
Ok so now that dumb tvs are out of the way, this is the plan on how you
|
||||||
|
"unenshittifiy" your Google/Android tv.
|
||||||
|
|
||||||
|
The core of this guide centers around that Google TVs run android, a mobile
|
||||||
|
linux based distribution. All android devices support a USB debugging feature
|
||||||
|
called adb (Android Debug Bridge) that allows the user to access higher
|
||||||
|
privileged settings then normal. With adb you can disable and partially uninstall
|
||||||
|
preloaded applications, change the user interface (called the launcher), and
|
||||||
|
sideload custom applications that is not provided in Androids "Google Play Store".
|
||||||
|
|
||||||
|
In an itemized list this guide will:
|
||||||
|
|
||||||
|
1. Replace the default launcher with [flauncher](https://github.com/CocoCR300/flauncher)
|
||||||
|
|
||||||
|
Flauncher is a launcher (default user interface) for Google TVs. It is simple
|
||||||
|
and just shows the instaleld apps on the tv, no ads, nothing else. I am using a
|
||||||
|
fork of flauncher that includes some fixes and improvements, but you can also
|
||||||
|
just use the original [here](https://gitlab.com/flauncher/flauncher).
|
||||||
|
|
||||||
|
2. Removing all preinstalled applications
|
||||||
|
|
||||||
|
No more Netflix or Amazon Prime Video if you dont use them!
|
||||||
|
|
||||||
|
3. Removing everything Google
|
||||||
|
|
||||||
|
Google likes to inject their services into everything they use spying on you
|
||||||
|
in the process. In the process we will add apps that replace some of the
|
||||||
|
functionality lost when removing these apps.
|
||||||
|
|
||||||
|
#### ⚠️ Warning ⚠️
|
||||||
|
|
||||||
|
Before you start or do anything listed in this guide or any other guide be warned
|
||||||
|
that you are completing these operations AT YOUR OWN RISK with FULL LIABALITY if
|
||||||
|
anything is to go wrong. It is unlikely that anything listed here should result
|
||||||
|
in bricking your tv is is possible. I will also note that many google tvs can
|
||||||
|
still be factory reset to fix anything if the tv does break, but you should
|
||||||
|
still proceed with caution.
|
||||||
|
|
||||||
|
#### 1. The user interface
|
||||||
|
|
||||||
|
The image posted in the opening to this blog shows the default user interface
|
||||||
|
for Google TV and as described it sucks. In Android everything is an app including
|
||||||
|
the default user interface that your tv loads into, and on Android these are
|
||||||
|
called launchers. On most Android phones you can select your launcher of choice
|
||||||
|
but google tv does not let you do that directly. To change the user interface
|
||||||
|
you MUST install an app that supports being a luncher and then disable the
|
||||||
|
Google TV launcher AFTER installing the custom launcher. If you do this in the
|
||||||
|
wrong order you will likely brick your tv.
|
||||||
|
|
||||||
|
First download your launcher of choise. As stated earlier I am using Flauncher
|
||||||
|
for this, but there are other launchers avaliable if you wish to look around.
|
||||||
|
Also be warned that you trust the software and developer of the launcher you
|
||||||
|
are installing, as running untrusted code can result in malware.
|
||||||
|
|
||||||
|
Once you have downloaded your launcher (it should be an APK) we then need to
|
||||||
|
install it to your tv. To do this we need to connect adb to your tv. To enable
|
||||||
|
debugging on your tv, fist open settings and find the entry listing your tvs
|
||||||
|
build number (usually under System > About). Click this option multiple times
|
||||||
|
and the tv should state that "You are now a developer". Go back into just System
|
||||||
|
settings and enter "Developer Options". Find USB debugging and enable it. Then
|
||||||
|
connect a USB cable to your tv and a computer that you installed
|
||||||
|
[android tools](https://developer.android.com/tools/releases/platform-tools)
|
||||||
|
onto. Run...
|
||||||
|
```bash
|
||||||
|
$ adb devices
|
||||||
|
```
|
||||||
|
... and a prompt to verify your device should show up on your tv. Approve this
|
||||||
|
message and you now have adb connected to your tv.
|
||||||
|
|
||||||
|
Finally run...
|
||||||
|
```
|
||||||
|
$ adb install <path to apk>
|
||||||
|
```
|
||||||
|
... to install the custom launcher onto your tv.
|
||||||
|
|
||||||
|
To verify that this works open the launcher app from your default google tv
|
||||||
|
interface. If it works great! If it doesnt show up as a google tv app or doesnt
|
||||||
|
work I would reccommend using a different launcher.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Above is my tv running FLauncher! Horray!
|
||||||
|
|
||||||
|
Now you will notice that when your press the home button on your Google TV
|
||||||
|
remove, select the home option in the input menu, or restart your tv that it
|
||||||
|
will boot into the default user interface. You have two options to fix this
|
||||||
|
|
||||||
|
##### Option 1: Remap the home button
|
||||||
|
|
||||||
|
Using [Button Mapper](https://play.google.com/store/apps/details?id=flar2.homebutton&hl=en_US)
|
||||||
|
which is avaliable in the play/[auora](https://auroraoss.com/) store, you can
|
||||||
|
remap your home button to open your custom launcher application instead of
|
||||||
|
acutally going home (which is the Google TV default interface). The downside
|
||||||
|
to this is that the tv will always boot into the Google TV default interface
|
||||||
|
and menus like the input switcher will do the same. If you always want your
|
||||||
|
custom launcher see option 2.
|
||||||
|
|
||||||
|
##### Option 2: Disabling the default launcher
|
||||||
|
|
||||||
|
On my Google TV the launcher application was called `com.google.android.apps.tv.launcherx`.
|
||||||
|
Using adb you can disable the launcher application (along with another app)
|
||||||
|
to stop google tv from using the default interface.
|
||||||
|
```bash
|
||||||
|
# Disable com.google.android.apps.tv.launcherx which is the default launcher on CCwGtv
|
||||||
|
$ adb shell pm disable-user --user 0 com.google.android.apps.tv.launcherx
|
||||||
|
# com.google.android.tungsten.setupwraith will then be used as a 'fallback' and will automatically
|
||||||
|
# re-enable the default launcher, so disable it as well
|
||||||
|
$ adb shell pm disable-user --user 0 com.google.android.tungsten.setupwraith
|
||||||
|
```
|
||||||
|
|
||||||
|
With the default launcher disabled google tv SHOULD fallback to your custom
|
||||||
|
launcher application at all times. If it does not do this the tv will result
|
||||||
|
in a soft brick. Be warned.
|
||||||
|
|
||||||
|
#### 1.5. Fixing the input switcher (with Livetv from mediatek)
|
||||||
|
|
||||||
|
If you are using a physical google tv (tv) and not just a streamer such as a
|
||||||
|
chromecast, disabling the custom launcher will break your input switcher if your
|
||||||
|
custom launcher does not support switching inputs on its own (flauncher does not).
|
||||||
|
If this is the case you need to find a different input switcher application.
|
||||||
|
|
||||||
|
My google tv uses mediatek for alot of its software which I think alot of them
|
||||||
|
are. If you have the same luck that I did you MAY have an application hiddden
|
||||||
|
in your tv called `com.mediatek.wwtv.tvcenter`. This application will bring
|
||||||
|
back a custom input switcher that I like alot better then the default included
|
||||||
|
one. There are two things you can try to get this working if your tv uses
|
||||||
|
mediatek.
|
||||||
|
|
||||||
|
##### Option 1: Install from file
|
||||||
|
|
||||||
|
I recommend trying option 2 first. If it doesnt work due to missing application
|
||||||
|
then try this option.
|
||||||
|
|
||||||
|
Try to find an file called 'Livetv.apk' on your tv. Within adb shell run
|
||||||
|
```bash
|
||||||
|
adb shell find / -name "Livetv.apk"
|
||||||
|
```
|
||||||
|
With luck you should find an apk on your tv with this name and the package name
|
||||||
|
of `com.mediatek.wwtv.tvcenter`. If you do run
|
||||||
|
```bash
|
||||||
|
adb shell pm install --user 0 <path to apk on tv>
|
||||||
|
```
|
||||||
|
|
||||||
|
If your tv does not have an apk you can try using the one from my tv hosted
|
||||||
|
[here](/public/blog/Livetv.apk).
|
||||||
|
|
||||||
|
##### Option 2: Install from package manager
|
||||||
|
|
||||||
|
Run the following commands
|
||||||
|
```bash
|
||||||
|
adb shell pm install-existing --user 0 com.mediatek.wwtv.tvcenter
|
||||||
|
adb shell pm enable --user 0 com.mediatek.wwtv.tvcenter
|
||||||
|
```
|
||||||
|
|
||||||
|
If the commands fail stating that the apk is not found try option one if you
|
||||||
|
havent done it. If the commands fail stating that an app is already installed
|
||||||
|
try checking the tv if the input switcher works or the "Livetv" app is installed.
|
||||||
|
If not then your SOL (from what I know).
|
||||||
|
|
||||||
|
#### 2. Removing preloaded applications
|
||||||
|
|
||||||
|
Now that we have a working custom launcher we need to remove the preloaded
|
||||||
|
applications on the tv. On my tv the following applications were preloaded and
|
||||||
|
can be removed with:
|
||||||
|
```bash
|
||||||
|
# Netflix
|
||||||
|
$ adb shell pm uninstall --user 0 com.netflix.ninja
|
||||||
|
# Prime Video (Amazon)
|
||||||
|
$ adb shell pm uninstall --user 0 com.amazon.amazonvideo.livingroom
|
||||||
|
# Tubitv
|
||||||
|
$ adb shell pm uninstall --user 0 com.tubitv
|
||||||
|
# VIX (Univision)
|
||||||
|
$ adb shell pm uninstall --user 0 com.univision.prendetv
|
||||||
|
# Youtube
|
||||||
|
$ adb shell pm uninstall --user 0 com.google.android.youtube.tv
|
||||||
|
```
|
||||||
|
|
||||||
|
If you have other apps you can just replace the command above with the package
|
||||||
|
name of the app you want to remove. If using flauncher you can view the package
|
||||||
|
name by long pressing over the app icon.
|
||||||
|
|
||||||
|
If you still want youtube I recommend [SmartTube](https://github.com/yuliskov/SmartTube)
|
||||||
|
as an alternative.
|
||||||
|
|
||||||
|
#### 3. Removing everything google
|
||||||
|
|
||||||
|
The main google apps on my tv that I dont want are the google play store, google
|
||||||
|
play services, gboard (google keyboard), and the google app.
|
||||||
|
|
||||||
|
If you are to disable gboard (google keyboard) you MUST install a different
|
||||||
|
keyboard first and enable it. I recomment [LeanKeyboard](https://github.com/yuliskov/LeanKeyboard).
|
||||||
|
|
||||||
|
You can disable these applications with the following
|
||||||
|
```bash
|
||||||
|
# Google Play Store
|
||||||
|
adb shell pm disable --user 0 com.google.android.play
|
||||||
|
# Google Play Services
|
||||||
|
adb shell pm disable --user 0 com.google.android.gms
|
||||||
|
# Google App
|
||||||
|
adb shell pm disable --user 0 com.google.android.katniss
|
||||||
|
# Gboard
|
||||||
|
adb shell pm disable --user 0 com.google.android.inputmethod.latin
|
||||||
|
```
|
||||||
|
|
||||||
|
Horray! You may now notice that you can no longer install applications from
|
||||||
|
your google tv. The solution is installing an f-droid client and alternative
|
||||||
|
play store client. I recommend [Droid-ify](https://github.com/Droid-ify/client)
|
||||||
|
and [Auora Store](https://auroraoss.com/) respectively. Droid-ify will allow
|
||||||
|
you to install apps from F-droid which is a free and open souce (FOSS) repository
|
||||||
|
of android apps. Auora Store will allow you to install applications from the
|
||||||
|
google play store without having to log in.
|
||||||
|
|
||||||
|
#### 4. Fixing issues on reboot
|
||||||
|
|
||||||
|
Finally you may notice that your google may reset some changes every time
|
||||||
|
your tv reboots. On my tv google will re-enable google play services (GMS) and
|
||||||
|
the google app. My tv will also disable the "Livetv" app that allows me to switch
|
||||||
|
inputs. Below is the script I use everytime I fully restart my tv. You dont
|
||||||
|
have to run this if the tv goes to sleep, and you should modify this script
|
||||||
|
to reflect your situation.
|
||||||
|
```bash
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# script to run everytime tv is restarted
|
||||||
|
# unfucks the tv and does good things
|
||||||
|
|
||||||
|
# > connect to tv
|
||||||
|
# if you are using debugging over a usb cable this is not needed. I connect adb
|
||||||
|
# over tcp so I need to specify where adb needs to connect. If you are also
|
||||||
|
# using tcp make sure to change the ip to the ip of your tv.
|
||||||
|
adb connect 10.254.0.182
|
||||||
|
|
||||||
|
# > fuck google (tv enables them on boot)
|
||||||
|
adb shell pm disable --user 0 com.google.android.gms
|
||||||
|
adb shell pm disable --user 0 com.google.android.katniss
|
||||||
|
adb shell am force-stop com.google.android.gms
|
||||||
|
adb shell am force-stop com.google.android.katniss
|
||||||
|
|
||||||
|
# > fix livetv (gets borked on boot, allows changing of inputs)
|
||||||
|
# this app gets into a weird state on reboot so it needs to be uninstalled
|
||||||
|
# so that it can be reinstalled/enabled. Make sure to add -k to keep user
|
||||||
|
# settings and data when uninstalling.
|
||||||
|
adb shell pm uninstall -k --user 0 com.mediatek.wwtv.tvcenter
|
||||||
|
adb shell pm install-existing --user 0 com.mediatek.wwtv.tvcenter
|
||||||
|
```
|
||||||
|
|
||||||
|
### Were Done!
|
||||||
|
|
||||||
|
Unless I missed anything you should now have a fully debloated, more functional,
|
||||||
|
less ad ridden Google TV. Horray! If you ever run into any issues I always
|
||||||
|
recommend checking out the [XDA Fourms](https://xdaforums.com/) or searching your
|
||||||
|
problem in a search engine. I hope this worked out for you and you now have a
|
||||||
|
tv that is truly yours.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Now if you excuse me I am going to go play some beatmania on my debloated
|
||||||
|
Google TV. :)
|
BIN
src/public/blog/beatmania.jpg
Normal file
After ![]() (image error) Size: 137 KiB |
BIN
src/public/blog/flauncher.jpg
Normal file
After ![]() (image error) Size: 227 KiB |
BIN
src/public/blog/googletv.jpg
Normal file
After ![]() (image error) Size: 257 KiB |
Before ![]() (image error) Size: 110 KiB After ![]() (image error) Size: 109 KiB ![]() ![]() |
Before ![]() (image error) Size: 287 KiB After ![]() (image error) Size: 286 KiB ![]() ![]() |
Before ![]() (image error) Size: 197 KiB After ![]() (image error) Size: 196 KiB ![]() ![]() |
Before ![]() (image error) Size: 403 KiB After ![]() (image error) Size: 402 KiB ![]() ![]() |
Before ![]() (image error) Size: 417 KiB After ![]() (image error) Size: 416 KiB ![]() ![]() |
Before ![]() (image error) Size: 21 KiB After ![]() (image error) Size: 1.1 KiB ![]() ![]() |
Before ![]() (image error) Size: 22 KiB After ![]() (image error) Size: 2.7 KiB ![]() ![]() |
Before ![]() (image error) Size: 191 KiB After ![]() (image error) Size: 171 KiB ![]() ![]() |
Before ![]() (image error) Size: 421 KiB After ![]() (image error) Size: 401 KiB ![]() ![]() |
Before ![]() (image error) Size: 29 KiB After ![]() (image error) Size: 9.1 KiB ![]() ![]() |
Before ![]() (image error) Size: 616 KiB After ![]() (image error) Size: 596 KiB ![]() ![]() |
Before ![]() (image error) Size: 4.1 KiB After ![]() (image error) Size: 3.4 KiB ![]() ![]() |
Before ![]() (image error) Size: 12 KiB After ![]() (image error) Size: 11 KiB ![]() ![]() |
Before ![]() (image error) Size: 63 KiB After ![]() (image error) Size: 62 KiB ![]() ![]() |
Before ![]() (image error) Size: 14 KiB After ![]() (image error) Size: 14 KiB ![]() ![]() |
Before ![]() (image error) Size: 680 KiB After ![]() (image error) Size: 656 KiB ![]() ![]() |
Before ![]() (image error) Size: 81 KiB After ![]() (image error) Size: 60 KiB ![]() ![]() |