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-voicecard repo 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-wm8960
snd-soc-simple-card
snd-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.