T he 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

OR
# 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:
  ethtool
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 http://mirror.anl.gov/debian/ 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) ...

Syntax

The syntax is:

ethtool deviceName
ethtool [options] deviceName
ethtool eth0

Examples

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
	PHYAD: 1
	Transceiver: internal
	Auto-negotiation: on
	Supports Wake-on: pumbg
	Wake-on: d
	Current message level: 0x00000001 (1)
			       drv
	Link detected: yes

FIND OUT DRIVER NAME ASSOCIATED DRIVER INFORMATION FOR ETH0

# ethtool -i eth0
Sample outputs:

driver: via-rhine
version: 1.5.0
firmware-version: 
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