Agx orin support es8323,but i2s1 no data output (original) (raw)
December 15, 2025, 12:09pm 1
The es8323 can be probed normally and is also recognized by I2C.
and driver from
The audio codec ES8388 does not work on Jetson nano - Jetson & Embedded Systems / Jetson Nano - NVIDIA Developer Forums
dts:
…
i2c@31e0000 {
status = “okay”;
es8323: es8388@11 {
compatible = “everest,es8388”, “everest,es8323”;
reg = <0x11>;
#sound-dai-cells = <1>;
sound-name-prefix = “x”;
//interrupt-parent = <&tegra_main_gpio>;
//interrupts = <TEGRA234_MAIN_GPIO(H, 0) GPIO_ACTIVE_HIGH>;
// clocks = <&sgtl5000_mclk>;
clocks = <&bpmp TEGRA234_CLK_AUD_MCLK>;
// clock-parents = <&bpmp TEGRA234_CLK_PLLA_OUT0>;
clock-names = “mclk”;
port {
es8388_ep: endpoint {
remote-endpoint = <&i2s1_dap>;
mclk-fs = <256>;
link-name = “ES8323-HiFi”;
};
};
};
};
…
i2s@2901000 {
status = “okay”;
ports {
#address-cells = <1>;
#size-cells = <0>;
es8323_i2s1_port: port@1 {
reg = <1>;
i2s1_dap: endpoint {
dai-format = “i2s”;
link-name = “ES8323-HiFi”;
/* placeholder for external codec */
remote-endpoint = <&es8388_ep>;
};
};
};
};
…
sound {
nvidia-audio-card,widgets =
“Headphones”, “Headphone”, // 耳机 widget
“Speakers”, “Speaker”, // 扬声器 widget
“Microphone”, “Main Mic”, // 主麦克风 widget
“Microphone”, “Headset Mic”, // 耳机麦克风 widget
“Headphone Power”, “Headphone Power”, // 耳机 power
“Speaker Power”, “Speaker Power”, //// 扬声器 power
“Lineout”, “LOUT1”,
“Lineout”, “ROUT1”,
“Lineout”, “LOUT2”,
“Lineout”, “ROUT2”,
“Line In”, “LINPUT1”,
“Line In”, “LINPUT2”,
“Line In”, “RINPUT1”,
“Line In”, “RINPUT2”;
nvidia-audio-card,routing =
“Headphone”, “LOUT1”,
“Headphone”, “ROUT1”,
“Speaker”, “LOUT2”,
“Speaker”, “ROUT2”,
“Headphone”, “Headphone Power”,
“Headphone”, “Headphone Power”,
“Speaker”, “Speaker Power”,
“Speaker”, “Speaker Power”,
“LINPUT1”, “Main Mic”,
“LINPUT2”, “Main Mic”,
“RINPUT1”, “Headset Mic”,
“RINPUT2”, “Headset Mic”;
nvidia-audio-card,mclk-fs = <256>;
es8323_snd_link_i2s: nvidia-audio-card,dai-link@76 {
link-name = “ES8323-HiFi”;
codec {
sound-dai = <&es8323 0>;
prefix = “x”;
};
};
};
and play
i2ctransfer -f -y 8 w2@0x11 0x04 0x30 && amixer -c APE cset name=“I2S1 Mux” ADMAIF2 && aplay -D hw:APE,1 output.wav
but i2s1 no data output,
tegra234-p3701-0005-p3737-0000.dtb.dts.tmp.txt (466.1 KB)
tegra234-p3737-0000-a04.dtsi.txt (13.1 KB)
agx_orin_boot_log_20251215.txt (95.6 KB)
Hi,
Greetings! Any error seen during playback? Have you set pinmux configuration via Jetson IO tool?
Could you try trouble shooting guide at Audio Setup and Development — NVIDIA Jetson Linux Developer Guide 1 documentation (This is for r36.2, If your version is different, check for suitable troubleshooting guide)
If using r35, you may refer Audio Setup and Development — NVIDIA Jetson Linux Developer Guide 1 documentation
Thanks!
1.Any error seen during playback?
no
2.Have you set pinmux configuration via Jetson IO tool?
i2s1 default,
hope that you can assist me in identifying the cause of this problem.
This is the boot loading process and the debug command during connection.
agx_orin_boot_log_20251216.txt (74.3 KB)
tegra234-p3701-0005-p3737-0000.dtb.dts.tmp.txt (465.8 KB)
root@tegra-ubuntu:/home/neardi#
root@tegra-ubuntu:/home/neardi# amixer -c APE contents | grep -A5 -B5 “I2S1 Mux”
; type=INTEGER,access=rw------,values=1,min=0,max=255,step=0
: values=0
numid=169,iface=MIXER,name=‘I2S1 Loopback’
; type=BOOLEAN,access=rw------,values=1
: values=off
numid=1167,iface=MIXER,name=‘I2S1 Mux’
; type=ENUMERATED,access=rw------,values=1,items=81
; Item #0 ‘None’
; Item #1 ‘ADMAIF1’
; Item #2 ‘ADMAIF2’
; Item #3 ‘ADMAIF3’
root@tegra-ubuntu:/home/neardi#
root@tegra-ubuntu:/home/neardi#
root@tegra-ubuntu:/home/neardi# cat /sys/kernel/debug/bpmp/debug/clk/aud_mclk/state
1
root@tegra-ubuntu:/home/neardi# cat /sys/kernel/debug/asoc/components//dai
cat: ‘/sys/kernel/debug/asoc/components/_/dai_’: Not a directory
root@tegra-ubuntu:/home/neardi#
root@tegra-ubuntu:/home/neardi# cat /proc/asound/cards
0 [HDA ]: tegra-hda - NVIDIA Jetson AGX Orin HDA
NVIDIA Jetson AGX Orin HDA at 0x3518000 irq 112
1 [APE ]: tegra-ape - NVIDIA Jetson AGX Orin APE
NVIDIA-JetsonAGXOrinNeardiDeveloperKit-NotSpecified-Jetson
root@tegra-ubuntu:/home/neardi#
sudo /opt/nvidia/jetson-io/config-by-function.py -l enabled
should list I2S1 if pinmux is set properly (ref: sudo /opt/nvidia/jetson-io/config-by-function.py -l enabled). Could you chekc this and paste o/p to confirm I2S1 is properly configured.
I hope that you are configuring routes properly before initating playback. You could refer playback and record examples here (Audio Setup and Development — NVIDIA Jetson Linux Developer Guide 1 documentation).
The card seems registered from your logs. Please check if codec is registered. The instructions will be available at Audio Setup and Development — NVIDIA Jetson Linux Developer Guide 1 documentation. Based on above observations, e could check further
Other possible directions for your trouble shooting apart from ones listed above
Correct master/slave roles via amixer (Tegra I2S should be clock master)
Try I2S Loopback test
Confirm codec MCLK
Check if any codec specific mixer settings required (this information can be found ith codec vendor or on internet)
Let me know if any help required with above steps
Thanks!
MCLK01_AUDIO_MCLK ->MCLK01,gpio3_pac.06, gpio-492 (PAC.06
I2S1_SCLK ->I2S1_CLK,gpio3_pad.00,gpio-494 (PAD.00
I2S1_DOUT ->I2S1_SDOUT,pad.01,gpio-495 (PAD.01
I2S1_FS ->I2S1_FS,pad03,gpio-497 (PAD.03
I2S1_DIN ->I2S1_SDIN,pad02,gpio-496 (PAD.02
tegra234-mb1-bct-pinmux-p3701-0000-a04.dtsi
soc_gpio59_pac6 {
nvidia,pins = "soc_gpio59_pac6";
nvidia,function = "aud";
nvidia,pull = <TEGRA_PIN_PULL_NONE>;
nvidia,tristate = <TEGRA_PIN_DISABLE>;
nvidia,enable-input = <TEGRA_PIN_DISABLE>;
nvidia,lpdr = <TEGRA_PIN_DISABLE>;
};
soc_gpio45_pad0 {
nvidia,pins = "soc_gpio45_pad0";
nvidia,function = "i2s1";
nvidia,pull = <TEGRA_PIN_PULL_NONE>;
nvidia,tristate = <TEGRA_PIN_DISABLE>;
nvidia,enable-input = <TEGRA_PIN_ENABLE>;
nvidia,lpdr = <TEGRA_PIN_DISABLE>;
};
soc_gpio46_pad1 {
nvidia,pins = "soc_gpio46_pad1";
nvidia,function = "i2s1";
nvidia,pull = <TEGRA_PIN_PULL_NONE>;
nvidia,tristate = <TEGRA_PIN_DISABLE>;
nvidia,enable-input = <TEGRA_PIN_DISABLE>;
nvidia,lpdr = <TEGRA_PIN_DISABLE>;
};
soc_gpio47_pad2 {
nvidia,pins = "soc_gpio47_pad2";
nvidia,function = "i2s1";
nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
nvidia,tristate = <TEGRA_PIN_ENABLE>;
nvidia,enable-input = <TEGRA_PIN_ENABLE>;
nvidia,lpdr = <TEGRA_PIN_DISABLE>;
};
soc_gpio48_pad3 {
nvidia,pins = "soc_gpio48_pad3";
nvidia,function = "i2s1";
nvidia,pull = <TEGRA_PIN_PULL_NONE>;
nvidia,tristate = <TEGRA_PIN_DISABLE>;
nvidia,enable-input = <TEGRA_PIN_ENABLE>;
nvidia,lpdr = <TEGRA_PIN_DISABLE>;
};
root@tegra-ubuntu:~# sudo /opt/nvidia/jetson-io/config-by-function.py -l enabled
Header 1 [default]: Jetson 40pin Header
Enabled functions (pins):
- can0 (29,31)
- can1 (33,37)
- pwm8 (13)
Header 2: Jetson AGX CSI Connector
No functions are enabled.
Header 3: Jetson M.2 Key E Slot
No functions are enabled.
sudo /opt/nvidia/jetson-io/jetson-io.py
Select desired functions (for pins):
[] can0 (29,31)
_[_] can1 (33,37)
dmic3 (16,32)
dmic5 (16,32)
extperiph4_clk (7)
i2s2 (12,35,38,40)
pwm1 (15)
pwm5 (18)
[*] pwm8 (13)
spi1 (19,21,23,24,26)
uarta-cts/rts (11,36)
no i2s1
Are you using I2S pins from 40 pin header?
I guess inbuilt codec is connected to I2S1 already and may not be available for use. Are you using AGX Dev Kit or custom Carrier board?
Since I2S1 pinmux is set by default, the clocks should be operational. You could initiate playback and probe fsync and lrck lines to see if frequency is proper.
And further, you don’t seem to have looked into other aspects suggested here at Agx orin support es8323,but i2s1 no data output - #9 by atalambedu
Please share observations in all of above aspects as well
Thanks!
MCLK01_AUDIO_MCLK ->MCLK01,gpio3_pac.06, gpio-492 (PAC.06
I2S1_SCLK ->I2S1_CLK,gpio3_pad.00,gpio-494 (PAD.00
I2S1_DOUT ->I2S1_SDOUT,pad.01,gpio-495 (PAD.01
I2S1_FS ->I2S1_FS,pad03,gpio-497 (PAD.03
I2S1_DIN ->I2S1_SDIN,pad02,gpio-496 (PAD.02
cat /sys/kernel/debug/pinctrl/2430000.pinmux/pins
pin 152 (SOC_GPIO59_PAC6) 144:tegra234-gpio 2430000.pinmux
pin 153 (SOC_GPIO60_PAC7) 145:tegra234-gpio 2430000.pinmux
pin 154 (SOC_GPIO45_PAD0) 146:tegra234-gpio 2430000.pinmux
pin 155 (SOC_GPIO46_PAD1) 147:tegra234-gpio 2430000.pinmux
pin 156 (SOC_GPIO47_PAD2) 148:tegra234-gpio 2430000.pinmux
pin 157 (SOC_GPIO48_PAD3) 149:tegra234-gpio 2430000.pinmux
Can this information indicate that the pins corresponding to i2s have not been reused for i2s functionality, but instead are functioning as ordinary gpio (general-purpose input/output) pins?


