USB CDC-ACM composite


This sample app demonstrates use of a USB Communication Device Class (CDC) Abstract Control Model (ACM) driver provided by the Zephyr project in Composite configuration.

Two serial ports are created when the device is plugged to the PC. Received data from one serial port is sent to another serial port provided by this driver.


Plug the board into a host device, for example, a PC running Linux. The board will be detected as shown by the Linux dmesg command:

usb 1-1.5.4: new full-speed USB device number 28 using ehci-pci
usb 1-1.5.4: New USB device found, idVendor=2fe3, idProduct=0002, bcdDevice= 2.03
usb 1-1.5.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-1.5.4: Product: Zephyr CDC ACM Composite sample
usb 1-1.5.4: Manufacturer: ZEPHYR
usb 1-1.5.4: SerialNumber: 86FE679A598AC47A
cdc_acm 1-1.5.4:1.0: ttyACM1: USB ACM device
cdc_acm 1-1.5.4:1.2: ttyACM2: USB ACM device

The app prints on serial output, used for the console:

Wait for DTR

Open a serial port emulator, for example, minicom, and attach it to both detected CDC ACM devices:

minicom --device /dev/ttyACM1
minicom --device /dev/ttyACM2

The app should respond on serial output with:

DTR set, start test
Baudrate detected: 115200
Baudrate detected: 115200

And on ttyACM devices provided by the Zephyr USB device stack:

Send characters to another UART device

The characters entered in one serial port will be sent to another serial port.