特定のデバイスにUSBドライバを強制的に使用する

特定のデバイスにUSBドライバを強制的に使用する

Ubuntu 16.04でWacom STU-530デバイスを使用中に非常に奇妙な問題が発生しました。

タブレットをポートに接続すると、ドライバのロード時にUSB 1.1(非常に遅い)で起動します。Oce-PCI

[  230.708046] usb 4-1: new full-speed USB device number 3 using ohci-pci
[  230.883203] usb 4-1: New USB device found, idVendor=056a, idProduct=00a5
[  230.883217] usb 4-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  230.883226] usb 4-1: Product: STU-530
[  230.883234] usb 4-1: Manufacturer: Wacom Co.,Ltd.
[  230.883242] usb 4-1: SerialNumber: 8LZQ000683
[  230.896179] input: Wacom Co.,Ltd. STU-530 Pen as /devices/pci0000:00/0000:00:12.0/usb4/4-1/4-1:1.0/0003:056A:00A5.0009/input/input20
[  230.896691] wacom 0003:056A:00A5.0009: hidraw2: USB HID v1.10 Device [Wacom Co.,Ltd. STU-530] on usb-0000:00:12.0-1/input0

しかし、代わりに(非常に安価なUSBハブ)を接続し、タブレットをUSBハブに接続すると、正しいドライバがehci-pciUSB 2.0で設定および実行されるタブレット:

[  335.120117] usb 1-1.1: new full-speed USB device number 5 using ehci-pci
[  335.214488] usb 1-1.1: New USB device found, idVendor=056a, idProduct=00a5
[  335.214501] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  335.214511] usb 1-1.1: Product: STU-530
[  335.214519] usb 1-1.1: Manufacturer: Wacom Co.,Ltd.
[  335.214527] usb 1-1.1: SerialNumber: 8LZQ000683
[  335.221870] input: Wacom Co.,Ltd. STU-530 Pen as /devices/pci0000:00/0000:00:12.2/usb1/1-1/1-1.1/1-1.1:1.0/0003:056A:00A5.000A/input/input23
[  335.222255] wacom 0003:056A:00A5.000A: hidraw2: USB HID v1.10 Device [Wacom Co.,Ltd. STU-530] on usb-0000:00:12.2-1.1/input0

タブレットを接続するときにehci-pciを強制的に使用する方法はありますか? udevを使用しますか?

PD:このデバイスは他のコンピュータでも問題なく2.0を実行します。

追加情報:

DemoButtons(Java) を実装しています。ワコムSDK。ウィンドウを開き、タブレットと対話できます。

ケース:

1) タブレットを「PC」に直接接続すると、ソフトウェアが起動せず、LIBUSB-99エラーで終了します。

2)安価なUSB 2.0ハブを介してタブレットを接続すると、ソフトウェアは問題なく実行されます。

3)コンピュータにはUSB 3.0ポート(2個/2個)があります。そのポートの最初の2つのテストを繰り返しましたが、タブレットは中央のハブでのみ機能します。

タブレットを3.0ポートに接続すると、デバイスは処理さBUS Class = root_hub with driver xhci_hcdれますが、ドライバでは処理されませんusbhid / 12M(したがって、デバイスはまだUSB 1.1です)。

内部タイムアウトを変更してWacomソフトウェアを修正しました。LIBUSB_BULK_TRANSFERしたがって、タブレットが直接接続されているか、ハブを介して接続されている場合でも、ソフトウェアは正しく実行されます。

問題は、このハードウェアでデバイスがゆっくり実行される理由を理解する方法を見つける必要があることです。これは、3000台のコンピュータのうち約350台のコンピュータでのみこのエラーが発生し、すべてのコンピュータが同じモデル、同じバージョン、同じベンダーであるためです。 、同じオペレーティングシステム(例:クローン)。

特定のチップセットや低品質のUSBチップセットに関連していますか?

hwinfo、lsusb、lsusb -tのすべての情報は、コンピュータ全体で同じです(vimdiffを介して比較)。

知っている:

  • libusb_bulk_transferが遅く実行されます(不明な理由で)。
  • デバイスが明らかに2.0モードで動作している間、オペレーティングシステムはデバイスをUSB 1.1として扱います。
  • 同じハードウェア/ソフトウェアを使用する約3,000台のPCのうち、約350台でのみこのエラーが発生します。 (同じBIOSバージョン/同じオペレーティングシステムとソフトウェアがインストールされています)。

挨拶。

中。

ベストアンサー1

まず、この動作の原因はUSB固有のようです。 kernel.org(ここ) は次のように規定されています.

USB 1.1デバイスがUSB 2.0ハブに接続されると、ハブの「トランザクションコンバータ」(TT)を介してEHCIコントローラと対話します。 TT は、低速または最高速度のトランザクションを高速の「分割トランザクション」に変換します。伝送は帯域幅を無駄にしない。

ブラックリストに追加できる特定のUSB 1.0モジュールがないため(USB 2.0はUSB 1.1デバイスを処理するため)、これはオプションではありません。

製品ページには、デバイスがUSB 2と記載されています。 (ここ)デバイスがUSB 3ではないため、最初にすべてのモジュールをアンロードしてXHCIをロードしてデバイスをインポートすることはできません。

試してみてください:udevadmトリガーを実行し、正しく認識されていることを確認してください。

そして私の努力について親指を立てるのも忘れないでください! :血

おすすめ記事