As part of my efforts to be cloud non-dependent, I have a NAS full of several terabytes of music, movies, and TV shows. Plex is of course everyone’s favorite software for solving this problem, as it essentially turns your hard drive full of files into a private Netflix capable of streaming and syncing to any device.
The problem is that streaming and syncing is a very CPU intensive task and requires a server of substantial processing power. Is the cheap Odroid XU4 single board computer up to it?
The Odroid XU4 has a number of things that make it an ideal candidate for a small, low-power Plex server or a very nice and compact client.
- 8-core ARM processor, half at 2ghz
- 2GB RAM
- Gigabit Ethernet
Sound greats, but I could find no documentation on whether this thing could actually meet the requirements needed for Plex transcoding, and what the state of the Plex software transcoding is on ARM processors. My needs are pretty minimal: I need to be able to transcode up to 1080p files to at least one client (my projector) and sync files to my various devices (phone, tablets).
Being performance sensitive, I went with Diet Pi as the operating system. It’s a barebones minimal install of Debian Linux, but what it really shines at is being optimized for these single board computers. It also contains quite an impressive set of programs that make getting up and running dead simple, and there are scripts for installing pre-tuned software. You really don’t have to touch the command line at all.
RELEVANT CONFIGURATION DETAILS
- CPU: As above, ondemand governor with the Max Frequency Limit set to 1800mhz. This essentially underclocks the faster cores slightly, which I found led it to run stable and at a reasonable temperature.
- Network: The files are accessed over Gigabit ethernet through NFS on my file server. I originally set this up to get the files over Samba – but realized that Samba has a ridiculous 20% CPU overhead for moving files around, and is also unusably slow. Definitely use NFS if your storage is not local.
- Heat: The Odroid XU4 is not very heat efficient and notoriously runs hot. I would recommend installing a larger heatsink than the manufacturer provides, and then using an active cooling fan on top of that. With a small heatsink and a fan, I’m getting 45 – 55C at idle, 60-70C while transcoding. This jumps up to around 75-80C on high res (55mbps, Blu-Ray equivalent) files and at the initial loading of files for a few seconds. This is borderline acceptable for my use but would require more active cooling for serving high-res files.
- Plex: Installed the pre-tuned version from Diet Pi’s software installer. All default settings, except I have moved the temporary transcoding folder to a USB3 drive instead of using the SD card.
For my use – the transcoding of 1080p files for a single user – it works perfectly. Files load fast, the XU4 stays at a reasonable ~70C temperature under heavy load, and everything works as it should.
Testing with the files from http://jell.yfish.us/ I am able to load and play 55mbps (Blu-Ray equivalent) h264 and h265 files just fine. The loading does take significantly longer than my usual files, but it plays smoothly. As noted above, the temperatures do spike to unacceptable levels on these high-res files, so a more serious cooling solution would be needed.
I will do further testing on it’s performance but my initial results here are exactly as I’d hoped. For a cheap, low-power Plex server the XU4 works great.