How to Inspect Ethernet Network Interfaces and Hardware States on Android Using ADB dumpsys ethernet

While Android devices are predominantly engineered around wireless communication standards such as Wi-Fi and cellular networks, modern Android platforms—including Android TV, automotive operating systems (Android Automotive OS), development boards, enterprise point-of-sale systems, and smartphones connected to USB-C Ethernet adapters—rely heavily on wired Ethernet interfaces. Within the Android framework, the EthernetService manages physical Ethernet hardware states, tracking dynamic interface links, static IP configuration listeners, and network factory bindings. Using the Android Debug Bridge (ADB) to execute dumpsys ethernet, systems engineers, IoT hardware developers, and network administrators can inspect physical carrier statuses, verify IP addressing rules, and diagnose low-level wired connectivity issues.

Architecture of the Android Ethernet Management Subsystem

The Android wired networking stack resides within com.android.server.ethernet.EthernetServiceImpl, which coordinates directly with the system ConnectivityManager and the Linux kernel network interface subsystem (via netd or modern eBPF/Netlink network controllers). The subsystem operates through several core internal components exposed in diagnostic dumps:

  • EthernetTracker: Monitors Linux kernel network interface events through Netlink sockets. It detects when hardware interfaces (such as eth0 or external USB-to-Ethernet adapters like eth1) are dynamically plugged into the host bus, initialised, brought online, or removed.
  • EthernetNetworkFactory: Acts as the bridge between raw network interfaces and Android’s high-level network scoring architecture. When an Ethernet cable is plugged in and a link carrier is detected, the factory publishes an active NetworkAgent with high transport score priority, typically prompting Android to route outbound traffic over Ethernet in preference to Wi-Fi.
  • IpConfiguration Store: Tracks whether each monitored interface operates under Dynamic Host Configuration Protocol (DHCP) mode or maintains persistent static IP properties (IPv4/IPv6 addresses, subnet prefixes, gateway routes, and domain name servers).
  • Interface Tracking Modes: Categorises interfaces into client connections (providing Internet or local network access to the device), server connections (tethered Ethernet uplinks), or unmanaged interface states.

Extracting Complete Ethernet Subsystem Telemetry via ADB

To inspect the status of wired networking on a connected Android device or emulator, execute dumpsys ethernet through an interactive or single-command ADB shell session:

# Capture the complete Ethernet service diagnostic dump
adb shell dumpsys ethernet

# Filter for interface names, carrier states, and tracking modes
adb shell dumpsys ethernet | grep -E "Tracking|Interface|LinkUp|IpConfiguration"

If the device has no built-in Ethernet hardware and no USB-C network adapter attached, the output reflects an active service listening for network device additions without active tracking instances. Once an adapter is attached, the output populates with detailed interface objects.

Evaluating Interface Link States and Hardware Carrier Detection

Within the diagnostic dump, locate the section detailing interface state records managed by the EthernetTracker. Reviewing these fields reveals whether the operating system successfully detects the physical Layer 1 connection:

# Inspect the raw interface status and hardware link detection
adb shell dumpsys ethernet | grep -A 8 "Interface: eth0"

Examine the following key parameters:

  • mLinkUp: A boolean value indicating whether the physical network cable is connected and generating a carrier signal. If mLinkUp: false persists despite a connected cable, verify physical link LEDs, test external hub power delivery, or check kernel driver compatibility via adb shell dmesg | grep eth.
  • mHwAddr: The media access control (MAC) address assigned to the physical network controller. Confirm that the address matches the hardware specification and does not report an all-zero or invalid address.
  • mTrackingMode: Indicates whether the interface is registered in CLIENT mode (standard connectivity) or SERVER mode (used when Ethernet Tethering is enabled in system settings).

Inspecting IP Configuration and DNS Resolvers

The dumpsys ethernet dump reveals the IP configuration assigned to each active Ethernet interface. Android stores configurations in a persistent configuration structure that details addressing parameters:

# View IpConfiguration records for all tracked interfaces
adb shell dumpsys ethernet | grep -A 10 "IpConfiguration"

The output highlights whether the interface negotiated settings automatically or requires static configuration:

  • DHCP Configuration: When ipAssignment: DHCP is displayed, Android delegates address resolution to the internal DhcpClient. You will see assigned gateway routes, IPv4/IPv6 subnet prefixes, and upstream DNS server addresses negotiated from the local router.
  • Static Configuration: When configured manually, ipAssignment: STATIC displays the fixed IP address, network prefix length, default gateway, and static DNS server array explicitly configured on the interface.
  • Proxy Settings: Displays proxySettings: NONE or details HTTP proxy hostnames, ports, and exclusion lists bound to the Ethernet transport.

Cross-Referencing with Kernel Network Devices and IP Routing

To perform thorough network validation, compare the high-level Android framework state captured from dumpsys ethernet with low-level Linux networking tools available within the ADB shell:

# Inspect Linux network interface flags and MTU settings
adb shell ip link show eth0

# Verify assigned IP addresses on the Ethernet interface
adb shell ip addr show eth0

# Inspect the active routing tables for the Ethernet interface
adb shell ip route show dev eth0

This cross-reference ensures that the Linux kernel has successfully brought the interface up (flags: <BROADCAST,MULTICAST,UP,LOWER_UP>) and that proper default routes are registered in the system routing policy database (RPDB).

Troubleshooting Common Android Ethernet Failures

When Ethernet connections fail to initialise or lose connectivity on Android devices, evaluate common architectural pitfalls:

  • USB Host / OTG Power Delivery: External USB-to-Ethernet dongles require sufficient bus power. If the device negotiates in low-power peripheral mode rather than USB host mode, the Ethernet controller will fail to initialise. Inspect USB states via adb shell dumpsys usb.
  • Ethernet Tethering Conflicts: If Ethernet Tethering is toggled on while attempting to use the interface for client Internet access, the EthernetTracker transitions the interface mode from CLIENT to SERVER, preventing standard downstream connectivity. Verify tracking modes in the diagnostic dump.
  • SELinux Policy Restrictions: Custom Android ROMs or embedded builds may block non-standard network interfaces from registering with netd. Check SELinux audit logs using adb shell dmesg | grep -i avc for denials related to ethernet_service or netd.

Get the best tech tips delivered straight to your inbox.

Join thousands of readers mastering Apple, Google, Microsoft, and Linux.