I did manage to get these out-of-tree kernel modules built in containers so that they can be deployed via CI/CD.
But then life and summer came in the way. I’m away from dev machine for a few weeks, but will share when I am back if you are interested.
The motivation behind my rewrite of the build system was to modularise it for ease of development, DRY, and so it can run in containers. Since my normal machines are all Windoze boxes, I build all my images via CircleCI… But, AFAIK the official Voumio images aren’t build by a CI/CD, and runs on Volumio’s servers to include the myVolumio closed source stuff.
It looks like you alsa configuration is wrong and is looking for a MAX98357A instead of the wm8960soundcard ?
# There is always a plug before the hardware to be safe
With that being said, I was thinking about: being a targeted OS distribution, wouldn’t it make sense to build our own kernel with all in-tree codecs enabled? I can recall there’s an “rpi update” phase during the build to push kernel to version 5.4.83+, and I wonder if we could put in a customized .config file for it.
I poked around and was trying to figure out the “no sound” problem on my board while waiting reposes from the issue filed upstream. Turns out in addition to kernel modules (which the two PRs mentioned above have it implemented properly), wm8960_asound.state from official repo has to be applied with a refresh (alsactl nrestore).
Just few minutes ago the issue was responded and the module will be in future kernel builds (yay). Let’s defer implementation details to Github PR thread.
make -j1 KERNELRELEASE=5.10.90+ -C /lib/modules/5.10.90+/build M=/var/lib/dkms/wm8960-soundcard/1.0/build…(bad exit status: 2)
Error! Bad return status for module build on kernel: 5.10.90+ (armv6l)
Consult /var/lib/dkms/wm8960-soundcard/1.0/build/make.log for more information.
Created symlink /etc/systemd/system/sysinit.target.wants/wm8960-soundcard.service → /lib/systemd/system/wm8960-soundcard.service.
DKMS make.log for wm8960-soundcard-1.0 for kernel 5.10.90+ (armv6l)
Sun Aug 28 20:05:00 UTC 2022
make: Entering directory ‘/usr/src/rpi-linux’
CC [M] /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960.o
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960.c:1390:3: error: ‘struct snd_soc_dai_driver’ has no member named ‘symmetric_rate’; did you mean ‘symmetric_rates’?
.symmetric_rate = 1,
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960.c:1390:20: warning: initialization of ‘const struct snd_soc_cdai_ops *’ from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
.symmetric_rate = 1,
/var/lib/dkms/wm8960-soundcard/1.0/build/wm8960.c:1390:20: note: (near initialization for ‘wm8960_dai.cops’)
make: *** [scripts/Makefile.build:280: /var/lib/dkms/wm8960-soundcard/1.0/build/wm8960.o] Error 1
make: *** [Makefile:1825: /var/lib/dkms/wm8960-soundcard/1.0/build] Error 2
make: Leaving directory ‘/usr/src/rpi-linux’