Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 9 Jun 2026 10:20:47 -0700
From:      Mark Millard <marklmi@yahoo.com>
To:        freebsd-arm@freebsd.org, void <void@f-m.fm>
Subject:   Re: about usb3 <> ethernet adapters for raspberry pi 5
Message-ID:  <1bbba34d-0a7f-4cb0-932a-235b5de3ec65@yahoo.com>
In-Reply-To: <f9ae8a6a-60a5-4f75-833c-c98403fb13b9@yahoo.com>
References:  <ahCTmhemuTowj-MD@int21h> <f9ae8a6a-60a5-4f75-833c-c98403fb13b9@yahoo.com>

index | next in thread | previous in thread | raw e-mail

On 5/22/26 23:33, Mark Millard wrote:
> On 5/22/26 10:34, void wrote:
>> Hi,
>>
>> As subject: 1. what works?
>>             2. what's the throughput like as measured with iperf/iperf3 ?
>> thanks,
> 
> From an 2025-Dec-23 message of mine for systems that were likely running
> a official pkgbase GENERIC-NODEBUG kernel (main) and, likely, the
> official pkgbase world (which is always debug for official pkgbase
> main). The alternate non-debug world would have been via a chroot use.
> My use of the debug kernel variant is rare.
> 
> I have access to several of the dongles at the same revision. (See
> later.) Also: both systems involved were using this type of dongle. The
> other system was an amd64 7950X3D. At the time, as far as I knew, the
> FreeBSD OS did not support the built-in ethernet in the 7950X3D system.
> 
> QUOTE
> Instead of the built=in Ethernet for the Windows Dev Kit
> 2023, use of the dongle on a RPi5:
> . . .
> 
> # usbconfig -l -d ugen0.2
> ugen0.2: <RTL8153 Gigabit Ethernet Adapter Realtek Semiconductor Corp.>
> at usbus0, cfg=0 md=HOST spd=SUPER (5.0Gbps) pwr=ON (72mA)
> 
> # iperf3 -c 192.168.1.195 --get-server-output
> Connecting to host 192.168.1.195, port 5201
> [  5] local 192.168.1.161 port 25933 connected to 192.168.1.195 port 5201
> [ ID] Interval           Transfer     Bitrate         Retr  Cwnd
> [  5]   0.00-1.00   sec   112 MBytes   942 Mbits/sec    8    470 KBytes
> 
> [  5]   1.00-2.00   sec   112 MBytes   941 Mbits/sec    0    487 KBytes
> 
> [  5]   2.00-3.06   sec   119 MBytes   939 Mbits/sec    9    488 KBytes
> 
> [  5]   3.06-4.06   sec   112 MBytes   940 Mbits/sec    9    486 KBytes
> 
> [  5]   4.06-5.00   sec   106 MBytes   941 Mbits/sec    0    488 KBytes
> 
> [  5]   5.00-6.00   sec   112 MBytes   940 Mbits/sec   10    486 KBytes
> 
> [  5]   6.00-7.04   sec   116 MBytes   938 Mbits/sec    7    486 KBytes
> 
> [  5]   7.04-8.00   sec   108 MBytes   941 Mbits/sec    0    488 KBytes
> 
> [  5]   8.00-9.00   sec   112 MBytes   940 Mbits/sec    7    486 KBytes
> 
> [  5]   9.00-10.03  sec   115 MBytes   941 Mbits/sec    0    486 KBytes
> 
> - - - - - - - - - - - - - - - - - - - - - - - - -
> [ ID] Interval           Transfer     Bitrate         Retr
> [  5]   0.00-10.03  sec  1.10 GBytes   940 Mbits/sec   50            sender
> [  5]   0.00-10.03  sec  1.10 GBytes   940 Mbits/sec
> receiver
> 
> Server output:
> -----------------------------------------------------------
> Server listening on 5201 (test #3)
> -----------------------------------------------------------
> Accepted connection from 192.168.1.161, port 49403
> [  5] local 192.168.1.195 port 5201 connected to 192.168.1.161 port 25933
> [ ID] Interval           Transfer     Bitrate
> [  5]   0.00-1.06   sec   119 MBytes   937 Mbits/sec
> [  5]   1.06-2.06   sec   112 MBytes   941 Mbits/sec
> [  5]   2.06-3.06   sec   112 MBytes   939 Mbits/sec
> [  5]   3.06-4.06   sec   112 MBytes   939 Mbits/sec
> [  5]   4.06-5.00   sec   106 MBytes   941 Mbits/sec
> [  5]   5.00-6.06   sec   119 MBytes   938 Mbits/sec
> [  5]   6.06-7.06   sec   112 MBytes   940 Mbits/sec
> [  5]   7.06-8.06   sec   112 MBytes   941 Mbits/sec
> [  5]   8.06-9.05   sec   112 MBytes   939 Mbits/sec
> [  5]   9.05-10.03  sec   110 MBytes   941 Mbits/sec
> - - - - - - - - - - - - - - - - - - - - - - - - -
> [ ID] Interval           Transfer     Bitrate
> [  5]   0.00-10.03  sec  1.10 GBytes   940 Mbits/sec
> receiver
> 
> 
> iperf Done.
> 
> # iperf3 -R -c 192.168.1.195 --get-server-output
> Connecting to host 192.168.1.195, port 5201
> Reverse mode, remote host 192.168.1.195 is sending
> [  5] local 192.168.1.161 port 37464 connected to 192.168.1.195 port 5201
> [ ID] Interval           Transfer     Bitrate
> [  5]   0.00-1.06   sec   119 MBytes   941 Mbits/sec
> [  5]   1.06-2.06   sec   112 MBytes   941 Mbits/sec
> [  5]   2.06-3.03   sec   109 MBytes   942 Mbits/sec
> [  5]   3.03-4.01   sec   109 MBytes   941 Mbits/sec
> [  5]   4.01-5.02   sec   114 MBytes   941 Mbits/sec
> [  5]   5.02-6.00   sec   110 MBytes   941 Mbits/sec
> [  5]   6.00-7.00   sec   112 MBytes   942 Mbits/sec
> [  5]   7.00-8.00   sec   112 MBytes   942 Mbits/sec
> [  5]   8.00-9.00   sec   112 MBytes   942 Mbits/sec
> [  5]   9.00-10.00  sec   112 MBytes   942 Mbits/sec
> - - - - - - - - - - - - - - - - - - - - - - - - -
> [ ID] Interval           Transfer     Bitrate         Retr
> [  5]   0.00-10.00  sec  1.10 GBytes   942 Mbits/sec    0            sender
> [  5]   0.00-10.00  sec  1.10 GBytes   941 Mbits/sec
> receiver
> 
> Server output:
> -----------------------------------------------------------
> Server listening on 5201 (test #4)
> -----------------------------------------------------------
> Accepted connection from 192.168.1.161, port 16691
> [  5] local 192.168.1.195 port 5201 connected to 192.168.1.161 port 37464
> [ ID] Interval           Transfer     Bitrate         Retr  Cwnd
> [  5]   0.00-1.06   sec   120 MBytes   948 Mbits/sec    0    730 KBytes
> 
> [  5]   1.06-2.06   sec   112 MBytes   941 Mbits/sec    0    730 KBytes
> 
> [  5]   2.06-3.06   sec   112 MBytes   941 Mbits/sec    0    732 KBytes
> 
> [  5]   3.06-4.06   sec   112 MBytes   942 Mbits/sec    0    732 KBytes
> 
> [  5]   4.06-5.06   sec   112 MBytes   941 Mbits/sec    0    732 KBytes
> 
> [  5]   5.06-6.03   sec   109 MBytes   941 Mbits/sec    0    732 KBytes
> 
> [  5]   6.03-7.04   sec   113 MBytes   941 Mbits/sec    0    732 KBytes
> 
> [  5]   7.04-8.04   sec   112 MBytes   941 Mbits/sec    0    732 KBytes
> 
> [  5]   8.04-9.06   sec   115 MBytes   942 Mbits/sec    0    732 KBytes
> 
> [  5]   9.06-10.00  sec   106 MBytes   941 Mbits/sec    0    732 KBytes
> 
> - - - - - - - - - - - - - - - - - - - - - - - - -
> [ ID] Interval           Transfer     Bitrate         Retr
> [  5]   0.00-10.00  sec  1.10 GBytes   942 Mbits/sec    0            sender
> 
> 
> iperf Done.
> 
> 
> I'll note that the RPi5 is booted via a draft EDK2 version
> via UEFI/ACPI . The draft does not publish the built-in
> Ethernet.
> END QUOTE
> 
> cfg=1 was under 24 MBytes/sec one direction and under 12 MBytes/sec in
> the other direction. I'll not bother with the detailed results here.
> 
> The tests were for helping with example information for someone else to
> make the decision on if the default cfg value should be updated or not.
> 
> It turned out that different revisions behave very differently and the
> prior cfg change that had been committed messed up the operation of
> the rev I have access to. In the end, the original default cfg (0) was
> restored and the other rev 0x31fd got a rev-specific Quirk for Realtek
> RTL8153 to use UQ_CFG_INDEX_1 so if_cdce claims rev 0x31fd instead of
> if_ure:
> 
> -	USB_QUIRK(REALTEK, RTL8153, UQ_CFG_INDEX_1),
> +	USB_QUIRK_REV(REALTEK, RTL8153, 0x31fd, 0x31fd, UQ_CFG_INDEX_1),
> 
> 
> The non-0x31fd rev is the type of dongle that I normally use. I do have
> at least one other type of dongle around that was historically slower
> then the RTL8153 ones I have access to. But, back when the type of my
> dongles that I use were speed up (2020-Sep?), I was also a tester for
> the effort at that time.
> 
> 

FYI: the RTL8153's that I have access to have: bcdDevice = 0x3000

An example showing that revision code:

# usbconfig -d ugen0.2 dump_device_desc
ugen0.2: <RTL8153 Gigabit Ethernet Adapter Realtek Semiconductor Corp.>
at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (200mA)

  bLength = 0x0012
  bDescriptorType = 0x0001
  bcdUSB = 0x0210
  bDeviceClass = 0x0000  <Probed by interface class>
  bDeviceSubClass = 0x0000
  bDeviceProtocol = 0x0000
  bMaxPacketSize0 = 0x0040
  idVendor = 0x0bda
  idProduct = 0x8153
  bcdDevice = 0x3000
  iManufacturer = 0x0001  <Realtek>
  iProduct = 0x0002  <USB 10/100/1000 LAN>
  iSerialNumber = 0x0006  <000001>
  bNumConfigurations = 0x0002

The quirk added to sys/dev/usb/quirk/usb_quirk.c to avoid config 0 was
for: 0x31fd

Another issue is referenced in:

https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=252165

for some some vintage of RTL8251/RTL8153 that . . .

) is bad used on: Lenovo x1 carbon gen11
but:
) is good used on: x1 carbon gen6 and raspberry pi5

--at least if I interpret the wording correctly.


-- 
===
Mark Millard
marklmi at yahoo.com


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1bbba34d-0a7f-4cb0-932a-235b5de3ec65>