The V2.0 is a silent hardware revision of the 2-Mics Pi HAT. Visually identical, electrically different: the WM8960 codec used on v1 (I2C 0x1a) is replaced with a TLV320AIC3104 codec (I2C 0x18). This matters because the v1 driver stage does not produce a working sound card on v2 hardware, and because the mixer defaults differ.
Features (same as v1):
- Support the Raspberry Pi 3B / 4B / Zero 2 W
- Two microphones (Mic L and Mic R)
- Two Grove connectors
- One User-defined button
- 3.5 mm audio interface
- XH2.54-2P audio output interface
Unlike v1 — which needs an out-of-tree DKMS kernel module — v2 uses the mainline snd-soc-tlv320aic3x driver that already ships with the Raspberry Pi OS kernel. The image only needs:
- The device-tree overlay
respeaker-2mic-v2_0.dtbo(built from Seeed-Studio/seeed-linux-dtoverlays), enabled viadtoverlay=respeaker-2mic-v2_0in/boot/firmware/config.txt. dtparam=i2c_arm=onin/boot/firmware/config.txt.- Per-boot mixer tuning — the TLV320 ships with several attenuators well below 100 % (
HP DACat -23.5 dB in particular), producing a card that appears to work but is inaudible at typical application volumes.
The PiCompose 02-stage-audiodriver-2michat-v2 stage performs all three steps automatically. The mixer tuning is applied by configure_audio.service on every boot, the same pattern other audiodriver stages follow after #42: amixer on the codec-specific controls, then wpctl set-volume @DEFAULT_AUDIO_SINK@ 1.0 to keep the PipeWire sink at unity. PipeWire / WirePlumber manage ALSA state per session and can reset the mixer between reboots, so a first-boot-only guard would let users end up stuck at 0%. Customization via amixer is still possible at runtime — it just won't survive a reboot.
