Many users use USB CDC-ACM for virtual com port usage. It
is supported under Windows by the usbser.sys driver and
also works under Linux and Mac OS X and probably other OS
In reality, CDC-ACM is really meant for modems.
"3.6.2 Abstract Control Model
With an Abstract Control Model, the USB device understands standard
V.25ter (AT) commands. The device contains a Datapump and micro-controller
that handles the AT commands and relay controls. The device uses both a
Data Class interface and a Communication Class interface."
Microsoft states that usbser.sys is really meant for
"usbser.sys is only good enough of a virtual serial port implementation to
enable it to be used as a modem".
Apple even insists that it is for network device (a USB modem is
a networking device) and insists to bring up the network configure
dialog. Here is an heated debate thread in Apple USB mailing list.
And Linux will issue a warning about a USB CDC-ACM device
if it is not a modem.
917 case USB_CDC_CALL_MANAGEMENT_TYPE:
918 call_management_function = buffer;
919 call_interface_num = buffer;
920 if ( (quirks & NOT_A_MODEM) == 0 &&
(call_management_function & 3) != 3)
921 dev_err(&intf->dev, "This device
cannot do calls on its own. It is not a modem.\n");