I’ve been lucky enough to test an early production version of the Ethernet expansion card and wanted to pass along my findings.
Photos
Flush with the top of the input lid and extending out the side a little less than the Framework right-angle charging cable, also note green LINK LED on the left and amber ACT LED on the right:
Extends down by less than the foot height on the underside:
Quick Start Guide: Linux
- Plug in Ethernet expansion card.
- Plug in Ethernet cable.
Yes, that’s it.
The RTL8156 driver is built into the Linux kernel and should be present in every kernel since (at least) 5.8 - kernels that fully support the Framework laptop are newer than that, so if your Framework laptop runs 5.13+ the Ethernet card should be supported out of the box.
Updated drivers are here but are included with kernel 5.17+.
Quick Start Guide: Windows 10
- Plug in Ethernet expansion card.
- Plug in Ethernet cable.
Windows 10 does seem to support it out of the box.
I was unable to test on Windows 11.
Benchmarking: Linux 2.5 GbE
I used iperf2 between this and a Realtek RTL8125-equipped iperf server connected through a QNAP QSW-1105-5T 2.5 GbE switch. The RTL8125 is the PCIe-based equivalent of the USB-based RTL8156. The test was repeated 3 times to ensure consistency and averaged results.
mark@SamwiseGamgee:~$ iperf -c 192.168.1.77
------------------------------------------------------------
Client connecting to 192.168.1.77, TCP port 5001
TCP window size: 1.41 MByte (default)
------------------------------------------------------------
[ 3] local 192.168.1.55 port 39066 connected with 192.168.1.77 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 2.74 GBytes 2.36 Gbits/sec
mark@SamwiseGamgee:~$ iperf -c 192.168.1.77
------------------------------------------------------------
Client connecting to 192.168.1.77, TCP port 5001
TCP window size: 1.67 MByte (default)
------------------------------------------------------------
[ 3] local 192.168.1.55 port 39068 connected with 192.168.1.77 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 2.74 GBytes 2.36 Gbits/sec
mark@SamwiseGamgee:~$ iperf -c 192.168.1.77
------------------------------------------------------------
Client connecting to 192.168.1.77, TCP port 5001
TCP window size: 1.80 MByte (default)
------------------------------------------------------------
[ 3] local 192.168.1.55 port 39070 connected with 192.168.1.77 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 2.74 GBytes 2.36 Gbits/sec
No need to average these results, it’s a consistent 2.36 Gbit/s. This is nearly identical to the results of another RTL8156 card I have and it seems 2.36 Gbit/s is “wire speed” for 2.5 GbE through a switch.
Benchmarking: Windows 2.5 GbE
Same equipment, same test.
The drivers were the built-in Windows drivers.
mark@Sauron:~$ iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 128 KByte (default)
------------------------------------------------------------
[ 4] local 192.168.1.77 port 5001 connected with 192.168.1.55 port 50176 (peer 2.1.7-beta)
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-10.0 sec 2.77 GBytes 2.37 Gbits/sec
[ 4] local 192.168.1.77 port 5001 connected with 192.168.1.55 port 50178 (peer 2.1.7-beta)
[ 4] 0.0-10.0 sec 2.76 GBytes 2.37 Gbits/sec
[ 4] local 192.168.1.77 port 5001 connected with 192.168.1.55 port 50179 (peer 2.1.7-beta)
[ 4] 0.0-10.0 sec 2.76 GBytes 2.37 Gbits/sec
Perfect, even better than Linux. Also an indication this is 2.5 GbE wire speed.
But - I installed the latest drivers and regretted it:
[ 4] local 192.168.1.77 port 5001 connected with 192.168.1.55 port 49866 (peer 2.1.7-beta)
[ 4] 0.0-10.0 sec 2.33 GBytes 1.99 Gbits/sec
[ 4] local 192.168.1.77 port 5001 connected with 192.168.1.55 port 49867 (peer 2.1.7-beta)
[ 4] 0.0-10.0 sec 1.80 GBytes 1.55 Gbits/sec
[ 4] local 192.168.1.77 port 5001 connected with 192.168.1.55 port 49869 (peer 2.1.7-beta)
[ 4] 0.0-10.0 sec 2.33 GBytes 2.00 Gbits/sec
I can’t explain these results but it would probably be best to avoid the latest driver, wait for an updated driver and be prepared to roll back should you see this.
Benchmarking: Linux & Windows 1 GbE
All tests as before, but through a 1 GbE TP-Link TL-SG2008P:
mark@SamwiseGamgee:~$ iperf -c 192.168.1.77
------------------------------------------------------------
Client connecting to 192.168.1.77, TCP port 5001
TCP window size: 1012 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.1.55 port 45278 connected with 192.168.1.77 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 1.10 GBytes 944 Mbits/sec
mark@SamwiseGamgee:~$ iperf -c 192.168.1.77
------------------------------------------------------------
Client connecting to 192.168.1.77, TCP port 5001
TCP window size: 850 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.1.55 port 45280 connected with 192.168.1.77 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 1.10 GBytes 943 Mbits/sec
mark@SamwiseGamgee:~$ iperf -c 192.168.1.77
------------------------------------------------------------
Client connecting to 192.168.1.77, TCP port 5001
TCP window size: 799 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.1.55 port 45282 connected with 192.168.1.77 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 1.10 GBytes 943 Mbits/sec
945 Mb/s is considered wire speed for 1 GbE. No problems here.
Windows results were identical.
USB Latency Check
Pinging to my router over the 2.5 GbE switch:
mark@SamwiseGamgee:~$ ping -c 10 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=63 time=0.931 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=63 time=1.01 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=63 time=0.949 ms
64 bytes from 192.168.1.1: icmp_seq=4 ttl=63 time=0.800 ms
64 bytes from 192.168.1.1: icmp_seq=5 ttl=63 time=1.25 ms
64 bytes from 192.168.1.1: icmp_seq=6 ttl=63 time=0.982 ms
64 bytes from 192.168.1.1: icmp_seq=7 ttl=63 time=0.965 ms
64 bytes from 192.168.1.1: icmp_seq=8 ttl=63 time=1.14 ms
64 bytes from 192.168.1.1: icmp_seq=9 ttl=63 time=1.00 ms
64 bytes from 192.168.1.1: icmp_seq=10 ttl=63 time=0.907 ms
--- 192.168.1.1 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9013ms
rtt min/avg/max/mdev = 0.800/0.992/1.245/0.116 ms
Results for 1 GbE were nearly identical.
Comparing this to the best-case-scenario PCIe RTL8125 through the same chain of networking equipment:
mark@Sauron:~$ ping -c 10 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=63 time=0.699 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=63 time=0.530 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=63 time=0.659 ms
64 bytes from 192.168.1.1: icmp_seq=4 ttl=63 time=0.556 ms
64 bytes from 192.168.1.1: icmp_seq=5 ttl=63 time=0.557 ms
64 bytes from 192.168.1.1: icmp_seq=6 ttl=63 time=0.669 ms
64 bytes from 192.168.1.1: icmp_seq=7 ttl=63 time=0.716 ms
64 bytes from 192.168.1.1: icmp_seq=8 ttl=63 time=0.978 ms
64 bytes from 192.168.1.1: icmp_seq=9 ttl=63 time=0.550 ms
64 bytes from 192.168.1.1: icmp_seq=10 ttl=63 time=0.426 ms
--- 192.168.1.1 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9172ms
rtt min/avg/max/mdev = 0.426/0.634/0.978/0.142 ms
The additional latency added by the USB connection is negligible: 0.36 ms.
Switch Compatibility Check
I also tested this attached to a QNAP QSW-M2108-2S and the results were identical. I did not have any switch compatibility issues although I only had a sample size of 2. Donations accepted!
Ethernet Cable Compatibility Check
I tested the card with a CAT5e cable and a CAT6 cable. Both worked perfectly. I even tried a CAT5 cable which should not be expected to work at 2.5 GbE but it did without an issue.
Conclusion
In Linux, this works great for me in both 2.5 GbE and 1 GbE modes. At 1 GbE, there should be no issues on either Windows or Linux.
At 2.5 GbE, there should be no issues on Linux. Windows numbers could be improved at 2.5 GbE - updated drivers should help. The drivers included with Windows should work well though.