Linuxではドライバを手動でバインドできません。

Linuxではドライバを手動でバインドできません。

デフォルトでは、パブリックテストUSBドライバをバインドしようとしています。フラッグハブ。基本的に自分でテストしたい場合は、非常にシンプルなUSBドライバです。

私が行ったステップは次のとおりです。

  • lsusb -tUSB接続用のバスとポートを見つけるために使用されます。私は知った1-3
  • 私はそこに行き、/sys/bus/usb/devicesそれを見つけ、1-3それが製本されていることを発見しましたdrivers/usb
  • バインド解除に使用されますecho 1-3 > unbind。正常にバインディングを解除できました。
  • devicesフォルダに移動して、1-3まだバインドされているアイテムがあることを確認してください。いいえ。
  • 名前付きマイドライバーディレクトリに移動します。hello_driver
  • これを試しましたが、echo 1-3 > bindエラーメッセージが表示されますecho: write error: No such device

lsusb -t役に立つなら、結果は次のようになります。

/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
    |__ Port 4: Dev 2, If 0, Class=Hub, Driver=hub/4p, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/10p, 480M
    |__ Port 3: Dev 15, If 0, Class=Mass Storage, Driver=, 480M
    |__ Port 4: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 3: Dev 5, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 3: Dev 5, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 2: Dev 4, If 0, Class=Human Interface Device, Driver=usbhid, 12M
        |__ Port 2: Dev 4, If 1, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 10: Dev 3, If 0, Class=Wireless, Driver=btusb, 12M
    |__ Port 10: Dev 3, If 1, Class=Wireless, Driver=btusb, 12M

何が問題なのかよく分からない。他の人がこの質問をしましたが、彼らの解決策が私の状況に役立たなかったことを知っています。このエラーは私のドライバでのみ表示され、他のドライバでは表示されないようです。ありがとうございます。

答え1

私は同じ問題に直面しました。私の場合は、USBデバイスを製品とベンダーIDと共にドライバコードに登録する必要がありました。

const struct usb_device_id etx_usb_table[] = {
    {USB_DEVICE(USB_PRODUCT_ID, USB_VENDOR_ID)},
    {}
};
;

MODULE_DEVICE_TABLE(usb, etx_usb_table);

「該当デバイスがありません」というエラーが発生するところのようです。デバイスを世界中で検索していますが、見つかりませんでした。

関連情報