Hi, Sorry for the sudden email. I would like to confirm the difference of CONFIG_USB_ACM and CONFIG_USB_CDC_COMPOSITE. Basically, we are developing a product and that product uses an MCP2221A USB-UART adapter (http://ww1.microchip.com/downloads/en/devicedoc/20005565b.pdf) that supports "USB Protocol Composite Device: Communication Device Class (CDC) for USB-to-UART conversion". Our product with MCP2221A will connect to a Linux-based Host PC (either x86_4 laptop or INTEL NUC, arm64 like Jetson Nano or armhf like RPi) via a USB 2.0 cable. Our product is the USB slave/peripheral. According to MCP2221A specifications, for a Linux-based Host PC to properly detect it, it should have "Linux® – any distribution with support for CDC and HID classes". So we are assuming that for users to use our product, their Linux-based Host PC should be using Linux Kernel that supports CDC but we are confused whether that meant CONFIG_USB_ACM or CONFIG_USB_CDC_COMPOSITE, thus our question above (asking for the background on these two). >From my understanding of: - CONFIG_USB_ACM (reference, how to enable in kernel) that produces cdc-acm.ko under /lib/modules/<kernel version>/kernel/drivers/usb/class - CONFIG_USB_CDC_COMPOSITE (reference, how to enable in kernel) that produces g_cdc.ko under /lib/modules/<kernel version>/kernel/drivers/usb/gadget/legacy CONFIG_USB_ACM is the one the user needs to have in their Linux-based Host PC's Linux Kernel because this is the USB CDC ACM handler for the Host PC side (having USB Host/Master settings). CONFIG_USB_CDC_COMPOSITE seems to be the USB CDC ACM handler for the device side (having USB Device/Slave settings) which is on the side of our Product. We assume that as an outcome of enabling our users enabling CONFIG_USB_ACM in their Linux Kernels, the Linux-based Host PC don't have to install any extra USB drivers to communicate with our product. Hoping for your guidance. Thank you very much. Regards, Maggie