Elevator Pitch
- Android does not recognize CDC Ethernet devices over USB because its EthernetTracker service only tracks interfaces named
ethX
, while Linux CDC Ethernet drivers name them usbX
, making it impossible to use these adapters without rooting the device and changing a system regex.
Key Takeaways
- Android's kernel supports CDC Ethernet standards, but the system ignores interfaces not named
ethX
due to a hardcoded regex (config_ethernet_iface_regex
) in the EthernetTracker service.
- The only way to make CDC Ethernet work is to root the device and alter this regex, as it is not user-configurable by default.
- As a result, users must avoid standards-based adapters and instead seek out devices with vendor-specific drivers that produce
ethX
interfaces.
Most Memorable Aspects
- The entire incompatibility boils down to a single regex that excludes standard
usbX
interface names.
- Despite kernel-level support and successful hardware detection, Android’s user-facing Ethernet option remains greyed out for CDC devices.
- The author’s deep debugging journey highlights how a trivial configuration detail can undermine broad hardware compatibility.
Direct Quotes
- "Android's EthernetTracker service only acknowledges interfaces that are named
ethX
; Linux's CDC Ethernet drivers create interfaces that are named usbX
."
- "It really is that silly; an entire USB device class brought low by a bum regex."
- "Instead of looking for devices that implement the CDC standards, you need to explicitly AVOID the standards-based devices and look for something that is supported with a vendor/chipset-specific driver."
Source URL•Original: 3676 words
•Summary: 246 words