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モジュールは、使われないけどカーネルにロードされたまま(他に使っていなくても)、という状態になってしまうけど、まぁいいか。
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モジュールは、使われないけどカーネルにロードされたまま(他に使っていなくても)、という状態になってしまうけど、まぁいいか。