Adding Sound on the NVIDIA Nano with a Sound USB Dongle
Unlike the Raspberry Pi, the NVIDIA Jetson Nano does not come with a builtin sound device. To get sound working you have to purchase an additional USB sound dongle for $7.99. Getting this working with the new NVIDIA Jetson Nano LXDE desktop is a non-trivial process.
TL;DR; Check the device is present with lssub. Use the pmac list-cards command to find the driver name. Then use the Sound & Video ->PulseAudio Volume Control to set the correct Output for sound. Plug you speaker into the Green jack.
Getting sound working on the NVIDIA Jetson Nano is required for you to do fun projects like sound monitoring, voice recognition, speech generation or building your own smart speaker. There is not a lot of support for these projects right now, but we expect to see them being developed soon. And of course, you can always just use it to listen to music and watch movies on the Nano! :-)
I purchased the Sabrent USB External Stereo Sound Adapter from Amazon for about $8 USD.
Note that the Stereo Output Jack is the Green one.
https://www.amazon.com/gp/product/B00IRVQ0F8/ref=ppx_yo_dt_b_asin_title_o02_s00?ie=UTF8&psc=1
After you plug it in you can run the lsusb
command:
lsusb$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 007: ID 0d8c:0014 C-Media Electronics, Inc.
Bus 001 Device 003: ID 04f2:0939 Chicony Electronics Co., Ltd
Bus 001 Device 002: ID 1a40:0801 Terminus Technology Inc.
Bus 001 Device 005: ID 04f2:0833 Chicony Electronics Co., Ltd
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Note that the C-Media Electronics, Inc in on bus 1 and is device 7. If you don’t see this line the operating system is not detecting the USB device. Each time you plug and unplug the card the device number will increment.
So this tells you the manufacturer, which is pretty much useless when you want to configure the sound output. The Ubuntu OS has a registry of devices with this USB ID number ID 0d8c:0014. If it sees a device with that number it will try to find a device driver that matches this USB device.
Here is the pmac list-cards function. Note that you will see a line:
device.product.name = "Audio Adapter (Unitek Y-247A)"
Here is the full output.
$ pmac list-cardsindex: 1
name: <alsa_card.usb-C-Media_Electronics_Inc._USB_Audio_Device-00>
driver: <module-alsa-card.c>
owner module: 8
properties:
alsa.card = "2"
alsa.card_name = "USB Audio Device"
alsa.long_card_name = "C-Media Electronics Inc. USB Audio Device at usb-70090000.xusb-3.2, full speed"
alsa.driver_name = "snd_usb_audio"
device.bus_path = "platform-70090000.xusb-usb-0:3.2:1.0"
sysfs.path = "/devices/70090000.xusb/usb1/1-3/1-3.2/1-3.2:1.0/sound/card2"
udev.id = "usb-C-Media_Electronics_Inc._USB_Audio_Device-00"
device.bus = "usb"
device.vendor.id = "0d8c"
device.vendor.name = "C-Media Electronics, Inc."
device.product.id = "0014"
device.product.name = "Audio Adapter (Unitek Y-247A)"
device.serial = "C-Media_Electronics_Inc._USB_Audio_Device"
device.string = "2"
device.description = "Audio Adapter (Unitek Y-247A)"
module-udev-detect.discovered = "1"
device.icon_name = "audio-card-usb"
profiles:
input:analog-mono: Analog Mono Input (priority 2, available: unknown)
output:analog-stereo: Analog Stereo Output (priority 6000, available: unknown)
output:analog-stereo+input:analog-mono: Analog Stereo Output + Analog Mono Input (priority 6002, available: unknown)
output:iec958-stereo: Digital Stereo (IEC958) Output (priority 5500, available: unknown)
output:iec958-stereo+input:analog-mono: Digital Stereo (IEC958) Output + Analog Mono Input (priority 5502, available: unknown)
off: Off (priority 0, available: unknown)
active profile: <output:analog-stereo+input:analog-mono>
sinks:
alsa_output.usb-C-Media_Electronics_Inc._USB_Audio_Device-00.analog-stereo/#1: Audio Adapter (Unitek Y-247A) Analog Stereo
sources:
alsa_output.usb-C-Media_Electronics_Inc._USB_Audio_Device-00.analog-stereo.monitor/#1: Monitor of Audio Adapter (Unitek Y-247A) Analog Stereo
alsa_input.usb-C-Media_Electronics_Inc._USB_Audio_Device-00.analog-mono/#2: Audio Adapter (Unitek Y-247A) Analog Mono
ports:
analog-input-mic: Microphone (priority 8700, latency offset 0 usec, available: unknown)
properties:
device.icon_name = "audio-input-microphone"
analog-output-speaker: Speakers (priority 10000, latency offset 0 usec, available: unknown)
properties:
device.icon_name = "audio-speakers"
iec958-stereo-output: Digital Output (S/PDIF) (priority 0, latency offset 0 usec, available: unknown)
properties:
Sending Sound Through HDMI
If your monitors have built-in speakers, you might not need this connector. You can also get an HDMI sound Extractor for about $23, but that is almost tipple the price if the $8 dongle.
Other possibly useful debugging commands
Here is the command to list the cards:
$ cat /proc/asound/cards
0 [tegrahda ]: tegra-hda - tegra-hda
tegra-hda at 0x70038000 irq 81
1 [tegrasndt210ref]: tegra-snd-t210r - tegra-snd-t210ref-mobile-rt565x
tegra-snd-t210ref-mobile-rt565x
2 [Device ]: USB-Audio - USB Audio Device
C-Media Electronics Inc. USB Audio Device at usb-70090000.xusb-3.2, full speed
This tells you that it is card 2 and is a USB-Audio device at usb-70090000.xusb-3.2
Here is the usb-devices command:
$ usb-devicesT: Bus=01 Lev=02 Prnt=03 Port=01 Cnt=02 Dev#= 5 Spd=12 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0d8c ProdID=0014 Rev=01.00
S: Manufacturer=C-Media Electronics Inc.
S: Product=USB Audio Device
C: #Ifs= 4 Cfg#= 1 Atr=80 MxPwr=100mA
I: If#= 0 Alt= 0 #EPs= 0 Cls=01(audio) Sub=01 Prot=00 Driver=snd-usb-audio
I: If#= 1 Alt= 1 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
I: If#= 2 Alt= 1 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
I: If#= 3 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=00 Prot=00 Driver=usbhid
This shows you the USD device is associated with Manufacturer=C-Media Electronics Inc. but does not show you the name of the driver.
Here is how you can look directly and the UNIX process asound device files.
$ cd /proc/asound
$ ls
card2
ls card*
card0:
codec#3 eld#3.0 id pcm3pcard1:
id pcm0p pcm1p pcm2p pcm3p pcm4p pcm5p pcm6p pcm7p pcm8p pcm9p
pcm0c pcm1c pcm2c pcm3c pcm4c pcm5c pcm6c pcm7c pcm8c pcm9ccard2:
id pcm0c pcm0p stream0 usbbus usbid usbmixer
You can also check the aplay -l command to list the playback hardware devices:
$ 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
card 2: Device [USB Audio Device], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
Please let me know if you have any questions.