[argyllcms] Re: dispread fails with ubuntu packed argyllcms with i1pro

  • From: Graeme Gill <graeme@xxxxxxxxxxxxx>
  • To: argyllcms@xxxxxxxxxxxxx
  • Date: Sun, 10 Jan 2010 08:58:00 +1100

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.]

Graeme Gill.

Other related posts: