W
W
WYCOR2013-08-15 11:49:58
C++ / C#
WYCOR, 2013-08-15 11:49:58

What is other speed descriptor in relation to USB?

In an example, I came across this code:

Uint16    OtherSpeedcfgDesc[40] = {0x0709, 0x004A, 0x0201, 0xC001, 0x0928,    	 // Configure descriptor
                                 0x0004, 0x0800, 0x0000, 0x0000,          		 // Interface descriptor
                             0x0507, 0x0281, 0x0040, 0x0700,			//endpoint 1 IN descriptor
                             0x0105, 0x4002, 0x0000, 					//endpoint 1 OUT descriptor
                             0x0507, 0x0282, 0x0040, 0x0700,			//endpoint 2 IN descriptor
                             0x0205, 0x4002, 0x0000, 					//endpoint 2 OUT descriptor
                             0x0507, 0x0283, 0x0040, 0x0700, 			//endpoint 3 IN descriptor
                             0x0305, 0x4002, 0x0000,					//endpoint 3 OUT descriptor
                             0x0507, 0x0284, 0x0040, 0x0700, 			//endpoint 4 IN descriptor
                             0x0405, 0x4002, 0x0000						//endpoint 4 OUT descriptor
                                };


What is it? Why is this?
I did not find any explanations either in the documentation or in Google, maybe I was looking badly, but I tried.
Tell me what it is.

Or where to read about it.

Answer the question

In order to leave comments, you need to log in

3 answer(s)
C
CleverMouse, 2013-08-16
@WYCOR

The first byte of any usb descriptor is the length, the second byte is the type. Descriptor 09 07 4A 00 01 02 01 C0 28 is of type 7, OTHER_SPEED_CONFIGURATION.
Have you ever seen the message "This device can run faster"?

If a HighSpeed ​​device (USB2 speed) is connected to a computer or hub that does not understand USB2, but only knows USB1 FullSpeed/LowSpeed ​​speeds, the device must go through several initial stages of initialization as FullSpeed. Fully work is not required, although it usually works. The OTHER_SPEED_CONFIGURATION descriptor, if it exists, is the device’s way in such a situation to tell the system that although it is now running on FullSpeed, it also knows about HighSpeed, it’s just that such a hub got along the way or the computer is old. Purely FullSpeed ​​devices do not have it.
A partially correct link to the documentation has already been given to you above. In USB3, type 7 is marked as Reserved and not used, but there is a link "Note that when operating at USB 2.0 speeds, the device shall report the other USB 2.0 speeds it supports using the standard mechanism defined in the USB 2.0 specification". You need to read the USB2 specification, paragraph, indeed, 9.6.4. However, it is not particularly interesting there - the structure of the descriptor is exactly the same as the structure of a regular Configuration Descriptor, adjusted for the type.

M
mihalicyn, 2013-08-15
@mihalicyn

www.usb.org/developers/docs/usb_31_073113.zip point 9.6.4 ;)

1
1x1, 2013-08-15
@1x1

A device has one device descriptor and can have multiple configuration descriptors. It looks like it's just one of them.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question