(Replying manually since I was unsubscribed for a bit and missed your reply.) Hello, Graeme! > Sorry, I'm unable to reproduce this. > > First try simplifying your options. [sroot@oof:/usr/src/argyll/Argyll_V1.3.0/bin]# ./dispcal -v -yl acd XRandR 1.2 is faulty - falling back to older extensions Setting up the instrument dispcal: Error - new_disprd() failed with 'Instrument Access Failed' [sroot@oof:/usr/src/argyll/Argyll_V1.3.0/bin]# ./dispcal -v -yl -K acd XRandR 1.2 is faulty - falling back to older extensions Setting up the instrument dispcal: Error - docalibration failed with return value -1 [sroot@oof:/usr/src/argyll/Argyll_V1.3.0/bin]# ./dispcal -v -D5 -K acd Checking XRandR 1.2 VideoLUT access XRandR 1.2 is faulty - falling back to older extensions get_displays checking for Xinerama Display 0 name = ':0.0' Display 1 name = ':0.1' Setting up the instrument usb_get_paths about to look through devices: usb_check_and_add() called with VID 0x1d6b, PID 0x2 usb_check_and_add() called with VID 0x1d6b, PID 0x2 usb_check_and_add() called with VID 0x1d6b, PID 0x1 usb_check_and_add() called with VID 0x1d6b, PID 0x1 usb_check_and_add() called with VID 0x1d6b, PID 0x1 usb_check_and_add() called with VID 0x1d6b, PID 0x1 usb_check_and_add() called with VID 0x1d6b, PID 0x1 usb_check_and_add() called with VID 0x51d, PID 0x2 usb_check_and_add() called with VID 0x9da, PID 0xe usb_check_and_add() called with VID 0x765, PID 0xd094 usb_check_and_add() found known instrument usb_check_and_add() called with VID 0x5ac, PID 0x911c usb_check_and_add() called with VID 0x5ac, PID 0x921c managed to open serial "/dev/ttyS2" managed to open serial "/dev/ttyS1" managed to open serial "/dev/ttyS3" managed to open serial "/dev/ttyS0" dtp92: About to init coms dtp92Q/dtp94: About to init USB icoms: About to set usb port characteristics icoms: About to open the USB port icoms: USB port needs opening icoms: About to open USB port 'usb:/bus5/dev7/ (Xrite DTP94)' icoms: USB port is now open icoms: Clearing any USB errors icoms: usb port characteristics set ok icoms: Write_Read called with '0PR^M' icoms: About to write '0PR^M' ICOM err 0x200 icoms: Write_Read Write failed - returning 0x200 icoms: Write_Read called with '0PR^M' icoms: About to write '0PR^M' ICOM err 0x200 icoms: Write_Read Write failed - returning 0x200 icoms: Write_Read called with '^M' icoms: About to write '^M' ICOM err 0x200 icoms: Write_Read Write failed - returning 0x200 dtp92: init coms has failed icoms: delete called icoms: closing port usb_close_port() called usb port has been released and closed init_coms returned 'Communications failure' (No device error) dispcal: Error - docalibration failed with return value -1 Here is the same call with packaged argyll 1.1.1: [sroot@oof:/usr/src/argyll/Argyll_V1.3.0/bin]# dispcal -v -D5 -K acd Checking XRandR 1.2 VideoLUT access XRandR 1.2 is faulty - falling back to older extensions get_displays checking for Xinerama Display 0 name = ':0.0' Display 1 name = ':0.1' Setting up the instrument usb_get_paths about to look through buses: usb_get_paths about to look through devices: usb_check_and_add() called with VID 0x9da, PID 0xe usb_check_and_add() called with VID 0x1d6b, PID 0x1 usb_get_paths about to look through devices: usb_check_and_add() called with VID 0x1d6b, PID 0x2 usb_get_paths about to look through devices: usb_check_and_add() called with VID 0x5ac, PID 0x921c usb_check_and_add() called with VID 0x5ac, PID 0x911c usb_check_and_add() called with VID 0x1d6b, PID 0x2 usb_get_paths about to look through devices: usb_check_and_add() called with VID 0x765, PID 0xd094 usb_check_and_add() found known instrument usb_check_and_add() called with VID 0x1d6b, PID 0x1 usb_get_paths about to look through devices: usb_check_and_add() called with VID 0x51d, PID 0x2 usb_check_and_add() called with VID 0x1d6b, PID 0x1 usb_get_paths about to look through devices: usb_check_and_add() called with VID 0x1d6b, PID 0x1 usb_get_paths about to look through devices: usb_check_and_add() called with VID 0x1d6b, PID 0x1 managed to open serial "/dev/ttyS2" managed to open serial "/dev/ttyS1" managed to open serial "/dev/ttyS3" managed to open serial "/dev/ttyS0" dtp92: About to init coms dtp92Q/dtp94: About to init USB icoms: About to set usb port characteristics icoms: About to open the USB port icoms: USB port needs opening icoms: About to open USB port 'usb:/bus0/dev7 (Xrite DTP94)' icoms: USB port is now open icoms: Clearing any USB errors icoms: usb port characteristics set ok icoms: Write_Read called with '0PR^M' icoms: About to write '0PR^M' ICOM err 0x0 icoms: Read called icoms: About to return read '<00>' ICOM err 0x0 icoms: Write_Read Write_Read success, returning '<00>' icoms: Write_Read called with '0PR^M' icoms: About to write '0PR^M' ICOM err 0x0 icoms: Read called icoms: About to return read '<00>' ICOM err 0x0 icoms: Write_Read Write_Read success, returning '<00>' icoms: Write_Read called with '^M' icoms: About to write '^M' ICOM err 0x0 icoms: Read called icoms: About to return read '<00>' ICOM err 0x0 icoms: Write_Read Write_Read success, returning '<00>' icoms: Write_Read called with '0PR^M' icoms: About to write '0PR^M' ICOM err 0x0 icoms: Read called icoms: About to return read '<00>' ICOM err 0x0 icoms: Write_Read Write_Read success, returning '<00>' dtp92: init coms has suceeded dtp92: About to init instrument ... It seems like something different with the way it is writing to the USB device. ./dispcal -v -D255 -K acd shows: icoms: usb port characteristics set ok icoms: Write_Read called with '0PR^M' icoms: About to write '0PR^M' libusb:error [submit_bulk_transfer] submiturb failed error -1 errno=22 ICOM err 0x200 icoms: Write_Read Write failed - returning 0x200 errno=22 == EINVAL strace of the area: write(2, "\nicoms: Write_Read called with '0PR^M'\n", 39 icoms: Write_Read called with '0PR^M' ) = 39 write(2, "icoms: About to write '0PR^M' ", 30icoms: About to write '0PR^M' ) = 30 ioctl(5, USBDEVFS_SUBMITURB or USBDEVFS_SUBMITURB32, 0x79d420) = -1 EINVAL (Invalid argument) write(2, "ICOM err 0x200\n", 15ICOM err 0x200 ) = 15 write(2, "icoms: Write_Read Write failed - returning 0x200\n", 49icoms: Write_Read Write failed - returning 0x200 ) = 49 gdb: [sroot@oof:/usr/src/argyll/Argyll_V1.3.0/spectro]# gdb --args ./dispcal -v -D5 -K acd GNU gdb (GDB) 7.2-debian Copyright (C) 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-linux-gnu". For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>... Reading symbols from /usr/src/argyll/Argyll_V1.3.0/spectro/dispcal...done. (gdb) set print pretty (gdb) b ioctl Breakpoint 1 at 0x403bf8 (gdb) r Starting program: /usr/src/argyll/Argyll_V1.3.0/spectro/dispcal -v -D5 -K acd [Thread debugging using libthread_db enabled] Checking XRandR 1.2 VideoLUT access XRandR 1.2 is faulty - falling back to older extensions get_displays checking for Xinerama Display 0 name = ':0.0' Display 1 name = ':0.1' Setting up the instrument usb_get_paths about to look through devices: usb_check_and_add() called with VID 0x1d6b, PID 0x2 usb_check_and_add() called with VID 0x1d6b, PID 0x2 usb_check_and_add() called with VID 0x1d6b, PID 0x1 usb_check_and_add() called with VID 0x1d6b, PID 0x1 usb_check_and_add() called with VID 0x1d6b, PID 0x1 usb_check_and_add() called with VID 0x1d6b, PID 0x1 usb_check_and_add() called with VID 0x1d6b, PID 0x1 usb_check_and_add() called with VID 0x51d, PID 0x2 usb_check_and_add() called with VID 0x9da, PID 0xe usb_check_and_add() called with VID 0x765, PID 0xd094 usb_check_and_add() found known instrument usb_check_and_add() called with VID 0x5ac, PID 0x911c usb_check_and_add() called with VID 0x5ac, PID 0x921c managed to open serial "/dev/ttyS2" managed to open serial "/dev/ttyS1" managed to open serial "/dev/ttyS3" managed to open serial "/dev/ttyS0" dtp92: About to init coms dtp92Q/dtp94: About to init USB icoms: About to set usb port characteristics icoms: About to open the USB port icoms: USB port needs opening icoms: About to open USB port 'usb:/bus5/dev7/ (Xrite DTP94)' Breakpoint 1, ioctl () at ../sysdeps/unix/syscall-template.S:82 82 ../sysdeps/unix/syscall-template.S: No such file or directory. in ../sysdeps/unix/syscall-template.S (gdb) up #1 0x00000000004ec11d in op_set_configuration (handle=0x7a0f00, config=1) at libusb1/libusb/os/linux_usbfs.c:1100 1100 int r = ioctl(fd, IOCTL_USBFS_SETCONFIG, &config); (gdb) c Continuing. Breakpoint 1, ioctl () at ../sysdeps/unix/syscall-template.S:82 82 ../sysdeps/unix/syscall-template.S: No such file or directory. in ../sysdeps/unix/syscall-template.S (gdb) up #1 0x00000000004ec27d in op_claim_interface (handle=0x7a0f00, iface=0) at libusb1/libusb/os/linux_usbfs.c:1134 1134 int r = ioctl(fd, IOCTL_USBFS_CLAIMINTF, &iface); (gdb) c Continuing. Breakpoint 1, ioctl () at ../sysdeps/unix/syscall-template.S:82 82 ../sysdeps/unix/syscall-template.S: No such file or directory. in ../sysdeps/unix/syscall-template.S (gdb) up #1 0x00000000004ec552 in op_clear_halt (handle=0x7a0f00, endpoint=129 '\201') at libusb1/libusb/os/linux_usbfs.c:1214 1214 int r = ioctl(fd, IOCTL_USBFS_CLEAR_HALT, &_endpoint); (gdb) c Continuing. Breakpoint 1, ioctl () at ../sysdeps/unix/syscall-template.S:82 82 ../sysdeps/unix/syscall-template.S: No such file or directory. in ../sysdeps/unix/syscall-template.S (gdb) up #1 0x00000000004ec552 in op_clear_halt (handle=0x7a0f00, endpoint=2 '\002') at libusb1/libusb/os/linux_usbfs.c:1214 1214 int r = ioctl(fd, IOCTL_USBFS_CLEAR_HALT, &_endpoint); (gdb) c Continuing. icoms: USB port is now open icoms: Clearing any USB errors icoms: usb port characteristics set ok icoms: Write_Read called with '0PR^M' icoms: About to write '0PR^M' Breakpoint 1, ioctl () at ../sysdeps/unix/syscall-template.S:82 82 ../sysdeps/unix/syscall-template.S: No such file or directory. in ../sysdeps/unix/syscall-template.S (gdb) up #1 0x00000000004ecc32 in submit_bulk_transfer (itransfer=0x7a0360, urb_type=1 '\001') at libusb1/libusb/os/linux_usbfs.c:1414 1414 r = ioctl(dpriv->fd, IOCTL_USBFS_SUBMITURB, urb); (gdb) print *urb $1 = { type = 1 '\001', endpoint = 2 '\002', status = 0, flags = 1, buffer = 0x4f5399, buffer_length = 4, actual_length = 0, start_frame = 0, number_of_packets = 0, error_count = 0, signr = 0, usercontext = 0x7a0360, iso_frame_desc = 0x7a0420 } (gdb) x/4xb 0x4f5399 0x4f5399: 0x30 0x50 0x52 0x0d (gdb) c Continuing. ICOM err 0x200 icoms: Write_Read Write failed - returning 0x200 icoms: Write_Read called with '0PR^M' icoms: About to write '0PR^M' gdb of 1.1.1 is a bit longer, but the ioctl() seems to work fine: icoms: USB port is now open icoms: Clearing any USB errors icoms: usb port characteristics set ok icoms: Write_Read called with '0PR^M' icoms: About to write '0PR^M' Breakpoint 1, ioctl () at ../sysdeps/unix/syscall-template.S:82 82 in ../sysdeps/unix/syscall-template.S (gdb) bt #0 ioctl () at ../sysdeps/unix/syscall-template.S:82 #1 0x000000000045ad5f in usb_urb_transfer (dev=0x782970, ep=2, urbtype=1, bytes=<value optimized out>, size=<value optimized out>, timeout=<value optimized out>) at linux.c:219 #2 0x000000000045b609 in usb_interrupt_write (dev=0x3, ep=-2143791862, bytes=<value optimized out>, size=<value optimized out>, timeout=<value optimized out>) at linux.c:467 #3 0x0000000000456200 in icoms_usb_interrupt_write () #4 0x0000000000456625 in icoms_usb_ser_write () #5 0x0000000000456085 in icoms_write_read () #6 0x0000000000423228 in T.69 () #7 0x00000000004232c9 in dtp92_command () #8 0x0000000000423d20 in dtp92_init_coms () #9 0x0000000000412399 in disprd_calibration () #10 0x00000000004071cf in main () (gdb) up #1 0x000000000045ad5f in usb_urb_transfer (dev=0x782970, ep=2, urbtype=1, bytes=<value optimized out>, size=<value optimized out>, timeout=<value optimized out>) at linux.c:219 219 ret = ioctl(dev->fd, IOCTL_USB_SUBMITURB, &urb[0]); (gdb) print *urb $1 = {type = 1 '\001', endpoint = 2 '\002', status = 32767, flags = 0, buffer = 0x4e73b9, buffer_length = 4, actual_length = 0, start_frame = 7853120, number_of_packets = 0, error_count = -1, signr = 0, usercontext = 0x0, iso_frame_desc = 0x7ffffffd9100} (gdb) x/4xb 0x4e73b9 0x4e73b9: 0x30 0x50 0x52 0x0d Cheers, Simon-