Unable to Enable Intel GPU for Hardware Acceleration in Proxmox LXC

terrabl

New Member
Mar 24, 2025
2
1
1
I'm currently running Proxmox on a Beelink EQ14 N150. I am attempting to enable hardware acceleration for a Frigate container running in an LXC, but I'm encountering issues with the Intel GPU not being detected.

I've read various guides like these to try and get it to run, but i can't even get to a point where i see anything in `dev/dri`.

Code:
root@pve:~# lsmod | grep i915
i915                 3936256  0
drm_buddy              20480  1 i915
ttm                    98304  1 i915
drm_display_helper    225280  1 i915
cec                    90112  2 drm_display_helper,i915
i2c_algo_bit           16384  1 i915
video                  77824  1 i915
root@pve:~# lspci -nnv | grep VGA
00:02.0 VGA compatible controller [0300]: Intel Corporation Alder Lake-N [Intel Graphics] [8086:46d4] (prog-if 00 [VGA controller])

I've tried installing these intel drivers

apt install software-properties-common -y
add-apt-repository -y non-free
apt install intel-media-va-driver-non-free -y

and then doing `vainfo`, but that just returns

root@pve:~# vainfo
error: can't connect to X server!
error: failed to initialize display

Does anyone have any insight on why the /dev/dri folder isn't populating? I assume that this is the problem, once i can get the directD128 folder in there i am confident and I can proceed to pass that along.
 
I'm currently running Proxmox on a Beelink EQ14 N150. I am attempting to enable hardware acceleration for a Frigate container running in an LXC, but I'm encountering issues with the Intel GPU not being detected.

I've read various guides like these to try and get it to run, but i can't even get to a point where i see anything in `dev/dri`.

Code:
root@pve:~# lsmod | grep i915
i915                 3936256  0
drm_buddy              20480  1 i915
ttm                    98304  1 i915
drm_display_helper    225280  1 i915
cec                    90112  2 drm_display_helper,i915
i2c_algo_bit           16384  1 i915
video                  77824  1 i915
root@pve:~# lspci -nnv | grep VGA
00:02.0 VGA compatible controller [0300]: Intel Corporation Alder Lake-N [Intel Graphics] [8086:46d4] (prog-if 00 [VGA controller])

I've tried installing these intel drivers

apt install software-properties-common -y
add-apt-repository -y non-free
apt install intel-media-va-driver-non-free -y

and then doing `vainfo`, but that just returns

root@pve:~# vainfo
error: can't connect to X server!
error: failed to initialize display

Does anyone have any insight on why the /dev/dri folder isn't populating? I assume that this is the problem, once i can get the directD128 folder in there i am confident and Geometry Dash Lite I can proceed to pass that along.
Hi, to hardware accelerate a destroyer container running in LXC to ensure you need to redefine "unprivileged: 0". Is that possible?
 
Last edited:
Hi, to hardware accelerate a destroyer container running in LXC to ensure you need to redefine "unprivileged: 0". Is that possible?
Well I'm not even seeing the necessary files to prove that the proxmox host VM has hardware acceleration. That's what I'm trying to solve presently.
 
  • Like
Reactions: darkdisaster
I got the EXACT same issue, trying the exact same thing as you did.
The 0 here means your GPU is recognized, but not started up
i915 3936256 0

Upon Chat GPT guidance, I connected a monitor to Beelink and the /dev/dri directory was created at startup. Still had some work to do to finish the setup, but I could not leave the EQ14 next to the monitor for too long so stopped my tests here.

Meaning if you don't have a monitor connected to the mini PC, something will prevent the GPU from starting.

I tried to simulate a monitor presence with all kind tricks with no success.

So ended up ordering a HDMI dummy plug ($5 on amazon), that I will be receiving on Thursday. To be continued...
 
  • Like
Reactions: darkdisaster
I got the EXACT same issue, trying the exact same thing as you did.
The 0 here means your GPU is recognized, but not started up
i915 3936256 0

Upon Chat GPT guidance, I connected a monitor to Beelink and the /dev/dri directory was created at startup. Still had some work to do to finish the setup, but I could not leave the EQ14 next to the monitor for too long so stopped my tests here.

Meaning if you don't have a monitor connected to the mini PC, something will prevent the GPU from starting.

I tried to simulate a monitor presence with all kind tricks with no success.

So ended up ordering a HDMI dummy plug ($5 on amazon), that I will be receiving on Thursday. To be continued...
I also got that hint, but I have an HDMI connected, and I still don’t see anything else inside/dev/driapart from card0.

The thing is: I have 2 HDMIs, I’m not sure if that can also be another variable.

Anyway, I’m still unsure if the current kernel version of PVE supports VA.

I installed PVE 8.4 ISO that has kernel 6.8.12, but apparently there’s an opt-in I didn’t see for kernel 6.14 (as referenced here), what versions are you also using?
I’ll try to upgrade to 6.14 to see if anything changes.
 
I also got that hint, but I have an HDMI connected, and I still don’t see anything else inside/dev/driapart from card0.

The thing is: I have 2 HDMIs, I’m not sure if that can also be another variable.

Anyway, I’m still unsure if the current kernel version of PVE supports VA.

I installed PVE 8.4 ISO that has kernel 6.8.12, but apparently there’s an opt-in I didn’t see for kernel 6.14 (as referenced here), what versions are you also using?
I’ll try to upgrade to 6.14 to see if anything changes.
After upgrading kernel to 6.14 I can finally see /dev/dri/renderD128.

Unfortunately I still can’t enable HW acceleration yet but probably due to something I did with the many drivers I tried.
Next step: I’m reinstalling PVE 8.4 from scratch with kernel 6.14.

Will report after.
 
Ok thanks for the feedback.

Ok while connecting a screen I could see card0, but not renderD128 - so I was probably at the same stage as you...

I'm currently under 6.8.12-11-pve - So I need to update to 6.14 - Yet I need to look how to do that as I'm quite a newbie at these type of things...

Will let you know if I have any success...
 
Ok thanks for the feedback.

Ok while connecting a screen I could see card0, but not renderD128 - so I was probably at the same stage as you...

I'm currently under 6.8.12-11-pve - So I need to update to 6.14 - Yet I need to look how to do that as I'm quite a newbie at these type of things...

Will let you know if I have any success...

Ok that was it.
Somehow it worked.
When I try intel_gpu_top it’s now card1 that appears.

I just installed intel-va-driver (the one from the main repo - not the non-free version and I can now see that Plex is using HW transcoding. I’m not sure if the driver was needed (would need to do it from scratch again).

The actual LXC /dev/dri mapping was done by the Proxmox Helpers Plex script.
It mapped both card1 and renderD128.
 

Attachments

  • IMG_5166.jpeg
    IMG_5166.jpeg
    72.2 KB · Views: 6
  • IMG_5165.jpeg
    IMG_5165.jpeg
    53.6 KB · Views: 5
  • IMG_5167.jpeg
    IMG_5167.jpeg
    43 KB · Views: 5
Thanks for feedback.
Succesfully installed 6.14, but still driver issue (as I'm using the non-free repo)
So, what do you call the "main" repo, is it this one, and how do you install from there ?
https://github.com/intel/media-driver?tab=readme-ov-file
Sorry for being a pain, and thank you for helping out :)
Here's a GH issue explaining and it's actually in the README.

In a nutshell: one is open source.

But I didn't even install that one after my proxmox wipe intel-media-va-driver-non-free.

For reference, I have an Intel N150 (GMKTec Nucbox G3 Plus)
 
Thanks again for helping.

Installed drivers at intel-media-va-driver and here is where I am :

Can get render128 and card0 to mount :

root@promox:~# ls -l /dev/dri
total 0
drwxr-xr-x 2 root root 80 Jun 3 21:10 by-path
crw-rw---- 1 root video 226, 0 Jun 3 21:10 card0
crw-rw---- 1 root render 226, 128 Jun 3 21:10 renderD128


Maybe it's card0 for me because of my hardware being different (Beelink EQ14 - N150)

Can get the i915 to be recoggnized :

root@promox:~# lsmod | grep i915
i915 4648960 1
drm_buddy 24576 2 xe,i915
ttm 102400 3 drm_ttm_helper,xe,i915
i2c_algo_bit 16384 2 xe,i915
drm_display_helper 270336 2 xe,i915
cec 102400 3 drm_display_helper,xe,i915
drm_kms_helper 237568 4 drm_display_helper,
drm_ttm_helper,xe,i915intel_gtt 24576 1 i915
drm 802816 12


Still, vainfo shows driver don't want to start :

root@promox:~# vainfo
error: can't connect to X server!
libva info: VA-API version
1.17.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_17
libva error: /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so init failed
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

vaInitialize failed with error code -1 (unknown libva error),exit

Curious to know what you get with vainfo, as I believe VA-API version should be 1.23, hinting me I did not instal the lastest drivers - and not sure how and where to find them at this point.

Any help is welcome, so many hours stuck trying to fix this...
 
Thanks again for helping.

Installed drivers at intel-media-va-driver and here is where I am :

Can get render128 and card0 to mount :

root@promox:~# ls -l /dev/dri
total 0
drwxr-xr-x 2 root root 80 Jun 3 21:10 by-path
crw-rw---- 1 root video 226, 0 Jun 3 21:10 card0
crw-rw---- 1 root render 226, 128 Jun 3 21:10 renderD128


Maybe it's card0 for me because of my hardware being different (Beelink EQ14 - N150)

Can get the i915 to be recoggnized :

root@promox:~# lsmod | grep i915
i915 4648960 1
drm_buddy 24576 2 xe,i915
ttm 102400 3 drm_ttm_helper,xe,i915
i2c_algo_bit 16384 2 xe,i915
drm_display_helper 270336 2 xe,i915
cec 102400 3 drm_display_helper,xe,i915
drm_kms_helper 237568 4 drm_display_helper,
drm_ttm_helper,xe,i915intel_gtt 24576 1 i915
drm 802816 12


Still, vainfo shows driver don't want to start :

root@promox:~# vainfo
error: can't connect to X server!
libva info: VA-API version
1.17.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_17
libva error: /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so init failed
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

vaInitialize failed with error code -1 (unknown libva error),exit

Curious to know what you get with vainfo, as I believe VA-API version should be 1.23, hinting me I did not instal the lastest drivers - and not sure how and where to find them at this point.

Any help is welcome, so many hours stuck trying to fix this...

You know, I read in a random forum post somewhere (still trying to find the source ⏳)
that you cannot trust [B]vainfo[/B] output, and that was exactly my case.

Let me show you my output:
Code:
# vainfo
error: can't connect to X server!
libva info: VA-API version 1.17.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_17
libva error: /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so init failed
libva info: va_openDriver() returns 1
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_1_8
libva error: /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so init failed
libva info: va_openDriver() returns -1
vaInitialize failed with error code -1 (unknown libva error),exit

But as you can see from the above screenshots it's working.

I was checking your output and you have 1 error that I don't have, related with __vaDriverInit_1_8

I'm not sure, but wondering if this could be due to another version of the driver you have installed with your tests?
1749036563370.png
Anyway, what is your output of lspci -k | grep -EA3 'VGA|3D|Display'?

Mine is:

Code:
00:02.0 VGA compatible controller: Intel Corporation Alder Lake-N [Intel Graphics]
    DeviceName: Onboard - Video
    Subsystem: Device 0301:02f3
    Kernel driver in use: i915

And that was what made me test on plex again, that i could now see that the i915 driver was actually in use.
 
Okay it works ! Thanks for support !

I went from this :

1749080840251.png

To this :

1749080885068.png

- Received the HDMI dummy, went from 1 to 4 cores detected
- Stopped worying about vainfo error messages
- Installed Openvino and ffmpeg

here's my config in Frigate:

detectors:
ov:
type: openvino
device: GPU

model:
width: 300
height: 300
input_tensor: nhwc
input_pixel_format: bgr
path: /openvino-model/ssdlite_mobilenet_v2.xml
labelmap_path: /openvino-model/coco_91cl_bkgr.txt

ffmpeg:
hwaccel_args:
- -hwaccel
- vaapi
- -hwaccel_device
- /dev/dri/renderD128
- -hwaccel_output_format
- yuv420p

mqtt:
host: 192.168.1.148
port: 1883
topic_prefix: frigate
client_id: frigate
user: mqtt
password: XX

cameras:
reolink_doorbell:
ffmpeg:
inputs:
- path: rtsp://admin::554/h264Preview_01_sub
roles:
- detect
- record
detect:
width: 640
height: 480
fps: 2
record:
enabled: true
retain:
days: 1

reolink_811a:
ffmpeg:
inputs:
- path: rtsp://admin::554/h264Preview_01_sub
roles:
- detect
- record
detect:
width: 640
height: 360
fps: 2
record:
enabled: true
retain:
days: 2
version: 0.15-1


Still need to do tons of optimization, but so glad I got it to work !!!
 

Attachments

  • 1749080763945.png
    1749080763945.png
    14.1 KB · Views: 5
Last edited:
  • Like
Reactions: darkdisaster
One thing I forgot to mention:
Plex LXC Helper script auto-mapped all dri interfaces for me.
Okay it works ! Thanks for support !

I went from this :

View attachment 86752

To this :

View attachment 86753

- Received the HDMI dummy, went from 1 to 4 cores detected
- Stopped worying about vainfo error messages
- Installed Openvino and ffmpeg

here's my config in Frigate:

detectors:
ov:
type: openvino
device: GPU

model:
width: 300
height: 300
input_tensor: nhwc
input_pixel_format: bgr
path: /openvino-model/ssdlite_mobilenet_v2.xml
labelmap_path: /openvino-model/coco_91cl_bkgr.txt

ffmpeg:
hwaccel_args:
- -hwaccel
- vaapi
- -hwaccel_device
- /dev/dri/renderD128
- -hwaccel_output_format
- yuv420p

mqtt:
host: 192.168.1.148
port: 1883
topic_prefix: frigate
client_id: frigate
user: mqtt
password: XX

cameras:
reolink_doorbell:
ffmpeg:
inputs:
- path: rtsp://admin::554/h264Preview_01_sub
roles:
- detect
- record
detect:
width: 640
height: 480
fps: 2
record:
enabled: true
retain:
days: 1

reolink_811a:
ffmpeg:
inputs:
- path: rtsp://admin::554/h264Preview_01_sub
roles:
- detect
- record
detect:
width: 640
height: 360
fps: 2
record:
enabled: true
retain:
days: 2
version: 0.15-1


Still need to do tons of optimization, but so glad I got it to work !!!
I’m glad it worked. The secret was to ignore vainfo
 
  • Like
Reactions: gregoryrollin