将设备绑定到驱动程序模块

我试图更好地理解将设备绑定到其驱动程序的过程。 我有一个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进行重定向时,我得到“权限被拒绝”