无法在Linux中手动绑定驱动程序

无法在Linux中手动绑定驱动程序

基本上我正在尝试绑定一个打开的测试USB驱动程序github。如果您想亲自测试的话,它基本上只是一个非常简单的 USB 驱动程序。

这是我所做的步骤:

  • 用于lsusb -t查找我的 USB 连接的总线和端口。我发现是的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);

我想这就是错误“没有这样的设备”的来源。全局查找该设备,未找到。

相关内容