web-dev-qa-db-ja.com

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)

ただし、他のバーコードスキャナー(たとえば、Honeywell Eclipse)を接続すると発生するため、入力デバイス(xinput list)として考慮されていないようです。

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

私の知る限り、デバイスはWindows 7で問題なく動作し、ドライバーを使用しています:

Symbol SNAPI USB Imaging Driverv1.1.2。Linuxでは使用できないようです。

だから基本的に私はここで完全に迷ってしまい、どうすればいいのか分からない...助けていただければ幸いです!

よろしく

1
Eduardo López

だから、最終的にこれを整理し、顧客のディスプレイなどの他のデバイスや、一般的にttyUSBXに自動的にマッピングされない他の「シリアルからUSB」デバイスにも役立つことがわかりました。

主な問題は、ftdi_sio driver(シリアル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(Debian以外のディストリビューションでは異なる場合があります!)ファイルの最後に/etc/modules行を追加し、再起動することにより。

製品をftdi_sioドライバに登録します

さて、モジュールは今までにロードされるはずです。次に、製品をドライバーに登録する必要があります。一部のベンダーは次のコマンドを発行するように指示しているため、ここに愚かな部分があります。

modprobe ftdi_sio vendor=05e0 product=1900

ここで、vendorおよびproductは、たとえばusb-devicesを発行することによってUSBサブシステムから取得する値ですコマンドの前に「0x」が付きます。

しかし、これによると commit これはカーネル3.12以降ではまったく何もしません:

新しいデバイスIDを追加するための動的sysfsインターフェイスがなかったときに追加されたベンダーおよび製品モジュールパラメーターを削除します(単一の新しいvid/pidペアに限定されません)。

Vid/pidのペアは、sysfsを使用して動的に追加できます。次に例を示します。

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引用;-))

0
Eduardo López