Raspberry PI 2B/3 and USB audio

Hans Petter Selasky hps at selasky.org
Wed Nov 28 08:46:17 UTC 2018


On 11/28/18 1:46 AM, Brian Scott wrote:
> On 27/11/18 6:38 pm, Hans Petter Selasky wrote:
>> On 11/26/18 8:47 PM, Herbert J. Skuhra wrote:
>>> Well, this USB sound card works perfectly fine on my desktop PC
>>> running FreeBSD (amd64).
>>
>> Hi,
>>
>> There is a problem in the DWC OTG USB controller driver that it cannot
>> handle the big data payload 24-bit 48KHz sampling requires.
>> Unfortunately your device has only one sample size selection.
>>
>> If you buy a USB sound device marked as "HIGH SPEED USB" it should
>> work. Yours is "spd=FULL".
>>
>> --HPS
> Just an additional data point,
> 
> This one also sounds like junk but is high speed:
> 
>      ugen0.6: <Generic USB Audio> at usbus0, cfg=0 md=HOST spd=HIGH
>      (480Mbps) pwr=ON (100mA)
> 
>        bLength = 0x0012
>        bDescriptorType = 0x0001
>        bcdUSB = 0x0200
>        bDeviceClass = 0x0000  <Probed by interface class>
>        bDeviceSubClass = 0x0000
>        bDeviceProtocol = 0x0000
>        bMaxPacketSize0 = 0x0040
>        idVendor = 0x0bda
>        idProduct = 0x4040
>        bcdDevice = 0x0000
>        iManufacturer = 0x0003  <Generic>
>        iProduct = 0x0001  <USB Audio>
>        iSerialNumber = 0x0002  <201405280001>
>        bNumConfigurations = 0x0001
> 
> But I notice that it handles both 48000 and 8000 according to the sound
> driver.
> 
>      cat /dev/sndstat
>      FreeBSD Audio Driver (64bit 2009061500/aarch64)
>      Installed devices:
>      pcm0: <USB audio> at ? kld snd_uaudio (1p:1v/1r:1v) default
>          snddev flags=0x2e2<AUTOVCHAN,BUSY,MPSAFE,REGISTERED,VPC>
>          [pcm0:play:dsp0.p0]: spd 48000, fmt 0x00200010, flags
>      0x00002100, 0x00000004
>          interrupts 0, underruns 0, feed 0, ready 0
>      [b:3072/1536/2|bs:4096/2048/2]
>          channel flags=0x2100<BUSY,HAS_VCHAN>
>          {userland} -> feeder_mixer(0x00200010) -> {hardware}
>          pcm0:play:dsp0.p0[pcm0:virtual:dsp0.vp0]: spd 8000, fmt
>      0x00100008, flags 0x10000000, 0x00000000
>          interrupts 0, underruns 0, feed 0, ready 0 [b:0/0/0|bs:0/0/0]
>          channel flags=0x10000000<VIRTUAL>
>          {userland} -> feeder_root(0x00000000) -> {hardware}
>          [pcm0:record:dsp0.r0]: spd 48000,fmt 0x00200010/0x00210000,
>      flags 0x00002100, 0x00000007
>          interrupts 0, overruns 0, feed 0, hfree 4608, sfree 4096
>      [b:4608/2304/2|bs:4096/2048/2]
>          channel flags=0x2100<BUSY,HAS_VCHAN>
>          {hardware} -> feeder_root(0x00210000) ->
>      feeder_format(0x00210000 -> 0x00200010) -> feeder_mixer(0x00200010)
>      -> {userland}
>          pcm0:record:dsp0.r0[pcm0:virtual:dsp0.vr0]: spd 8000, fmt
>      0x00100008, flags 0x10000000, 0x00000000
>          interrupts 0, overruns 0, feed 0, hfree 0, sfree 0
>      [b:0/0/0|bs:0/0/0]
>          channel flags=0x10000000<VIRTUAL>
>          {hardware} -> feeder_root(0x00000000) -> {userland}
>      No devices installed from userspace.
> 
> Output sounds like rubbish with both 8000 speed stuff sent directly to
> /dev/dsp using cat and higher quality stuff sent via sox play.
> 
> It could also just be a junk piece of hardware from my local electronics
> shop.

Which version of FreeBSD is this?

Can you show dmesg?

--HPS



More information about the freebsd-arm mailing list