[wdmaudiodev] Proper handling of Feature Requests and Terminal Types allowed under Vista

  • From: "Perry, Chris" <Chris_Perry@xxxxxxxx>
  • To: <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Thu, 11 Oct 2007 11:26:52 -0400

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. 

Other related posts: