I2S microphone input?

I’m trying to get i2s input working with the stock L4T R23.2 release:

$ uname -a
Linux tegra-ubuntu 3.10.67-g458d45c #1 SMP PREEMPT Mon Feb 8 17:44:18 PST 2016 aarch64 aarch64 aarch64 GNU/Linux

There do not appear to be any snd* modules in /lib/modules, and of course none are loaded. Before I go on a wild goose chase, has anyone gotten i2s to work on the tx1? What modules should I compile? There is a tegra soc driver in the ASoC project’s git repo, is that what I need?

Thanks,

/ji

I do not know what is required, but the information from modules is limited to features supported in module format. If you check “/proc/config.gz”, you’ll find that every feature supported by “y” (yes) exists but not a module.

I had assumed that everything non-essential is in modules, so I didn’t look in /proc/config.gz. However, everything appears to be in order:

CONFIG_SND_SOC_TEGRA_ALT=y
CONFIG_SND_SOC_TEGRA_ALT_210=y
CONFIG_SND_SOC_TEGRA210_I2S_ALT=y

and yet:
$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Tegra [HDA NVIDIA Tegra], device 3: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0

$ arecord -l
**** List of CAPTURE Hardware Devices ****

Note that DMIC is also not being shown. I also did look in the device tree with $ fdtdump /boot/dtb/tegra210-jetson-tx1-p2597-2180-a01-devkit.dtb and although I’m not a DT expert, everything appears to be in order as far as i2s is concerned.

Hello, Jijikos:
TO support analog microphone, please bring-up audio codec first.
In Jetson, please refer to RT5639 driver in kernel.

br
ChenJian

How is the RT5639 relevant? I’m not using an external codec, I’m trying to use the built-in APE.

I believe the built-in audio processing engine ties the CODEC to the i2s…without the CODEC there is no i2s, as i2s is only a data pipe (neither a sound source nor a sound destination, it is a sound conduit for the CODEC). I have not read those docs in quite some time, but as I recall some of the sound settings cannot be changed dynamically as things run…there may be issues with changing the CODEC after i2s is up.

No codec is involved. I have a pair of I2S microphones. I want to capture what they feed into the Tegra and process the audio. It’s not going to be replayed on anything.

Hi Jijikos,

Have you checked the “Tegra ASoC Driver” section from Tegra_Linux_Driver_Package_Documents?
Supposed there are useful info to meet your requirement.

Besides, the sample code is present in the kernel for reference purposes only, but we do not support it directly.

Thanks

Hi Jijikos,

i am actually trying the same thing. In the end I just want to grab the audio stream with gstreamer/pulsesrc.

Could you successfully access a i2s microphone?

Christian

I’m trying to do the same thing and wondering whether anybody can share their experience. Basically I have I2S input so don’t need any codec but like to use build in APE so I can grab the pcm data from alsa level. Any pointer will be really helpful.

thanks

Any updates on this? I’m looking into I2S microphones now too, specifically Adafruit I2S MEMS Microphone Breakout - SPH0645LM4H

Turns out it just works, see this post:
https://devtalk.nvidia.com/default/topic/1032970/jetson-tx2/i2s-mic-with-tx2/