J'ai un problème étrange avec un lecteur de code à barres que je tente de tester. Permettez-moi de vous dire à l'avance que je ne connais pas la marque ou le modèle de l'appareil, mis à part ce que dit le système.
Lorsque je le branche, l'appareil ne réagit pas du tout (en général, les scanners clignotent, vous entendez ... vous obtenez le point), mais il est en quelque sorte reconnu par le système (Ubuntu 15.10 64Bit):
sortie de dmesg:
[ 4499.987323] usb 1-2: new full-speed USB device number 11 using xhci_hcd
[ 4500.116992] usb 1-2: New USB device found, idVendor=05e0, idProduct=1900
[ 4500.117000] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 4500.117003] usb 1-2: Product: Symbol Bar Code Scanner
[ 4500.117006] usb 1-2: Manufacturer: Symbol Technologies, Inc, 2008
[ 4500.117009] usb 1-2: SerialNumber: S/N:B78495535C643D4AAC4AD8C7C803D91A Rev:PAABLS00-003-R009
[ 4500.121560] hid-generic 0003:05E0:1900.000F: hiddev0,hidraw1: USB HID v1.10 Device [Symbol Technologies, Inc, 2008 Symbol Bar Code Scanner] on usb-0000:00:14.0-2/input0
Sortie de périphériques USB:
T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#= 11 Spd=12 MxCh= 0
D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=05e0 ProdID=1900 Rev=01.00
S: Manufacturer=Symbol Technologies, Inc, 2008
S: Product=Symbol Bar Code Scanner
S: SerialNumber=S/N:B78495535C643D4AAC4AD8C7C803D91A Rev:PAABLS00-003-R009
C: #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=500mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=00 Prot=00 Driver=usbhid
I: If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=00 Driver=(none)
Mais cela ne semble pas être pris en compte en tant que périphérique d'entrée (xinput list
), comme cela se produit lorsque je connecte un autre lecteur de code à barres (par exemple, un Honeywell Eclipse):
↳ Honeywell Scanning and Mobility Honeywell Scanning and Mobility Scanner id=16 [slave keyboard (3)]
Pour autant que je sache, le périphérique fonctionne sans problème dans Windows 7 et utilise le pilote:
Symbole SNAPI USB Imaging Driver v1.1.2, qui ne semble pas être disponible pour Linux.
Donc, fondamentalement, je suis totalement perdu ici et je ne sais pas comment procéder ... Toute aide serait appréciée!
Cordialement
J'ai donc finalement résolu ce problème et il s'avère que cela peut également aider d'autres périphériques, tels que les écrans client et, de manière générale, tous les autres périphériques "série à usb" qui ne sont pas automatiquement mappés sur ttyUSBX.
Le principal problème semble être que le pilote ftdi_sio (pilote série à USB) ne reconnaît pas automatiquement un périphérique spécifique, contrairement au sous-système USB (lsusb). De plus, selon la distribution, ce module de noyau peut ou peut ne pas être chargé. Donc, fondamentalement, notre objectif est de:
Chargez le pilote ftdi_sio
S'il est chargé, la commande lsmod | grep "ftdi_sio"
devrait afficher quelque chose comme ceci dans une invite de terminal:
ftdi_sio 53248 0
usbserial 53248 1 ftdi_sio
Sinon, nous devons le charger:
Sudo modprobe ftdi_sio
ftdi_sio
à la fin du fichier /etc/modules
(peut être différent dans les distributions non-debian!) Et en redémarrant.Enregistrez notre produit dans le pilote ftdi_sio
Ok, le module devrait être chargé maintenant. Maintenant, nous devons enregistrer le produit dans le pilote. Voici la partie idiote, car certains fournisseurs vous demandent d’émettre la commande suivante:
modprobe ftdi_sio vendor=05e0 product=1900
Où vendeur et produit sont les valeurs que vous obtenez du sous-système USB en émettant, par exemple, le usb-devices
commande et précédé de "0x";
Mais selon ceci commit cela ne fait absolument rien à partir du noyau 3.12:
Supprimez les paramètres de fournisseur et de module de produit qui ont été ajoutés il y a longtemps, alors que l'interface dynamique sysfs ne permettait pas d'ajouter de nouveaux ID de périphérique (et qui ne se limite pas à une seule nouvelle paire vid/pid).
Une paire vid/pid peut être ajoutée dynamiquement à l'aide de sysfs, par exemple:
echo 0403 1234>/sys/bus/usb-serial/drivers/ftdi_sio/new_id
Corrigez également le commentaire dans le code qui a provoqué une erreur de chemin sysfs.
Signé-off-by: Johan Hovold Signé-off-by: Greg Kroah-Hartman
Donc, à la suite de ces informations, vous devez exécuter la commande suivante:
echo 05e0 1900 >/sys/bus/usb-serial/drivers/ftdi_sio/new_id
Je ne peux pas me rappeler maintenant si un redémarrage est nécessaire par la suite, mais gardez cela à l'esprit si le périphérique ne fonctionne pas après.
Résumé
Heureusement, j'aime mon travail plus que ma femme. (Citation OMF ;-))