On Sat, Jan 9, 2010 at 10:58 PM, Graeme Gill <graeme@xxxxxxxxxxxxx> wrote: > Lars Tore Gustavsen wrote: >> >> When I run dispread it stop the measurements at about patch 340 and >> just hangs there. When I use the binary provided from Gill there is >> no such error. > > If you edit the source and change the SW_THREAD_TIMEOUT > #define to a smaller value (say 20.0 seconds), does it fail sooner ? > > If so it's a concurrent access issue with the USB driver. > > The way the switch is detected is that there is a concurrent > outstanding USB read that gets returned if the switch is hit. There > is normally a timeout of 10 minutes on this, so you get through > about 300 x 2 second display reads before it times out and the > timeout clashes with another USB read. > > The switch read is actually necessary on the Rev A and Rev B > instruments, or the instrument suffers 1.5 second internal delays. > [The Rev D. may not be so sensitive since it uses a different > micro and seems to have more buffering its USB.] > > libusb has to be able to deal with two threads accessing the > same device having independent timeouts. The original libusb V0.1 > code didn't handle that. > > [This is exactly why Argyll comes with its own copy of > libusb, and why I strongly object to Linux distributions > removing it - it's not a whim, there are very concrete reasons > for not trusting whatever version of libusb happens to be on > the system ! You certainly aren't doing yourselves or end users > any favors distributing broken versions of Argyll, and > I'm particularly unhappy about how it then reflects back > on upstream.] I just noticed Argyll is linked against libusb-0.1 which seems to still be the default version of libusb on Ubuntu. However, since Jaunty libusb-1.0 has been available in a packaged form, ready to go for install. The same is true for Debian Squeeze (testing). Would linking against libusb-1.0.x solve this issue? Or has the API changed? Regards, Pascal de Bruijn