🚄

Raspberry Pi 4に2.5Gbps Ethernetアダプタを接続してみた (1) 失敗編

2022/03/09に公開
2

2022年5月19日追記

成功編を書きました。

https://zenn.dev/yuyakato/articles/8bd9f75a4427ae

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+
  • ホスト名: raspi4b4g-3raspi4b4g-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コマンドでもspeedduplexN/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カーネルが古いのではないか?
  • 標準ドライバに問題があるのではないか?
    • 未検証です。Realtekが提供しているドライバをビルドするも、ロードで失敗しました。(詳細は後述)

上記のようにいろいろ検証してみましたが、今のところ打開策は見つけられていません。

ドライバのビルド

RTL8156BのLinux用ドライバがRealtekのサイトで配布されているので、ビルドしてみることにしました。
以下の通り、ビルド自体は問題無く完了しました。

https://www.realtek.com/en/component/zoo/category/network-interface-controllers-10-100-1000m-gigabit-ethernet-usb-3-0-software

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の性能の問題なのか、あるいはドライバのせいなのか、別のマシンを使って検討してみたいと思います。

何か情報をお持ちの方がいれば、教えて頂けると幸いです。

関連記事

https://zenn.dev/yuyakato/articles/c15d8e5fb9edd7

https://zenn.dev/yuyakato/articles/8bd9f75a4427ae

Discussion

Yuya KatoYuya Kato

Raspberry Pi 4、Ubuntu 22.04 LTS、カーネル5.15.0-1006-raspi、より新しいドライバr8152-2.16.1では約2Gbpsの通信に成功しました。
また今度、記事を書きます。