CDC
Communication Device Class - Abstract Control Model (CDC-ACM) This USB class is usually used for serial port emulation and as a modem interface. The class is also often used in combination with older software which previously used RS-232 to communicate with an external device.
Contents
Accessing CDC
Accessing CDC on Linux
On Linux no drivers are needed, the device should show up as /dev/ttyACM0 or similar. "sudo screen /dev/ttyACM0 115200" can be used to access the device.
Accessing CDC on Windows
On Windows 8.1 and below the "usbser" driver is not automatically assigned to the CDC-ACM device. An .inf file for the CDC-ACM device must be installed on these older systems. The device can be accessed via COM port emulation programs e.g. PuTTY.
Accessing CDC on macOS
On macOS no drivers are needed, the device should show up as /dev/tty.usbmodem13245678 or similar. The "screen" terminal program can be used to access the device.
CDC-ACM issues on Windows 10
Windows 10 comes with a re-designed driver for CDC-ACM. At the time of writing (June 2019) Windows 10 has an issue with large IN CDC transfers. Sometimes packets seems to disappear inside the Windows 10 USB stack. The only workaround is to read in small chunks. Or to add a delay to the transfers. We have analysed this using a hardware USB analyser and a test program which reads data from the device. Each packet has a unique, consecutive ID. When comparing the packets which are seen "on the wire" using the USB analyser with the packets which the Windows 10 program received it can be seen that sometimes packets are missing even though they were clearly successfully received by Windows 10. When using the same program on Windows 7 no issues can be seen.