调试cdc-acm内核模块



我正试图解决我在Ubuntu上遇到的一个问题(尝试了不同的版本,包括最新的13.10),USB设备在其一个接口上与CDC/ACM通信。处理这类设备的内核模块只报告

cdc_acm 6-2:1.1:此设备不能单独进行调用。它不是调制解调器。

cdc_acm:6-2:1.1的探测失败,错误为-22

在dmesg中,就是这样。没有关于"零长度描述符引用"或其他人在网上报告的类似内容。所以我想知道问题出在哪里http://www.silly-science.co.uk/2012/06/23/lenovo-usb-modem-in-linux-ubuntu-10-04编译并加载自定义cdc-acm模块。首先,我在cdc-acm.c中将用于调试的两个#undefs更改为#defines,但在dmesg中仍然没有得到任何额外的输出。

将cdc-acm.c的DRIVER_VERSION定义中的版本字符串更改为其他内容,我可以验证修改后的模块是否确实已加载。我是否在错误的位置查找调试输出?

我设法从dmesg中的cdc_acm获得调试信息,尽管我没有什么特别的东西可以分享,但这些都是我的步骤,使用了今天的最新内核4.2-rc5:

  1. 将cdc-acm.c中的DEBUGVERBOSE_DEBUG #undef s更改为#define s
  2. make -C /lib/modules/$(uname -r)/build M=$(pwd)/drivers/usb/class modules
  3. modprobe -r cdc_acm; insmod $(pwd)/drivers/usb/class/cdc-acm.ko
  4. 插入兼容设备后的dmesg

[…]

[14033.5355036]cdc_acm 2-2:1.1:acm_tty_write-写入1个

[14035.368040]cdc_acm 2-2:1.1:acm_softint

[14038.156445]cdc_acm 2-2:1.0:acm_tty_close

[1438.173054]cdc_acm 2-2:1.0:amc_ctrl_msg-rq 0x22,val 0x0,len 0x0,结果0

[1438.173059]cdc_acm 2-2:1.0:acm_port_shutdown

[14038.173640]cdc_acm 2-2:1.0:amc_ctrl_irq-urb关闭,状态:-2

[14038.174636]cdc_acm 2-2:1.1:acm_read_bulk_callback-urb 0,len 0

[…]

最新更新