A google search for ACM reveals that it is part of CDC (Communications Device Class) which is a USB communication class opposite of HID (i.e. A USB device may use HID or CDC). This wikipedia articlereveals that CDC/ACM is a method of emulating RS-232 communication over USB. Def availableports: usbserialports = filter( (lambda x: x.startswith('ttyUSB')), os.listdir('/dev')) ports = for p in usbserialports: ports.append(serialforurl('/dev/'+p, donotopen=True)) ' also check for old school serial ports, my hope is that this will enable both USB serial adapters and standard serial ports Scans COM1 through COM255 for available serial ports returns a. The StarTech.com ICUSB232 1ft USB to DB9 RS232 Serial Adapter Cable lets you connect DB9 RS232 serial devices to your Mac or PC laptop or desktop computer through a USB port, as though the computer offered an onboard DB9M connector. The NI-VISA driver supports two classes of USB instruments: USB Test and Measurement Class (USBTMC) and USB RAW instruments. USBTMC instrument conform to the USBTMC protocol, while USB RAW instruments use their own specific communication protocol. This tutorial will cover both types of instruments. Learn more about USB and VISA. When 'USB Serial' changes to 'USB Serial (Communication Class, Abstract Control Model)' and a COM port number is shown, you can access your program on Teensy using that COM port. If there is no 'USB Serial' at all, please rememober Teensy only becomes a Serial device when programmed to do so.
The Communication Device Class defines a general purpose mechanism that can be used to enable all types of communication services on the Universal Serial Bus. Universal Serial Bus Class Definitions for Communication Devices specification, and associated subclass specifications, define a framework of USB interfaces, data structures, and requests under which a wide variety of telecommunications and networking devices such as USB-connected telephony devices, ADSL modems, USB-to-Ethernet adaptors, multi-function communications handset devices, wireless mobile communications devices can be defined and implemented.
USBlyzer includes the comprehensive CDC class decoder that helps you easily visualize various CDC class-specific functional descriptors, requests and notifications.
Note: USB Remote NDIS (RNDIS) specific implementation of the Abstract Control Model (ACM) is currently not supported.
CDC Class-Specific Subclasses
The following CDC Class and SubClasses are supported:
Class | SubClass |
---|---|
02h - CDC | 01h - Direct Line Control Model 02h - Abstract Control Model 03h - Telephone Control Model 04h - Multi-Channel Control Model 05h - CAPI Control Model 06h - Ethernet Networking Control Model 07h - ATM Networking Control Model 08h - Wireless Handset Control Model 09h - Device Management 0Ah - Mobile Direct Line Model 0Bh - OBEX |
CDC Class-Specific Functional Descriptors
Communications class devices use class-specific functional descriptors which are differ from standard USB descriptors. USBlyzer decodes and displays the following CDC class-specific functional descriptors:
Header Functional Descriptor
Union Functional Descriptor
Country Selection Functional Descriptor
Call Management Functional Descriptor
Abstract Control Management Functional Descriptor
Direct Line Management Functional Descriptor
Telephone Ringer Functional Descriptor
Telephone Call Functional Descriptor
Telephone Operational Modes Functional Descriptor
USB Terminal Functional Descriptor
Network Channel Terminal Functional Descriptor
Protocol Unit Functional Descriptor
Extension Unit Functional Descriptor
Multi Channel Management Functional Descriptor
CAPI Control Management Functional Descriptor
Ethernet Networking Functional Descriptor
ATM Networking Functional Descriptor
WHCM Functional Descriptor
Device Management Model Functional Descriptor
OBEX Functional Descriptor
Command Set Functional Descriptor
Command Set Detail Functional Descriptor
Telephone Control Model Functional Descriptor
OBEX Service Identifier Functional Descriptor
Mobile Direct Line Model Functional Descriptor
Mobile Direct Line Model Detail Functional Descriptor
Note: The specific information associated with the command set model specified by the GUID in the Command Set Functional Descriptor and the specific information associated with the semantic model specified by the GUID in the MDLM Functional Descriptor is not defined in CDC class specification and is not decoded by USBlyzer, though the data is displayed as a hexadecimal dump.
Below is an example of decoding CDC Control interface which encapsulates a bunch of functional descriptors.
CDC Class-Specific Requests and Notifications
The communications class defines a communications class interface consisting of a management element and optionally a notification element. The management element configures and controls the device, and consists of endpoint 0. The notification element transports events to the host, and in most cases, consists of a interrupt endpoint. For complete description of USB CDC class requests, refer to Universal Serial Bus Class Definitions for Communications Devices specification.
Communication Interface Management Element Requests
The management element requests control and configure the operational state of the communications device. The following class-specific requests are decoded:
Send Encapsulated Command (SEND_ENCAPSULATED_COMMAND)
Get Encapsulated Response (GET_ENCAPSULATED_RESPONSE)
Note: The CDC class defines only a format of data encapsulation but not the specific encapsulated protocol. So the encapsulated data is not decoded by USBlyzer, though the data is displayed as a hexadecimal dump.
Set Comm Feature (SET_COMM_FEATURE)
Get Comm Feature (GET_COMM_FEATURE)
Clear Comm Feature (CLEAR_COMM_FEATURE)
Set Aux Line State (SET_AUX_LINE_STATE)
Set Hook State (SET_HOOK_STATE)
Pulse Setup (PULSE_SETUP)
Send Pulse (SEND_PULSE)
Set Pulse Time (SET_PULSE_TIME)
Ring Aux Jack (RING_AUX_JACK)
Set Line Coding (SET_LINE_CODING)
Get Line Coding (GET_LINE_CODING)
Set Control Line State (SET_CONTROL_LINE_STATE)
Send Break (SEND_BREAK)
Set Ringer Parms (SET_RINGER_PARMS)
Get Ringer Parms (GET_RINGER_PARMS)
Set Operation Parms (SET_OPERATION_PARMS)
Get Operation Parms (GET_OPERATION_PARMS)
Set Line Parms (SET_LINE_PARMS)
Get Line Parms (GET_LINE_PARMS)
Dial Digits (DIAL_DIGITS)
Set Unit Parameter (SET_UNIT_PARAMETER)
Get Unit Parameter (GET_UNIT_PARAMETER)
Clear Unit Parameter (CLEAR_UNIT_PARAMETER)
Get Profile (GET_PROFILE)
Set Ethernet Power Management Pattern Filter (SET_ETHERNET_POWER_MANAGEMENT_PATTERN_FILTER)
Get Ethernet Power Management Pattern Filter (GET_ETHERNET_POWER_MANAGEMENT_PATTERN_FILTER)
Set Ethernet Multicast Filters (SET_ETHERNET_MULTICAST_FILTERS)
Set Ethernet Packet Filter (SET_ETHERNET_PACKET_FILTER)
Get Ethernet Statistic (GET_ETHERNET_STATISTIC)
Set ATM Data Format (SET_ATM_DATA_FORMAT)
Get ATM Device Statistics (GET_ATM_DEVICE_STATISTICS)
Set ATM Default VC (SET_ATM_DEFAULT_VC)
Get ATM VC Statistics (GET_ATM_VC_STATISTICS)
Communications Class Interface Management Element Notifications
Usb Serial (communication Class 10
The management element device responses and event notifications inform the host of events occurring on the device. The following class-specific responses and notifications are decoded:
Network Connection (NETWORK_CONNECTION)
Response Available (RESPONSE_AVAILABLE)
Connection Speed Change (CONNECTION_SPEED_CHANGE)
Aux Jack Hook State (AUX_JACK_HOOK_STATE)
Ring Detect (RING_DETECT)
Serial State (SERIAL_STATE)
Call State Change (CALL_STATE_CHANGE)
Line State Change (LINE_STATE_CHANGE)
Usb Serial (communication Class 7
Below is an example of decoding Set Control Line State request.