amdgpu kernel driver module into Balena OS

Hello all,

So I’m playing around with kiosk-like solutions.
I have a sweet setup where I am able to use electron running with Wayland.
This is setup is running into intel NUC.

I am now interested in having the same setup running into a NUC8i7HVK which contains an AMD Radeon RX Vega M GH graphics card.
(Ideally, I wish to have something compatible with all x86-64 devices with AMD graphical cards).

When I access to my electron container and run lshw -C display I get the output:

  *-display UNCLAIMED       
       description: VGA compatible controller
       product: Polaris 22 XT [Radeon RX Vega M GH]
       vendor: Advanced Micro Devices, Inc. [AMD/ATI]
       physical id: 0
       bus info: pci@0000:01:00.0
       version: c0
       width: 64 bits
       clock: 33MHz
       capabilities: pm pciexpress msi vga_controller bus_master cap_list
       configuration: latency=0
       resources: memory:90000000-9fffffff memory:a0000000-a01fffff ioport:e000(size=256) memory:db500000-db53ffff memory:c0000-dffff
  *-display
       description: Display controller
       product: HD Graphics 630
       vendor: Intel Corporation
       physical id: 2
       bus info: pci@0000:00:02.0
       version: 04
       width: 64 bits
       clock: 33MHz
       capabilities: pciexpress msi pm bus_master cap_list
       configuration: driver=i915 latency=0
       resources: iomemory:2f0-2ef iomemory:2f0-2ef irq:161 memory:2ffe000000-2ffeffffff memory:2fa0000000-2fafffffff ioport:f000(size=64)
(...)

So as per my understanding the first *-display entry (the AMD one) being UNCLAIMED means there are no GPU modules capable of using it.

Looking into the second *-display entry we can spot the line configuration: driver=i915 referring to the available GPU driver in use.

Using the label io.balena.features.kernel-modules: '1' into my docker-compose file I was able to access the directory /lib/modules/5.14.21-yocto-standard/kernel/drivers/gpu/drm and check de available modules over there:

  • i915
  • tiny
  • ttm

So I guess what I need is to be able to have the amd module here.

Already managed to download the proper kernel-source modules on my Dockerfile running:

RUN \
    curl -fsSL "https://files.balena-cloud.com/images/${BALENA_MACHINE_NAME}/${VERSION}/kernel_source.tar.gz" \
        | tar xz --strip-components=2 && \

Already verify I have the source files of the amd module there but I am still not able of making a .ko file I need.

Any suggestions will be very appreciated.
Thanks in advance,

Nuno

I guess I need to “make” .ko files for the amdgpu module but was not able to do it so yet.

@ alanb128,
I was based on your repo again. Maybe you have some tips for me here as well.

Thanks :slight_smile:

Hello,

What device type and version of balenaOS are you running? If this is the Intel NUC device type, it only includes drivers for devices commonly found in NUCs. You likely want the Generic x86_64 image, which contains firmware and drivers for generic hardware support, including other GPUs, like the amdgpu driver you need.

Let us know if this helps.

I am using the balenaOS 2.98.33 - Generic x86_64 image.
But it didn’t include the AMD driver and I am not able to install it.