How to View Network Card Link Speed Using ethtool in Linux

When you plug a massive server into an enterprise-grade 10-Gigabit network switch, the Linux kernel and the physical Network Interface Card (NIC) negotiate the connection speed automatically. However, this auto-negotiation process can sometimes fail due to a bad cable, an outdated driver, or a misconfigured switch port. If auto-negotiation fails, the card might silently fall back to a painfully slow 100Mbps speed or drop into “half-duplex” mode, causing massive network collisions. To verify exactly what speed your network card is actually operating at, you must use the ethtool command.

How to View Current Link Speed and Duplex

The ethtool utility queries the NIC hardware directly, bypassing the operating system’s software layers. To use it, you must first know the exact name of your network interface (e.g., eth0 or enp3s0). You can find this name by running the ip a command.

Once you know the interface name, run the following command (requires sudo for hardware access):

sudo ethtool enp3s0

The terminal will output a detailed list of the card’s physical capabilities. To diagnose a bottleneck, look at the very bottom of the output for these three specific lines:

  • Speed: This is the current, active speed the card is transmitting data at (e.g., 1000Mb/s for Gigabit, or 10000Mb/s for 10-Gigabit). If you paid for a 10G connection but this line says 100Mb/s, your auto-negotiation has failed.
  • Duplex: This should almost always say Full. Full-duplex means the server can send and receive data simultaneously. If it says Half, the server must take turns talking and listening, which will completely destroy your network performance.
  • Link detected: This should say yes. If it says no, the card does not detect a physical cable plugged into the port.

How to Force a Specific Speed

If the auto-negotiation protocol is consistently failing and dropping your server to a slower speed, you can use ethtool to aggressively force the card to lock into a specific speed and duplex setting. (Warning: Only do this if you are absolutely certain the switch on the other end of the cable supports the speed you are forcing. If the switch does not support it, you will completely disconnect your server from the network.)

To forcefully disable auto-negotiation, lock the speed to 1000Mb/s, and lock the duplex to Full, run:

sudo ethtool -s enp3s0 speed 1000 duplex full autoneg off

The change is instantaneous. The card will immediately drop its connection and attempt to reconnect using the strict parameters you provided. Note that changes made with ethtool are temporary and will be lost if you reboot the server. To make them permanent, you must add the command to your server’s startup scripts or network configuration files.

Get the best tech tips delivered straight to your inbox.

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