🔌

EthernetポートをEtherCAT専用に設定・解除する手順

に公開

Ethernet ポートを EtherCAT 専用に設定・解除する手順

前提

  • 対象 OS: Ubuntu 22.04 など NetworkManager を利用している Linux
  • EtherCAT 用に設定したいインターフェース名(例: enp6s0)を事前に確認

EtherCAT 用に Ethernet ポートを「unmanaged(管理外)」に設定する

1. インターフェース名を確認

ip link
# または
nmcli device status

使用可能なネットワークインターフェースの一覧が表示されます。EtherCAT 用に使用したいインターフェース名をメモしてください。

2. NetworkManager の設定ファイルを編集

sudo vim /etc/NetworkManager/NetworkManager.conf

下記を末尾に追加

[keyfile]
unmanaged-devices=interface-name:enp6s0

注意
複数インターフェースを指定したい場合は「セミコロン(;)」で区切って記載します
例: unmanaged-devices=interface-name:enp6s0;interface-name:enp7s0

3. NetworkManager を再起動

sudo systemctl restart NetworkManager

4. 設定の反映を確認

nmcli device status

enp6s0unmanaged になっていれば OK です。

5. 再起動時の問題と対処法

問題

上記の設定だけでは、PC を再起動した際に enp6s0 がリンクダウン状態のまま unmanaged となり、EtherCAT マスターから認識されない場合があります。

原因

NetworkManager が管理していないインターフェースは、自動的にリンクアップされません。そのため、手動でインターフェースを有効化する必要があります。

解決方法

systemd サービスで自動的にリンクアップ

EtherCAT サービスの起動前にインターフェースをリンクアップする専用のサービスを作成します。

sudo vim /etc/systemd/system/ethercat-nic-up.service

以下の内容を記述:

[Unit]
Description=Set EtherCAT NIC UP
Before=ethercat.service

[Service]
Type=oneshot
ExecStart=/usr/bin/ip link set enp6s0 up

[Install]
WantedBy=multi-user.target

サービスファイルを配置後、以下のコマンドを実行して systemd に新規ユニットを認識させます:

sudo systemctl daemon-reload

サービスを有効化:

sudo systemctl enable ethercat-nic-up.service
sudo systemctl start ethercat-nic-up.service

これにより、システム起動時に以下の順序で実行されます:

  1. ethercat-nic-up.service が実行され、enp6s0 がリンクアップ
  2. その後 ethercat.service が起動し、EtherCAT マスターが動作開始

動作確認

再起動後に以下のコマンドで確認:

# インターフェースの状態を確認
ip link show enp6s0

# リンクアップしているか確認(UP が表示されるはず)
ip link show enp6s0 | grep UP

# EtherCAT マスターからの認識確認(EtherCAT マスターがインストール済みの場合)
sudo ethercat slaves

トラブルシューティング

インターフェースが unmanaged のままリンクダウンしている場合

手動でリンクアップ:

sudo ip link set enp6s0 up

NetworkManager の状態確認

# デバイスの詳細情報を表示
nmcli device show enp6s0

# NetworkManager のログを確認
journalctl -u NetworkManager -n 50

EtherCAT 接続の確認

# EtherCAT バスのスキャン(EtherCAT マスターがインストール済みの場合)
sudo ethercat master
sudo ethercat slaves

EtherCAT 専用設定を解除し、通常のネットワーク用途に戻す

1. ethercat-nic-up.service を無効化

まず、自動リンクアップサービスを停止・無効化します:

sudo systemctl stop ethercat-nic-up.service
sudo systemctl disable ethercat-nic-up.service

2. 設定ファイルから unmanaged-devices の記述を削除またはコメントアウト

sudo vim /etc/NetworkManager/NetworkManager.conf

例:

[keyfile]
# unmanaged-devices=interface-name:enp6s0

または、該当行を完全に削除します。

3. NetworkManager を再起動

sudo systemctl restart NetworkManager

4. 設定の反映を確認

nmcli device status

enp6s0disconnected または connected などに戻っていれば OK です。

参考文献

Discussion