It has been working perfectly, now it does not communicate properly. Tested with both 1.3.0 and 1.3.3, 64-bit Gentoo system with kernel 2.6.39. I have other systems and need to try it on them before drawing any conclusions. DLL file is loaded with spyd2en after each installation. Same result both as root and normal user. Comes up as Bus 001 Device 007: ID 085c:0200 ColorVision, Inc. Monitor Spyder but dispcal gives: 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' 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 0x2 usb_check_and_add() called with VID 0x1d6b, PID 0x3 usb_check_and_add() called with VID 0x8087, PID 0x24 usb_check_and_add() called with VID 0x8087, PID 0x24 usb_check_and_add() called with VID 0x46d, PID 0xc062 usb_check_and_add() called with VID 0x781, PID 0x2 usb_check_and_add() called with VID 0x85c, PID 0x200 usb_check_and_add() found known instrument spyd2: About to init coms spyd2: About to init USB icoms: About to set usb port characteristics icoms: About to open the USB port, tries 0 icoms: USB port needs opening icoms: About to open USB port 'usb:/bus1/dev6/ (ColorVision Spyder2)' icoms: USB port is now open icoms: Clearing any USB errors icoms: usb port characteristics set ok spyd2: init coms has suceeded spyd2: About to init instrument spyd2: Instrument reset Reset complete, ICOM code 0x0 spyd2: Get Status Get Status returns 3 ICOM err 0x0 spyd2: Get Status Get Status returns 1 ICOM err 0x0 spyd2: about to read all the EEProm values spyd2: Read EEProm addr 5, bytes 2 Read EEProm ICOM err 0x0 hwver = 0x307 spyd2: Read EEProm addr 8, bytes 8 Read EEProm ICOM err 0x0 serno = '00673528' spyd2: Read EEProm addr 16, bytes 108 Read EEProm ICOM err 0x0 spyd2: Read EEProm addr 128, bytes 108 Read EEProm ICOM err 0x0 spyd2: Read EEProm addr 256, bytes 108 Read EEProm ICOM err 0x0 spyd2: Read EEProm addr 384, bytes 108 Read EEProm ICOM err 0x0 spyd2: Read EEProm addr 240, bytes 4 Read EEProm ICOM err 0x0 spyd2: Read EEProm addr 244, bytes 4 Read EEProm ICOM err 0x0 spyd2: Read EEProm addr 248, bytes 4 Read EEProm ICOM err 0x0 spyd2: Read EEProm addr 252, bytes 4 Read EEProm ICOM err 0x0 spyd2: Read EEProm addr 364, bytes 4 Read EEProm ICOM err 0x0 spyd2: Read EEProm addr 368, bytes 4 Read EEProm ICOM err 0x0 spyd2: Read EEProm addr 372, bytes 4 Read EEProm ICOM err 0x0 Cal_A: Cal_A [0][0][0] = 0.000000 Cal_A [0][0][1] = 0.000000 Cal_A [0][0][2] = 0.019374 Cal_A [0][0][3] = 0.024885 Cal_A [0][0][4] = -0.053044 Cal_A [0][0][5] = -0.002640 Cal_A [0][0][6] = 0.111487 Cal_A [0][0][7] = -0.046170 Cal_A [0][0][8] = -0.029479 Cal_A [0][1][0] = 0.000000 Cal_A [0][1][1] = 0.000000 Cal_A [0][1][2] = -0.002986 Cal_A [0][1][3] = 0.004457 Cal_A [0][1][4] = 0.002402 Cal_A [0][1][5] = 0.048627 Cal_A [0][1][6] = -0.077734 Cal_A [0][1][7] = 0.016248 Cal_A [0][1][8] = -0.017704 Cal_A [0][2][0] = 0.000000 Cal_A [0][2][1] = 0.000000 Cal_A [0][2][2] = 0.092545 Cal_A [0][2][3] = 0.122484 Cal_A [0][2][4] = -0.200947 Cal_A [0][2][5] = -0.042058 Cal_A [0][2][6] = 0.034637 Cal_A [0][2][7] = -0.016964 Cal_A [0][2][8] = 0.007890 Cal_A [1][0][0] = 0.000000 Cal_A [1][0][1] = 0.000000 Cal_A [1][0][2] = 0.102467 Cal_A [1][0][3] = 0.154499 Cal_A [1][0][4] = -0.304573 Cal_A [1][0][5] = -0.131179 Cal_A [1][0][6] = 1.271313 Cal_A [1][0][7] = -0.180140 Cal_A [1][0][8] = -0.318545 Cal_A [1][1][0] = 0.000000 Cal_A [1][1][1] = 0.000000 Cal_A [1][1][2] = -0.079428 Cal_A [1][1][3] = 0.065709 Cal_A [1][1][4] = -0.009309 Cal_A [1][1][5] = 0.240908 Cal_A [1][1][6] = 0.047066 Cal_A [1][1][7] = -0.062251 Cal_A [1][1][8] = -0.174418 Cal_A [1][2][0] = 0.000000 Cal_A [1][2][1] = 0.000000 Cal_A [1][2][2] = 0.134473 Cal_A [1][2][3] = 1.019679 Cal_A [1][2][4] = -1.267010 Cal_A [1][2][5] = -0.201052 Cal_A [1][2][6] = 0.075051 Cal_A [1][2][7] = -0.031764 Cal_A [1][2][8] = 0.019242 Cal_B: Cal_B [0][0][0] = 0.580946 Cal_B [0][0][1] = 0.055783 Cal_B [0][0][2] = 0.010972 Cal_B [0][0][3] = 0.000689 Cal_B [0][0][4] = 0.000235 Cal_B [0][0][5] = -0.000051 Cal_B [0][0][6] = -0.000562 Cal_B [0][0][7] = -0.000199 Cal_B [0][0][8] = 0.000024 Cal_B [0][1][0] = -0.195381 Cal_B [0][1][1] = 0.829441 Cal_B [0][1][2] = 0.018046 Cal_B [0][1][3] = 0.000984 Cal_B [0][1][4] = 0.000250 Cal_B [0][1][5] = -0.000095 Cal_B [0][1][6] = -0.000736 Cal_B [0][1][7] = -0.000351 Cal_B [0][1][8] = 0.000065 Cal_B [0][2][0] = 0.059440 Cal_B [0][2][1] = -0.017352 Cal_B [0][2][2] = 0.681397 Cal_B [0][2][3] = 0.000428 Cal_B [0][2][4] = 0.000222 Cal_B [0][2][5] = -0.000004 Cal_B [0][2][6] = -0.000442 Cal_B [0][2][7] = -0.000047 Cal_B [0][2][8] = 0.000000 Cal_B [1][0][0] = 1.000000 Cal_B [1][0][1] = 0.000000 Cal_B [1][0][2] = 0.000000 Cal_B [1][0][3] = 0.000000 Cal_B [1][0][4] = 0.000000 Cal_B [1][0][5] = 0.000000 Cal_B [1][0][6] = 0.000000 Cal_B [1][0][7] = 0.000000 Cal_B [1][0][8] = 0.000000 Cal_B [1][1][0] = 0.000000 Cal_B [1][1][1] = 1.000000 Cal_B [1][1][2] = 0.000000 Cal_B [1][1][3] = 0.000000 Cal_B [1][1][4] = 0.000000 Cal_B [1][1][5] = 0.000000 Cal_B [1][1][6] = 0.000000 Cal_B [1][1][7] = 0.000000 Cal_B [1][1][8] = 0.000000 Cal_B [1][2][0] = 0.000000 Cal_B [1][2][1] = 0.000000 Cal_B [1][2][2] = 1.000000 Cal_B [1][2][3] = 0.000000 Cal_B [1][2][4] = 0.000000 Cal_B [1][2][5] = 0.000000 Cal_B [1][2][6] = 0.000000 Cal_B [1][2][7] = 0.000000 Cal_B [1][2][8] = 0.000000 Cal_F: Cal_F [0] = -0.186835 Cal_F [1] = 0.566588 Cal_F [2] = -0.194569 Cal_F [3] = -0.427213 Cal_F [4] = 0.457238 Cal_F [5] = -0.194608 Cal_F [6] = 0.042038 spyd2: all EEProm read OK spyd2: about to download the PLD pattern spyd2: Load PLD 8 bytes Load PLD returns ICOM err 0x0 ( spyd2: Load PLD 8 bytes Load PLD returns ICOM err 0x0 ) repeated many times spyd2: Get Status Get Status returns 0 ICOM err 0x0 spyd2: PLD pattern downloaded spyd2: Get Reading, clocks = 500, minfc = 0, maxfc = 0 Trigger Get Reading returns ICOM code 0x0 spyd2: Get Reading retry with ICOM err 0x2000 spyd2: Resetting end point Trigger Get Reading returns ICOM code 0x0 Get Reading Stat retry with ICOM err 0x2000 Trigger Get Reading returns ICOM code 0x0 Get Reading Stat retry with ICOM err 0x2000 Trigger Get Reading returns ICOM code 0x0 Get Reading Stat retry with ICOM err 0x2000 Trigger Get Reading returns ICOM code 0x0 spyd2: Get Reading Stat failed with ICOM err 0x2000 init_inst returned 'Communications failure' (Communications failure) new_disprd failed because init_inst failed icoms: delete called icoms: closing port usb_close_port() called usb port has been released and closed argyll-dispcal: Error - new_disprd() failed with 'Instrument Access Failed'