基本上我正在尝试绑定一个打开的测试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);
我想这就是错误“没有这样的设备”的来源。全局查找该设备,未找到。