パスワードを忘れた? アカウント作成
386429 journal

g26a345の日記: USB-IOその4

日記 by g26a345
libusbは便利だけど、キーボードやマウス等、HIDデバイスが既にシステム内に存在してると、USB-IOはそっち(←カーネル付属のusbhid)に取られちゃって、libusbではアクセスできなくなっちゃう。
usb_openあたりまでは上手く行くけど、usb_claim_interfaceでエラーになったりする。
当然っちゃ当然なんだが・・・

今まではPS/2なシステムで試してたので気づかなかった。

困ったちゃんと思い、色々ぐぐっていたところ、libusbに存在する usb_detach_kernel_driver_np を使うと解決できるらしい。

具体的には、usb_claim_interface でエラーになったら usb_detach_kernel_driver_np を呼び出す。
呼び出しに成功したらもう一度 usb_claim_interface からやり直す。

こんな感じで出来るらしい。
というか出来た。

一度 usb_detach_kernel_driver_np が成功してしまうと、usbhidモジュールは、使われないけどカーネルにロードされたまま(他に使っていなくても)、という状態になってしまうけど、まぁいいか。
typodupeerror

あつくて寝られない時はhackしろ! 386BSD(98)はそうやってつくられましたよ? -- あるハッカー

読み込み中...