Jetson Nano and FE-PI Audio Z V1.1 audio card

Hello,

I need some assistance on how to get a FE-PI AUDIO Z V1.1 (the one with the red PCB) working with my Jetson Nano. I followed the instructions described here https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%2520Linux%2520Driver%2520Package%2520Development%2520Guide%2Fhw_setup_jetson_io.html%23 and I configured the device tree using fe-pi-audio-z-v2.dtb.

Unfortunatelly the above approach will not enable the audio card.

Thanks for any help!

Hi cwasilei,

Please check the Audio Troubleshooting doc to see if can help:
https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%2520Linux%2520Driver%2520Package%2520Development%2520Guide%2Fasoc_driver.17.2.html%23wwpID0E0VD0HA

Thanks for your quick response kayccc!

There are no trace messages since

cwasilei@nano:~$ dmesg | grep "ASoC"

returns nothing.

Maybe you have any other suggestions? I tried the following:

cwasilei@nano:~$ dmesg | grep "audio"

[    0.965774] iommu: Adding device aconnect@702c0000:adsp_audio to group 34
[    4.884888] usbcore: registered new interface driver snd-usb-audio
cwasilei@nano:~$ dmesg | grep "sound"

[    0.437299] iommu: Adding device sound to group 6
[    0.437369] platform sound: domain=ffffffc0f9b6bb58 allocates as[0]=ffffffc0f94281e0
[    4.890295] input: tegra-hda HDMI/DP,pcm=3 as /devices/70030000.hda/sound/card0/input0
[    4.952461] tegra-asoc: sound: ADMAIF1 <-> ADMAIF1 mapping ok
[    4.952588] tegra-asoc: sound: ADMAIF2 <-> ADMAIF2 mapping ok
[    4.952708] tegra-asoc: sound: ADMAIF3 <-> ADMAIF3 mapping ok
[    4.952828] tegra-asoc: sound: ADMAIF4 <-> ADMAIF4 mapping ok
[    4.952948] tegra-asoc: sound: ADMAIF5 <-> ADMAIF5 mapping ok
[    4.953068] tegra-asoc: sound: ADMAIF6 <-> ADMAIF6 mapping ok
[    4.953189] tegra-asoc: sound: ADMAIF7 <-> ADMAIF7 mapping ok
[    4.953324] tegra-asoc: sound: ADMAIF8 <-> ADMAIF8 mapping ok
[    4.953462] tegra-asoc: sound: ADMAIF9 <-> ADMAIF9 mapping ok
[    4.953580] tegra-asoc: sound: ADMAIF10 <-> ADMAIF10 mapping ok
cwasilei@nano:~$ aplay -l

**** List of PLAYBACK Hardware Devices ****
card 0: tegrahda [tegra-hda], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: tegrasndt210ref [tegra-snd-t210ref-mobile-rt565x], device 0: ADMAIF1 CIF ADMAIF1-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: tegrasndt210ref [tegra-snd-t210ref-mobile-rt565x], device 1: ADMAIF2 CIF ADMAIF2-1 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: tegrasndt210ref [tegra-snd-t210ref-mobile-rt565x], device 2: ADMAIF3 CIF ADMAIF3-2 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: tegrasndt210ref [tegra-snd-t210ref-mobile-rt565x], device 3: ADMAIF4 CIF ADMAIF4-3 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: tegrasndt210ref [tegra-snd-t210ref-mobile-rt565x], device 4: ADMAIF5 CIF ADMAIF5-4 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: tegrasndt210ref [tegra-snd-t210ref-mobile-rt565x], device 5: ADMAIF6 CIF ADMAIF6-5 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: tegrasndt210ref [tegra-snd-t210ref-mobile-rt565x], device 6: ADMAIF7 CIF ADMAIF7-6 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: tegrasndt210ref [tegra-snd-t210ref-mobile-rt565x], device 7: ADMAIF8 CIF ADMAIF8-7 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: tegrasndt210ref [tegra-snd-t210ref-mobile-rt565x], device 8: ADMAIF9 CIF ADMAIF9-8 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: tegrasndt210ref [tegra-snd-t210ref-mobile-rt565x], device 9: ADMAIF10 CIF ADMAIF10-9 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
cwasilei@nano:~$ sudo vi /boot/extlinux/extlinux.conf

  1 TIMEOUT 30
  2 DEFAULT FE-PI-Audio-Z-V2
  3
  4 MENU TITLE L4T boot options
  5
  6 LABEL primary
  7       MENU LABEL primary kernel
  8       LINUX /boot/Image
  9       INITRD /boot/initrd
 10       APPEND ${cbootargs} quiet
 11
 12 LABEL FE-PI-Audio-Z-V2
 13   MENU LABEL FE-PI Audio Z V2
 14   LINUX /boot/Image
 15   FDT /boot/tegra210-p3448-0000-p3449-0000-b00-fe-pi-audio-z-v2.dtb
 16   INITRD /boot/initrd
 17   APPEND ${cbootargs}

Hello!

Yes the FE-PI Audio Z V1 and V2 appear to be compatibile and so what you are trying should work.

On boot you should see the sgtl5000 registered …

$ dmesg | grep sgtl5000

And if configured correctly then the dai-link name for the should be the fe-pi name …

$ cat /proc/device-tree/sound/nvidia,dai-link-1/link-name

How are you testing audio playback? Currently, we only support the headphone jack and executing the following should be a tone …

$ alsactl init tegrasndt210ref
$ speaker-test -D hw:tegrasndt210ref,0 -c 2 -r 48000 -F S16_LE -t sine -f 500

Regards,
Jon

Hi Jon and thanks for your reply!

It turns out sgtl5000 doesnt get registered at boot time

cwasilei@nano:~$ dmesg | grep sgtl50000
cwasilei@nano:~$

I think FE-PI Audio is configured ok since

cwasilei@nano:~$ cat /proc/device-tree/sound/nvidia,dai-link-1/link-name
fe-pi-audio-z-v2

These are the steps I followed:

sudo /opt/nvidia/jetson-io/jetson-io.py

“configure for compatible hardware” >> “FE-PI Audio Z V2” >> “exit”

cwasilei@nano:~$ cat /sys/firmware/devicetree/base/compatible
nvidia,p3449-0000-b00+p3448-0000-b00nvidia,jetson-nanonvidia,tegra210
cwasilei@nano:~$ ls -l /boot/tegra210-*
-rw-r--r-- 1 root root   1010 Dez 10 07:59 /boot/tegra210-jetson-tx1-p2597-2180-a01-devkit-adafruit-sph0645lm4h.dtbo
-rw-r--r-- 1 root root 487148 Dez 10 07:59 /boot/tegra210-jetson-tx1-p2597-2180-a01-devkit.dtb
-rw-r--r-- 1 root root   2716 Dez 10 07:59 /boot/tegra210-jetson-tx1-p2597-2180-a01-devkit-fe-pi-audio-z-v2.dtbo
-rw-r--r-- 1 root root   3149 Dez 10 07:59 /boot/tegra210-jetson-tx1-p2597-2180-a01-devkit-hdr40.dtbo
-rw-r--r-- 1 root root 487677 Dez 10 07:59 /boot/tegra210-jetson-tx1-p2597-2180-a02-devkit-24x7.dtb
-rw-r--r-- 1 root root 214243 Dez 10 07:59 /boot/tegra210-p3448-0000-p3449-0000-a00.dtb
-rw-r--r-- 1 root root   1018 Dez 10 07:59 /boot/tegra210-p3448-0000-p3449-0000-a01-adafruit-sph0645lm4h.dtbo
-rw-r--r-- 1 root root 214203 Dez 10 07:59 /boot/tegra210-p3448-0000-p3449-0000-a01.dtb
-rw-r--r-- 1 root root   2724 Dez 10 07:59 /boot/tegra210-p3448-0000-p3449-0000-a01-fe-pi-audio-z-v2.dtbo
-rw-r--r-- 1 root root   3313 Dez 10 07:59 /boot/tegra210-p3448-0000-p3449-0000-a01-hdr40.dtbo
-rw-r--r-- 1 root root   1054 Dez 10 07:59 /boot/tegra210-p3448-0000-p3449-0000-a02-adafruit-sph0645lm4h.dtbo
-rw-r--r-- 1 root root 214705 Dez 10 07:59 /boot/tegra210-p3448-0000-p3449-0000-a02.dtb
-rw-r--r-- 1 root root   2760 Dez 10 07:59 /boot/tegra210-p3448-0000-p3449-0000-a02-fe-pi-audio-z-v2.dtbo
-rw-r--r-- 1 root root   3349 Dez 10 07:59 /boot/tegra210-p3448-0000-p3449-0000-a02-hdr40.dtbo
-rw-r--r-- 1 root root 214705 Dez 16 20:21 /boot/tegra210-p3448-0000-p3449-0000-b00.dtb
-rw-r--r-- 1 root root 215839 Jan  1 13:50 /boot/tegra210-p3448-0000-p3449-0000-b00-fe-pi-audio-z-v2.dtb
-rw-r--r-- 1 root root 214687 Dez 10 07:59 /boot/tegra210-p3448-0002-p3449-0000-a02.dtb
-rw-r--r-- 1 root root 214683 Dez 10 07:59 /boot/tegra210-p3448-0002-p3449-0000-b00.dtb

My Jetson Nano is a b00 platform device and I only see the *.dtb file (tegra210-p3448-0000-p3449-0000-b00-fe-pi-audio-z-v2.dtb) but no corresponding *.dtbo file. Is this an issue?

I didn’t test playback yet since aplay -l doesnt list the FE-PI audiocard and I cant select it.

alsamixer

shows a device called tegra-snd-t210-ref-mobile-rt565x. Is this the FE-PI Z Audio?

Thanks again for your efforts :)

Hello!

You have one too many 0s in the above should be ‘sgtl5000’. Can you attach the entire output from dmesg?

Yes that is expected. You will not see the FE-PI board under ‘aplay -l’ or ‘amixer’.

You can also check the following to see if the codec is listed …

$ sudo cat /sys/kernel/debug/asoc/codecs

Regards,
Jon

Sorry for the typo. You are right. Now I get:

cwasilei@nano:~$ dmesg | grep sgtl5000
[    5.388696] sgtl5000 1-000a: sgtl5000 revision 0x11
[    5.403938] sgtl5000 1-000a: Using internal LDO instead of VDDD: check ER1

And the codecs are:

cwasilei@nano:~$ sudo cat /sys/kernel/debug/asoc/codecs
[sudo] password for cwasilei:
tegra210-ope.1
tegra210-ope.0
tegra210-mvc.1
tegra210-mvc.0
tegra210-afc.5
tegra210-afc.4
tegra210-afc.3
tegra210-afc.2
tegra210-afc.1
tegra210-afc.0
tegra210-sfc.3
tegra210-sfc.2
tegra210-sfc.1
tegra210-sfc.0
tegra210-mixer
tegra210-adx.1
tegra210-adx.0
tegra210-amx.1
tegra210-amx.0
tegra210-dmic.1
tegra210-dmic.0
tegra210-i2s.3
tegra210-i2s.2
tegra210-admaif
tegra210-axbar
7.spdif-dit.7
6.spdif-dit.6
5.spdif-dit.5
4.spdif-dit.4
3.spdif-dit.3
2.spdif-dit.2
1.spdif-dit.1
0.spdif-dit.0
sgtl5000.1-000a
snd-soc-dummy

Thanks for your support. I am now getting the test sound! :)

cwasilei@nano:~$ alsactl init tegrasndt210ref
Reset Tegra APE sound-card controls
cwasilei@nano:~$ speaker-test -D hw:tegrasndt210ref,0 -c 2 -r 48000 -F S16_LE -t sine -f 500

speaker-test 1.1.3

Playback device is hw:tegrasndt210ref,0
Stream parameters are 48000Hz, S16_LE, 2 channels
Sine wave rate is 500,0000Hz
Rate set to 48000Hz (requested 48000Hz)
Buffer size range from 32 to 8192
Period size range from 32 to 4096
Using max buffer size 8192
Periods = 4
was set period_size = 2048
was set buffer_size = 8192
 0 - Front Left
 1 - Front Right
Time per period = 5,810646
 0 - Front Left
 1 - Front Right
Time per period = 5,976032
 0 - Front Left
 1 - Front Right
Time per period = 5,972907
 0 - Front Left
 1 - Front Right
Time per period = 5,974038
 0 - Front Left
 1 - Front Right
Time per period = 5,974319
 0 - Front Left
 1 - Front Right

dmesg.txt (51.9 KB)

I’ve got a Fe-Pi Audio Z v2.2. It works fine on my RPi 4 but I’ve not been able to get it to work under JetPack 4.4 on my nano, which is what it was bought for.

I have run:

sudo /opt/nvidia/jetson-io/jetson-io.py

and it created a new dtb but even when I manually flashed the dtb it created, I still haven’t been able to get any sound out of my Audio Z.

$ dmesg | grep sgtl5000

Doesn’t return anything. aplay -l does list several tegrasndt210 devices and I’ve also tried running:

alsactl init tegrasndt210

but that hasn’t helped.

The speaker test command runs but I don’t hear any sound.

@cwasilei

What version of JetPack are you running? Did you have to rebuild the kernel or do anything else to get yours to work?

I am presuming support should already be in the kernel. jetson-io gives me the impression its just a case of switching your dtb to one with the correct pin config.

The audio Z works as a standard ALSA soundcard under Raspbian so there’s no reason why that couldn’t be the case for the Nano too, with some work.

NVIDIA:

Do you plan to enable SPI by default in future Jetpack releases? Switching dtb files is simple on the RPi but its quite an involved process on the Nano.

If we can’t use the Audio Z as a regular ALSA device (like on the Rpi) yet, how do we adjust the volume?