Unable to play audio from in the Docker

I successfully built a custom docker which included me creating a custom package where I needed to install the dependencies for the application that I am writing. After much trials this works great and everything is good.
My problem is that I am mounting my code base into the docker to run and develop my application. It uses pyaudio to record and playback audio from the attached Anker PowerConf S3 mic/speaker. This all works perfectly on the host but doesnt in the docker.
I can record audio and do a speaker-test with no problems, just playing back the audio doesnt work. I get
# arecord -f S16_LE -c 1 -d 10 -r 48000 --device="hw:2,0" /tmp/test-mic.wav
Recording WAVE '/tmp/test-mic.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono

# aplay /tmp/test-mic.wav
aplay: main:831: audio open error: No such file or directory

# ll /tmp/test-mic.wav
-rw-r--r-- 1 root root 960044 Apr 18 19:57 /tmp/test-mic.wav

I found this solution, but it didnt work for me:
https://forums.developer.nvidia.com/t/how-to-access-usb-speaker-from-within-a-docker-container/231737
Here is my custom run script:
./jetson-containers run --volume /mnt/nvme/git/mimzy:/opt/mimzy --device /dev/snd --device /dev/bus/usb --volume /etc/timezone:/etc/timezone:ro --volume /etc/localtime:/etc/localtime:ro mimzy:r36.2.0

@bryanhughes jetson-containers run (aka run.sh) already mounts the /dev/snd and /dev-bus/usb audio devices:
https://github.com/dusty-nv/jetson-containers/blob/4c4d7424c3b4d53b916ec2f20ebda222f3fd82b0/run.sh#L65
Strangely I have the same Anker PowerConf usb and it works through pyaudio both for mic and speaker inside docker....
With USB devices, you also need to have them plugged in before you start the container.
Have you listed the audio devices inside container with a script like this?
https://github.com/dusty-nv/jetson-containers/blob/master/packages/audio/riva-client/list_audio_devices.py

Oh how nice, I'm on the same stage as @bryanhughes right now with my Anker S330 and Home Assistant containers :D

https://github.com/dusty-nv/jetson-containers/blob/master/packages/audio/riva-client/list_audio_devices.py

@dusty-nv I have which corroborates what aplay -l shows
AUDIO DEVICES:

 0: NVIDIA Jetson AGX Orin HDA: HDMI 1 (hw:0,7)        (inputs=0   outputs=8   sampleRate=44100)
 1: NVIDIA Jetson AGX Orin HDA: HDMI 2 (hw:0,8)        (inputs=0   outputs=8   sampleRate=44100)
 2: NVIDIA Jetson AGX Orin HDA: HDMI 3 (hw:0,9)        (inputs=0   outputs=8   sampleRate=44100)
 3: NVIDIA Jetson AGX Orin APE: - (hw:1,0)             (inputs=16  outputs=16  sampleRate=44100)
 4: NVIDIA Jetson AGX Orin APE: - (hw:1,1)             (inputs=16  outputs=16  sampleRate=44100)
 5: NVIDIA Jetson AGX Orin APE: - (hw:1,2)             (inputs=16  outputs=16  sampleRate=44100)
 6: NVIDIA Jetson AGX Orin APE: - (hw:1,3)             (inputs=16  outputs=16  sampleRate=44100)
 7: NVIDIA Jetson AGX Orin APE: - (hw:1,4)             (inputs=16  outputs=16  sampleRate=44100)
 8: NVIDIA Jetson AGX Orin APE: - (hw:1,5)             (inputs=16  outputs=16  sampleRate=44100)
 9: NVIDIA Jetson AGX Orin APE: - (hw:1,6)             (inputs=16  outputs=16  sampleRate=44100)
10: NVIDIA Jetson AGX Orin APE: - (hw:1,7)             (inputs=16  outputs=16  sampleRate=44100)
11: NVIDIA Jetson AGX Orin APE: - (hw:1,8)             (inputs=16  outputs=16  sampleRate=44100)
12: NVIDIA Jetson AGX Orin APE: - (hw:1,9)             (inputs=16  outputs=16  sampleRate=44100)
13: NVIDIA Jetson AGX Orin APE: - (hw:1,10)            (inputs=16  outputs=16  sampleRate=44100)
14: NVIDIA Jetson AGX Orin APE: - (hw:1,11)            (inputs=16  outputs=16  sampleRate=44100)
15: NVIDIA Jetson AGX Orin APE: - (hw:1,12)            (inputs=16  outputs=16  sampleRate=44100)
16: NVIDIA Jetson AGX Orin APE: - (hw:1,13)            (inputs=16  outputs=16  sampleRate=44100)
17: NVIDIA Jetson AGX Orin APE: - (hw:1,14)            (inputs=16  outputs=16  sampleRate=44100)
18: NVIDIA Jetson AGX Orin APE: - (hw:1,15)            (inputs=16  outputs=16  sampleRate=44100)
19: NVIDIA Jetson AGX Orin APE: - (hw:1,16)            (inputs=16  outputs=16  sampleRate=44100)
20: NVIDIA Jetson AGX Orin APE: - (hw:1,17)            (inputs=16  outputs=16  sampleRate=44100)
21: NVIDIA Jetson AGX Orin APE: - (hw:1,18)            (inputs=16  outputs=16  sampleRate=44100)
22: NVIDIA Jetson AGX Orin APE: - (hw:1,19)            (inputs=16  outputs=16  sampleRate=44100)
23: PowerConf S3: USB Audio (hw:2,0)                   (inputs=1   outputs=2   sampleRate=48000)

Unfortunately when trying to play an audio I get:
# aplay mimzy-1.wav
aplay: main:831: audio open error: No such file or directory

My current approach is to debug by getting aplay to work from the command line in the running docker.

# aplay --device "hw:2,0" mimzy-1.wav
Playing WAVE 'mimzy-1.wav' : Signed 16 bit Little Endian, Rate 22050 Hz, Mono
aplay: set_params:1358: Channels count non available

Googling the message looks like it leads down the path of modifying the alsa config, which I did once upon a time and ended up screwing up my system. Just to clarify, aplay works fine on the host.

Also, this works:
speaker-test -f S16_LE -c 2 -d 10 -r 48000 --device="hw:2,0"

This is somewhat related with my issues with wyoming-assist-microphone container here: https://github.com/dusty-nv/jetson-containers/pull/481
DEBUG:root:Connected to mic service
arecord: main:831: audio open error: No such file or directory
WARNING:root:Mic service disconnected

@ms1design Unfortunately I still get:
# aplay mimzy-1-converted.wav
aplay: main:831: audio open error: No such file or directory

When I do:
aplay --device="hw:2,0"  mimzy-1-converted.wav
aplay: main:831: audio open error: Device or resource busy

This is because The PowerConf is current the default device on the host set in Settings (I am on the desktop). When I switch the host default output to the HDMI speaker in the monitor, I get the following on the original and converted:
# aplay --device="hw:2,0" mimzy-1.wav
Playing WAVE 'mimzy-1.wav' : Signed 16 bit Little Endian, Rate 22050 Hz, Mono
aplay: set_params:1358: Channels count non available

# aplay --device="hw:2,0" mimzy-1-converted.wav
Playing WAVE 'mimzy-1-converted.wav' : Signed 24 bit Little Endian in 3bytes, Rate 48000 Hz, Stereo
aplay: set_params:1352: Sample format non available
Available formats:
- S16_LE

I tried adding -f S16_LE but no difference. Stranger and stranger.

More information trying out speaker-test. When the PowerConf is set as the default output on the host through Settings, I can generate the test sound. When I change the default to the HDMI monitor speaker on the host through Settings, and then try to run the speaker test specifying the device:
$ speaker-test --device="hw:2,0"

speaker-test 1.2.6

Playback device is hw:2,0
Stream parameters are 48000Hz, S16_LE, 1 channels
Using 16 octaves of pink noise
Channels count (1) not available for playbacks: Invalid argument
Setting of hwparams failed: Invalid argument

It doesnt work on the host, so at least the host and the docker are failing in the same way when specifying the device.

That's interesting, @bryanhughes 🤔 I've finished enabling CUDA support for the wyoming-piper wrapper for the piper-tts container. Now, I can experiment with a setup similar to yours (Orin, Anker S330, containers, etc.). Did you modify your ALSA configuration this time?

@ms1design I did not modify the ALSA configuration. What I am doing is creating a custom container with just nano_llm, whisper, and piper-tts. I discovered another bug when trying to use lamaspeaks with whisper and piper, if throws an error unless it is riva.
I just rebuilt my container, this time I added in apt install alsa-base, but no changes. I want to test out if riva needs to be included and maybe that is where the audio magic happens?

Just an Update: I added riva-client to my custom build, to see if maybe there was some magic there, and it is also crapping out when I run the llama speaks demo. I am thinking that maybe my Orin AGX may be the problem.

So I am deep down the rabbit hole. It is clear this issue is not related to Docker, but to my host system, which I just re-flashed. Here is the updated information I posted in the Jetson Developer Forum:
https://forums.developer.nvidia.com/t/how-to-access-usb-speaker-from-within-a-docker-container/290183/4

@bryanhughes @ms1design given the problems you were having, just went through this and found aplay doesn't like it when the wav file is mono and output device is stereo, because hw devices won't do format conversion or resampling for you:
https://forums.developer.nvidia.com/t/how-to-access-usb-speaker-from-within-a-docker-container/290183/6?u=dusty_nv
Don't believe it is related to Jetson, or your device needing re-flashed.  The alsa-utils are cryptic to use and if you are developing for Python I would just use PyAudio.

@dusty-nv Thank you. I will let you know the progress. I know more about alsa than I ever wanted to and am just realizing this. There are so many red-herrings doh!

@dusty-nv Just an update. I decided to take a step back and just see if the llama speaks demo runs, which it sort of does. The TTS part works but the ASR didnt, which I realize is because the Riva server needs to be started first. I decided to switch to the whisper ASR but unfortunately looks like the code is hardwired to riva:
Traceback (most recent call last):
  File "/usr/lib/python3.10/runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib/python3.10/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/opt/NanoLLM/nano_llm/agents/web_chat.py", line 150, in <module>
    agent = WebChat(**vars(args))
  File "/opt/NanoLLM/nano_llm/agents/web_chat.py", line 30, in __init__
    super().__init__(**kwargs)
  File "/opt/NanoLLM/nano_llm/agents/voice_chat.py", line 38, in __init__
    self.asr = AutoASR.from_pretrained(asr=asr, **kwargs)
  File "/opt/NanoLLM/nano_llm/plugins/audio/auto_asr.py", line 41, in from_pretrained
    raise ValueError(f"ASR model type should be 'riva'")
ValueError: ASR model type should be 'riva'

From the documentation, it looks like Riva is built into the container, but not super clear on how to start it, and then start llama speaks.

@dusty-nv @bryanhughes Now I'm happy that I spent that weekend resting rather than deep diving into ALSA :D
Testing compatibility
First thing I did was just test using wyoming-assist-microphone container – what output I get on host Orin / docker run / docker-compose when issuing below commands:

aplay -L
arecord -L

host – ✅ Mic/Speaker detected / working as expected
aplay -L on host

narandill@ubuntu:~$ aplay -L
null
    Discard all samples (playback) or generate zero samples (capture)
samplerate
    Rate Converter Plugin Using Samplerate Library
speexrate
    Rate Converter Plugin Using Speex Resampler
jack
    JACK Audio Connection Kit
oss
    Open Sound System
pulse
    PulseAudio Sound Server
upmix
    Plugin for channel upmix (4,6,8)
vdownmix
    Plugin for channel downmix (stereo) with a simple spacialization
default
    Playback/recording through the PulseAudio sound server
demixer
hw:CARD=HDA,DEV=3
    NVIDIA Jetson AGX Orin HDA, HDMI 0
    Direct hardware device without any conversions
hw:CARD=HDA,DEV=7
    NVIDIA Jetson AGX Orin HDA, HDMI 1
    Direct hardware device without any conversions
hw:CARD=HDA,DEV=8
    NVIDIA Jetson AGX Orin HDA, HDMI 2
    Direct hardware device without any conversions
hw:CARD=HDA,DEV=9
    NVIDIA Jetson AGX Orin HDA, HDMI 3
    Direct hardware device without any conversions
plughw:CARD=HDA,DEV=3
    NVIDIA Jetson AGX Orin HDA, HDMI 0
    Hardware device with all software conversions
plughw:CARD=HDA,DEV=7
    NVIDIA Jetson AGX Orin HDA, HDMI 1
    Hardware device with all software conversions
plughw:CARD=HDA,DEV=8
    NVIDIA Jetson AGX Orin HDA, HDMI 2
    Hardware device with all software conversions
plughw:CARD=HDA,DEV=9
    NVIDIA Jetson AGX Orin HDA, HDMI 3
    Hardware device with all software conversions
hdmi:CARD=HDA,DEV=0
    NVIDIA Jetson AGX Orin HDA, HDMI 0
    HDMI Audio Output
hdmi:CARD=HDA,DEV=1
    NVIDIA Jetson AGX Orin HDA, HDMI 1
    HDMI Audio Output
hdmi:CARD=HDA,DEV=2
    NVIDIA Jetson AGX Orin HDA, HDMI 2
    HDMI Audio Output
dmix:CARD=HDA,DEV=3
    NVIDIA Jetson AGX Orin HDA, HDMI 0
    Direct sample mixing device
dmix:CARD=HDA,DEV=7
    NVIDIA Jetson AGX Orin HDA, HDMI 1
    Direct sample mixing device
dmix:CARD=HDA,DEV=8
    NVIDIA Jetson AGX Orin HDA, HDMI 2
    Direct sample mixing device
dmix:CARD=HDA,DEV=9
    NVIDIA Jetson AGX Orin HDA, HDMI 3
    Direct sample mixing device
usbstream:CARD=HDA
    NVIDIA Jetson AGX Orin HDA
    USB Stream Output
hw:CARD=APE,DEV=0
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=1
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=2
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=3
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=4
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=5
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=6
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=7
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=8
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=9
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=10
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=11
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=12
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=13
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=14
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=15
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=16
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=17
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=18
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=19
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
plughw:CARD=APE,DEV=0
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=1
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=2
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=3
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=4
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=5
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=6
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=7
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=8
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=9
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=10
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=11
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=12
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=13
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=14
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=15
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=16
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=17
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=18
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=19
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
sysdefault:CARD=APE
    NVIDIA Jetson AGX Orin APE,
    Default Audio Device
front:CARD=APE,DEV=0
    NVIDIA Jetson AGX Orin APE,
    Front output / input
dmix:CARD=APE,DEV=0
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=1
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=2
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=3
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=4
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=5
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=6
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=7
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=8
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=9
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=10
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=11
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=12
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=13
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=14
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=15
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=16
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=17
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=18
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=19
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
usbstream:CARD=APE
    NVIDIA Jetson AGX Orin APE
    USB Stream Output
hw:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    Direct hardware device without any conversions
plughw:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    Hardware device with all software conversions
sysdefault:CARD=S330
    Anker PowerConf S330, USB Audio
    Default Audio Device
front:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    Front output / input
surround21:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    4.0 Surround output to Front and Rear speakers
surround41:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    IEC958 (S/PDIF) Digital Audio Output
dmix:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    Direct sample mixing device
usbstream:CARD=S330
    Anker PowerConf S330
    USB Stream Output

arecord -L on host

narandill@ubuntu:~$ arecord -L
null
    Discard all samples (playback) or generate zero samples (capture)
samplerate
    Rate Converter Plugin Using Samplerate Library
speexrate
    Rate Converter Plugin Using Speex Resampler
jack
    JACK Audio Connection Kit
oss
    Open Sound System
pulse
    PulseAudio Sound Server
upmix
    Plugin for channel upmix (4,6,8)
vdownmix
    Plugin for channel downmix (stereo) with a simple spacialization
default
    Playback/recording through the PulseAudio sound server
demixer
usbstream:CARD=HDA
    NVIDIA Jetson AGX Orin HDA
    USB Stream Output
hw:CARD=APE,DEV=0
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=1
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=2
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=3
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=4
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=5
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=6
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=7
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=8
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=9
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=10
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=11
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=12
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=13
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=14
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=15
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=16
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=17
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=18
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=19
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
plughw:CARD=APE,DEV=0
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=1
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=2
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=3
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=4
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=5
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=6
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=7
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=8
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=9
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=10
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=11
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=12
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=13
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=14
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=15
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=16
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=17
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=18
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=19
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
sysdefault:CARD=APE
    NVIDIA Jetson AGX Orin APE,
    Default Audio Device
front:CARD=APE,DEV=0
    NVIDIA Jetson AGX Orin APE,
    Front output / input
dsnoop:CARD=APE,DEV=0
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=1
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=2
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=3
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=4
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=5
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=6
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=7
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=8
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=9
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=10
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=11
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=12
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=13
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=14
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=15
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=16
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=17
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=18
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=19
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
usbstream:CARD=APE
    NVIDIA Jetson AGX Orin APE
    USB Stream Output
hw:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    Direct hardware device without any conversions
plughw:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    Hardware device with all software conversions
sysdefault:CARD=S330
    Anker PowerConf S330, USB Audio
    Default Audio Device
front:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    Front output / input
dsnoop:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    Direct sample snooping device
usbstream:CARD=S330
    Anker PowerConf S330
    USB Stream Output

jetson-containers tests – 💩 Mic/Speaker not available
Those are the test's that are automatically launched after building the container (not intermediate).
aplay -L on jetson-containers

12:28:05 null
12:28:05     Discard all samples (playback) or generate zero samples (capture)
12:28:05 samplerate
12:28:05     Rate Converter Plugin Using Samplerate Library
12:28:05 speexrate
12:28:05     Rate Converter Plugin Using Speex Resampler
12:28:05 jack
12:28:05     JACK Audio Connection Kit
12:28:05 oss
12:28:05     Open Sound System
12:28:05 pulse
12:28:05     PulseAudio Sound Server
12:28:05 upmix
12:28:05     Plugin for channel upmix (4,6,8)
12:28:05 vdownmix
12:28:05     Plugin for channel downmix (stereo) with a simple spacialization

arecord -L on jetson-containers

12:28:05 null
12:28:05     Discard all samples (playback) or generate zero samples (capture)
12:28:05 samplerate
12:28:05     Rate Converter Plugin Using Samplerate Library
12:28:05 speexrate
12:28:05     Rate Converter Plugin Using Speex Resampler
12:28:05 jack
12:28:05     JACK Audio Connection Kit
12:28:05 oss
12:28:05     Open Sound System
12:28:05 pulse
12:28:05     PulseAudio Sound Server
12:28:05 upmix
12:28:05     Plugin for channel upmix (4,6,8)
12:28:05 vdownmix
12:28:05     Plugin for channel downmix (stereo) with a simple spacialization

Looks like Anker is not visible in this context.
docker-compose – ✅ Mic/Speaker detected / working as expected
Personally I don't use docker run to host jetson-containers in favour of docker-compose with below config:
name: sound-test
version: "3.9"
services:
  assist-microphone:
    image: ms1design/wyoming-assist-microphone:r36.2.0-cu122
    network_mode: host
    container_name: assist-microphone
    hostname: assist-microphone
    devices:
      - /dev/snd:/dev/snd
      - /dev/bus/usb

aplay -L on docker-compose

root@assist-microphone:/usr/src/sounds# aplay -L
null
    Discard all samples (playback) or generate zero samples (capture)
samplerate
    Rate Converter Plugin Using Samplerate Library
speexrate
    Rate Converter Plugin Using Speex Resampler
jack
    JACK Audio Connection Kit
oss
    Open Sound System
pulse
    PulseAudio Sound Server
upmix
    Plugin for channel upmix (4,6,8)
vdownmix
    Plugin for channel downmix (stereo) with a simple spacialization
hw:CARD=HDA,DEV=3
    NVIDIA Jetson AGX Orin HDA, HDMI 0
    Direct hardware device without any conversions
hw:CARD=HDA,DEV=7
    NVIDIA Jetson AGX Orin HDA, HDMI 1
    Direct hardware device without any conversions
hw:CARD=HDA,DEV=8
    NVIDIA Jetson AGX Orin HDA, HDMI 2
    Direct hardware device without any conversions
hw:CARD=HDA,DEV=9
    NVIDIA Jetson AGX Orin HDA, HDMI 3
    Direct hardware device without any conversions
plughw:CARD=HDA,DEV=3
    NVIDIA Jetson AGX Orin HDA, HDMI 0
    Hardware device with all software conversions
plughw:CARD=HDA,DEV=7
    NVIDIA Jetson AGX Orin HDA, HDMI 1
    Hardware device with all software conversions
plughw:CARD=HDA,DEV=8
    NVIDIA Jetson AGX Orin HDA, HDMI 2
    Hardware device with all software conversions
plughw:CARD=HDA,DEV=9
    NVIDIA Jetson AGX Orin HDA, HDMI 3
    Hardware device with all software conversions
dmix:CARD=HDA,DEV=3
    NVIDIA Jetson AGX Orin HDA, HDMI 0
    Direct sample mixing device
dmix:CARD=HDA,DEV=7
    NVIDIA Jetson AGX Orin HDA, HDMI 1
    Direct sample mixing device
dmix:CARD=HDA,DEV=8
    NVIDIA Jetson AGX Orin HDA, HDMI 2
    Direct sample mixing device
dmix:CARD=HDA,DEV=9
    NVIDIA Jetson AGX Orin HDA, HDMI 3
    Direct sample mixing device
usbstream:CARD=HDA
    NVIDIA Jetson AGX Orin HDA
    USB Stream Output
hw:CARD=APE,DEV=0
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=1
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=2
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=3
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=4
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=5
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=6
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=7
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=8
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=9
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=10
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=11
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=12
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=13
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=14
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=15
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=16
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=17
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=18
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=19
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
plughw:CARD=APE,DEV=0
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=1
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=2
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=3
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=4
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=5
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=6
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=7
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=8
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=9
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=10
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=11
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=12
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=13
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=14
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=15
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=16
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=17
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=18
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=19
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
default:CARD=APE
    NVIDIA Jetson AGX Orin APE,
    Default Audio Device
sysdefault:CARD=APE
    NVIDIA Jetson AGX Orin APE,
    Default Audio Device
dmix:CARD=APE,DEV=0
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=1
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=2
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=3
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=4
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=5
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=6
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=7
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=8
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=9
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=10
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=11
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=12
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=13
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=14
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=15
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=16
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=17
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=18
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=19
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
usbstream:CARD=APE
    NVIDIA Jetson AGX Orin APE
    USB Stream Output
hw:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    Direct hardware device without any conversions
plughw:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    Hardware device with all software conversions
default:CARD=S330
    Anker PowerConf S330, USB Audio
    Default Audio Device
sysdefault:CARD=S330
    Anker PowerConf S330, USB Audio
    Default Audio Device
front:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    Front output / input
surround21:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    4.0 Surround output to Front and Rear speakers
surround41:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    IEC958 (S/PDIF) Digital Audio Output
dmix:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    Direct sample mixing device
usbstream:CARD=S330
    Anker PowerConf S330
    USB Stream Output

arecord -L on docker-compose

root@assist-microphone:/usr/src/sounds# arecord -L
null
    Discard all samples (playback) or generate zero samples (capture)
samplerate
    Rate Converter Plugin Using Samplerate Library
speexrate
    Rate Converter Plugin Using Speex Resampler
jack
    JACK Audio Connection Kit
oss
    Open Sound System
pulse
    PulseAudio Sound Server
upmix
    Plugin for channel upmix (4,6,8)
vdownmix
    Plugin for channel downmix (stereo) with a simple spacialization
usbstream:CARD=HDA
    NVIDIA Jetson AGX Orin HDA
    USB Stream Output
hw:CARD=APE,DEV=0
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=1
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=2
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=3
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=4
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=5
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=6
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=7
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=8
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=9
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=10
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=11
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=12
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=13
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=14
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=15
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=16
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=17
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=18
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=19
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
plughw:CARD=APE,DEV=0
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=1
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=2
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=3
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=4
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=5
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=6
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=7
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=8
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=9
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=10
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=11
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=12
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=13
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=14
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=15
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=16
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=17
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=18
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=19
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
default:CARD=APE
    NVIDIA Jetson AGX Orin APE,
    Default Audio Device
sysdefault:CARD=APE
    NVIDIA Jetson AGX Orin APE,
    Default Audio Device
dsnoop:CARD=APE,DEV=0
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=1
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=2
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=3
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=4
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=5
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=6
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=7
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=8
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=9
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=10
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=11
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=12
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=13
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=14
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=15
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=16
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=17
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=18
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=19
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
usbstream:CARD=APE
    NVIDIA Jetson AGX Orin APE
    USB Stream Output
hw:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    Direct hardware device without any conversions
plughw:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    Hardware device with all software conversions
default:CARD=S330
    Anker PowerConf S330, USB Audio
    Default Audio Device
sysdefault:CARD=S330
    Anker PowerConf S330, USB Audio
    Default Audio Device
front:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    Front output / input
dsnoop:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    Direct sample snooping device
usbstream:CARD=S330
    Anker PowerConf S330
    USB Stream Output

docker run – ✅ Mic/Speaker detected / working as expected
Tested also the default docker run command:
docker run --rm \
    --name audio_test \
    --device /dev/snd:/dev/snd \
    --device /dev/bus/usb:/dev/bus/usb \
    ms1design/wyoming-assist-microphone:r36.2.0-cu122 \
    /bin/bash -c "aplay -L"

docker run --rm \
    --name audio_test \
    --device /dev/snd:/dev/snd \
    --device /dev/bus/usb:/dev/bus/usb \
    ms1design/wyoming-assist-microphone:r36.2.0-cu122 \
    /bin/bash -c "arecord -L"

aplay -L on docker run

narandill@ubuntu:~$ docker run --rm \
    --name audio_test \
    --device /dev/snd:/dev/snd \
    --device /dev/bus/usb:/dev/bus/usb \
    ms1design/wyoming-assist-microphone:r36.2.0-cu122 \
    /bin/bash -c "aplay -L"
null
    Discard all samples (playback) or generate zero samples (capture)
samplerate
    Rate Converter Plugin Using Samplerate Library
speexrate
    Rate Converter Plugin Using Speex Resampler
jack
    JACK Audio Connection Kit
oss
    Open Sound System
pulse
    PulseAudio Sound Server
upmix
    Plugin for channel upmix (4,6,8)
vdownmix
    Plugin for channel downmix (stereo) with a simple spacialization
hw:CARD=HDA,DEV=3
    NVIDIA Jetson AGX Orin HDA, HDMI 0
    Direct hardware device without any conversions
hw:CARD=HDA,DEV=7
    NVIDIA Jetson AGX Orin HDA, HDMI 1
    Direct hardware device without any conversions
hw:CARD=HDA,DEV=8
    NVIDIA Jetson AGX Orin HDA, HDMI 2
    Direct hardware device without any conversions
hw:CARD=HDA,DEV=9
    NVIDIA Jetson AGX Orin HDA, HDMI 3
    Direct hardware device without any conversions
plughw:CARD=HDA,DEV=3
    NVIDIA Jetson AGX Orin HDA, HDMI 0
    Hardware device with all software conversions
plughw:CARD=HDA,DEV=7
    NVIDIA Jetson AGX Orin HDA, HDMI 1
    Hardware device with all software conversions
plughw:CARD=HDA,DEV=8
    NVIDIA Jetson AGX Orin HDA, HDMI 2
    Hardware device with all software conversions
plughw:CARD=HDA,DEV=9
    NVIDIA Jetson AGX Orin HDA, HDMI 3
    Hardware device with all software conversions
dmix:CARD=HDA,DEV=3
    NVIDIA Jetson AGX Orin HDA, HDMI 0
    Direct sample mixing device
dmix:CARD=HDA,DEV=7
    NVIDIA Jetson AGX Orin HDA, HDMI 1
    Direct sample mixing device
dmix:CARD=HDA,DEV=8
    NVIDIA Jetson AGX Orin HDA, HDMI 2
    Direct sample mixing device
dmix:CARD=HDA,DEV=9
    NVIDIA Jetson AGX Orin HDA, HDMI 3
    Direct sample mixing device
usbstream:CARD=HDA
    NVIDIA Jetson AGX Orin HDA
    USB Stream Output
hw:CARD=APE,DEV=0
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=1
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=2
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=3
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=4
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=5
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=6
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=7
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=8
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=9
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=10
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=11
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=12
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=13
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=14
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=15
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=16
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=17
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=18
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=19
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
plughw:CARD=APE,DEV=0
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=1
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=2
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=3
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=4
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=5
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=6
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=7
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=8
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=9
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=10
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=11
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=12
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=13
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=14
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=15
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=16
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=17
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=18
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=19
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
default:CARD=APE
    NVIDIA Jetson AGX Orin APE,
    Default Audio Device
sysdefault:CARD=APE
    NVIDIA Jetson AGX Orin APE,
    Default Audio Device
dmix:CARD=APE,DEV=0
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=1
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=2
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=3
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=4
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=5
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=6
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=7
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=8
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=9
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=10
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=11
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=12
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=13
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=14
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=15
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=16
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=17
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=18
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
dmix:CARD=APE,DEV=19
    NVIDIA Jetson AGX Orin APE,
    Direct sample mixing device
usbstream:CARD=APE
    NVIDIA Jetson AGX Orin APE
    USB Stream Output
hw:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    Direct hardware device without any conversions
plughw:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    Hardware device with all software conversions
default:CARD=S330
    Anker PowerConf S330, USB Audio
    Default Audio Device
sysdefault:CARD=S330
    Anker PowerConf S330, USB Audio
    Default Audio Device
front:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    Front output / input
surround21:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    4.0 Surround output to Front and Rear speakers
surround41:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    IEC958 (S/PDIF) Digital Audio Output
dmix:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    Direct sample mixing device
usbstream:CARD=S330
    Anker PowerConf S330
    USB Stream Output

arecord -L on docker run

narandill@ubuntu:~$ docker run --rm     --name audio_test     --device /dev/snd:/dev/snd     --device /dev/bus/usb:/dev/bus/usb     ms1design/wyoming-assist-microphone:r36.2.0-cu122     /bin/bash -c "arecord -L"
null
    Discard all samples (playback) or generate zero samples (capture)
samplerate
    Rate Converter Plugin Using Samplerate Library
speexrate
    Rate Converter Plugin Using Speex Resampler
jack
    JACK Audio Connection Kit
oss
    Open Sound System
pulse
    PulseAudio Sound Server
upmix
    Plugin for channel upmix (4,6,8)
vdownmix
    Plugin for channel downmix (stereo) with a simple spacialization
usbstream:CARD=HDA
    NVIDIA Jetson AGX Orin HDA
    USB Stream Output
hw:CARD=APE,DEV=0
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=1
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=2
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=3
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=4
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=5
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=6
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=7
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=8
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=9
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=10
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=11
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=12
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=13
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=14
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=15
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=16
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=17
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=18
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
hw:CARD=APE,DEV=19
    NVIDIA Jetson AGX Orin APE,
    Direct hardware device without any conversions
plughw:CARD=APE,DEV=0
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=1
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=2
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=3
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=4
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=5
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=6
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=7
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=8
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=9
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=10
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=11
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=12
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=13
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=14
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=15
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=16
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=17
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=18
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
plughw:CARD=APE,DEV=19
    NVIDIA Jetson AGX Orin APE,
    Hardware device with all software conversions
default:CARD=APE
    NVIDIA Jetson AGX Orin APE,
    Default Audio Device
sysdefault:CARD=APE
    NVIDIA Jetson AGX Orin APE,
    Default Audio Device
dsnoop:CARD=APE,DEV=0
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=1
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=2
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=3
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=4
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=5
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=6
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=7
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=8
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=9
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=10
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=11
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=12
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=13
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=14
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=15
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=16
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=17
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=18
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
dsnoop:CARD=APE,DEV=19
    NVIDIA Jetson AGX Orin APE,
    Direct sample snooping device
usbstream:CARD=APE
    NVIDIA Jetson AGX Orin APE
    USB Stream Output
hw:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    Direct hardware device without any conversions
plughw:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    Hardware device with all software conversions
default:CARD=S330
    Anker PowerConf S330, USB Audio
    Default Audio Device
sysdefault:CARD=S330
    Anker PowerConf S330, USB Audio
    Default Audio Device
front:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    Front output / input
dsnoop:CARD=S330,DEV=0
    Anker PowerConf S330, USB Audio
    Direct sample snooping device
usbstream:CARD=S330
    Anker PowerConf S330
    USB Stream Output

Other observations or issues
My Anker device does not allow to record in different rate than 48000Hz
❌ This fails:
narandill@ubuntu:~$ arecord -D hw:2,0 -c 2 -r 44100 -f S16_LE -d 5 -t wav recording.wav
Recording WAVE 'recording.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono
arecord: set_params:1358: Channels count non available

✅ This works:
narandill@ubuntu:~$ arecord -D hw:2,0 -c 2 -r 48000 -f S16_LE -d 5 -t wav recording.wav
Recording WAVE 'recording.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono
narandill@ubuntu:~$

My Anker want's to record only with two channels (-c 2 instead of -c 1).
❌ This fails:
narandill@ubuntu:~$ arecord -D hw:2,0 -c 1 -r 48000 -f S16_LE -d 5 -t wav recording.wav
Recording WAVE 'recording.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono
arecord: set_params:1358: Channels count non available

✅ This works:
narandill@ubuntu:~$ arecord -D hw:2,0 -c 2 -r 48000 -f S16_LE -d 5 -t wav recording.wav
Recording WAVE 'recording.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono
narandill@ubuntu:~$

Unfortunately I cannot directly play the recording without transcoding from S16_LE to S24_3LE sample format using sox:
❌ This fails:
narandill@ubuntu:~$ aplay -D hw:2,0 -f S16_LE -r 48000 recording.wav
Playing WAVE 'recording.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo
aplay: set_params:1352: Sample format non available
Available formats:
- S24_3LE
narandill@ubuntu:~$

✅ This works:
narandill@ubuntu:~$ sox recording.wav -b 24 -c 2 -r 48000 -e signed-integer recording-converted.wav
narandill@ubuntu:~$ aplay -D hw:2,0 -f S24_3LE -r 48000 recording-converted.wav
Playing WAVE 'recording-converted.wav' : Signed 24 bit Little Endian in 3bytes, Rate 48000 Hz, Stereo
narandill@ubuntu:~$

Working commands:
arecord -D hw:2,0 -c 2 -r 48000 -f S16_LE -d 5 -t wav recording.wav
sox recording.wav -b 24 -c 2 -r 48000 -e signed-integer recording-converted.wav
aplay -D hw:2,0 -f S24_3LE -r 48000 recording-converted.wav

jetson-containers tests – 💩 Mic/Speaker not available

@ms1design I think this is because jetson-containers does not mount devices like /dev/snd and /dev/usb for tests, it doesn't mount /dev/video devices either

My Anker device does not allow to record in different rate than 48000Hz
My Anker want's to record only with two channels (-c 2 instead of -c 1).

Same here and I believe expected behavior for the Anker device, based on other sound devices I have that you also need to specify the correct sample rate and number of channels for.

@dusty-nv and @ms1design - Just wanted to add what I learned this weekend diving down the alsa pit of despair. The part that threw me was that the default driver (on my system ID 37) does resampling. Meaning that whatever I played both through aplay and my pyaudio output worked. Only when reading and writing directly to the card is when there is no resampling for you. As Dusty pointed out in my post to the Dev Forum, the alsa was just a giant waste of my time (DOH).
So for ASR (using whisper) I downsample from 48000 to 16000, and then for TTS (using the Cori voice on Piper) I upsample from 22050 to 48000. Everything is working nicely now.
Thanks again @dusty-nv for you help and patience. I will respond to my post on the dev forum with the final solution.

If you guys wanna see how I handle resampling from Python, I use torchaudio, which is faster than librosa and can use CUDA:
https://github.com/dusty-nv/NanoLLM/blob/d493ce48e5b0f4cf9fe795c8366a733c46c5d651/nano_llm/plugins/audio/piper_tts.py#L77
(this would be for if/when you control or patch the code in question, as opposed to trying to get another existing 3rd-party project running without modification)

If you guys wanna see how I handle resampling from Python, I use torchaudio, which is faster than librosa and can use CUDA:

I think that there's no need for that - according to the assist-micophone docs you can also make recording with different sampling, channels and just one profile:
arecord -D plughw:CARD=S330,DEV=0 -r 16000 -c 1 -f S16_LE -t wav -d 5 test.wav
aplay -D plughw:CARD=S330,DEV=0 test.wav

The above works when device is defined following the docs: -D plughw:CARD=S330,DEV=0

@dusty-nv- Thanks for all the help. @ms1design - thank you that is good to know. In my case, I am working towards real-time streaming which requires me to use the pyaudio python framework.


It doesn't say any error when nodejs engine path is invalid

It happens for very few people but i was about to give up for it.
I may not need to solve but i hope if someone is having trouble, please check below.
Bug
GraphQL Plugin Service just stuck with red line.
I tried to restart GraphQL plugin service several times but it was same result.

The red line description has nothing.
And GraphQL type color and type tracing are not working even if config has GraphQL scheme file

Cause

I could use this plugin in native app project using nodejs. But It has happened only back end server project (java, kotlin, scala) because i did not need to specify what the nodejs is.
IDE fatal error says
Error running JS GraphQL Language Service using Node.js: Cannot run program "/Users/greg/.nvm/versions/node/v8.0.0/bin/node" (in directory "/Users/greg/Library/Application Support/IntelliJIdea2017.2"): error=2, No such file or directory

Error running JS GraphQL Language Service using Node.js: Cannot run program "/Users/greg/.nvm/versions/node/v8.0.0/bin/node" (in directory "/Users/greg/Library/Application Support/IntelliJIdea2017.2"): error=2, No such file or directory
com.intellij.execution.process.ProcessNotCreatedException: Cannot run program "/Users/greg/.nvm/versions/node/v8.0.0/bin/node" (in directory "/Users/greg/Library/Application Support/IntelliJIdea2017.2"): error=2, No such file or directory
	at com.intellij.execution.configurations.GeneralCommandLine.createProcess(GeneralCommandLine.java:391)
	at com.intellij.execution.process.OSProcessHandler.<init>(OSProcessHandler.java:45)
	at com.intellij.lang.jsgraphql.languageservice.JSGraphQLNodeLanguageServiceInstance.createProcessHandler(JSGraphQLNodeLanguageServiceInstance.java:135)
	at com.intellij.lang.jsgraphql.languageservice.JSGraphQLNodeLanguageServiceInstance.<init>(JSGraphQLNodeLanguageServiceInstance.java:83)
	at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660)
	at com.intellij.lang.jsgraphql.languageservice.JSGraphQLNodeLanguageServiceClient.getJSGraphQLNodeLanguageServiceInstance(JSGraphQLNodeLanguageServiceClient.java:118)
	at com.intellij.lang.jsgraphql.languageservice.JSGraphQLNodeLanguageServiceClient.executeRequest(JSGraphQLNodeLanguageServiceClient.java:71)
	at com.intellij.lang.jsgraphql.languageservice.JSGraphQLNodeLanguageServiceClient.executeRequest(JSGraphQLNodeLanguageServiceClient.java:66)
	at com.intellij.lang.jsgraphql.languageservice.JSGraphQLNodeLanguageServiceClient.getTokens(JSGraphQLNodeLanguageServiceClient.java:33)
	at com.intellij.lang.jsgraphql.lexer.JSGraphQLLexer.fetchTokensFromLanguageService(JSGraphQLLexer.java:78)
	at com.intellij.lang.jsgraphql.lexer.JSGraphQLLexer.start(JSGraphQLLexer.java:66)
	at com.intellij.openapi.editor.ex.util.LexerEditorHighlighter.a(LexerEditorHighlighter.java:378)
	at com.intellij.openapi.editor.ex.util.LexerEditorHighlighter.setText(LexerEditorHighlighter.java:359)
	at com.intellij.openapi.fileEditor.impl.text.TextEditorImpl.loadEditorInBackground(TextEditorImpl.java:70)
	at com.intellij.openapi.fileEditor.impl.text.PsiAwareTextEditorImpl.loadEditorInBackground(PsiAwareTextEditorImpl.java:50)
	at com.intellij.openapi.fileEditor.impl.text.AsyncEditorLoader.a(AsyncEditorLoader.java:100)
	at com.intellij.psi.impl.PsiDocumentManagerBase.lambda$commitAndRunReadAction$2(PsiDocumentManagerBase.java:502)
	at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:953)
	at com.intellij.psi.impl.PsiDocumentManagerBase.commitAndRunReadAction(PsiDocumentManagerBase.java:500)
	at com.intellij.openapi.fileEditor.impl.text.AsyncEditorLoader.a(AsyncEditorLoader.java:98)
	at com.intellij.openapi.progress.util.ProgressIndicatorUtils.a(ProgressIndicatorUtils.java:146)
	at com.intellij.openapi.progress.impl.CoreProgressManager.a(CoreProgressManager.java:170)
	at com.intellij.openapi.progress.impl.CoreProgressManager.a(CoreProgressManager.java:548)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:493)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:94)
	at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:157)
	at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runWithWriteActionPriority(ProgressIndicatorUtils.java:144)
	at com.intellij.openapi.fileEditor.impl.text.AsyncEditorLoader.a(AsyncEditorLoader.java:98)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at com.intellij.util.concurrency.BoundedTaskExecutor$2.run(BoundedTaskExecutor.java:212)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)
Caused by: java.io.IOException: Cannot run program "/Users/greg/.nvm/versions/node/v8.0.0/bin/node" (in directory "/Users/greg/Library/Application Support/IntelliJIdea2017.2"): error=2, No such file or directory
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
	at com.intellij.execution.configurations.GeneralCommandLine.startProcess(GeneralCommandLine.java:420)
	at com.intellij.execution.configurations.GeneralCommandLine.createProcess(GeneralCommandLine.java:387)
	... 32 more
Caused by: java.io.IOException: error=2, No such file or directory
	at java.lang.UNIXProcess.forkAndExec(Native Method)
	at java.lang.UNIXProcess.<init>(UNIXProcess.java:247)
	at java.lang.ProcessImpl.start(ProcessImpl.java:134)
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
	... 34 more

It could be IDE  but i did not recognized the IDE fatal error until i am writing this issue. because it doesn't pop up.
I think the plugin can show initializing error. That's the solution i wanted.
Nothing message makes the plugin having problem but not user.
Solution
You should change Nodejs engine path as valid.
Then, you MUST RESTART INTELLIJ IDE COMPLETELY to reload nodejs engine.
That's it.

Hi GregYeo.
Thanks for using the plugin.
The upcoming 1.6 release will show a notification when the Node.js process fails to start.

Version 1.6 has been uploaded to the plugin repository and is now pending approval by Jetbrains.


Jesse: Watch marie[\W_]*+consultancy(?:oz)?(?:@gmail.com)?

Jesse requests the watch of the watch_keyword marie[\W_]*+consultancy(?:oz)?(?:@gmail\.com)?. See the MS search here and the Stack Exchange search in text, in URLs, and in code.

marie[\W_]*+consultancy(?:oz)?(?:@gmail\.com)? has been seen in 7 true positives, 0 false positives, and 0 NAAs.

Rejected by cocomac in Charcoal HQ. Reason: 'That's a watch, not blacklist. See also chat message by Jesse'


OpenH264 library for non-x86_64-Linux environments

cvendor/lib/openh264/libopenh264.a is compiled for x86_64 Linux.
Would be nice to have more portable way for multiple environments.

This has been my goal. The original thought was to bundle everything statically and reduce the number of dependencies that you need to install (basically I want people to be able to just get the library by go get and just build their code with it, no need apt-get install or anything like that). My aggressive goal is to actually write these codecs in pure Go, but obviously we don't have the time for that yet... ^^
From my research in the past, we can build the libraries statically for every OS and architecture, and link them conditionally in Go (which is somewhat what we currently have, we just need to extend more support to other OS and arch).
In fact, this approach has been done before in a project called, mysterium:

Blog post specifically about this, https://medium.com/mysterium-network/golang-c-interoperability-caf0ba9f7bf3
The source codes, https://github.com/mysteriumnetwork/go-openvpn/tree/master/openvpn3

Honestly, the main problem has been getting hardware with different OSes and arch to compile it statically. I saw some articles that you could use Docker to get the proper toolchain for cross-compilation. But, I'm not sure how we can do cross-OS compilations since Windows and Mac toolchain can't be used in Linux AFAIK.
Also, it seems that making a static build with cgo might become easier in the future with this proposal, https://github.com/golang/go/issues/26492. I really wonder that if it's going to be possible to cross-compile with cgo in the future... It would be pretty awesome!

I agree that bundling everything statically is useful.
However, static link is sometimes problematic due to their licenses (currently, linked libs excepting libgcc are all BSD-like, so it's OK) and binary size when building multiple executables. It would be better to be selectable via -tags or something.

That makes sense. But, it seems like OpenH264 doesn't distribute their dynamic version to package managers... I'm having a hard time to find one for Ubuntu.

Hmm, it seems that Cisco's AVC/H.264 Patent Portfolio is only applied to their precompiled binary.
http://www.openh264.org/faq.html
http://www.openh264.org/BINARY_LICENSE.txt

The binary form of this Software is distributed by Cisco under the AVC/H.264 Patent Portfolio License from MPEG LA, and is subject to the following requirements, which may or may not be applicable to your use of this software:

Ah, that explains why we can't find the dynamic library.

So using mediadevices will not be possible on an RPi? :\

@a1xon You can use system wide installed openh264 library instead of using bundled one by specifying -tags dynamic.

@a1xon You can use system wide installed openh264 library instead of using bundled one by specifying -tags dynamic.

Tried that with the simple example on the RPi 4 (2GB) and I'm getting Failed to map request buffers: cannot allocate memory for GetUserMedia(). I also rebuild openh264 and replaced the lib/libopenh264.x86_64-linux.a file.

@a1xon could you open a new issue with detailed informations of your configuration?
(e.g. including Go version, what kind of camera do you use, changes in sample code if something changed, etc)


TypeScript Template 0.60

error Error: Cannot find module '/tmp/rncli-init-template-LrZBvL/node_modules/react-native-template-typescript/template.config'

React Native version: 0.60
System:
OS: Linux 4.19 Manjaro Linux undefined
CPU: (16) x64 AMD Ryzen 7 1800X Eight-Core Processor
Memory: 16.51 GB / 31.40 GB
Shell: 5.0.7 - /bin/bash
Binaries:
Node: 10.0.0 - ~/.nvm/versions/node/v10.0.0/bin/node
npm: 6.9.0 - ~/.nvm/versions/node/v10.0.0/bin/npm
SDKs:
Android SDK:
API Levels: 23, 24, 28
Build Tools: 28.0.3
System Images: android-28 | Google Play Intel x86 Atom
Android NDK: 15.2.4203891
npmGlobalPackages:
react-native: 0.60.0
Steps To Reproduce

react-native init app --template typescript

Describe what you expected to happen:
Initialize a new project with TypeScript.

You have installed the react-native package globally. Replace it with the react-native-cli and try the command again.

starting with 0.59 you can use typescript without any special setup or template. create a project and add @types/react @types/react-native and typescript to you devDependencies, then feel free to use TypeScript.


Add m³ units. Water as default for r900. Symbol length to reduce cpu usage. Msg type input user friendly.

I've added options for metric users (m³).
Made the msg type input more user friendly.
Added symbol length to lower cpu usage.
Added water device class to r900 by default.

Thank you for contributing! I am working on reviewing your PR. A few things so far:

Can you please explain why msgType should change to str? This will change the config page entry from a drop down box to a text box that is no pre-populated. How will this make input more user friendly?

I am okay with adding m³ as a unit of measure for water meters but we do not need to change the default.

R900 changes look good.

Lowering the symbol length lowers the sample rate which in turn should lower CPU usage right? Does it make a noticeable difference? Is there any downside to lowering the symbol length?

Can you please explain why msgType should change to str? This will change the config page entry from a drop down box to a text box that is no pre-populated. How will this make input more user friendly?

User can only select one of the pre-populated options. Like in my case they would be out of luck if you didn't give them the exact combination they needed or wanted. Would be impractical to list all the possible options.
You could pre fill the list with a default so users know the correct formatting.
I am okay with adding m³ as a unit of measure for water meters but we do not need to change the default.

Ok but the metric system is still better.  :stuck_out_tongue_closed_eyes:
R900 changes look good.

:thumbsup:
Lowering the symbol length lowers the sample rate which in turn should lower CPU usage right? Does it make a noticeable difference? Is there any downside to lowering the symbol length?

I think depending on the type of message being read it could cause some of them to be missed. When I was using the other add-on my cpu usage was around 50%. I was able to get good result with the lowest setting of 8 dropping my cpu to 5%.

User can only select one of the pre-populated options. Like in my case they would be out of luck if you didn't give them the exact combination they needed or wanted. Would be impractical to list all the possible options.
You could pre fill the list with a default so users know the correct formatting.

This is possible but what benefit does it give over selecting "all" and filtering by ID? From what I see, the results would be the same. In theory we could remove the type filter from the config and change it to "all" in the code.

Ok but the metric system is still better.

LOL true.

I think depending on the type of message being read it could cause some of them to be missed. When I was using the other add-on my cpu usage was around 50%. I was able to get good result with the lowest setting of 8 dropping my cpu to 5%.

Per the RTLAMR wiki there may be issues caused by going over the default value of 72 so lets cap it at 72 and allow for lower values down to 8 if needed.

I believe it is much more efficient to only select the types of messages needed once they are known.
Multi Protocol Decoding
I don't see any other way of making all the types available without a string input. I guess you could do booleans for each one?

There are only 3 meter types so I suggest changing the UI structure to:
options:
  debug: False
  rtltcpdebug: False
  duration: 15
  pause_time: 30
  electric_id: ""
  electric_msg_type: scm
  electric_unit_of_measurement: kWh
  electric_multiplier: 1
  gas_id: ""
  gas_msg_type: scm+
  gas_unit_of_measurement: ft³
  gas_multiplier: 1
  water_id: ""
  water_msg_type: idm
  water_unit_of_measurement: gal
  water_multiplier: 1

schema:
  debug: bool
  rtltcpdebug: bool
  duration: int
  pause_time: int
  electric_id: str?
  electric_msg_type: list(scm|scm+|idm|netidm|r900|r900bcd|all)
  electric_unit_of_measurement: list(Wh|kWh|MWh)
  electric_multiplier: float
  gas_id: str?
  gas_msg_type: list(scm|scm+|idm|netidm|r900|r900bcd|all)
  gas_unit_of_measurement: list(ft³|m³)
  gas_multiplier: float
  water_id: str?
  water_msg_type: list(scm|scm+|idm|netidm|r900|r900bcd|all)
  water_unit_of_measurement: list(gal|l)
  water_multiplier: float

I believe it is much more efficient to only select the types of messages needed once they are known. Multi Protocol Decoding

Note the warnings from the author of rtlamr:
-msgtype=all includes the following protocols: scm, scm+, idm, r900 and is intended to be used for discovery.
r900 and r900bcd are fairly resource heavy and should not be used concurrently with other protocols on low-power systems like RPi's.


Add gnomad data into myVariantInfo endpoint

Update myVairiantInfo endpoint, adding gnomad data into the myVariantInfo endpoint.

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@b621c7a). Click here to learn what that means.
The diff coverage is 50%.

@@            Coverage Diff            @@
##             master     #267   +/-   ##
=========================================
  Coverage          ?   17.35%
  Complexity        ?      112
=========================================
  Files             ?      153
  Lines             ?     1959
  Branches          ?      253
=========================================
  Hits              ?      340
  Misses            ?     1588
  Partials          ?       31

Impacted Files
Coverage Δ
Complexity Δ

...ixin/my_variant_info_mixin/MyVariantInfoMixin.java
0% <ø> (ø)
0 <0> (?)

...xus/service/internal/MyVariantInfoServiceImpl.java
37.83% <ø> (ø)
5 <0> (?)

...ixin/my_variant_info_mixin/MyVariantInfoMixin.java
0% <ø> (ø)
0 <0> (?)

.../mixin/my_variant_info_mixin/HomozygotesMixin.java
0% <0%> (ø)
0 <0> (?)

...in/my_variant_info_mixin/AlleleFrequencyMixin.java
0% <0%> (ø)
0 <0> (?)

.../mixin/my_variant_info_mixin/AlleleCountMixin.java
0% <0%> (ø)
0 <0> (?)

...rvice/mixin/my_variant_info_mixin/GnomadMixin.java
0% <0%> (ø)
0 <0> (?)

...s/web/mixin/my_variant_info_mixin/GnomadMixin.java
0% <0%> (ø)
0 <0> (?)

.../mixin/my_variant_info_mixin/AlleleCountMixin.java
0% <0%> (ø)
0 <0> (?)

...in/my_variant_info_mixin/AlleleFrequencyMixin.java
0% <0%> (ø)
0 <0> (?)

... and 5 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update b621c7a...38d6753. Read the comment docs.

@onursumer update, thanks!


Add a Gradle task for generating a license-classifications.yml from ScanCode's license data

Make it easy to use ScanCode's license categorization in ORT.
This can make use of https://scancode-licensedb.aboutcode.org/index.json.

Just FYI, there's already @maxhbr's somewhat similar generated https://github.com/maxhbr/LDBcollector/blob/generated/ort/license-classifications.yml for ORT.

the code in https://github.com/maxhbr/LDBcollector/blob/generated/ort/license-classifications.yml contains the classification from ScanCode and other sources. (Just restricting LDBcollector to ScanCode could even produce what you look for.)

Follow-up: #66.


*: add configuration for in-memory pessimistic lock

What problem does this PR solve?
Issue Number: #11452
What is changed and how it works?
This PR adds configuration and dynamic switches for the in-memory pessimistic lock feature.
The feature itself is not implemented yet, but it will help us develop the feature without interfere the current implementation by adding the switches first.
Related changes
Docs are not updated yet. We will update doc after the feature is usable.
Check List
Tests

Unit test

Release note
None

/merge


Paginate the transfers page

Descriptive summary
If you have a lot of transfers, a single user loading this page begins to drag down the entire system.

@hackmastera A few follow-up question:

Do you have a sense of what number constitutes "a lot" so we could do some targeted testing?
Do you think datatables might work for this purpose, or would the same happen? (I believe there's a pagination plugin for datatables.) We're using them elsewhere in the system to get "automatic" sorting and filtering.
What are your and @projecthydra-labs/hyrax-ui-ux-advisors thoughts on the current state of the transfers UI? Specifically, we display that information in two places using the exact same templates -- I wonder if that's confusing, and if one view makes more sense than the other. See below.

First, there's the transfers page which you can get to via the Dashboard toolbar menu:

And then there's the "widget" in the dashboard itself:

(I'll note that they render the exact same partials, so making improvements to one would make improvements to the other.)

I think that having transfers on the dashboard for @hackmastera's use case might be a bit too much, but I think that would be up to her and her users to decide. I say paginate that thing and test it out.
Also, the dashboard concept could use some more testing to see if we're in the same place we were several years ago. Our needs for an "at a glance" dashboard to trigger actions and get bite sized info may not be useful anymore or robust in combo with the toolbar.

Just speaking from a Hyku perspective, I'd like to see all tables on the admin side of things be DataTables, both for the functionality like pagination, column sorting, and searching you get and for consistency in the user experience and visual design.
I agree with @mtribone about transfers on the dashboard possibly being too much. I see the purpose of a dashboard to be showing an overview of recent and/or important activity, not necessarily to contain duplicated functionality for convenience. You'll eventually end up with a too cluttered dashboard and have to make decisions about what features are important enough to duplicate on the dashboard and which aren't. And the user will not have a clear mental model of what is doable from the dashboard and what isn't.

@ggeisler DataTables requires all the data to be rendered to the page, (even if most of it is hidden), right?  This could potentially be millions of records, so the time to collect all that information could be too great to give the user a good experience.

@jcoyne I agree that if there are potentially that many rows, and all the data has to loaded initially, we wouldn't want to give the user that experience.
What about server-side processing mode, though? I don't have any firsthand experience implementing it, but it seems like this is an option for just this sort of case (potential of huge numbers of rows of data)? https://datatables.net/manual/data/

Some more context from me:
Only a small portion of my users were using transfers as the basis of their workflow. Due to this problem, they changed their workflow and are now doing it another way. So I don't actually have a use case here anymore; I mostly wanted it registered as an issue for the benefit of others.
When we started having the problem I did change the template feeding the dashboard to only show 'in progress' transfers, and to send users back to the dashboard when they approved a transfer. That made the dashboard for those users load in a reasonable time.
I would guess the problem started around 300 transfers; I can say for sure it existed at 500.
Y'all are right to bring the dashboard into this conversation, though; not sure if that should be a separate issue.

cc: @samvera/hyrax-repo-managers

@no-reply this makes me think of  the recent conversation about the concept of ownership we had on slack, started by this permissions group. https://docs.google.com/document/d/1LsIso-RMrHC0_bDxw9t5mwmVu8a6rHm8cF_xId9gOAM/edit
It's not a concept that is easily understood outside the context of faculty proxy deposit. It's also unclear what the implications of not transferring works are, say if a student deposited 10k works and then left the institution and yet is still the owner of those works.
So I think ownership and transfers may need some further consideration in general.

Also, I get the sense that some institutions are setting up an automatic transfer of the ownership to a manager-type role. SAIC, Ubiquity, OSU?

@julesies - correct. The Art Institute currently does not do automatic transfers in Sufia 7.2, but we are beginning to setup work on splitting up "depositor" into "depositor" and "owner" concepts by adding an owner predicate, or possibly saving some time and using the existing mechanics of proxyDepositor and depositor.

As of Hyrax 2.1 Transfers are accessed via the dashboard. Pagination seems like a good step to prevent the OP's issue. The larger issue still stands "ownership" as a concept needs some thought. Not sure when a good time to deal with this is.

Closing per discussion with repo-managers, if there is still a potential to drag the system, please let us know.


optionally exclude preset from signature

@DarthSim, I saw your response to my issue where I requested if we could exclude presets from the signature. While I understand your reasoning, I think I did not fully elaborate on our use case. So, we work with images in the public domain, so we are not really concerned with the full resolution images being accessed. What we are concerned with is the ability to send arbitrary requests to our server and overloading it (or a DOS/DDOS attack). On the other hand, we do need to get multiple formats for the same image in the browser and having to construct a signed URL server side for every case is cumbersome. So, this PR is a very narrow one with a very limited scope. Let me know if this makes sense?

Sorry, I stand by my opinion: this feature looks insecure to me, and it adds a lot of confusion in the signing process. Try to add this feature documentation to https://github.com/imgproxy/imgproxy/blob/master/docs/signing_the_url.md, and you'll see it yourself.

So, we work with images in the public domain, so we are not really concerned with the full resolution images being accessed.

Even if you don't pass any options, imgproxy will decode and encode the image. If the image is quite large and heavy to decode/encode like PNGs, that'll be a kind of attack on your server. The only way to properly protect yourself is the server-side signing of the whole path. And I don't want to add a feature that allows opening security breaches.
However, if you really need this feature, feel free to use your fork. That's the power of open source! :)

I understand your sentiment. However, I wanted to understand this a bit
better:  "Even if you don't pass any options, imgproxy will decode and
encode the image. If the image is quite large and heavy to decode/encode
like PNGs, that'll be a kind of attack on your server. The only way to
properly protect yourself is the server-side signing of the whole path. And
I don't want to add a feature that allows opening security breaches"
Since we are signing the rest of the path, attackers cannot send arbitrary
image urls to imgproxy. They can only send authorized urls with pre-defined
presets. So, I'm not sure how they can successfully attack with large
images, etc? Unless you are suggesting that they could use a large
legitimate image url and simply call imgproxy with that signed url with
different presets? But how is that different from taking an image url that
serves a large image and simply replaying it over and over again? Also,
given that we use a CDN for caching responses, most of these replay attacks
will never make it to imgproxy anyways?
On Thu, Dec 24, 2020 at 5:15 AM Sergey Alexandrovich <
<EMAIL_ADDRESS>wrote:

Sorry, I stand by my opinion: this feature looks insecure to me, and it
adds a lot of confusion in the signing process. Try to add this feature
documentation to
https://github.com/imgproxy/imgproxy/blob/master/docs/signing_the_url.md,
and you'll see it yourself.
So, we work with images in the public domain, so we are not really
concerned with the full resolution images being accessed.
Even if you don't pass any options, imgproxy will decode and encode the
image. If the image is quite large and heavy to decode/encode like PNGs,
that'll be a kind of attack on your server. The only way to properly
protect yourself is the server-side signing of the whole path. And I don't
want to add a feature that allows opening security breaches.
However, if you really need this feature, feel free to use your fork.
That's the power of open source! :)
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/imgproxy/imgproxy/pull/531#issuecomment-750835487,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AA273SUQKUXI46FWYD46ZNTSWMICJANCNFSM4U5ISLCQ
.

If you exclude the presets part from the string you sign, the signature will be valid for the same URL without presets at all. Guess you have thousands of images, that are always resized and thus their original sized versions are never cached by your CDN. An attacker grabs the URLs from your site, removes the presets parts, and starts to flood your server. imgproxy has to encode all the images in their original sizes that you don't want it to do because this takes time.
Basically, excluding presets from the signed part is not much different from a combination of disabled signature, IMGPROXY_ONLY_PRESETS, and IMGPROXY_BASE_URL/IMGPROXY_ALLOWED_SOURCES. But when you disable the signature, you realize all the consequences. Excluding presets from the signature on the other hand gives you a false sense of security.

So, the way I implemented this is that the preset can only be excluded from
the signature when IMGPROXY_ONLY_PRESETS is true. Otherwise, the full path
after the signature is expected to be signed. So, will imgproxy still allow
presets to be excluded? I may have missed that part..
On Mon, Dec 28, 2020 at 5:25 AM Sergey Alexandrovich <
<EMAIL_ADDRESS>wrote:

If you exclude the presets part from the string you sign, the signature
will be valid for the same URL without presets at all. Guess you have
thousands of images, that are always resized and thus their original sized
versions are never cached by your CDN. An attacker grabs the URLs from your
site, removes the presets parts, and starts to flood your server. imgproxy
has to encode all the images in their original sizes that you don't want it
to do because this takes time.
Basically, excluding presets from the signed part is not much different
from a combination of disabled signature, IMGPROXY_ONLY_PRESETS, and
IMGPROXY_BASE_URL/IMGPROXY_ALLOWED_SOURCES. But when you disable the
signature, you realize all the consequences. Excluding presets from the
signature on the other hand gives you a false sense of security.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/imgproxy/imgproxy/pull/531#issuecomment-751664449,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AA273STHQCDRW22KSB6CAATSXBMJRANCNFSM4U5ISLCQ
.