Jetson Nano A02 with Respeaker 4 Mic Array and Tensorflow 2.7

I have a project which use Tensorflow 2.7 and Respeaker 4 Mic Array on Jetson Nano.

Based on this Tensorflow Compatibility with NVIDIA containers and Jetpack I need to use JP 4.6.1 which uses kernel 32.7.1.

On the kernel 32.7.1 Developer Guide, I found the way to Configure Respeaker 4 Mic Array using jetson-io.py.

At first, the jetson-io.py only blinks and gone. I manage to fixed it after change the curses.resizeterm(height, width) to curses.resize_term(height, width) in jetson-io.py. Only to get

FATAL ERROR!

No DTB found for NVIDIA Jetson Nano Developer Kit!

Press any key to terminate

After tracing it, I found that I only have kernel_tegra210-p3448-0000-p3449-0000-b00.dtb on my /boot/dtb directory which probably not compatible with my Jetson Nano A02 device.

What should I do?

I even have the tegra210-p3448-0000-p3449-0000-a02-respeaker-4-mic-array.dtbo in my /boot/ directory.

Hi afisarsy,

Jetson-IO tools does necessary pinmux configuration and DT setup. It does not cover adding of codec driver and enabling compilation and setting mixer controls.

Guide for integrating respeaker 4-mic circular array is available here. Since you are having issues with Jetson-IO GUI tool, use this guide as it uses Jetson-IO command line tool.

Also, please share cat /proc/device-tree/compatible and cat /proc/device-tree/model from your board. I would like to check the issue with Jetson-IO GUI.

For other details, please refer below links

  1. Codec integration guide
  2. Codec integration troubleshooting

Thanks

I found tegra210-p3448-0000-p3449-0000-a02.dtb on my /boot/ directory and copy it to /boot/dtb/ which solve the No DTB found for NVIDIA Jetson Nano Developer Kit!. Is it safe to use it to configure the pinmux and DT setup?

For the cat /proc/device-tree/compatible I got

nvidia,p3449-0000-a02+p3448-0000-a02nvidia,jetson-nanonvidia,tegra210

And for the cat /proc/device-tree/model I got

NVIDIA Jetson Nano Developer Kit

Sorry I got a little confused here.
So after reading the Respeaker 4 Mic Array Integration Guide, I assume that I need to modify the kernel, build it, and flash the new kernel.
Followed by enable the codec based on the Codec Integration Guide.
Am I correct?

Also where I can find the Codec directory for kernel 32.7.1?

Hi afisarsy,

Is it safe to use it to configure the pinmux and DT setup?
You could after ensuring to have made relevant changes.

However for pinmux, suggest to follow documented methods. https://docs.nvidia.com/jetson/archives/l4t-archived/l4t-325/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/adaptation_and_bringup_nano.html#wwpID0E0EQ0HA is alternate way to make pinmux changes

But before that, did you try the command line methos that i suggested in the Respeaker code integration guide?

Sorry I got a little confused here.
So after reading the Respeaker 4 Mic Array Integration Guide, I assume that I need to modify the kernel, build it, and flash the new kernel.
Followed by enable the codec based on the Codec Integration Guide.
Am I correct?

Yes you are right, you need to modify kernel DTB, kernel image, reflash both and follow rest of the steps as mentioned

Thanks

Which command line method did you mean?
The sudo /opt/nvidia/jetson-io/config-by-function.py -o dtb i2s1 in Respeaker 4 Mic Integration Guide?

Also that guide uses kernel 32.3.1, while I use kernel 32.7.1. And the Linux_for_Tegra/source/public/kernel/kernel-4.9/sound/soc/codecs/ directory in kernel 32.3.1 is not exist in kernel 32.7.1.

Hi afisarsy,

I downloaded sources on Ubuntu through below link from https://developer.nvidia.com/embedded/linux-tegra-r3271
wget https://developer.nvidia.com/embedded/l4t/r32_release_v7.1/sources/t210/public_sources.tbz2

and I could see this path available after untaring necessary packages

Linux_for_Tegra/source/public/kernel/kernel-4.9/sound/soc/codecs. Please re-check at your end.

32.3.1 and 32.7.1 share Linux kernel 4.9 version. So there may not be major differences

Which command line method did you mean?
The `sudo /opt/nvidia/jetson-io/config-by-function.py -o dtb i2s1` in [Respeaker 4 Mic Integration Guide](https://github.com/AshaTalambedu/seeed-voicecard/blob/jetson-respeaker-4mic-array-compatible/README-jetson)?

Yes

Thanks

Oh you’re right, there’s a problem with my kernel source copy. I’ve found the codecs directory.

For the sudo /opt/nvidia/jetson-io/config-by-function.py -o dtb i2s1 command line, I haven’t run it. Isn’t it’s the same as enabling respeaker module using jetson-io.py?

Also in the Codec Integration Guide, the example is enabling the SGTL5000 codec by adding select SND_SOC_SGTL5000 in Linux_for_Tegra/source/public/kernel/nvidia/sound/soc/tegra-alt/Kconfig b/sound/soc/tegra-alt/Kconfig. But what should I add for Respeaker Codec? Is it select SND_SOC_AC108_CODEC?

sudo /opt/nvidia/jetson-io/config-by-function.py -o dtb i2s1 is different from applying respeaker overlay. respeaker ovelay also has sound node and i2c node changes in addition. Above command is just for pinmux part.

Yes, codec integration guide is provided for a sample reference codec so that it can be used as a reference while integrating other codecs.

For respeaker, we have provided reference again. Suggest you to go through provided Codec integration guide and github README to understand the overall procedure

Thanks

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.