2

I have a Raspberry Pi Zero and I am using the Adafruit I2S MEMS Microphone together with the ADAFRUIT I2S 3W CLASS D AMPLIFIER BREAKOUT - MAX98357A.

I did follow the two respective tutorials and I got both the mic and the speaker working. However, I do need to disable the microphone or the amp + speaker won't work.

There seems to be a conflict regarding the I2S bus.

According to this forum post it can be done.

pi zero

Update:

I have the following /etc/modules:

i2c-dev
snd-bcm2835
my_loader

The /boot/config.txt looks like so:

# ... 
dtparam=i2s=on
# ... 
dtparam=audio=on 
dtoverlay=hifiberry-dac 
dtoverlay=i2s-mmap

This is what I see in dmesg when I have both the mic and the amplifier enabled:

[ 13.039895] asoc-simple-card asoc-simple-card.0: snd-soc-dummy-dai <-> 20203000.i2s mapping ok
[ 13.660674] bcm2835-i2s 20203000.i2s: Trying to bind component to card "snd_rpi_hifiberry_dac" but is already bound to card "snd_rpi_simple_card"
[ 13.660700] snd-hifiberry-dac soc:sound: ASoC: failed to instantiate card -19
[13.661278] snd-hifiberry-dac soc:sound: snd_soc_register_card() failed: -19

Contradictings instructions

The two adafruit tutorials for the mic and the amp are conflicting. The mic tutorial tells me to enable the snd-bcm2835 module:

Add snd-bcm2835 on its own line, to the modules file as shown below

While the amp tutorial tells me to disable the module:

However, if you see the following line:

snd_bcm2835

Put a # in front of it

Please note the different typing using both a dash and an underscore snd_bcm2835 vs. snd-bcm2835.

| improve this question | | | | |
2

I was also getting the same error. But now it is working for me. First you install I2S microphone as shown here: https://learn.adafruit.com/adafruit-i2s-mems-microphone-breakout/raspberry-pi-wiring-and-test

After that while you are installing I2S amplifier go to the detailed installation section and skip the first 2 steps and start from "Create asound.conf file" and at last reboot your pi.

Update: Please note that using the aplay.service which constantly sends audio to the audio output will break the microphone.

| improve this answer | | | | |

Not the answer you're looking for? Browse other questions tagged or ask your own question.