Intel Arc A380 as a Plex Media Server Transcoding Accelerator on Linux

Previously, if one wanted hardware accelerated transcoding in one’s Plex Media Server, the options were to either use a Nvidia card, or use an Intel CPU with QuickSync (and a platform that enables the iGPU). With Intel releasing the Arc series of GPUs, a 3rd option emerged. Recently, low profile variants of both the Arc A380 and Arc A310 have become widely available, presenting a low cost, low power, and easy to fit hardware transcoding option. On the software side, not much is needed to get hardware accelerated transcoding working with the Arc A380/A310.

Drivers

First up, you will need the Intel graphics drivers in your kernel. Check your distro’s guides for how to do this (Gentoo has a fairly good wiki entry on this). One item to note, the choice of whether to compile the driver as a module or include it in the kernel depends on your setup. A general rule of thumb that has worked for me: if you use an initramfs, compile the DRM_I915 driver as a module; if you use efistub as your bootloader, build the driver into your kernel and include the firmware into the kernel image.

If you need to include the firmware into the kernel image (building the DRM_I915 driver into the kernel instead of as a module), you will need to install the linux-firmware package before compiling your kernel. Under the firmware loader settings, you’ll need to include the following firmware blobs: the dg2_dmc, dg2_guc, and dg2_huc. As of Linux 6.4.13 these are the versions the i915 driver will want: i915/dg2_dmc_ver2_08.bin i915/dg2_guc_70.bin i915/dg2_huc_gsc.bin

Userland

After rebooting with the new kernel, within the Plex Settings, under the Transcoding section, enabling hardware acceleration should be available. Additionally, the Arc A380/A310 should show up in the Hardware transcoding device dropdown. Make sure both “Use hardware acceleration when available” and “Use hardware-accelerated video encoding” are checked. For the “Hardware transcoding device” option, if you have other GPUs, you may want to select the Arc device so it is targeted. Don’t forget to press the “Save Changes” button.

While Plex is now finding the device, it still may not be able to use it just yet. If libva isn’t installed, Plex will not be able to use the Arc GPU for transcoding. For funtoo users, ensure that your profile has the gfxcard-intel mix-in (for Gentoo make sure you have intel in your VIDEO_CARDS setting in make.conf) and then install libva. At this point, hardware transcoding should work. You can double check this by using intel_gpu_top while playing a video. Another method of checking if hardware transcoding is working is through the “Now Playing” section of the Plex dashboard. If you see a (hw) next to the codec and the word Transcode in the video section, hardware transcoding is working.

Note that getting hardware transcoding working with Plex Media Server only required the Intel graphics Linux kernel driver, some firmware blobs, and libva. X server, Wayland, a window manager, and desktop environment were not needed or installed.

-John Havlik

Funtoo Plex Media Server Overlay

Both Gentoo and Funtoo provide Plex Media Server within their portage repositories via the plex-media-server ebuild. However, lately, Funtoo’s plex-media-server ebuild within media-kit has fallen behind Plex releases. The quick solution is to use Ghent’s funtoo-plex overlay. With Funtoo moving to kits, local overlays are quite easy to use.

Assuming an install setup per the Funtoo default kits instructions, start by creating a directory for your overlays. Then, clone Ghent’s funtoo-plex overlay:

mkdir /var/git/overlay
cd /var/git/overlay
git clone https://github.com/Ghent/funtoo-plex.git

At the time of writing, Ghent’s overlay is still configured for a pre-kits setup. Fortunately, migrating to a kits compatible setup is straight forward: open up /var/git/overlay/funtoo-plex/metadata/layout.conf and replace masters = gentoo with masters = core-kit.

The last step is to create /etc/portage/repos.conf/funtoo-plex.conf. Place the following into /etc/portage/repos.conf/funtoo-plex.conf:

[DEFAULT]
main-repo = core-kit

[funtoo-plex]
location = /var/git/overlay/funtoo-plex
auto-sync = no
priority = 10

Now, running emerge -av plex-media-server should grab the newer ebuilds from Ghent’s funtoo-plex overlay. Note that you will need to occasionally pull the latest master branch in the repo using git pull origin master from within /var/git/overlay/funtoo-plex/.

-John Havlik

[end of transmission, stay tuned]

Tagged: ,
Updated:

Plex Home Theater + Funtoo on Intel’s NUC DN2820FYKH

Plex is really awesome. It has a server component that I’ve had running on my home server for over a year now. There are apps for Roku, Windows 8 and Android (I have all three) which automatically find my local server and can stream from it. The Android Plex app can even act as a remote for other Android, Roku, Windows 8, and the Plex Home Theater client. Rather than dive in a try to get Plex Home Theater running on raspberrypi, I went with the new NUC DN2820FYKH.

Continue reading