NASやデスクトップPCのM/Bが2.5GbpsのLANポートを備えているものを持っているので、ASUSのミニPC PN50にも2.5GbpsのUSB Type-C接続LANアダプタをつなげて2.5Gbpsで通信できるようにしてみました。
私はAmazonで「Ankmax UC312G2 USB Type C 有線LANアダプター」という製品を購入しています。これはRealtekのチップを使っていて、Realtekのサイトからドライバーのソースコードをダウンロードしてmake・make installします。
LANアダプターのドライバーのダウンロード
「Ankmax UC312G2 Linux Driver」でGoogle検索するとAnkmax社のWebページが見つかりますが、そこにはRealtek社のサイトからダウンロードしてインストールするように説明されています。
説明のとおり、 https://www.realtek.com/en/component/zoo/category/network-interface-controllers-10-100-1000m-gigabit-ethernet-usb-3-0-software をWebブラウザで開いて、「Unix (Linux)」のところから「Download」のアイコンをクリックしてください。
この時点ではダウンロードは始まらず、「Download File」の画面が表示されます。「Download File」のリンクをクリックするとCaptchaの確認画面が表示されるので、回答を入力してようやく「r8152-2.16.3.tar.bz2」(2.16.3はバージョンの模様)というファイルをダウンロードできます。
ダウンロードしたドライバーファイルはscpコマンドでUbuntu Serverにコピーします。
# 以下はMacでの操作例。Ubuntu Serverに~/tempディレクトリを作成してファイルをコピーする。
cd ~/Downloads/
ssh 【ログインユーザー】@【Ubuntuホスト】 'mkdir -p ~/temp'
scp r8152-2.16.3.tar.bz2 【ログインユーザー】@【Ubuntuホスト】:~/temp/
Ubuntu Serverの開発環境の準備
Ubuntu Serverをインストールした直後はソースコードからソフトをmakeするための環境が整っていません。aptを使ってbuild-essentialsやその他のライブラリをインストールします。
この中には後日Pythonなどをソースコードからmakeするためのものが含まれているので、ドライバーそのもののmakeにはbuild-essentialとlibbz2-devだけでよいのかもしれません。最初、.bz2ファイルを展開するためのbzip2コマンドがUbuntu Server 22.04 LTSには入っていませんでした。
sudo apt update
sudo apt install build-essential libbz2-dev libdb-dev \
libreadline-dev libffi-dev libgdbm-dev liblzma-dev \
libncursesw5-dev libsqlite3-dev libssl-dev \
zlib1g-dev uuid-dev tk-dev automake asciidoc inxi
LANアダプターのドライバーのmake
ダウンロードしたファイルを展開してmakeします。
cd ~/temp/
tar jxvf r8152-2.16.3.tar.bz2
cd r8152-2.16.3/
make
念のため、makeしたドライバーがUSBアダプターをサポートしているかどうか確認します。
~/temp/r8152-2.16.3$ lsusb|grep -i realtek # USBデバイスのIDの表示
Bus 005 Device 002: ID 0bda:8156 Realtek Semiconductor Corp. USB 10/100/1G/2.5G LAN
Bus 004 Device 003: ID 0bda:0129 Realtek Semiconductor Corp. RTS5129 Card Reader Controller
~/temp/r8152-2.16.3$ modinfo ./r8152.ko|grep -i 0bda|grep 8156 # ドライバーにUSBデバイスのIDが含まれることを確認
alias: usb:v0BDAp8156d*dc*dsc*dp*ic02isc0Dip00in*
alias: usb:v0BDAp8156d*dc*dsc*dp*ic02isc06ip00in*
alias: usb:v0BDAp8156d*dc*dsc*dp*icFFisc*ip*in*
LANアダプターのドライバーのインストール
makeしたドライバーをUbuntu Serverにインストールします。
sudo make install
sudo cp ./50-usb-realtek-net.rules /etc/udev/rules.d/
sudo depmod -a
sudo update-initramfs -u
sudo service udev restart
システム情報を調べるinxiを使ってUSB LANアダプターの情報を確認します。ドライバーが正常にインストールされていれば、「IF: enxAABBCCDDEEFF」 (AABBCCDDEEFFはMACアドレス)が表示されます。
~/temp/r8152-2.16.3$ inxi -i
Network:
Device-1: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet driver: r8169
IF: enp2s0f0 state: up speed: 1000 Mbps duplex: full mac: xx:xx:xx:xx:xx:xx
IP v4: 192.168.xxx.xxx/24 scope: global
Device-2: Realtek USB 10/100/1G/2.5G LAN type: USB driver: cdc_ncm
IF: enxAABBCCDDEEFF state: down mac: AA:BB:CC:DD:EE:FF
WAN IP: ・・・
最後に、/etc/netplan/ディレクトリ配下の設定ファイル(00-installer-config.yaml)を変更して、Ubuntu ServerのIPアドレスを変更します。
sudo nano /etc/netplan/00-installer-config.yaml
「enp2s0f0」の箇所を「enxAABBCCDDEEFF」に書き換えます。
# This is the network config written by 'subiquity'
network:
ethernets:
enxAABBCCDDEEFF:
addresses:
- 192.168.xxx.xxx/24
(以下略)
USBドライバーのソースコードに付属しているReadMe.txtによると、以下のコマンドを実行することで設定速度を2.5Gbpsにするそうです。
sudo ethtool -s enxAABBCCDDEEFF autoneg on advertise 0x80000000002f
shutdownコマンドでUbuntu Serverをいったん終了し、LANケーブルをUSB LANアダプターにつなぎ替えてPCを再起動します。
sudo shutdown -h now
Ubuntu ServerにSSHで再接続できれば完了です。inxiコマンドで2500Mbpsでリンクしていることを確認できます。ethtoolsコマンドを使って確認することもできます。
~$ inxi -i
Network:
Device-1: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet driver: r8169
IF: enp2s0f0 state: down mac: xx:xx:xx:xx:xx:xx
Device-2: Realtek USB 10/100/1G/2.5G LAN type: USB driver: r8152
IF: enxAABBCCDDEEFF state: up speed: 2500 Mbps duplex: full mac: AA:BB:CC:DD:EE:FF
IP v4: 192.168.xxx.xxx/24 scope: global
WAN IP: ・・・
~$ ethtool enxAABBCCDDEEFF
Settings for enxAABBCCDDEEFF:
(中略)
Speed: 2500Mb/s
(以下省略)
iperfで通信速度を確認する
念のため、2.5GbpsのLANでつながっている別PCから通信速度を確認します。まずUbuntu Server側でiperfをインストールして起動します。
sudo apt install iperf
iperf -s # iperfのサーバを起動
別PCからiperfのクライアントを起動して、Ubuntu Serverに接続します。
# 別PCのターミナルで操作
iperf -c 【UbuntuのIPアドレス】
以下のような結果が得られたら、2.5Gbpsでうまく通信できています。
------------------------------------------------------------
Client connecting to 192.168.xxx.xxx, TCP port 5001
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[ 1] local 192.168.xxx.xxx port 48904 connected with 192.168.xxx.xxx port 5001
[ ID] Interval Transfer Bandwidth
[ 1] 0.0000-10.0163 sec 2.74 GBytes 2.35 Gbits/sec