ReSpeaker 4-Mic Linear Array Kit + Jetson Nano B01

This product is NOT specifically designed to work with Jetson Nano. Product page confirms this to work with Raspberry Pi compatible(Support Raspberry Pi Zero and Zero W, Raspberry Pi B+, Raspberry Pi 2 B, Raspberry Pi 3 B, Raspberry Pi 3 B+, Raspberry Pi 3 A+ and Raspberry Pi 4)

I cannot find an equivalent product certified to work with the Nano.

Before I start experimenting, checking if someone has tested (and failed or succeeded) with this accessory.

Link to full product details:
http://wiki.seeedstudio.com/ReSpeaker_4-Mic_Linear_Array_Kit_for_Raspberry_Pi/

There are already people working here

Any update on this topic? I have a ReSpeaker 4-mic Linear Array Kit for Raspberry PI 4. Would it work if I just plug it onto the Jetson Nano board?

It’s almost end of May - any sign of Jetson Nano support?

no solution here yet? stil won’t work on Jetson Nano?

There is no plan to support for the time being. If more people appeal, we will consider supporting. @jetsonNanoSG

1 Like

Hello Baozhu,
I am trying to configure Jetson nano with respeaker 4 mic array V1.0(AC108).
I have connected repeaker board on jetson nano’s 40-pin Expansion Header.
I have created DTS file for 4-mic array V1.0 with reference of 2-mic array which is successfully running on nano[0].

I have attached(later in this post) 2 dts [File_1 and File_2] files for 4mic.
Could not attach dmesg log so 2 log-prints mention below.

Prints from dmesg:

tegra-i2c 7000c400.i2c: no acknowledge from address 0x3b
snd_soc_seeed_voicecard: loading out-of-tree module taints kernel.

jetson@jetson-desktop:~$ lsmod
Module                  Size  Used by
fuse                  103841  3
zram                   26166  4
overlay                48691  0
spidev                 13282  0
snd_soc_wm8960         41957  0
snd_soc_ac108          65570  0
snd_soc_seeed_voicecard    11255  1 snd_soc_ac108
nvgpu                1575721  18
bluedroid_pm           13912  0
ip_tables              19441  0
x_tables               28951  1 ip_tables
jetson@jetson-desktop:~$ 

jetson@jetson-desktop:~$ arecord -l
**** List of CAPTURE Hardware Devices ****
jetson@jetson-desktop:~$ 

File_1: jetson-seeed-4mic-ac108.dts

/dts-v1/;
/plugin/;

#include <dt-bindings/pinctrl/tegra210-p3448-0000-p3449-0000-a02.h>
#include <dt-bindings/pinctrl/pinctrl-tegra.h>

/ {
	overlay-name = "Seeed Voice Card 4MIC";
	compatible = JETSON_COMPATIBLE;

	fragment@0 {
        target-path = "/";
        __overlay__ {
            clocks {
                ac108_mclk: ac108_mclk {
                    compatible = "fixed-clock";
                    #clock-cells = <0x0>;
                    clock-frequency = <24000000>;
                    clock-output-names = "ac108-mclk";
                    status = "okay";
                };
            };
        };
    };  

	fragment@1 {
        target = <&hdr40_i2c1>;
        __overlay__ {
            #address-cells = <1>;
            #size-cells = <0>;

            ac108_a: ac108@3b {
                #sound-dai-cells = <0x0>;
                data-protocol = <0x0>;
                compatible = "x-power,ac108_0";
                status = "okay";

                reg = <0x3b>;

                clocks = <&ac108_mclk>;
                clock-names = "mclk";
            };
        };
    };

	fragment@2 {
        target = <&tegra_sound>;
        __overlay__ {
            compatible = "seeed-voicecard";
            seeed-voice-card,format = "dsp_a";
            seeed-voice-card,name = "seeed-4mic-voicecard";
            status = "okay";

            seeed-voice-card,bitclock-master = <&codec_dai>;
            seeed-voice-card,frame-master = <&codec_dai>;
            seeed-voice-card,channels-playback-override = <4>;
            seeed-voice-card,channels-capture-override  = <4>;

			cpu_dai: seeed-voice-card,cpu {
                sound-dai = <&hdr40_snd_link_i2s>;
                dai-tdm-slot-num     = <2>;
                dai-tdm-slot-width   = <32>;
                dai-tdm-slot-tx-mask = <1 1 0 0>; 
                dai-tdm-slot-rx-mask = <1 1 0 0>; 
            };

            codec_dai: seeed-voice-card,codec {
                sound-dai = <&ac108_a>;
                clocks =  <&ac108_mclk>;
            };
        };
    };

	fragment@3 {
        target = <&hdr40_snd_link_i2s>;
        __overlay__ {
            link-name = "seeed-voicecard-4mic";

            #sound-dai-cells = <0x0>;
            codec-dai = <&ac108_a>;
            codec-dai-name = "ac108_a";
            bitclock-master;
            frame-master;
        };
    };

	fragment@4 {
		target = <&pinmux>;
		__overlay__ {
			pinctrl-names = "default";
			pinctrl-0 = <&hdr40_pinmux>;

			hdr40_pinmux: header-40pin-pinmux {
				pin12 {
					nvidia,pins = HDR40_PIN12;
					nvidia,function = HDR40_I2S;
					nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
					nvidia,tristate = <TEGRA_PIN_DISABLE>;
					nvidia,enable-input = <TEGRA_PIN_ENABLE>;
				};

				pin35 {
					nvidia,pins = HDR40_PIN35;
					nvidia,function = HDR40_I2S;
					nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
					nvidia,tristate = <TEGRA_PIN_DISABLE>;
					nvidia,enable-input = <TEGRA_PIN_ENABLE>;
				};

				pin38 {
					nvidia,pins = HDR40_PIN38;
					nvidia,function = HDR40_I2S;
					nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
					nvidia,tristate = <TEGRA_PIN_ENABLE>;
					nvidia,enable-input = <TEGRA_PIN_ENABLE>;
				};

				pin40 {
					nvidia,pins = HDR40_PIN40;
					nvidia,function = HDR40_I2S;
					nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
					nvidia,tristate = <TEGRA_PIN_DISABLE>;
					nvidia,enable-input = <TEGRA_PIN_DISABLE>;
				};
			};
		};
	};
};

File_2: jetson-seeed-4mic-voicecard.dts

#include <jetson-seeed-4mic-ac108.dts>

/ {
	fragment@10 {
		target = <&pinmux>;
		__overlay__ {
			header-40pin-pinmux {
				pin19 {
					nvidia,pins = "spi1_mosi_pc0";
					nvidia,function = "spi1";
					nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
					nvidia,tristate = <TEGRA_PIN_DISABLE>;
					nvidia,enable-input = <TEGRA_PIN_ENABLE>;
				};
				pin21 {
					nvidia,pins = "spi1_miso_pc1";
					nvidia,function = "spi1";
					nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
					nvidia,tristate = <TEGRA_PIN_DISABLE>;
					nvidia,enable-input = <TEGRA_PIN_ENABLE>;
				};
				pin23 {
					nvidia,pins = "spi1_sck_pc2";
					nvidia,function = "spi1";
					nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
					nvidia,tristate = <TEGRA_PIN_DISABLE>;
					nvidia,enable-input = <TEGRA_PIN_ENABLE>;
				};
				pin24 {
					nvidia,pins = "spi1_cs0_pc3";
					nvidia,function = "spi1";
					nvidia,pull = <TEGRA_PIN_PULL_UP>;
					nvidia,tristate = <TEGRA_PIN_DISABLE>;
					nvidia,enable-input = <TEGRA_PIN_ENABLE>;
				};

				pin26 {
					nvidia,pins = "spi1_cs1_pc4";
					nvidia,function = "spi1";
					nvidia,pull = <TEGRA_PIN_PULL_UP>;
					nvidia,tristate = <TEGRA_PIN_DISABLE>;
					nvidia,enable-input = <TEGRA_PIN_ENABLE>;
				};
				#if 0
				pin27 {
					nvidia,pins = "gen1_i2c_sda_pj0";
					nvidia,function = "i2c1" /* "rsvd1" */;
					nvidia,pull = <TEGRA_PIN_PULL_UP>;
					nvidia,tristate = <TEGRA_PIN_DISABLE>;
					nvidia,enable-input = <TEGRA_PIN_ENABLE>;
					nvidia,io-high-voltage = <TEGRA_PIN_ENABLE>;
				};
				pin28 {
					nvidia,pins = "gen1_i2c_scl_pj1";
					nvidia,function = "i2c1" /* "rsvd1" */;
					nvidia,pull = <TEGRA_PIN_PULL_UP>;
					nvidia,tristate = <TEGRA_PIN_DISABLE>;
					nvidia,enable-input = <TEGRA_PIN_ENABLE>;
					nvidia,io-high-voltage = <TEGRA_PIN_ENABLE>;
				};
				#endif
			};
		};
	};
};

L4T Version:
R32 (release), REVISION: 3.1
Jetson nano B01

Any help much appreciated.

[0] https://github.com/Seeed-Studio/seeed-linux-dtoverlays

Thanks AshaTalambedu, I hope his code can help you.