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 URLOriginal: 3676 wordsSummary: 246 words