Plex on a Raspberry Pi 4 is a mixed experience

Plex is great and the Raspberry Pi is great. Can we combine the two to make an awesome little Plex Server with no noise, uses bugger all electricity and costs less than $100? My gut says yes, but as anyone who has ever tried to do anything on a computer will tell you, things are different in practice than in theory.

Setup
I’m using a Raspberry Pi 4 Model B with 4GB of RAM. I chucked on it an atrocious looking bling cooler because I saw it on Aliexpress and thought it was hilarious. I do not know if it makes a difference to the SoC’s temperature.

Because the Pi 4 can boot off USB, I decided to install the root filesystem onto a Samsung Bar USB 3.1 flash drive. A 1TB Silicon Power A55 SATA SSD hooked up over USB with a JMS567 SATA-USB bridge with UASP support is where videos will be downloaded to and streamed from.

Operating system is Ubuntu 20.10. I installed Plex, NZBget/SABnzbd and Radarr via linuxserver.io’s Docker images. All networking took place over Ethernet. Wi-fi sucks.

Downloading Issues
Gotta get some media onto this thing and usenet is the sea I sail as a pirate. I’ve got gigabit internet at home and unfortunately, the Pi struggles to get the maximum out of my connection.

Nzbget is supposed to be a lightweight alternative to Sabnzbd, but I found them practically the same in terms of performance. Whilst downloads peaked at around 70MB/s, speeds were really inconsistent as you can see in this screenshot of Sabnzbd’s chart:

CPU use was fairly high too, which I imagine is a combo of using the USB controller and Ethernet controller quite hard, plus Sabnzbd’s activity. Unpacking the downloads was even slower and more CPU intensive. It was not a fun experience waiting longer for the video to unpack than it took to download.

God help you if you try to download and unpack at the same time. Everything will crawl to a halt.

Plex Works Well
Despite downloads being slow, Plex itself worked a treat. I was able to stream two massive bitrate 4K videos on my network with no hiccups. CPU use was high, but the little Rasperry Pi kept on chugging.

I tried streaming a third and then things turned to shit, with constant pausing on the playback devices. The CPU was getting hammered and bandwidth took a dive as a result.

Of course, the catch here is that you can’t transcode anything. Plex will try convert incompatible media, but it is a fruitless endeavour, as the Pi just doesn’t have the grunt and lacks any sort of hardware video encoding acceleration.

Conclusion

If all you do is watch 1080p media on your local LAN and have a normal internet connection (sub-250mbit), the Raspberry Pi 4 will do a pretty good job. You don’t even need the 8GB version. Running Plex, Sabnzbd & Radarr, RAM usage never cracked 1.5GB. 4GB would be plenty even if you ran a few extra services. Get a fast microSD card for your root filesystem and whatever size external HDD you like and you’re good to go.

4K enthusiasts with really fast internet connections should probably stick with their x86 boxes. The Pi’s CPU and I/O can’t really keep up with the downloading and unpacking for usenet. Maybe BitTorrent is different, but I couldn’t be fucked trying as I rarely use BitTorrent.

I would like to try a faster ARM-based SBC however. There’s a few Rockchip RK3399 based units with PCIe NVMe M.2 slots that I reckon would handle usenet downloading very nicely. They’re not cheap though - about ~$150 for the board with 4GB with a decent USB power supply and cable. For that price you can get all manner of SFF and Mini PCs with way more powerful CPUs and are still pretty damn quiet and power efficient.

It wouldn’t surprise me that in a year or so, ARM SBCs get so powerful and cheap that they’ll outperform the same priced ex-lease/used x86 boxes whilst using way less electricity.