This page assumes that you are familiar with the general USB architecture, in particular with terms like “configuration”, “interface” and “endpoint”.
On USB the ODrive provides a single configuration which is a composite device consisting of a CDC device (virtual COM port) and a vendor specific device.
A composite device is a device where interfaces are grouped by interface association descriptors. For such devices, the host OS loads an intermediate driver, so that each of the interface groups can be treated like a separate device and have its own host-side driver attached.
The following interface groups are present:
0x82: CDC commands
0x01: CDC data OUT
0x81: CDC data IN
0x03: data OUT
0x83: data IN
The CDC interface (endpoint pair
0x01, 0x81) runs the ASCII Protocol by default (see
odrv0.config.enable_ascii_protocol_on_usb). The vendor specific interface (endpoint pair
0x03, 0x83) runs the Native Protocol (the packet based variant).
The two interfaces can not (yet) be used simultaneously.