Jetson nano microphone tdm config

Hi ,

I have 6 channel microphone array and would like to connect to the jetson nano Dev kits. could you suggest how to config to stream the audio ?

This is spec of the microphone http://www.invensense.com/wp-content/uploads/2016/05/DS-000121-ICS-52000-v1.3.pdf

Thanks,
Terry

Hi ,

any update ?

Hello!

Apologies for the delay. I have taken a look at the microphone device and I don’t see why this would not work.

What you need to do is …

  1. Configure the pinmux on Nano to enable the I2S interface [0]

  2. Configure the I2S interface for DSP-A mode

$ amixer -c tegrasndt210ref cset name='I2S4 codec frame mode' dsp-a
  1. Capture 6 channels of audio. Note that the mics output 24-bit audio but in 32-bit slots and so we capture this as 32-bit audio.
$ arecord -D hw:tegrasndt210ref,0 -c 6 -r 48000 -f S32_LE cap.wav

Let me know if this helps.

Jon

[0] https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide%2Fhw_setup_jetson_io.html%23

Hi Jonathan,

Thanks for the reply. could you tell how to enable I2S interface to be tmd? I am assuming depending the intput format either tdm or i2s . i need config I2S interface differently ?

Thanks

Hello,

By configuring the I2S interface for DSP-A mode, you are configuring it for TDM. So the instructions above will configure for TDM using DSP-A mode timing.

Regards,
Jon

Hi, Jonathanh,

We just got our michphone board back. I dont see the fs clock during the recording. I am using Jetback 4.3. is I2S4 not enabled by default still ? it is known isssue in Jetpack 4.2.1.

To enable I2S4 with JetPack 4.2.1, I need update “pinmux-config-p3450-porg.h” and recompile the u-boot. do we still need this workaround with Jetpack 4.3 release?

Hello!

The I2S4 interface is not enabled by default. However, starting with Jetpack 4.3 we have included a tool to help configure the pins on the 40-pin header …

https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide%2Fhw_setup_jetson_io.html%23

The simplest way to enable the I2S4 interface is to execute the following command …

$ sudo find /opt/nvidia/jetson-io/ -mindepth 1 -maxdepth 1 -type d -exec touch {}/__init__.py \;
$ sudo /opt/nvidia/jetson-io/config-by-function.py -o dtb i2s4
$ sudo reboot

Note that the first command above is a workaround for an issue in Jetpack 4.3 and will be fixed in future releases. You only need to execute that command once.

Regards,
Jon

Thanks,

I got this err

vaitl@11223301010003f9:~$ sudo /opt/nvidia/jetson-io/config-by-function.py -o dtb i2s4
Traceback (most recent call last):
File “/opt/nvidia/jetson-io/config-by-function.py”, line 92, in
main()
File “/opt/nvidia/jetson-io/config-by-function.py”, line 76, in main
jetson = board.Board()
File “/opt/nvidia/jetson-io/Jetson/board.py”, line 147, in init
self.name = _board_get(self.compat)
File “/opt/nvidia/jetson-io/Jetson/board.py”, line 81, in _board_get
raise RuntimeError(“No board data found!”)
RuntimeError: No board data found!

i am using production module 900-13448-0020-000 dtb is tegra210-p3448-0002-p3449-0000-b00.dtb

Hello!

Please can you try the workaround here:

https://devtalk.nvidia.com/default/topic/1068583/jetson-nano/jetpack-4-3-l4t-r32-3-1-released/post/5413341/#5413341

We have fixed this as well for the next release.

Regards
Jon

I run
1.sudo cp -v /boot/tegra210-p3448-0000-p3449-0000-[ab]0[012].dtb /boot/dtb/
2.sudo find /opt/nvidia/jetson-io/ -mindepth 1 -maxdepth 1 -type d -exec touch {}/init.py ;
3.sudo /opt/nvidia/jetson-io/config-by-function.py -o dtb i2s4

step 3 give me same err
vaitl@11223301010003f9:/boot/dtb$ sudo /opt/nvidia/jetson-io/config-by-function.py -o dtb i2s4
Traceback (most recent call last):
File “/opt/nvidia/jetson-io/config-by-function.py”, line 92, in
main()
File “/opt/nvidia/jetson-io/config-by-function.py”, line 76, in main
jetson = board.Board()
File “/opt/nvidia/jetson-io/Jetson/board.py”, line 147, in init
self.name = _board_get(self.compat)
File “/opt/nvidia/jetson-io/Jetson/board.py”, line 81, in _board_get
raise RuntimeError(“No board data found!”)
RuntimeError: No board data found!

some info dump

vaitl@11223301010003f9:/boot/dtb$ cat /sys/firmware/devicetree/base/compatible
nvidia,jetson-nanonvidia,tegra210vaitl@11223301010003f9:/boot/dtb$

vaitl@11223301010003f9:/boot/dtb$ fdtget /boot/dtb/*.dtb / compatible
Error at ‘/boot/dtb/tegra210-p3448-0000-p3449-0000-a01.dtb’: FDT_ERR_NOTFOUND

vaitl@11223301010003f9:/boot$ ls /boot
dtb tegra210-p3448-0000-p3449-0000-a00.dtb
efi tegra210-p3448-0000-p3449-0000-a01-adafruit-sph0645lm4h.dtbo
extlinux tegra210-p3448-0000-p3449-0000-a01.dtb
grub tegra210-p3448-0000-p3449-0000-a01-fe-pi-audio-z-v2.dtbo
Image tegra210-p3448-0000-p3449-0000-a01-hdr40.dtbo
initrd tegra210-p3448-0000-p3449-0000-a02-adafruit-sph0645lm4h.dtbo
initrd.img tegra210-p3448-0000-p3449-0000-a02.dtb
initrd.img-4.9.140-tegra tegra210-p3448-0000-p3449-0000-a02-fe-pi-audio-z-v2.dtbo
tegra210-jetson-tx1-p2597-2180-a01-devkit-adafruit-sph0645lm4h.dtbo tegra210-p3448-0000-p3449-0000-a02-hdr40.dtbo
tegra210-jetson-tx1-p2597-2180-a01-devkit.dtb tegra210-p3448-0000-p3449-0000-b00.dtb
tegra210-jetson-tx1-p2597-2180-a01-devkit-fe-pi-audio-z-v2.dtbo tegra210-p3448-0002-p3449-0000-a02.dtb
tegra210-jetson-tx1-p2597-2180-a01-devkit-hdr40.dtbo tegra210-p3448-0002-p3449-0000-b00.dtb
tegra210-jetson-tx1-p2597-2180-a02-devkit-24x7.dtb
vaitl@11223301010003f9:/boot$

Hi ,

Any feedback ? thanks

Hello!

This is the problem. Current releases should have something like the following …

$ cat /sys/firmware/devicetree/base/compatible
nvidia,p3449-0000-a02+p3448-0000-a02nvidia,jetson-nanonvidia,tegra210

There are a couple different versions of the Jetson Nano and starting with L4T release 32.3.1 the compatible string should reflect the specific version (a02, b01, etc). So it would appear that you are using a DTB from an earlier release because jetson-io itself was only released with 32.3.1.

Regards,
Jon

Hi Jon,

1.Thanks, could you please be specific . which Jetpack release should I try for Jetson latest NANO production module ?900-13448-0020-000 . i
2.is this dtb tegra210-p3448-0002-p3449-0000-b00.dtb correct ? could you send me yours ?
3.can I use older rootfs ? does rootfs matter ?

Thanks

some more inforation, i was using sdk manager to download Jetpack 4.3 and use flash.sh the module .(Not dev kits) This is the latest release. what else did I miss ?

hi any comments ??

Hello!

Yes, you should use Jetpack 4.3. The correct DTB will be flashed by the flashing script. It is best to reflash the board rather than distribute DTBs, because there are a couple different versions of Nano and so we need the flash script to flash the appropriate DTB for you board. All versions of the Jetson Nano are supported by jetson-io and so I have no concerns that you board is not supported.

Somehow you have ended with an old DTB which I presume has come from an older release. Have you made any modifications to the release before flashing? If so I would just download jetpack and try flashing again.

I have not tried using an older rootfs with the current release so I am not sure if there could be any issues using an older rootfs. I would not expect that to cause an issue with the DTB, but I am not sure if there could be other issues. So it is probably best to use the rootfs that comes with jetpack.

Regards,
Jon

Hi

I am using Jetpack 4.3 and I installed some lib into rootfs. Is there anyting you want to check on my device so I can check if the file is used from older version ?

My hardware setup is . I put Jetson production module plugin into the Jetson nano dev kit’s carrier board. I will reflash with sdmanager . but I remembered that I tried before it was the same problem.

Thanks

Hello!

Sorry, I realised that you are using the eMMC version of the Nano module. This is not supported by jetson-io and so we cannot use it to configure the IOs. So what you need to do is …

  1. Download the Jetson Nano pinmux spreadsheet for the module: https://developer.nvidia.com/jetson-nano-pinmux
  2. Use the pinmux spreadsheet to configure the pins as needed.
  3. Click the ‘Generate DT’ button to export the pin configuration (it will output some device-tree source files)
  4. Update the DT files Linux_for_Tegra/sources/hardware/nvidia/platform/t210/porg/kernel-dts/porg-platforms/tegra210-porg-pinmux-p3448-0002-b00.dtsi and Linux_for_Tegra/sources/hardware/nvidia/platform/t210/porg/kernel-dts/porg-platforms/tegra210-porg-gpio-p3448-0002-b00.dtsi with the newly created files.
  5. Rebuild the kernel DTBs [0]
  6. Copy the DTB to the Linux_for_Tegra/kernel/dtb directory and reflash.

Regards,
Jon

[0] https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide%2Fkernel_custom.html%23wwpID0E02C0HA