

I can see that there are extra characters being sent on the USB interface. Turned on the debug file system with usbmon and watched the USB traffic.Using that 3.2 module instead of the 3.6 module did not make a difference. Since the code works on Ubuntu 12.04/Linux 3.2, I grabbed the 3.2 cdc_acm code and compiled that module on the CentOS 6 / Linux 3.6 platform.All the device enumeration works, right driver attached, etc. I rmmod'd the "stock" cdc_acm and insmod'd my instrumented module.Added a bunch of printk debug messages and stack_dumps to follow what's going on. Downloaded the source code for the cdc_acm driver.The read never completes because the unexpected characters cause the device to reset which causes the hub to drop the device and re-enumerate. The test code opens the port, writes 4 bytes (a hello message) and expects to read a response. Its embedded microcontroller will reset any time there in unexpected input on it's USB interface. The USB device is a Bluegiga BLED112 Bluetooth Smart dongle.


What makes this all the more perplexing is that the code runs fine on Ubuntu 12.04 (3.2 kernel) but fails (the subject of this question) on Centos 6 (3.6 kernel). I'm having trouble with unexpected characters being sent on a USB port with the cdc_acm driver.
