Re: Random Interface numbers

Greg KH <[email protected]>
Newsgroups gmane.linux.usb.devel
Message-ID <[email protected]>
On Wed, Sep 12, 2007 at 06:46:23PM -0700, Pete Zaitcev wrote:
> On Fri, 31 Aug 2007 09:57:18 -0400 (EDT), Alan Stern <[email protected]> wrote:
> 
> > > T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  8 Spd=1.5 MxCh= 0
> > > D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
> > > P:  Vendor=1267 ProdID=0210 Rev= 0.01
> > > S:  Product=PS/2+USB Mouse
> > > C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=100mA
> > > I:* If#= 1 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=01 Prot=02 Driver=usbhid
> > > E:  Ad=81(I) Atr=03(Int.) MxPS=   8 Ivl=10ms
> > > 
> > > usb 2-1: new low speed USB device using uhci_hcd and address 8
> > > usb 2-1: config 1 has an invalid interface number: 1 but max is 0
> > > usb 2-1: config 1 has no interface number 0
> > > usb 2-1: configuration #1 chosen from 1 choice
> > > input: PS/2+USB Mouse as /class/input/input8
> > > input: USB HID v1.00 Mouse [PS/2+USB Mouse] on usb-0000:00:1d.1-1
> > > 
> > > I don't get it, why is max zero in this case?
> > 
> > In any configuration, the interface numbers must run from 0 to 
> > bNumInterfaces - 1.  Hence if there is only one interface, its number 
> > must be 0.
> 
> What do you think about this:
> 
> http://www.microsoft.com/whdc/system/bus/USB/USBFAQ_intermed.mspx
> > Does Windows have requirements or guidelines for assigning numbers to multiple interfaces on a composite device?
> > 
> > A USB device with more than one interface on the first configuration is treated as a composite device. Windows XP (prior to Service Pack 2) mandates that interface numbers follow these rules:
> > ??? Interface numbers must be zero-based.
> > ??? Interface numbers must be consecutive and increasing.
> > 
> > Windows XP Service Pack 2 (SP2) relaxed the requirement that interface numbers be consecutive by making changes to the driver Usbccgp.sys. Beginning with SP2, interface numbers need only be increasing.
> > 
> > For additional information about interface numbers, see Microsoft Knowledge Base article 814560.
> > 
> > Windows has provided support for USB composite devices since Windows 98. The driver Usbhub.sys supports composite devices on the following operating systems:
> > ??? The default value for an interface is always alternate setting zero.
> > ??? Additional alternate setting numbers must be consecutive and increasing.
> > 
> > For additional information on alternate settings, see Section 9.6.5 of the USB 2.0 specification, which is available from the USB Web site at http://www.usb.org/developers/docs .


I think it looks like Microsoft has to work around stupid hardware
developers just like we do :)

I'm guessing that people forgot to put a test for this in the USB
validation test suite, so they have to handle it.  Because of that,
there must be devices out there in the wild that do this, so we too,
need to also handle this kind of "broken" device.

Anyone want to make up a patch?

thanks,

greg k-h

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.