I’m a complete noob and need a bit (lot) of guidance in this field. I have tried to use the ReSpeaker 2 mic hat on a pi zero 2 and a Pi5 with both failing miserably. I have got it down to the dtoverlay for the kernel header not starting. I have tried new up-to-date versions, I tried legacy versions with mis-matched kernel-header problems. Please help…someone!!!
Working setup: ReSpeaker 2-Mic HAT V2.0 on Raspberry Pi OS Bookworm (Kernel 6.12.47+rpt-rpi-v8) After weeks of debugging and testing with different kernels, I finally got the Seeed ReSpeaker 2-Mic HAT V2.0 (WM8960) fully working on the latest Raspberry Pi OS (Bookworm, 64-bit) with kernel 6.12.47+rpt-rpi-v8 — without building any DKMS driver or cloning seeed-voicecard.
Here’s what actually worked and why. ![]()
Background — why older methods failed
- Old guides (from Seeed’s
seeed-voicecardrepo or HinTak’s fork) rely on building an out-of-tree ALSA driver (snd-soc-seeed-voicecard). - That driver used internal kernel APIs (
simple_util_parse_card_name, etc.) that broke after kernel 5.10. - As a result, DKMS builds failed, and the ReSpeaker device never appeared in
arecord -l.
Even if the kernel detected the WM8960 chip on I²C (0x18), there was no proper I²S configuration — so ALSA never created the sound card.
The key discovery
Starting from Raspberry Pi OS Bullseye / Bookworm,
the kernel already includes:
snd-soc-wm8960snd-soc-simple-cardsnd-soc-core
These are mainline ALSA SoC drivers, meaning:
You no longer need Seeed’s custom driver.
You only need a correct Device Tree Overlay (.dtbo) to describe how the codec is wired.
The working solution
- Install Raspberry Pi OS Bookworm (64-bit) — the Lite or Desktop version both work.
My kernel was:
6.12.47+rpt-rpi-v8
- Download the official Seeed overlay source:
git clone https://github.com/Seeed-Studio/seeed-linux-dtoverlays.git
cd seeed-linux-dtoverlays/overlays/rpi
- Compile only the overlay you need:
sudo apt install device-tree-compiler
dtc -I dts -O dtb -o respeaker-2mic-v2_0.dtbo respeaker-2mic-v2_0-overlay.dts
- Copy it to the overlay directory:
sudo cp respeaker-2mic-v2_0.dtbo /boot/overlays/
- Edit the active config file:
For Bookworm Desktop OS, edit:
sudo nano /boot/firmware/config.txt
and add:
dtoverlay=respeaker-2mic-v2_0
For Lite OS, the file is /boot/config.txt.
6. Reboot
sudo reboot
Verify
After reboot:
dmesg | grep -i wm8960
should show the codec being initialized.
Then check:
arecord -l
You should see:
**** List of CAPTURE Hardware Devices ****
card 3: seeed2micvoicec [seeed2micvoicec], device 0: bcm2835-i2s-tlv320aic3x-hifi [...]
Subdevices: 1/1
Subdevice #0: subdevice #0
Why this works (technical explanation)
- The kernel already includes the WM8960 driver.
- The Seeed overlay simply tells the kernel:
“There’s a WM8960 codec on I²C address 0x18 connected to I²S0.” - The kernel binds
snd-soc-wm8960+snd-soc-simple-card, and ALSA registers it automatically. - No DKMS, no rebuild, no custom modules — just the
.dtbo.
Common pitfalls
| Problem | Cause |
|---|---|
arecord -l shows nothing |
Overlay not loaded (wrong config.txt path or missing .dtbo) |
| `vcdbg log msg | grep overlay` returns nothing |
| Grey screen in VNC / no GUI | Incomplete LXDE install (Bookworm uses /boot/firmware/config.txt for overlays) |
| “Failed to upload overlay” | You ran dtoverlay command manually instead of adding it to config.txt |
TL;DR
You don’t need the old Seeed voicecard driver anymore.
Just use:
- Raspberry Pi OS Bookworm (Kernel ≥ 6.1)
- Official Seeed overlay
.dts - Correct
dtoverlay=entry in/boot/firmware/config.txt
After reboot, it works immediately — full microphone input and playback on WM8960.