There are four ways you can connect the internet to a Raspberry Pi board. You can use a built-in WIFI, add a WIFI dongle, use an ethernet socket, or add one via USB. In this article we will take a look at each option, to investigate what is the fastest connection option for each board. The boards tested:
- Raspberry Pi 3
- Raspberry Pi 2
- Raspberry Pi Zero
- Raspberry Pi Zero W
Each board will be tested for speeds using:
- built-in WIFI (if possible)
- built-in ethernet (if possible)
- USB (3.0) to ethernet adapter (1 Gb)
- WIFI USB 2.0 dongle
Testing conditions of the Raspberry Pi network speed test
This should lead to some interesting results as it turned out. Each test is run with an iperf server running on the target device (I’d rather see some CPU action on the board itself) and the client (PC – Windows 10) is connected through a LAN cable (1Gb) to the Linksys WRT-1900ACS. The test will be run minimum 3 times in a short period of time. In few cases where results have been inconsistent, the additional tests have been done. The USB ethernet adapter is backward compatible and auto-negotiation will determine the correct link speed. I have verified the adapter on my PC with the test speeds in excess of 700Mbits/s.
Each board is tested with the same (latest at the time of writing Raspbian Pixel image) class 10 microSD card, the same power supply is used in all cases (an original adapter for indoor tests, and the battery bank for the range tests).
The wireless performance tests have been done at 1m, 5m (through walls), 10m, and 20m. As the board and adapter orientation do matter, I tried to orient the board and the adapter in a way that would allow for the best internet speeds. The orientation of the adapter has been consistent across the tests. This should cover the test environment setup, but feel free to ask me any questions about it.
Raspberry Pi network speed test
Each board can use the USB (3.0) Ethernet adapter (with USB2.0 speeds) (with the Raspberry Pi Zero and Zero W using a micro-female USB adapter) and in addition to that Raspberry Pi 2 and Raspberry Pi 3 have the built-in Ethernet socket. I will test all the combinations to show you which interface allows the best connection. Let’s kick things off with the build in sockets to set up a baseline.
Built-in Ethernet network speed test
Only Raspberry Pi 2 and Raspberry Pi 3 have the socket so the data crunching will be easy:
The speeds on the both boards are similar, with the Raspberry Pi 2 giving a little more consistent results when looked at the raw data. I recorded the transfer speeds from 64Mbits/s to 92.3Mbits/s on the Raspberry Pi 2 and 36.2Mbits/s to 92.8 on the Raspberry Pi 3. Frankly speaking, I was expecting little better ethernet performance from the RPI3. While I tried to eliminate all the internet traffic from the test, I can never be sure if the Windows is not doing something in the background without my knowledge. The results are close enough and don’t raise my concern. There are plenty of more tests online to confirm this scenario.
USB Ethernet adapter network speed test
You may ask why test the Raspberry PI 2 and 3 if they already have the LAN socket? I hope the chart below will answer your questions:We see a very similar performance from the Zero family, with the minimum speed of 56Mbits/s to 111Mbits/s on Zero W and 70Mbits/s to 108Mbits/s on Zero. Both boards seem capable of the same performance and the average connection speed is high. The Raspberry Pi 2 and Raspberry Pi 3 show, however big differences in speed. The increased speed over USB over the Zero family has to come with better processing power. I have to assume the CPU on Zeros are the bottleneck.
Raspberry Pi 3 speeds show from 55Mbits/s to 178Mbits/s with average transfer speeds kept high, stable and consistent. It’s a clear advantage over the built-in ethernet socket. Raspberry Pi 2, however, runs into some troubles. I have done over 15 tests to confirm it’s not a bug. The board is able to sustain speeds 120-170Mbits/s in one test then struggles to reach 100Mbits/s in follow-up tests. I start to wonder if the CPU itself is not throttling. The tests are run in quick succession, and the procedure lasts about 2-3 min – therefore I can’t see this as a thermal factor. Disabling the interfaces (eth0) makes no difference. My conclusion is – that the speed over the USB adapter is inconsistent. Perhaps a software update would address this?
I guess it’s time to go wireless.
I have a few things I would like to point out, before sharing the result of the test. When playing with WIFI interfaces – disable the one you don’t use. If connected it will half your test speed. To deactivate the relevant interfaces I used:
sudo ifconfig wlan0 (or wlan1) down
Another thing to consider is the orientation of the board. While with Raspberry Pi 2 and 3 orientations was not making much of a difference, the Zero W performs much better when the upside is directed towards the router. The same applies to my USB WIFI adapter that prefers to point its bottom towards router for the best speeds.
Built-in WIFI network speed test (1m)
Another baseline test. The device is oriented in the optimal position and placed about 1m away from the router. There are no obstacles, the line of sight is maintained. This is a baseline test to show us what we should expect from the built-in interfaces:
I guess they weren’t telling us porkies when they said the same chip is being used on both boards. The speed was very consistent on both boards with a starting 15Mbits/s and then constant 38.8Mbits/s across the tests for the Raspberry Pi 3 and very similar results for the Raspberry Pi Zero W. Please note, that Zero W is very prone to the orientation. The results could be 50% worse if the board is not facing the router. Consider using an external antenna for the projects that rely on the good link connection. The board has the pads allowing you to add the standard antenna connector.
USB WIFI adapter network speed test (1m)
Only two boards are capable of WIFI out of the box so let’s take a look how all boards handle the WIFI adapter. I mentioned this before, but I will iterate again. Please disable the other interfaces if you are using the USB WIFI adapter, otherwise, your speed will suffer a lot. Also, the USB adapters have to be oriented properly for the best connection. Mine likes to point its bottom towards the router, but your adapter may have a different optimal orientation. Bear this in mind.
The results are in and they are consistent. The WIFI conditions are ideal, therefore there are no surprises here. It’s worth noting that using an USB WIFI adapter the transfer speed doubled! Raspberry Pi Zero boards have slightly lower performance, probably due to CPU and power limitations. Zero W recorded 63.4Mbits/s at lowest and 74.4Mbits/s at the highest speed. The Zero board was just as good with low 64.3Mbits/s and high 72.9Mbits/s
The Raspberry Pi 3 and 2 share the same performance with consistent speeds, min 69.7Mbits/s and, max 81.8Mbits/s and the Raspberry Pi 2 is just behind with 75Mbits/s low and 82.8Mbits/s high. A good baseline to see how the range test plays out.
Built-in WIFI network speed test (5m)
This test is the ‘common’ scenario, the device is about 5m from the router, placed on a different floor. The image should help you illustrate the testing conditions. As before, I pay attention to the device orientation to allow the best transfer speeds:
The good news is that speeds are not affected at this distance, and the signal penetration is good as well. Please remember, that your experience may vary based on the obstructions in the signal. Also, I have tested the Raspberry Pi Zero in less favorable orientation. The test speeds were 5Mbits/s slower than the speeds in the ideal conditions. Raspberry Pi Zero W min speeds were 34.6Mbits/s and max 36.7Mbits/s. The Raspberry Pi 3 speeds were min 34.6Mbits/s and max 37.2Mbits/s.
USB WIFI adapter network speed test (5m)
As before I’m testing now every board to see the differences in the transfer speeds. The adapter has been oriented in a correct way, and the orientation was constant during the test:
While overall speeds are still higher than the ones recorded on the built-in WIFI modules we can start to see differences in the speeds. It’s interesting to see that Raspberry Pi Zero W speeds were greater than Raspberry Pi 2 despite both of them using the same module. Let’s analyze the raw data. Raspberry Pi 3 transfer speeds are consistent, with 55.5Mbits/s low and 75Mbits/s high. It’s worth noting that speeds were as low as 26Mbits/s when the adapter was not positioned correctly for the test.
Raspberry Pi Zero W resulted in lower but stable speeds with results dropping to 30Mbits/s when the adapter was not aligned. Min speed was 56.6Mbits/s and max 67.6Mbits/s.
Raspberry Pi 2 has an interesting result, as this is not something I was expecting. The test speed dipped several times including once to 17Mbits/s so I have re-run the test again. Overall the min speed was 36.7Mbits/s (I’m ignoring the extreme dip in the speed) and max 71.8Mbits/s.
Raspberry Pi Zero is last in this test. Perhaps this is due to power distribution? The min speeds over 4 tests were at 25-30Mbits/s and max 51.4Mbits/s. It seems like Raspberry Pi Zero W is able to get better performance out of the same adapter.
Built-in WIFI network speed test (10m)
Let’s take things outside. The boards are powered by the Anker battery bank (13.000 mAph) with the 2A USB socket. This should remove any power bottlenecks from the test. The router is placed near the window and there is a direct line of sight with the board. The results are as follow:The distance has affected the speeds a little bit, but direct line of sight helps. The data transfer was consistent on both boards, with Raspberry Pi Zero W taking the 2nd place due to antenna size. Min speed on the Raspberry Pi Zero W was 28.8Mbits/s and max 35.1Mbits/s. The Raspberry Pi 3 min speed was 23.6/Mbits/s and max 35.7Mbits/s. The results are what you would expect, to be honest.
USB WIFI adapter network speed test (10m)
The power setup is the same as in the previous test, I’m making sure that adapter is oriented correctly and consistent across all the tests. Here are the results:
The results are more consistent and faster than our 5 m test. This shows us how obstacles and interference can influence the speed test. Suddenly the results are almost the equal across the boards. If you are planning on a project that puts your board behind a wall or something, test few spots especially if the USB adapter is used. The min speed for each board was about 60Mbits/s and max up to 70Mbits/s.
Built-in WIFI network speed test (20m)
I’m running out of the line of sight to perform a longer test if I’m honest. I believe that 20m in most cases will be enough. The boards are placed in the line of sight of the router. Here are the results:
Clearly, at longer distances, the orientation of the Raspberry Pi 3 starts to matter as well. I’m blaming this for the lower internet speed results. The speed is lowered on both boards (to be expected) Raspberry Pi 3 min speed was 22Mbits/s and max 32.5Mbits/s. Raspberry Pi Zero W has min 27.3/Mbits/s and max 35.1Mbits/s.
USB WIFI adapter internet network test (20m)
Same as before just with the USB adapter in the optimal orientation:
The speed dropped about 30% across all boards. The results are consistent. The speed is still higher than the built in WIFI. The min speed was from 27.1Mbits/s to 47Mbits/s with the Zero performing the worst. The raw data confirms the findings.
Conclusion of the Raspberry Pi network speed test
Here are 2 more charts that you would be interested in. The first shows you all available WIFI options. If you have the LAN available, and all you need is the speed here is how the boards perform:
If the WIFI is the preferred interface of your choice, take a look at the range transfer speed breakdown:
I hope this will help you choose the correct device and interface for your Raspberry Pi networking project.