No sound through pmodI2S

Posted this in a previous thread though was marked as answered so moving this to its own post.

I am for the most part very new to I2S though I am trying to get sound to play from the tx2 through the PmodI2S with no success.

The I2S-DAC seems to be wired correctly and I am getting waveforms through it when audio is played yet no sound is coming through when plugged into anything.

I have tried:

amixer sset -c 1 'I2S1 Mux' 'ADMAIF1'

and

amixer -c tegrasndt186ref sset 'I2S1 Mux' 'MVC1'
amixer -c tegrasndt186ref sset 'MVC1 Mux' 'ADMAIF1'
amixer -c tegrasndt186ref cset name="MVC1 Vol" 50%

With neither working.

I have attached a trace which to me looks OK ?

# tracer: nop
#
# entries-in-buffer/entries-written: 30/30   #P:6
#
#                              _-----=> irqs-off
#                             / _----=> need-resched
#                            | / _---=> hardirq/softirq
#                            || / _--=> preempt-depth
#                            ||| /     delay
#           TASK-PID   CPU#  ||||    TIMESTAMP  FUNCTION
#              | |       |   ||||       |         |
           aplay-9993  [005] ...1 353361.543076: snd_soc_dapm_widget_power: widget=Playback 1 val=1
           aplay-9993  [005] ...1 353361.543084: snd_soc_dapm_widget_power: widget=ADMAIF1 Receive val=1
           aplay-9993  [005] ...1 353361.543087: snd_soc_dapm_widget_power: widget=ADMAIF1 RX val=1
           aplay-9993  [005] ...1 353361.543121: snd_soc_dapm_widget_power: widget=I2S1 Mux val=1
           aplay-9993  [005] ...1 353361.543125: snd_soc_dapm_widget_power: widget=I2S1 TX val=1
           aplay-9993  [005] ...1 353361.543127: snd_soc_dapm_widget_power: widget=I2S1 Transmit val=1
           aplay-9993  [005] ...1 353361.543129: snd_soc_dapm_widget_power: widget=I2S1 Transmit-I2S1 CIF Receive val=1
           aplay-9993  [005] ...1 353361.543131: snd_soc_dapm_widget_power: widget=I2S1 CIF Receive val=1
           aplay-9993  [005] ...1 353361.543133: snd_soc_dapm_widget_power: widget=I2S1 CIF RX val=1
           aplay-9993  [005] ...1 353361.543135: snd_soc_dapm_widget_power: widget=I2S1 DAP TX val=1
           aplay-9993  [005] ...1 353361.543137: snd_soc_dapm_widget_power: widget=I2S1 DAP Transmit val=1
           aplay-9993  [005] ...1 353361.543139: snd_soc_dapm_widget_power: widget=I2S1 DAP Transmit-x Playback val=1
           aplay-9993  [005] ...1 353361.543141: snd_soc_dapm_widget_power: widget=x Playback val=1
           aplay-9993  [005] ...1 353361.543143: snd_soc_dapm_widget_power: widget=x OUT val=1
           aplay-9993  [005] ...1 353361.543145: snd_soc_dapm_widget_power: widget=x Headphone val=1
           aplay-9993  [004] ...1 353438.124645: snd_soc_dapm_widget_power: widget=Playback 1 val=0
           aplay-9993  [004] ...1 353438.124658: snd_soc_dapm_widget_power: widget=ADMAIF1 Receive val=0
           aplay-9993  [004] ...1 353438.124663: snd_soc_dapm_widget_power: widget=ADMAIF1 RX val=0
           aplay-9993  [004] ...1 353438.124684: snd_soc_dapm_widget_power: widget=I2S1 Mux val=0
           aplay-9993  [004] ...1 353438.124690: snd_soc_dapm_widget_power: widget=I2S1 TX val=0
           aplay-9993  [004] ...1 353438.124694: snd_soc_dapm_widget_power: widget=I2S1 Transmit val=0
           aplay-9993  [004] ...1 353438.124698: snd_soc_dapm_widget_power: widget=I2S1 Transmit-I2S1 CIF Receive val=0
           aplay-9993  [004] ...1 353438.124702: snd_soc_dapm_widget_power: widget=I2S1 CIF Receive val=0
           aplay-9993  [004] ...1 353438.124705: snd_soc_dapm_widget_power: widget=I2S1 CIF RX val=0
           aplay-9993  [004] ...1 353438.124708: snd_soc_dapm_widget_power: widget=I2S1 DAP TX val=0
           aplay-9993  [004] ...1 353438.124711: snd_soc_dapm_widget_power: widget=I2S1 DAP Transmit val=0
           aplay-9993  [004] ...1 353438.124715: snd_soc_dapm_widget_power: widget=I2S1 DAP Transmit-x Playback val=0
           aplay-9993  [004] ...1 353438.124718: snd_soc_dapm_widget_power: widget=x Playback val=0
           aplay-9993  [004] ...1 353438.124722: snd_soc_dapm_widget_power: widget=x OUT val=0
           aplay-9993  [004] ...1 353438.124725: snd_soc_dapm_widget_power: widget=x Headphone val=0

I have read through a few similar threads and tried following the steps in the l4t documentation.

I have seen comment on the setup of tegra_pinctrl_reg though not entirely sure what I’m looking at there.

Bank: 0 Reg: 0x02431020 Val: 0x00000400 -> aud_mclk_pj4
Bank: 0 Reg: 0x02431028 Val: 0x00000440 -> dap1_fs_pj3
Bank: 0 Reg: 0x02431030 Val: 0x00000454 -> dap1_din_pj2
Bank: 0 Reg: 0x02431038 Val: 0x00000440 -> dap1_dout_pj1
Bank: 0 Reg: 0x02431040 Val: 0x00000440 -> dap1_sclk_pj0
Bank: 0 Reg: 0x02431024 Val: 0x00708000 -> drive_aud_mclk
Bank: 0 Reg: 0x0243102c Val: 0x01616000 -> drive_dap1_fs
Bank: 0 Reg: 0x02431034 Val: 0x01616000 -> drive_dap1_din
Bank: 0 Reg: 0x0243103c Val: 0x01616000 -> drive_dap1_dout
Bank: 0 Reg: 0x02431044 Val: 0x01616000 -> drive_dap1_sclk

It is also worth noting I am using an auvidea J120 carrier card for the TX2 and not the dev board.

Any help with this would be greatly appreciated.

Many thanks,
Craig

Hi Craig,

Are you saying the you see the I2S signals (bit-clock, frame-sync, and data output) from Tegra active when playing the audio file? If so then that would suggest playback from a Tegra perspective is working fine, but for some reason the audio codec is not outputting the audio. You may wish to check the frequency of the bit-clock and frame-sync look correct. If they do then check the codec is powered correctly as it would imply the problem is on the codec side.

Regards,
Jon

Hi Jon,

Thanks for getting back to me. Yes from what I can tell there are definite signals being passed into the card when using aplay and targeting tegrasndt186ref,0 on the bclk, lrclk and sdin connectors. I am currently unsure exactly what frequency these are running at as I’ve lost access to my oscilloscope for a couple of weeks :(. I chose the PmodI2S as it was recommended on these forums as possibly working as standard, could it be a potential fault with the card or does this require kernel changes for the codec ?

Many thanks,
Craig

Hi Craig,

No kernel changes should be needed and so should be straight forward to connect and use.

Did you see the following comment from the other user? It appeared to be a problem with the pinout on the module itself …

https://devtalk.nvidia.com/default/topic/1032785/jetson-tx2/no-sound-using-i2s-to-cs4344-codec/post/5255680/#5255680

If the signals are active, then as long as the frequencies of the bit clock and frame-sync are supported by the module, I don’t see why this should not work. I have not used one of these myself but this is just based upon reviewing the module documentation and the other users experience.

Regards
Jon