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トリガーを実行し、正しく認識されていることを確認してください。
そして私の努力について親指を立てるのも忘れないでください! :血
答え2
うーん…私はたくさん試しました:
- 追加のパラメータを使用してJavaを実行して、アプリケーションが正しく実行されていることを確認してください。
- デバイスのBIOSを更新してみてください(しかし古すぎる更新なし)
- udevを使用してohciドライバを無効にする方法を探していますが、デバイスが認識されないか、他のドライバが使用されます。 (*HCD内蔵モジュールを作っても意味がなく、結果は同じです)
最後に、私はあきらめ、解決策を見つけるためにlibusbを使用したUSB一括操作のためにlibwgssSTU.soドライバにタイムアウトを設定しました。 Wacomデモボタンは、次の設定で失敗します。
EncodingMode.EncodingMode_24bit_Bulk
私は私たちのベース(同僚と一緒に働いています)をJIRAのWacom開発者サポートチームに渡し、彼らはソースコードに変更を加えます。libwgssSTU.soドライバ、新しいドライバはうまく動作しますが、この特定のハードウェアでは2〜3秒の遅延が必要です。
ソフトウェアがコンピュータでランダムに1/60、1/30、または1/45で実行されている理由はわかりませんが、少なくとも回避策が見つかりました.