1

I have a strange problem with a barcode scanner I'm trying to test. Let me tell you in advance that I do not know the brand or the model of the device, apart from what the system tells.

When I plug it in, the device does not react at all (usually, scanners blink, peep... you get the point), but it is somehow recognized by the system (Ubuntu 15.10 64Bit):

output of 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

Output of usb-devices:

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)

But it does not seem to be taken into account as an input device (xinput list), as it happens when I plug in any other barcode scanner (for instance, a Honeywell Eclipse):

↳ Honeywell Scanning and Mobility Honeywell Scanning and Mobility Scanner   id=16   [slave  keyboard (3)]

As far as I know, the device works without problems in Windows 7 and is using the driver :

Symbol SNAPI USB Imaging Driver v1.1.2, which doesen't seem to be available for Linux.

So basically I'm totally lost here and don't know how to proceed... Any help would be appreciated!

Regards

1 Answer 1

1

So, I finally got this sorted out and it turns out it can also help for other devices like customer displays and generally for any other "serial to usb" devices which do not get automatically mapped to ttyUSBX.

The main problem appears to be that the ftdi_sio driver (Serial to USB driver) does not recognize a specific device automatically although the USB subsystem does (lsusb). Additionally, depending on the distribution, this kernel module might or might be not loaded. So basically our goal is to:

  • Load the ftdi_sio driver if necessary
  • Register our product into the ftdi_sio driver

Load the ftdi_sio driver

If it is loaded, the lsmod | grep "ftdi_sio" command should output something like this in a Terminal prompt:

ftdi_sio               53248  0
usbserial              53248  1 ftdi_sio

Otherwise, we have to load it:

  • Temporary, by issuing the command sudo modprobe ftdi_sio
  • Permantently, by adding the line ftdi_sio at the end of the /etc/modules (might be different in non-debian distributions!) file and restarting.

Register our product into the ftdi_sio driver

Ok, so the module should be loaded by now. Now, we need to register the product into the driver. Here comes the silly part because some vendors tell you to issue the following command:

modprobe ftdi_sio vendor=05e0 product=1900

Where vendor and product are the values you get from the USB-Subsystem by issuing, for instance, the usb-devices command and preceded by "0x";

But according to this commit this does absolutely nothing from Kernel 3.12 onwards:

Remove the vendor and product module parameters which were added a long time ago when we did not have the dynamic sysfs interface to add new device ids (and which isn't limited to a single new vid/pid pair).

A vid/pid pair can be added dynamically using sysfs, for example:

echo 0403 1234 >/sys/bus/usb-serial/drivers/ftdi_sio/new_id

Also fix up the in-code comment that got the sysfs path wrong.

Signed-off-by: Johan Hovold Signed-off-by: Greg Kroah-Hartman

So, following this information, what you have to do is issue the following command:

echo 05e0 1900 >/sys/bus/usb-serial/drivers/ftdi_sio/new_id

Can't recall right now if a restart is needed after that, but keep that in mind if the device does not work after it inmediately.

Summary

Luckily, I love my job more than my wife. (OMF Quote ;-))

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .