Replacing the Nvidia SHIELD TV Pro with FOSS Android TV

It’s no secret that Android Smart TVs suck, or rather that their smart features are poorly implemented. They are usually powered by bottom of the barrel hardware. They are stuffed full of proprietary software. And they stop receiving updates and security patches long before the lifetime of the actual TV is over.

That more or less forces a security conscious user to air gap and replace them, if they still wish to use basic smart features on their TV. That’s what I did to my 5 year old Philips OLED and I decided on the Nvidia SHIELD TV Pro, based on positive reviews online. My overall experience has been positive: Performance is good and I’m getting more updates. It also comes with better features like a good remote and AI upscaling.

Alas it’s still liable to be discontinued well before I plan on replacing my actual TV, and before the hardware itself is obsolete. Also the OS is still beholden to the manufacturer and not the owner. Google has started implementing more and more aggressive ads right on the home screen. The entire OS sends telemetry to various vendors. And of course, you can never even know what it’s actually even doing: It runs constantly in a standby mode, the code can’t be audited by the user and it even has a microphone in the remote.

A better, more long-term solution

My criteria are:

  • Needs to be able to run 4k HDR at high 100+ mbit/s bitrates smoothly.
  • Needs to be able to stream comfortably from Jellyfin.
  • No spying.
  • Software should remain updatable for at least 3 more years.
  • Youtube should work.
  • Some kind of remote control.
  • Affordable.
  • Similarly low power draw.

My first thought was Kodi, likely on a Raspberry Pi, or alternatively a mini multimedia PC. Some research revealed that a Pi 5 could likely barely handle my performance requirements, but not perfectly either. Cost wise both options could be had for under 100€, and both would have excellent long term viability. However, why pay any money, if I already have possible solution sitting in my drawer: An unused Jetson Nano 4GB, running on a Tegra X1 SoC similar to my Shield TV Pro and a Nintendo Switch with its standout feature being a fairly competent GPU.

Nvidia pretty much abandoned the Jetson Nano. Up-to-date Linux options are limited, and the available kernels are very outdated. The CUDA SDK that is required for programming its GPU doesn’t support it anymore. OpenCL on the GPU doesn’t work either. With these factors in mind I didn’t have much use for it anymore – until now. Luckily there is a port of Android TV, specifically LineageOS available and up-to-date, so decided to install it.

Installing Android TV

I decided on a plain install without GApps. For my network connection I used Ethernet, though WiFi should work with a dongle, a wired connection should be a bit more reliable and faster. Next, I sideloaded F-Droid with adb and installed the Aurora Store. I installed the YouTube App and the Jellyfin client, Termux, VLC and a web browser. I did all that with a keyboard and mouse connected, but both my TV Remote and my Logitech Harmony Hub phone app worked perfectly out of the box via HDMI CEC.

Testing

At first, I noticed HDR being flaky in Jellyfin. It turns out that the auto bitrate adjustment picked a value that was too low for HDR. I set it manually to the highest limit and it has been working fine since. I also had issues with some files stuttering. That I could easily resolve by switching Jellyfin to using libVLC rather than ExoPlayer. Next there were some audio issues, such as muffled sound or none at all for certain video files. I fixed it by changing the settings to always down-mix 5.1 to stereo which is what I’m using anyway. I also enabled bitstreaming DTS.

My test setup playing Dune in 4K HDR.

Further testing revealed that YouTube still failed to stream HDR. I’ve been unable to find a solution for that as of yet, but this one I can live with. I also noticed that the Fan I had attached to the Jetson didn’t want to spin, so I removed it. This indicated to me that the Board was running in its default, more efficient mode and not the significantly faster MaxP mode. I didn’t quickly find a way of changing that, but since performance is smooth all the way, I don’t feel the need to use more electricity anyway.

Comparison to SHIELD TV Pro

You definitely lose some features compared to using a Shield TV Pro, the big ones to me being:

  • AI upscaling (I can live without but it is a loss, maybe some day it will be added to Jellyfin serverside)
  • YouTube HDR (likely a fixable)
  • Chromecast (Could be added with GApps, but since YouTube device linking still works the main reason I would want to cast is covered)

The standby power consumption will also be likely higher, since as of now I haven’t found a way yet to get the Jetson to sleep. Likely Kodi would also have trouble with convenient sleep handling as well, though I didn’t test it. You’ll likely want to hide your Jetson as well, since it just doesn’t look as sexy as a SHIELD.

What you do gain though is privacy, security and flexibility. I also enjoy having four more USB Ports to charge my controllers.

Should you get a Jetson Nano instead of a SHIELD for Android TV?

Its final resting place, glued behind my TV.

Probably not. If you already have one, this is a great use for it. The entire setup took me a couple of hours, but in the end it works nearly as well as the SHIELD while being way more private and secure. If you don’t already have one though, you should probably do more research and consider a Raspberry Pi 5 or a multimedia mini-PC with Kodi or even Android TV first. While it’s hard (for me) to say whether they will provide a better experience overall, they will definitely have a longer remaining lifespan due to them being so much more popular.


by

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.