VIM3 Poor Gigabit Ethernet Performance

Hi all,

With my VIM3 I recently run into an issue where the network performance was extremely poor. Investigation and googling led me to the similar problems described here:

Changing to 100MBit indeed improved the situation significantly. See the test results below. I tested with different cables (Cat6a which are proven working OK on a PC) and different devices (1Gbit switch port or 1Gbit router) on the opposite side of the cable.

The device was bought in Aliexpress “Khadas Official Store” ~ 1.5 year ago. Since then I used the device only occasionally for testing purposes. I had not noticed the problem probably because I was connecting it to 100MBit port before :frowning:.
After so long time I am afraid I can hardly open a warranty claim, so I would like to kindly ask for you help, if there is something that can be done at home to fix the HW issue by a person with a limited soldering skills?

I first noticed the issue with Armbian, but to make sure I just tested the latest VIM3_Ubuntu-server-focal_Linux-5.16-rc2_arm64_SD-USB_V1.0.10-220108.img.xz and the results are the same

#####################################################################################
# 1GBit test
#####################################################################################

root@Khadas:~# iperf3 -R -c 192.168.1.41
Connecting to host 192.168.1.41, port 5201
Reverse mode, remote host 192.168.1.41 is sending
[  5] local 192.168.1.43 port 36734 connected to 192.168.1.41 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  29.7 KBytes   243 Kbits/sec
[  5]   1.00-2.00   sec  0.00 Bytes  0.00 bits/sec
[  5]   2.00-3.00   sec  0.00 Bytes  0.00 bits/sec
[  5]   3.00-4.00   sec  45.2 KBytes   371 Kbits/sec
[  5]   4.00-5.00   sec  0.00 Bytes  0.00 bits/sec
[  5]   5.00-6.00   sec  12.7 KBytes   104 Kbits/sec
[  5]   6.00-7.00   sec  8.48 KBytes  69.5 Kbits/sec
[  5]   7.00-8.00   sec  0.00 Bytes  0.00 bits/sec
[  5]   8.00-9.00   sec  0.00 Bytes  0.00 bits/sec
[  5]   9.00-10.00  sec  0.00 Bytes  0.00 bits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   126 KBytes   103 Kbits/sec   39             sender
[  5]   0.00-10.00  sec  96.2 KBytes  78.8 Kbits/sec                  receiver

iperf Done.
root@Khadas:~# ethtool eth0
Settings for eth0:
        Supported ports: [ TP MII ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                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/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/Full
        Link partner advertised pause frame use: Symmetric
        Link partner advertised auto-negotiation: Yes
        Link partner advertised FEC modes: Not reported
        Speed: 1000Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 0
        Transceiver: internal
        Auto-negotiation: on
        MDI-X: Unknown
        Supports Wake-on: ug
        Wake-on: d
        Current message level: 0x0000003f (63)
                               drv probe link timer ifdown ifup
        Link detected: yes

#####################################################################################
# 100MBit test
#####################################################################################

root@Khadas:~# sudo ethtool -s eth0 speed 100 duplex full
root@Khadas:~# iperf3 -R -c 192.168.1.41
Connecting to host 192.168.1.41, port 5201
Reverse mode, remote host 192.168.1.41 is sending
[  5] local 192.168.1.43 port 36738 connected to 192.168.1.41 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  11.2 MBytes  94.1 Mbits/sec
[  5]   1.00-2.00   sec  11.2 MBytes  94.1 Mbits/sec
[  5]   2.00-3.00   sec  11.2 MBytes  94.2 Mbits/sec
[  5]   3.00-4.00   sec  11.2 MBytes  94.2 Mbits/sec
[  5]   4.00-5.00   sec  11.2 MBytes  94.1 Mbits/sec
[  5]   5.00-6.00   sec  11.2 MBytes  94.1 Mbits/sec
[  5]   6.00-7.00   sec  11.2 MBytes  94.1 Mbits/sec
[  5]   7.00-8.00   sec  11.2 MBytes  94.1 Mbits/sec
[  5]   8.00-9.00   sec  11.2 MBytes  94.2 Mbits/sec
[  5]   9.00-10.00  sec  11.2 MBytes  94.1 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   113 MBytes  94.4 Mbits/sec    0             sender
[  5]   0.00-10.00  sec   112 MBytes  94.1 Mbits/sec                  receiver

iperf Done.
root@Khadas:~# ethtool eth0
Settings for eth0:
        Supported ports: [ TP MII ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Supported pause frame use: Symmetric Receive-only
        Supports auto-negotiation: Yes
        Supported FEC modes: Not reported
        Advertised link modes:  100baseT/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/Full
        Link partner advertised pause frame use: Symmetric
        Link partner advertised auto-negotiation: Yes
        Link partner advertised FEC modes: Not reported
        Speed: 100Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 0
        Transceiver: internal
        Auto-negotiation: on
        MDI-X: Unknown
        Supports Wake-on: ug
        Wake-on: d
        Current message level: 0x0000003f (63)
                               drv probe link timer ifdown ifup
        Link detected: yes

#####################################################################################
# Kernel version
#####################################################################################

root@Khadas:~# uname -a
Linux Khadas 5.16.0-rc2 #1.0.10 SMP Sat Jan 8 13:31:00 CST 2022 aarch64 aarch64 aarch64 GNU/Linux
root@Khadas:~#

Thanks in advance,
Peter