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