I want to try to set up a Raspberry Pi I have as a smart TV box and I was hoping I could find some advice.
My main requirements are:
- can run Moonlight
- can be controlled from a Bluetooth game controller (that should also work in Moonlight)
What would be nice:
- can run VLC or Plex or something
- can support AirPlay
- can be used for some actual streaming services like Netflix
Any suggestions?
Any Linux distro with Flex Launcher and an Air Mouse+Keyboard Remote.
This is what my HTPC looks like currently:
Why do you have Plex and Jellyfin?
With Plex banning people with large pirated libraries and their opt-out “watch reports” stuff, they’re showing signs of enshittification. I setup Jellyfin as a alternative option for my library just in case. I even have a domain and HAProxy handling TLS offload for Jellyfin.
I’m a Plex Pass Lifetime subscriber, but I like Jellyfin a lot. Once they get the HTPC experience a bit more polished, I might fully move to it and retire Plex, but I’m hanging onto Plex for now.
The lifetime subscriber bit makes a lot of sense. I didn’t have a Plex Pass and ditched them last year when the enshittifcation became worse than the effort to move everything over to Jellyfin. Basically swapped overnight once I was committed.
Yeah I have 40+ family members and friends who access my library through Plex…it’s going to be a much more bumpy ride for me and that’s basically why I have this transition period.
That’s super fair, I only have the people under my roof :)
Holy shit. Hats off to you for 40 person media management.
I would absolutely not want to take that on 😅
As I see it, they are close to parity on the video/shows side, but the music thing on Jellyfin is severely lacking for me. PlexAmp and all the special mix and radio features are where it’s at for me, and so far I don’t know of an open alternative to that.
Yeah I barely use Plex for music, so I haven’t run into this much. I use mine for TV and Movies pretty much exclusively.
I wish i knew what “HAProxy handling TLS offload” meant.
Basically a pair of bouncers at the door to your Home Network whose specific purpose is to manage the flow of guests from outside (the internet) to your club (media server with library).
Got Flexlauncher on my setup (Debian running on an old laptop) too and was hoping you could share some advice:
- what’s the best way to launch websites as “apps”? Bonus points if I get to keep uBlock Origin :)
- currently using a wireless keyboard only and running to the trackpad when it doesn’t suffice, what air mouse would you recommend?
- that wallpaper looks great, could I have a link?
For full screen web pages, I’m using Chromium and the --kiosk and --full-screen flags in the launch command. This removes the title bar and such and just loads the web site in full screen. I only use this and the AirMouse for Netflix and PBS. Everything else works with just the remote’s arrow keys (Steam, Plex HTPC, Jellyfin, ES-DE, etc.).
I’m using this AirMouse from Gimbi. This plus AutoHotKey to remap a few buttons and the 4 programmable buttons at the bottom for TV and soundbar controls work for me pretty well. I mapped the ! button to Alt+F4, the search button to the super key, etc. The programmable buttons are TV Input, TV Select, and Soundbar Vol+ / Vol-.
I think the wallpaper was a built in one for the Cinnamon desktop, but I’ll try and find it and link it here.
Thanks for taking the time to answer! I did read the Flexlauncher docs which also recommend the Chromium command, I was hoping there’d be something like that for Firefox because it’s just a matter of time before ad blockers become handicapped in Chromium. But guess that’s the only solution then.
Dont. They are notoriously bad at such things. Lack of Hardware acceleration mainly. These old Chips and problems with single-board-complications are just not worth it at such high prices.
An Intel N100 MiniPC will have much more compute with less complications.OP states to have the Pi already.
Pi can do h264/265 hardware decoding at 1080p
I recently set up LineageOS on my rpi4 for this. With that setup, I think you’d be able to use the Android version of Moonlight. I haven’t used Moonlight before though, so not sure how good of an experience that is on Android. Since the official images didn’t support Android TV, I ended up using this version. Performance is a little slow in the menus (and very slow in the Twitch app, but that’s also true on the fire stick). I’ll probably give rpi5 a shot at some point in the near future to see if that offers better performance.
Bluetooth game controller works quite well (a little too well, the box notifies me when controllers are trying to sync), and works with apps like RetroArch and Jellyfin. I think it’s supposed to support AirPlay or whatever the Android equivalent is too, but I haven’t tried that. I also had to install gapps to sign into YouTube, but most other streaming apps I tried worked without it. Some of them require specific Android TV devices though, so a 3rd party app store or side loading may be needed for some of them.
I originally wanted to use Plasma Bigscreen with Waydroid, but I ran into the same problem of not being able to find an Android TV image. I did try building it myself, but that was taking too long so I eventually gave up.
I’m about to start my adventure with Raspberry Pi powered TV box. I will try Plasma big screen - https://plasma-bigscreen.org/ It seems like a good place to start.
I started with Plasma Big Screen, but the browser is awful and the app selection is problematic. I ended up just going full DIY with Chromium running kiosk mode full screen apps, Plex HTPC, Steam Big Picture, etc. tied together with Flex Launcher.
I tried what you are describing: Using a Pi4 and loading lineageOS (KonstaKANG) on it. Before that I tried libreELEC with Kodi or something like that… Internet via WLAN. Both setups suck. Everything is slow, input with my cableless keyboard/touchpad is laggy and I am not using the TV because of it… Watching jellyfin on my smartphone is more convenient.
But I am new to all this stuff, so maybe I missed some ways to optimize this setup. Next time I will just take a long HDMI cable and connect the TV with my main PC.
Pi5 with standard OS, Firefox with an adblocker, and VLC for local files works AMAZINGLY. I was shocked, as I’m running it off’a SD card, and my other Pi is running an SSD.
Good to know, I’ll give it a try sometime, thanks.
There are many multimedia solutions for ARM (e.g. libreelec, kodi, plex, jellyfin etc etc), however, these work best for non-big-streaming sites. The moment you’re after a really good youtube experience, or netflix/disney+/etc, then things start break down for various reasons.
Personally, I’d just install the default Raspbian OS (maybe even just DietPi), making sure that their Firefox or Chromium supports drm websites, and then I’d connect the Pi to the TV, and then I’d use a keyboard + touchpad, like this one: https://www.amazon.com/Logitech-Wireless-Keyboard-Touchpad-PC-connected/dp/B014EUQOGK/ This allows you to use the machine exactly the way you need it to, without bad surprises and incompatibilities. Not the way you want it to, but more like the way you need it to.
Also, please note that if you’re having a Pi with only 1 GB of RAM, it won’t be enough for what you’re having in mind. I have a 3B+ with 1 GB of RAM, and my Emby server (music only!) constantly needs more than 1 GB of RAM, resulting in the Pi to swap, which means that it wears out the microSD a lot.
Finally, if all else fails get an AppleTV, or a Chromecast with AndroidTV, or a Roku if you’re in the US, but I think the desktop/browser solution can be workable. Not pretty, but most workable for DRM streaming services.
Try out zram instead of the SD card swap
Honestly, you might be looking at a ShieldTV.
I considered this, but ended up going HTPC instead. The Shield is just too old and now they’re loading it up with more ads you can’t get rid of. Screw that.
I bought one last year, and even though I was hesitant because of its age, it can handle all the content I throw at it (4k 10 bit hdr h265, etc). As for the the ads, I solved that by installing a third party launcher.
The only issue I have with this setup is that I haven’t found a good replacement for YouTube yet. A revanced for android TV would be amazing.
This is what I use for youtube on my android tv. Works mostly great although I recently had some stuttering during playnack that I have yet to find the cause of
I use smarttube on my shield
One of my requirements was Steam (either locally or Steam Link) and EmulationStation. The Shield cost nearly the same money as the AMD Ryzen mini-pc I’m using, so I just decided to go with the more powerful device so I could run light to moderate Steam games at 1080p in addition to In-Home streaming. I use my gaming PC for WFH, so on days I work my kids wouldn’t be able to play games from Steam unless it was local.
I think out the door I spent about $230 for a Ryzen 5000 series APU machine with 512GB of SSD and 16GB of RAM. With the shield at ~$199, I went for the more DIY solution, which isn’t for everybody, but I’m an tinkerer.
I have Raspberry Pi 4B set up as TV box and for my own media like Kodi or Jellyfin, barely handles 4K but works. And I like how I can sync files or remote control seamlessly because it’s standard Linux not Android.
For mainstream streaming I really discourage form even trying, it’s a mess. If you plan to run any type of DRM media you already are on the lost position and might as well buy cheap Android TV stick for ~30$, because there would be no freedom gain with RPi, just big annoyence.
TLDR:
Linux for own media.
Android for renting.
Raspberry Pi for Linux.
Cheap TV stick/box for Android.Which version of raspberry pi?
Assuming it’s a 4, you could probably use LibreELEC. There is a plugin for moonlight game streaming.
Kodi, a very popular and highly extensible Media Center which acts as the GUI of LibreELEC, can play just about any media. Airplay seems to be supported as well.
There is a plugin for Netflix, however note that you will be limited to 720p since you can’t use widevine levels above l3.
Agree…LibreElec is the best way to run kodi on a RPI 4.
https://dietpi.com can be configured for Kodi. Youll be limited to 1080p H264 for streaming, as long as your Plex server can transcode to that format you should be OK.
It’ll probs support any xinput-compatible pad, too.
Not sure about moonlight support on Pi/Linux but again you’ll be limited by the decode.
- Assuming you have a Pi4B, by the way.
First had Kodi on a RPI, but I got fed up with Kodi, partly because there are too many moving parts and partly because there’s no great way to watch YouTube.
Then found Flexlauncher, which has already been suggested by someone else. Slapped Debian on the RPI and then realized that getting smooth HD YouTube video playback is impossible outside of Kodi, because of hardware (?) limitations.
At this point I decided that enough is enough and just got out the old laptop in the household no one uses anymore, same Debian + Flexlauncher combo with Stremio and Freetube. Set Debian to do auto login and start Flexlauncher automatically. Works great, but controlling with Keyboard only (and using the laptop trackpad when nothing works) gets a bit annoying. Looks like an airmouse is the way to go.
Sharing videos from NewPipe to Kodi worked pretty well. But I switched too, after years of tweaking & fiddeling and I now use just an old laptop with Mint and a controller. It’s not as pretty and controller-friendly, but much more stable and I don’t really need the movie collection features.
If you want to be able to use “actual streaming services like Netflix”, you’re gonna be disappointed. Those use DRM that won’t be available to your Pi. Most of them will at least limit the quality to a pretty pathetic level. Overall it’s not going to be a satisfying experience. AFAIK it takes some major hackery to get around that limitation, making it a practically insurmountable obstacle.
Otherwise the rest are more than doable. I’d still recommend an x64 based mini pc though.
- No SBC that I know of can handle 4k 120Hz HDR output, so getting the most of moonlight is not possible.
- Low latency decode requires some work to get running
- AV1 encode/decode has even more latency, do you will be running higher bitrate h264, which in turn means wired network connection is recommended.
- Streaming services limit 4k and/or HDR access on a lot of content to locked devices. E.g. Netflix only guarantees 720p sdr when watching in a browser - how much more you get depends on the deal with the copyright holder.
Tl;dr; a long, active fiber HDMI cable + USB over IP might be cheaper, better and easier. That’s what I ended up buying despite the cable length being 60m (200ft).
Idk where you assumed 4k 120hz HDR from the post?
4k 120Hz HDR is what current gen consoles can output right now and what is becoming common even on mid-range TVs (quality of HDR aside). I’d expect you’d want most of that experience or future-proof solution that would allow that when you get a new TV.
I don’t think there’s a single thing they actually output that’s 4k/120. High refresh rates are downscaled, and high resolutions have lower refresh rates.
But you also need a tv that’s powerful enough my monitor isn’t even that powerful.
What do you mean “powerful monitor”. It just needs to display a picture.
At 4k and 120hz. My pc can’t even do that
Then you need a more powerful PC. What do you mean a more powerful monitor? I don’t even understand what that means.
Monitor resolution ,refresh rate and things like that. And gpus aren’t that cheap
You would most lilely be looking at a Kodi setup.
Look up LibreElec, super simple all in one image, kodi has a ton of plugins for everything you’d need. You’ll probably need to add some extra repos to get everything you want, but it’s all pretty easy to figure out with searches
Kodi is awesome, but it’s not a solution for Netflix or Plex. I know there are plugins for them, but they’re terrible. Kodi is best when it’s playing local media and op wants Netflix and other streaming services working, too.
I did that for years, using LibreElec with Kodi, but moved instead few months ago to “just” minidlna on the RPi, headless, then VLC on the video projector, streaming straight for the RPi.