🔌
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
enp6s0
が unmanaged
になっていれば 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
これにより、システム起動時に以下の順序で実行されます:
-
ethercat-nic-up.service
が実行され、enp6s0 がリンクアップ - その後
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
unmanaged-devices
の記述を削除またはコメントアウト
2. 設定ファイルから sudo vim /etc/NetworkManager/NetworkManager.conf
例:
[keyfile]
# unmanaged-devices=interface-name:enp6s0
または、該当行を完全に削除します。
3. NetworkManager を再起動
sudo systemctl restart NetworkManager
4. 設定の反映を確認
nmcli device status
enp6s0
が disconnected
または connected
などに戻っていれば OK です。
Discussion