Why Android can't use CDC Ethernet (2023)
Bug status and Android versioning
- Thread notes that the original issue (EthernetTracker only matching
eth\d) was fixed in 2023 by broadening the regex, then reverted due to tethering regressions, then re-landed for newer Android releases (V+ / Android 15+). - Similar change/rollback pattern is seen in LineageOS; fix exists but is gated to newer versions and needs user testing.
- Android’s internal “T/U/V” names are just version letters (13/14/15), a legacy of the old dessert naming scheme; some see this as confusing but not intentional obfuscation.
Interface naming, MAC tricks, and tethering
- Core problem: Android’s Ethernet code historically keyed off interface names (
ethXvsusbX) rather than capabilities. - Some devices use
usbXfor tethering; treating them as client Ethernet breaks those setups (phone tries to be both router and client). - A workaround discussed: flipping the “global” bit in the MAC address to make the kernel name a CDC Ethernet interface
ethXinstead ofusbX, which users report works on several Android versions and devices.
Real-world device behavior and chipset quirks
- Many commenters report USB Ethernet “just works” on Android—usually with ASIX or Realtek dongles that use supported vendor drivers or NCM, not CDC ECM.
- Others see failures on specific boards or OEM builds (e.g., Samsung Android 15), showing that behavior can differ by vendor, firmware, and chipset.
- iOS: article’s “no CDC Ethernet” claim is refined—iOS doesn’t support CDC ECM, but does ship drivers for common USB Ethernet chipsets and works with some Realtek NCM devices.
Networking limitations on mobile OSes
- Several complain that Android (and iOS) can’t easily use multiple networks simultaneously (e.g., Wi‑Fi without Internet plus cellular), or aggressively disconnect from “no Internet” Wi‑Fi.
- This makes debugging networks or using local-only devices (dashcams, embedded gear) painful and often forces app-specific workarounds.
Rooting vs security and user control
- One camp sees rooting as essential to fix problems like this (e.g., changing
config_ethernet_iface_regex). - Others argue root massively expands attack surface and undermines Android’s permission model.
- Ongoing back-and-forth about whether restricting root is necessary safety or “corporate FUD,” and how to balance power-user needs with mainstream security.
USB serial and other oddities
- Android kernels often include USB serial drivers, but user apps can’t access
/dev/ttyACM*; instead, they must reimplement USB-serial protocols in userspace via raw USB. - Commenters recall other historically hacky Android USB decisions and note that some adapters also need firmware the Android UI can’t diagnose.