Building DKMS soundwire module fails

Hi there, I have a Dell XPS 9700 and tried to follow the instructions to build a dkms package soundwire-dkms to make the speakers of this notebook work.
I was able to do this on Manjato a while back but on F33 I get these errors on 5.8.16 and on 5.8.17 when I try to sudo dkms build soundwire/1.4.0:

DKMS make.log for soundwire-1.4.0 for kernel 5.8.17-300.fc33.x86_64 (x86_64)
Mi 4. Nov 10:49:59 CET 2020
make -C /lib/modules/5.8.17-300.fc33.x86_64/build M=/var/lib/dkms/soundwire/1.4.0/build modules
make[1]: Entering directory '/usr/src/kernels/5.8.17-300.fc33.x86_64'
  CC [M]  /var/lib/dkms/soundwire/1.4.0/build/soundwire/generic_bandwidth_allocation.o

... [ left out a bunch of lines here] ...

  LD [M]  /var/lib/dkms/soundwire/1.4.0/build/soc/codecs/snd-soc-tlv320adcx140.o
  LD [M]  /var/lib/dkms/soundwire/1.4.0/build/soc/codecs/snd-soc-tlv320aic32x4-spi.o
  LD [M]  /var/lib/dkms/soundwire/1.4.0/build/soc/codecs/snd-soc-ts3a227e.o
  LD [M]  /var/lib/dkms/soundwire/1.4.0/build/soc/codecs/snd-soc-tscs42xx.o
  LD [M]  /var/lib/dkms/soundwire/1.4.0/build/soc/codecs/snd-soc-wm8524.o
  LD [M]  /var/lib/dkms/soundwire/1.4.0/build/soc/codecs/snd-soc-wm8804.o
  LD [M]  /var/lib/dkms/soundwire/1.4.0/build/soc/codecs/snd-soc-zl38060.o
  LD [M]  /var/lib/dkms/soundwire/1.4.0/build/soc/codecs/snd-soc-wm8804-i2c.o
  LD [M]  /var/lib/dkms/soundwire/1.4.0/build/soc/codecs/snd-soc-simple-amplifier.o
  LD [M]  /var/lib/dkms/soundwire/1.4.0/build/soc/snd-soc-core.o
  MODPOST /var/lib/dkms/soundwire/1.4.0/build/Module.symvers
ERROR: modpost: "sdw_startup_stream" [/var/lib/dkms/soundwire/1.4.0/build/soc/intel/boards/snd-soc-sof-sdw.ko] undefined!
ERROR: modpost: "sdw_shutdown_stream" [/var/lib/dkms/soundwire/1.4.0/build/soc/intel/boards/snd-soc-sof-sdw.ko] undefined!
ERROR: modpost: "sdw_bread_no_pm_unlocked" [/var/lib/dkms/soundwire/1.4.0/build/soundwire/soundwire-cadence.ko] undefined!
ERROR: modpost: "sdw_rows" [/var/lib/dkms/soundwire/1.4.0/build/soundwire/soundwire-generic-allocation.ko] undefined!
ERROR: modpost: "sdw_cols" [/var/lib/dkms/soundwire/1.4.0/build/soundwire/soundwire-generic-allocation.ko] undefined!
make[2]: *** [scripts/Makefile.modpost:111: /var/lib/dkms/soundwire/1.4.0/build/Module.symvers] Error 1
make[2]: *** Deleting file '/var/lib/dkms/soundwire/1.4.0/build/Module.symvers'
make[1]: *** [Makefile:1665: modules] Error 2
make[1]: Leaving directory '/usr/src/kernels/5.8.17-300.fc33.x86_64'
make: *** [Makefile:10: all] Error 2

It was suggested that I may have a kernel config option disabled but I would not know how to look for that.

For completeness sake, I want to mention that I installed alsa-sof-firmware, alsa-plugins-pulseaudio, dkms, alsa-ucm and alsa-ucm-utils as prerequisites.

If anyone can point me to a solution, I would appreciate this very much.

1 Like

Make sure you boot the target kernel beforehand:

uname -r

That matches:

> uname -r
5.8.17-300.fc33.x86_64
2 Likes

Could this be an issue with kernel-headers?

Do you have them installed, and does the version match the kernel you booted?

(fyi, kernel-headers are only packaged when they change, so might not have a matching pair for kernel-5.8.16 and .17. https://discussion.fedoraproject.org/t/different-kernel-headers-version/69158 .)

Aha! Good point, I do have kernel-headers installed, however only for 5.8.11.
I will look into how to get current header files then! I’ll report back.
Thank you!

This is the current kernel-headers package then. If kernel-headers hasn’t been modified since 5.8.11 it’s not being built and released as .16. or .17, see Latest kernel headers not available - kernel - Fedora Mailing-Lists and What’s a kernel headers package anyway | Something witty yet insightful

Yeah I read that thread. But that means that missing kernel-header files is not my problem, right? E.g. if they haven’t changed since 5.8.11, there is no need to install newer ones.

Also I have current kernel-devel packages matching my kernel version, they should contain the header files as well, no?

So after looking more into this, it was suggested by the maintainer that the undefined functions may be behind a #ifdef which requires a kernel config option that I don’t have (and/or which is not active under Fedora vs. Arch/Manjaro, etc. by default).

However, looking at where the functions are defined and where they are exported, they are not within a #ifdef.

So it looks like this is less of a Fedora issue, I thought this was more clear cut, sorry for not looking more into this before posting.

1 Like

@larph01 Did you ever have any luck getting the audio going in Fedora 33 for the XPS 9700? I’m currently on the same hunt :slight_smile:

Hey there. No but I since returned the computer (for manufacturing issues).
I saw you added yourself to my bug report at Red Hat. That was my last desperate attempt to get it to work. And I thought by now it should work. Sorry to hear that it doesn’t.