Banana Pi BPI-R4: Real-World Wi-Fi 7 Performance

Banana Pi BPI-R4: Real-World Wi-Fi 7 Performance

Introduction

The Banana Pi BPI-R4 is marketed as a next-generation single-board router with support for Wi-Fi 7, dual 10GbE SFP ports and Quad Port Switch, 1GbE/2.5GbE(when supported) per port with Switch fabric, and a quad-core ARM architecture and 8GB Ram. But can it really deliver the speeds modern networks demand? We tested it using OpenWrt and standard tools like iperf3 to see what this little powerhouse can actually do.


Setup Overview

  • Device: Banana Pi BPI-R4
  • Firmware: OpenWrt
  • Wireless Config: Dual-band AP (2.4GHz and 5GHz enabled)
  • Client: Intel AX211 on a system powered by i9-13900K (Homer)
  • Distance: <2 meters line of sight (for peak throughput test)
  • Heat Dissipation: Custom heatsink with fan and Peltier module (for thermals under load)

5GHz Performance – Fast Enough to Raise Eyebrows

At 160MHz channel width on 5GHz, using HE-MCS 11 (Wi-Fi 6E / 7 standard), the link showed:

SSID: OpenWrt-5g
freq: 5180 MHz (Channel 36)
rx bitrate: 2401.9 MBit/s
signal: -33 dBm

Using iperf3, the real-world throughput reached:

1.14 Gbits/sec (TX)
1.06 Gbits/sec (RX)

This wasn't just theoretical. The data flow was consistent and stable:

director@homer:/srv/tftp$ iperf3 -c 192.168.1.1
Connecting to host 192.168.1.1, port 5201
[  5] local 192.168.1.229 port 46952 connected to 192.168.1.1 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   136 MBytes  1.14 Gbits/sec    0   2.61 MBytes
[  5]   1.00-2.00   sec   132 MBytes  1.11 Gbits/sec    0   2.05 MBytes
[  5]   2.00-3.00   sec   125 MBytes  1.05 Gbits/sec    0   2.34 MBytes
[  5]   3.00-4.00   sec   126 MBytes  1.06 Gbits/sec    0   2.20 MBytes
[  5]   4.00-5.00   sec   131 MBytes  1.10 Gbits/sec    0   2.52 MBytes
[  5]   5.00-6.00   sec   127 MBytes  1.06 Gbits/sec    0   1.97 MBytes
[  5]   6.00-7.00   sec   123 MBytes  1.03 Gbits/sec    0   2.80 MBytes
[  5]   7.00-8.00   sec   134 MBytes  1.13 Gbits/sec    0   1.94 MBytes
[  5]   8.00-9.00   sec   123 MBytes  1.03 Gbits/sec    0   1.55 MBytes
[  5]   9.00-10.00  sec   127 MBytes  1.06 Gbits/sec    0   2.88 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.25 GBytes  1.08 Gbits/sec    0            sender
[  5]   0.00-10.01  sec  1.23 GBytes  1.06 Gbits/sec                  receiver
⚡️ “Oh my, this is fast.” These speeds outperformed the Eero Max 7 tested in the same environment.
'
root@OpenWrt:/usr/local/src/openwrt# iperf3 -s
-----------------------------------------------------------
Server listening on 5201 (test #1)
-----------------------------------------------------------
Accepted connection from 192.168.1.229, port 35168
[  5] local 192.168.1.1 port 5201 connected to 192.168.1.229 port 35172
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  24.1 MBytes   202 Mbits/sec
[  5]   1.00-2.00   sec  25.2 MBytes   212 Mbits/sec
[  5]   2.00-3.00   sec  24.7 MBytes   207 Mbits/sec
[  5]   3.00-4.00   sec  25.5 MBytes   214 Mbits/sec
[  5]   4.00-5.00   sec  25.9 MBytes   217 Mbits/sec
[  5]   5.00-6.00   sec  25.6 MBytes   214 Mbits/sec
[  5]   6.00-7.00   sec  23.8 MBytes   200 Mbits/sec
[  5]   7.00-8.00   sec  25.9 MBytes   217 Mbits/sec
[  5]   8.00-9.00   sec  25.7 MBytes   216 Mbits/sec
[  5]   9.00-10.00  sec  24.5 MBytes   205 Mbits/sec
[  5]  10.00-10.00  sec   174 KBytes   372 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.00  sec   251 MBytes   211 Mbits/sec                  receiver
-----------------------------------------------------------
Server listening on 5201 (test #2)
-----------------------------------------------------------
Accepted connection from 192.168.1.229, port 60652
[  5] local 192.168.1.1 port 5201 connected to 192.168.1.229 port 60662
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  24.0 MBytes   201 Mbits/sec
[  5]   1.00-2.00   sec  23.4 MBytes   197 Mbits/sec
[  5]   2.00-3.00   sec  24.8 MBytes   208 Mbits/sec
[  5]   3.00-4.00   sec  25.1 MBytes   210 Mbits/sec
[  5]   4.00-5.00   sec  25.3 MBytes   212 Mbits/sec
[  5]   5.00-6.00   sec  25.6 MBytes   215 Mbits/sec
[  5]   6.00-7.00   sec  24.4 MBytes   205 Mbits/sec
[  5]   7.00-8.00   sec  25.4 MBytes   213 Mbits/sec
[  5]   8.00-9.00   sec  25.2 MBytes   211 Mbits/sec
[  5]   9.00-10.00  sec  25.6 MBytes   215 Mbits/sec
[  5]  10.00-10.01  sec   223 KBytes   198 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.01  sec   249 MBytes   209 Mbits/sec                  receiver
-----------------------------------------------------------
Server listening on 5201 (test #3)
-----------------------------------------------------------
Accepted connection from 192.168.1.229, port 46950
[  5] local 192.168.1.1 port 5201 connected to 192.168.1.229 port 46952
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec   117 MBytes   984 Mbits/sec
[  5]   1.00-2.00   sec   129 MBytes  1.08 Gbits/sec
[  5]   2.00-3.00   sec   122 MBytes  1.02 Gbits/sec
[  5]   3.00-4.00   sec   128 MBytes  1.08 Gbits/sec
[  5]   4.00-5.00   sec   129 MBytes  1.08 Gbits/sec
[  5]   5.00-6.00   sec   131 MBytes  1.09 Gbits/sec
[  5]   6.00-7.00   sec   124 MBytes  1.04 Gbits/sec
[  5]   7.00-8.00   sec   129 MBytes  1.08 Gbits/sec
[  5]   8.00-9.00   sec   125 MBytes  1.05 Gbits/sec
[  5]   9.00-10.00  sec   127 MBytes  1.06 Gbits/sec
[  5]  10.00-10.01  sec   788 KBytes  1.20 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.01  sec  1.23 GBytes  1.06 Gbits/sec                  receiver
-----------------------------------------------------------
Server listening on 5201 (test #4)
-----------------------------------------------------------


Local same host bandwidth

root@OpenWrt:~# iperf -c 192.168.1.1
------------------------------------------------------------
Client connecting to 192.168.1.1, TCP port 5001
TCP window size: 3.51 MByte (default)
------------------------------------------------------------
[  3] local 192.168.1.1 port 32950 connected with 192.168.1.1 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  19.5 GBytes  16.8 Gbits/sec
root@OpenWrt:~# iperf -c 192.168.1.1
------------------------------------------------------------
Client connecting to 192.168.1.1, TCP port 5001
TCP window size: 3.51 MByte (default)
------------------------------------------------------------
[  3] local 192.168.1.1 port 53624 connected with 192.168.1.1 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  19.8 GBytes  17.0 Gbits/sec

2.4GHz: Functional, but Not Spectacular

While not the headline act, 2.4GHz performance stayed stable. The focus, however, remains on modern 5GHz and future 6GHz connectivity.

director@homer:~$ iperf3 -c 192.168.1.1
Connecting to host 192.168.1.1, port 5201
[  5] local 192.168.1.229 port 27880 connected to 192.168.1.1 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  31.5 MBytes   264 Mbits/sec    0    865 KBytes
[  5]   1.00-2.00   sec  25.1 MBytes   211 Mbits/sec    0    820 KBytes
[  5]   2.00-3.00   sec  25.8 MBytes   216 Mbits/sec    0    732 KBytes
[  5]   3.00-4.00   sec  25.5 MBytes   214 Mbits/sec    0    738 KBytes
[  5]   4.00-5.00   sec  24.9 MBytes   209 Mbits/sec    0    549 KBytes
[  5]   5.00-6.00   sec  25.5 MBytes   214 Mbits/sec    0    614 KBytes
[  5]   6.00-7.00   sec  24.5 MBytes   206 Mbits/sec    0    865 KBytes
[  5]   7.00-8.00   sec  29.2 MBytes   245 Mbits/sec    0    848 KBytes
[  5]   8.00-9.00   sec  23.0 MBytes   193 Mbits/sec    0    611 KBytes
[  5]   9.00-10.00  sec  26.6 MBytes   223 Mbits/sec    0    925 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   262 MBytes   219 Mbits/sec    0            sender
[  5]   0.00-10.01  sec   254 MBytes   213 Mbits/sec                  receiver

iperf Done.

-----------------------------------------------------------
Server listening on 5201 (test #7)
-----------------------------------------------------------
Accepted connection from 192.168.1.229, port 46836
[  5] local 192.168.1.1 port 5201 connected to 192.168.1.229 port 46848
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  18.7 MBytes   157 Mbits/sec
[  5]   1.00-2.00   sec  21.3 MBytes   179 Mbits/sec
[  5]   2.00-3.00   sec  22.2 MBytes   186 Mbits/sec
[  5]   3.00-4.00   sec  22.1 MBytes   186 Mbits/sec
[  5]   4.00-5.00   sec  24.9 MBytes   209 Mbits/sec
[  5]   5.00-6.00   sec  25.4 MBytes   213 Mbits/sec
[  5]   6.00-7.00   sec  25.8 MBytes   217 Mbits/sec
[  5]   7.00-8.00   sec  25.9 MBytes   218 Mbits/sec
[  5]   8.00-9.00   sec  24.4 MBytes   205 Mbits/sec
[  5]   9.00-10.00  sec  25.1 MBytes   210 Mbits/sec
[  5]  10.00-10.06  sec  1.48 MBytes   210 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.06  sec   237 MBytes   198 Mbits/sec                  receiver
-----------------------------------------------------------

Some of the readings below are simply not correct, using the MediaTek OpenWRT 22.02 firmware the speed amazing the drivers slowly getting there.

Connecting Across Subnets – Worker vs Router

Even when crossing from AP → router → upstream system (worker), performance remained solid:

iperf3 between Homer and Worker (via AP):
TX: 1.08 GBytes @ 929 Mbit/sec
RX: 1.07 GBytes @ 915 Mbit/sec

This confirms that even in routed, non-bridged configurations, the BPI-R4 maintains near-gigabit throughput.



BusyBox v1.33.2 (2023-11-01 06:15:09 UTC) built-in shell (ash)

_______                     ________        __
|       |.-----.-----.-----.|  |  |  |.----.|  |_
|   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
|_______||   __|_____|__|__||________||__|  |____|
|__| W I R E L E S S   F R E E D O M
-----------------------------------------------------
OpenWrt 21.02-SNAPSHOT, unknown
-----------------------------------------------------
root@OpenWrt:~# iw dev phy2-ap0 info
Interface phy2-ap0
        ifindex 27
        wdev 0x200000003
        addr 00:02:55:66:83:d4
        ssid OpenWrt-6g
        type AP
        wiphy 2
        channel 37 (6135 MHz), width: 320 MHz, center1: 6265 MHz
        txpower 12.00 dBm
        multicast TXQ:
                qsz-byt qsz-pkt flows   drops   marks   overlmt hashcol tx-bytes        tx-packets
                0       0       455     0       0       0       0       77059           460
root@OpenWrt:~# iw dev phy1-ap0 info
Interface phy1-ap0
        ifindex 26
        wdev 0x100000003
        addr 00:01:55:66:83:d4
        ssid OpenWrt-5g
        type AP
        wiphy 1
        channel 36 (5180 MHz), width: 160 MHz, center1: 5250 MHz
        txpower 23.00 dBm
        multicast TXQ:
                qsz-byt qsz-pkt flows   drops   marks   overlmt hashcol tx-bytes        tx-packets
                0       0       72      0       0       0       0       14113           73
root@OpenWrt:~# iw dev phy0-ap0 info
Interface phy0-ap0
        ifindex 25
        wdev 0x3
        addr 00:00:55:66:83:d4
        ssid OpenWrt-2g
        type AP
        wiphy 0
        channel 1 (2412 MHz), width: 20 MHz, center1: 2412 MHz
        txpower 27.00 dBm
        multicast TXQ:
                qsz-byt qsz-pkt flows   drops   marks   overlmt hashcol tx-bytes        tx-packets
                0       0       404     0       0       0       0       72229           407
root@OpenWrt:~#

📱 6GHz Test: Smartphone Surges Ahead

While the 5GHz results on a desktop were already impressive, testing with a modern smartphone brought shocking performance: (S25 ULTRA)

Mobile 6GHz Test – Peak Wireless at Home

Testing from a modern Android handset over 6GHz at ~8-10 meters:

📱 iperf3 (Phone → BPI-R4)

Max: 4.51 Gbps
Avg: 1.95 Gbps
Min: 0.94 Gbps

This shows the AX-ready client ramping up beyond 4 Gbps before settling around 2 Gbps with real-world distance. No trickery—this was sustained upload throughput with distance attenuation and thermal load.

  • Initial Upload Speed (at ~2m): Over 4 Gbit/sec burst
  • Distance (~8–10m): Speed reduced to around 300 Mbit/sec

This massive dropoff highlights the physics of 6GHz — ultra-fast at close range, but highly sensitive to obstacles and distance. Yet the fact remains:

4Gbps is achievable with a client that supports it.

📊 This outperformed not just the Banana Pi's own 5GHz numbers, but also left the Eero Max 7 in the dust in the same room.

These figures were achieved without tuning, there was however a pelter heat sink sitting on the upside down BPI-4 over the BE1400 Radios, and without firmware patches for 6GHz.


root@OpenWrt:~# iw reg get
global
country GB: DFS-ETSI
(2400 - 2483 @ 40), (N/A, 20), (N/A)
(5150 - 5250 @ 80), (N/A, 23), (N/A), NO-OUTDOOR, AUTO-BW
(5250 - 5350 @ 80), (N/A, 20), (0 ms), NO-OUTDOOR, DFS, AUTO-BW
(5470 - 5730 @ 160), (N/A, 26), (0 ms), DFS
(5725 - 5850 @ 80), (N/A, 23), (N/A), NO-OUTDOOR
(5925 - 6425 @ 160), (N/A, 23), (N/A), NO-OUTDOOR
(57000 - 71000 @ 2160), (N/A, 40), (N/A)

root@OpenWrt:~# iw reg set US
root@OpenWrt:~# iw reg get
global
country US: DFS-FCC
(902 - 904 @ 2), (N/A, 30), (N/A)
(904 - 920 @ 16), (N/A, 30), (N/A)
(920 - 928 @ 8), (N/A, 30), (N/A)
(2400 - 2472 @ 40), (N/A, 30), (N/A)
(5150 - 5250 @ 80), (N/A, 23), (N/A), AUTO-BW
(5250 - 5350 @ 80), (N/A, 24), (0 ms), DFS, AUTO-BW
(5470 - 5730 @ 160), (N/A, 24), (0 ms), DFS
(5730 - 5850 @ 80), (N/A, 30), (N/A), AUTO-BW
(5850 - 5895 @ 40), (N/A, 27), (N/A), NO-OUTDOOR, AUTO-BW
(5925 - 7125 @ 320), (N/A, 12), (N/A), NO-OUTDOOR
(57240 - 71000 @ 2160), (N/A, 40), (N/A)

Next Steps: 6GHz and Mesh Expansion

The BPI-R4 supports Wi-Fi 7 including 6GHz. While current firmware requires tweaking, the hardware is ready.

Planned:

  • Tune and enable 6GHz AP mode reliably - works a treat on the phone, not so with Arch
  • Deploy mesh networking using BATMAN-adv
  • Add second and third nodes for full-site mesh testing

⚠️ Regional Limitations – The GB Regdom Trap

As testing progressed, one obstacle surfaced: regulatory domain enforcement.

When operating under the default US regulatory domain, all was well—160MHz channels on 5GHz and full 6GHz access. But the moment we issued:

iw reg set GB

...everything collapsed. Speeds dropped, channels vanished, and the 6GHz band became unusable. Not just 6GHz—2.4GHz and 5GHz also vanished.

This isn’t the fault of the hardware. It's a known limitation with wireless-regdb and OpenWrt’s regdb signature enforcement, which disables 6GHz in most countries unless the firmware and regdb are properly signed and recognised.

✍️ A custom kernel will be compiled that bypasses this restriction—not to cheat, but to restore lawful access to bands that are available under GB regulations but poorly represented in upstream databases.

📚 Related: When the Kernel Turns Against You

root@OpenWrt:~# iw reg get
global
country GB: DFS-ETSI
    (2400 - 2483 @ 40), (N/A, 20), (N/A)
    (5150 - 5250 @ 80), (N/A, 23), (N/A), NO-OUTDOOR, AUTO-BW
    (5250 - 5350 @ 80), (N/A, 20), (0 ms), NO-OUTDOOR, DFS, AUTO-BW
    (5470 - 5730 @ 160), (N/A, 26), (0 ms), DFS
    (5725 - 5850 @ 80), (N/A, 23), (N/A), NO-OUTDOOR
    (5925 - 6425 @ 160), (N/A, 23), (N/A), NO-OUTDOOR
    (57000 - 71000 @ 2160), (N/A, 40), (N/A)

root@OpenWrt:~# iw reg set US
root@OpenWrt:~# iw reg get
global
country US: DFS-FCC
    (902 - 904 @ 2), (N/A, 30), (N/A)
    (904 - 920 @ 16), (N/A, 30), (N/A)
    (920 - 928 @ 8), (N/A, 30), (N/A)
    (2400 - 2472 @ 40), (N/A, 30), (N/A)
    (5150 - 5250 @ 80), (N/A, 23), (N/A), AUTO-BW
    (5250 - 5350 @ 80), (N/A, 24), (0 ms), DFS, AUTO-BW
    (5470 - 5730 @ 160), (N/A, 24), (0 ms), DFS
    (5730 - 5850 @ 80), (N/A, 30), (N/A), AUTO-BW
    (5850 - 5895 @ 40), (N/A, 27), (N/A), NO-OUTDOOR, AUTO-BW
    (5925 - 7125 @ 320), (N/A, 12), (N/A), NO-OUTDOOR
    (57240 - 71000 @ 2160), (N/A, 40), (N/A)

Verdict So Far

The Banana Pi BPI-R4 BE1400 does very much impress. With OpenWrt, it becomes a flexible and performant wireless access point, exceeding expectations. Real throughput of over 1 Gbps via wireless is no longer reserved for enterprise gear.

When a £100 radio coupled with the BPI-4 outpaces proprietary Wi-Fi 7 mesh units—something’s changing.

Stay tuned as we push it harder, test mesh performance, and unleash 6GHz.


📍 Article maintained by AKADATA LIMITED