USB uaudio soundcards question

Barry Bouwsma freebsd-misuser at
Wed Dec 1 01:29:32 PST 2004

[drop me from any replies and I'll catch up from the archives]

Mister Improper cannot resist the urge to followup to himself,
breaching all rules of netiquette!  Such bad form!  Ugh!  Pfui!
Way back on Sun, 24 Oct 2004 22:08:45 +0200 (CEST) I asked:

> Can anyone say anything about available external USB-connected
> soundcards, like whether I can expect them to appear as a normal
> uaudio device

> in shops too, as well as a Hercules Muse knob that supposedly
> also works on a Mac as only 2-channel, so may well work on BSD...

Well, I found the Big Knob irresistable (read: reduced in price)
so I thought I'd give it a try.  It works, with the following

It shows up as both a uaudio and a uhid device, and to some
extent, ``Just Works'' for me.

It does not attach to an EHCI (USB2) controller, but instead to
a USB1.1 controller -- still, in spite of the packaging blurb of
requiring 500MHz or higher, my lowly 75MHz machine has no problems
playing through it.  And remaining more than mostly 90% idle.
Which is not meant as a request for donation of a faster machine
(with lots more PCI slots), but I won't turn one down either.

There are issues with my OHCI source code that cause playback to
stop after 10 to 13 minutes; this is not an issue with UHCI and
playback for several hours -- nor did I notice this problem with
OHCI when booted into NetBSD.  It'll probably be a non-issue soon.

My FreeBSD source makes it appear as a fixed level single playback
device.  Under NetBSD, it is possible to adjust the playback level,
and there appear more than a single device.  In addition, NetBSD
has a `uhidctl' utility, which I don't know if something comparable
is present in FreeBSD and related (DragonFly, ...) which allows me
to write a trivial script to match rotating the Big Knob to an
increase or decrease in playback level, or to match pushing The
Knob to muting/unmuting the audio.  So there appears to be nothing
proprietary standing in the way of the BSDen for simple operation.

NetBSD gives me much more control over what I can do with the
device than what I've found under FreeBSD, but this is somewhat
to be expected.  I haven't played extensively with NetBSD to see
what it can do (such as playback up to 5.1 audio, or recording
from various sources) that is not yet available to FreeBSD.

I didn't think to check this with NetBSD, as all my audio samples
are at 48kHz samplerate, but attempts to use a lower rate for
playback with FreeBSD did not work well at all:  the pitch tries
to remain the same as the samples are stretched to an extended
playback time.  No terrifically big deal for me, but could be a
show-stopper for others.  Again, I need to see if this is the
same under NetBSD, and if it's a hardware limitation, or something
in the uaudio code somewhere.  I hope for the latter.

I noticed that when playing over UHCI, the first fraction of a
second would be repeated at the beginning of playback.  Ah, this
also affects OHCI.  I'll need to try NetBSD again.  Perhaps this
phenomenon is related to the FreeBSD 4-and-up habit I've noticed
that opening/closing/ioctl'ing one audio device causes others to
lose a fraction of a second when recording, or stutter briefly
on playback, if it's not present with NetBSD.

Anyway, with no free PCI slots on any of my machines, this
Hercules Gamesurround Pocket Muse USB 5.1 Sound Card works, and
seems that it should be possible to improve FreeBSD's support
for additional features of the device reasonably well -- that
is, for my purposes, I'm free of any proprietary requirements.
That is to say, it's compatible with the BSDen and I don't have
a shiny paperweight.  Although it does function commendably as
a paperweight as well.  Truly a multitasking device, it be.

I may say a bit more after playing more with NetBSD and making
notes, should someone be in the process of contemplating merging
more of the NetBSD USB support into FreeBSD, or something.  And
I may say a bit about performance beyond `works/don't work'...
More on that sometime later.

Oh, and it may make a difference -- my USB kernel module source is
based as much as possible on -current, though my kernel is recent
4.x and my userland much older...  Therefore what I say shouldn't
be read to mean ``it WILL work'' but ``it CAN work, if you're in
luck'' for a given FreeBSD release.  Or whatever.

barry bouwsma

More information about the freebsd-multimedia mailing list