ReSpeaker 6-Mic Array and Raspberry 5 compatibility?

Hello, I wanted to ask if anyone might help with this thing…
I have ReSpeaker 6-Mic Array from Seeed and I was wondering if this is compatible with RPi 5. I didn’t find official info about it being supported but maybe anyone has already tried it out?

something sounds like i rember saying it was a problem with the new operating system software?

While there may not be official documentation confirming compatibility between the ReSpeaker 6-Mic Array and the Raspberry Pi 5, the ReSpeaker series has historically worked well with previous versions of Raspberry Pi (like the Pi 4). Given that the Raspberry Pi 5 features improved hardware but retains similar GPIO pin setups, it’s highly likely that the 6-Mic Array will function correctly.

However, since the Raspberry Pi 5 is newer, certain drivers or firmware updates may be required for optimal performance. Checking Seeed Studio’s forums or community pages may provide additional insights from users who have tested this configuration.

From what I can tell, no. I’m very close to buying a Raspberry 4 for this reason. I have spent 12 hours to get a ReSpeaker 2-Mics Pi HAT to work on a Raspberry 5 without success.

The Raspberry Pi 5 uses a new SoC (BCM2712) with different hardware architecture and introduces significant changes that affect compatibility with certain hardware, including the AC108 audio codec used in the ReSpeaker 6-Mic Circular Array Kit.
The AC108 audio codec chip on the Voice Card will not work on the Raspberry Pi 5 without significant changes to the kernel module and device tree.

To get the chip working on the Raspberry Pi 5, you would need to update the kernel module and device tree to match the new kernel version and device tree structure.
That requires significant changes to many files, including the kernel module source code, device tree files, and possibly other system files.

If you need to use the AC108 audio codec chip on the Voice Card, it would be easier to use a Raspberry Pi 4, which has a kernel version and device tree structure that is compatible with the existing kernel module.
Raspberry Pi 4 is the latest version which is currently compatible with the audio codec.

As of now, there doesn’t seem to be a readily available solution specifically for making the AC108 audio codec work on the Raspberry Pi 5.

> Kernel
A LLM was used in this research.

2 Likes

Thanks for the reply!

I tried using RPi 4 and it seems I’m still not able to get it work:

seeed-voicecard install script log:

hexapod@hexapod:~/seeed-voicecard $ sudo ./install.sh
Hit:1 http ://archive.raspberrypi.com/debian bookworm InRelease
Hit:2 http ://deb.debian.org/debian bookworm InRelease
Hit:3 http ://deb.debian.org/debian-security bookworm-security InRelease
Hit:4 http ://deb.debian.org/debian bookworm-updates 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-headers is already the newest version (1:1.20230405-1).
raspberrypi-kernel is already the newest version (1:1.20230405-1).
The following packages were automatically installed and are no longer required:
chromium-browser chromium-browser-l10n chromium-codecs-ffmpeg-extra
Use ‘sudo apt autoremove’ to remove them.
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
dkms is already the newest version (3.0.10-8+deb12u1).
git is already the newest version (1:2.39.5-0+deb12u1).
i2c-tools is already the newest version (4.3-2+b3).
libasound2-plugins is already the newest version (1.2.7.1-1).
The following packages were automatically installed and are no longer required:
chromium-browser chromium-browser-l10n chromium-codecs-ffmpeg-extra
Use ‘sudo apt autoremove’ to remove them.
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

WARNING Your loaded kernel version is 6.6.47
Not matching the updated version .
Kernel was updated, but new kernel was not loaded yet
Please reboot your machine AND THEN run this script again
hexapod@hexapod:~/seeed-voicecard $ uname -r
6.6.47+rpt-rpi-v8

after editing the script a bit to omit the warning:

hexapod@hexapod:~/seeed-voicecard $ sudo ./install.sh
Hit:1 ht tp://deb.debian.org/debian bookworm InRelease
Hit:2 ht tp://archive.raspberrypi.com/debian bookworm InRelease
Hit:3 ht tp://deb.debian.org/debian-security bookworm-security InRelease
Hit:4 ht tp://deb.debian.org/debian bookworm-updates 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-headers is already the newest version (1:1.20230405-1).
raspberrypi-kernel is already the newest version (1:1.20230405-1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Reading package lists… Done
Building dependency tree… Done
Reading state information… Done
dkms is already the newest version (3.0.10-8+deb12u1).
git is already the newest version (1:2.39.5-0+deb12u1).
i2c-tools is already the newest version (4.3-2+b3).
libasound2-plugins is already the newest version (1.2.7.1-1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Creating symlink /var/lib/dkms/seeed-voicecard/0.3/source → /usr/src/seeed-voicecard-0.3
Sign command: /lib/modules/6.6.47+rpt-rpi-v8/build/scripts/sign-file
Signing key: /var/lib/dkms/mok.key
Public certificate (MOK): /var/lib/dkms/mok.pub
Certificate or key are missing, generating self signed certificate for MOK…

Building module:
Cleaning build area…
make -j4 KERNELRELEASE=6.6.47+rpt-rpi-v8 -C /lib/modules/6.6.47+rpt-rpi-v8/build M=/var/lib/dkms/seeed-voicecard/0.3/build…(bad exit status: 2)
Error! Bad return status for module build on kernel: 6.6.47+rpt-rpi-v8 (aarch64)
Consult /var/lib/dkms/seeed-voicecard/0.3/build/make.log for more information.
setup git config
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
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
Initialized empty Git repository in /etc/voicecard/.git/
git add --all
git commit -m “origin configures”
[master (root-commit) 2fd1137] 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
Created symlink /etc/systemd/system/sysinit.target.wants/seeed-voicecard.service → /lib/systemd/system/seeed-voicecard.service.

Please reboot your raspberry pi to apply all settings
Enjoy!

several deprecated and incompatible structures in the source code of the seeed-voicecard driver when compiling against a newer Linux kernel (6.6.47 in this case).

The make log :

DKMS make.log for seeed-voicecard-0.3 for kernel 6.6.47+rpt-rpi-v8 (aarch64)
Sun 29 Sep 20:06:24 CEST 2024
make: Entering directory ‘/usr/src/linux-headers-6.6.47+rpt-rpi-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
In file included from /usr/src/linux-headers-6.6.47+rpt-common-rpi/include/linux/device.h:15,
from /var/lib/dkms/seeed-voicecard/0.3/build/seeed-voicecard.c:19:
/var/lib/dkms/seeed-voicecard/0.3/build/seeed-voicecard.c: In function ‘seeed_voice_card_trigger’:
/var/lib/dkms/seeed-voicecard/0.3/build/seeed-voicecard.c:209:20: error: ‘struct snd_soc_dai’ has no member named ‘stream_active’
209 | dai->stream_active[SNDRV_PCM_STREAM_PLAYBACK], dai->stream_active[SNDRV_PCM_STREAM_CAPTURE]);
| ^~
/usr/src/linux-headers-6.6.47+rpt-common-rpi/include/linux/dev_printk.h:139:56: note: in definition of macro ‘dev_no_printk’
139 | _dev_printk(level, dev, fmt, ##VA_ARGS);
| ^~~~~~~~~~~
/var/lib/dkms/seeed-voicecard/0.3/build/seeed-voicecard.c:207:9: note: in expansion of macro ‘dev_dbg’
207 | dev_dbg(rtd->card->dev, “%s() stream=%s cmd=%d play:%d, capt:%d\n”,
| ^~~~~~~
/var/lib/dkms/seeed-voicecard/0.3/build/seeed-voicecard.c:209:67: error: ‘struct snd_soc_dai’ has no member named ‘stream_active’
209 | dai->stream_active[SNDRV_PCM_STREAM_PLAYBACK], dai->stream_active[SNDRV_PCM_STREAM_CAPTURE]);
| ^~
/usr/src/linux-headers-6.6.47+rpt-common-rpi/include/linux/dev_printk.h:139:56: note: in definition of macro ‘dev_no_printk’
139 | _dev_printk(level, dev, fmt, ##VA_ARGS);
| ^~~~~~~~~~~
/var/lib/dkms/seeed-voicecard/0.3/build/seeed-voicecard.c:207:9: note: in expansion of macro ‘dev_dbg’
207 | dev_dbg(rtd->card->dev, “%s() stream=%s cmd=%d play:%d, capt:%d\n”,
| ^~~~~~~
/var/lib/dkms/seeed-voicecard/0.3/build/seeed-voicecard.c:231:24: error: ‘struct snd_soc_dai’ has no member named ‘stream_active’
231 | if (dai->stream_active[SNDRV_PCM_STREAM_CAPTURE] && substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
| ^~
/var/lib/dkms/seeed-voicecard/0.3/build/seeed-voicecard.c:251:20: error: ‘struct snd_soc_dai’ has no member named ‘stream_active’
251 | dai->stream_active[SNDRV_PCM_STREAM_PLAYBACK], dai->stream_active[SNDRV_PCM_STREAM_CAPTURE], ret);
| ^~
/usr/src/linux-headers-6.6.47+rpt-common-rpi/include/linux/dev_printk.h:139:56: note: in definition of macro ‘dev_no_printk’
139 | _dev_printk(level, dev, fmt, ##VA_ARGS);
| ^~~~~~~~~~~
/var/lib/dkms/seeed-voicecard/0.3/build/seeed-voicecard.c:249:9: note: in expansion of macro ‘dev_dbg’
249 | dev_dbg(rtd->card->dev, “%s() stream=%s cmd=%d play:%d, capt:%d;finished %d\n”,
| ^~~~~~~
/var/lib/dkms/seeed-voicecard/0.3/build/seeed-voicecard.c:251:67: error: ‘struct snd_soc_dai’ has no member named ‘stream_active’
251 | dai->stream_active[SNDRV_PCM_STREAM_PLAYBACK], dai->stream_active[SNDRV_PCM_STREAM_CAPTURE], ret);
| ^~
/usr/src/linux-headers-6.6.47+rpt-common-rpi/include/linux/dev_printk.h:139:56: note: in definition of macro ‘dev_no_printk’
139 | _dev_printk(level, dev, fmt, ##VA_ARGS);
| ^~~~~~~~~~~
/var/lib/dkms/seeed-voicecard/0.3/build/seeed-voicecard.c:249:9: note: in expansion of macro ‘dev_dbg’
249 | dev_dbg(rtd->card->dev, “%s() stream=%s cmd=%d play:%d, capt:%d;finished %d\n”,
| ^~~~~~~
/var/lib/dkms/seeed-voicecard/0.3/build/seeed-voicecard.c: In function ‘asoc_simple_parse_dai’:
/var/lib/dkms/seeed-voicecard/0.3/build/seeed-voicecard.c:300:15: error: too few arguments to function ‘snd_soc_of_get_dai_name’
300 | ret = snd_soc_of_get_dai_name(node, &dlc->dai_name);
| ^~~~~~~~~~~~~~~~~~~~~~~
In file included from /var/lib/dkms/seeed-voicecard/0.3/build/seeed-voicecard.c:26:
/usr/src/linux-headers-6.6.47+rpt-common-rpi/include/sound/soc.h:1349:5: note: declared here
1349 | int snd_soc_of_get_dai_name(struct device_node *of_node,
| ^~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/seeed-voicecard/0.3/build/seeed-voicecard.c: In function ‘asoc_simple_init_dai_link_params’:
/var/lib/dkms/seeed-voicecard/0.3/build/seeed-voicecard.c:353:41: error: ‘const struct snd_soc_component_driver’ has no member named ‘non_legacy_dai_naming’; did you mean ‘legacy_dai_naming’?
353 | if (!component->driver->non_legacy_dai_naming)
| ^~~~~~~~~~~~~~~~~~~~~
| legacy_dai_naming
/var/lib/dkms/seeed-voicecard/0.3/build/seeed-voicecard.c:380:17: error: ‘struct snd_soc_dai_link’ has no member named ‘params’
380 | dai_link->params = params;
| ^~
/var/lib/dkms/seeed-voicecard/0.3/build/seeed-voicecard.c:381:19: error: ‘struct snd_soc_dai_link’ has no member named ‘num_params’; did you mean ‘c2c_params’?
381 | dai_link->num_params = 1;
| ^~~~~~~~~~
| c2c_params
/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:15: 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:15: 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:15: 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:15: 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/ac101.c: In function ‘ac101_hw_params’:
/var/lib/dkms/seeed-voicecard/0.3/build/ac101.c:1083:38: error: ‘struct snd_soc_dai’ has no member named ‘stream_active’
1083 | if (codec_dai->stream_active[SNDRV_PCM_STREAM_CAPTURE] && dmic_used && codec_aif1_fs[i].samp_rate == 44100) {
| ^~
In file included from /usr/src/linux-headers-6.6.47+rpt-common-rpi/include/linux/device.h:15,
from /usr/src/linux-headers-6.6.47+rpt-common-rpi/include/linux/acpi.h:14,
from /usr/src/linux-headers-6.6.47+rpt-common-rpi/include/linux/i2c.h:13,
from /var/lib/dkms/seeed-voicecard/0.3/build/ac108.c:21:
/var/lib/dkms/seeed-voicecard/0.3/build/ac108.c: In function ‘ac108_hw_params’:
/var/lib/dkms/seeed-voicecard/0.3/build/ac108.c:656:28: error: ‘struct snd_soc_dai’ has no member named ‘stream_active’
656 | dai->stream_active[SNDRV_PCM_STREAM_PLAYBACK], dai->stream_active[SNDRV_PCM_STREAM_CAPTURE]);
| ^~
/usr/src/linux-headers-6.6.47+rpt-common-rpi/include/linux/dev_printk.h:139:56: note: in definition of macro ‘dev_no_printk’
139 | _dev_printk(level, dev, fmt, ##VA_ARGS);
| ^~~~~~~~~~~
/var/lib/dkms/seeed-voicecard/0.3/build/ac108.c:654:9: note: in expansion of macro ‘dev_dbg’
654 | dev_dbg(dai->dev, “%s() stream=%s play:%d capt:%d +++\n”, func,
| ^~~~~~~
/var/lib/dkms/seeed-voicecard/0.3/build/ac108.c:656:75: error: ‘struct snd_soc_dai’ has no member named ‘stream_active’
656 | dai->stream_active[SNDRV_PCM_STREAM_PLAYBACK], dai->stream_active[SNDRV_PCM_STREAM_CAPTURE]);
| ^~
/usr/src/linux-headers-6.6.47+rpt-common-rpi/include/linux/dev_printk.h:139:56: note: in definition of macro ‘dev_no_printk’
139 | _dev_printk(level, dev, fmt, ##VA_ARGS);
| ^~~~~~~~~~~
/var/lib/dkms/seeed-voicecard/0.3/build/ac108.c:654:9: note: in expansion of macro ‘dev_dbg’
654 | dev_dbg(dai->dev, “%s() stream=%s play:%d capt:%d +++\n”, func,
| ^~~~~~~
/var/lib/dkms/seeed-voicecard/0.3/build/ac108.c:667:66: error: ‘struct snd_soc_dai’ has no member named ‘stream_active’
667 | if ((substream->stream == SNDRV_PCM_STREAM_CAPTURE && dai->stream_active[SNDRV_PCM_STREAM_PLAYBACK])
| ^~
/var/lib/dkms/seeed-voicecard/0.3/build/ac108.c:668:67: error: ‘struct snd_soc_dai’ has no member named ‘stream_active’
668 | || (substream->stream == SNDRV_PCM_STREAM_PLAYBACK && dai->stream_active[SNDRV_PCM_STREAM_CAPTURE])) {
| ^~
/var/lib/dkms/seeed-voicecard/0.3/build/ac108.c: At top level:
/var/lib/dkms/seeed-voicecard/0.3/build/ac108.c:1332:10: error: ‘struct snd_soc_component_driver’ has no member named ‘non_legacy_dai_naming’; did you mean ‘legacy_dai_naming’?
1332 | .non_legacy_dai_naming = 1,
| ^~~~~~~~~~~~~~~~~~~~~
| legacy_dai_naming
/var/lib/dkms/seeed-voicecard/0.3/build/ac108.c:1550:21: error: initialization of ‘int ()(struct i2c_client )’ from incompatible pointer type ‘int ()(struct i2c_client *, const struct i2c_device_id *)’ [-Werror=incompatible-pointer-types]
1550 | .probe = ac108_i2c_probe,
| ^~~~~~~~~~~~~~~
/var/lib/dkms/seeed-voicecard/0.3/build/ac108.c:1550:21: note: (near initialization for ‘ac108_i2c_driver.probe’)
/var/lib/dkms/seeed-voicecard/0.3/build/wm8960.c:1294:10: error: ‘const struct snd_soc_component_driver’ has no member named ‘non_legacy_dai_naming’; did you mean ‘legacy_dai_naming’?
1294 | .non_legacy_dai_naming = 1,
| ^~~~~~~~~~~~~~~~~~~~~
| legacy_dai_naming
/var/lib/dkms/seeed-voicecard/0.3/build/ac108.c:1551:21: error: initialization of ‘void (
)(struct i2c_client )’ from incompatible pointer type ‘int ()(struct i2c_client *)’ [-Werror=incompatible-pointer-types]
1551 | .remove = ac108_i2c_remove,
| ^~~~~~~~~~~~~~~~
/var/lib/dkms/seeed-voicecard/0.3/build/ac108.c:1551:21: note: (near initialization for ‘ac108_i2c_driver.remove’)
/var/lib/dkms/seeed-voicecard/0.3/build/wm8960.c:1411:21: error: initialization of ‘int ()(struct i2c_client )’ from incompatible pointer type ‘int ()(struct i2c_client *, const struct i2c_device_id *)’ [-Werror=incompatible-pointer-types]
1411 | .probe = wm8960_i2c_probe,
| ^~~~~~~~~~~~~~~~
/var/lib/dkms/seeed-voicecard/0.3/build/wm8960.c:1411:21: note: (near initialization for ‘wm8960_i2c_driver.probe’)
/var/lib/dkms/seeed-voicecard/0.3/build/wm8960.c:1412:21: error: initialization of ‘void (
)(struct i2c_client )’ from incompatible pointer type ‘int ()(struct i2c_client *)’ [-Werror=incompatible-pointer-types]
1412 | .remove = wm8960_i2c_remove,
| ^~~~~~~~~~~~~~~~~
/var/lib/dkms/seeed-voicecard/0.3/build/wm8960.c:1412:21: note: (near initialization for ‘wm8960_i2c_driver.remove’)
/var/lib/dkms/seeed-voicecard/0.3/build/seeed-voicecard.c:513:15: 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:38: 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:
/usr/src/linux-headers-6.6.47+rpt-common-rpi/include/sound/simple_card_utils.h:168:70: note: expected ‘struct snd_soc_dai_link_component *’ but argument is of type ‘struct snd_soc_dai_link *’
168 | void asoc_simple_canonicalize_cpu(struct snd_soc_dai_link_component *cpus,
| ~^~
/var/lib/dkms/seeed-voicecard/0.3/build/seeed-voicecard.c:548:43: 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 *
/usr/src/linux-headers-6.6.47+rpt-common-rpi/include/sound/simple_card_utils.h:166:75: note: expected ‘struct snd_soc_dai_link_component *’ but argument is of type ‘struct snd_soc_dai_link *’
166 | void asoc_simple_canonicalize_platform(struct snd_soc_dai_link_component *platforms,
| ~^
/var/lib/dkms/seeed-voicecard/0.3/build/seeed-voicecard.c:548:9: error: too few arguments to function ‘asoc_simple_canonicalize_platform’
548 | asoc_simple_canonicalize_platform(dai_link);
| ^

/usr/src/linux-headers-6.6.47+rpt-common-rpi/include/sound/simple_card_utils.h:166:6: note: declared here
166 | void asoc_simple_canonicalize_platform(struct snd_soc_dai_link_component *platforms,
| ^
~~~~~~~~~~~~
/var/lib/dkms/seeed-voicecard/0.3/build/seeed-voicecard.c: In function ‘seeed_voice_card_remove’:
/var/lib/dkms/seeed-voicecard/0.3/build/seeed-voicecard.c:868:16: error: void value not ignored as it ought to be
868 | return asoc_simple_clean_reference(card);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
make[2]: *** [/usr/src/linux-headers-6.6.47+rpt-common-rpi/scripts/Makefile.build:248: /var/lib/dkms/seeed-voicecard/0.3/build/ac101.o] Error 1
make[2]: *** Waiting for unfinished jobs…
/var/lib/dkms/seeed-voicecard/0.3/build/seeed-voicecard.c:869:1: error: control reaches end of non-void function [-Werror=return-type]
869 | }
| ^
cc1: some warnings being treated as errors
cc1: some warnings being treated as errors
/var/lib/dkms/seeed-voicecard/0.3/build/seeed-voicecard.c: 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,
| ^~~~~~~~~~~~~~~~~~~~~
make[2]: *** [/usr/src/linux-headers-6.6.47+rpt-common-rpi/scripts/Makefile.build:248: /var/lib/dkms/seeed-voicecard/0.3/build/wm8960.o] Error 1
make[2]: *** [/usr/src/linux-headers-6.6.47+rpt-common-rpi/scripts/Makefile.build:248: /var/lib/dkms/seeed-voicecard/0.3/build/ac108.o] Error 1
cc1: some warnings being treated as errors
make[2]: *** [/usr/src/linux-headers-6.6.47+rpt-common-rpi/scripts/Makefile.build:248: /var/lib/dkms/seeed-voicecard/0.3/build/seeed-voicecard.o] Error 1
make[1]: *** [/usr/src/linux-headers-6.6.47+rpt-common-rpi/Makefile:1946: /var/lib/dkms/seeed-voicecard/0.3/build] Error 2
make: *** [/usr/src/linux-headers-6.6.47+rpt-common-rpi/Makefile:246: __sub-make] Error 2
make: Leaving directory ‘/usr/src/linux-headers-6.6.47+rpt-rpi-v8’

That’s interesting because I get the same error messages (using an unsupported kernel etc). Maybe downgrading will make it work, even for RPi 5.

I found a youtuber who claims to run ReSpeaker 2-Mics Pi HAT on his Raspberry Pi 5. He is using Linux raspberrypi 6.1.0-rpi7-rpi-v8 #1 SMP PREEMPT Debian 1:6.1.63-1+rpt1 (2023-11-24) aarch64 GNU/Linux

We could try old images, made just before 2023-11-24 from the archives:
lite_arm64

Or downgrade even though it’s risky to something like https://github.com/raspberrypi/firmware/commit/26e180f6890f1b4b1c57cdd0a8b61ada3d0ccb1c

But a real solution would be great to find where we can use the latest updates.

I’ve spent too much time on this.

I’ve got audio to work on Raspberry Pi 5 on a 2 Mic. I haven’t tested on Raspberry Pi 4 yet.

I will upload my progress here including info and instructions:
https://github.com/Wartem/seeed-voicecard

1 Like

Oh sounds great. Thank you, I will check it.
Do you think it could work for ReSpeaker6 though?

You didnt manage to get LEDs working, right?

I added support for all of them but I have only tested the 2 mic.
No, the LEDs didn’t work during testing.