Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 21 Apr 2013 11:37:52 -0700
From:      Craig Leres <leres@ee.lbl.gov>
To:        Hans Petter Selasky <hps@bitfrost.no>
Cc:        freebsd-multimedia@freebsd.org
Subject:   Re: Dragonfly USB DAC under 9.1-RELEASE
Message-ID:  <51743200.7010209@ee.lbl.gov>
In-Reply-To: <51740C56.3000907@bitfrost.no>
References:  <51732A63.9010001@ee.lbl.gov> <51740C56.3000907@bitfrost.no>

next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------080104070105020605060303
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

First let me say that I did a quick install of FreeBSD 10.0-CURRENT
(r249439) onto a spare system yesterday and was able to play various
source material with no glitches. Then I back ported the 10.0-CURRENT
/sys/dev/sound tree (r249715) to my 9.1-RELEASE system and this solved
my remaining audio issues. There were bug fixes but it looks like the
bulk of the changes add support for USB Audio v2.0.

On 04/21/13 08:57, Hans Petter Selasky wrote:
> There are multiple options for debugging this issue.
> 
> 1) Look at the usbdump utility for dumping the data communication for
> your device:
> 
> usbdump -i usbusX -f Y -s 65536

I did find usbdump earlier but don't know enough about usb audio to be
able to identify any problems.

> I suspect your device uses rate adaption, and that it does not work
> properly.

The Dragonfly supports 44.1, 48, 88.2 and 96 and one goal of mine is to
not be doing any additional conversion so I'm hoping it's not doing that!

> What does:
> 
> usbconfig -d X.Y dump_curr_config_desc
> 
> Say?

Attached. I also installed usbutils and have attached output from "lsusb
-v".

> See also:
> 
> sysctl hw.usb.uaudio.debug=15

hw.usb.uaudio.debug was very helpful the original sample rate mismatch
problem.

One thing that's annoying is the way dev/sound/usb/uaudio.c is
structured, the sample rate is programmed in the Dragonfly only when the
device is inserted; there's no way to change rates once it's plugged in.

Thanks for the suggestions.

		Craig

--------------080104070105020605060303
Content-Type: text/plain; charset=us-ascii;
 name="usbconfig.txt"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename="usbconfig.txt"

ugen1.2: <AudioQuest DragonFly AudioQuest inc.> at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON


 Configuration index 0

    bLength = 0x0009 
    bDescriptorType = 0x0002 
    wTotalLength = 0x0083 
    bNumInterfaces = 0x0002 
    bConfigurationValue = 0x0001 
    iConfiguration = 0x0000  <no string>
    bmAttributes = 0x0080 
    bMaxPower = 0x0064 

    Interface 0
      bLength = 0x0009 
      bDescriptorType = 0x0004 
      bInterfaceNumber = 0x0000 
      bAlternateSetting = 0x0000 
      bNumEndpoints = 0x0000 
      bInterfaceClass = 0x0001 
      bInterfaceSubClass = 0x0001 
      bInterfaceProtocol = 0x0000 
      iInterface = 0x0000  <no string>

      Additional Descriptor

      bLength = 0x09
      bDescriptorType = 0x24
      bDescriptorSubType = 0x01
       RAW dump: 
       0x00 | 0x09, 0x24, 0x01, 0x00, 0x01, 0x2b, 0x00, 0x01, 
       0x08 | 0x01

      Additional Descriptor

      bLength = 0x0c
      bDescriptorType = 0x24
      bDescriptorSubType = 0x02
       RAW dump: 
       0x00 | 0x0c, 0x24, 0x02, 0x05, 0x01, 0x01, 0x00, 0x02, 
       0x08 | 0x03, 0x00, 0x00, 0x00


      Additional Descriptor

      bLength = 0x0d
      bDescriptorType = 0x24
      bDescriptorSubType = 0x06
       RAW dump: 
       0x00 | 0x0d, 0x24, 0x06, 0x07, 0x05, 0x02, 0x01, 0x00, 
       0x08 | 0x02, 0x00, 0x02, 0x00, 0x00


      Additional Descriptor

      bLength = 0x09
      bDescriptorType = 0x24
      bDescriptorSubType = 0x03
       RAW dump: 
       0x00 | 0x09, 0x24, 0x03, 0x08, 0x01, 0x03, 0x00, 0x07, 
       0x08 | 0x00


    Interface 1
      bLength = 0x0009 
      bDescriptorType = 0x0004 
      bInterfaceNumber = 0x0001 
      bAlternateSetting = 0x0000 
      bNumEndpoints = 0x0000 
      bInterfaceClass = 0x0001 
      bInterfaceSubClass = 0x0002 
      bInterfaceProtocol = 0x0000 
      iInterface = 0x0000  <no string>


    Interface 1 Alt 1
      bLength = 0x0009 
      bDescriptorType = 0x0004 
      bInterfaceNumber = 0x0001 
      bAlternateSetting = 0x0001 
      bNumEndpoints = 0x0002 
      bInterfaceClass = 0x0001 
      bInterfaceSubClass = 0x0002 
      bInterfaceProtocol = 0x0000 
      iInterface = 0x0000  <no string>

      Additional Descriptor

      bLength = 0x07
      bDescriptorType = 0x24
      bDescriptorSubType = 0x01
       RAW dump: 
       0x00 | 0x07, 0x24, 0x01, 0x05, 0x01, 0x01, 0x00


      Additional Descriptor

      bLength = 0x14
      bDescriptorType = 0x24
      bDescriptorSubType = 0x02
       RAW dump: 
       0x00 | 0x14, 0x24, 0x02, 0x01, 0x02, 0x03, 0x18, 0x04, 
       0x08 | 0x44, 0xac, 0x00, 0x80, 0xbb, 0x00, 0x88, 0x58, 
       0x10 | 0x01, 0x00, 0x77, 0x01


     Endpoint 0
        bLength = 0x0009 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0001  <OUT>
        bmAttributes = 0x0005  <ASYNC-ISOCHRONOUS>
        wMaxPacketSize = 0x024c 
        bInterval = 0x0001 
        bRefresh = 0x0000 
        bSynchAddress = 0x0083 

      Additional Descriptor

      bLength = 0x07
      bDescriptorType = 0x25
      bDescriptorSubType = 0x01
       RAW dump: 
       0x00 | 0x07, 0x25, 0x01, 0x01, 0x00, 0x00, 0x00


     Endpoint 1
        bLength = 0x0009 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0083  <IN>
        bmAttributes = 0x0001  <ISOCHRONOUS>
        wMaxPacketSize = 0x0003 
        bInterval = 0x0001 
        bRefresh = 0x0005 
        bSynchAddress = 0x0000 




--------------080104070105020605060303
Content-Type: text/plain; charset=us-ascii;
 name="lsusb.txt"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename="lsusb.txt"


Bus /dev/usb Device /dev/ugen1.2: ID 21b4:0081  
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0         8
  idVendor           0x21b4 
  idProduct          0x0081 
  bcdDevice            1.0c
  iManufacturer           1 AudioQuest inc.
  iProduct                2 AudioQuest DragonFly
  iSerial                 3 (C) 2011 Wavelength Audio, ltd.
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength          131
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              200mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      1 Control Device
      bInterfaceProtocol      0 
      iInterface              0 
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      1 (HEADER)
        bcdADC               1.00
        wTotalLength           43
        bInCollection           1
        baInterfaceNr( 0)       1
      AudioControl Interface Descriptor:
        bLength                12
        bDescriptorType        36
        bDescriptorSubtype      2 (INPUT_TERMINAL)
        bTerminalID             5
        wTerminalType      0x0101 USB Streaming
        bAssocTerminal          0
        bNrChannels             2
        wChannelConfig     0x0003
          Left Front (L)
          Right Front (R)
        iChannelNames           0 
        iTerminal               0 
      AudioControl Interface Descriptor:
        bLength                13
        bDescriptorType        36
        bDescriptorSubtype      6 (FEATURE_UNIT)
        bUnitID                 7
        bSourceID               5
        bControlSize            2
        bmaControls( 0)      0x01
        bmaControls( 0)      0x00
          Mute
        bmaControls( 1)      0x02
        bmaControls( 1)      0x00
          Volume
        bmaControls( 2)      0x02
        bmaControls( 2)      0x00
          Volume
        iFeature                0 
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (OUTPUT_TERMINAL)
        bTerminalID             8
        wTerminalType      0x0301 Speaker
        bAssocTerminal          0
        bSourceID               7
        iTerminal               0 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0 
      iInterface              0 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       1
      bNumEndpoints           2
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      AudioStreaming Interface Descriptor:
        bLength                 7
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink           5
        bDelay                  1 frames
        wFormatTag              1 PCM
      AudioStreaming Interface Descriptor:
        bLength                20
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bNrChannels             2
        bSubframeSize           3
        bBitResolution         24
        bSamFreqType            4 Discrete
        tSamFreq[ 0]        44100
        tSamFreq[ 1]        48000
        tSamFreq[ 2]        88200
        tSamFreq[ 3]        96000
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x024c  1x 588 bytes
        bInterval               1
        bRefresh                0
        bSynchAddress         131
        AudioControl Endpoint Descriptor:
          bLength                 7
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x01
            Sampling Frequency
          bLockDelayUnits         0 Undefined
          wLockDelay              0 Undefined
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0003  1x 3 bytes
        bInterval               1
        bRefresh                5
        bSynchAddress           0
Device Status:     0x0001
  Self Powered

--------------080104070105020605060303--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?51743200.7010209>