I was recently bought a Respeaker 4 Mic Array for Christmas, and have been attempting to use it with a Raspberry Pi 2B Rev 1.1.
The install of drivers completed successfully, and I have managed to get the pixels_demo.py working so the connection to the board seems to be working, however I have not yet managed to get the microphones working.
First, the ac108 was not recognised at all by the Raspberry Pi, the output of arecord -L was:
</s><i>
</i>null
Discard all samples (playback) or generate zero samples (capture)
pulse
PulseAudio Sound Server
<e>
I noticed in the boot up of the raspberry pi that the seeed-voicecard.service was not being started due to an issue :
</s><i>
</i>pi@raspberrypi:~ $ dmesg | grep seeed
[ 3.371837] systemd[1]: Found dependency on seeed-voicecard.service/start
[ 3.434067] systemd[1]: Breaking ordering cycle by deleting job seeed-voicecard.service/start
[ 3.798699] snd_soc_seeed_voicecard: loading out-of-tree module taints kernel.
[ 65.104551] seeed-voicecard soc:sound: ac10x-codec0 <-> 3f203000.i2s mapping ok
<e>
So I fixed this by starting the service myself:
</s><i>
</i>pi@raspberrypi:~ $ sudo systemctl start seeed-voicecard.service
pi@raspberrypi:~ $
<e>
This then allowed the ac108 to appear in the arecord options:
</s><i>
</i>pi@raspberrypi:~ $ arecord -L
null
Discard all samples (playback) or generate zero samples (capture)
pulse
PulseAudio Sound Server
default
playback
ac108
sysdefault:CARD=seeed4micvoicec
seeed-4mic-voicecard,
Default Audio Device
dmix:CARD=seeed4micvoicec,DEV=0
seeed-4mic-voicecard,
Direct sample mixing device
dsnoop:CARD=seeed4micvoicec,DEV=0
seeed-4mic-voicecard,
Direct sample snooping device
hw:CARD=seeed4micvoicec,DEV=0
seeed-4mic-voicecard,
Direct hardware device without any conversions
plughw:CARD=seeed4micvoicec,DEV=0
seeed-4mic-voicecard,
Hardware device with all software conversions
<e>
However this does not match the tutorial output and the arecord test command fails as so:
</s><i>
</i>pi@raspberrypi:~ $ arecord -Dac108 -f S32_LE -r 16000 -c 4 hello.wav
Recording WAVE 'hello.wav' : Signed 32 bit Little Endian, Rate 16000 Hz, Channels 4
arecord: set_params:1297: Unable to install hw params:
ACCESS: RW_INTERLEAVED
FORMAT: S32_LE
SUBFORMAT: STD
SAMPLE_BITS: 32
FRAME_BITS: 128
CHANNELS: 4
RATE: 16000
PERIOD_TIME: 125000
PERIOD_SIZE: 2000
PERIOD_BYTES: 32000
PERIODS: 4
BUFFER_TIME: 500000
BUFFER_SIZE: 8000
BUFFER_BYTES: 128000
TICK_TIME: 0
<e>
What else should I adjust to get the arecord working? Also, enabling the seeed-voicecard.service via systemctl has not fixed the issue of the ac108 appearing, I have to start the service automatically to get it to appear each time, which harms its potential usage as part of an automatic home assistant.
I hope there will be some way to get the array to work with the RasPi 2B (as it is advertised), otherwise I will be launching a complaint with amazon and requesting a refund. Any help with this will be greatly appreciated.