Hope this is the right place to ask, folks. If not, then sorry.

Briefly:
I've written a driver for a USB camera which sends 1600x1200 or 800x600
images across a USB 2.0 bulk pipe. It works in 1600x1200, but only gets
a couple of frames if switched to 800x600 mode before it wedges.

I had took a look at the traffic with a (borrowed) USB analyser. Sadly,
I've had to give it back to its owner now, and won't be able to repeat
the experiment.

The bulk pipe runs in 512 byte packet mode.

Turns out that 800x600 images don't fit in an integral number of 512
byte packets, and the last packet of every image is sent as 256 bytes
(this seems perfectly legal). However, *that's* what kills linux.
Occasionally it will handle the situation right, but very soon it will
wedge and never poll that endpoint again.

You can reset the device and get going again, but that's not a lot of
good to me!

The 1600x1200 pixel images transfer just fine: They do fit in an exact
number of 512 byte packets.

I can send 800x600 images if I tell the camera to run in "16 bits per
pixel mode" where it sends 2 bytes per pixel (it just so happens that it
can do that, and thus sends an integral number of 512 byte packets of
course).

                           ---------------

This has been the case since about August last year, with the 2.6.5
kernel. I'm on Fedora Core 2 with the stock 2.6.10-1.9_FC2 kernel now.

Any news would be good.
Thank you all for your time.

Steve Hosgood.




-------------------------------------------------------
This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting
Tool for open source databases. Create drag-&-drop reports. Save time
by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc.
Download a FREE copy at http://www.intelliview.com/go/osdn_nl
_______________________________________________
Linux-usb-users@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-users

Reply via email to