Intel iGPU passthrough not working for App (ARM)

Hi there,

im fairly new to having my own home server and therefore for sure beeing a newbie to TrueNNAS SCALE as well, so if you need additional information please ask and maybe write shortly where i could get it.

My problem is the following:

I want to use the iGPU to transcode via quick sync my DVD rips per “Automatic Ripping Machine”. But nothing i do seems to make it possible to pass the iGPU to the App as Handbrake breaks when trying to use quick sync.

GPU: Intel Corporation RocketLake-S GT1 [UHD Graphics 730] (rev 04)

CPU: 11th Gen Intel(R) Core™ i5-11400 @ 2.60GHz CPU

Board: Aspire TC-1660

TrueNAS Version: 25.10.3 - Goldeye

So far I got the following output of the container shell with GPU passthrough enabled:

HandBrakeCLI --help | grep -i “qsv”:

[21:43:31] Compile-time hardening features are enabled
Cannot load libnvidia-encode.so.1
[21:43:31] vcn: not available on this system
[21:43:31] hb_display_init: attempting VA default driver
libva info: VA-API version 1.14.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: va_openDriver() returns -1
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: va_openDriver() returns -1
[21:43:31] hb_display_init: attempting VA driver 'iHD'
libva info: VA-API version 1.14.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: va_openDriver() returns -1
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: va_openDriver() returns -1
[21:43:31] hb_display_init: attempting VA driver 'i965'
libva info: VA-API version 1.14.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: va_openDriver() returns -1
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: va_openDriver() returns -1
[21:43:31] hb_qsv_make_adapters_list: MFXVideoCORE_QueryPlatform failed impl=0 err=-16
[21:43:31] hb_display_init: attempting VA default driver
libva info: VA-API version 1.14.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: va_openDriver() returns -1
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: va_openDriver() returns -1
[21:43:31] hb_display_init: attempting VA driver 'iHD'
libva info: VA-API version 1.14.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: va_openDriver() returns -1
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: va_openDriver() returns -1
[21:43:31] hb_display_init: attempting VA driver 'i965'
libva info: VA-API version 1.14.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: va_openDriver() returns -1
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: va_openDriver() returns -1
[21:43:31] qsv: is available on this system
[21:43:31] hb_init: starting libhb thread
[21:43:31] thread 7fd818d5b640 started ("libhb")
                           Use 'qsv' to enable QSV decoding    

And without GPU passthrough enabled:

[21:47:04] Compile-time hardening features are enabledCannot load libnvidia-encode.so.1
[21:47:04] vcn: not available on this system
[21:47:04] hb_qsv_make_adapters_list: MFXVideoCORE_QueryPlatform failed impl=0 err=-16
[21:47:04] qsv: is available on this system
[21:47:04] hb_init: starting libhb thread
[21:47:04] thread 7f2dd67fc640 started (“libhb”)Use ‘qsv’ to enable QSV decodingHandBrake has exited.

On the contrary when enabling GPU passthrough i get for ls -ln /dev/dri

# ls -ln /dev/dri
total 0
drwxr-xr-x 2 0   0       80 May  2 16:33 by-path
crw-rw---- 1 0  44 226,   0 May  2 16:33 card0
crw-rw---- 1 0 107 226, 128 May  2 16:33 renderD128
# id
uid=0(root) gid=0(root) groups=0(root),24(cdrom),568(arm)

When disabling GPU passthrough /dev/dri does not get passed and is not found. I´m a little bit puzzled as ARM works fine when using software transcoding and also shows that quicksync is supported. But trying h.256 per qs results in an error message.

What am i doing wrong? Any idea on how to proceed is highly appreciated!

Thanks in advance!

-Phil

Alright,

so i got a workaround for now. As there are some posts in the forum for the same problem i will share quickly my solution. In case anyone stumbles upon the thread in the future :wink:

Turns out that the deactivation of qsv (and HW transcoding) is intentional for now by the ARM devs. There seem to be some fixes (and probably an integration in the near future), but what worked for me was the use of a custom docker file and use that as a custom app in TrueNAS scale.

I simply used docker on Windows, build it, made myself an account and deployed it. The creation of the custom app is a bit more "complicated” then pre-build ones, but most of it is rather similar. Make sure to pass the drives and the GPU passthrough, as well as give it priviliged rights (check the box) for accessing the drive.

That was some intense learning curve there!

The file that worked for me by Stormtrooper5555:

Clarification needed: QuickSync Setup with dockerized ARM on Ubuntu · Issue #909 · automatic-ripping-machine/automatic-ripping-machine

That allowed me to turn on and use HW transcoding with FFMPEG. Beware that the arguments for FFMPEG are way more kryptic than for handbrake :wink:

Cheers everyone

Philipp

1 Like