ブログ

オートネゴシエーションを無効にしてネットワーク通信速度を固定する方法: mii-tool

at_shigehisa.y…
2019年10月1日 10時15分

今回は、mii-tool(https://manpages.debian.org/buster/manpages-ja/mii-tool.8.ja.html)を使ってオートネゴシエーションの禁止と通信速度の固定を行います。 ethtoolを使う場合は、オートネゴシエーションを無効にしてネットワーク通信速度を固定する方法: ethtoolを参照して下さい。

1. ネットワーク状態の確認

はじめに、nmcliコマンドで、登録されているコネクションを確認します。

root@armadillo:~# nmcli connect
NAME                UUID                                  TYPE            DEVICE
Wired connection 1  d32dc075-1401-3f57-a4fd-d6af06337c0c  802-3-ethernet  eth0

ここでは、有線LANが登録されていることが分かります。 次に、mii-toolコマンドで、eth0の状態を確認します。

root@armadillo:~# mii-tool -v eth0
eth0: negotiated 1000baseT-FD flow-control, link ok
  product info: vendor 00:01:c1, model 19 rev 1
  basic mode:   autonegotiation enabled
  basic status: autonegotiation complete, link ok
  capabilities: 1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
  advertising:  1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control
  link partner: 1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD

上記結果から、eth0はオートネゴシエーションが有効、通信速度1000Mbps、全二重でリンクアップされていることが分かります。

2. オートネゴシエーションの無効と通信速度の固定

ここでは、以下のコマンドを実行して、eth0のオートネゴシエーションを無効、通信速度を100Mbpsに固定してみます。

root@armadillo:~# mii-tool eth0 -F 100baseTx-FD
root@armadillo:~# fec 30bf0000.ethernet eth0: Link is Down
fec 30bf0000.ethernet eth0: Link is Up - 100Mbps/Full - flow control off

mii-tool -vを実行して、eth0が指定した設定になっていることを確認します。

root@armadillo:~# mii-tool -v eth0
eth0: 1000 Mbit, full duplex, link ok
  product info: vendor 00:01:c1, model 19 rev 1
  basic mode:   100 Mbit, full duplex
  basic status: link ok
  capabilities: 1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
  advertising:  1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control
  link partner: 1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
root@armadillo:~#

Note:

mii-tool eth0 -F 100baseTx-FDコマンドを実行して暫く待ってもリンクアップされない(Link is Downで止まる)場合は、以下のコマンドでオートネゴシエーションを一旦有効にして、再度mii-tool eth0 -F 100baseTx-FDコマンドを実行して下さい。

root@armadillo:~# mii-tool eth0 -r
restarting autonegotiation...
root@armadillo:~# fec 30bf0000.ethernet eth0: Link is Up - 1Gbps/Full - flow control off

3. 変更した内容をArmadillo起動時に自動実行

mii-toolで変更した内容は一時的なものであり、Armadilloを再起動したら変更内容はデフォルトに戻ります。 Armadillo再起動時にオートネゴシエーションを無効にして、通信速度を所定の値に設定したい場合は、スクリプトを自動実行させます。 スクリプトの例を以下に示します。

#!/bin/bash
mii-tool eth0 -F 100baseTx-FD

上記スクリプトを自動実行させる方法は、以下のブログを参照して下さい。
Armadillo-X1, Armadillo-IoT G3/G3L: systemdでアプリを自動起動する方法(その1)