2 mic hat kernal dtoverlay problems

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!!!

1 Like

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-v8without building any DKMS driver or cloning seeed-voicecard.

Here’s what actually worked and why. :point_down:


:jigsaw: 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.


:jigsaw: 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:
:arrow_right: You no longer need Seeed’s custom driver.
:arrow_right: You only need a correct Device Tree Overlay (.dtbo) to describe how the codec is wired.


:brain: The working solution

  1. Install Raspberry Pi OS Bookworm (64-bit) — the Lite or Desktop version both work.
    My kernel was:
6.12.47+rpt-rpi-v8
  1. Download the official Seeed overlay source:
git clone https://github.com/Seeed-Studio/seeed-linux-dtoverlays.git
cd seeed-linux-dtoverlays/overlays/rpi
  1. 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
  1. Copy it to the overlay directory:
sudo cp respeaker-2mic-v2_0.dtbo /boot/overlays/
  1. 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

:test_tube: Verify

After reboot:

dmesg | grep -i wm8960

should show the codec being initialized.

Then check:

arecord -l

:white_check_mark: 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

:bulb: 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.

:warning: 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

:dart: 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.

1 Like