Reason for not issuing URB = SELECT_INTERFACE.

Hi All,

As I am writing a virtual USB Bus driver on windows we were able to make all
the devices like mass-storage, printers, scanners, USB Headsets work
properly. But when we started working with webcamera’s we are facing issues
related to Video interface. Right now we are working with Logitech UVC
Camera and the drivers are from Microsoft Windows only, this device was
exported from the remote machine and then there lots of transactions which
have exchanged successfully. But now the transactions have stopped just
before it could issue SELECT_INTERFACE For the Video interface, so what
would be the reason it’s not issuing the SELECT_INTERFACE call for the video
interface, where as we received a call for Microphone (Audio) and this
particular interface works properly even we are able to record or do voice
chat also. But Video interface never gets activated, may I know if someone
can throw some light on this particular issue.

Thanks in advance.


This message, together with any attachment(s), contains confidential and proprietary information of
ServerEngines LLC and is intended only for the designated recipient(s) named above. Any unauthorized
review, printing, retention, copying, disclosure or distribution is strictly prohibited. If you are not the
intended recipient of this message, please immediately advise the sender by reply email message and
delete all copies of this message and any attachment(s). Thank you.

Vishwanath Maram wrote:

Right now we are working with Logitech UVC Camera and the drivers
are from Microsoft Windows only, this device was exported from the
remote machine and then there lots of transactions which have
exchanged successfully. But now the transactions have stopped just
before it could issue SELECT_INTERFACE For the Video interface,
so what would be the reason it’s not issuing the SELECT_INTERFACE
call for the video interface,

Have you considered installing the checked build of (what I assume is) usbvideo.sys and cranking up the debug spew from it? There might be some hints in there.

Did you implement Tim’s idea about buffering for isochronous transfers yet?

Hi Chris,

Is there any possibility of getting checked build for USBVideo.sys alone???
First of all my Video interface doesn’t get call for SELECT_INTERFACE so
where is the point in implementing buffering of ISOCH transfers???

I am missing set of 10-setup packets (Class Interface commands) which are as
given below:

a. 0x21 0x1 0x0 0x3 0x0 0x1 0x1 0x0

b. 0x21 0x1 0x0 0x2 0x0 0x1 0x1 0x0

c. 0x21 0x1 0x0 0x2 0x0 0x2 0x2 0x0

d. 0x21 0x1 0x0 0x3 0x0 0x2 0x2 0x0

e. 0x21 0x1 0x0 0x4 0x0 0x2 0x2 0x0

f. 0x21 0x1 0x0 0x1 0x0 0x2 0x2 0x0

g. 0x21 0x1 0x0 0x7 0x0 0x2 0x2 0x0

h. 0x21 0x1 0x0 0x8 0x0 0x2 0x2 0x0

i. 0x21 0x1 0x0 0xB 0x0 0x2 0x1 0x0

j. 0x21 0x1 0x0 0x5 0x0 0x2 0x1 0x0

k. 0x21 0x1 0x0 0x1 0x0 0x3 0x1 0x0

So I am not sure as to what these commands are??? Can any one throw some
light on these???

Thanks,
-Vishwanath

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of
xxxxx@gmail.com
Sent: Friday, February 08, 2008 7:57 PM
To: Windows System Software Devs Interest List
Subject: RE:[ntdev] Reason for not issuing URB = SELECT_INTERFACE.

Vishwanath Maram wrote:

Right now we are working with Logitech UVC Camera and the drivers
are from Microsoft Windows only, this device was exported from the
remote machine and then there lots of transactions which have
exchanged successfully. But now the transactions have stopped just
before it could issue SELECT_INTERFACE For the Video interface,
so what would be the reason it’s not issuing the SELECT_INTERFACE
call for the video interface,

Have you considered installing the checked build of (what I assume is)
usbvideo.sys and cranking up the debug spew from it? There might be some
hints in there.

Did you implement Tim’s idea about buffering for isochronous transfers yet?


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


This message, together with any attachment(s), contains confidential and proprietary information of
ServerEngines LLC and is intended only for the designated recipient(s) named above. Any unauthorized
review, printing, retention, copying, disclosure or distribution is strictly prohibited. If you are not the
intended recipient of this message, please immediately advise the sender by reply email message and
delete all copies of this message and any attachment(s). Thank you.

On Sun, Feb 10, 2008 at 12:28:11PM -0800, Vishwanath Maram wrote:

Is there any possibility of getting checked build for USBVideo.sys alone???
First of all my Video interface doesn’t get call for SELECT_INTERFACE so
where is the point in implementing buffering of ISOCH transfers???

I am missing set of 10-setup packets (Class Interface commands) which are as
given below:

a. 0x21 0x1 0x0 0x3 0x0 0x1 0x1 0x0
b. 0x21 0x1 0x0 0x2 0x0 0x1 0x1 0x0
c. 0x21 0x1 0x0 0x2 0x0 0x2 0x2 0x0
d. 0x21 0x1 0x0 0x3 0x0 0x2 0x2 0x0
e. 0x21 0x1 0x0 0x4 0x0 0x2 0x2 0x0
f. 0x21 0x1 0x0 0x1 0x0 0x2 0x2 0x0
g. 0x21 0x1 0x0 0x7 0x0 0x2 0x2 0x0
h. 0x21 0x1 0x0 0x8 0x0 0x2 0x2 0x0
i. 0x21 0x1 0x0 0xB 0x0 0x2 0x1 0x0
j. 0x21 0x1 0x0 0x5 0x0 0x2 0x1 0x0
k. 0x21 0x1 0x0 0x1 0x0 0x3 0x1 0x0

So I am not sure as to what these commands are??? Can any one throw some
light on these???

If you are working on such a low-level USB driver, surely you must have
downloaded the USB class specs by now. The video class spec describes
these. These are setting the state of the extension control units for
the camera – things like brightness, contrast, etc. The meaning of
the controls changes from camera to camera.

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

Vishwanath Maram wrote:

Is there any possibility of getting checked build for USBVideo.sys
alone??

Yes, of course there is. Unpack it from the checked build of XP SP2, dump it in System32\drivers with a different name, and then change ImagePath on the Services\usbvideo key to point to the new copy.

You say you’re missing a set of control requests from the driver to the device. Again, the driver is probably not sending them because it has detected some sort of error condition, and is bailing out. That’s why I suggested the checked build and its associated debug output.

First of all my Video interface doesn’t get call for SELECT_INTERFACE
so where is the point in implementing buffering of ISOCH transfers???

Because this is probably not going to work anyway even if you solve the problem that you’re currently facing.