Symbol 条形码扫描器 - 不工作

Symbol 条形码扫描器 - 不工作

我在测试条形码扫描仪时遇到了一个奇怪的问题。我先告诉您,除了系统提示的信息外,我不知道该设备的品牌或型号。

当我将其插入时,设备根本没有反应(通常,扫描仪会闪烁、发出哔哔声......你明白了),但它以某种方式被系统识别(Ubuntu 15.10 64Bit):

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

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)

但它似乎没有被视为输入设备(xinput list),因为当我插入任何其他条形码扫描仪(例如,Honeywell Eclipse)时就会发生这种情况:

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

据我所知,该设备在 Windows 7 中运行正常,并使用以下驱动程序:

Symbol SNAPI USB Imaging Driver v1.1.2 似乎不适用于 Linux。

所以基本上我在这里完全迷失了,不知道如何继续......任何帮助都将不胜感激!

问候

答案1

因此,我终于解决了这个问题,事实证明它也可以帮助其他设备,例如客户显示器,并且通常可以帮助任何其他不会自动映射到 ttyUSBX 的“串行到 USB”设备。

主要问题似乎是ftdi_sio 驱动程序(串行到 USB 驱动程序)无法自动识别特定设备,但 USB 子系统 (lsusb) 可以识别。此外,根据发行版的不同,此内核模块可能会加载,也可能不会加载。因此,我们的目标是:

  • 如果需要,加载 ftdi_sio 驱动程序
  • 将我们的产品注册到 ftdi_sio 驱动程序中

加载 ftdi_sio 驱动程序

如果已加载,lsmod | grep "ftdi_sio"命令应在终端提示符中输出类似这样的内容:

ftdi_sio               53248  0
usbserial              53248  1 ftdi_sio

否则,我们必须加载它:

  • 临时,通过发出命令sudo modprobe ftdi_sio
  • ftdi_sio永久地,通过在文件末尾添加行/etc/modules(在非 Debian 发行版中可能会有所不同!)并重新启动。

将我们的产品注册到 ftdi_sio 驱动程序中

好的,现在模块应该已经加载了。现在,我们需要将产品注册到驱​​动程序中。这是比较愚蠢的部分,因为有些供应商会告诉您发出以下命令:

modprobe ftdi_sio vendor=05e0 product=1900

在哪里小贩产品是您通过发出例如命令从 USB 子系统获取的值,usb-devices前面带有“0x”;

但根据这个犯罪从内核 3.12 开始,这完全没有任何作用:

删除很久以前在我们没有动态 sysfs 接口来添加新设备 ID(并且不限于单个新的 vid/pid 对)时添加的供应商和产品模块参数。

可以使用 sysfs 动态添加 vid/pid 对,例如:

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

还修复了导致 sysfs 路径错误的代码内注释。

签名人:Johan Hovold 签名人:Greg Kroah-Hartman

因此,根据这些信息,您需要做的就是发出以下命令:

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

现在不记得之后是否需要重新启动,但如果设备在重新启动后不能立即工作,请记住这一点。

概括

幸运的是,我爱我的工作胜过爱我的妻子。(OMF 语录 ;-))

相关内容