USB High speed support in Device Driver ?

Hi All,
Earlier i used the usbsamp kmdf sample driver of DDK to develop a driver for our device. The device firmware is also developed by us. The host side driver works fine when the device side firmware driver has support for only full speed. But when the firmware side driver is extended to support for high speed, then the host side device driver is not loaded during installation and says device could not start, error code 10

Is there anything that needs to be coded in the host side function driver to support USB High speed communication ?

Did you attach a debugger and see what in the start up path failed?

d

Sent from my phone with no t9, all spilling mistakes are not intentional.

-----Original Message-----
From: xxxxx@gmail.com
Sent: Sunday, December 07, 2008 10:10 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] USB High speed support in Device Driver ?

Hi All,
Earlier i used the usbsamp kmdf sample driver of DDK to develop a driver for our device. The device firmware is also developed by us. The host side driver works fine when the device side firmware driver has support for only full speed. But when the firmware side driver is extended to support for high speed, then the host side device driver is not loaded during installation and says device could not start, error code 10


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer

xxxxx@gmail.com wrote:

Hi All,
Earlier i used the usbsamp kmdf sample driver of DDK to develop a driver for our device. The device firmware is also developed by us. The host side driver works fine when the device side firmware driver has support for only full speed. But when the firmware side driver is extended to support for high speed, then the host side device driver is not loaded during installation and says device could not start, error code 10

What changes did you make in the descriptors? Did you change the
control endpoint size, or your bulk endpoint max size? Some of the
specs are different.


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.

I did not make any changes in the descriptors and neither the size of the control endpoint or bulk endpoint. The Max size of the bulk endpoints is still 512 bytes and control endpoints is 64bytes. I change a register setting of the usb controller to make it work on high speed. When plug in the device, OS pops a message as “Device can workk faster…”. Do I need to change the descriptors ? Also the kmdf driver does not get loaded. Is the usbsamp driver efficient enough to work on full and high speed ?

Yes, it is efficient enough to run at high speed.

-----Original Message-----
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of xxxxx@gmail.com
Sent: Monday, December 08, 2008 9:52 PM
To: Windows System Software Devs Interest List
Subject: RE:[ntdev] USB High speed support in Device Driver ?

I did not make any changes in the descriptors and neither the size of the control endpoint or bulk endpoint. The Max size of the bulk endpoints is still 512 bytes and control endpoints is 64bytes. I change a register setting of the usb controller to make it work on high speed. When plug in the device, OS pops a message as “Device can workk faster…”. Do I need to change the descriptors ? Also the kmdf driver does not get loaded. Is the usbsamp driver efficient enough to work on full and high speed ?


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer

So i guess you are saying there is no problem with the host side device driver. There might be some problem with the firmware code on the device side. I am not able to debug 'coz of some setup problem…but surely i’ll get back n let u’ll know what i see in the debugger…

xxxxx@gmail.com wrote:

I did not make any changes in the descriptors and neither the size of the control endpoint or bulk endpoint. The Max size of the bulk endpoints is still 512 bytes and control endpoints is 64bytes.

Well, then you aren’t telling us the whole story. On a full-speed (USB
1.x compatible) device, a bulk endpoint max packet size can only be 8,
16, 32, or 64 bytes. On a high-speed (USB 2.0) device, a bulk endpoint
max packet size must be 512 bytes. You can’t use the same size for both
speeds. Further, if you hope to support both speeds in a single device,
you must have two different configuration descriptors, and your device
has to deliver the one that is appropriate for the speed that was
negotiated at reset time.

I change a register setting of the usb controller to make it work on high speed. When plug in the device, OS pops a message as “Device can workk faster…”.

There are three things needed to make your device work at high speed.
One, the device must be configured to present the magic “I can do high
speed” sequence when it comes out of reset. Two, your descriptors must
be changed to identify yourself as USB 2.0 compliant. Third, you must
plug it into a USB 2 capable port (including all of the intermediate
hubs). The fact that you got that message suggests you have missed one
of these criteria.


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.