USB sound devices with FreeBSD-CURRENT

Graham Perrin grahamperrin at gmail.com
Sun Sep 13 09:21:56 UTC 2020


I'm confused about use of USB devices for audio (primarily with Firefox 
and Chromium).

Re: 
<https://forums.freebsd.org/threads/switching-dsp-devices-on-the-fly.69773/#post-419100> 
under 'switching dsp-devices on-the-fly'

 > … hw.snd.default_unit to "0", which will automatically assign
 > hw.snd.default_unit to the newly-attached devices. …"

– so in sysctl.conf I experimented with:

hw.snd.default_unit="0"

– and after signing in (to KDE Plasma) I attach first the USB microphone 
(Alctron USB700 Alctron USB700) then a USB headset (SteelSeries 
SteelSeries Siberia 350).

virtual_oss and sndiod are enabled.

With this setup, as far as I can tell:

1. Chromium simply does not play AV content e.g. 
<https://www.ted.com/talks/james_geary_metaphorically_speaking> – after 
a click to play, there's a moment of visual motion but no playback

2. if Firefox media.cubeb.backend set to oss then behaviour is the same 
as Chromium

3. if Firefox media.cubeb.backend is not set (audio backend defaults to 
pulse-rust) then playback occurs through IDT 92HD81B1X (Analog) – not USB.

----

root at momh167-gjp4-8570p:~ # date ; uname -v
Sun Sep 13 08:25:39 BST 2020
FreeBSD 13.0-CURRENT #64 r365364: Sun Sep  6 01:38:18 BST 2020 
root at momh167-gjp4-8570p:/usr/obj/usr/src/amd64.amd64/sys/GENERIC-NODEBUG
root at momh167-gjp4-8570p:~ # service virtual_oss start ; service sndiod 
start ; service virtual_oss status ; service sndiod status ; cat 
/dev/sndstat ; grep " -f /dev/" /usr/local/etc/rc.d/virtual_oss | grep 
-v \# ; sysctl hw.snd.default_unit
Starting Virtual OSS config dsp ...hw.snd.basename_clone: 0 -> 0
  done
Starting sndiod.
virtual_oss is running as pid 5688.
sndiod is running as pid 5697.
Installed devices:
pcm0: <ATI R6xx (HDMI)> (play) default
pcm1: <IDT 92HD81B1X (Analog 2.0+HP/2.0)> (play/rec)
pcm2: <IDT 92HD81B1X (Analog)> (play/rec)
pcm3: <USB audio> (rec)
pcm4: <USB audio> (play/rec)
Installed devices from userspace:
dsp: <Virtual OSS> (play/rec)
   -f /dev/dsp0 \
hw.snd.default_unit: 0
root at momh167-gjp4-8570p:~ #

----

In addition, as far as I can tell:

4. if I remove then reconnect the two USB devices, the devices are no 
longer driven

* neither device 'lights up'

* playback in Firefox (with oss) and Chromium is visible, but no longer 
audible on any device

* playback in Firefox (with puse-rust) is visible, but no longer audible 
on any device.

----

root at momh167-gjp4-8570p:~ # grep Alctron /var/log/messages
Sep 13 06:17:08 momh167-gjp4-8570p kernel: ugen0.7: <Alctron USB700 
Alctron USB700> at usbus0 (disconnected)
Sep 13 06:19:07 momh167-gjp4-8570p kernel: ugen0.3: <Alctron USB700 
Alctron USB700> at usbus0
Sep 13 06:19:07 momh167-gjp4-8570p kernel: uaudio0: <Alctron USB700 
Alctron USB700, class 0/0, rev 1.10/1.00, addr 11> on usbus0
Sep 13 06:19:07 momh167-gjp4-8570p kernel: uhid1: <Alctron USB700 
Alctron USB700, class 0/0, rev 1.10/1.00, addr 11> on usbus0
Sep 13 09:13:08 momh167-gjp4-8570p kernel: ugen0.5: <Alctron USB700 
Alctron USB700> at usbus0
Sep 13 09:13:08 momh167-gjp4-8570p kernel: uaudio1: <Alctron USB700 
Alctron USB700, class 0/0, rev 1.10/1.00, addr 4> on usbus0
Sep 13 09:13:08 momh167-gjp4-8570p kernel: uhid0: <Alctron USB700 
Alctron USB700, class 0/0, rev 1.10/1.00, addr 4> on usbus0
Sep 13 09:48:51 momh167-gjp4-8570p kernel: ugen0.5: <Alctron USB700 
Alctron USB700> at usbus0 (disconnected)
root at momh167-gjp4-8570p:~ # grep SteelSeries /var/log/messages
Sep 13 06:17:22 momh167-gjp4-8570p kernel: ugen0.6: <SteelSeries 
SteelSeries Siberia 350> at usbus0 (disconnected)
Sep 13 06:17:51 momh167-gjp4-8570p kernel: ugen0.6: <SteelSeries 
SteelSeries Siberia 350> at usbus0
Sep 13 06:17:51 momh167-gjp4-8570p kernel: uaudio0: <SteelSeries 
SteelSeries Siberia 350, class 0/0, rev 1.10/2.08, addr 10> on usbus0
Sep 13 06:19:00 momh167-gjp4-8570p kernel: ugen0.6: <SteelSeries 
SteelSeries Siberia 350> at usbus0 (disconnected)
Sep 13 06:19:12 momh167-gjp4-8570p kernel: ugen0.7: <SteelSeries 
SteelSeries Siberia 350> at usbus0
Sep 13 06:19:12 momh167-gjp4-8570p kernel: uaudio1: <SteelSeries 
SteelSeries Siberia 350, class 0/0, rev 1.10/2.08, addr 13> on usbus0
Sep 13 09:13:08 momh167-gjp4-8570p kernel: ugen0.4: <SteelSeries 
SteelSeries Siberia 350> at usbus0
Sep 13 09:13:08 momh167-gjp4-8570p kernel: uaudio0: <SteelSeries 
SteelSeries Siberia 350, class 0/0, rev 1.10/2.08, addr 3> on usbus0
root at momh167-gjp4-8570p:~ # tail /var/log/messages
Sep 13 10:11:39 momh167-gjp4-8570p kernel: pcm4: unregister: mixer busy
Sep 13 10:11:39 momh167-gjp4-8570p kernel: pcm4: Waiting for sound 
application to exit!
Sep 13 10:11:39 momh167-gjp4-8570p kernel: pcm4: unregister: mixer busy
Sep 13 10:11:39 momh167-gjp4-8570p kernel: pcm4: Waiting for sound 
application to exit!
Sep 13 10:11:39 momh167-gjp4-8570p kernel: pcm4: unregister: mixer busy
Sep 13 10:11:39 momh167-gjp4-8570p kernel: pcm4: Waiting for sound 
application to exit!
Sep 13 10:11:39 momh167-gjp4-8570p kernel: pcm4: unregister: mixer busy
Sep 13 10:11:39 momh167-gjp4-8570p kernel: pcm4: Waiting for sound 
application to exit!
Sep 13 10:11:39 momh167-gjp4-8570p kernel: pcm4: unregister: mixer busy
Sep 13 10:11:39 momh167-gjp4-8570p kernel: pcm4: Waiting for sound 
application to exit!
root at momh167-gjp4-8570p:~ #

----

Clearly I'm doing something wrong.

If on-the-fly use of USB audio devices is not possible, then must I keep 
the devices connected whilst I'm signed in to the desktop environment?


More information about the freebsd-current mailing list