---
title: "Generic network interface for WIZ850io with RasPi Zero 2 W"
url: "https://maker.wiznet.io/forum/15976"
markdown_url: "https://maker.wiznet.io/forum/15976/md"
type: "Forum topic"
category: "IO Modules"
author: "hsummers"
created: "2026-01-22T10:27:10+09:00"
last_activity: "2026-03-25T06:22:21+09:00"
language: "en"
tags: ["Raspberry Pi", "Linux"]
views: 7
replies: 13
source: "WIZnet Makers forum (https://maker.wiznet.io/forum/)"
---

# Generic network interface for WIZ850io with RasPi Zero 2 W

## Question

Asked by hsummers on 2026-01-22 in IO Modules.

**Context:**
I am attempting to implement a **generic network interface** with the **WIZ850io** network module and a **Raspberry Pi Zero 2 W**. I am inexperienced with linux kernel drivers, but luckily Raspberry Pi OS (64-bit, 2025-12-04) already has a device tree overlay for the w5500 chip, and a driver called w5100_spi that many sources claim to be compatible with the w5500.

**Problem:**
Ethernet interface is not responding, or receiving an IP address when connected to a router.

Receiving repeated error message:

```plaintext
w5100 spi0.0 eth0: NETDEV WATCHDOG: CPU: 3: transmit queue 0 timed out 5000ms
```

The module is powered and has link lights when connected to a router.

**Steps Taken:**
I used guides like this one (though this is a Zero W, not Zero 2 W): <https://www.instructables.com/How-to-Use-Ethernet-on-Raspberry-Pi-Zero-W/>

The WIZ850io module is wired to the default SPI pins 19, 21, 23, 24 (aka GPIOs 8-11), plus power and ground.

I added dtparam=spi=on and dtoverlay=w5500 to the boot config, and used modprobe to activate the w5100_spi driver.

**Questions:**

Is the w5100_spi supposed to work with the w5500 chip as others have claimed?
Am I setting something up wrong in the boot config?
Do I need to have INTn connected for the module to work?

I’m happy to provide pictures and additional detail.
Thanks!

## Replies

### Reply 1 by Lihan__, 2026-01-22

Hello, thank you for reaching out.

As you mentioned, the "w5100_spi" driver is fully compatible with the W5500. Also, as you expected, the INTn pin is required for proper operation in a Linux environment.

I reviewed the link you shared, and the solution seems to be well-documented there. The link below also provides detailed instructions on setting up the W5500 driver, which you may find helpful.

<https://github.com/Wiznet-OpenHardware/RPi-w5500/blob/main/RPi4-w5500/Getting%20Start%20Ethernet%20Driver.md>

**My primary recommendation is to connect the INTn pin first.**

If the issue persists, please share the output of the following commands along with your Device Tree file.

```plaintext
$ cat /proc/interrupts
$ lsmod
$ dmesg | grep w5100
```

### Reply 2 by hsummers, 2026-02-05 (in reply to reply 1)

Thank you for the feedback!

Connecting INTn solved the problem for me, so now I've just been working on optimizing the data speed.

The AI answer was actually very helpful, with the one exception that it specified the overlay argument "spi_max_frequency" which is actually "speed" in my case, so that confused me for a bit, but I'm all clear now.

### Reply 3 by Lihan__, 2026-02-06 (in reply to reply 1)

Is the current operation functioning without issues?

I am curious about the results if you proceed with speed optimization.

If you reach a satisfactory level of speed, please share the results with me.

I have not attempted porting on the Raspberry Pi Zero 2 myself, so I am interested in the outcome.

### Reply 4 by hsummers, 2026-03-14 (in reply to reply 1)

I've been testing with the Wiz850io module as well as the PP-W5500-POE from Platypus.

I get stable communication at 32MHz max, and it becomes quite unstable above that. My data throughput on LAN (Curling a 100MB file hosted on LAN) was **14Mbps**, which is reasonable for 32MHz. However, when I curl to the file hosted remotely, I get no more than **4Mbps**, which is well below expected performance.
I suspect this is a W5500 driver issue, as the RasPi Zero 2W has no problem curling the same remote file at** 20Mbps** using its onboard wifi.
Speedtest-cli gives even slower results - around 2Mbps.

I have tested this on two separate networks - one my home router, and another my office network with a wired connection to the router through a high-quality switch.
I upgraded from my initial 2-layer PCB to a 4-layer PCB, with proper shielding and trace length matching and saw no substantial improvement.
If I could achieve consistent 10Mbps over the internet, this chip would meet my project requirements.

On a different note, I've noticed that the Pi sometimes fails to establish communication to the Eth chip over SPI, depending on the startup sequence. I was wondering if there is a recommended startup sequence for the Pi using the **RST pin** on the Eth module, and also a recommended reset procedure if connection is lost.

Thanks for your support!

### Reply 5 by Lihan__, 2026-03-17 (in reply to reply 1)

Hello, Thank you for your additional response.

I will set up the environment and run a test.

Is there anything I should know during the setup process?

### Reply 6 by hsummers, 2026-03-19 (in reply to reply 1)

The main benchmark I'm using is curl https://fsn1-speed.hetzner.com/100MB.bin > /dev/null

**Summary of my setup:**
I have added the following to my boot config:

- dtparam=spi=on

- dtoverlay=disable-wifi

- dtoverlay=w5500,cs=0,int_pin=5,speed=32000000

I am using a Raspberry PI Zero 2 W, with Raspberry Pi OS Lite (64-bit), Released 2025-12-04.
I am using the w5100_spi driver included with the OS.
No other modifications.

### Reply 7 by hsummers, 2026-03-20 (in reply to reply 1)

I'm becoming quite dissatisfied with the existing w5100_spi driver, as I'm encountering numerous issues.
- Poor data throughput over the internet
- Failure to reconnect after SPI device disconnect or reset
- No logs in dmesg or journalctl, making it impossible to troubleshoot

The driver description indicates the build version is v2012-04-04. It seems like I should just find a better driver to use, rather than trying to use this outdated driver.
I can continue trying to compile a driver using the Wiznet ioLibrary_Driver, however, I'm inexperienced and having trouble understanding the instructions in the README.

If there are any beginner-friendly guides or examples on compiling a basic driver from that library, please direct me to it!
Thank you.

### Reply 8 by Lihan__, 2026-03-20 (in reply to reply 1)

Sorry for the late reply!

The difference in test results between local network and external network environments is unavoidable due to the nature of network characteristics. It would be greatly appreciated if you could run the commands below and share the results.

1. ping -I eth0 fsn1-speed.hetzner.com

2. ping -I eth0 "your local server ip"

Additionally, since the W5500'''s internal buffer is relatively small at 16KB, it appears that the bandwidth is measured somewhat lower compared to WiFi modules.

We have completed some improvements to the driver. Please run the command below on your Raspberry Pi Zero 2 W to apply the patch, and we would appreciate it if you could share the results!

We are continuing to work on further driver improvements and will share the results with you as soon as possible!

### Reply 9 by Lihan__, 2026-03-20 (in reply to reply 1)

I have implemented driver improvements and confirmed performance enhancements compared to the existing driver in my test environment. In local network conditions, throughput improved from 13.6Mbps to 18.4Mbps, achieving approximately 35% performance gain. However, please note that these results may vary significantly depending on network congestion, physical connection conditions, and system load.

However, performance degradation occurs during CURL tests with external servers. This is due to the significant impact of network congestion, latency, and packet loss rates along the path between the server and W5500. Particularly, since the W5500's internal buffer is limited to 16KB, rapid retransmission from the server is required when packet loss occurs, but recovery time increases drastically as RTT (Round Trip Time) extends.

In contrast, WiFi modules typically have relatively larger internal buffers, enabling them to maintain more stable performance even during network delays or temporary packet loss situations. This difference in buffer size appears to be one of the main factors contributing to the performance gap experienced in real-world usage environments.

Additionally, due to the characteristics of TCP's Slow Start and congestion control algorithms, considerable time is required for transmission speed to re-optimize after packet loss, leading to overall throughput degradation as a structural limitation.

### `How to apply the improved driver:`

```plaintext
$ wget https://raw.githubusercontent.com/seok930927/W5500_Driver/main/install.sh
$ chmod +x install.sh
$ ./install.sh

# To restore to original Driver
$ ./install.sh -Remove
```

**Additionally, we recommend applying the BBR congestion control algorithm for TCP performance optimization:**

Check current settings:

```plaintext
sysctl net.ipv4.tcp_congestion_control
```

Apply BBR:

```plaintext
sudo modprobe tcp_bbr
sudo sysctl -w net.ipv4.tcp_congestion_control=bbr 
sudo sysctl -w net.core.default_qdisc=fq
```

Test Environment:

I also conducted testing on the same Raspberry Pi Zero 2W and validated it in the following environment:

```plaintext
Linux lihan 6.12.75+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.12.75-1+rpt1 (2026-03-11) aarch64 GNU/Linux
```

### Reply 10 by hsummers, 2026-03-21 (in reply to reply 1)

Thank you for the support!

My ping to fsn1-speed.hetzner.com is **180ms**, and my LAN ping is 1ms.

I updated my packages and OS to the latest to match your environment,
Linux raspberrypi 6.12.75+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.12.75-1+rpt1 (2026-03-11) aarch64 GNU/Linux

I ran several LAN tests before and after the driver update and saw an increase from **14Mbps to 17Mbps** max.
I haven't been able to run the remote tests thoroughly yet as I've been getting throttled by my home ISP, and need to test at our office.

Thank you for explaining the details of the network behavior and where/why the bottleneck might be occurring - this was most informative to me.

I'll share the rest of my results soon!

### Reply 11 by hsummers, 2026-03-24 (in reply to reply 1)

The driver update achieved minor improvements in LAN speed, but no noticeable improvement in high-latency TCP connections.
The maximum download speed from the Hetzner server (170ms latency) I achieved was ~3Mbit/s.
I got substantially higher results running speedtest-cli (30ms latency) and reached a download speed of 8Mbit/s.

10Mbit/s from Hetzner was our target benchmark since that's where we serve our remote updates. I'm discussing with our CTO to see if we can move forward with the W5500 despite the performance gap.

Thank you for your support!
I'm happy to run any tests and provide any additional information you request.

### Reply 12 by Lihan__, 2026-03-24

Hello, we have significantly improved the W5500 driver's receive logic to maximize throughput.

This update focuses on securing stable bandwidth, especially in High RTT (High Latency) environments. The key improvements are as follows:

### 1. Key Driver Enhancements

NAPI Batch Processing: We modified the driver to collect up to 256 packets before reporting them to the kernel, rather than reporting each packet immediately. This dramatically reduces the ACK transmission frequency, which is the primary bottleneck for half-duplex SPI buses. (Improved ACK ratio from 1:1 to up to 7.3:1)

GRO (Generic Receive Offload) Optimization: By batching packets, we trigger the kernel's GRO engine to merge them into larger data segments. This reduces CPU overhead and increases effective throughput.

System Stability (Memory Tuning): To prevent stack overflows during batch processing, we moved critical data structures to the Heap (priv structure), ensuring long-term stability during high-speed transfers.

---

### 2. Driver Update & Installation

Please use the following commands to install the improved driver:

```plaintext
# Download and install the driver
$ wget https://raw.githubusercontent.com/seok930927/W5500_Driver/main/install.sh
$ chmod +x install.sh
$ ./install.sh

# To restore the original driver: $ ./install.sh -Remove
```

Bash

```
# Download and install the driver
$ wget https://raw.githubusercontent.com/seok930927/W5500_Driver/main/install.sh
$ chmod +x install.sh
$ ./install.sh

# To restore the original driver: $ ./install.sh -Remove
```

---

### 3. Kernel & Network Optimization (Mandatory)

To unlock the full potential of the driver, please execute the following commands in order after rebooting. (While optimal values may vary by environment, these settings yielded the highest performance in our tests.)

#### ① Network Interface & Routing Settings

```plaintext
# Force-enable Software Generic Receive Offload (GRO)
sudo ethtool -K eth0 gro on

# Optimize ACK suppression and Retransmission Timers (Crucial for performance)
sudo ip route replace default via 192.168.11.1 dev eth0 quickack 0 rto_min 250ms
```

Bash

```
# Force-enable Software Generic Receive Offload (GRO)
sudo ethtool -K eth0 gro on

# Optimize ACK suppression and Retransmission Timers (Crucial for performance)
sudo ip route replace default via 192.168.11.1 dev eth0 quickack 0 rto_min 250ms
```

#### ② Kernel Network Parameter (sysctl) Tuning

```plaintext
# Match the driver batch size with the kernel budget (256)
sudo sysctl -w net.core.netdev_budget=256

# Expand receive buffers and optimize Window Scaling for high-latency environments
sudo sysctl -w net.ipv4.tcp_rmem=''4096 131072 1048576''
sudo sysctl -w net.ipv4.tcp_adv_win_scale=1

# Select the ''Cubic'' algorithm for better speed maintenance in high-latency scenarios
sudo sysctl -w net.ipv4.tcp_congestion_control=cubic

# General system optimizations (Timestamps and Queue management)
sudo sysctl -w net.ipv4.tcp_timestamps=1
sudo sysctl -w net.ipv4.tcp_notsent_lowat=16384
```

Bash

```
# Match the driver batch size with the kernel budget (256)
sudo sysctl -w net.core.netdev_budget=256

# Expand receive buffers and optimize Window Scaling for high-latency environments
sudo sysctl -w net.ipv4.tcp_rmem=''4096 131072 1048576''
sudo sysctl -w net.ipv4.tcp_adv_win_scale=1

# Select the ''Cubic'' algorithm for better speed maintenance in high-latency scenarios
sudo sysctl -w net.ipv4.tcp_congestion_control=cubic

# General system optimizations (Timestamps and Queue management)
sudo sysctl -w net.ipv4.tcp_timestamps=1
sudo sysctl -w net.ipv4.tcp_notsent_lowat=16384
```

---

### 4. Testing & Feedback

After applying these settings, please perform a download test (e.g., using `curl`) and share your results.

Performance Metrics: You can monitor the `segs_in` vs `segs_out` ratio and `cwnd` values using the `ss -ti` command.

Target Performance: In our test environment (RTT 270ms), we achieved a stable peak speed of 1230k (approx. 9.8Mbps).

Thank you.

---

I personally conducted tests in my environment using two different servers: speedtest.tele2.net and fsn1-speed.hetzner.com.

Although both servers showed a similar RTT of approximately 280ms, the performance results varied significantly depending on the network path and server policies. While the Tele2 server consistently delivered speeds near the driver's maximum capability, the Hetzner server experienced a sharp decline in throughput, likely due to transmission path quality or server-side bottlenecks. Since these discrepancies are caused by the external network environment and not a driver defect, I strongly recommend performing cross-tests with multiple servers to accurately verify the receiving performance.

### Reply 13 by hsummers, 2026-03-25 (in reply to reply 12)

Hello Lihan,

I appreciate all the time you have spent trying to find a solution for me.

I downloaded and ran the update script again, rebooted, and made the recommended config changes. I included detailed logs at the end for verification.

In short, I did not observe a change in average download speed with the updated driver and network settings changes. For the 100MB download tests, my highest average from my Home router was ~2MHz, with peak speeds of ~3Mhz.

I have not been able to achieve stable communication with a SPI rate above 32MHz, which appears to be a limitation of the RasPi 02W.

So as to not take any more of your time, I will continue hardware development with the W5500 chip for now and see if our software team finds the performance acceptable once they begin application development.

Thank you again for your time.
Sincerely,
Hamilton Summers

Tests:
Hetzner: curl https://fsn1-speed.hetzner.com/100MB.bin > /dev/null
Speedtest: curl http://speedtest.tele2.net/100MB.zip > /dev/null

Results:

| Interface | Net / Router | Test | Ping | SPI Rate | Download Speed |
| --- | --- | --- | --- | --- | --- |
| PP-W5500-POE 2.0 | Home | Hetzner curl | 85 ms | 32 MHz | 2 Mbit/s |
| PP-W5500-POE 2.0 | Home | speedtest-cli | 90 ms | 32 MHz | 1.7 Mbit/s |
| PP-W5500-POE 2.0 | Office | Hetzner curl | 160 ms | 32 MHz | 3.7 Mbit/s |
| PP-W5500-POE 2.0 | Home | LAN curl | 1 ms | 32 MHz | 14 Mbit/s |
| PP-W5500-POE 2.0 Driver update 1 | Home | LAN curl | 1 ms | 32 MHz | 17 Mbit/s |
| PP-W5500-POE 2.0 Driver update 1 | Home | Hetzner curl | 180 ms | 32 MHz | 1.7 Mbit/s |
| PP-W5500-POE 2.0 Driver update 1 | Office | Speedtest-cli | 26 ms | 32 MHz | 8 Mbit/s |
| PP-W5500-POE 2.0 Driver update 1 | Office | Hetzner curl | 170 ms | 32 MHz | 2.6 Mbit/s |
| PP-W5500-POE 2.0 Driver update 2 | Home | Hetzner curl | 190 ms | 32 MHz | 1.8 Mbit/s |
| PP-W5500-POE 2.0 Driver update 2 | Home | Speedtest curl | 195 ms | 32 MHz | 2.3 Mbit/s |
| PP-W5500-POE 2.0 Driver update 2 | Home | speedtest-cli | 85 ms | 32 MHz | 2.4 Mbit/s |

Downloading and running install.sh:

```plaintext
hamsum@raspberrypi:~ $ wget https://raw.githubusercontent.com/seok930927/W5500_Driver/main/install.sh
--2026-03-24 19:33:12--  https://raw.githubusercontent.com/seok930927/W5500_Driver/main/install.sh
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.111.133, 185.199.108.133, 185.199.109.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.111.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 4821 (4.7K) [text/plain]
Saving to: ‘install.sh’

install.sh                                         100%[================================================================================================================>]   4.71K  --.-KB/s    in 0.01s

2026-03-24 19:33:18 (369 KB/s) - ‘install.sh’ saved [4821/4821]

hamsum@raspberrypi:~ $ chmod +x install.sh
hamsum@raspberrypi:~ $ ./install.sh
=== W5500 Driver Build & Install ===
Target : Raspberry Pi Zero 2W
Kernel : 6.12.75+rpt-rpi-v8

[!] Previously installed driver detected.
    Backup files exist:
      - w5100.ko.xz.bak
      - w5100-spi.ko.xz.bak
    Overwrite and continue? (y/N): y
[1/5] Checking build dependencies...
[2/5] Downloading source...
Cloning into ''/home/hamsum/tmp.dRUeNnjat7/W5500_Driver''...
remote: Enumerating objects: 62, done.
remote: Counting objects: 100% (62/62), done.
remote: Compressing objects: 100% (41/41), done.
remote: Total 62 (delta 31), reused 50 (delta 19), pack-reused 0 (from 0)
Receiving objects: 100% (62/62), 36.33 KiB | 235.00 KiB/s, done.
Resolving deltas: 100% (31/31), done.
[3/5] Building...
make -C /lib/modules/6.12.75+rpt-rpi-v8/build M=/home/hamsum/tmp.dRUeNnjat7/W5500_Driver/source modules
make[1]: Entering directory ''/usr/src/linux-headers-6.12.75+rpt-rpi-v8''
  CC [M]  /home/hamsum/tmp.dRUeNnjat7/W5500_Driver/source/w5100.o
  CC [M]  /home/hamsum/tmp.dRUeNnjat7/W5500_Driver/source/w5100-spi.o
  LD [M]  /home/hamsum/tmp.dRUeNnjat7/W5500_Driver/source/w5100_spi.o
  MODPOST /home/hamsum/tmp.dRUeNnjat7/W5500_Driver/source/Module.symvers
  CC [M]  /home/hamsum/tmp.dRUeNnjat7/W5500_Driver/source/w5100.mod.o
  CC [M]  /home/hamsum/tmp.dRUeNnjat7/W5500_Driver/source/.module-common.o
  LD [M]  /home/hamsum/tmp.dRUeNnjat7/W5500_Driver/source/w5100.ko
  CC [M]  /home/hamsum/tmp.dRUeNnjat7/W5500_Driver/source/w5100_spi.mod.o
  LD [M]  /home/hamsum/tmp.dRUeNnjat7/W5500_Driver/source/w5100_spi.ko
make[1]: Leaving directory ''/usr/src/linux-headers-6.12.75+rpt-rpi-v8''
mkdir -p /home/hamsum/tmp.dRUeNnjat7/W5500_Driver/source/build
mv /home/hamsum/tmp.dRUeNnjat7/W5500_Driver/source/*.ko /home/hamsum/tmp.dRUeNnjat7/W5500_Driver/source/build/
mv /home/hamsum/tmp.dRUeNnjat7/W5500_Driver/source/*.o /home/hamsum/tmp.dRUeNnjat7/W5500_Driver/source/*.mod /home/hamsum/tmp.dRUeNnjat7/W5500_Driver/source/*.mod.c \
        /home/hamsum/tmp.dRUeNnjat7/W5500_Driver/source/modules.order /home/hamsum/tmp.dRUeNnjat7/W5500_Driver/source/Module.symvers /home/hamsum/tmp.dRUeNnjat7/W5500_Driver/source/build/ 2>/dev/null || true
find /home/hamsum/tmp.dRUeNnjat7/W5500_Driver/source -maxdepth 1 \( -name ".*.cmd" -o -name ".*.d" \) -delete
dtc -I dts -O dtb -o /home/hamsum/tmp.dRUeNnjat7/W5500_Driver/source/build/w5500-debug.dtbo /home/hamsum/tmp.dRUeNnjat7/W5500_Driver/source/w5500-overlay.dts
/home/hamsum/tmp.dRUeNnjat7/W5500_Driver/source/w5500-overlay.dts:15.13-20.4: Warning (unit_address_vs_reg): /fragment@1: node has a unit name, but no reg or ranges property
[4/5] Backing up existing drivers...
  The following stock drivers will be backed up:
  Proceed with backup? (y/N): y
[5/5] Installing driver...
  The stock drivers will be replaced with the optimized W5500 driver.
  To revert, run: sudo ./install.sh -Remove
  Proceed with installation? (y/N): y

=== Installation complete ===
To revert to the original driver:
  sudo rm /lib/modules/6.12.75+rpt-rpi-v8/kernel/drivers/net/ethernet/wiznet/w5100.ko /lib/modules/6.12.75+rpt-rpi-v8/kernel/drivers/net/ethernet/wiznet/w5100_spi.ko
  sudo mv /lib/modules/6.12.75+rpt-rpi-v8/kernel/drivers/net/ethernet/wiznet/w5100.ko.xz.bak     /lib/modules/6.12.75+rpt-rpi-v8/kernel/drivers/net/ethernet/wiznet/w5100.ko.xz
  sudo mv /lib/modules/6.12.75+rpt-rpi-v8/kernel/drivers/net/ethernet/wiznet/w5100-spi.ko.xz.bak /lib/modules/6.12.75+rpt-rpi-v8/kernel/drivers/net/ethernet/wiznet/w5100-spi.ko.xz
  sudo depmod -a && sudo reboot

Reboot now? (y/N): y
client_loop: send disconnect: Connection reset
```

Src version hash for the updated driver, shown using ''modinfo w5100'' and ''modinfo w5100_spi''.
w5100: srcversion: 8AD56A232DA3815E2C3F1F9
w5100_spi: srcversion: 923E5AACA7FD03FAB32503D

Script for network settings:

```plaintext
#!/bin/sh

### Network Interface & Routing Settings ###

# Force-enable Software Generic Receive Offload (GRO)
sudo ethtool -K eth0 gro on

# Optimize ACK suppression and Retransmission Timers (Crucial for performance)
sudo ip route replace default via 192.168.0.1 dev eth0 quickack 0 rto_min 250ms


### Kernel Network Parameter (sysctl) Tuning ###

# Match the driver batch size with the kernel budget (256)
sudo sysctl -w net.core.netdev_budget=256

# Expand receive buffers and optimize Window Scaling for high-latency environments
sudo sysctl -w net.ipv4.tcp_rmem=''4096 131072 1048576''
sudo sysctl -w net.ipv4.tcp_adv_win_scale=1

# Select the ''Cubic'' algorithm for better speed maintenance in high-latency scenarios
sudo sysctl -w net.ipv4.tcp_congestion_control=cubic

# General system optimizations (Timestamps and Queue management)
sudo sysctl -w net.ipv4.tcp_timestamps=1
sudo sysctl -w net.ipv4.tcp_notsent_lowat=16384
```

Script output:

```plaintext
hamsum@raspberrypi:~ $ bash net_config.sh
net.core.netdev_budget = 256
net.ipv4.tcp_rmem = 4096 131072 1048576
net.ipv4.tcp_adv_win_scale = 1
net.ipv4.tcp_congestion_control = cubic
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_notsent_lowat = 16384
```

Metrics during ''curl http://speedtest.tele2.net/100MB.zip > /dev/null'' (Also my ssh connection)

```plaintext
hamsum@raspberrypi:~ $ ss -ti
State                     Recv-Q                      Send-Q                                           Local Address:Port                                            Peer Address:Port                      
ESTAB                     0                           0                                                 192.168.0.31:45330                                           90.130.70.73:http
         cubic wscale:12,5 rto:564 rtt:188.573/73.648 ato:40 mss:1364 pmtu:1500 rcvmss:1288 advmss:1448 cwnd:10 bytes_sent:92 bytes_acked:93 bytes_received:42926464 segs_out:11259 segs_in:33330 data_segs_out:1 data_segs_in:33328 send 579kbps lastsnd:129532 pacing_rate 1.16Mbps delivery_rate 54.2kbps delivered:2 app_limited busy:204ms rcv_rtt:192.504 rcv_space:197064 rcv_ssthresh:659456 minrtt:186.768 rcv_ooopack:1605 snd_wnd:45056 rcv_wnd:659456
ESTAB                     0                           52                                                192.168.0.31:ssh                                             192.168.0.66:50631
         cubic wscale:8,6 rto:236 rtt:35.336/6.572 ato:64 mss:1460 pmtu:1500 rcvmss:1432 advmss:1460 cwnd:10 bytes_sent:399313 bytes_acked:399261 bytes_received:208105 segs_out:7346 segs_in:7083 data_segs_out:7303 data_segs_in:5250 send 3.31Mbps lastsnd:12 lastrcv:16 lastack:16 pacing_rate 6.61Mbps delivery_rate 5.06Mbps delivered:7303 busy:170384ms unacked:1 rcv_rtt:170626 rcv_space:64297 rcv_ssthresh:102570 minrtt:0.326 rcv_ooopack:9 snd_wnd:2101760 rcv_wnd:102592
```

---

Source: https://maker.wiznet.io/forum/15976
