Unable to enable Hardware Transcoding on Ubuntu Server install

I migrated Channels to a new Beelink N150 running Ubuntu Server 24.04.1 (previously ran on Raspberry Pi).

Everything seems to be working, except Hardware transcocoding doesn't seem to be an option.

Here is the output of Hardware Transcoder Probe

Hardware Transcoder Probe

×Close

amf

[Parsed_color_0 @ 0x24d9940] size:640x480 rate:25/1 duration:-1.000000 sar:1/1 Input #0, lavfi, from 'color=black:640x480': Duration: N/A, start: 0.000000, bitrate: N/A Stream #0:0: Video: rawvideo, 1 reference frame (I420 / 0x30323449), yuv420p, 640x480 [SAR 1:1 DAR 4:3], 25 tbr, 25 tbn Stream mapping: Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (h264_amf)) Press [q] to stop, [?] for help [graph 0 input from stream 0:0 @ 0x2505c40] w:640 h:480 pixfmt:yuv420p tb:1/25 fr:25/1 sar:1/1 [h264_amf @ 0x2504180] DLL libamfrt64.so.1 failed to open Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height Conversion failed!

exit status 1

nvenc

[Parsed_color_0 @ 0x26006940] size:640x480 rate:25/1 duration:-1.000000 sar:1/1 Input #0, lavfi, from 'color=black:640x480': Duration: N/A, start: 0.000000, bitrate: N/A Stream #0:0: Video: rawvideo, 1 reference frame (I420 / 0x30323449), yuv420p, 640x480 [SAR 1:1 DAR 4:3], 25 tbr, 25 tbn Stream mapping: Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (h264_nvenc)) Press [q] to stop, [?] for help [graph 0 input from stream 0:0 @ 0x2604d4c0] w:640 h:480 pixfmt:yuv420p tb:1/25 fr:25/1 sar:1/1 [h264_nvenc @ 0x26030d80] Cannot load libcuda.so.1 [h264_nvenc @ 0x26030d80] Nvenc unloaded Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height Conversion failed!

exit status 1

vaapi@/dev/dri/card0

no such file or directory

vaapi@/dev/dri/renderD128

no such file or directory

vaapi@/dev/dri/renderD129

no such file or directory

vaapi@/dev/renderD128

no such file or directory

Did you read the Doc on linux install .....

  • If you have an Intel processor, make sure you add your user to the video and render groups so the Channels DVR Server transcoder can use /dev/dri for hardware acceleration: sudo adduser $(id -u -n) video && sudo adduser $(id -u -n) render.
 sudo adduser $(id -u -n) video && sudo adduser $(id -u -n) render
1 Like

I did, still no luck :frowning:

1 Like

Did you reboot after Install ?

yes

I think you're going to need to install drivers for the iGPU on that chip. @Rice may know more...

Yeah so I'm checking out what I think is those directions from intel for drivers: (Installing Data Center GPU: LTS Releases — Intel® software for general purpose GPU capabilities documentation), but the commands won't work for me because it's for 22.04, and I'm on 24.04. Am I out of luck? Need to re-install with the previous LTS?

I think @Rice has done this, but I can't find the post now. If you can hold for a bit, he might have some info.

Yeah I see his post related to this now, looks like it's complicated and not officially supported but I'll see what he has to say. Will download 22.04 LTS in mean-time just in case, thanks all :slight_smile:

It seems a lot of recent Intel processors are lagging in support for Linux based OS and applications. That Blink probably came with Windows 11 Pro installed. If you don't mind running Windows, Channels DVR works great on it.

Morris

Use at own risk!! I had to use ChatGTP to get it working after a lot of failures. I believe this is what finally ended up working:

Steps to Install Intel GPU Drivers on Ubuntu 24.04 (Noble)

  1. Add Intel GPU Repository

Update your system and add the Intel GPU repository using the codename jammy (since drivers for noble may not yet be officially released but are often compatible).


sudo apt update

sudo apt install -y gpg-agent wget

wget -qO - https://repositories.intel.com/gpu/intel-graphics.key | \

sudo gpg --yes --dearmor --output /usr/share/keyrings/intel-graphics.gpg

echo "deb [arch=amd64 signed-by=/usr/share/keyrings/intel-graphics.gpg] https://repositories.intel.com/gpu/ubuntu jammy/lts/2350 unified" | \

sudo tee /etc/apt/sources.list.d/intel-gpu.list

sudo apt update

  1. Install Required Kernel Modules

Ensure you have the required kernel headers and modules for your Ubuntu 24.04 system:


sudo apt install -y linux-headers-$(uname -r) linux-modules-extra-$(uname -r)

  1. Install Intel GPU Drivers

Install the necessary packages for Intel GPUs:


sudo apt install -y intel-fw-gpu intel-i915-dkms xpu-smi

  1. Install Media and Compute Packages

If you need media and compute runtimes (e.g., OpenCL, Level Zero, Vulkan):


sudo apt install -y \

intel-opencl-icd intel-level-zero-gpu level-zero \

intel-media-va-driver-non-free libmfx1 libmfxgen1 libvpl2 \

mesa-vulkan-drivers

  1. Test GPU Functionality

Check that your GPU is functioning properly:

Check hardware details:


lspci | grep -i vga

After the above command it should output the following:


00:02.0 VGA compatible controller: Intel Corporation Alder Lake-N [UHD Graphics]

Install vainfo


sudo apt install vainfo

Verify output of vainfo:

vainfo

Output of vainfo should look something like this:


~$ vainfo
error: can't connect to X server!
libva info: VA-API version 1.20.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_20
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.20 (libva 2.12.0)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 24.1.0 ()
vainfo: Supported profile and entrypoints
      VAProfileNone                   : VAEntrypointVideoProc
      VAProfileNone                   : VAEntrypointStats
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointEncSliceLP
      VAProfileH264High               : VAEntrypointVLD
      VAProfileH264High               : VAEntrypointEncSliceLP
      VAProfileJPEGBaseline           : VAEntrypointVLD
      VAProfileJPEGBaseline           : VAEntrypointEncPicture
      VAProfileH264ConstrainedBaseline: VAEntrypointVLD
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
      VAProfileVP8Version0_3          : VAEntrypointVLD
      VAProfileHEVCMain               : VAEntrypointVLD
      VAProfileHEVCMain               : VAEntrypointEncSliceLP
      VAProfileHEVCMain10             : VAEntrypointVLD
      VAProfileHEVCMain10             : VAEntrypointEncSliceLP
      VAProfileVP9Profile0            : VAEntrypointVLD
      VAProfileVP9Profile0            : VAEntrypointEncSliceLP
      VAProfileVP9Profile1            : VAEntrypointVLD
      VAProfileVP9Profile1            : VAEntrypointEncSliceLP
      VAProfileVP9Profile2            : VAEntrypointVLD
      VAProfileVP9Profile2            : VAEntrypointEncSliceLP
      VAProfileVP9Profile3            : VAEntrypointVLD
      VAProfileVP9Profile3            : VAEntrypointEncSliceLP
      VAProfileHEVCMain12             : VAEntrypointVLD
      VAProfileHEVCMain422_10         : VAEntrypointVLD
      VAProfileHEVCMain422_12         : VAEntrypointVLD
      VAProfileHEVCMain444            : VAEntrypointVLD
      VAProfileHEVCMain444            : VAEntrypointEncSliceLP
      VAProfileHEVCMain444_10         : VAEntrypointVLD
      VAProfileHEVCMain444_10         : VAEntrypointEncSliceLP
      VAProfileHEVCMain444_12         : VAEntrypointVLD
      VAProfileHEVCSccMain            : VAEntrypointVLD
      VAProfileHEVCSccMain            : VAEntrypointEncSliceLP
      VAProfileHEVCSccMain10          : VAEntrypointVLD
      VAProfileHEVCSccMain10          : VAEntrypointEncSliceLP
      VAProfileHEVCSccMain444         : VAEntrypointVLD
      VAProfileHEVCSccMain444         : VAEntrypointEncSliceLP
      VAProfileAV1Profile0            : VAEntrypointVLD
      VAProfileHEVCSccMain444_10      : VAEntrypointVLD
      VAProfileHEVCSccMain444_10      : VAEntrypointEncSliceLP

  1. Reboot the machine and check dvr settings page under advanced to see if hardware is now available. If not hit the drop down and select scan hardware under transcoder setting.

  2. Troubleshooting

If the driver installation fails or you encounter compatibility issues, consult ChatGTP or start over with Ubuntu Server 22.04 or any desktop version comes with HW enabled.
This approach keeps your system on Ubuntu 24.04 while leveraging the available drivers for 22.04 (Jammy), which are often forward-compatible. If Intel officially releases drivers for noble, you can switch to them later.

Thanks for the info! I’ll go ahead and mark as solution in case anyone else uses this, but for the record I started testing releases and found that the kernel for Ubuntu 24.10 (non-LTS) had the appropriate drivers, so upgrading from 24.04 to 24.10 made hardware transcoding work properly.

I’d prefer LTS but think this seems like the simplest solution for now.

(Did not test, but would assume 24.01 LTS with HWE kernel may work as well?..)