Symbol Bar Code Scanner - не работает

У меня странная проблема со сканером штрих-кода, который я пытаюсь проверить. Позвольте мне заранее сказать, что я не знаю ни марку, ни модель устройства, кроме того, что говорит система.

Когда я подключаю его, устройство вообще не реагирует (обычно сканеры мигают, выглядывают... вы понимаете), но это как-то распознается системой (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.

Основная проблема заключается в том, что драйвер ftdi_sio (драйвер Serial to 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

Где vendor и product - это значения, которые вы получаете от USB-подсистемы, например, путем выдачи usb-devices команда и предшествует "0x";

Но в соответствии с этим коммитом это абсолютно ничего не делает с Kernel 3.12 и далее:

Удалите параметры модуля vendor и product, которые были добавлены давным-давно, когда у нас не было динамического интерфейса sysfs для добавления новых идентификаторов устройств (и который не ограничен одной новой парой vid/pid).

Пара vid/pid может быть добавлена ​​динамически с использованием sysfs, например:

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

Также исправьте комментарий в коде, который неправильно указал путь sysfs.

Подписано: Йохан Ховольд Подписано: Грег Кроа-Хартман

Итак, следуя этой информации, вам нужно выполнить следующую команду:

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

Прямо сейчас не могу вспомнить, требуется ли перезагрузка после этого, но имейте это в виду, если устройство не работает после него сразу.

Резюме

К счастью, я люблю свою работу больше, чем моя жена. (Цитата OMF;-))

Другие вопросы по тегам