Matrix Kernel build error

I am trying to install Matrix Kernel on a brand new Raspbian 10 image (on a Raspberry Pi 4).

I get a build failure. The make log has the following error:

DKMS make.log for matrixio-kernel-modules-0.2.4 for kernel 5.10.11+ (armv7l)
Sun 14 Feb 2021 02:51:55 PM GMT
make: Entering directory ‘/usr/src/linux-headers-5.10.11+’
CC [M] /var/lib/dkms/matrixio-kernel-modules/0.2.4/build/matrixio-core.o
CC [M] /var/lib/dkms/matrixio-kernel-modules/0.2.4/build/matrixio-uart.o
CC [M] /var/lib/dkms/matrixio-kernel-modules/0.2.4/build/matrixio-everloop.o
CC [M] /var/lib/dkms/matrixio-kernel-modules/0.2.4/build/matrixio-codec.o
CC [M] /var/lib/dkms/matrixio-kernel-modules/0.2.4/build/matrixio-mic.o
CC [M] /var/lib/dkms/matrixio-kernel-modules/0.2.4/build/matrixio-playback.o
CC [M] /var/lib/dkms/matrixio-kernel-modules/0.2.4/build/matrixio-gpio.o
CC [M] /var/lib/dkms/matrixio-kernel-modules/0.2.4/build/matrixio-env.o
/var/lib/dkms/matrixio-kernel-modules/0.2.4/build/matrixio-playback.c:338:6: error: ‘const struct snd_soc_component_driver’ has no member named ‘ops’; did you mean ‘open’?
.ops = &matrixio_playback_ops,
^~~
open
/var/lib/dkms/matrixio-kernel-modules/0.2.4/build/matrixio-playback.c:338:12: error: initialization of ‘const char *’ from incompatible pointer type ‘struct snd_pcm_ops *’ [-Werror=incompatible-pointer-types]
.ops = &matrixio_playback_ops,
^
/var/lib/dkms/matrixio-kernel-modules/0.2.4/build/matrixio-playback.c:338:12: note: (near initialization for ‘matrixio_soc_platform.name’)
/var/lib/dkms/matrixio-kernel-modules/0.2.4/build/matrixio-playback.c:339:6: error: ‘const struct snd_soc_component_driver’ has no member named ‘pcm_new’
.pcm_new = matrixio_playback_new,
^~~~~~~
/var/lib/dkms/matrixio-kernel-modules/0.2.4/build/matrixio-playback.c:339:16: error: initialization of ‘const struct snd_kcontrol_new ’ from incompatible pointer type ‘int ()(struct snd_soc_pcm_runtime *)’ [-Werror=incompatible-pointer-types]
.pcm_new = matrixio_playback_new,
^~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/matrixio-kernel-modules/0.2.4/build/matrixio-playback.c:339:16: note: (near initialization for ‘matrixio_soc_platform.controls’)
/var/lib/dkms/matrixio-kernel-modules/0.2.4/build/matrixio-mic.c:306:6: error: ‘const struct snd_soc_component_driver’ has no member named ‘ops’; did you mean ‘open’?
.ops = &matrixio_pcm_ops, .pcm_new = matrixio_pcm_new,
^~~
open
/var/lib/dkms/matrixio-kernel-modules/0.2.4/build/matrixio-mic.c:306:12: error: initialization of ‘const char *’ from incompatible pointer type ‘const struct snd_pcm_ops *’ [-Werror=incompatible-pointer-types]
.ops = &matrixio_pcm_ops, .pcm_new = matrixio_pcm_new,
^
/var/lib/dkms/matrixio-kernel-modules/0.2.4/build/matrixio-mic.c:306:12: note: (near initialization for ‘matrixio_soc_platform.name’)
/var/lib/dkms/matrixio-kernel-modules/0.2.4/build/matrixio-mic.c:306:32: error: ‘const struct snd_soc_component_driver’ has no member named ‘pcm_new’
.ops = &matrixio_pcm_ops, .pcm_new = matrixio_pcm_new,
^~~~~~~
/var/lib/dkms/matrixio-kernel-modules/0.2.4/build/matrixio-mic.c:306:42: error: initialization of ‘const struct snd_kcontrol_new ’ from incompatible pointer type ‘int ()(struct snd_soc_pcm_runtime *)’ [-Werror=incompatible-pointer-types]
.ops = &matrixio_pcm_ops, .pcm_new = matrixio_pcm_new,
^~~~~~~~~~~~~~~~
/var/lib/dkms/matrixio-kernel-modules/0.2.4/build/matrixio-mic.c:306:42: note: (near initialization for ‘matrixio_soc_platform.controls’)
cc1: some warnings being treated as errors
make[1]: *** [scripts/Makefile.build:279: /var/lib/dkms/matrixio-kernel-modules/0.2.4/build/matrixio-playback.o] Error 1
make[1]: *** Waiting for unfinished jobs…
cc1: some warnings being treated as errors
make[1]: *** [scripts/Makefile.build:279: /var/lib/dkms/matrixio-kernel-modules/0.2.4/build/matrixio-mic.o] Error 1
make: *** [Makefile:1808: /var/lib/dkms/matrixio-kernel-modules/0.2.4/build] Error 2
make: Leaving directory ‘/usr/src/linux-headers-5.10.11+’

It looks like possibly the ALSA drivers have changed and the matrix kernel is trying to reference a member of a struct that is no longer there

I am experiencing the same problem. With the current kernel (5.10.11-v7) I can’t install matrixio-kernel-modules via apt-get nor can I compile them.

matrixio-kernel-modules are not compatible with 5.10 right now.

This is a workaround to downgrade the kernel:

DOWNGRADE KERNEL TO 5.4

sudo apt purge matrixio-kernel-modules
cd ~/
wget -q --show-progress -O rpi_kernel_5-4.deb http://archive.raspberrypi.org/debian/pool/main/r/raspberrypi-firmware/raspberrypi-kernel_1.20201126-1_armhf.deb
wget -q --show-progress -O rpi_kernel_headers_5-4.deb http://archive.raspberrypi.org/debian/pool/main/r/raspberrypi-firmware/raspberrypi-kernel-headers_1.20201126-1_armhf.deb
sudo apt purge raspberrypi-kernel-headers
sudo apt install ~/rpi_kernel_5-4.deb
sudo apt install ~/rpi_kernel_headers_5-4.deb
sudo apt-mark hold raspberrypi-kernel
sudo apt-mark hold raspberrypi-kernel-headers
sudo reboot
sudo apt update
sudo apt install matrixio-kernel-modules
sudo reboot

UNDO (once matrixio-kernel-modules are working again)

sudo apt-mark unhold raspberrypi-kernel
sudo apt-mark unhold raspberrypi-kernel-headers
sudo apt purge matrixio-kernel-modules
sudo apt purge raspberrypi-kernel-headers
sudo apt update && sudo apt upgrade
sudo reboot
sudo apt install matrixio-kernel-modules
sudo reboot
1 Like