Skip to content

Instantly share code, notes, and snippets.

@djbr1
Last active April 30, 2022 14:37
Show Gist options
  • Save djbr1/60b99feb881ec9f773bb1d40d8464393 to your computer and use it in GitHub Desktop.
Save djbr1/60b99feb881ec9f773bb1d40d8464393 to your computer and use it in GitHub Desktop.
x6100 usb-audio and usb devices
WSJT Radio control goes over /dev/ttyACM1
WSJT Audio configuration with loopback USB cable plugged:
Input plughw:CARD=Device,DEV=0
Output plughw:CARD=Device,DEV=0
TLDR;
### who is using sound ?
root@x6100:~# lsof /dev/snd/*
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
gst-launc 1070 root mem CHR 116,24 1647 /dev/snd/pcmC0D0c
gst-launc 1070 root 8r CHR 116,33 0t0 1643 /dev/snd/timer
gst-launc 1070 root 9u CHR 116,24 0t0 1647 /dev/snd/pcmC0D0c
gst-launc 1071 root mem CHR 116,24 1647 /dev/snd/pcmC0D0c
gst-launc 1071 root 10r CHR 116,33 0t0 1643 /dev/snd/timer
gst-launc 1071 root 11u CHR 116,24 0t0 1647 /dev/snd/pcmC0D0c
x6100_ui_ 1321 root mem CHR 116,24 1647 /dev/snd/pcmC0D0c
x6100_ui_ 1321 root mem CHR 116,16 1646 /dev/snd/pcmC0D0p
x6100_ui_ 1321 root 16r CHR 116,33 0t0 1643 /dev/snd/timer
x6100_ui_ 1321 root 17u CHR 116,16 0t0 1646 /dev/snd/pcmC0D0p
x6100_ui_ 1321 root 18r CHR 116,33 0t0 1643 /dev/snd/timer
x6100_ui_ 1321 root 19u CHR 116,24 0t0 1647 /dev/snd/pcmC0D0c
root@x6100:~#
root@x6100:~# fuser -v /dev/snd/*
USER PID ACCESS COMMAND
/dev/snd/pcmC0D0c: root 1070 F...m gst-launch-1.0
root 1071 F...m gst-launch-1.0
root 1321 F...m x6100_ui_v100
/dev/snd/pcmC0D0p: root 1321 F...m x6100_ui_v100
/dev/snd/timer: root 1070 f.... gst-launch-1.0
root 1071 f.... gst-launch-1.0
root 1321 f.... x6100_ui_v100
root@x6100:~#
# If your Linux installation is using PulseAudio, then it is possible to List all processes which are connected to your pulse audio
pactl list clients
# catch the process making sound then run this command:
watch -n0.5 'pacmd list-sink-inputs | tee -a sound-inputs.log'
## test microphone
# arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC662 rev3 Analog [ALC662 rev3 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 2: ALC662 rev3 Alt Analog [ALC662 rev3 Alt Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: Q9000 [QuickCam Pro 9000], device 0: USB Audio [USB Audio] ###### catch from this device
Subdevices: 1/1
Subdevice #0: subdevice #0
arecord -f S16_LE -d 10 -r 16000 --device="hw:1,0" /tmp/test-mic.wav
### inspecting attached USB devices on X6100 booted with Armbian ###
# lsusb with "loopback" cable plugged
root@x6100:~# lsusb |egrep -v "Real|root"
Bus 001 Device 007: ID 1a86:55d2 QinHeng Electronics USB Dual_Serial
Bus 001 Device 006: ID 0d8c:0012 C-Media Electronics, Inc. USB Audio Device
Bus 001 Device 005: ID 05e3:0608 Genesys Logic, Inc. Hub
root@x6100:~#
root@x6100:~# ./identify_usb.sh
/dev/ttyACM1 - 1a86_USB_Dual_Serial_529B010193
/dev/ttyACM0 - 1a86_USB_Dual_Serial_529B010193
/dev/snd/controlC1 - C-Media_Electronics_Inc._USB_Audio_Device
/dev/input/event5 - C-Media_Electronics_Inc._USB_Audio_Device
root@x6100:~#
# "pactl list" shows no difference plugged/unplugged cable
# aplay -L output shows difference with and without USBC cable plugged as loop allowing us to identify what are USB serial and audio devices coming from x6100 "base"
root@x6100:~# diff unplugged.txt plugged.txt
41a42,80
> hw:CARD=Device,DEV=0
> USB Audio Device, USB Audio
> Direct hardware device without any conversions
> plughw:CARD=Device,DEV=0
> USB Audio Device, USB Audio
> Hardware device with all software conversions
> sysdefault:CARD=Device
> USB Audio Device, USB Audio
> Default Audio Device
> front:CARD=Device,DEV=0
> USB Audio Device, USB Audio
> Front output / input
> surround21:CARD=Device,DEV=0
> USB Audio Device, USB Audio
> 2.1 Surround output to Front and Subwoofer speakers
> surround40:CARD=Device,DEV=0
> USB Audio Device, USB Audio
> 4.0 Surround output to Front and Rear speakers
> surround41:CARD=Device,DEV=0
> USB Audio Device, USB Audio
> 4.1 Surround output to Front, Rear and Subwoofer speakers
> surround50:CARD=Device,DEV=0
> USB Audio Device, USB Audio
> 5.0 Surround output to Front, Center and Rear speakers
> surround51:CARD=Device,DEV=0
> USB Audio Device, USB Audio
> 5.1 Surround output to Front, Center, Rear and Subwoofer speakers
> surround71:CARD=Device,DEV=0
> USB Audio Device, USB Audio
> 7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
> iec958:CARD=Device,DEV=0
> USB Audio Device, USB Audio
> IEC958 (S/PDIF) Digital Audio Output
> dmix:CARD=Device,DEV=0
> USB Audio Device, USB Audio
> Direct sample mixing device
> usbstream:CARD=Device
> USB Audio Device
> USB Stream Output
root@x6100:~#
without cable:
root@x6100:~# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: sun8ia33audio [sun8i-a33-audio], device 0: 1c22c00.dai-sun8i sun8i-0 [1c22c00.dai-sun8i sun8i-0]
Subdevices: 0/1
Subdevice #0: subdevice #0
root@x6100:~# arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: sun8ia33audio [sun8i-a33-audio], device 0: 1c22c00.dai-sun8i sun8i-0 [1c22c00.dai-sun8i sun8i-0]
Subdevices: 0/1
Subdevice #0: subdevice #0
root@x6100:~#
with cable:
root@x6100:~# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: sun8ia33audio [sun8i-a33-audio], device 0: 1c22c00.dai-sun8i sun8i-0 [1c22c00.dai-sun8i sun8i-0]
Subdevices: 0/1
Subdevice #0: subdevice #0
card 1: Device [USB Audio Device], device 0: USB Audio [USB Audio] ## plugged cable ###
Subdevices: 1/1
Subdevice #0: subdevice #0
root@x6100:~# arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: sun8ia33audio [sun8i-a33-audio], device 0: 1c22c00.dai-sun8i sun8i-0 [1c22c00.dai-sun8i sun8i-0]
Subdevices: 0/1
Subdevice #0: subdevice #0
card 1: Device [USB Audio Device], device 0: USB Audio [USB Audio] ## plugged cable ###
Subdevices: 1/1
Subdevice #0: subdevice #0
root@x6100:~#
#!/bin/bash
for sysdevpath in $(find /sys/bus/usb/devices/usb*/ -name dev); do
(
syspath="${sysdevpath%/dev}"
devname="$(udevadm info -q name -p $syspath)"
[[ "$devname" == "bus/"* ]] && exit
eval "$(udevadm info -q property --export -p $syspath)"
[[ -z "$ID_SERIAL" ]] && exit
echo "/dev/$devname - $ID_SERIAL"
)
done
root@x6100:~# usb-devices
T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 1
D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=1d6b ProdID=0002 Rev=05.08
S: Manufacturer=Linux 5.8.9 ehci_hcd
S: Product=EHCI Host Controller
S: SerialNumber=1c1a000.usb
C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 4 Ivl=256ms
T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=480 MxCh= 4
D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=05e3 ProdID=0608 Rev=85.36
S: Product=USB2.0 Hub
C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=100mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 1 Ivl=256ms
T: Bus=01 Lev=02 Prnt=02 Port=01 Cnt=01 Dev#= 3 Spd=12 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0d8c ProdID=0012 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= 0 #EPs= 0 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio
I: If#= 2 Alt= 0 #EPs= 0 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
E: Ad=87(I) Atr=03(Int.) MxPS= 4 Ivl=2ms
T: Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 1
D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=1d6b ProdID=0001 Rev=05.08
S: Manufacturer=Linux 5.8.9 ohci_hcd
S: Product=Generic Platform OHCI controller
S: SerialNumber=1c1a400.usb
C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=255ms
T: Bus=03 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 1
D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=1d6b ProdID=0002 Rev=05.08
S: Manufacturer=Linux 5.8.9 musb-hcd
S: Product=MUSB HDRC host driver
S: SerialNumber=musb-hdrc.2.auto
C: #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 4 Ivl=256ms
T: Bus=03 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=480 MxCh= 0
D: Ver= 2.10 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=0bda ProdID=b720 Rev=02.00
S: Manufacturer=Realtek
S: Product=802.11n WLAN Adapter
S: SerialNumber=00e04c000001
C: #Ifs= 3 Cfg#= 1 Atr=e0 MxPwr=500mA
I: If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=81(I) Atr=03(Int.) MxPS= 16 Ivl=1ms
E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I: If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
E: Ad=03(O) Atr=01(Isoc) MxPS= 0 Ivl=1ms
E: Ad=83(I) Atr=01(Isoc) MxPS= 0 Ivl=1ms
I: If#= 2 Alt= 0 #EPs= 6 Cls=ff(vend.) Sub=ff Prot=ff Driver=rtl8xxxu
E: Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=08(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=09(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=87(I) Atr=03(Int.) MxPS= 64 Ivl=500us
root@x6100:~#
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment