日期:2014-05-16  浏览次数:20839 次

linux 下使用USB条码扫描枪的错误,请帮我看一下
手头有两个条码扫描枪,不同的牌子,都按照说明书正确设置了USB键盘模式。两个扫描枪在windows下都能正常工作。
其中A扫描枪在linux下可以正常工作,B描枪插到linux系统后无法使用。

B扫描枪扫一下条码,就断开了连接。
扫描后,终端下输入:

dmesg | grep usb

得到信息:
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb1: Product: EHCI Host Controller
usb usb1: Manufacturer: Linux 2.6.29.4-167.fc11.i586 ehci_hcd
usb usb1: SerialNumber: 0000:00:0b.0
usb usb1: configuration #1 chosen from 1 choice
usb usb2: New USB device found, idVendor=1d6b, idProduct=0001
usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
usb usb2: Product: OHCI Host Controller
usb usb2: Manufacturer: Linux 2.6.29.4-167.fc11.i586 ohci_hcd
usb usb2: SerialNumber: 0000:00:06.0
usb usb2: configuration #1 chosen from 1 choice
usbcore: registered new interface driver hiddev
usbcore: registered new interface driver usbhid
usbhid: v2.6:USB HID core driver
SELinux: initialized (dev usbfs, type usbfs), uses genfs_contexts
usb 2-1: new full speed USB device using ohci_hcd and address 2
usb 2-1: New USB device found, idVendor=04b4, idProduct=bca1
usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 2-1: Product: Barcode Reader
usb 2-1: Manufacturer: Guest
usb 2-1: configuration #1 chosen from 1 choice
generic-usb: probe of 0003:04B4:BCA1.0001 failed with error -22
usb 2-1: USB disconnect, address 2
usb 2-1: new full speed USB device using ohci_hcd and address 3
usb 2-1: New USB device found, idVendor=04b4, idProduct=bca1
usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 2-1: Product: Barcode Reader
usb 2-1: Manufacturer: Guest
usb 2-1: configuration #1 chosen from 1 choice
generic-usb: probe of 0003:04B4:BCA1.0002 failed with error -22


这里面
generic-usb: probe of 0003:04B4:BCA1.0001 failed with error -22
这句话应该就是报出的错误吧。请问这是什么原因,怎么解决。谢谢。

------解决方案--------------------
usb的pid 和 vid ,能唯一标识一种usb设备,网上这些知识很多
http://www.linux-usb.org/usb.ids 可查
22号错误是 错误的参数
怀疑传递的pid不被支持,现在强制让其支持
------解决方案--------------------
探讨

usb的pid 和 vid ,能唯一标识一种usb设备,网上这些知识很多
http://www.linux-usb.org/usb.ids 可查
22号错误是 错误的参数
怀疑传递的pid不被支持,现在强制让其支持

------解决方案--------------------
struct usb_device_id 结构提供了这个驱动支持的一个不同类型 USB 设备的列表. 这个列表被USB 核心用来决定给设备哪个驱动, 并且通过热插拔脚本来决定哪个驱动自动加载, 当特定设备被插入系统时.


建议你找到 A 对应的驱动, 然后再修改 这个驱动支持的 设备列表 (应该是个头文件), 增加
idVendor=04b4, idProduct=bca1