IDtheTarget
Dabbler
- Joined
- Oct 6, 2016
- Messages
- 22
Okay, so this took awhile to figure out, and I want to thank @waqarahmed for giving me the command that ultimately got my Quick Sync working in TrueNAS SCALE and let me pass it through to my Apps.
This post does not apply for those with nvidia cards. It only applies to those of us who intentionally purchased an Intel CPU with "Quick Sync Video" (QSV) for transcoding purposes.
First of all, a little background. If you see 'i915' in documentation or forum posts, that's a kernel driver that lets Linux use the built-in graphics of Intel CPUs.
If, when you are installing an App (such as Plex), you don't see a drop-down under "GPU Configuration", then your QSV hasn't been recognized by the server. When I saw some forum posts saying "log in and look at /dev/dri", here's what I saw:
I saw "card0" and thought that that must be my QSV. But it wasn't. It was the graphics chip on my motherboard. You see, I was further fooled by running:
That "card0" was the SECOND VGA compatible controller, the ASPEED. That lspci command didn't tell me that the kernel wasn't able to use my QSV. (for those of us, like me, who didn't know, that "Intel Corporation Device" number changes based on the chip you have. I have a Xeon E-2356G, with UHD P750 graphics, hence the "4c9a". When you do the lspci and grep the VGA, look or the Intel line and search for the number after "Device" on the Internet).
So, what I didn't know was that the kernel being used by TrueNAS Scale (which you can find using 'uname -a') is not the latest kernel, and doesn't by default know how to use the Rocket Lake and newer CPU's. What finally gave it away was:
So, as you can see, during bootup the server is telling you what's wrong. And, thankfully, @waqarahmed gave me the command that told the kernel to use my internal graphics anyway:
One caveat: During my troubleshooting process, before I got the above bit of code, I manually updated to the latest nightly of TrueNAS SCALE hoping that it would have support for my Rocket Lake processer. Sadly it did not. But that means I'm not sure if the above command will work on the stable release of SCALE. But I can tell you that it DOES work on the latest nightly. I'm not sure how to revert back to nightly, hopefully when they release the next stable update I'll be back on that.
However, the above command will bring up a drop-down under "GPU Configuration" when installing or editing your apps, letting you allocate 0 or 1 GPU. It will also change your /dev/dri directory:
Those 'card1' and 'renderD128' folders mean that the server is seeing the QSV iGPU.
Hope this helps! It's been a tough couple of weeks for me as I've been trying to learn all of this stuff. Good Luck!
This post does not apply for those with nvidia cards. It only applies to those of us who intentionally purchased an Intel CPU with "Quick Sync Video" (QSV) for transcoding purposes.
First of all, a little background. If you see 'i915' in documentation or forum posts, that's a kernel driver that lets Linux use the built-in graphics of Intel CPUs.
If, when you are installing an App (such as Plex), you don't see a drop-down under "GPU Configuration", then your QSV hasn't been recognized by the server. When I saw some forum posts saying "log in and look at /dev/dri", here's what I saw:
benjamin@athena:/$ ls -alh /dev/dri
total 0
drwxr-xr-x 3 root root 80 Mar 19 09:40 .
drwxr-xr-x 18 root root 4.1K Mar 19 09:41 ..
drwxr-xr-x 2 root root 60 Mar 19 09:40 by-path
crw-rw---- 1 root video 226, 0 Mar 19 09:40 card0
I saw "card0" and thought that that must be my QSV. But it wasn't. It was the graphics chip on my motherboard. You see, I was further fooled by running:
benjamin@athena:/$ lspci | grep -i vga
00:02.0 VGA compatible controller: Intel Corporation Device 4c9a (rev 04)
03:00.0 VGA compatible controller: ASPEED Technology, Inc. ASPEED Graphics Family (rev 52)
That "card0" was the SECOND VGA compatible controller, the ASPEED. That lspci command didn't tell me that the kernel wasn't able to use my QSV. (for those of us, like me, who didn't know, that "Intel Corporation Device" number changes based on the chip you have. I have a Xeon E-2356G, with UHD P750 graphics, hence the "4c9a". When you do the lspci and grep the VGA, look or the Intel line and search for the number after "Device" on the Internet).
So, what I didn't know was that the kernel being used by TrueNAS Scale (which you can find using 'uname -a') is not the latest kernel, and doesn't by default know how to use the Rocket Lake and newer CPU's. What finally gave it away was:
benjamin@athena:/$ sudo dmesg | grep i915
[ 12.537909] i915 0000:00:02.0: Your graphics device 4c9a is not properly supported by the driver in this
kernel version. To force driver probe anyway, use i915.force_probe=4c9a
So, as you can see, during bootup the server is telling you what's wrong. And, thankfully, @waqarahmed gave me the command that told the kernel to use my internal graphics anyway:
benjamin@athena:/$ sudo midclt call system.advanced.update '{"kernel_extra_options": "i915.force_probe=4c9a"}'
One caveat: During my troubleshooting process, before I got the above bit of code, I manually updated to the latest nightly of TrueNAS SCALE hoping that it would have support for my Rocket Lake processer. Sadly it did not. But that means I'm not sure if the above command will work on the stable release of SCALE. But I can tell you that it DOES work on the latest nightly. I'm not sure how to revert back to nightly, hopefully when they release the next stable update I'll be back on that.
However, the above command will bring up a drop-down under "GPU Configuration" when installing or editing your apps, letting you allocate 0 or 1 GPU. It will also change your /dev/dri directory:
benjamin@athena:/$ ls -alh /dev/dri
total 0
drwxr-xr-x 3 root root 120 Mar 23 06:26 .
drwxr-xr-x 18 root root 4.2K Mar 23 06:28 ..
drwxr-xr-x 2 root root 100 Mar 23 06:26 by-path
crw-rw---- 1 root video 226, 0 Mar 23 06:26 card0
crw-rw---- 1 root video 226, 1 Mar 23 06:26 card1
crw-rw---- 1 root render 226, 128 Mar 23 06:26 renderD128
Those 'card1' and 'renderD128' folders mean that the server is seeing the QSV iGPU.
Hope this helps! It's been a tough couple of weeks for me as I've been trying to learn all of this stuff. Good Luck!