| Host-Side CDC ACM USB Host | | Operating | or | Controller | USB | System | Generic USB | Driver |——– | (Linux or | Serial | and | | | Windows) Driver USB Stack | | ————————————– | | | | Gadget | ————————————– | | Gadget USB Periph. | | | Device-Side | Gadget | Controller | | | Linux | Serial | Driver |——– | Operating | Driver | and | | System USB Stack | ————————————–
On the device-side Linux system, the gadget serial driver looks like a serial device.
On the host-side system, the gadget serial device looks like a CDC ACM compliant class device or a simple vendor specific device with bulk in and bulk out endpoints, and it is treated similarly to other serial devices.
The host side driver can potentially be any ACM compliant driver or any driver that can talk to a device with a simple bulk in/out interface. Gadget serial has been tested with the Linux ACM driver, the Windows usbser.sys ACM driver, and the Linux USB generic serial driver.
With the gadget serial driver and the host side ACM or generic serial driver running, you should be able to communicate between the host and the gadget side systems as if they were connected by a serial cable.
The gadget serial driver only provides simple unreliable data communication. It does not yet handle flow control or many other features of normal serial devices.