Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I just installed a new gigabit network interface card (NIC) in Linux. How do I tell if it is really set to gigabit speeds? I see ethtool has an option to set the speed, but I can't seem to figure out how to report its current speed.

share|improve this question
ethtool -h says: ethtool DEVNAME Display standard information about device – Ryan Babchishin Oct 17 '15 at 23:12
up vote 62 down vote accepted

Just use a command like: ethtool eth0 to get the needed info.

Speed: 1000Mb/s
share|improve this answer
Thank you! I knew it was something simple like that! – User1 Nov 30 '10 at 16:29

Use mii-tool to watch the negotiated network speed.


eth0: no link
eth1: negotiated 100baseTx-FD, link ok
share|improve this answer
For Debian based systems, ethtool is not installed by default. But mii-tool is, as part of the essential "net-tools" package. So this was the best solution for me. – mivk Jul 6 '14 at 13:20

As Khaled mentioned, you should be able to run ethtool with just the interface as an argument. This will list the supported speeds, the advertised speeds, the current speed, and a bunch of other things too:

Settings for eth0:
    Supported ports: [ TP ]
    Supported link modes:   10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
    Supports auto-negotiation: Yes
    Advertised link modes:  10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
    Advertised auto-negotiation: Yes
    Speed: 1000Mb/s
    Duplex: Full
    Port: Twisted Pair
    PHYAD: 0
    Transceiver: internal
    Auto-negotiation: on
    Supports Wake-on: d
    Wake-on: d
    Current message level: 0x00000007 (7)
    Link detected: yes

You can also run dmesg, and grep for your interface, but this might not work if your system has been running for a long time and the current buffer no longer has that information (in that case, you'll have to grep the older /var/log/dmesg.* files):

dmesg |grep eth0
[    2.867481] e1000: eth0: e1000_probe: Intel(R) PRO/1000 Network Connection
[   19.429444] ADDRCONF(NETDEV_UP): eth0: link is not ready
[   19.431555] e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
[   19.449341] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[   26.972379] e1000: eth0: e1000_set_tso: TSO is Enabled
[   29.920458] eth0: no IPv6 routers present
share|improve this answer

Use below command

 dmesg | grep -i duplex
 Output: eth0: link up, 100Mbps, full-duplex, lpa 0x45E1

refer this

share|improve this answer
Useful when you don't have root access. – Mehdi Sadeghi Apr 11 at 8:24
useful when the log is not overwritten. I'm in the unfortunate situation. – zhaorufei May 5 at 6:01

I know this is not quite what you asked. But if you want to know the real world performance of your NIC, rather than what your computer says it should be, you can use iperf. You'll need two computers.

On computer one, run iperf in server mode:

iperf -s

On the other, run iperf in client mode:

iperf -c

If you want to see the full duplex speed, try this instead:

iperf -d -c

Substitute for the servers IP address

share|improve this answer

It is possible to use the information from the kernel when ethtool is missing:

cat /sys/class/net/<interface>/speed
share|improve this answer
Note: Only available since 2.6.33 version – zhaorufei May 5 at 5:55

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.