ReSpeaker XVF3800 - corrupt

Hi guys - after some support
I’m using a Raspberry Pi Zero 2 W with a Seeed reSpeaker XVF3800 4-Mic Array over USB.

On a cold power-up with the ReSpeaker already plugged in, Linux detects it normally and ALSA shows the capture device, but the audio stream is corrupt.

If I unplug/replug the ReSpeaker after the Pi is already running, the same test and the audio is clean. Pressing the ReSpeaker’s onboard reset button also fixes it. A Linux USB unbind/rebind does not fix it.

So it looks like the ReSpeaker needs a real hardware reset or real USB power cycle after the Pi has booted.

My questions are:

  1. Can a Raspberry Pi Zero 2 W software-control or power-cycle the USB OTG port’s VBUS?
  2. Is there a safe way to electronically trigger the ReSpeaker XVF3800 reset button from GPIO or a small external circuit?
  3. Is this a known issue - if so is there a software fix?

Thank you in advance

Gary

1 Like

Hi Gary,

Welcome to the forum!!

Your test result is a good clue: if the onboard reset button fixes it but USB unbind/rebind doesn’t, I’d verify whether the ReSpeaker is ever truly performing that full software reset.

There is a Linux root-hub unbind method often used on Raspberry Pi to reset USB power, but I wouldn’t assume it is giving the XVF3800 the same reset as physically removing VBUS (and data). Easiest check: put a meter across the ReSpeaker’s USB 5 V/GND while you run the unbind/rebind. If 5 V stays present, software won’t be enough for this fault mode.

For a robust workaround, switch the ReSpeaker’s USB 5 V externally after the Pi has booted. A USB Power Switch can be GPIO-controlled via EN, but note it is not a plug-in inline USB data switch — you’d need to use it in a split-power arrangement or otherwise switch only the VBUS line while keeping the USB data path correct.

For the reset button, an opto-coupler across the two button pads is the cautious “electronic finger” approach. I’d only use a transistor/MOSFET directly after confirming with a meter/schematic that the button is just pulling a low-voltage reset line to ground.

I found a Seeed forum for a similar XVF3800 reboot/hang symptom where host-side USB reset was reported not to reset the device internals, so checking the posts solution and giving that a go!

Keen to see how you go, please let us know if this doesnt quite get the part over the line!
Liam