A couple of years ago, I created a Mac port of a custom viewer app for a USB 
document camera designed for people with visual disabilities.  Everything 
worked fine in 10.7 through 10.10, but the company recently contacted me and 
told me that the camera itself isn't working reliably in 10.11.

It looks like something in the actual device probing has changed in a way that 
is causing the camera to disappear from the bus and reinitialize itself 
repeatedly.  What's curious is that if I plug it into a 10.9 machine first, and 
then plug it into a 10.11 machine, the camera magically works.  I suspect that 
the camera's firmware is expecting the probing process to do things in some 
particular order, and is using that to guess whether it is plugged into a 
modern computer or some ancient Windows version, and that the new probing in 
10.11 causes it to go down the wrong code path.

It would be nice if it were possible to get this fixed in a way that doesn't 
involve updating the device's firmware, as that's likely to be beyond the 
abilities of a large percentage of the hardware's users.  To that end, I filed 
rdar://24818005 a couple of weeks ago.

In the short term, I'm also trying to come up with a user-space software 
workaround in the viewer app itself, assuming that's possible.  So far, I've 
tried opening up the video endpoint's interface interface, clearing pipe stalls 
at both ends, and closing it.  I've also tried telling the device interface to 
reset, to reenumerate, etc.  Neither approach made any difference.  (I'm not 
surprised that these things didn't help, but they seemed like a good first 
attempt.)

Of course, there's a hardware quirk that further compounds the problem: this camera presents a USB 
"disk" (really, an internal flash card) as a USB 2.0 device, but uses a chipset that can't 
support > 64-byte accesses, so when the OS tries to request 512-byte accesses, it fails.  In 10.7 
through 10.10, the OS gave up trying to change the request size after a few tries, preventing the 
internal "disk" from appearing, but the other endpoints worked normally.  It may be that the 
detection of that error case isn't happening correctly in 10.11, resulting in the OS sending 512-byte 
requests that crash the device.  Unfortunately, I can't find any way to enable USB logging in 10.11 to 
determine whether that bug is part of the problem or is just a red herring.

Any ideas on how to further debug this and/or work around the issue?  Does 
anybody in the South Bay have a USB analyzer that I could use for an hour or so?


David

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Usb mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/usb/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to