Intel NUC as Plex Media Player Client: Setup Guide

Intel NUC as Plex Media Player Client: Setup Guide

The Intel NUC has been around for a while and considered as one of the best kit to build an HTPC. Before models with Brasswell and Sky Lake chipsets however, I always considered it as a big investment because you would need to grab one with i3, i5, or i7 processors to be sure it would be able to handle all media formats. Plus you probably need to make some additional spending on Windows 8/10 for the operating system.

That perception have now changed with the HEVC hardware accelerated encoding support in the newer chipset generations. Plus the release of Plex Media Player* last year with Embedded Platform app.

* Plex Media Player is currently only available for Plex Pass users.
UPDATE November 30, 2016: Plex Media Player is now available for all Plex users

UPDATE October 21, 2017: Intel has released a newer generation of NUC series (identifier: NUC7XXXXX). They no longer support booting from (micro) SD card, as shared by one of the readers. Read Brian’s notes here.

A little background

For over a year, I had been using Minix Neo Z64 running Plex Home Theater as client to browse and play media library from my Plex Media Server on my TV. It had served its primary purpose well but I started to find some limitations from it:

  1. It could only be installed with 32-bit version of Windows (or any other x64 based operating system) due to limited BIOS and drivers support. This means, I couldn’t install the next generation Plex Media Player which unfortunately required 64-bit MacOS or Windows.
  2. No hardware accelerated for HEVC (H.265) video format. Its Quad Core Intel Atom processor were choking to handle 1080p H.265 encoded videos.
  3. Even though it had built-in IR receiver, there was no Windows driver for it. I had to use Flirc USB to control it from my Logitech Harmony remote.
  4. No gigabit ethernet port, only 100 Mbps.
  5. No HD Audio (Dolby TrueHD and DTS-MA) passthrough when using PHT on Windows.

So the search was on to find a hardware that would be able to fill those gaps. There is one extra requirement though: it needed to be in the sub $200 budget because I only wanted it as Plex client, not server.

The hardware: Intel NUC5CPYH

A few options came into consideration, including NVIDIA SHIELD TV and AsRock BEEBOX N3150, but I finally decided to go with Intel NUC NUC5CPYH. Primarily because of the price point, at less than $130 (barebone, no RAM, no drive) it was still quite an amazing price. While some people might doubt its processing power because it is still running on Celeron processor, but it’s already based on Braswell chipset and Braswell comes with HEVC hardware acceleration support.

Intel NUC5CPYH

Here’s the list of components to get it up and running:

  • Intel NUC5CPYH Barebone Kit – $128 [link]
  • Kingston HyperX Impact Black 4GB 1600MHz DDR3L SODIMM – $25 [link]
  • SanDisk Ultra Fit 32GB USB 3.0 Flash Drive – $10 [link]

You could go with SDXC or even hard drive/SSD instead of using USB flash drive, that one is completely up to your preference. For me, the SanDisk Ultra Fit just offered the best bang for the buck.

In addition, you also need a spare USB drive with around 1GB of storage and USB keyboard to copy and install the Plex Media Player for embedded platform image.

Plex Media Player for Embedded Platforms installation

To download Plex Media Player (PMP) for the Intel NUC, just follow these steps:

  1. Go to Plex Downloads page
  2. Click on Get an App button
  3. Make sure Plex Pass Downloads is checked on
  4. Under Choose your app, select Plex Media Player > Embedded Platforms
  5. Click on Download button, then select Intel 64-bit
Download Plex Media Player

Plex Downloads Page (click to zoom)

Next step is to create the disk image for the USB stick by following the official tutorial.

After plugging both USB sticks (one with the disk image and another that will act as the computer’s drive) and keyboard to the Intel NUC, turn it on. The NUC should try to detect a bootable drive, in this case the USB stick with PMP disk image. Then you need to follow the on-screen installation process and select the other USB stick as the destination drive to where app will be installed.

After the installation is complete, you can unplug the disk image stick and reboot the NUC. It should load PMP and you can start using it immediately.

Setting DTS-MA and Dolby TrueHD passthrough

Plex Media Player’s Audio Configuration Guide is a little bit vague in explaining how to enable HD audio passthrough. But for Intel NUC, the key is to select the right Device type and Device under Settings > Audio panel.

  • Device type: HDMI
  • Channels: 7.1 (depending on your audio receiver’s input/output capability)
  • Device: HDA Intel PCH, HDMI 0/HDMI Audio Out
  • Normalize Downmixed Volume: No
  • Show Advanced Settings: Yes
  • Dolby Digital (AC3): Yes
  • DTS (DCA): Yes
  • Dolby Digital Plus (EAC3): Yes
  • DTS-HD Master Audio: Yes
  • Dolby TrueHD: Yes

Maximizing control from Logitech Harmony

If you own a Logitech Harmony IR remote*, Intel NUC5CPYH already has its own profile on MyHarmony application. Just add a new device and put these values:

  • Manufacturer: Intel
  • Device Model Number: NUC5CPYH
Plex Media Player – MyHarmony Add Device

MyHarmony Add A Device screen

* Logitech remotes based on Harmony Smart Control hub such as Harmony Elite or using RF signal may require different configuration.

You should already be able to use the remote for basic commands. However if you really want to have more control, you need to create your own inputmap. To save you the trouble of capturing each of the Button Name from the default NUC5CPYH profile, you can refer to my notes below from my Harmony One remote.

Button Name     Harmony Button
==============================
KEY_SLEEP       Power Toggle
KEY_RED         Red
KEY_GREEN       Green
KEY_YELLOW      Yellow
KEY_BLUE        Blue
KEY_TUNER       LiveTV
KEY_TV          MyTV
KEY_VIDEO       MyVideos
KEY_AUDIO       MyMusic
KEY_CAMERA      MyPictures
KEY_RADIO       MyRadio
KEY_DVD         DVDMenu
KEY_INFO        Info
KEY_EXIT        Exit
KEY_EPG         Guide
KEY_VOLUMEUP    Vol+
KEY_VOLUMEDOWN  Vol-
KEY_UP          Ch+
KEY_DOWN        Ch-
KEY_MUTE        Mute
KEY_REWIND      Rewind
KEY_FASTFORWARD FastForward
KEY_RECORD      Record
KEY_OK          OK
KEY_LEFT        Left
KEY_RIGHT       Right
KEY_UP          Up
KEY_DOWN        Down

Now that you know which buttons are recognized as which by PMP, all you need to do is to create a custom inputmap file to your preference and upload it using SSH/SFTP to the NUC under /storage/.local/share/plexmediaplayer/inputmaps/ directory. By the way, the remote is recognized as LIRC.

Here is how I set mine:

{
 "name": "LIRC IR",
 "idmatcher": "LIRC*",
 "mapping":
 {
     "KEY_LEFT": "left",
     "KEY_RIGHT": "right",
     "KEY_UP": "up",
     "KEY_DOWN": "down",
     "KEY_MENU": "unknown",
     "KEY_DVD": "home",
     "KEY_SELECT": "enter",
     "KEY_OK": "enter",
     "KEY_BACK": "back",
     "KEY_EXIT": "back",
     "KEY_PLAY": "play",
     "KEY_STOP": "stop",
     "KEY_PAUSE": "pause",
     "KEY_SEEKFWD": "seek_forward",
     "KEY_FASTFORWARD" : "seek_forward",
     "KEY_SEEKBCK": "seek_backward",
     "KEY_REWIND": "seek_backward",
     "KEY_CAMERA": "step_backward",
     "KEY_RADIO": "step_forward",
     "KEY_SUBTITLES": "cycle_subtitles",
     "KEY_INFO": "host:toggleDebug",
     "KEY_NEXT": "step_forward",
     "KEY_PREV": "step_backward",
     "KEY_HOME": "home",
     "KEY_NUMERIC_([0-9])": "%1",
     "KEY_SLEEP": "host:suspend",
     "KEY_RECORD": "toggle_subtitles",
     "KEY_RED": "cycle_subtitles",
     "KEY_GREEN": "cycle_subtitles_back",
     "KEY_YELLOW": "increase_subtitles_delay",
     "KEY_BLUE": "decrease_subtitles_delay",
     "KEY_TUNER": "cycle_audio",
     "KEY_TV": "cycle_audio_back",
     "KEY_VIDEO": "increase_audio_delay",
     "KEY_AUDIO": "decrease_audio_delay"
 }
}

Once you done that, restart PMP. The final step is to reflect the changes on your Harmony devices and activities settings. You probably want to change the labels on the screen buttons.

Plex Media Player – MyHarmony Labels

Performance

This tiny device works like a charm! Thanks to hardware acceleration available on Braswell and newer chipsets, the NUC handles all video format I have been throwing at it like a boss.

It has no problems in handling 1080p HEVC (8-bit) videos. Over a dozen videos, only one which had one dropped frames occasion, but I think that was caused by network hiccup and not because the CPU/GPU was out of breath. Since this is an embedded app, I could not measure the hardware usage. What I can tell is the NUC never gets hot, or even warm, so it is certainly not stressed when decoding those movies.

The NUC Blog says that it should be able to handle 4k HEVC videos. My TV is not 4k yet, so not something I wanted to try, but good to know that it has some future-proofing.

Audio passthrough is perfect also. I can finally see the HDSUR. icon showing up on my Yamaha YSP-2500 Soundbar.

Mission accomplished. The Intel NUC5CPYH is a wonderful upgrade from Minix Z64 for a small budget dedicated HTPC.

Reader’s tip: Stuttering Issue

In case you are seeing stuttering with during video playback, and not related to audio output configuration, you may want to try enabling Allow Display Mode Switching under Settings > Video. Thanks for the note, Joe!

Shop for your Plex Media Player setup

25 Comments Intel NUC as Plex Media Player Client: Setup Guide

  1. Dan Holding

    Have one NUC fully setup and running, i5, love it. But I bought 2 more i3’s, loaded the same PMP from the same USB, install went fine… except it says Plex unreachable at boot, I have a sign-in option, but it does nothing. I do not have the LAN off in the bios. What is going on? By the way, both new units do the same thing.

    Reply
    1. Michael

      Hi Dan – Which generation of the two NUC i3’s you later tried to install PMP on? PMP Embedded has been kind of ignored by the Plex Team for over a year now. It’s possible that newer NUCs (8th generation) are not yet supported with the old LibreELEC from the latest stable version. You may want to try installing the nightlies version.

      Reply
  2. Sashi

    The embedded platform is only a client plex player as far as I’ve read, am I correct on that? Because if it is just a client player, then the hardware in the NUC won’t matter for things like transcoding? Because doesn’t transcoding only occur on the server side, correct?

    Reply
    1. Michael

      That is correct. Plex Media Player embedded device will not handle transcoding. The main reason you want to use Intel NUC for PMP embedded is for HEVC hardware support when direct streaming that video format.

      Reply
  3. BRIAN

    Curious – i am updating my NUC from the NUC5CPYH (which has been flawless BTW) to a NUC7I3BNH to get full 4K support. Would i be able to take my boot SD from the old NUC, insert into the new NUC, and just boot as normal? I’m not sure if the updated processor and iGPU would be auto-recognized by Linux and work to their full capability, or whether I need to start from scratch with a fresh install to get the Linux install correct to fully support my hardware.

    Reply
    1. Michael

      Yes, I do not believe PMP Embedded has fully support Intel Kaby Lake architecture. As far as the boot drive, I believe you can just remove and plug it to your new NUC7 machine.

      Let us know how it goes and if the 4K hardware decoding is already supported on latest Plex PMP release.

      Reply
    2. BRIAN

      Well – The SD card size has CHANGED from regular size to micro, so no moving it over. And the SD card on the NUC7I3BNH no longer is a bootable device as it was on the NUC5CPYH. I see the guide has been updated because it used to mention using the SD card as a boot device and now doesn’t mention that option. Too bad Intel took away that feature. 🙁

      Reply
      1. Michael

        Thanks for sharing your findings. It’s really too bad that they removed the ability to boot from SD card. I guess people who are using NUC as dedicated PMP device is only small in percentage and if you are using it for a PC, booting from an SSD is really the way to go.

        Reply
  4. Nick

    Hi, great guide, thank you. It inspired me to buy the set up you suggest, but I’ve got stuck. The NUC is booting with both USB sticks in, and the PMP installer main menu appears. I select 1. Install PlexMediaPlayer but the next screen that comes up says “Warning -no devices were found”. This then rakes me back to the menu again. Any ideas please? Thanks, Nick

    Reply
  5. Brian

    I put the autostart.sh file in the “.config directory, and used chmod 777 to make it executable. Not sure what I did wrong first time, but working perfectly now!

    I also renamed the key for sleep from KEY_D to KEY_SLEEP, and updated the .json file also so it now says

    “KEY_SLEEP”: “host:suspend”

    It didn’t make any difference. Pushing it once put the Nuc to sleep. Pushing it again does nothing. I believe that the Harmony is using a predefined IR signal (you are after all using the NUC profile – there makes sense it would know the IR wakeup sequence). My Harmony also works. But bet if you assign the “0” key to be host:suspend function, the “0” key won’t wake it up afterwards.

    One typo from my earlier post. “My wife hates the harmony.” And I didn’t mention the “Wake on Lan” program for a smartphone. The Nuc has to be powered up to configure it for wakeup. But once it is remembered, you just open the app and one touch and the device wakes up.

    Michael, thanks again for your article and faithfully answering questions here! I’m a new Plex user and really like it with the Nucs as players. Without this guide it would have been quite a challenge!

    Reply
    1. Michael

      Brian – I appreciate the effort in sharing experience while configuring your NUC-Plex. Thanks for contributing and making this post more resourceful.

      Regarding the Sleep button for NUC, I agree that it is not 100% reliable. In my case, it usually takes a couple of presses to wake the NUC from sleep. I end up either leaving it on, considering the NUC only draws ~6W on standby, or shutting it down completely when not using it. The Sleep button works to boot the device from power off mode and it takes less than a minute to have Plex Media Player ready for playing my media library.

      Reply
  6. Brian

    This guide was very helpful! Thought I would mention a couple of other items of interest to future readers, and ask a couple questions:

    1 – A remote is not necessary if you have a smartphone. The plex app on the phone can attach (similar to Chromecast) to this player. As you navigate on your phone you’ll be navigating on the NUC and see it on your TV. When you play, it only plays on the NUC. There is also a way to bring up a simple remote (very basic – just arrows, enter, and previous). Casting works better IMO. See my note below about powering the NUC out of sleep. You’ll need that too if you don’t want the NUC on 24×7.

    2 – Although that is awesome and all, a remote in hand is better. Having to unlock your phone every time you want to control the TV is a pain. My wife also with Harmony. I am really describing my second NUC setup here, my first used my Harmony and works great. But this one is in our bedroom and used mostly by my wife. I really didn’t want to have to buy more Harmonies for her (and perhaps future) media players – the NUC is expensive enough. So I sought to use an old TIVO remote (some refer to as the “peanut”). I have 3 or 4 of those left over from an earlier age. Advantage is that it has vol +/-, tv power, and mute keys that you can program in the remote to control your TV functions. And has a nice array of other buttons for normal and some advanced functions. I put in fresh batteries, found the Samsung code and got it working with the TV, and started aiming my remote at the NUC. You should know that PMP will log every remote button press, so you can tell if your remote is recognized and what button you are pressing. PMP was seeing my Harmony presses but NOT my peanut. Crap.

    I am a good Googler and found a lot of info, but nothing to explain how to get a random remote to work on a computer running OpenELEC (Generic x64) PLEX. I did find instructions for FLIRC, but that cheats and emulates like a keyboard (actually a good solution, but another thing to buy that I shouldn’t have to).

    Based on all my Googling, I learned about irrecord. So, I used it to capture a configuration for my remote, and created a lircd.conf file. I used the following command to load it:

    ir-keytable -c -p NEC,RC-5,RC-6,JVC,SONY,LIRC,OTHER -w /storage/.local/share/plexmediaplayer/lircd.conf

    No luck – got several error messages:

    Seems the irrecord created rows that looked like this …
    KEY_NUMERIC_0 0xA10C8C43 0xFFFFFFFFFFFFFFFF

    that needed to be reformatted to look like this:
    0xA10C8C43 KEY_NUMERIC_0

    After that change, the errors disappeared, YES

    I created my .json file as described in the article (won’t go into details, that is well covered)

    Voila – I have a 100% working remote with a piece of trash I’d almost thrown away 10 times. The sense of joy was overwhelming :)!

    So now to the easy part – getting my lircd.conf to load on boot. I tried putting my lircd.conf in every directory I thought might make sense to get it to be recognized on boot. Nope. I found several references from OpenELEC forums and articles about an autostart.sh file. Created one and added the ir-keytable line. No go. Considered trying to pry the .conf file into the “SYSTEM”, an .ISO file on the root of the flash – to put in a read-only directory that apparently is configured from the .ISO, but didn’t go there, maybe will try one day. But for now, once per boot I have to ssh in and run that command. Hoping there is simple way to place my file or way to add to some autostart script to make this happen automagically.
    The other problem I had was getting the darn NUC out of sleep mode. (See below).

    One quick comment on the Irrecod. READ THE INSTRUCTIONS. You don’t want to press TV-specific buttons while using it to configure for the new remote. Or try to configure buttons from two remotes at once. If you do, it doesn’t compute and you’ll get an error. Seem all buttons on a remote for a set based on a set of numerical values. Irrecord figures these out as you press lots of different buttons. But throwing in other buttons that don’t belong to the same set confuses it.

    WAKING FROM SLEEP MODE – The last hurdle was power. one problem you’ll find is that you have no way to get the NUC out of sleep. After doing my initial setup with my Harmony and having no issues, it didn’t occur to me that I’d have this trouble. If your remote has a learning feature, you may be able to learn the NUC’s special IR command. But I found an easy to use app to send a magic packet to wake the NUC. Works fine. WAF may take a small hit on this – but may be the way it is. One inch from glory. 🙂
    So my two questions:
    1. How do you get the Plex PMP OpenELEC to either run a command on boot, or place a custom remote control configuration in the right place so it is loaded by default?
    2. How to set NUC’s wake from IR code (or other options to wake a NUC)?

    Hope this helps others!

    Reply
    1. Michael

      Thanks Brian for sharing such elaborate tip!

      To answer your question:
      1. You should be able to make PMP Embedded to run a shell script on boot by putting it on ~/.config/autostart.sh. Here is an example used to fix the default timezone. Hopefully it can give you an idea on where to start.
      2. I can boot/wake the NUC from my Harmony One remote. If you see my LIRC.json file above, the function key for this is set under "KEY_SLEEP": "host:suspend"

      Reply
  7. Wesley

    Thanks for the write up, it was helpful in a lot of ways. I actually bought the NUC7i3XXX which is not supported in the Harmony Database, but added the model you gave and it works, sort of, I am running windows, and it always sees the remote as a KEYBOARD and red/green/blue etc don’t work.. they put out something like this.

    2017-02-09 10:40:22 [ DEBUG ] InputComponent.cpp @ 152 – Input received: source: “Keyboard” keycode: “ៀ\uDC23” : InputBase::InputkeyState(KeyUp)

    which makes it hard to doing anything with

    Reply
    1. Michael

      Hi Wesley – Which Harmony remote do you use? I am assuming it is not the IR-based one. Since mine is not HUB-based Harmony remote, I am not really sure how it works but probably by simulating as keyboard. Have you tried to change the button settings through MyHarmony app, just to see if you can reassign the red/green/blue buttons as different commands.

      Reply
  8. Zbigniew

    Thanks for this writeup 🙂 It was very useful and only tiny bit frustrating due to the incorrect path where to put the mapping file, which should be /storage/.local/share/plexmediaplayer/inputmaps
    BTW, I’m using your mapping file with a Logitech Harmony Ultimate (with the HUB) and it seems to be working just fine 🙂

    Reply
  9. 1337g33k

    I’m thinking about doing this…have you tried playing movies over wifi from a separate plex server in your house, and if so, what’s the performance like?

    Reply
    1. Michael

      That is exactly how I set it up. The Plex server is in another room and media is streamed over WiFi with connection speed capped at 450Mbit/s. I’m pretty sure the actual speed is lower than that, considering the NUC machine never get 100% reception. No issues with normal playback. Fast forwarding and rewinding is certainly not as smooth as when both Plex Server and Player are on the same machine. But you will get used to it soon enough.

      Reply
  10. damien

    cool blog. I also have a NUC and use embedded (I use OPHT embedded). Huge life changer, when I get rid myself of windows and use my NUC as an appliance. FYI, you can see your hardware usage when running embedded by hitting “info” or I on a keyboard while a video is playing. Keep up the good work.

    Reply
    1. Michael

      Thanks Damien – Glad to meet another enthusiast from this post. Yes, you can open the info screen on embedded PMP when playing back a movie. That was how I could 100% confirm the 7.1 DTS-HD worked. My Yamaha Soundbar doesn’t actually show the audio channel encoding, only whether it is “SUR.”, “HD SUR.” or none (stereo).

      Reply

Leave a Reply