最終更新:2017-06-19 (月) 18:00:48 (2495d)  

Linux/USBデバイスドライバ
Top / Linux / USBデバイスドライバ

確認

lsusb

  • バインドされてるドライバはlsusb -tで見れる
    $ lsusb -t
    /:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
        |__ Port 1: Dev 2, If 0, Class=HID, Driver=usbhid, 12M
        |__ Port 2: Dev 3, If 0, Class=hub, Driver=hub/7p, 12M
            |__ Port 1: Dev 7, If 0, Class='bInterfaceClass 0xe0 not yet handled', Driver=btusb, 12M
            |__ Port 1: Dev 7, If 1, Class='bInterfaceClass 0xe0 not yet handled', Driver=btusb, 12M
            |__ Port 2: Dev 9, If 0, Class=HID, Driver=usbhid, 1.5M
    /:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/6p, 480M

バインドされているドライバへのシンボリックリンク

手動でアンバインド

手動でバインド

usb-devices

  • でも見れる

Linux/dev/inputのデバイスを表示

  • udevadm info --query=path --name=/dev/input/event16
  • /devices/pci0000:00/0000:00:14.0/usb2/2-2/2-2:1.2/0003:XXXX:YYYY.0009/input/input24/event16

ホストとデバイス間の通信

種類

Linux/USBコアドライバ

Linux/USBホストドライバ?

URBの処理

Linux/USBクラスドライバ?

  • usb_class_driver - ユーザ空間プログラムとやりとりするためにメジャー番号を割り当てる場合に、USBドライバについて記述する構造体
  • usb_register_dev(usb_class_driver) - クラスドライバをUSBコアに登録する関数
    • wdm_class?
    • usblp_class?
    • usbtmc_class?
    • hiddev_class? - 汎用HIDデバイス用ドライバ

Linux/USBデバイスドライバ

構造体

kernel.org

  • kernel.org/DocBook/gadget?

関連

参考