I really need the Raspberry Pi 4 for my application, but my old respeaker does not install properly on the 4. Does anyone know generally what is incompatible so I can attempt to dive into the code and correct it? Does anyone know where I should start at least?
DKMS make.log for seeed-voicecard-0.3 for kernel 5.15.84-v8+ (aarch64)
Sun 05 Feb 2023 07:44:16 PM EST
make: Entering directory '/usr/src/linux-headers-5.15.84-v8+'
CC [M] /var/lib/dkms/seeed-voicecard/0.3/build/wm8960.o
CC [M] /var/lib/dkms/seeed-voicecard/0.3/build/ac108.o
CC [M] /var/lib/dkms/seeed-voicecard/0.3/build/ac101.o
CC [M] /var/lib/dkms/seeed-voicecard/0.3/build/seeed-voicecard.o
/var/lib/dkms/seeed-voicecard/0.3/build/seeed-voicecard.c: In function ‘seeed_voice_card_dai_link_of’:
/var/lib/dkms/seeed-voicecard/0.3/build/seeed-voicecard.c:463:8: error: implicit declaration of function ‘asoc_simple_parse_cpu’; did you mean ‘asoc_simple_parse_clk’? [-Werror=implicit-function-declaration]
463 | ret = asoc_simple_parse_cpu(cpu, dai_link, &single_cpu);
| ^~~~~~~~~~~~~~~~~~~~~
| asoc_simple_parse_clk
/var/lib/dkms/seeed-voicecard/0.3/build/seeed-voicecard.c:468:8: error: implicit declaration of function ‘asoc_simple_parse_codec’; did you mean ‘asoc_simple_parse_dai’? [-Werror=implicit-function-declaration]
468 | ret = asoc_simple_parse_codec(codec, dai_link);
| ^~~~~~~~~~~~~~~~~~~~~~~
| asoc_simple_parse_dai
/var/lib/dkms/seeed-voicecard/0.3/build/seeed-voicecard.c:480:8: error: implicit declaration of function ‘asoc_simple_parse_platform’; did you mean ‘asoc_simple_parse_daifmt’? [-Werror=implicit-function-declaration]
480 | ret = asoc_simple_parse_platform(plat, dai_link);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
| asoc_simple_parse_daifmt
/var/lib/dkms/seeed-voicecard/0.3/build/seeed-voicecard.c:505:8: error: implicit declaration of function ‘asoc_simple_parse_clk_cpu’; did you mean ‘asoc_simple_parse_clk’? [-Werror=implicit-function-declaration]
505 | ret = asoc_simple_parse_clk_cpu(dev, cpu, dai_link, cpu_dai);
| ^~~~~~~~~~~~~~~~~~~~~~~~~
| asoc_simple_parse_clk
/var/lib/dkms/seeed-voicecard/0.3/build/seeed-voicecard.c:513:8: error: implicit declaration of function ‘asoc_simple_parse_clk_codec’; did you mean ‘asoc_simple_parse_clk’? [-Werror=implicit-function-declaration]
513 | ret = asoc_simple_parse_clk_codec(dev, codec, dai_link, codec_dai);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
| asoc_simple_parse_clk
/var/lib/dkms/seeed-voicecard/0.3/build/seeed-voicecard.c:546:31: error: passing argument 1 of ‘asoc_simple_canonicalize_cpu’ from incompatible pointer type [-Werror=incompatible-pointer-types]
546 | asoc_simple_canonicalize_cpu(dai_link, single_cpu);
| ^~~~~~~~
| |
| struct snd_soc_dai_link *
In file included from /var/lib/dkms/seeed-voicecard/0.3/build/seeed-voicecard.c:28:
./include/sound/simple_card_utils.h:158:70: note: expected ‘struct snd_soc_dai_link_component *’ but argument is of type ‘struct snd_soc_dai_link *’
158 | void asoc_simple_canonicalize_cpu(struct snd_soc_dai_link_component *cpus,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
/var/lib/dkms/seeed-voicecard/0.3/build/seeed-voicecard.c:548:36: error: passing argument 1 of ‘asoc_simple_canonicalize_platform’ from incompatible pointer type [-Werror=incompatible-pointer-types]
548 | asoc_simple_canonicalize_platform(dai_link);
| ^~~~~~~~
| |
| struct snd_soc_dai_link *
In file included from /var/lib/dkms/seeed-voicecard/0.3/build/seeed-voicecard.c:28:
./include/sound/simple_card_utils.h:156:75: note: expected ‘struct snd_soc_dai_link_component *’ but argument is of type ‘struct snd_soc_dai_link *’
156 | void asoc_simple_canonicalize_platform(struct snd_soc_dai_link_component *platforms,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~
/var/lib/dkms/seeed-voicecard/0.3/build/seeed-voicecard.c:548:2: error: too few arguments to function ‘asoc_simple_canonicalize_platform’
548 | asoc_simple_canonicalize_platform(dai_link);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /var/lib/dkms/seeed-voicecard/0.3/build/seeed-voicecard.c:28:
./include/sound/simple_card_utils.h:156:6: note: declared here
156 | void asoc_simple_canonicalize_platform(struct snd_soc_dai_link_component *platforms,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
At top level:
/var/lib/dkms/seeed-voicecard/0.3/build/seeed-voicecard.c:263:12: warning: ‘asoc_simple_parse_dai’ defined but not used [-Wunused-function]
263 | static int asoc_simple_parse_dai(struct device_node *node,
| ^~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
make[1]: *** [scripts/Makefile.build:289: /var/lib/dkms/seeed-voicecard/0.3/build/seeed-voicecard.o] Error 1
make[1]: *** Waiting for unfinished jobs....
/var/lib/dkms/seeed-voicecard/0.3/build/ac108.c:1148:3: error: ‘const struct snd_soc_dai_ops’ has no member named ‘digital_mute’
1148 | .digital_mute = ac108_aif_mute,
| ^~~~~~~~~~~~
/var/lib/dkms/seeed-voicecard/0.3/build/ac108.c:1148:18: error: initialization of ‘int (*)(struct snd_pcm_substream *, int, struct snd_soc_dai *)’ from incompatible pointer type ‘int (*)(struct snd_soc_dai *, int)’ [-Werror=incompatible-pointer-types]
1148 | .digital_mute = ac108_aif_mute,
| ^~~~~~~~~~~~~~
/var/lib/dkms/seeed-voicecard/0.3/build/ac108.c:1148:18: note: (near initialization for ‘ac108_dai_ops.bespoke_trigger’)
In file included from /var/lib/dkms/seeed-voicecard/0.3/build/wm8960.c:28:
/var/lib/dkms/seeed-voicecard/0.3/build/wm8960.c: In function ‘wm8960_configure_clocking’:
/var/lib/dkms/seeed-voicecard/0.3/build/sound-compatible-4.18.h:34:36: error: implicit declaration of function ‘snd_soc_component_read32’; did you mean ‘snd_soc_component_read’? [-Werror=implicit-function-declaration]
34 | #define snd_soc_read snd_soc_component_read32
| ^~~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/seeed-voicecard/0.3/build/wm8960.c:619:15: note: in expansion of macro ‘snd_soc_read’
619 | u16 iface1 = snd_soc_read(codec, WM8960_IFACE1);
| ^~~~~~~~~~~~
/var/lib/dkms/seeed-voicecard/0.3/build/wm8960.c: At top level:
/var/lib/dkms/seeed-voicecard/0.3/build/wm8960.c:1239:3: error: ‘const struct snd_soc_dai_ops’ has no member named ‘digital_mute’
1239 | .digital_mute = wm8960_mute,
| ^~~~~~~~~~~~
/var/lib/dkms/seeed-voicecard/0.3/build/wm8960.c:1239:18: error: initialization of ‘int (*)(struct snd_pcm_substream *, struct snd_soc_dai *)’ from incompatible pointer type ‘int (*)(struct snd_soc_dai *, int)’ [-Werror=incompatible-pointer-types]
1239 | .digital_mute = wm8960_mute,
| ^~~~~~~~~~~
/var/lib/dkms/seeed-voicecard/0.3/build/wm8960.c:1239:18: note: (near initialization for ‘wm8960_dai_ops.prepare’)
cc1: some warnings being treated as errors
make[1]: *** [scripts/Makefile.build:289: /var/lib/dkms/seeed-voicecard/0.3/build/ac108.o] Error 1
cc1: some warnings being treated as errors
make[1]: *** [scripts/Makefile.build:289: /var/lib/dkms/seeed-voicecard/0.3/build/wm8960.o] Error 1
make: *** [Makefile:1902: /var/lib/dkms/seeed-voicecard/0.3/build] Error 2
make: Leaving directory '/usr/src/linux-headers-5.15.84-v8+'
I did a clean install just to make sure I was getting the same issue. I am using a Raspberry Pi 4B with 64 bit Raspbian.
Firstly, I had to install dkms because ./install.sh said it didn’t exist. After, here’s what the output of ./install.sh was:
resonant@raspberrypi:~/seeed-voicecard $ sudo ./install.sh
Hit:1 http://security.debian.org/debian-security bullseye-security InRelease
Hit:2 http://deb.debian.org/debian bullseye InRelease
Hit:3 http://deb.debian.org/debian bullseye-updates InRelease
Hit:4 http://archive.raspberrypi.org/debian bullseye InRelease
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
All packages are up to date.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
raspberrypi-kernel is already the newest version (1:1.20230106-1).
raspberrypi-kernel-headers is already the newest version (1:1.20230106-1).
The following package was automatically installed and is no longer required:
libfuse2
Use 'sudo apt autoremove' to remove it.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package linux-raspi
E: Unable to locate package linux-headers-raspi
E: Unable to locate package linux-image-raspi
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
libasound2-plugins is already the newest version (1.2.2-2).
dkms is already the newest version (2.8.4-3).
i2c-tools is already the newest version (4.2-1+b1).
git is already the newest version (1:2.30.2-1+deb11u1).
The following package was automatically installed and is no longer required:
libfuse2
Use 'sudo apt autoremove' to remove it.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
grep: /boot/kernel.img: No such file or directory
gzip: stdin: unexpected end of file
grep: /boot/kernel.img: No such file or directory
gzip: stdin: unexpected end of file
------------------------------
Deleting module version: 0.3
completely from the DKMS tree.
------------------------------
Done.
Creating symlink /var/lib/dkms/seeed-voicecard/0.3/source ->
/usr/src/seeed-voicecard-0.3
DKMS: add completed.
Kernel preparation unnecessary for this kernel. Skipping...
applying patch back-to-v5.8.diff...patching file ac108.c
patching file sound-compatible-4.18.h
patching file wm8960.c
Building module:
cleaning build area...
make -j4 KERNELRELEASE=5.15.84-v8+ -C /lib/modules/5.15.84-v8+/build M=/var/lib/dkms/seeed-voicecard/0.3/build....(bad exit status: 2)
Error! Bad return status for module build on kernel: 5.15.84-v8+ (aarch64)
Consult /var/lib/dkms/seeed-voicecard/0.3/build/make.log for more information.
**git init**
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
Initialized empty Git repository in /etc/voicecard/.git/
git add --all
git commit -m "origin configures"
[master (root-commit) e372d90] origin configures
7 files changed, 1482 insertions(+)
create mode 100644 ac108_6mic.state
create mode 100644 ac108_asound.state
create mode 100644 asound_2mic.conf
create mode 100644 asound_4mic.conf
create mode 100644 asound_6mic.conf
create mode 100644 dkms.conf
create mode 100644 wm8960_asound.state
------------------------------------------------------
Please reboot your raspberry pi to apply all settings
Enjoy!
------------------------------------------------------
It looked like there were several issue.
It couldn’t locate package linux-raspi, linux-header-raspi, linux-image-raspi
Grep couldn’t locate /boot/kernel.img and there was a gzip EOF
The kernel appears to have failed to build. It says to look at /var/lib/dkms/seeed-voicecard/0.3/build/make.log
After I manually installed dkms, the make log changed:
make.log
DKMS make.log for seeed-voicecard-0.3 for kernel 5.15.84-v8+ (aarch64)
Tue 07 Feb 2023 09:35:04 AM EST
make: Entering directory '/usr/src/linux-headers-5.15.84-v8+'
CC [M] /var/lib/dkms/seeed-voicecard/0.3/build/wm8960.o
CC [M] /var/lib/dkms/seeed-voicecard/0.3/build/ac108.o
CC [M] /var/lib/dkms/seeed-voicecard/0.3/build/ac101.o
CC [M] /var/lib/dkms/seeed-voicecard/0.3/build/seeed-voicecard.o
/var/lib/dkms/seeed-voicecard/0.3/build/ac108.c:1148:3: error: ‘const struct snd_soc_dai_ops’ has no member named ‘digital_mute’
1148 | .digital_mute = ac108_aif_mute,
| ^~~~~~~~~~~~
/var/lib/dkms/seeed-voicecard/0.3/build/ac108.c:1148:18: error: initialization of ‘int (*)(struct snd_pcm_substream *, int, struct snd_soc_dai *)’ from incompatible pointer type ‘int (*)(struct snd_soc_dai *, int)’ [-Werror=incompatible-pointer-types]
1148 | .digital_mute = ac108_aif_mute,
| ^~~~~~~~~~~~~~
/var/lib/dkms/seeed-voicecard/0.3/build/ac108.c:1148:18: note: (near initialization for ‘ac108_dai_ops.bespoke_trigger’)
In file included from /var/lib/dkms/seeed-voicecard/0.3/build/wm8960.c:28:
/var/lib/dkms/seeed-voicecard/0.3/build/wm8960.c: In function ‘wm8960_configure_clocking’:
/var/lib/dkms/seeed-voicecard/0.3/build/sound-compatible-4.18.h:34:36: error: implicit declaration of function ‘snd_soc_component_read32’; did you mean ‘snd_soc_component_read’? [-Werror=implicit-function-declaration]
34 | #define snd_soc_read snd_soc_component_read32
| ^~~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/seeed-voicecard/0.3/build/wm8960.c:619:15: note: in expansion of macro ‘snd_soc_read’
619 | u16 iface1 = snd_soc_read(codec, WM8960_IFACE1);
| ^~~~~~~~~~~~
/var/lib/dkms/seeed-voicecard/0.3/build/wm8960.c: At top level:
/var/lib/dkms/seeed-voicecard/0.3/build/wm8960.c:1239:3: error: ‘const struct snd_soc_dai_ops’ has no member named ‘digital_mute’
1239 | .digital_mute = wm8960_mute,
| ^~~~~~~~~~~~
/var/lib/dkms/seeed-voicecard/0.3/build/wm8960.c:1239:18: error: initialization of ‘int (*)(struct snd_pcm_substream *, struct snd_soc_dai *)’ from incompatible pointer type ‘int (*)(struct snd_soc_dai *, int)’ [-Werror=incompatible-pointer-types]
1239 | .digital_mute = wm8960_mute,
| ^~~~~~~~~~~
/var/lib/dkms/seeed-voicecard/0.3/build/wm8960.c:1239:18: note: (near initialization for ‘wm8960_dai_ops.prepare’)
cc1: some warnings being treated as errors
make[1]: *** [scripts/Makefile.build:289: /var/lib/dkms/seeed-voicecard/0.3/build/ac108.o] Error 1
make[1]: *** Waiting for unfinished jobs....
cc1: some warnings being treated as errors
make[1]: *** [scripts/Makefile.build:289: /var/lib/dkms/seeed-voicecard/0.3/build/wm8960.o] Error 1
make: *** [Makefile:1902: /var/lib/dkms/seeed-voicecard/0.3/build] Error 2
make: Leaving directory '/usr/src/linux-headers-5.15.84-v8+'
Sorry Kalin… but I solved it because I notice that I’m st*pid…
…I have my respeaker not fully pressed in the GPIO ports and that was the reason of not appearing anything about seeed voicecard when launching a ‘arecord -L’.
After pressing and rebooting it appears.
If you find something usefull about my ending config, I can tell you that what I installed has been:
raspbian buster. Exactly this version: 2022-09-22-raspios-buster-armhf.img.xz
This command shows the kernel I’m working on then… # uname -r
5.10.103-v7l+
I think it was as simple as sudo apt install dkms. Not entirely sure since this was a few weeks ago. Unfortunately I have not had any lucky resolving this issue. I was hoping @nengyu would have given some suggestions by now.
I was looking through the rest of the respeaker forum. People have had this issue for years. I’m doubtful this will ever get fixed. I wish there were other microphone arrays available… Respeaker seems to be the only seller. I had luck using a Pi 3 though a few years ago.