[uaudio] M-Audio Fast Track Ultra is not recognized, where to start ?

Olivier Smedts olivier at gid0.org
Tue Jun 14 22:33:42 UTC 2011


2011/6/15 Olivier Smedts <olivier at gid0.org>:
> Hello,
>
> 2011/6/14 Hans Petter Selasky <hselasky at c2i.net>:
>> Hi,
>>
>> Try to enable uaudio debugging before plugging in the device:
>>
>> sysctl hw.usb.uaudio.debug=15
>
> Thanks for the suggestion (and all your work on the usb stack BTW).
> After turning on debugging on uaudio and ehci :
> Jun 15 00:09:10 q kernel: ehci_root_intr: port 1 changed
> Jun 15 00:09:10 q kernel: ehci_set_hw_power:
> Jun 15 00:09:11 q kernel: ehci_roothub_exec: ehci after reset, status=0x00001005
> Jun 15 00:09:11 q kernel: ehci_roothub_exec: ehci port 1 reset, status
> = 0x00001005
> Jun 15 00:09:11 q root: Unknown USB device: vendor 0x0763 product
> 0x2080 bus uhub7
> Jun 15 00:09:11 q kernel: ehci_set_hw_power:
> Jun 15 00:09:11 q kernel: ehci_set_hw_power: Async is active
> Jun 15 00:09:11 q kernel: ugen7.3: <M-Audio> at usbus7
> Jun 15 00:09:11 q kernel: uaudio0: <Fast Track Ultra> on usbus7
> Jun 15 00:09:11 q kernel: uaudio_mixer_fill_info: invalid Audio Control header
> Jun 15 00:09:11 q kernel: uaudio_attach: audio rev 0.00
> Jun 15 00:09:11 q kernel: uaudio_attach: 0 mixer controls
> Jun 15 00:09:11 q kernel: uaudio0: No playback!
> Jun 15 00:09:11 q kernel: uaudio0: No recording!
> Jun 15 00:09:11 q kernel: umidi_bulk_read_callback: start
> Jun 15 00:09:11 q kernel: uaudio0: MIDI sequencer
> Jun 15 00:09:11 q kernel: ehci_set_hw_power:
> Jun 15 00:09:11 q kernel: uaudio_attach: doing child attach
> Jun 15 00:09:11 q kernel: ehci_set_hw_power: Async is active
> Jun 15 00:09:11 q kernel: pcm4: <USB audio> on uaudio0
> Jun 15 00:09:11 q kernel: uaudio_attach_sub: emulating master volume
> Jun 15 00:09:11 q kernel: uaudio_mixer_init_sub:
> Jun 15 00:09:11 q root: Unknown USB device: vendor 0x0763 product
> 0x2080 bus uhub7
> Jun 15 00:09:11 q kernel: ehci_set_hw_power:
> Jun 15 00:09:11 q kernel: ehci_set_hw_power: Async is active
> Jun 15 00:09:14 q kernel: ehci_set_hw_power:
> Jun 15 00:09:14 q kernel: ehci_set_hw_power:
> Jun 15 00:09:14 q kernel: ehci_set_hw_power: Async is active
> Jun 15 00:09:18 q kernel: ehci_set_hw_power:
> Jun 15 00:09:18 q kernel: ehci_set_hw_power:
> Jun 15 00:09:18 q kernel: ehci_set_hw_power: Async is active
> Jun 15 00:09:22 q kernel: ehci_set_hw_power:
> Jun 15 00:09:22 q kernel: ehci_set_hw_power:
> Jun 15 00:09:22 q kernel: ehci_set_hw_power: Async is active
> Jun 15 00:09:26 q kernel: ehci_set_hw_power:
> Jun 15 00:09:26 q kernel: ehci_set_hw_power:
> Jun 15 00:09:26 q kernel: ehci_set_hw_power: Async is active
> Jun 15 00:09:27 q kernel: ehci_root_intr: port 1 changed
> Jun 15 00:09:27 q kernel: ehci_set_hw_power:
> Jun 15 00:09:27 q kernel: umidi_bulk_read_callback: error=USB_ERR_STALLED
> Jun 15 00:09:27 q kernel: ehci_set_hw_power: Async is active
> Jun 15 00:09:27 q kernel: ehci_set_hw_power:
> Jun 15 00:09:27 q kernel: ugen7.3: <M-Audio> at usbus7 (disconnected)
> Jun 15 00:09:27 q kernel: ehci_set_hw_power: Async is active
> Jun 15 00:09:27 q kernel: uaudio0: at uhub7, port 1, addr 3 (disconnected)
> Jun 15 00:09:27 q kernel: uaudio_mixer_uninit_sub:
> Jun 15 00:09:27 q kernel: pcm4: detached
> Jun 15 00:09:27 q kernel: umidi_bulk_read_callback: error=USB_ERR_CANCELLED
> Jun 15 00:09:28 q kernel: ehci_set_hw_power:
>
> The last errors are here because I turned off the device. I think
> "uaudio_mixer_fill_info: invalid Audio Control header" is interesting.
> Any way to dump this ?

To reply at my own question, I saw this in src/sys/dev/sound/usb/uaudio.c :
        if ((acdp->bLength < sizeof(*acdp)) ||
            (acdp->bDescriptorType != UDESC_CS_INTERFACE) ||
            (acdp->bDescriptorSubtype != UDESCSUB_AC_HEADER)) {
                DPRINTF("invalid Audio Control header\n");
                goto done;
        }

And I tried :
# usbconfig -u 7 -a 3 dump_device_desc
ugen7.3: <Fast Track Ultra M-Audio> at usbus7, cfg=0 md=HOST spd=HIGH
(480Mbps) pwr=ON

  bLength = 0x0012
  bDescriptorType = 0x0001
  bcdUSB = 0x0200
  bDeviceClass = 0x0000
  bDeviceSubClass = 0x0000
  bDeviceProtocol = 0x0000
  bMaxPacketSize0 = 0x0040
  idVendor = 0x0763
  idProduct = 0x2080
  bcdDevice = 0x0151
  iManufacturer = 0x0001  <M-Audio>
  iProduct = 0x0002  <Fast Track Ultra>
  iSerialNumber = 0x0000  <no string>
  bNumConfigurations = 0x0001

# usbconfig -u 7 -a 3 dump_all_config_desc
ugen7.3: <Fast Track Ultra M-Audio> at usbus7, cfg=0 md=HOST spd=HIGH
(480Mbps) pwr=ON


 Configuration index 0

    bLength = 0x0009
    bDescriptorType = 0x0002
    wTotalLength = 0x0154
    bNumInterfaces = 0x0005
    bConfigurationValue = 0x0001
    iConfiguration = 0x0000  <no string>
    bmAttributes = 0x0080
    bMaxPower = 0x00f9

    Additional Descriptor

    bLength = 0x08
    bDescriptorType = 0x0b
    bDescriptorSubType = 0x00
     RAW dump:
     0x00 | 0x08, 0x0b, 0x00, 0x05, 0xff, 0x01, 0x00, 0x02


    Interface 0
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0000
      bAlternateSetting = 0x0000
      bNumEndpoints = 0x0000
      bInterfaceClass = 0x00ff
      bInterfaceSubClass = 0x0001
      bInterfaceProtocol = 0x0000
      iInterface = 0x0002  <Fast Track Ultra>

      Additional Descriptor

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


      Additional Descriptor

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


      Additional Descriptor

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

      Additional Descriptor

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


      Additional Descriptor

      bLength = 0x09
      bDescriptorType = 0x24
      bDescriptorSubType = 0x03
       RAW dump:
       0x00 | 0x09, 0x24, 0x03, 0x04, 0x03, 0x06, 0x00, 0x03,
       0x08 | 0x00


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


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

      Additional Descriptor

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


      Additional Descriptor

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


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

      Additional Descriptor

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


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


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


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

      Additional Descriptor

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


      Additional Descriptor

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


     Endpoint 0
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0081  <IN>
        bmAttributes = 0x0005  <ASYNC-ISOCHRONOUS>
        wMaxPacketSize = 0x0138
        bInterval = 0x0001
        bRefresh = 0x0000
        bSynchAddress = 0x0000

      Additional Descriptor

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



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

      Additional Descriptor

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


      Additional Descriptor

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


     Endpoint 0
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0081  <IN>
        bmAttributes = 0x0005  <ASYNC-ISOCHRONOUS>
        wMaxPacketSize = 0x0138
        bInterval = 0x0001
        bRefresh = 0x0000
        bSynchAddress = 0x0000

      Additional Descriptor

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



    Interface 3
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0003
      bAlternateSetting = 0x0000
      bNumEndpoints = 0x0002
      bInterfaceClass = 0x0001
      bInterfaceSubClass = 0x0003
      bInterfaceProtocol = 0x0000
      iInterface = 0x0005  <Fast Track Ultra>

      Additional Descriptor

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


      Additional Descriptor

      bLength = 0x06
      bDescriptorType = 0x24
      bDescriptorSubType = 0x02
       RAW dump:
       0x00 | 0x06, 0x24, 0x02, 0x01, 0x01, 0x00


      Additional Descriptor

      bLength = 0x06
      bDescriptorType = 0x24
      bDescriptorSubType = 0x02
       RAW dump:
       0x00 | 0x06, 0x24, 0x02, 0x02, 0x02, 0x00


      Additional Descriptor

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


      Additional Descriptor

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


     Endpoint 0
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0007  <OUT>
        bmAttributes = 0x0002  <BULK>
        wMaxPacketSize = 0x0008
        bInterval = 0x0008
        bRefresh = 0x0000
        bSynchAddress = 0x0000

      Additional Descriptor

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


     Endpoint 1
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0087  <IN>
        bmAttributes = 0x0002  <BULK>
        wMaxPacketSize = 0x0008
        bInterval = 0x0000
        bRefresh = 0x0000
        bSynchAddress = 0x0000

      Additional Descriptor

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



    Interface 4
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0004
      bAlternateSetting = 0x0000
      bNumEndpoints = 0x0000
      bInterfaceClass = 0x00fe
      bInterfaceSubClass = 0x0001
      bInterfaceProtocol = 0x0000
      iInterface = 0x0007  <M-Audio DFU>

      Additional Descriptor

      bLength = 0x09
      bDescriptorType = 0x21
      bDescriptorSubType = 0x01
       RAW dump:
       0x00 | 0x09, 0x21, 0x01, 0xd0, 0x07, 0x00, 0x04, 0x10,
       0x08 | 0x01



-- 
Olivier Smedts                                                 _
                                        ASCII ribbon campaign ( )
e-mail: olivier at gid0.org        - against HTML email & vCards  X
www: http://www.gid0.org    - against proprietary attachments / \

  "Il y a seulement 10 sortes de gens dans le monde :
  ceux qui comprennent le binaire,
  et ceux qui ne le comprennent pas."


More information about the freebsd-multimedia mailing list