Wade, We have a product that wouldn't enumerate the USB audio device part of a composite device under Vista because of not handling feature requests properly although it worked fine under XP. Since our device provided no software adjustable controls we got past this issue by directly connecting the input terminal to the output terminal thus eliminating the unneeded feature unit. I would be interesting in knowing if there is anything non straight forward in handling feature requests since we do use these in other products. Also potentially interesting to this group is that output terminal type 0x0601 (Analog connector) does not show up in Vista's list of playback devices but terminal type 0x0301 (Speaker) does. However, input terminal type 0x0603 (Line connector) does show up in Vista's list of recording devices. -Chris Perry From: wdmaudiodev-bounce@xxxxxxxxxxxxx [mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of wade Sent: Thursday, October 11, 2007 11:00 AM To: wdmaudiodev@xxxxxxxxxxxxx Subject: [wdmaudiodev] Re: USB MIDI Tim Roberts <timr@xxxxxxxxx> wrote: wade wrote: Hi Tim. Not pretty but here it is: This is helpful. Your MIDI descriptors are virtually identical to the ones in appendix B of the spec. And when you plug this in and start a MIDI program, you see bulk transfers happening? With MidiOx open, the host is issuing INs once every ~9uS ;CS_MIDI_DESC_START ;*** Class Specific MS Interface Header Desriptor db 007h ;bLength db 024h ;bDescriptorType (CS_INTERFACE) db 001h ;bDescriptorSubtype db 000h ;bcdMSC db 001h ;bcdMSC db 63 ; Size-LSB db 0 ; Size - MSB How did you get 63 for the size? Shouldn't it be 7+6+6+8+8 = 35? I was having problems early on getting XP to recognize the MIDI portion of the device so I made our MIDI descriptors violate 6.1.2.1 just like the example. Turns out the issue was related to not handling audio feature unit requets correctly. I never changed them back. I just changedit back and Vista and XP seem to be fine with it. IBy the way, I'm convinced the USB MIDI spec has a mistake in this descriptor in the sample. They show 0x0041 for the size in section B.4.2, but based on the description in 6.1.2.1, it should be 7+6+6+9+9 = 0x0025. To get 0x0041, you have to include the endpoint descriptors, and that doesn't meet 6.1.2.1. However, apparently no one checks this. Aparently not! ;*** MIDI Out Jack Descriptor - MIDIJACK(OUT,EMB,2)->IN(ID2/PIN1) --> To USB db 008h ;bLength db 024h ;bDescriptorType db 003h ;bDescriptorSubtype (MIDI_OUT_JACK) db 001h ;bJackType (EMBEDDED) db 003h ;bJackId db 001h ;bNrInputPins db 002h ;baSourceID(1) db 001h ;baSourcePin(1) ;*** MIDI Out Jack Descriptor - MIDIJACK(OUT,EXT,4)->IN(ID1/PIN1) db 008h ;bLength db 024h ;bDescriptorType db 003h ;bDescriptorSubtype (MIDI_OUT_JACK) db 002h ;bJackType (EXTERNAL) db 004h ;bJackId db 001h ;bNrInputPins db 001h ;baSourceID(1) db 001h ;baSourcePin(1) The spec shows these as being 9 bytes long, with a string descriptor ordinal at the end. If this works for you in XP, then I guess usbaudio.sys must not care. Oops. -- Tim Roberts, timr@xxxxxxxxx Providenza & Boekelheide, Inc. ________________________________ Tonight's top picks. What will you watch tonight? Preview the hottest shows <http://us.rd.yahoo.com/tv/mail/tagline/tonightspicks/evt=48220/*http:/t v.yahoo.com/%20%0d%0a> on Yahoo! TV.