I’ve had an old LG 47-inch smart TV that’s been sitting around collecting dust for years. It has a perfectly usable 1080p panel, but the smarts behind it have been obsolete for years. The last firmware update it received was in 2016, and its only accomplishment was to remove the Skype app. All modern streaming support has long disappeared, but I can’t justify throwing away an otherwise functional television.
So, I connected an old NUC6CAY Intel NUC, complete with a 1TB hard drive, and tried to build the smart TV LG stopped supporting long ago. I didn’t want another Kodi box because my local media library isn’t big enough to justify it. What I wanted was something closer to Android TV, but with a good amount of storage, a full-featured browser, and enough freedom to build my own apps.
The three obvious solutions failed spectacularly, but ordinary old Linux finally worked.
Three TV operating systems made the NUC progressively less useful
Android TV broke, LibreELEC was too narrow, and FydeOS never survived booting
My first attempt at pulling off Android TV on an Intel NUC came painfully close to actually working. I installed the x86 LineageOS TV build using its BlissOS installer, then added Google Apps functionality through MindTheGapps with an ARM translator through ADB recovery.
After a factory reset, the NUC, much to my excitement, booted into what looked like a proper Google TV interface. I could sign in to Google, browse the Play Store, and even control it from my phone.
Unfortunately, that’s where the excitement quickly ended. Google marked the device as uncertified. YouTube wouldn’t install, VLC was painfully slow, and after trying to install Netflix, the entire system crashed. When I factory reset it, I was met with a black screen and:
[ 78.489988] audit: rate limit exceeded
I tried no hwaccel, I tried no modeset, and every debug option available. None of them brought the interface back. Essentially, I had managed to build an Android TV just long enough to watch it brick itself.
Next, I tried LibreELEC, which was much more stable. Samba just worked immediately, and a video I copied over onto the NUC played happily. Unfortunately, LibreELEC is essentially just Kodi with an OS underneath it. That’s great for people with huge local libraries, but it’s not what I wanted. I tried to install the YouTube plugin, but that failed. Even the NASA app depended on YouTube, and the Pluto PVR client was no longer available.
FydeOS was my final specialist option due to its browser and Widevine DRM support. The Intel Slim image went blank during boot. Intel Modern did the same, then went into an endless boot loop. At this point, I stopped trying to force my old x86 hardware to be a TV and installed an OS that the NUC actually understood: Linux.
FydeOS
Linux Mint solved the annoying compatibility problems first
Normal Intel drivers and Chrome’s Widevine support gave me a stable foundation
I went with Linux Mint 22.3 XFCE because the Celeron J3455 and mechanical hard drive were about as old as the LG TV. More importantly, and astonishingly, Mint just simply booted up fine. After the abysmal failures that were Lineage, LibreELEC, and FydeOS, that felt like a solid accomplishment.
I moved the NUC over to my workbench monitor rather than the TV because entering Linux commands from the sofa isn’t my idea of fun. Once the OS was up-to-date, I installed x11vnc so I could set it up remotely and SSH in from my Windows laptop. Once that was up and running, I enabled automatic login, so powering on the NUC meant it went straight to the XFCE desktop rather than a login screen.
Linux Mint’s hardware support for the NUC was refreshingly straightforward and non-eventful. Mint correctly detected the Intel HD 500 and LG, while vainfo confirmed VA-API decoding for H.264, HEVC, and VP9:
vainfo --display drm --device /dev/dri/renderD128
This was good news as the GPU could do 1080p decoding rather than dumping it on the poor Celeron CPU. The only hardware hiccup was related to audio. This was because PipeWire initially favored analog output over HDMI. Switching out the card profile restored the audio through the TV:
pactl set-card-profile alsa_card.pci-0000_00_0e.0 output:hdmi-stereo
The next issue to tackle was streaming. Google Chrome thankfully brought Widevine DRM with it, and Netflix did play immediately, so protected content was working. However, chrome://media-internals showed me the stream topped out at 1280×720, which is common for Linux.
This can be resolved by installing the Chrome extension “New Netflix 1080p,” which, when installed, brings the streaming resolution up to 1920×1080. It’s an unofficial workaround, so as soon as Netflix changes something in their player, it will likely break, but it still gave this 1080p TV the resolution it deserved.
Mint had just given me working drivers and some useful diagnostics, but it was still just a PC running HDMI to a TV. To become more like Android TV, it needed some customization first.
If you’re turning an old PC into a TV box, test hardware video decoding before worrying about the interface. A well-thought-out launcher will not fix stuttering HD playback.
- OS
-
Linux
- Minimum CPU Specs
-
64-bit Single-core
Linux Mint is a popular, free, and open-source operating system for desktops and laptops. It is user-friendly, stable, and functional out of the box.
Web apps made Mint stop feeling like a desktop
A 10-foot launcher, isolated browser profiles, and phone control hid the PC underneath
Getting Linux Mint to this point was only half the job. At 1920×1080, XFCE fits the TV panel like a glove, but an ordinary desktop viewed from across the room on the sofa is not ideal. To get Mint looking more like a 10-foot launcher, I started by setting XFCE’s DPI to 144, enlarging the fonts to size 13, increasing the pointer size, and removing all the icons from the desktop.
I planned to create a grid of app launchers for streaming services like Netflix and Amazon Prime, alongside a dedicated power icon that opened XFCE’s shutdown dialog. For the launchers, Linux Mint’s Web App Manager did most of the work. Each service opened in its own Chrome window without tabs or an address bar, which made Netflix, YouTube, Paramount+, and other streaming services behave like smart TV apps.
I chose to isolate the Chrome profiles because that way logins, cookies, zoom levels, and extensions could all be kept separate. I also edited the generated launchers to always start maximized:
Exec=google-chrome-stable --start-maximized --app="https://netflix.com/browse"
Netflix again had one extra wrinkle. Since its Web App required its own copy of the 1080p Chrome extension, I opened a new window from that profile with Ctrl + N, installed the extension there, and reloaded the Web App. I also replaced each launcher’s icon with a proper transparent logo, so the launchers looked as close to Android TV as possible.
The final hurdle to getting the Mint NUC to act more like a TV was the remote control. VNC was painfully sluggish, but KDE Connect worked much better. I also installed it on my Samsung Note 20, which turned it into a trackpad, keyboard, and media remote. This way, I didn’t need to leave another keyboard lying on the sofa to get accidentally sat on. It’s still not as useful as a directional TV remote. Visually, though, the UI I had created looked just like a custom streaming launcher. Now, XFCE only really appears when I need the flexibility of the full desktop distro underneath.
- OS
-
Android, iOS, Windows, macOS, and Linux
- Price model
-
Free
KDE Connect allows your phone and computer to work together seamlessly by enabling file transfers, notifications, text replies, and clipboard sharing between devices over a secure wireless connection.
The 1TB disk keeps this from being a Chromecast on hard mode
Samba and VLC add real flexibility, even though a streaming dongle remains easier
I still don’t own enough local media to justify creating a Kodi build, but I still wanted the 1TB disk to serve a purpose. Carrying USB drives between my main PC and the TV is so 2005, so I needed to create a network share for loading media onto the NUC.
I created Movies, TV, and Music folders under /home/mint-nuc/Media, then exposed the whole directory through authenticated Samba. Here, I gave the NUC a memorable NetBIOS name, so everyone on the network can find it:
netbios name = MEDIASERVER
server string = Mint NUC Media Server
After restarting Samba, Windows could open:
\MEDIASERVERMedia
I could now drag a video or music file into that share from my laptop. I could then open the large Local Media launcher on the TV and play the same file directly from the internal disk with my favorite media player, VLC, no USB drives required.
That big 1TB of storage is also only one advantage. Because this is still Linux underneath, practically any browser-based service or site without a dedicated TV app can become another web app. The NUC could just as easily become a game-streaming client, emulator, photo viewer, karaoke machine, or something I haven’t even thought of yet.
Now, there is one obvious issue with this build: buying a second-hand Chromecast (or a new Google TV Streamer) is just fundamentally easier than going through all this effort. It uses less power, has actual HDMI-CEC integration, certified streaming apps, and an interface designed for the sofa. I went through three failed OSs, DRM nightmares, and custom launchers just to make something Google sells in a tiny plastic dongle.
But here’s the thing. My NUC and my home screen are entirely mine. There are no endless rows of recommendations, promoted trailers, or movies waiting for me to buy or rent. If I want 15 giant icons and nothing else, that’s exactly what I get. Yes, browser interfaces still prefer a keyboard and mouse, and my Chrome extensions can break at any moment, but the finished interface is mine and not someone else’s storefront.
That freedom and flexibility are what made all the extra work worthwhile. I stopped looking for a ready-made smart TV platform to fix my aging LG, and built the best parts of them that I actually wanted instead.
