[alsa-devel] Digidesign Mbox2 - usb support

Damien Zammit damien.zammit at gmail.com
Sun Aug 16 18:44:59 CEST 2009


Using the following patch to usbquirks.h, I was able to get MIDI in
and out working on the Digidesign Mbox2!!
The capture/playback PCMs are also configured with alsa, but the
status on these are "closed".
I am guessing I need to snoop the commands on interface 1 (control
device) to enable them.
Also, there is some "magic" needed to initialise the device which I
have captured.
It seems that the device needs to be loaded with altsettings = 0 on
interfaces 1-5 first,
then some setup codes are transmitted, and finally the following
altsettings are used.

dczammit at flop:/proc/asound$ ls
card0  cards  devices  hwdep  M2  modules  pcm  seq  timers  version

dczammit at flop:/proc/asound$ cat cards
 0 [M2             ]: USB-Audio - Mbox 2
                      Digidesign Mbox 2 at usb-0000:00:1d.1-1, full speed

dczammit at flop:/proc/asound$ cat devices
  0: [ 0]   : control
  1:        : sequencer
  8: [ 0- 0]: raw midi
 16: [ 0- 0]: digital audio playback
 24: [ 0- 0]: digital audio capture
 33:        : timer

dczammit at flop:/proc/asound$ cat pcm
00-00: USB Audio : USB Audio : playback 1 : capture 1

dczammit at flop:/proc/asound$ cat timers
G0: system timer : 1000.000us (10000000 ticks)
G1: RTC timer : 976.562us (100000000 ticks)
P0-0-0: PCM playback 0-0-0 : SLAVE
P0-0-1: PCM capture 0-0-1 : SLAVE

dczammit at flop:/proc/asound/M2$ ls
id  midi0  pcm0c  pcm0p  stream0  usbbus  usbid

dczammit at flop:/proc/asound/M2$ cat midi0
Mbox 2

Output 0
  Tx bytes     : 212
Input 0
  Rx bytes     : 314

dczammit at flop:/proc/asound/M2$ cat stream0
Digidesign Mbox 2 at usb-0000:00:1d.1-1, full speed : USB Audio

Playback:
  Status: Stop
  Interface 3
    Altset 3
    Format: 0x20
    Channels: 2
    Endpoint: 4 OUT (ASYNC)
    Rates: 8000 - 48000 (continuous)

Capture:
  Status: Stop
  Interface 5
    Altset 3
    Format: 0x20
    Channels: 2
    Endpoint: 6 IN (SYNC)
    Rates: 8000 - 48000 (continuous)

dczammit at flop:/proc/asound/seq$  aplay -Ddefault:CARD=M2 -f S16_LE
~/Desktop/tunes/dzjam.wav
Playing WAVE '/home/dczammit/Desktop/tunes/dzjam.wav' : Signed 16 bit
Little Endian, Rate 44100 Hz, Stereo
Segmentation fault


Please find the quirk below and the magic init codes.

##################################
{
	USB_DEVICE(0x0dba, 0x3000),
	.driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
		.vendor_name = "Digidesign",
		.product_name = "Mbox 2",
		.ifnum = QUIRK_ANY_INTERFACE,
		.type = QUIRK_COMPOSITE,
		.data = (const struct snd_usb_audio_quirk[]) {
			{
				.ifnum = 0,
				.type = QUIRK_IGNORE_INTERFACE
			},
			{ /* Audio control interface - sets the sampling rate? - no idea
how this works
                             Possibly also enables the
capture/playback using a command? */
				.ifnum = 1,
				.type = QUIRK_IGNORE_INTERFACE
			},
			{
				.ifnum = 2,
				.type = QUIRK_IGNORE_INTERFACE
			},
			{
                                .ifnum = 3,
                                .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                .data = & (const struct audioformat) {
                                        .format = SNDRV_PCM_FORMAT_S24_3LE,
                                        .channels = 2,
                                        .iface = 3,
                                        .altsetting = 3, /* 0 is also
available, but has no endpoints */
                                        .altset_idx = 1,
                                        .endpoint = 0x04, /* OUT or
0x84 IN (attr 1) */
                                        .ep_attr = 0x05,
                                        .rates = SNDRV_PCM_RATE_CONTINUOUS,
                                        .rate_min = 8000,
                                        .rate_max = 48000
                                }
                        },
			{
                                .ifnum = 4,
                        	.type = QUIRK_IGNORE_INTERFACE
			},
			{
                                .ifnum = 5,
                                .type = QUIRK_AUDIO_FIXED_ENDPOINT,
                                .data = & (const struct audioformat) {
                                        .format = SNDRV_PCM_FORMAT_S24_3LE,
                                        .channels = 2,
                                        .iface = 5,
                                        .altsetting = 3,
                                        .altset_idx = 1,
                                        .endpoint = 0x86, /* IN */
                                        .ep_attr = 0x0D,
                                        .rates = SNDRV_PCM_RATE_CONTINUOUS,
                                        .rate_min = 8000,
                                        .rate_max = 48000
                                }
                        },
			{
				.ifnum = 6,
				.type = QUIRK_MIDI_FIXED_ENDPOINT,
				.data = & (const struct snd_usb_midi_endpoint_info) {
					.out_ep = 2,
					.out_interval = 0x00,
					.in_ep = 2,
					.in_interval = 0x00,
					.out_cables = 0x0001,
					.in_cables = 0x0001
				}

			},
			{
				.ifnum = -1
			}
		}
	}
},
##################################

Audio driver magic:

[0 ms] UsbSnoop compiled on Jan 18 2003 22:41:32 loading
[0 ms] UsbSnoop - DriverEntry(baca2c40) : Windows NT WDM version 1.32
[101 ms] UsbSnoop - AddDevice(baca2f50) : DriverObject 83499768, pdo 83338c10
[102 ms] UsbSnoop - MyDispatchPNP(baca2ee0) : IRP_MJ_PNP
(IRP_MN_QUERY_INTERFACE)
[102 ms] UsbSnoop - MyDispatchPNP(baca2ee0) : IRP_MJ_PNP (0x00000018)
[127 ms] UsbSnoop - MyDispatchPNP(baca2ee0) : IRP_MJ_PNP
(IRP_MN_QUERY_RESOURCE_REQUIREMENTS)
[127 ms] UsbSnoop - MyDispatchPNP(baca2ee0) : IRP_MJ_PNP
(IRP_MN_FILTER_RESOURCE_REQUIREMENTS)
[128 ms] UsbSnoop - MyDispatchPNP(baca2ee0) : IRP_MJ_PNP (IRP_MN_START_DEVICE)
[128 ms] UsbSnoop - MyDispatchInternalIOCTL(baca1e80) : fdo=83338c10,
Irp=832c7530, IRQL=0
[128 ms]  >>>  URB 1 going down  >>>
-- URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE:
  TransferBufferLength = 00000012
  TransferBuffer       = bacef95c
  TransferBufferMDL    = 00000000
  Index                = 00000001
  DescriptorType       = 00000001 (USB_DEVICE_DESCRIPTOR_TYPE)
  LanguageId           = 00000000
[128 ms] UsbSnoop - MyInternalIOCTLCompletion(baca1db0) :
fido=00000000, Irp=832c7530, Context=832ff2e8, IRQL=0
[128 ms]  <<<  URB 1 coming back  <<<
-- URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE:
  TransferBufferLength = 00000012
  TransferBuffer       = bacef95c
  TransferBufferMDL    = 00000000
    00000000: 12 01 00 01 00 00 00 08 ba 0d 00 30 38 01 01 02
    00000010: 00 01
  Index                = 00000001
  DescriptorType       = 00000001 (USB_DEVICE_DESCRIPTOR_TYPE)
  LanguageId           = 00000000
[128 ms] UsbSnoop - MyDispatchInternalIOCTL(baca1e80) : fdo=83338c10,
Irp=832c7530, IRQL=0
[128 ms]  >>>  URB 2 going down  >>>
-- URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE:
  TransferBufferLength = 00000009
  TransferBuffer       = bacef9d0
  TransferBufferMDL    = 00000000
  Index                = 00000001
  DescriptorType       = 00000002 (USB_CONFIGURATION_DESCRIPTOR_TYPE)
  LanguageId           = 00000000
[128 ms] UsbSnoop - MyInternalIOCTLCompletion(baca1db0) :
fido=00000000, Irp=832c7530, Context=833e2438, IRQL=0
[128 ms]  <<<  URB 2 coming back  <<<
-- URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE:
  TransferBufferLength = 00000009
  TransferBuffer       = bacef9d0
  TransferBufferMDL    = 00000000
    00000000: 09 02 58 02 05 01 00 80 fa
  Index                = 00000001
  DescriptorType       = 00000002 (USB_CONFIGURATION_DESCRIPTOR_TYPE)
  LanguageId           = 00000000
[128 ms] UsbSnoop - MyDispatchInternalIOCTL(baca1e80) : fdo=83338c10,
Irp=832c7530, IRQL=0
[128 ms]  >>>  URB 3 going down  >>>
-- URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE:
  TransferBufferLength = 00000258
  TransferBuffer       = 83369540
  TransferBufferMDL    = 00000000
  Index                = 00000001
  DescriptorType       = 00000002 (USB_CONFIGURATION_DESCRIPTOR_TYPE)
  LanguageId           = 00000000
[128 ms] UsbSnoop - MyInternalIOCTLCompletion(baca1db0) :
fido=00000000, Irp=832c7530, Context=83455a90, IRQL=0
[128 ms]  <<<  URB 3 coming back  <<<
-- URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE:
  TransferBufferLength = 00000258
  TransferBuffer       = 83369540
  TransferBufferMDL    = 00000000
    00000000: 09 02 58 02 05 01 00 80 fa 09 04 01 00 00 01 01
    00000010: 00 02 0c 24 01 00 01 60 00 04 02 03 04 05 0c 24
    00000020: 02 05 01 01 00 02 03 00 00 00 09 24 03 06 01 06
    00000030: 00 05 00 0c 24 02 07 01 01 00 02 03 00 00 00 09
    00000040: 24 03 08 01 06 00 07 00 0c 24 02 01 01 06 00 02
    00000050: 03 00 00 00 09 24 03 02 01 01 00 01 00 0c 24 02
    00000060: 03 01 06 00 02 03 00 00 00 09 24 03 04 01 01 00
    00000070: 03 00 09 04 02 00 00 01 02 00 00 09 04 02 02 02
    00000080: 01 02 00 00 07 24 01 05 01 01 00 0e 24 02 01 02
    00000090: 03 18 00 40 1f 00 80 bb 00 09 05 03 05 28 01 01
    000000a0: 00 83 07 25 01 00 00 00 00 09 05 83 01 03 00 01
    000000b0: 02 00 09 04 02 03 02 01 02 00 00 07 24 01 05 01
    000000c0: 01 00 0e 24 02 01 02 03 18 00 40 1f 00 80 bb 00
    000000d0: 09 05 03 05 28 01 01 00 83 07 25 01 00 00 00 00
    000000e0: 09 05 83 01 03 00 01 02 00 09 04 03 00 00 01 02
    000000f0: 00 00 09 04 03 02 02 01 02 00 00 07 24 01 07 01
    00000100: 01 00 0e 24 02 01 02 03 18 00 40 1f 00 80 bb 00
    00000110: 09 05 04 05 28 01 01 00 84 07 25 01 00 00 00 00
    00000120: 09 05 84 01 03 00 01 02 00 09 04 03 03 02 01 02
    00000130: 00 00 07 24 01 07 01 01 00 0e 24 02 01 02 03 18
    00000140: 00 40 1f 00 80 bb 00 09 05 04 05 28 01 01 00 84
    00000150: 07 25 01 00 00 00 00 09 05 84 01 03 00 01 02 00
    00000160: 09 04 03 06 01 01 02 00 00 07 24 01 07 01 01 20
    00000170: 0e 24 02 03 02 02 10 00 40 1f 00 80 bb 00 09 05
    00000180: 04 0d c0 00 01 00 00 07 25 01 01 00 00 00 09 04
    00000190: 04 00 00 01 02 00 00 09 04 04 02 01 01 02 00 00
    000001a0: 07 24 01 02 01 01 00 0e 24 02 01 02 03 18 00 40
    000001b0: 1f 00 80 bb 00 09 05 85 05 28 01 01 00 00 07 25
    000001c0: 01 00 00 00 00 09 04 04 03 01 01 02 00 00 07 24
    000001d0: 01 02 01 01 00 0e 24 02 01 02 03 18 00 40 1f 00
    000001e0: 80 bb 00 09 05 85 0d 28 01 01 00 00 07 25 01 01
    000001f0: 00 00 00 09 04 05 00 00 01 02 00 00 09 04 05 02
    00000200: 01 01 02 00 00 07 24 01 04 01 01 00 0e 24 02 01
    00000210: 02 03 18 00 40 1f 00 80 bb 00 09 05 86 05 28 01
    00000220: 01 00 00 07 25 01 00 00 00 00 09 04 05 03 01 01
    00000230: 02 00 00 07 24 01 04 01 01 00 0e 24 02 01 02 03
    00000240: 18 00 40 1f 00 80 bb 00 09 05 86 0d 28 01 01 00
    00000250: 00 07 25 01 01 00 00 00
  Index                = 00000001
  DescriptorType       = 00000002 (USB_CONFIGURATION_DESCRIPTOR_TYPE)
  LanguageId           = 00000000
[128 ms] UsbSnoop - MyDispatchInternalIOCTL(baca1e80) : fdo=83338c10,
Irp=832c7530, IRQL=0
[128 ms]  >>>  URB 4 going down  >>>
-- URB_FUNCTION_VENDOR_DEVICE:
  TransferFlags          = 00000001 (USBD_TRANSFER_DIRECTION_IN,
~USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 00000012
  TransferBuffer       = bacef8e7
  TransferBufferMDL    = 00000000
  UrbLink                 = 00000000
  RequestTypeReservedBits = 00000000
  Request                 = 00000085
  Value                   = 00000001
  Index                   = 00000000
[133 ms] UsbSnoop - MyInternalIOCTLCompletion(baca1db0) :
fido=00000000, Irp=832c7530, Context=833573c0, IRQL=2
[133 ms]  <<<  URB 4 coming back  <<<
-- URB_FUNCTION_CONTROL_TRANSFER:
  PipeHandle           = 83323ac0
  TransferFlags        = 0000000b (USBD_TRANSFER_DIRECTION_IN,
USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 00000001
  TransferBuffer       = bacef8e7
  TransferBufferMDL    = 83623978
    00000000: 01
  UrbLink              = 00000000
  SetupPacket          =
    00000000: c0 85 01 00 00 00 12 00
[433 ms] UsbSnoop - MyDispatchInternalIOCTL(baca1e80) : fdo=83338c10,
Irp=83436508, IRQL=0
[433 ms]  >>>  URB 5 going down  >>>
-- URB_FUNCTION_VENDOR_DEVICE:
  TransferFlags          = 00000001 (USBD_TRANSFER_DIRECTION_IN,
~USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 00000012
  TransferBuffer       = bacef8e7
  TransferBufferMDL    = 00000000
  UrbLink                 = 00000000
  RequestTypeReservedBits = 00000000
  Request                 = 00000085
  Value                   = 00000001
  Index                   = 00000000
[437 ms] UsbSnoop - MyInternalIOCTLCompletion(baca1db0) :
fido=00000000, Irp=83436508, Context=83429560, IRQL=2
[437 ms]  <<<  URB 5 coming back  <<<
-- URB_FUNCTION_CONTROL_TRANSFER:
  PipeHandle           = 83323ac0
  TransferFlags        = 0000000b (USBD_TRANSFER_DIRECTION_IN,
USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 00000001
  TransferBuffer       = bacef8e7
  TransferBufferMDL    = 834a08e8
    00000000: 01
  UrbLink              = 00000000
  SetupPacket          =
    00000000: c0 85 01 00 00 00 12 00
[733 ms] UsbSnoop - MyDispatchInternalIOCTL(baca1e80) : fdo=83338c10,
Irp=83436508, IRQL=0
[733 ms]  >>>  URB 6 going down  >>>
-- URB_FUNCTION_VENDOR_DEVICE:
  TransferFlags          = 00000001 (USBD_TRANSFER_DIRECTION_IN,
~USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 00000012
  TransferBuffer       = bacef8e7
  TransferBufferMDL    = 00000000
  UrbLink                 = 00000000
  RequestTypeReservedBits = 00000000
  Request                 = 00000085
  Value                   = 00000001
  Index                   = 00000000
[738 ms] UsbSnoop - MyInternalIOCTLCompletion(baca1db0) :
fido=00000000, Irp=83436508, Context=83625f08, IRQL=2
[738 ms]  <<<  URB 6 coming back  <<<
-- URB_FUNCTION_CONTROL_TRANSFER:
  PipeHandle           = 83323ac0
  TransferFlags        = 0000000b (USBD_TRANSFER_DIRECTION_IN,
USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 00000001
  TransferBuffer       = bacef8e7
  TransferBufferMDL    = 834a08e8
    00000000: 01
  UrbLink              = 00000000
  SetupPacket          =
    00000000: c0 85 01 00 00 00 12 00
[1034 ms] UsbSnoop - MyDispatchInternalIOCTL(baca1e80) : fdo=83338c10,
Irp=834a1398, IRQL=0
[1034 ms]  >>>  URB 7 going down  >>>
-- URB_FUNCTION_VENDOR_DEVICE:
  TransferFlags          = 00000001 (USBD_TRANSFER_DIRECTION_IN,
~USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 00000012
  TransferBuffer       = bacef8e7
  TransferBufferMDL    = 00000000
  UrbLink                 = 00000000
  RequestTypeReservedBits = 00000000
  Request                 = 00000085
  Value                   = 00000001
  Index                   = 00000000
[1038 ms] UsbSnoop - MyInternalIOCTLCompletion(baca1db0) :
fido=00000000, Irp=834a1398, Context=832ff2e8, IRQL=2
[1038 ms]  <<<  URB 7 coming back  <<<
-- URB_FUNCTION_CONTROL_TRANSFER:
  PipeHandle           = 83323ac0
  TransferFlags        = 0000000b (USBD_TRANSFER_DIRECTION_IN,
USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 00000001
  TransferBuffer       = bacef8e7
  TransferBufferMDL    = 834a08e8
    00000000: 01
  UrbLink              = 00000000
  SetupPacket          =
    00000000: c0 85 01 00 00 00 12 00
[1334 ms] UsbSnoop - MyDispatchInternalIOCTL(baca1e80) : fdo=83338c10,
Irp=8348a7c0, IRQL=0
[1334 ms]  >>>  URB 8 going down  >>>
-- URB_FUNCTION_VENDOR_DEVICE:
  TransferFlags          = 00000001 (USBD_TRANSFER_DIRECTION_IN,
~USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 00000012
  TransferBuffer       = bacef8e7
  TransferBufferMDL    = 00000000
  UrbLink                 = 00000000
  RequestTypeReservedBits = 00000000
  Request                 = 00000085
  Value                   = 00000001
  Index                   = 00000000
[1339 ms] UsbSnoop - MyInternalIOCTLCompletion(baca1db0) :
fido=00000000, Irp=8348a7c0, Context=833573c0, IRQL=2
[1339 ms]  <<<  URB 8 coming back  <<<
-- URB_FUNCTION_CONTROL_TRANSFER:
  PipeHandle           = 83323ac0
  TransferFlags        = 0000000b (USBD_TRANSFER_DIRECTION_IN,
USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 00000001
  TransferBuffer       = bacef8e7
  TransferBufferMDL    = 83621768
    00000000: 01
  UrbLink              = 00000000
  SetupPacket          =
    00000000: c0 85 01 00 00 00 12 00
[1635 ms] UsbSnoop - MyDispatchInternalIOCTL(baca1e80) : fdo=83338c10,
Irp=8348a7c0, IRQL=0
[1635 ms]  >>>  URB 9 going down  >>>
-- URB_FUNCTION_VENDOR_DEVICE:
  TransferFlags          = 00000001 (USBD_TRANSFER_DIRECTION_IN,
~USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 00000012
  TransferBuffer       = bacef8e7
  TransferBufferMDL    = 00000000
  UrbLink                 = 00000000
  RequestTypeReservedBits = 00000000
  Request                 = 00000085
  Value                   = 00000001
  Index                   = 00000000
[1639 ms] UsbSnoop - MyInternalIOCTLCompletion(baca1db0) :
fido=00000000, Irp=8348a7c0, Context=832ff2e8, IRQL=2
[1639 ms]  <<<  URB 9 coming back  <<<
-- URB_FUNCTION_CONTROL_TRANSFER:
  PipeHandle           = 83323ac0
  TransferFlags        = 0000000b (USBD_TRANSFER_DIRECTION_IN,
USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 00000001
  TransferBuffer       = bacef8e7
  TransferBufferMDL    = 83621768
    00000000: 01
  UrbLink              = 00000000
  SetupPacket          =
    00000000: c0 85 01 00 00 00 12 00
[1935 ms] UsbSnoop - MyDispatchInternalIOCTL(baca1e80) : fdo=83338c10,
Irp=8348a7c0, IRQL=0
[1935 ms]  >>>  URB 10 going down  >>>
-- URB_FUNCTION_VENDOR_DEVICE:
  TransferFlags          = 00000001 (USBD_TRANSFER_DIRECTION_IN,
~USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 00000012
  TransferBuffer       = bacef8e7
  TransferBufferMDL    = 00000000
  UrbLink                 = 00000000
  RequestTypeReservedBits = 00000000
  Request                 = 00000085
  Value                   = 00000001
  Index                   = 00000000
[1940 ms] UsbSnoop - MyInternalIOCTLCompletion(baca1db0) :
fido=00000000, Irp=8348a7c0, Context=833573c0, IRQL=2
[1940 ms]  <<<  URB 10 coming back  <<<
-- URB_FUNCTION_CONTROL_TRANSFER:
  PipeHandle           = 83323ac0
  TransferFlags        = 0000000b (USBD_TRANSFER_DIRECTION_IN,
USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 00000001
  TransferBuffer       = bacef8e7
  TransferBufferMDL    = 83621768
    00000000: 01
  UrbLink              = 00000000
  SetupPacket          =
    00000000: c0 85 01 00 00 00 12 00
[2236 ms] UsbSnoop - MyDispatchInternalIOCTL(baca1e80) : fdo=83338c10,
Irp=8348a7c0, IRQL=0
[2236 ms]  >>>  URB 11 going down  >>>
-- URB_FUNCTION_VENDOR_DEVICE:
  TransferFlags          = 00000001 (USBD_TRANSFER_DIRECTION_IN,
~USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 00000012
  TransferBuffer       = bacef8e7
  TransferBufferMDL    = 00000000
  UrbLink                 = 00000000
  RequestTypeReservedBits = 00000000
  Request                 = 00000085
  Value                   = 00000001
  Index                   = 00000000
[2240 ms] UsbSnoop - MyInternalIOCTLCompletion(baca1db0) :
fido=00000000, Irp=8348a7c0, Context=832ff2e8, IRQL=2
[2240 ms]  <<<  URB 11 coming back  <<<
-- URB_FUNCTION_CONTROL_TRANSFER:
  PipeHandle           = 83323ac0
  TransferFlags        = 0000000b (USBD_TRANSFER_DIRECTION_IN,
USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 00000001
  TransferBuffer       = bacef8e7
  TransferBufferMDL    = 83621768
    00000000: 01
  UrbLink              = 00000000
  SetupPacket          =
    00000000: c0 85 01 00 00 00 12 00
[2536 ms] UsbSnoop - MyDispatchInternalIOCTL(baca1e80) : fdo=83338c10,
Irp=8348a7c0, IRQL=0
[2536 ms]  >>>  URB 12 going down  >>>
-- URB_FUNCTION_VENDOR_DEVICE:
  TransferFlags          = 00000001 (USBD_TRANSFER_DIRECTION_IN,
~USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 00000012
  TransferBuffer       = bacef8e7
  TransferBufferMDL    = 00000000
  UrbLink                 = 00000000
  RequestTypeReservedBits = 00000000
  Request                 = 00000085
  Value                   = 00000001
  Index                   = 00000000
[2541 ms] UsbSnoop - MyInternalIOCTLCompletion(baca1db0) :
fido=00000000, Irp=8348a7c0, Context=833573c0, IRQL=2
[2541 ms]  <<<  URB 12 coming back  <<<
-- URB_FUNCTION_CONTROL_TRANSFER:
  PipeHandle           = 83323ac0
  TransferFlags        = 0000000b (USBD_TRANSFER_DIRECTION_IN,
USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 00000001
  TransferBuffer       = bacef8e7
  TransferBufferMDL    = 83621768
    00000000: 01
  UrbLink              = 00000000
  SetupPacket          =
    00000000: c0 85 01 00 00 00 12 00
[2837 ms] UsbSnoop - MyDispatchInternalIOCTL(baca1e80) : fdo=83338c10,
Irp=8348a7c0, IRQL=0
[2837 ms]  >>>  URB 13 going down  >>>
-- URB_FUNCTION_VENDOR_DEVICE:
  TransferFlags          = 00000001 (USBD_TRANSFER_DIRECTION_IN,
~USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 00000012
  TransferBuffer       = bacef8e7
  TransferBufferMDL    = 00000000
  UrbLink                 = 00000000
  RequestTypeReservedBits = 00000000
  Request                 = 00000085
  Value                   = 00000001
  Index                   = 00000000
[2841 ms] UsbSnoop - MyInternalIOCTLCompletion(baca1db0) :
fido=00000000, Irp=8348a7c0, Context=832ff2e8, IRQL=2
[2841 ms]  <<<  URB 13 coming back  <<<
-- URB_FUNCTION_CONTROL_TRANSFER:
  PipeHandle           = 83323ac0
  TransferFlags        = 0000000b (USBD_TRANSFER_DIRECTION_IN,
USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 00000001
  TransferBuffer       = bacef8e7
  TransferBufferMDL    = 83621768
    00000000: 01
  UrbLink              = 00000000
  SetupPacket          =
    00000000: c0 85 01 00 00 00 12 00
[3137 ms] UsbSnoop - MyDispatchInternalIOCTL(baca1e80) : fdo=83338c10,
Irp=8348a7c0, IRQL=0
[3137 ms]  >>>  URB 14 going down  >>>
-- URB_FUNCTION_VENDOR_DEVICE:
  TransferFlags          = 00000001 (USBD_TRANSFER_DIRECTION_IN,
~USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 00000012
  TransferBuffer       = bacef8e7
  TransferBufferMDL    = 00000000
  UrbLink                 = 00000000
  RequestTypeReservedBits = 00000000
  Request                 = 00000085
  Value                   = 00000001
  Index                   = 00000000
[3142 ms] UsbSnoop - MyInternalIOCTLCompletion(baca1db0) :
fido=00000000, Irp=8348a7c0, Context=833573c0, IRQL=2
[3142 ms]  <<<  URB 14 coming back  <<<
-- URB_FUNCTION_CONTROL_TRANSFER:
  PipeHandle           = 83323ac0
  TransferFlags        = 0000000b (USBD_TRANSFER_DIRECTION_IN,
USBD_SHORT_TRANSFER_OK)
  TransferBufferLength = 00000001
  TransferBuffer       = bacef8e7
  TransferBufferMDL    = 83621768
    00000000: 02
  UrbLink              = 00000000
  SetupPacket          =
    00000000: c0 85 01 00 00 00 12 00
[3142 ms] UsbSnoop - MyDispatchInternalIOCTL(baca1e80) : fdo=83338c10,
Irp=8348a7c0, IRQL=0
[3142 ms]  >>>  URB 15 going down  >>>
-- URB_FUNCTION_SELECT_CONFIGURATION:
  ConfigurationDescriptor = 0x83369540 (configure)
  ConfigurationDescriptor : bLength             = 9
  ConfigurationDescriptor : bDescriptorType     = 0x00000002
  ConfigurationDescriptor : wTotalLength        = 0x00000258
  ConfigurationDescriptor : bNumInterfaces      = 0x00000005
  ConfigurationDescriptor : bConfigurationValue = 0x00000001
  ConfigurationDescriptor : iConfiguration      = 0x00000000
  ConfigurationDescriptor : bmAttributes        = 0x00000080
  ConfigurationDescriptor : MaxPower            = 0x000000fa
  ConfigurationHandle     = 0x00000000
  Interface[0]: Length            = 16
  Interface[0]: InterfaceNumber   = 1
  Interface[0]: AlternateSetting  = 0
  Interface[1]: Length            = 16
  Interface[1]: InterfaceNumber   = 2
  Interface[1]: AlternateSetting  = 0
  Interface[2]: Length            = 16
  Interface[2]: InterfaceNumber   = 3
  Interface[2]: AlternateSetting  = 0
  Interface[3]: Length            = 16
  Interface[3]: InterfaceNumber   = 4
  Interface[3]: AlternateSetting  = 0
  Interface[4]: Length            = 16
  Interface[4]: InterfaceNumber   = 5
  Interface[4]: AlternateSetting  = 0
[3142 ms] UsbSnoop - MyInternalIOCTLCompletion(baca1db0) :
fido=00000000, Irp=8348a7c0, Context=83429560, IRQL=0
[3142 ms]  <<<  URB 15 coming back  <<<
-- URB_FUNCTION_SELECT_CONFIGURATION:
  ConfigurationDescriptor = 0x83369540 (configure)
  ConfigurationDescriptor : bLength             = 9
  ConfigurationDescriptor : bDescriptorType     = 0x00000002
  ConfigurationDescriptor : wTotalLength        = 0x00000258
  ConfigurationDescriptor : bNumInterfaces      = 0x00000005
  ConfigurationDescriptor : bConfigurationValue = 0x00000001
  ConfigurationDescriptor : iConfiguration      = 0x00000000
  ConfigurationDescriptor : bmAttributes        = 0x00000080
  ConfigurationDescriptor : MaxPower            = 0x000000fa
  ConfigurationHandle     = 0x835a8978
  Interface[0]: Length            = 16
  Interface[0]: InterfaceNumber   = 1
  Interface[0]: AlternateSetting  = 0
  Interface[0]: Class             = 0x00000001
  Interface[0]: SubClass          = 0x00000001
  Interface[0]: Protocol          = 0x00000000
  Interface[0]: InterfaceHandle   = 0x8336b868
  Interface[0]: NumberOfPipes     = 0
  Interface[1]: Length            = 16
  Interface[1]: InterfaceNumber   = 2
  Interface[1]: AlternateSetting  = 0
  Interface[1]: Class             = 0x00000000
  Interface[1]: SubClass          = 0x00000000
  Interface[1]: Protocol          = 0x00000000
  Interface[1]: InterfaceHandle   = 0x00000000
  Interface[1]: NumberOfPipes     = 0
  Interface[2]: Length            = 16
  Interface[2]: InterfaceNumber   = 3
  Interface[2]: AlternateSetting  = 0
  Interface[2]: Class             = 0x00000000
  Interface[2]: SubClass          = 0x00000000
  Interface[2]: Protocol          = 0x00000000
  Interface[2]: InterfaceHandle   = 0x00000000
  Interface[2]: NumberOfPipes     = 0
  Interface[3]: Length            = 16
  Interface[3]: InterfaceNumber   = 4
  Interface[3]: AlternateSetting  = 0
  Interface[3]: Class             = 0x00000000
  Interface[3]: SubClass          = 0x00000000
  Interface[3]: Protocol          = 0x00000000
  Interface[3]: InterfaceHandle   = 0x00000000
  Interface[3]: NumberOfPipes     = 0
  Interface[4]: Length            = 16
  Interface[4]: InterfaceNumber   = 5
  Interface[4]: AlternateSetting  = 0
  Interface[4]: Class             = 0x00000000
  Interface[4]: SubClass          = 0x00000000
  Interface[4]: Protocol          = 0x00000000
  Interface[4]: InterfaceHandle   = 0x00000000
  Interface[4]: NumberOfPipes     = 0
[3142 ms] UsbSnoop - MyDispatchInternalIOCTL(baca1e80) : fdo=83338c10,
Irp=8348a7c0, IRQL=0
[3142 ms]  >>>  URB 16 going down  >>>
-- URB_FUNCTION_SELECT_INTERFACE:
  ConfigurationHandle     = 0x835a8978
  Interface: Length            = 56
  Interface: InterfaceNumber   = 2
  Interface: AlternateSetting  = 0
  Interface: Class             = 0x00000000
  Interface: SubClass          = 0x00000000
  Interface: Protocol          = 0x00000000
  Interface: InterfaceHandle   = 00000000
  Interface: NumberOfPipes     = 0
[3145 ms] UsbSnoop - MyInternalIOCTLCompletion(baca1db0) :
fido=00000000, Irp=8348a7c0, Context=832f0090, IRQL=0
[3145 ms]  <<<  URB 16 coming back  <<<
-- URB_FUNCTION_SELECT_INTERFACE:
  ConfigurationHandle     = 0x835a8978
  Interface: Length            = 16
  Interface: InterfaceNumber   = 2
  Interface: AlternateSetting  = 0
  Interface: Class             = 0x00000001
  Interface: SubClass          = 0x00000002
  Interface: Protocol          = 0x00000000
  Interface: InterfaceHandle   = 83621580
  Interface: NumberOfPipes     = 0
[3145 ms] UsbSnoop - MyDispatchInternalIOCTL(baca1e80) : fdo=83338c10,
Irp=8348a7c0, IRQL=0
[3145 ms]  >>>  URB 17 going down  >>>
-- URB_FUNCTION_SELECT_INTERFACE:
  ConfigurationHandle     = 0x835a8978
  Interface: Length            = 56
  Interface: InterfaceNumber   = 2
  Interface: AlternateSetting  = 3
  Interface: Class             = 0x00000000
  Interface: SubClass          = 0x00000000
  Interface: Protocol          = 0x00000000
  Interface: InterfaceHandle   = 00000000
  Interface: NumberOfPipes     = 0
[3187 ms] UsbSnoop - MyInternalIOCTLCompletion(baca1db0) :
fido=00000000, Irp=8348a7c0, Context=83539d80, IRQL=0
[3187 ms]  <<<  URB 17 coming back  <<<
-- URB_FUNCTION_SELECT_INTERFACE:
  ConfigurationHandle     = 0x835a8978
  Interface: Length            = 56
  Interface: InterfaceNumber   = 2
  Interface: AlternateSetting  = 3
  Interface: Class             = 0x00000001
  Interface: SubClass          = 0x00000002
  Interface: Protocol          = 0x00000000
  Interface: InterfaceHandle   = 833b9d68
  Interface: NumberOfPipes     = 2
  Interface: Pipes[0] : MaximumPacketSize = 0x00000128
  Interface: Pipes[0] : EndpointAddress   = 0x00000003
  Interface: Pipes[0] : Interval          = 0x00000001
  Interface: Pipes[0] : PipeType          = 0x00000001 (UsbdPipeTypeIsochronous)
  Interface: Pipes[0] : PipeHandle        = 0x833b9d84
  Interface: Pipes[0] : MaxTransferSize   = 0x00000000
  Interface: Pipes[0] : PipeFlags         = 0x00000000
  Interface: Pipes[1] : MaximumPacketSize = 0x00000003
  Interface: Pipes[1] : EndpointAddress   = 0x00000083
  Interface: Pipes[1] : Interval          = 0x00000001
  Interface: Pipes[1] : PipeType          = 0x00000001 (UsbdPipeTypeIsochronous)
  Interface: Pipes[1] : PipeHandle        = 0x833b9da4
  Interface: Pipes[1] : MaxTransferSize   = 0x00000000
  Interface: Pipes[1] : PipeFlags         = 0x00000000
[3187 ms] UsbSnoop - MyDispatchInternalIOCTL(baca1e80) : fdo=83338c10,
Irp=8348a7c0, IRQL=0
[3187 ms]  >>>  URB 18 going down  >>>
-- URB_FUNCTION_SELECT_INTERFACE:
  ConfigurationHandle     = 0x835a8978
  Interface: Length            = 76
  Interface: InterfaceNumber   = 4
  Interface: AlternateSetting  = 0
  Interface: Class             = 0x00000000
  Interface: SubClass          = 0x00000000
  Interface: Protocol          = 0x00000000
  Interface: InterfaceHandle   = 00000000
  Interface: NumberOfPipes     = 0
[3190 ms] UsbSnoop - MyInternalIOCTLCompletion(baca1db0) :
fido=00000000, Irp=8348a7c0, Context=835fced8, IRQL=0
[3190 ms]  <<<  URB 18 coming back  <<<
-- URB_FUNCTION_SELECT_INTERFACE:
  ConfigurationHandle     = 0x835a8978
  Interface: Length            = 16
  Interface: InterfaceNumber   = 4
  Interface: AlternateSetting  = 0
  Interface: Class             = 0x00000001
  Interface: SubClass          = 0x00000002
  Interface: Protocol          = 0x00000000
  Interface: InterfaceHandle   = 83621580
  Interface: NumberOfPipes     = 0
[3190 ms] UsbSnoop - MyDispatchInternalIOCTL(baca1e80) : fdo=83338c10,
Irp=8348a7c0, IRQL=0
[3190 ms]  >>>  URB 19 going down  >>>
-- URB_FUNCTION_SELECT_INTERFACE:
  ConfigurationHandle     = 0x835a8978
  Interface: Length            = 76
  Interface: InterfaceNumber   = 4
  Interface: AlternateSetting  = 3
  Interface: Class             = 0x00000000
  Interface: SubClass          = 0x00000000
  Interface: Protocol          = 0x00000000
  Interface: InterfaceHandle   = 00000000
  Interface: NumberOfPipes     = 0
[3207 ms] UsbSnoop - MyInternalIOCTLCompletion(baca1db0) :
fido=00000000, Irp=8348a7c0, Context=832f0090, IRQL=0
[3207 ms]  <<<  URB 19 coming back  <<<
-- URB_FUNCTION_SELECT_INTERFACE:
  ConfigurationHandle     = 0x835a8978
  Interface: Length            = 36
  Interface: InterfaceNumber   = 4
  Interface: AlternateSetting  = 3
  Interface: Class             = 0x00000001
  Interface: SubClass          = 0x00000002
  Interface: Protocol          = 0x00000000
  Interface: InterfaceHandle   = 834a36c8
  Interface: NumberOfPipes     = 1
  Interface: Pipes[0] : MaximumPacketSize = 0x00000128
  Interface: Pipes[0] : EndpointAddress   = 0x00000085
  Interface: Pipes[0] : Interval          = 0x00000001
  Interface: Pipes[0] : PipeType          = 0x00000001 (UsbdPipeTypeIsochronous)
  Interface: Pipes[0] : PipeHandle        = 0x834a36e4
  Interface: Pipes[0] : MaxTransferSize   = 0x00000000
  Interface: Pipes[0] : PipeFlags         = 0x00000000
[3207 ms] UsbSnoop - MyDispatchInternalIOCTL(baca1e80) : fdo=83338c10,
Irp=8348a7c0, IRQL=0
[3207 ms]  >>>  URB 20 going down  >>>
-- URB_FUNCTION_SELECT_INTERFACE:
  ConfigurationHandle     = 0x835a8978
  Interface: Length            = 76
  Interface: InterfaceNumber   = 5
  Interface: AlternateSetting  = 0
  Interface: Class             = 0x00000000
  Interface: SubClass          = 0x00000000
  Interface: Protocol          = 0x00000000
  Interface: InterfaceHandle   = 00000000
  Interface: NumberOfPipes     = 0
[3210 ms] UsbSnoop - MyInternalIOCTLCompletion(baca1db0) :
fido=00000000, Irp=8348a7c0, Context=83539d80, IRQL=0
[3210 ms]  <<<  URB 20 coming back  <<<
-- URB_FUNCTION_SELECT_INTERFACE:
  ConfigurationHandle     = 0x835a8978
  Interface: Length            = 16
  Interface: InterfaceNumber   = 5
  Interface: AlternateSetting  = 0
  Interface: Class             = 0x00000001
  Interface: SubClass          = 0x00000002
  Interface: Protocol          = 0x00000000
  Interface: InterfaceHandle   = 83621580
  Interface: NumberOfPipes     = 0
[3210 ms] UsbSnoop - MyDispatchInternalIOCTL(baca1e80) : fdo=83338c10,
Irp=8348a7c0, IRQL=0
[3210 ms]  >>>  URB 21 going down  >>>
-- URB_FUNCTION_SELECT_INTERFACE:
  ConfigurationHandle     = 0x835a8978
  Interface: Length            = 76
  Interface: InterfaceNumber   = 5
  Interface: AlternateSetting  = 3
  Interface: Class             = 0x00000000
  Interface: SubClass          = 0x00000000
  Interface: Protocol          = 0x00000000
  Interface: InterfaceHandle   = 00000000
  Interface: NumberOfPipes     = 0
[3227 ms] UsbSnoop - MyInternalIOCTLCompletion(baca1db0) :
fido=00000000, Irp=8348a7c0, Context=835fced8, IRQL=0
[3227 ms]  <<<  URB 21 coming back  <<<
-- URB_FUNCTION_SELECT_INTERFACE:
  ConfigurationHandle     = 0x835a8978
  Interface: Length            = 36
  Interface: InterfaceNumber   = 5
  Interface: AlternateSetting  = 3
  Interface: Class             = 0x00000001
  Interface: SubClass          = 0x00000002
  Interface: Protocol          = 0x00000000
  Interface: InterfaceHandle   = 83631b58
  Interface: NumberOfPipes     = 1
  Interface: Pipes[0] : MaximumPacketSize = 0x00000128
  Interface: Pipes[0] : EndpointAddress   = 0x00000086
  Interface: Pipes[0] : Interval          = 0x00000001
  Interface: Pipes[0] : PipeType          = 0x00000001 (UsbdPipeTypeIsochronous)
  Interface: Pipes[0] : PipeHandle        = 0x83631b74
  Interface: Pipes[0] : MaxTransferSize   = 0x00000000
  Interface: Pipes[0] : PipeFlags         = 0x00000000
[3228 ms] UsbSnoop - MyDispatchPNP(baca2ee0) : IRP_MJ_PNP
(IRP_MN_QUERY_CAPABILITIES)
[3228 ms] UsbSnoop - MyDispatchPNP(baca2ee0) : IRP_MJ_PNP
(IRP_MN_QUERY_PNP_DEVICE_STATE)
[3228 ms] UsbSnoop - MyDispatchPNP(baca2ee0) : IRP_MJ_PNP
(IRP_MN_QUERY_DEVICE_RELATIONS)
[3288 ms] UsbSnoop - MyDispatchPNP(baca2ee0) : IRP_MJ_PNP
(IRP_MN_QUERY_DEVICE_RELATIONS)


Audio driver "magic" successful response:

usb_get_driver_np returned -61
1 get descriptor returned 18, bytes: 12 01 00 01 00 00 00 08 ba 0d 00
30 38 01 01 02 00 01 "...........08....."
2 get descriptor returned 9, bytes: 09 02 86 02 07 01 00 80 fa "........."
3 get descriptor returned 600, bytes: 09 02 86 02 07 01 00 80 fa 09 04
00 00 00 fe 01 00 00 07 21 05 ff ff 08 00 09 04 01 00 00 01 01 00 02
0c 24 01 00 01 60 00 04 02 03 04 05 0c 24 02 05 01 01 00 02 03 00 00
00 09 24 03 06 01 06 00 05 00 0c 24 02 07 01 01 00 02 03 00 00 00 09
24 03 08 01 06 00 07 00 0c 24 02 01 01 06 00 02 03 00 00 00 09 24 03
02 01 01 00 01 00 0c 24 02 03 01 06 00 02 03 00 00 00 09 24 03 04 01
01 00 03 00 09 04 02 00 00 01 02 00 00 09 04 02 02 02 01 02 00 00 07
24 01 05 01 01 00 0e 24 02 01 02 03 18 00 40 1f 00 80 bb 00 09 05 03
05 28 01 01 00 83 07 25 01 00 00 00 00 09 05 83 01 03 00 01 02 00 09
04 02 03 02 01 02 00 00 07 24 01 05 01 01 00 0e 24 02 01 02 03 18 00
40 1f 00 80 bb 00 09 05 03 05 28 01 01 00 83 07 25 01 00 00 00 00 09
05 83 01 03 00 01 02 00 09 04 03 00 00 01 02 00 00 09 04 03 02 02 01
02 00 00 07 24 01 07 01 01 00 0e 24 02 01 02 03 18 00 40 1f 00 80 bb
00 09 05 04 05 28 01 01 00 84 07 25 01 00 00 00 00 09 05 84 01 03 00
01 02 00 09 04 03 03 02 01 02 00 00 07 24 01 07 01 01 00 0e 24 02 01
02 03 18 00 40 1f 00 80 bb 00 09 05 04 05 28 01 01 00 84 07 25 01 00
00 00 00 09 05 84 01 03 00 01 02 00 09 04 03 06 01 01 02 00 00 07 24
01 07 01 01 20 0e 24 02 03 02 02 10 00 40 1f 00 80 bb 00 09 05 04 0d
c0 00 01 00 00 07 25 01 01 00 00 00 09 04 04 00 00 01 02 00 00 09 04
04 02 01 01 02 00 00 07 24 01 02 01 01 00 0e 24 02 01 02 03 18 00 40
1f 00 80 bb 00 09 05 85 05 28 01 01 00 00 07 25 01 00 00 00 00 09 04
04 03 01 01 02 00 00 07 24 01 02 01 01 00 0e 24 02 01 02 03 18 00 40
1f 00 80 bb 00 09 05 85 0d 28 01 01 00 00 07 25 01 01 00 00 00 09 04
05 00 00 01 02 00 00 09 04 05 02 01 01 02 00 00 07 24 01 04 01 01 00
0e 24 02 01 02 03 18 00 40 1f 00 80 bb 00 09 05 86 05 28 01 01 00 00
07 25 01 00 00 00 00 09 04 05 03 01 01 02 00 00 07 24 01 04 01 01 00
0e 24 02 01 02 03 18 00 40 1f 00 80 bb 00
"...................!...............$...`.......$...........$........$...........$........$...........$........$...........$..........................$......$...... at .........(.....%........................$......$...... at .........(.....%.................................$......$...... at .........(.....%........................$......$...... at .........(.....%........................$....
.$...... at ...............%........................$......$...... at .........(.....%...............$......$...... at .........(.....%........................$......$...... at .........(.....%...............$......$...... at ....."
4 control msg returned 1, bytes: 01 "."
5 control msg returned 1, bytes: 01 "."
6 control msg returned 1, bytes: 01 "."
7 control msg returned 1, bytes: 01 "."
8 control msg returned 1, bytes: 01 "."
9 control msg returned 1, bytes: 01 "."
10 control msg returned 1, bytes: 01 "."
11 control msg returned 1, bytes: 01 "."
12 control msg returned 1, bytes: 01 "."
13 control msg returned 1, bytes: 01 "."
14 control msg returned 1, bytes: 02 "."
15 set configuration returned 0
15 set alternate setting returned 0
16 set alternate setting returned 0
17 set alternate setting returned -22
18 set alternate setting returned 0
19 set alternate setting returned -22
20 set alternate setting returned 0
21 set alternate setting returned -22

I need help! How can I enable the capture/playback?


More information about the Alsa-devel mailing list