Debian seemed to work for me, I couldn’t install Ubuntu on my Odroid H3.
The following steps will outline the install process to enable N5105 Plex Hardware Transcoding. At the time this was written, Plex was aroud 1.31.x and didn’t support Linux 5.15+. My solution involves installing Debian 11.5 which is Linux 5.10. Cheers!
— Install notes
Install Debian 11.5, I use the net install: https://cdimage.debian.org/mirror/cdimage/archive/11.5.0/amd64/iso-cd/debian-11.5.0-amd64-netinst.iso
1.) Install Intel i915 driver (part of firmware-linux-nonfree)
edit etc/apt/sources to include non-free
su -l
vi /etc/apt/sources.list
comment this line
deb Index of /debian bullseye main
add this line:
deb Index of /debian bullseye main non-free
apt update
apt install firmware-linux-nonfree
2.) Configure Intel driver
add force_probe and enable_guc to /etc/modprobe.d/i915.conf
su -l
vi /etc/modprobe.d/i915.conf
options i915 force_probe=4e61
options i915 enable_guc=2
update-initramfs -u
2.) Install plex
su -l
apt install gpg
wget -O- https://downloads.plex.tv/plex-keys/PlexSign.key | gpg --dearmor | tee /usr/share/keyrings/plex.gpg
echo deb [signed-by=/usr/share/keyrings/plex.gpg] https://downloads.plex.tv/repo/deb public main | tee /etc/apt/sources.list.d/plexmediaserver.list
apt update
apt install plexmediaserver
reboot now
— why?
why options i915 force_probe=4e61?
force_probe=4e61 is required because the default 5.10 kernel doesn’t seem to like the Intel drive, so it needs to be forced to load. Run dmesg after installing firmware-linux-nonfree to see this…
su -l
dmesg > dmesg.txt
vi dmesg.txt
[ 2.916017] i915 0000:00:02.0: Your graphics device 4e61 is not properly supported by the driver in this
kernel version. To force driver probe anyway, use i915.force_probe=4e61
module parameter or CONFIG_DRM_I915_FORCE_PROBE=4e61 configuration option,
or (recommended) check for kernel updates.
what options i915 enable_guc=2?
enable_guc=2 is required because Plex hardware transcoding seems to need “HuC load” configured. To determine “Huc load” look at the output of modinfo i915.
su -l
modinfo i915 | grep guc
firmware: i915/skl_guc_33.0.0.bin
firmware: i915/bxt_guc_33.0.0.bin
firmware: i915/kbl_guc_33.0.0.bin
firmware: i915/glk_guc_33.0.0.bin
firmware: i915/kbl_guc_33.0.0.bin
firmware: i915/cml_guc_33.0.0.bin
firmware: i915/icl_guc_33.0.0.bin
firmware: i915/ehl_guc_33.0.4.bin
firmware: i915/tgl_guc_35.2.0.bin
firmware: i915/tgl_guc_35.2.0.bin
parm: enable_guc:Enable GuC load for GuC submission and/or HuC load. Required functionality can be selected using bitmask values. (-1=auto, 0=disable [default], 1=GuC submission, 2=HuC load) (int)
parm: guc_log_level:GuC firmware logging level. Requires GuC to be loaded. (-1=auto [default], 0=disable, 1…4=enable with verbosity min…max) (int)
parm: guc_firmware_path:GuC firmware path to use instead of the default one (charp)

