Transcoding with 11th Gen Celeron CPU

· 2 min read
Transcoding with 11th Gen Celeron CPU
Photo by Sebastian Kanczok / Unsplash

In a bid to further reduce the power consumption of my always on services such as Plex I obtained a cheap mini pc with a Celeron N5105 CPU which has a TDP of only 10 Watts and having Intel Quicksync on it would provide the required hardware transcoding needed for remote streaming etc.

I installed and updated Ubuntu 22.04, configured docker and started off with a Jellyfin installation to test so that I didn't have multiple plex servers showing up when people logged on.

The test movies were playing locally as direct stream so I forced them to transcode and was greeted by instant failure to play. This surprised me as my old mini pc worked fine so the newer one even though it's a low power CPU has similar capabilities to the old CPU so I assumed that it should just work. Yeah, well, we all know what they say about assume!!!

After some digging I discovered that there are driver issues with these newer generation of PCs in the kernel.

I found several "fixes" which stated adding options i915 enable_guc=2 to /etc/modprobe.d/i915.conf and running update-initramfs -u followed by a reboot solved the issue. In short, this didn't work and after some more google-fu I found this on the jellyfin site.

From the jellyfin hardware acceleration docs:

For Jasper Lake and Elkhart Lake chips (such as N5095, N6005 and J6412), Low-Power encoding must be enabled. There's a known kernel issue on these chips in linux 5.15 that comes with Ubuntu 22.04 LTS preventing you from using Low-Power. You may need to upgrade kernel for this. The linux-firmware support is not included in Ubuntu 20.04.3 LTS. Any Ubuntu from 21.10 does include the required drivers.

I therefore updated to kernel 5.19 (as of October 2022, 5.19.15) and tried again. Still no dice, however, when running update-initramfs there were warnings about possibly missing firmware, including ehl_guc_70.1.1 so I downloaded the lastest versions from https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915, copied them to /usr/lib/firmware/i915 and this time we had success with hardware transcoding.

Short version for hardware transcoding on these CPUs with Ubuntu 22.04

  • Upgrade kernel to 5.19
  • Download firmware files for i915 and copy them to /usr/lib/firmware/i915
  • Configure /etc/modprobe.d/i915.conf (add options i915 enable_guc=2)
  • run update-initramfs -u and reboot
  • Bask in the glory of low powered CPU using it's GPU to transcode when required.