LinuxCommandLibrary

ethtool

Display or change Ethernet card settings

TLDR

Display the current settings for an interface

$ ethtool [eth0]
copy

Display the driver information for an interface
$ ethtool [[-i|--driver]] [eth0]
copy

Display all supported features for an interface
$ ethtool [[-k|--show-features]] [eth0]
copy

Display the network usage statistics for an interface
$ ethtool [[-S|--statistics]] [eth0]
copy

Blink one or more LEDs on an interface for 10 seconds
$ ethtool [[-p|--identify]] [eth0] [10]
copy

Set the link speed, duplex mode, and parameter auto-negotiation for a given interface
$ ethtool [[-s|--change]] [eth0] speed [10|100|1000] duplex [half|full] autoneg [on|off]
copy

SYNOPSIS

ethtool [options] devname

PARAMETERS

-a, --show-pause-params
    Show pause frame parameters

-A, --pause
    Set pause frame parameters (autoneg, rx, tx)

-c, --show-coalesce
    Show coalesce parameters

-C, --coalesce
    Set coalesce parameters (rx/tx usecs, frames, etc.)

-d, --register-dump
    Dump device registers

-e, --register-dump-raw
    Dump raw device registers

-g, --show-ring
    Show ring parameters

-G, --set-ring
    Set ring parameters (rx/tx mini/max)

-i, --driver
    Show driver information

-I, --driver-info
    Show driver info (alternative)

-k, --show-offload
    Show offload parameters

-K, --offload
    Set offload parameters (e.g., tso, gso, gro)

-l, --show-channels
    Show channel parameters

-L, --set-channels
    Set channel parameters (combined, rx, tx, other)

-m, --show-modules
    Show transceiver (SFP/EEPROM) module info

-N, --show-fec
    Show FEC (Forward Error Correction) modes

-S, --stats
    Show adapter statistics

-s, --change
    Change generic settings (speed, duplex, port, etc.)

-p, --identify
    Show/activate PHY identifiers (LED blink)

-r, --recover
    Trigger link recovery (reset)

-t, --test
    Execute device self-test

-u, --show-perf-impact
    Show performance impact

-w, --dump-interval
    Show dump interval

--show-fec
    Show FEC encoding

--set-fec
    Set FEC encoding

--show-eee
    Show EEE (Energy Efficient Ethernet)

--set-eee
    Set EEE parameters

--show-ts-info
    Show timestamping info

--show-ts
    Show PTP hardware clock info

-f, --flash
    Flash device firmware

-n, --show-nics
    List current number of NICs

DESCRIPTION

ethtool is a powerful Linux command-line tool for inspecting and configuring Ethernet network interface controllers (NICs). It provides detailed information about device hardware, drivers, firmware, bus settings (PCIe, etc.), and operational parameters like link speed, duplex mode, autonegotiation status, and error counters.

Administrators use it for troubleshooting connectivity issues, tuning performance (e.g., adjusting interrupt coalescing, ring buffers, offload features), and verifying hardware capabilities. The tool supports viewing statistics, running self-tests, identifying physical ports (via LED blinking), and changing settings such as MTU, Wake-on-LAN, flow control, and RSS hash options.

Most query operations work without privileges, but changes require root or CAP_NET_ADMIN capability. Compatibility varies by driver; not all features are supported on every NIC. It's indispensable for server admins optimizing network throughput and latency.

CAVEATS

Many options depend on driver support; unsupported features return errors. Requires root for changes. Use ethtool -i devname to check driver first. Virtual interfaces (e.g., VLANs) may have limited support.

COMMON EXAMPLES

ethtool eth0 - Basic link info.
ethtool -S eth0 - Statistics.
ethtool -k eth0 - Offloads.
ethtool -s eth0 speed 1000 duplex full autoneg off - Set 1G full-duplex.

PERMISSIONS

Queries: any user. Changes: sudo or CAP_NET_ADMIN. Persistent changes need udev rules or network config files.

HISTORY

Developed by David S. Miller in 2001 for Linux kernel 2.4.x networking. Evolved with kernel features like offloads (2000s), coalescing, channels (2008+). Maintained in net-tools; now standard in iproute2 distributions.

SEE ALSO

ip(8), ss(8), mii-tool(8), iwconfig(8), ethtool(8)

Copied to clipboard