Ubuntu / Debian Linux Install ethtool Too To Display / Set Ethernet Device Settings

The ethtool can be used to query and change settings such as speed, auto- negotiation and checksum offload on many network devices, especially Ethernet devices. How do I install and use ethtool under Ubuntu or Debian Linux based system running on my IBM server?

To control and see the settings of wired Ethernet devices you need to use the ethtool command. It can be used to:

  1. Get identification and diagnostic information
  2. Get extended device statistics
  3. Control speed, duplex, autonegotiation and flow control for Ethernet devices
  4. Control checksum offload and other hardware offload features
  5. Control DMA ring sizes and interrupt moderation
  6. Control receive queue selection for multiqueue devices
  7. Upgrade firmware in flash memory and much more

Install ethtool

Type the following apt-get command to install ethtool utility under Debian or Ubuntu Linux:
$ sudo apt-get update
$ sudo apt-get install ethtool

# apt-get update
# apt-get install ethtool

Sample outputs:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 99.5 kB of archives.
After this operation, 296 kB of additional disk space will be used.
Get:1 wheezy/main ethtool i386 1:3.4.2-1 [99.5 kB]
Fetched 99.5 kB in 2s (45.6 kB/s)  
Selecting previously unselected package ethtool.
(Reading database ... 23726 files and directories currently installed.)
Unpacking ethtool (from .../ethtool_1%3a3.4.2-1_i386.deb) ...
Processing triggers for man-db ...
Setting up ethtool (1:3.4.2-1) ...


The syntax is:

ethtool deviceName
ethtool [options] deviceName
ethtool eth0


To see standard information about device eth0, enter:
# ethtool eth0
Sample outputs:

Settings for eth0:
	Supported ports: [ TP MII ]
	Supported link modes:   10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	Supported pause frame use: No
	Supports auto-negotiation: Yes
	Advertised link modes:  10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	Advertised pause frame use: Symmetric
	Advertised auto-negotiation: Yes
	Link partner advertised link modes:  10baseT/Half 10baseT/Full 
	                                     100baseT/Half 100baseT/Full 
	Link partner advertised pause frame use: Symmetric Receive-only
	Link partner advertised auto-negotiation: Yes
	Speed: 100Mb/s
	Duplex: Full
	Port: MII
	Transceiver: internal
	Auto-negotiation: on
	Supports Wake-on: pumbg
	Wake-on: d
	Current message level: 0x00000001 (1)
	Link detected: yes

Find out driver name associated driver information for eth0

# ethtool -i eth0
Sample outputs:

driver: via-rhine
version: 1.5.0
bus-info: 0000:00:06.0
supports-statistics: no
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no

Find out statistics for NIC and driver

# ethtool -S eth1
# ethtool --statistics eth0

Sample outputs:

NIC statistics:
     rx_packets: 108048475
     tx_packets: 125002612
     rx_bytes: 17446338197
     tx_bytes: 113281003056
     rx_broadcast: 83067
     tx_broadcast: 1329
     rx_multicast: 3
     tx_multicast: 9
     rx_errors: 0
     tx_errors: 0
     tx_dropped: 0
     multicast: 3
     collisions: 0
     rx_length_errors: 0
     rx_over_errors: 0
     rx_crc_errors: 0
     rx_frame_errors: 0
     rx_no_buffer_count: 0
     rx_missed_errors: 0
     tx_aborted_errors: 0
     tx_carrier_errors: 0
     tx_fifo_errors: 0
     tx_heartbeat_errors: 0
     tx_window_errors: 0
     tx_abort_late_coll: 0
     tx_deferred_ok: 0
     tx_single_coll_ok: 0
     tx_multi_coll_ok: 0
     tx_timeout_count: 0
     tx_restart_queue: 2367
     rx_long_length_errors: 0
     rx_short_length_errors: 0
     rx_align_errors: 0
     tx_tcp_seg_good: 0
     tx_tcp_seg_failed: 0
     rx_flow_control_xon: 0
     rx_flow_control_xoff: 0
     tx_flow_control_xon: 0
     tx_flow_control_xoff: 0
     rx_long_byte_count: 17446338197
     rx_csum_offload_good: 107876452
     rx_csum_offload_errors: 2386
     rx_header_split: 0
     alloc_rx_buff_failed: 0
     tx_smbus: 0
     rx_smbus: 0
     dropped_smbus: 0
     rx_dma_failed: 0
     tx_dma_failed: 0

Setup eth0 negotiated speed

# ethtool -s eth0 speed 100 duplex full
# ethtool --change eth0 speed 10 duplex half
# ethtool eth0
# ethtool eth0 | egrep -i 'speed|duplex'

Sample outputs:

	Speed: 10Mb/s
	Duplex: Half

See ethtool command man page for more inforation:
$ man ethtool

Posted by: SXI ADMIN

The author is the creator of nixCraft and a seasoned sysadmin, DevOps engineer, and a trainer for the Linux operating system/Unix shell scripting. Get the latest tutorials on SysAdmin, Linux/Unix and open source topics via RSS/XML feed or weekly email newsletter.


How to KVM, QEMU start or stop virtual machine from command line (CLI)

KVM or Kernel Based Virtual Machine is a popular virtualization technology. It allows you to run virtual guest machines over a host machine. To start...

How to Docker backup Saving and restoring your volumes

Running a Docker volume backup First, we spin up a temporary container, and we mount the backup folder and the target Docker volume to this container....

How to Start and Enable Firewalld on CentOS 7

In this article, we discuss how to start and enable firewalld. It is highly recommended that you have a firewall protecting your server.Pre-Flight CheckThese...