mii-diag - Network adapter control and monitoring
This manual page documents briefly the mii-diag network adapter control
and monitoring command. Addition documentation is available from
This mii-diag command configures, controls and monitors the transceiver
management registers for network interfaces, and configures driver
operational parameters. For transceiver control mii-diag uses the
Media Independent Interface (MII) standard (thus the command name). It
also has additional Linux-specific controls to communicate parameters
such as message enable settings and buffer sizes to the underlying
The MII standard defines registers that control and report network
transceiver capabilities, link settings and errors. Examples are link
speed, duplex, capabilities advertised to the link partner, status LED
indications and link error counters.
The mii-diag command supports both single character and long option
names. Short options use a single dash (´-´) in front of the option
character. For options without parameters, multiple options may be
concatenated after a single dash. Long options are prefixed by two
dashes (´--´), and may be abbreviated with a unique prefix. A long
option may take a parameter of the form --arg=param or --arg param.
A summary of options is as follows.
-A, --advertise <speed|setting>
-F, --fixed-speed <speed|setting>
Speed is one of: 100baseT4, 100baseTx, 100baseTx-FD, 100baseTx-
HD, 10baseT, 10baseT-FD, 10baseT-HD. For more precise control
an explicit numeric register setting is also allowed.
Show the status of all interfaces. This option is not
recommended with any other option, especially ones that change
Return exit status 2 if there is no link beat.
-D Increase the debugging level. This may be used to understand
the actions the command is taking.
Show driver-specific parameters.
-G, --set-parameters value[,value...]
Set driver-specific parameters. Set a adapter-specific
parameters. Parameters are comma separated, with missing
elements retaining the existing value.
-v Increase the verbosity level. Additional "-v" options increase
the level further.
-V Show the program version information.
Continuously monitor the transceiver and report changes.
-? Emit usage information.
Calling the command with just the interface name (which defaults to
capabilities, configuration and current status.
The ’--monitor’ option allows scripting link beat changes.
This option is similar to --watch, but with lower overhead and
simplified output. It polls the interface only once a second and the
output format is a single line per link change with three fixed words
<unknown|down||negotiating|up> <STATUS> <PARTNER-CAP>
Example output: mii-diag --monitor eth0
down 0x7809 0x0000
negotiating 0x7829 0x45e1
up 0x782d 0x45e1
down 0x7809 0x0000
This may be used as
mii-diag --monitor eth0 |
while read linkstatus bmsr linkpar; do
case $linkstatus in
up) ifup eth0 ;;
down) ifdown eth0 ;;
It may be useful to shorten the DHCP client daemon timeout if it does
not receive an address by adding the following setting to
/etc/sysconfig/network: DHCPCDARGS="-t 3"
Addition documentation is available from
The --all-interfaces option is quirky. There are very few settings
that are usefully applied to all interfaces.
The manual pages, diagnostic commands, and many of the underlying Linux
network drivers were written by Donald Becker for the Scyld Beowulf(™)