Raspberry Pi 4に2.5Gbps Ethernetアダプタを接続してみた (1) 失敗編
2022年5月19日追記
成功編を書きました。
4行まとめ
- Raspberry Pi 4のUSBは、青色の2ポートがUSB 3.2 Gen 1(5Gbps)。
- Raspberry Pi 4に2.5Gbps Ethernetアダプタ「EDC-QUA3C-B」を接続すると、標準ドライバで正常に認識する。
- 「EDC-QUA3C-B」のチップは「RTL8156B」(Realtek製)。
- 2.5Gbps Ethernetデバイスとして認識されるも、通信速度は1Gbpsを少し超えるくらい。(失敗)
はじめに
2.5Gbps、5Gbpsなどの、いわゆる「マルチギガ」なEthernet製品も安くなってきましたね。
以前から「Raspberry Piに2.5Gbps Ethernetアダプタを接続したら、どれくらいの通信速度が出るだろう?」と気になっていたので、実験してみました。
なお、通信速度が必要な理由は、高速なネットワークストレージを構築したいからです。
結果から言えば、現時点では「成功」と言える状態ではありません。2.5Gbps Ethernetデバイスとしては正常に認識したのですが、通信速度は1Gbpsを少し超えるくらいでした。
ドライバのビルドも試してみたのですが、現時点ではこちらも成功していません。(詳細は後述)
使用機材
今回の実験で使用した機材は以下の通りです。
メーカー | 品名 | 型番 | 台数 | 参考リンク |
---|---|---|---|---|
- | Raspberry Pi 4 Model B 4GB | - | 2台 | Amazon |
エレコム | 2.5Gbps Ethernet/USBアダプタ | EDC-QUA3C-B | 2台 | Amazon |
PLANEX | 2.5Gbps Ethernet スイッチングハブ 8ポート | FX2G-08EM | 1台 | Amazon |
BUFFALO | Ethernetケーブル Cat6A 0.5m | BCLS6AN05BK | 2本 | Amazon |
環境
Raspberry Pi 4 2台の環境は以下の通りです。
- OS: Raspberry Pi OS 64ビット版
- Linuxカーネル:
5.10.63-v8+
- Linuxカーネル:
- ホスト名:
raspi4b4g-3
、raspi4b4g-4
- ネットワークデバイス:
-
wlan0
:192.168.1.0/24
、内蔵無線LAN(Wi-Fi) -
eth0
:192.168.2.0/24
、内蔵有線LAN(1Gbps Ethernet) -
eth1
:192.168.3.0/24
、Ethernet/USBアダプタ(2.5Gbps Ethernet)
-
pi@raspi4b4g-3$ dpkg -l | grep raspberrypi-kernel
ii raspberrypi-kernel 1:1.20211201~buster-1 arm64 Raspberry Pi bootloader
ii raspberrypi-kernel-headers 1:1.20211201~buster-1 arm64 Header files for the Raspberry Pi Linux kernel
pi@raspi4b4g-3$ uname -a
Linux raspi4b4g-3 5.10.63-v8+ #1496 SMP PREEMPT Wed Dec 1 15:59:46 GMT 2021 aarch64 GNU/Linux
pi@raspi4b4g-3$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 10 (buster)"
NAME="Debian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
内蔵無線LAN、内蔵有線LANの通信速度
まずは、Raspberry Pi 4の基本的な能力を測るために、内蔵無線LAN、内蔵有線LANの通信速度を測定してみました。
測定にはiperf3
を使用しました。apt
コマンドでインストールできます。
$ sudo apt update
$ sudo apt install iperf3
内蔵無線LANの通信速度
Raspberry Pi 4の内蔵無線LANは「Wi-Fi 5」(IEEE 802.11ac)です。
以下の経路を測定したところ、67.2〜78.6Mbpsでした。無線LANの測定結果は変動が大きいので、ご参考まで。
Raspberry Pi 4 (wlan0) 〜 Wi-Fi 5 〜 無線LANアクセスポイント 〜 Wi-Fi 5 〜 Raspberry Pi 4 (wlan0)
なお、今回使用したRaspberry Pi 4には、アルミヒートシンクケースが取り付けられており、無線LANアクセスポイントも隣の部屋にあるため、通信環境としてあまりよくありません。
環境が良ければ、もう少し速度が出そうな気がします。
詳細な測定結果
pi@raspi4b4g-3$ ip address show wlan0
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether dc:a6:32:12:90:df brd ff:ff:ff:ff:ff:ff
inet 192.168.1.151/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0
valid_lft 85285sec preferred_lft 74485sec
inet6 fe80::acf7:f49d:3885:306e/64 scope link
valid_lft forever preferred_lft forever
pi@raspi4b4g-3$ iperf3 --server --bind 192.168.1.151
pi@raspi4b4g-3$ iperf3 --client 192.168.1.150
Connecting to host 192.168.1.150, port 5201
[ 5] local 192.168.1.151 port 44124 connected to 192.168.1.150 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 10.4 MBytes 87.0 Mbits/sec 0 495 KBytes
[ 5] 1.00-2.00 sec 9.61 MBytes 80.6 Mbits/sec 0 807 KBytes
[ 5] 2.00-3.00 sec 8.75 MBytes 73.4 Mbits/sec 0 1003 KBytes
[ 5] 3.00-4.00 sec 10.0 MBytes 83.9 Mbits/sec 3 785 KBytes
[ 5] 4.00-5.00 sec 8.75 MBytes 73.4 Mbits/sec 11 601 KBytes
[ 5] 5.00-6.00 sec 8.75 MBytes 73.4 Mbits/sec 0 641 KBytes
[ 5] 6.00-7.00 sec 10.0 MBytes 83.9 Mbits/sec 0 672 KBytes
[ 5] 7.00-8.00 sec 8.75 MBytes 73.4 Mbits/sec 0 690 KBytes
[ 5] 8.00-9.00 sec 10.0 MBytes 83.9 Mbits/sec 0 697 KBytes
[ 5] 9.00-10.00 sec 8.75 MBytes 73.4 Mbits/sec 0 699 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 93.7 MBytes 78.6 Mbits/sec 14 sender
[ 5] 0.00-10.02 sec 90.8 MBytes 76.0 Mbits/sec receiver
iperf Done.
pi@raspi4b4g-4$ ip address show wlan0
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether dc:a6:32:64:9c:b1 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.150/24 brd 192.168.1.255 scope global dynamic noprefixroute wlan0
valid_lft 85239sec preferred_lft 74439sec
inet6 fe80::e7fb:c3c4:3e1d:e9a5/64 scope link
valid_lft forever preferred_lft forever
pi@raspi4b4g-4$ iperf3 --client 192.168.1.151
Connecting to host 192.168.1.151, port 5201
[ 5] local 192.168.1.150 port 47646 connected to 192.168.1.151 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 8.81 MBytes 73.9 Mbits/sec 0 426 KBytes
[ 5] 1.00-2.00 sec 9.72 MBytes 81.5 Mbits/sec 0 646 KBytes
[ 5] 2.00-3.00 sec 7.50 MBytes 62.9 Mbits/sec 11 361 KBytes
[ 5] 3.00-4.00 sec 8.75 MBytes 73.4 Mbits/sec 0 387 KBytes
[ 5] 4.00-5.00 sec 7.50 MBytes 62.9 Mbits/sec 0 402 KBytes
[ 5] 5.00-6.00 sec 8.75 MBytes 73.4 Mbits/sec 0 409 KBytes
[ 5] 6.00-7.00 sec 7.50 MBytes 62.9 Mbits/sec 0 410 KBytes
[ 5] 7.00-8.00 sec 8.75 MBytes 73.4 Mbits/sec 6 293 KBytes
[ 5] 8.00-9.00 sec 7.50 MBytes 62.9 Mbits/sec 0 344 KBytes
[ 5] 9.00-10.00 sec 8.75 MBytes 73.4 Mbits/sec 0 376 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 83.5 MBytes 70.1 Mbits/sec 17 sender
[ 5] 0.00-10.02 sec 80.2 MBytes 67.2 Mbits/sec receiver
iperf Done.
pi@raspi4b4g-4$ iperf3 --server --bind 192.168.1.150
内蔵有線LANの通信速度
Raspberry Pi 4の有線LANは「1Gbps Ethernet」(1000BASE-T)です。
以下の経路を測定したところ、918〜940Mbpsでした。論理値に近い、割と良い速度が出ていますね。
Raspberry Pi 4 (eth0) ~ Cat6ケーブルで直結 〜 Raspberry Pi 4 (eth0)
詳細な測定結果
pi@raspi4b4g-3$ ip address show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether dc:a6:32:12:90:de brd ff:ff:ff:ff:ff:ff
inet 192.168.2.43/24 brd 192.168.2.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::2515:922b:a08b:3315/64 scope link
valid_lft forever preferred_lft forever
pi@raspi4b4g-3$ iperf3 --server --bind 192.168.2.43
pi@raspi4b4g-3$ iperf3 --client 192.168.2.44
Connecting to host 192.168.2.44, port 5201
[ 5] local 192.168.2.43 port 41048 connected to 192.168.2.44 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 112 MBytes 939 Mbits/sec 0 420 KBytes
[ 5] 1.00-2.00 sec 112 MBytes 938 Mbits/sec 0 420 KBytes
[ 5] 2.00-3.00 sec 113 MBytes 944 Mbits/sec 0 420 KBytes
[ 5] 3.00-4.00 sec 112 MBytes 937 Mbits/sec 0 420 KBytes
[ 5] 4.00-5.00 sec 112 MBytes 941 Mbits/sec 0 420 KBytes
[ 5] 5.00-6.00 sec 112 MBytes 939 Mbits/sec 0 420 KBytes
[ 5] 6.00-7.00 sec 113 MBytes 945 Mbits/sec 0 445 KBytes
[ 5] 7.00-8.00 sec 111 MBytes 934 Mbits/sec 0 445 KBytes
[ 5] 8.00-9.00 sec 112 MBytes 940 Mbits/sec 0 445 KBytes
[ 5] 9.00-10.00 sec 112 MBytes 941 Mbits/sec 0 445 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 1.09 GBytes 940 Mbits/sec 0 sender
[ 5] 0.00-10.00 sec 1.09 GBytes 938 Mbits/sec receiver
iperf Done.
pi@raspi4b4g-4$ ip address show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether dc:a6:32:64:9c:b0 brd ff:ff:ff:ff:ff:ff
inet 192.168.2.44/24 brd 192.168.2.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::3c24:c08d:a7b1:1f4/64 scope link
valid_lft forever preferred_lft forever
pi@raspi4b4g-4$ iperf3 --client 192.168.2.43
Connecting to host 192.168.2.43, port 5201
[ 5] local 192.168.2.44 port 36512 connected to 192.168.2.43 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 112 MBytes 941 Mbits/sec 0 416 KBytes
[ 5] 1.00-2.00 sec 111 MBytes 935 Mbits/sec 0 416 KBytes
[ 5] 2.00-3.00 sec 112 MBytes 944 Mbits/sec 0 416 KBytes
[ 5] 3.00-4.00 sec 112 MBytes 936 Mbits/sec 0 416 KBytes
[ 5] 4.00-5.00 sec 112 MBytes 942 Mbits/sec 0 416 KBytes
[ 5] 5.00-6.00 sec 112 MBytes 941 Mbits/sec 0 462 KBytes
[ 5] 6.00-7.00 sec 112 MBytes 943 Mbits/sec 0 462 KBytes
[ 5] 7.00-8.00 sec 88.1 MBytes 739 Mbits/sec 1 503 KBytes
[ 5] 8.00-9.00 sec 113 MBytes 948 Mbits/sec 0 503 KBytes
[ 5] 9.00-10.00 sec 112 MBytes 939 Mbits/sec 0 503 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 1.07 GBytes 921 Mbits/sec 1 sender
[ 5] 0.00-10.00 sec 1.07 GBytes 918 Mbits/sec receiver
iperf Done.
pi@raspi4b4g-4$ iperf3 --server --bind 192.168.2.44
2.5Gbps Ethernetアダプタの通信速度
Raspberry Pi 4の基本的な能力が分かったところで、本題の2.5Gbps Ethernetアダプタを使った測定を行ってみます。
接続
まずは、2.5Gbps EthernetアダプタをRaspberry Pi 4のUSB 3.2 Gen 1ポート(青い方)に接続し、デバイスとして認識することを確認します。
pi@raspi4b4g-3$ lsusb
Bus 002 Device 003: ID 056e:4017 Elecom Co., Ltd
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
pi@raspi4b4g-3$ lsusb -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
|__ Port 2: Dev 3, If 0, Class=Communications, Driver=cdc_ncm, 5000M
|__ Port 2: Dev 3, If 1, Class=CDC Data, Driver=cdc_ncm, 5000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
無事に認識されているようです。また、想定通りUSB 3.2 Gen 1(5Gbps)でリンクしています。
lsusb -v の結果
lsusb -v
の結果は以下の通りです。
pi@raspi4b4g-3$ sudo lsusb -s 2:3 -v
Bus 002 Device 003: ID 056e:4017 Elecom Co., Ltd
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 3.20
bDeviceClass 0
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 9
idVendor 0x056e Elecom Co., Ltd
idProduct 0x4017
bcdDevice 31.00
iManufacturer 1 Realtek
iProduct 2 USB 10/100/1G/2.5G LAN
iSerial 6 001000001
bNumConfigurations 3
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x0039
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xa0
(Bus Powered)
Remote Wakeup
MaxPower 256mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 3
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 255 Vendor Specific Subclass
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0400 1x 1024 bytes
bInterval 0
bMaxBurst 3
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0400 1x 1024 bytes
bInterval 0
bMaxBurst 3
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0002 1x 2 bytes
bInterval 11
bMaxBurst 0
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x0068
bNumInterfaces 2
bConfigurationValue 2
iConfiguration 0
bmAttributes 0xa0
(Bus Powered)
Remote Wakeup
MaxPower 256mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 2 Communications
bInterfaceSubClass 13
bInterfaceProtocol 0
iInterface 5 CDC Communications Control
CDC Header:
bcdCDC 1.10
CDC Union:
bMasterInterface 0
bSlaveInterface 1
CDC Ethernet:
iMacAddress 3 04AB18A2A32C
bmEthernetStatistics 0x0031501f
wMaxSegmentSize 1518
wNumberMCFilters 0x8000
bNumberPowerFilters 0
CDC NCM:
bcdNcmVersion 1.00
bmNetworkCapabilities 0x2b
8-byte ntb input size
max datagram size
net address
packet filter
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0010 1x 16 bytes
bInterval 11
bMaxBurst 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 10 CDC Data
bInterfaceSubClass 0
bInterfaceProtocol 1
iInterface 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 1
bNumEndpoints 2
bInterfaceClass 10 CDC Data
bInterfaceSubClass 0
bInterfaceProtocol 1
iInterface 4 Ethernet Data
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0400 1x 1024 bytes
bInterval 0
bMaxBurst 3
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0400 1x 1024 bytes
bInterval 0
bMaxBurst 3
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x0062
bNumInterfaces 2
bConfigurationValue 3
iConfiguration 0
bmAttributes 0xa0
(Bus Powered)
Remote Wakeup
MaxPower 256mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 2 Communications
bInterfaceSubClass 6 Ethernet Networking
bInterfaceProtocol 0
iInterface 5 CDC Communications Control
CDC Header:
bcdCDC 1.10
CDC Union:
bMasterInterface 0
bSlaveInterface 1
CDC Ethernet:
iMacAddress 3 04AB18A2A32C
bmEthernetStatistics 0x0031501f
wMaxSegmentSize 1518
wNumberMCFilters 0x8000
bNumberPowerFilters 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0010 1x 16 bytes
bInterval 11
bMaxBurst 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 10 CDC Data
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 1
bNumEndpoints 2
bInterfaceClass 10 CDC Data
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 4 Ethernet Data
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0400 1x 1024 bytes
bInterval 0
bMaxBurst 3
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0400 1x 1024 bytes
bInterval 0
bMaxBurst 3
Binary Object Store Descriptor:
bLength 5
bDescriptorType 15
wTotalLength 0x0016
bNumDeviceCaps 2
USB 2.0 Extension Device Capability:
bLength 7
bDescriptorType 16
bDevCapabilityType 2
bmAttributes 0x00000002
HIRD Link Power Management (LPM) Supported
SuperSpeed USB Device Capability:
bLength 10
bDescriptorType 16
bDevCapabilityType 3
bmAttributes 0x02
Latency Tolerance Messages (LTM) Supported
wSpeedsSupported 0x000e
Device can operate at Full Speed (12Mbps)
Device can operate at High Speed (480Mbps)
Device can operate at SuperSpeed (5Gbps)
bFunctionalitySupport 2
Lowest fully-functional device speed is High Speed (480Mbps)
bU1DevExitLat 10 micro seconds
bU2DevExitLat 2047 micro seconds
can't get debug descriptor: Resource temporarily unavailable
Device Status: 0x001c
(Bus Powered)
U1 Enabled
U2 Enabled
Latency Tolerance Messaging (LTM) Enabled
設定
USBポートに接続するとeth1
として認識されました。IPアドレスも問題なく設定できました。
pi@raspi4b4g-3$ ip address show eth1
8: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 04:ab:18:a2:a3:2c brd ff:ff:ff:ff:ff:ff
inet 192.168.3.43/24 brd 192.168.3.255 scope global noprefixroute eth1
valid_lft forever preferred_lft forever
inet6 fe80::fe2:95de:852a:7e1c/64 scope link
valid_lft forever preferred_lft forever
ただ、ethtool
コマンドでは詳細な情報が出力されませんでした。
pi@raspi4b4g-3$ sudo ethtool eth1
Settings for eth1:
Current message level: 0x00000007 (7)
drv probe link
Link detected: yes
内蔵有線LAN(eth0
)では、以下のように詳細な情報が出力されます。
pi@raspi4b4g-3$ sudo ethtool eth0
Settings for eth0:
Supported ports: [ TP MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Supported pause frame use: Symmetric Receive-only
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Advertised pause frame use: Symmetric Receive-only
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Link partner advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Link partner advertised pause frame use: Symmetric Receive-only
Link partner advertised auto-negotiation: Yes
Link partner advertised FEC modes: Not reported
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 1
Transceiver: internal
Auto-negotiation: on
MDI-X: Unknown
Supports Wake-on: gsf
Wake-on: d
SecureOn password: 00:00:00:00:00:00
Current message level: 0x00000007 (7)
drv probe link
Link detected: yes
inxi
コマンドでもspeed
、duplex
はN/A
でした。
pi@raspi4b4g-3$ inxi -n
Network: Message: No ARM data found for this feature.
IF-ID-1: docker0 state: up speed: 10000 Mbps duplex: unknown mac: 02:42:3d:1f:58:59
IF-ID-2: eth0 state: up speed: 1000 Mbps duplex: full mac: dc:a6:32:12:90:de
IF-ID-3: eth1 state: up speed: N/A duplex: N/A mac: 04:ab:18:a2:a3:2c
IF-ID-4: veth9f177ff state: up speed: 10000 Mbps duplex: full mac: 1e:b3:2a:fb:55:8e
IF-ID-5: wlan0 state: up mac: dc:a6:32:12:90:df
ethtool
コマンドでもinxi
コマンドでもリンク速度は不明でしたが、dmesg
コマンドの結果を見る限りでは2.5Gbpsでリンクしているようです。
pi@raspi4b4g-3$ dmesg | grep eth1
...
[ 6199.464423] cdc_ncm 2-2:2.0 eth1: 2500 mbit/s downlink 2500 mbit/s uplink
...
通信速度の測定
ethtool
コマンド、inxi
コマンドで詳細な情報が表示されないのは気になりますが、ひとまず通信速度を測定してみました。
以下の経路を測定したところ、1.03〜1.05Gbpsでした。内蔵有線LANよりは多少早いですが、倫理値からは遠い値です。
Raspberry Pi 4 〜 EDC-QUA3C-B (eth1) 〜 Cat6Aケーブル 〜 FX2G-08EM 〜 Cat6Aケーブル 〜 EDC-QUA3C-B (eth1) 〜 Raspberry Pi 4
詳細な測定結果
pi@raspi4b4g-3$ ip address show eth1
8: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 04:ab:18:a2:a3:2c brd ff:ff:ff:ff:ff:ff
inet 192.168.3.43/24 brd 192.168.3.255 scope global noprefixroute eth1
valid_lft forever preferred_lft forever
inet6 fe80::fe2:95de:852a:7e1c/64 scope link
valid_lft forever preferred_lft forever
pi@raspi4b4g-3$ iperf3 --bind 192.168.3.43 --server
pi@raspi4b4g-3$ iperf3 --client 192.168.3.44
Connecting to host 192.168.3.44, port 5201
[ 5] local 192.168.3.43 port 42878 connected to 192.168.3.44 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 119 MBytes 994 Mbits/sec 8 1.33 MBytes
[ 5] 1.00-2.00 sec 125 MBytes 1.05 Gbits/sec 0 1.46 MBytes
[ 5] 2.00-3.00 sec 126 MBytes 1.06 Gbits/sec 0 1.56 MBytes
[ 5] 3.00-4.00 sec 125 MBytes 1.05 Gbits/sec 0 1.64 MBytes
[ 5] 4.00-5.00 sec 125 MBytes 1.05 Gbits/sec 0 1.69 MBytes
[ 5] 5.00-6.00 sec 126 MBytes 1.06 Gbits/sec 4 1.27 MBytes
[ 5] 6.00-7.00 sec 125 MBytes 1.05 Gbits/sec 0 1.33 MBytes
[ 5] 7.00-8.00 sec 126 MBytes 1.06 Gbits/sec 0 1.39 MBytes
[ 5] 8.00-9.00 sec 125 MBytes 1.05 Gbits/sec 0 1.46 MBytes
[ 5] 9.00-10.00 sec 126 MBytes 1.06 Gbits/sec 0 1.52 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 1.22 GBytes 1.05 Gbits/sec 12 sender
[ 5] 0.00-10.01 sec 1.22 GBytes 1.04 Gbits/sec receiver
iperf Done.
pi@raspi4b4g-4$ ip address show eth1
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 04:ab:18:a2:a6:8c brd ff:ff:ff:ff:ff:ff
inet 192.168.3.44/24 brd 192.168.3.255 scope global noprefixroute eth1
valid_lft forever preferred_lft forever
inet6 fe80::3def:78db:9dd9:1ec1/64 scope link
valid_lft forever preferred_lft forever
pi@raspi4b4g-4$ iperf3 --client 192.168.3.43
Connecting to host 192.168.3.43, port 5201
[ 5] local 192.168.3.44 port 41222 connected to 192.168.3.43 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 117 MBytes 979 Mbits/sec 73 1.44 MBytes
[ 5] 1.00-2.00 sec 124 MBytes 1.04 Gbits/sec 0 1.58 MBytes
[ 5] 2.00-3.00 sec 124 MBytes 1.04 Gbits/sec 0 1.69 MBytes
[ 5] 3.00-4.00 sec 125 MBytes 1.04 Gbits/sec 23 1.24 MBytes
[ 5] 4.00-5.00 sec 125 MBytes 1.05 Gbits/sec 0 1.33 MBytes
[ 5] 5.00-6.00 sec 125 MBytes 1.05 Gbits/sec 0 1.39 MBytes
[ 5] 6.00-7.00 sec 125 MBytes 1.05 Gbits/sec 0 1.44 MBytes
[ 5] 7.00-8.00 sec 124 MBytes 1.04 Gbits/sec 0 1.50 MBytes
[ 5] 8.00-9.00 sec 125 MBytes 1.05 Gbits/sec 0 1.56 MBytes
[ 5] 9.00-10.00 sec 124 MBytes 1.04 Gbits/sec 0 1.62 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 1.21 GBytes 1.04 Gbits/sec 96 sender
[ 5] 0.00-10.01 sec 1.21 GBytes 1.03 Gbits/sec receiver
iperf Done.
pi@raspi4b4g-4$ iperf3 --bind 192.168.3.44 --server
考察と検討結果
論理値2.5Gbpsと比べ、実測値は1Gbpsを少し超えるくらいの値にしかなりませんでした。せめて1.5Gbpsくらいは出て欲しいところ。
実測値が低い理由についていくつか考察し、その検証結果を以下に示します。
- 実は2.5Gbpsでリンクしていないのではないか?
-
dmesg
コマンドの結果を見る限りは、2.5Gbpsでリンクしているようです。 - ただし、
ethtool
コマンド、inxi
コマンドではリンク速度を確認できないため、本当に2.5Gbpsなのかは定かではありません。
-
- USBがボトルネックになっているのではないか?
- 少なくともUSB 3.2 Gen 1(5Gbps)でリンクしており、仕様的には余裕があるように思います。
- ただし、Raspberry Pi 4のUSBの性能については検討できていません。
-
iperf3
はシングルスレッドなのでCPUがボトルネックになっているのではないか?- 測定中のCPUは、使用率が高いコアでも40%程度でした。CPUは余裕があるように見えます。
- ケーブルに問題があるのではないか?
- 別のケーブル(Cat6)に交換しても測定値に変化はありませんでした。
- スイッチングハブに問題があるのではないか?
- スイッチングハブを除き、Cat6Aケーブルで直結しても測定値に変化はありませんでした。
- MTUが小さいのではないか?
- 標準ドライバではMTUを変更できませんでした。
- ただし、EDC-QUA3C-B自体はJumbo Frameに対応している模様です。
- USBの電力が足りないのではないか?
- 未検証です。セルフパワーのUSBハブを接続すれば検証できるかもしれません。
- 少なくとも、Raspberry Piの低電圧警告は出力されていませんでした。
- Linuxカーネルが古いのではないか?
- 未検証です。Linuxカーネル 5.14以降であれば2Gbps以上の通信速度が出るとの情報があります。
- 標準ドライバに問題があるのではないか?
- 未検証です。Realtekが提供しているドライバをビルドするも、ロードで失敗しました。(詳細は後述)
上記のようにいろいろ検証してみましたが、今のところ打開策は見つけられていません。
ドライバのビルド
RTL8156BのLinux用ドライバがRealtekのサイトで配布されているので、ビルドしてみることにしました。
以下の通り、ビルド自体は問題無く完了しました。
pi@raspi4b4g-3$ sudo apt install raspberrypi-kernel-headers
pi@raspi4b4g-3$ dpkg -l | grep raspberrypi-kernel
ii raspberrypi-kernel 1:1.20211201~buster-1 arm64 Raspberry Pi bootloader
ii raspberrypi-kernel-headers 1:1.20211201~buster-1 arm64 Header files for the Raspberry Pi Linux kernel
pi@raspi4b4g-3$ ls -l r8152.53.56-2.15.0.tar.bz2
-rw-r--r-- 1 pi pi 70602 Mar 5 18:55 r8152.53.56-2.15.0.tar.bz2
pi@raspi4b4g-3$ sha1sum r8152.53.56-2.15.0.tar.bz2
d676fc97ae7e5f5c473cee00b971135296f12051 r8152.53.56-2.15.0.tar.bz2
pi@raspi4b4g-3$ tar xfv r8152.53.56-2.15.0.tar.bz2
r8152-2.15.0/
r8152-2.15.0/ReadMe.txt
r8152-2.15.0/Makefile
r8152-2.15.0/50-usb-realtek-net.rules
r8152-2.15.0/compatibility.h
r8152-2.15.0/r8152.c
pi@raspi4b4g-3$ cd r8152-2.15.0/
pi@raspi4b4g-3$ make
make -C /lib/modules/5.10.63-v8+/build M=/home/pi/r8152-2.15.0 modules
make[1]: Entering directory '/usr/src/linux-headers-5.10.63-v8+'
CC [M] /home/pi/r8152-2.15.0/r8152.o
MODPOST /home/pi/r8152-2.15.0/Module.symvers
WARNING: modpost: /home/pi/r8152-2.15.0/r8152: 'rtl8152_get_version' exported twice. Previous export was in vmlinux
CC [M] /home/pi/r8152-2.15.0/r8152.mod.o
LD [M] /home/pi/r8152-2.15.0/r8152.ko
make[1]: Leaving directory '/usr/src/linux-headers-5.10.63-v8+'
pi@raspi4b4g-3$ modinfo ./r8152.ko
filename: /home/pi/r8152-2.15.0/./r8152.ko
version: v2.15.0 (2021/04/15)
license: GPL
description: Realtek RTL8152/RTL8153 Based USB Ethernet Adapters
author: Realtek nic sw <nic_swsd@realtek.com>
srcversion: 643C9AE76696D1629871EA2
...
depends:
name: r8152
vermagic: 5.10.63-v8+ SMP preempt mod_unload modversions aarch64
pi@raspi4b4g-3$ sudo make install
make -C /lib/modules/5.10.63-v8+/build M=/home/pi/r8152-2.15.0 INSTALL_MOD_DIR=kernel/drivers/net/usb modules_install
make[1]: Entering directory '/usr/src/linux-headers-5.10.63-v8+'
INSTALL /home/pi/r8152-2.15.0/r8152.ko
DEPMOD 5.10.63-v8+
Warning: modules_install: missing 'System.map' file. Skipping depmod.
make[1]: Leaving directory '/usr/src/linux-headers-5.10.63-v8+'
modprobe r8152
ビルドは成功した(ように見える)のですが、insmod
コマンドを実行するとInvalid module format
と怒られてしまいました。
少なくともvermagic
は一致していると思うのですが、原因が分かりませんでした。
pi@raspi4b4g-3$ sudo depmod -a
pi@raspi4b4g-3$ sudo update-initramfs -u
pi@raspi4b4g-3$ sudo insmod ./r8152.ko
insmod: ERROR: could not insert module ./r8152.ko: Invalid module format
pi@raspi4b4g-3$ file r8152.ko
r8152.ko: ELF 64-bit LSB relocatable, ARM aarch64, version 1 (SYSV), BuildID[sha1]=7871f0756073c6fbd67a884b0e34f0038c9aae2a, not stripped
pi@raspi4b4g-3$ modinfo ./r8152.ko | grep vermagic
vermagic: 5.10.63-v8+ SMP preempt mod_unload modversions aarch64
pi@raspi4b4g-3$ uname -a
Linux raspi4b4g-3 5.10.63-v8+ #1496 SMP PREEMPT Wed Dec 1 15:59:46 GMT 2021 aarch64 GNU/Linux
おわりに
Raspberry Pi 4に2.5Gbps Ethernetアダプタを接続し、通信すること自体はできましたが、残念ながら1Gbps止まりでした。
今後は、Raspberry Pi 4の性能の問題なのか、あるいはドライバのせいなのか、別のマシンを使って検討してみたいと思います。
何か情報をお持ちの方がいれば、教えて頂けると幸いです。
関連記事
Discussion
Raspberry Pi 4、Ubuntu 22.04 LTS、カーネル
5.15.0-1006-raspi
、より新しいドライバr8152-2.16.1
では約2Gbpsの通信に成功しました。また今度、記事を書きます。
Raspberry Pi環境ではありませんが、Linux環境における2.5Gbps Ethernet/USBアダプタの使用について記事を書きました。