Intel Arc B50 VF XE driver on TrueNAS 25.10

First of all, please note that — as stated in the upstream i915-sriov-dkms repository — this driver is highly experimental, and you should use it at your own risk.


PS:
Although the title says “VF driver” and I’ve only tested that part,
it should also be capable of directly driving the full B50 GPU with SR-IOV on TrueNAS—and even other Battlemage cards using XE driver like the B580.
If you’ve tested it on other cards, please share your results in the comments below.


The setup itself is quite straightforward. Following just a few steps from the upstream i915-sriov-dkms README, everything can be done easily.

However, since the official kernel hasn’t yet included 6.17 support, I built and extracted the modules to avoid running install-dev-tools after every update and to quickly restore all services. I’ve uploaded them to GitHub, along with some additional details.

So, only a few steps remain:

# Download the kernel .ko files
KOVERSION=20251010
mkdir ./kofiles

wget -O ./kofiles/xe.ko \
  https://github.com/ChanningHe/truenas-intel-gpu-dkms-ko/raw/refs/heads/main/kofiles-${KOVERSION}/xe.ko
wget -O ./kofiles/intel_sriov_compat.ko \
  https://github.com/ChanningHe/truenas-intel-gpu-dkms-ko/raw/refs/heads/main/kofiles-${KOVERSION}/intel_sriov_compat.ko

# Disable readonly
zfs set readonly=off "$(zfs list -H -o name /usr)"

# Copy the .ko files
mkdir -p /lib/modules/$(uname -r)/updates/dkms/
cp ./kofiles/*.ko /lib/modules/$(uname -r)/updates/dkms/

# Update module dependencies
depmod -a

Make sure your .ko files are under /lib/modules/$(uname -r)/updates/dkms/

root@truenas[~]# modinfo xe | grep -i filename
filename:       /lib/modules/6.12.33-production+truenas/updates/dkms/xe.ko

Reboot!
And if /dev/dri/renderD128 appears, it means the driver has been successfully initialized.

root@truenas[~]# ls /dev/dri 
by-path  card0  card1  renderD128

In my case, the kernel shows some error messages, but Jellyfin still works great!

Can you share the system specifications and if you have ReBAR support? I’m assuming “yes” because libva didn’t segfault when you asked it to transcode video.

Yep

This is also documented in Jellyfin’s docs:

“Resizable-BAR is only mandatory for hardware acceleration on ARC B-series cards, or the media driver will crash the transcoder.”

Intel GPU | Jellyfin

I’ve confirmed this behavior on multiple platforms myself. With ReBAR disabled, transcoding is unreliable or outright broken; once ReBAR is enabled, hardware transcoding works normally and consistently.

For systems where the BIOS doesn’t expose a ReBAR option, this project is very helpful:

You can inject ReBAR support via a UEFI module quite easily. I’ve used this method on platforms that don’t natively support ReBAR, and after enabling it, Battlemage cards work fine for transcoding as well.

2 Likes