[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