@Mitchell, Also I have a problem with the microphone. The recording is blank, although it is being detected by the “arecord -l” command. Can you check the overlay if it is fine or not? Because I bought a brand new INMP441 microphone and soldered its pins, and still the recording is completely blank, either by “arecord” or by using “sounddevice” library in Python. If you can check it and let me know, I would be grateful.
Problem in Enabling I2C and I2S
As a note this does not work for me as well. The microphone seems to be recognised
radxa@radxa-zero3:~$ arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: inmp441 [inmp441], device 0: fe430000.i2s-rk_codec_digital fe478000.codec-digital-0 [fe430000.i2s-rk_codec_digital fe478000.codec-digital-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
However when trying to capture there is no sound recorded. Additionaly the vumeter displayed at the bottom of this command does not show any input.
arecord -D plughw:0 -c1 -r 48000 -f S32_LE -t wav -V mono -v file.wav
Trying with a stereo recording leads to the same issue
arecord -D plughw:0 -c2 -r 48000 -f S32_LE -t wav -V stereo -v file_stereo.wav
This DTS provided in this post works but with a lot of static noise in the backgound.
The same microphone on a RaspberryPI has no noise so it’s not a microphone hardware issue.
Could you share the DTS used to produce the DTBO above ?
The static noise was likely a wiring issue. I have now an amplifier connected as well and did some rewiring as a result. No more static sound.
Yes, works perfectly and so does the MAX98357 with that same DTS.
View the datasheet only supports the highest S24_LE
and 64
of mclk-fs
, which may help you get a better experience
I’ve changed the DTS and the capture with these new parameters, I couldn’t any meaningful differences. But in any case it is working fine for me.
hello Mitchell,
I use the dtbo you provided, connected inmp441, it’s can be recogonized. But the .wav file is empty full of static noise. What did I make wrong?
zero3W
Debian bullseye
hi Manuc,
is your system Armbian or Debian bullseye? I compiled the DTS provided and try to copy to /boot/dtbo, it’s not compatible.
mine is
NAME=“Debian GNU/Linux”
VERSION_ID=“11”
VERSION=“11 (bullseye)”
ID=debian
/dts-v1/;
/plugin/;
/ {
metadata {
title = “Enable INMP441 I2S Microphone on Zero 3E”;
compatible = “radxa,zero3”;
category = “audio”;
description = “Enable INMP441 I2S microphone on I2S3-M0.”;
};
fragment@0 {
target = <&i2s3_2ch>;
__overlay__ {
rockchip,clk-trcm = <1>;
pinctrl-names = "default";
pinctrl-0 = <&i2s3m0_sclk
&i2s3m0_lrck
&i2s3m0_sdi
&i2s3m0_sdo>;
status = "okay";
};
};
fragment@1 {
target-path = "/";
__overlay__ {
sound {
status = "okay";
compatible = "simple-audio-card";
simple-audio-card,name = "test";
simple-audio-card,format="i2s";
simple-audio-card,bitclock-master = <&cpu_dai>;
simple-audio-card,frame-master = <&cpu_dai>;
simple-audio-card,mclk-fs = <256>;
cpu_dai: simple-audio-card,cpu {
sound-dai = <&i2s3_2ch>;
};
codec_dai: simple-audio-card,codec {
sound-dai = <&i2s3_out>;
};
};
i2s3_out: i2s3-out {
#sound-dai-cells = <0>;
compatible = "rockchip,dummy-codec";
status = "okay";
};
};
};
};
이 dts 코드로 소리 입력 되는거 확인했습니다. dtbo 로 변환해서 사용해보세요
ex ) dtc -@ -I dts -O dtb -o inmp441.dtbo bb.dts
미첼~ 감사드립니다.