将设备绑定到驱动程序模块
我试图更好地理解将设备绑定到其驱动程序的过程。 我有一个USB工具(在Arduino的系统程序员中),其Id(产品和供应商)是已知的。 驱动程序cdc_acm.ko无法识别它(当然,它不在其内部设备列表中!)。 所以……我加载了模块
sudo modprobe cdc_acm lsmod | grep cdc $>cdc_acm $>dmesg ... [41244.510906] usbcore: registered new interface driver cdc_acm [41244.510915] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
完善。 然后我插入设备和dmesg输出如下:
... [41447.794431] usb 2-1.2: new full-speed USB device number 17 using ehci-pci [41447.887680] usb 2-1.2: New USB device found, idVendor=03eb, idProduct=2ff7 [41447.887690] usb 2-1.2: New USB device strings: Mfr=0, Product=1, SerialNumber=0 [41447.887695] usb 2-1.2: Product: Arduino USB-Serial DFU
在我看来,USB驱动程序一直在处理。 让我相应地检查下面的http://lwn.net/Articles/143397/
$>ls -la /sys/bus/usb/drivers/usb/usb2/2-1/2-1.2/2-1.2\:1.0/ total 0 drwxr-xr-x 3 root root 0 gen 20 19:29 . drwxr-xr-x 5 root root 0 gen 20 12:51 .. -r--r--r-- 1 root root 4096 gen 20 12:58 bAlternateSetting -r--r--r-- 1 root root 4096 gen 20 12:51 bInterfaceClass -r--r--r-- 1 root root 4096 gen 20 12:51 bInterfaceNumber -r--r--r-- 1 root root 4096 gen 20 12:58 bInterfaceProtocol -r--r--r-- 1 root root 4096 gen 20 12:58 bInterfaceSubClass -r--r--r-- 1 root root 4096 gen 20 12:58 bNumEndpoints -r--r--r-- 1 root root 4096 gen 20 12:58 modalias drwxr-xr-x 2 root root 0 gen 20 12:58 power lrwxrwxrwx 1 root root 0 gen 20 12:58 subsystem -> ../../../../../../../bus/usb -r--r--r-- 1 root root 4096 gen 20 12:58 supports_autosuspend -rw-r--r-- 1 root root 4096 gen 20 12:51 uevent
模块链接不存在,因此设备似乎没有链接到usb模块驱动程序。 很高兴注意到modalias文件的内容是我所期望的:
usb:v03EBp2FF7d0000dc00dsc00dp00icFEisc01ip02in00
现在我尝试使用以下命令将设备链接到模块cdc_acm:
$>sudo echo -n "2-1.2:1.0" > sudo /sys/bus/usb/drivers/cdc_acm/bind
dmesg输出显示刚刚发出的命令没有特定的内容。
我在这做错了什么? 我希望至少有一些调试输出,如果我发出一个违规请求,我会期望至少一个内核消息回来…至少有一些系统反馈会帮助我理解问题是什么…任何人都可以帮助我? 谢谢。 PS。 我在Intel核心i3华硕笔记本电脑F552C上使用Ubuntu 14.10 64bit。
这是非常流行的情况,使用shell重定向用sudo
写入root拥有的文件。 您可以将其运行为:
sudo sh -c 'echo -n "2-1.2:1.0" > /sys/bus/usb/drivers/cdc_acm/bind'
以root身份运行shell并在其中使用重定向。 还有很多其他方法,请参阅使用sudo进行重定向时,我得到“权限被拒绝”