Problème USB avec sonde colorimétrique

Top Page

Reply to this message
Author: Frédéric Mantegazza
Date:  
To: guilde
Subject: Problème USB avec sonde colorimétrique
Noooonnn ? si !

Il s'agit d'une sonde colorimétrique maison, dévelopée par des gars du
forum hcfr (http://www.homcinema-fr/colorimetre). Cette sonde utilise un
protocole série sur USB. J'arrive sans soucis à dialoguer avec elle sous
Linux en python via le device /dev/ttyACM0 (avec driver cdc-acm).

Maintenant, j'aimerais la faire fonctionner avec la suite de calibration
ArgyllCMS (http://www.argyllcms.com), dans laquelle le développeur à
ajouté le support (je lui ai donné une sonde pour qu'il fasse les tests).

Argyll utilise non pas /dev/ttyACM0, mais la libusb, pour être portable,
car ce soft tourne sous win32, MacOS et unix (générique). Mais chez moi,
ça ne marche évidemment pas !

Déjà, j'avais blacklisté le driver cdc-acm pour qu'il n'y ait pas de
conflit. Ensuite, j'ai ajouté une règle udev :

SYSFS{idVendor}=="04db",SYSFS{idProduct}=="005b",GROUP="plugdev",MODE="660"

1) lorsque je branche la sonde, j'ai déjà un truc bizarre : la souris est
(re)détectée au même instant !

# tail -f /var/log/messages
...
Sep 12 08:23:13 coruscant kernel: usb 4-1: new low speed USB device using
ohci_hcd and address 50
Sep 12 08:23:13 coruscant kernel: usb 4-1: configuration #1 chosen from 1
choice
Sep 12 08:23:13 coruscant kernel: input: Logitech USB-PS/2 Optical Mouse
as /class/input/input51
Sep 12 08:23:13 coruscant kernel: input: USB HID v1.10 Mouse [Logitech
USB-PS/2 Optical Mouse] on usb-0000:03:00.1-1
Sep 12 08:23:13 coruscant kernel: ohci_hcd 0000:03:00.0: wakeup
Sep 12 08:23:13 coruscant kernel: usb 3-1: new full speed USB device using
ohci_hcd and address 46
Sep 12 08:23:13 coruscant kernel: usb 3-1: configuration #1 chosen from 1
choice

(à noter que même si je débranche la souris, ça ne résoud rien, mais bon,
c'est quand même un signe bizarre...).

lsusb voit bien les 2 distinctement :

$ lsusb
Bus 005 Device 001: ID 0000:0000
Bus 004 Device 050: ID 046d:c03e Logitech, Inc. Premium Optical Wheel Mouse
Bus 004 Device 001: ID 0000:0000
Bus 003 Device 046: ID 04db:005b Hypertec Pty, Ltd
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000

2) Lors de l'écriture, un strace me donne :

...
gettimeofday({1189578183, 295467}, NULL) = 0
ioctl(3, USBDEVFS_REAPURBNDELAY, 0xbfc2f648) = -1 EAGAIN (Resource 
  temporarily unavailable)
select(4, NULL, [], NULL, {0, 1000})    = 0 (Timeout)
gettimeofday({1189578183, 299269}, NULL) = 0
ioctl(3, USBDEVFS_REAPURBNDELAY, 0xbfc2f648) = -1 EAGAIN (Resource 
  temporarily unavailable)
select(4, NULL, [], NULL, {0, 1000})    = 0 (Timeout)
gettimeofday({1189578183, 303259}, NULL) = 0
ioctl(3, USBDEVFS_REAPURBNDELAY, 0xbfc2f648) = -1 EAGAIN (Resource 
  temporarily unavailable)
select(4, NULL, [], NULL, {0, 1000})    = 0 (Timeout)
gettimeofday({1189578183, 307264}, NULL) = 0
ioctl(3, USBDEVFS_REAPURBNDELAY, 0xbfc2f648) = -1 EAGAIN (Resource 
  temporarily unavailable)
...


à l'infini. Mon scanner (que je n'ai pas rebranché depuis un moment), me
donnait les même erreurs : il mettait un temps fou pour s'initialiser,
mais au bout d'un moment, finissait par fonctionner. Là, j'ai augmenté les
timeout dans Argyll, sans succès.

3) dans /var/log/message, lors de l'accès, je vois apparaître :

ttyS3: LSR safety check engaged!

qui semble signifier que le port série physique n'a pas été trouvé.

Les réponses que j'avais eu ici à l'époque du scanner disaient que c'était
probablement un soucis avec udev :o/ Je veux bien le croire, mais je n'y
pige toujours rien ! Pour info, un gars sur la liste Argyll avait ajouté
une règle pour une autre sonde USB :

SYSFS{idVendor}=="04db", SYSFS{idProduct}=="005b",
PROGRAM="/bin/sh -c 'K=%k; K=$${K#usbdev}; printf bus/usb/%%03i/%%03i
$${K%%%%.*} $${K#*.}'", NAME="%c", MODE="666"

J'ai testé avec mes id, mais ça marche encore moins bien ; la sonde n'est
pas du tout accessible.

Si vous avez des idées...

--
Frédéric

http://www.gbiloba.org