Expand description
CDC-NCM class implementation, aka Ethernet over USB.
§Compatibility
Windows: NOT supported in Windows 10 (though there’s apparently a driver you can install?). Supported out of the box in Windows 11.
Linux: Well-supported since forever.
Android: Support for CDC-NCM is spotty and varies across manufacturers.
- On Pixel 4a, it refused to work on Android 11, worked on Android 12.
- if the host’s MAC address has the “locally-administered” bit set (bit 1 of first byte), it doesn’t work! The “Ethernet tethering” option in settings doesn’t get enabled. This is due to regex spaghetti: https://android.googlesource.com/platform/frameworks/base/+/refs/tags/android-mainline-12.0.0_r84/core/res/res/values/config.xml#417 and this nonsense in the linux kernel: https://github.com/torvalds/linux/blob/c00c5e1d157bec0ef0b0b59aa5482eb8dc7e8e49/drivers/net/usb/usbnet.c#L1751-L1757
Modules§
embassy-net
driver for the CDC-NCM class.
Structs§
- CDC-NCM class
- CDC NCM class packet receiver.
- CDC NCM class packet sender.
- Internal state for the CDC-NCM class.
Constants§
- This should be used as
device_class
when building theUsbDevice
.