More and more devices are becoming wireless. It isn’t unheard of for one person to be carrying three or more wireless devices on them at one time: a phone, a tablet, a laptop, and, more recently, a watch.
There are plenty of benchmarks and articles benchmarking the throughput achieved from a wireless device to a wired device - with a wireless router in the middle of course. This is useful to know if you’re transferring or streaming data from your laptop, phone, or tablet to a device connected via ethernet. However, most people forgo connecting anything via ethernet because connecting wirelessly is just too easy. I am much more interested in the throughput achieved from one wirelessly connected device to another wirelessly connected device.
In this post I am going to use iperf
to benchmark the throughput I can achieve from one wirelessly connected laptop to another wirelessly connected laptop across several consumer wireless routers.
Take note, when transferring data from one wireless device to another wireless device, bandwidth is effectively cut in half compared to transferring data from one wireless device to a wired device.
The Setup
The following wireless routers were used:
- Linksys WRT54GL v1.1
- Apple AirPort Express Base Station Model A1264
- ASUS RTN-66U
- Apple AirPort Express Model A1392 MC414LL/A
- Apple AirPort Extreme 802.11ac Model ME918LL/A
The following two laptops were used:
- MacBook (Retina, 12-inch, Early 2015)
- MacBook Pro (Retina, 15-inch, Early 2013)
The MacBook Pro will be the iperf server and the MacBook will be the iperf client. The iperf server is running with the default iperf settings when running iperf -s
. The iperf client will perform a one way transfer of 100 MBytes and 500 MBytes to the iperf server.
Both laptops were:
- Next to each other
- In the same room as each wireless router
- About 5 feet from each wireless router
Only one wireless router was turned on at a time during each test.
Only the two laptops were connected to the wireless router.
The tests were conducted in an apartment building where I was surrounded by 20+ wireless access points operating in the 2.4 GHz and 5.0 GHz frequencies.
Linksys WRT54GL v1.1
Firmware: Tomato Firmware by Shibby 1.28.0005 124 ND VPN
802.11g only at 2.4 GHz on Channel 6
[16:06:27][~] iperf -c 192.168.1.113 -n 100M
------------------------------------------------------------
Client connecting to 192.168.1.113, TCP port 5001
TCP window size: 129 KByte (default)
------------------------------------------------------------
[ 4] local 192.168.1.118 port 62161 connected with 192.168.1.113 port 5001
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-308.7 sec 100 MBytes 2.72 Mbits/sec
2.72 Mbits/sec converts to 0.34 MBytes/sec. Pathetic throughput. I didn’t even bother running the 500 MBytes payload.
No matter what non-overlapping channel I was on (1, 6, or 11), I was never able to get decent throughput. The highest throughput I achieved was 1.4 MBytes/sec, but that was only for 10 seconds. Throughput averaged 100 - 500 KBytes/sec and would very often fall below 100 KBytes/sec.
Apple AirPort Express Base Station Model A1264
Firmware: 7.6.4
802.11n only at 2.4 GHz on Channel 11 at 20 MHz
[16:45:10][~] iperf -c 10.0.1.3 -n 100M
------------------------------------------------------------
Client connecting to 10.0.1.3, TCP port 5001
TCP window size: 129 KByte (default)
------------------------------------------------------------
[ 4] local 10.0.1.2 port 62470 connected with 10.0.1.3 port 5001
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-36.8 sec 100 MBytes 22.8 Mbits/sec
22.8 Mbits/sec converts to 2.85 MBytes/sec.
Increased payload to 500 MBytes:
[16:46:59][~] iperf -c 10.0.1.3 -n 500M
------------------------------------------------------------
Client connecting to 10.0.1.3, TCP port 5001
TCP window size: 129 KByte (default)
------------------------------------------------------------
[ 4] local 10.0.1.2 port 62471 connected with 10.0.1.3 port 5001
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-171.0 sec 500 MBytes 24.5 Mbits/sec
24.5 Mbits/sec converts to 3.06 MBytes/sec.
802.11n only at 5.0 GHz on Channel 40 at 40 MHz
[16:54:12][~] iperf -c 10.0.1.3 -n 100M
------------------------------------------------------------
Client connecting to 10.0.1.3, TCP port 5001
TCP window size: 129 KByte (default)
------------------------------------------------------------
[ 4] local 10.0.1.2 port 62485 connected with 10.0.1.3 port 5001
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-15.6 sec 100 MBytes 53.7 Mbits/sec
53.7 Mbits/sec converts to 6.71 MBytes/sec.
Increased payload to 500 MBytes:
[16:50:29][~] iperf -c 10.0.1.3 -n 500M
------------------------------------------------------------
Client connecting to 10.0.1.3, TCP port 5001
TCP window size: 129 KByte (default)
------------------------------------------------------------
[ 4] local 10.0.1.2 port 62484 connected with 10.0.1.3 port 5001
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-67.3 sec 500 MBytes 62.3 Mbits/sec
62.3 Mbits/sec converts to 7.79 MBytes/sec.
ASUS RTN-66U
Firmware: Tomato Firmware by Shibby 1.28.0000 MIPSR2-117 K26 USB VPN-64K
802.11n only at 2.4 GHz on Channel 11 at 20 MHz
[19:46:58][~] iperf -c 192.168.1.196 -n 100M
------------------------------------------------------------
Client connecting to 192.168.1.196, TCP port 5001
TCP window size: 129 KByte (default)
------------------------------------------------------------
[ 4] local 192.168.1.198 port 49457 connected with 192.168.1.196 port 5001
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-45.5 sec 100 MBytes 18.4 Mbits/sec
18.4 Mbits/sec converts to 2.3 MBytes/sec.
Increased payload to 500 MBytes:
[19:47:46][~] iperf -c 192.168.1.196 -n 500M
------------------------------------------------------------
Client connecting to 192.168.1.196, TCP port 5001
TCP window size: 129 KByte (default)
------------------------------------------------------------
[ 4] local 192.168.1.198 port 49458 connected with 192.168.1.196 port 5001
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-221.6 sec 500 MBytes 18.9 Mbits/sec
18.9 Mbits/sec converts to 2.36 MBytes/sec.
802.11n only at 5.0 GHz on Channel 40 at 40 MHz
[17:03:18][~] iperf -c 192.168.1.196 -n 100M
------------------------------------------------------------
Client connecting to 192.168.1.196, TCP port 5001
TCP window size: 129 KByte (default)
------------------------------------------------------------
[ 4] local 192.168.1.198 port 62512 connected with 192.168.1.196 port 5001
[ ID] Interval Transfer Bandwidth
[ 4] 0.0- 8.4 sec 100 MBytes 99.6 Mbits/sec
99.6 Mbits/sec converts to 12.45 MBytes/sec.
Increased payload to 500 MBytes:
[17:03:28][~] iperf -c 192.168.1.196 -n 500M
------------------------------------------------------------
Client connecting to 192.168.1.196, TCP port 5001
TCP window size: 129 KByte (default)
------------------------------------------------------------
[ 4] local 192.168.1.198 port 62513 connected with 192.168.1.196 port 5001
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-40.5 sec 500 MBytes 104 Mbits/sec
104 Mbits/sec converts to 13 MBytes/sec.
Apple AirPort Express Model A1392 MC414LL/A
Firmware: 7.6.7
802.11n only at 2.4 GHz on Channel 11 at 20 MHz
[16:02:51][~] iperf -c 10.0.1.2 -n 100M
------------------------------------------------------------
Client connecting to 10.0.1.2, TCP port 5001
TCP window size: 129 KByte (default)
------------------------------------------------------------
[ 4] local 10.0.1.3 port 56117 connected with 10.0.1.2 port 5001
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-42.8 sec 100 MBytes 19.6 Mbits/sec
19.6 Mbits/sec converts to 2.45 MBytes/sec.
Increased payload to 500 MBytes:
[16:07:52][~] iperf -c 10.0.1.2 -n 500M
------------------------------------------------------------
Client connecting to 10.0.1.2, TCP port 5001
TCP window size: 129 KByte (default)
------------------------------------------------------------
[ 4] local 10.0.1.3 port 56130 connected with 10.0.1.2 port 5001
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-218.4 sec 500 MBytes 19.2 Mbits/sec
19.2 Mbits/sec converts to 2.4 MBytes/sec.
One test achieved a throughput of 17.4 Mbits/sec or 2.175 MBytes/sec.
802.11n only at 5.0 GHz on Channel 40 at 40 MHz
[16:12:09][~] iperf -c 10.0.1.2 -n 100M
------------------------------------------------------------
Client connecting to 10.0.1.2, TCP port 5001
TCP window size: 129 KByte (default)
------------------------------------------------------------
[ 4] local 10.0.1.3 port 56174 connected with 10.0.1.2 port 5001
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-10.3 sec 100 MBytes 81.1 Mbits/sec
81.1 Mbits/sec converts to 10.1375 MBytes/sec.
Increased payload to 500 MBytes:
[16:13:53][~] iperf -c 10.0.1.2 -n 500M
------------------------------------------------------------
Client connecting to 10.0.1.2, TCP port 5001
TCP window size: 129 KByte (default)
------------------------------------------------------------
[ 4] local 10.0.1.3 port 56176 connected with 10.0.1.2 port 5001
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-54.9 sec 500 MBytes 76.4 Mbits/sec
76.4 MBits/sec converts to 9.55 MBytes/sec.
5.0 GHz on Channel 40 at 40 MHz to 100 Megabit Ethernet
Out of curiosity, I wanted to see the throughput I could achieve between the wirelessly connected MacBook and the 1 gigabit ethernet wired MacBook Pro. However, it turns out this AirPort Express model does not have any 1 gigabit ethernet ports. Nevertheless, I ran the test, and the speeds are exactly what you would expect for 100 megabit ethernet.
[16:16:38][~] iperf -c 10.0.1.4 -n 1000M
------------------------------------------------------------
Client connecting to 10.0.1.4, TCP port 5001
TCP window size: 129 KByte (default)
------------------------------------------------------------
[ 4] local 10.0.1.3 port 56201 connected with 10.0.1.4 port 5001
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-89.4 sec 1000 MBytes 93.9 Mbits/sec
93.9 Mbits/sec converts to 11.7375 MBytes/sec.
Apple AirPort Extreme 802.11ac Model ME918LL/A
Firmware: 7.7.3
The AirPort Extreme does not let you turn off any of the 802.11 modes. They are all always turned on and it will determine which 802.11 mode the wireless device communicates over.
So, instead of testing the different 802.11 modes, I tested 2.4 GHz vs 5.0 GHz.
2.4 GHz on Channel 11 at 20 MHz
[19:15:21][~] iperf -c 10.0.1.4 -n 100M
------------------------------------------------------------
Client connecting to 10.0.1.4, TCP port 5001
TCP window size: 129 KByte (default)
------------------------------------------------------------
[ 4] local 10.0.1.3 port 65202 connected with 10.0.1.4 port 5001
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-19.5 sec 100 MBytes 43.0 Mbits/sec
43 Mbits/sec converts to 5.375 MBytes/sec.
Increased payload to 500 MBytes:
[19:15:43][~] iperf -c 10.0.1.4 -n 500M
------------------------------------------------------------
Client connecting to 10.0.1.4, TCP port 5001
TCP window size: 129 KByte (default)
------------------------------------------------------------
[ 4] local 10.0.1.3 port 65207 connected with 10.0.1.4 port 5001
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-89.4 sec 500 MBytes 46.9 Mbits/sec
46.9 Mbits/sec converts to 5.86 MBytes/sec.
5.0 GHz on Channel 40 at 40 MHz and 80 MHz
[18:51:39][~] iperf -c 10.0.1.4 -n 100M
------------------------------------------------------------
Client connecting to 10.0.1.4, TCP port 5001
TCP window size: 129 KByte (default)
------------------------------------------------------------
[ 4] local 10.0.1.3 port 63566 connected with 10.0.1.4 port 5001
[ ID] Interval Transfer Bandwidth
[ 4] 0.0- 4.4 sec 100 MBytes 191 Mbits/sec
191 Mbits/sec converts to 23.875 MBytes/sec.
Increased payload to 500 MBytes:
[18:51:47][~] iperf -c 10.0.1.4 -n 500M
------------------------------------------------------------
Client connecting to 10.0.1.4, TCP port 5001
TCP window size: 129 KByte (default)
------------------------------------------------------------
[ 4] local 10.0.1.3 port 63567 connected with 10.0.1.4 port 5001
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-22.0 sec 500 MBytes 191 Mbits/sec
191 Mbits/sec converts to 23.875 MBytes/sec.
The MacBook can connect using 802.11ac, and can use the 80 MHz channel width. The MacBook Pro can only connect using 802.11n and is limited to the 40 MHz channel width. Because of this, the MacBook Pro became the limiting factor in these tests. The throughput would probably have been even higher if I had another 802.11ac capable laptop.
5.0 GHz on Channel 40 at 80 MHz to 1 Gigabit Ethernet
Out of curiosity, I wanted to see the throughput I could achieve between the wirelessly connected MacBook and the 1 gigabit ethernet wired MacBook Pro. I ran the exact same tests, however, I expected the throughput to be much higher, so I increased the payload to 1 GByte. The result did not disappoint.
[18:56:48][~] iperf -c 10.0.1.2 -n 1000M
------------------------------------------------------------
Client connecting to 10.0.1.2, TCP port 5001
TCP window size: 129 KByte (default)
------------------------------------------------------------
[ 4] local 10.0.1.3 port 63574 connected with 10.0.1.2 port 5001
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-15.7 sec 1000 MBytes 534 Mbits/sec
534 Mbits/sec converts to 66.75 MBytes/sec.
Summary
Based on these results, it’s clear you should stop using the 2.4 GHz frequency if you want any level of decent throughput. The 2.4 GHz frequency is simply too crowded with older wireless routers, Bluetooth, microwaves, and the occasional cordless landline phone.
The 5.0 GHz frequency will eventually become just as crowded as the 2.4 GHz frequency has become, but hopefully when that time comes there will be new wireless technology to mitigate interference or new wireless frequencies to use.