Sunday, November 4, 2018

Simple review of the Netgear Nighthawk A7000 WiFi USB adapter

Why get a USB adapter instead of PCIe?

My PC motherboard has a Broadcom 2T2R mini PCIe WiFI+BT card (BCM43xx) that supports up to 866Mbps data rate since it only has two antennas. Instead of trying to find a mini PCIe card that supports a 1300Mbps data rate, bluetooth, and some coax cables and antennas, I decided that a simpler USB WiFi adapter would be good enough.



The reason that PCIe is preferred over USB is due to the underlying hardware and how it interfaces with the CPU. USB relies on polling, so the CPU always needs to ask the USB controller/device if there is anything new to report. PCIe has the benefit of DMA (Direct Memory Access) which allows it to prepare the data without bothering the CPU and then use a hardware interrupt to tell the CPU that it is ready with something new. As you can see, the performance with interrupting the CPU when you want will be faster than waiting until the CPU asks you.

But now that we understand the underlying architectural benefits of PCIe WiFi adapters, how much of a difference does it make? Is USB good enough for me?


Choosing the Netgear Nighthawk A7000 instead of something else

After looking through different USB devices to determine which one to select, I decided on the Netgear Nighthawk A7000. Since this was going to be for my desktop, I was looking for something that was as big as possible and provided a "dock" so I could arrange the device in a good position for the best reception. In addition to supporting a 1300Mbps data rate, the next important feature I was looking for was DFS support. What DFS does is it allows certain channels in the 5GHz band to be used for WiFi that were originally federally reserved.

Wikipedia provides a table of the all 5GHz channels, including those requiring DFS.

Since I live in an apartment that has congested WiFi, using DFS channels that are not normally used will provide me with better reception and performance. 

People have experienced frequency drops when using DFS, which is the intention to prevent interfering with radar use allowed by the FCC. So keep in mind that using DFS channels may not always be the best option for you, depending on where you live.

So the only USB WiFi adapter I found that seemed to work with DFS channels was the Netgear Nighthawk A7000, so I decided to purchase it.


Performance testing

For the performance test, I used iPerf between my PC and my Synology DS916+ NAS connect via LAN to my router, a Synology RT2600ac. My router is set to use channel 100, which relies on DFS.


The properties of the adapter in Windows 10 shows the receive link speed to be 54Mbps. I found that confusing at first but, as you will see, it is wrong anyways.

On my Synology NAS, I installed the iPerf package from Jadahl's website. For my PC, I installed it via Ubuntu through WSL, although it is available for Windows.

I first set my NAS as the server by running iperf3 -s and my PC as the client by connecting to the server with iperf3 -c 10.0.0.3. Note that the client is the one who sends the data.

$ iperf3 -c 10.0.0.3
Connecting to host 10.0.0.3, port 5201
[  4] local 10.0.0.2 port 64605 connected to 10.0.0.3 port 5201
iperf3: getsockopt - Protocol not available
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  24.9 MBytes   209 Mbits/sec    0   0.00 Bytes
iperf3: getsockopt - Protocol not available
[  4]   1.00-2.00   sec  25.2 MBytes   212 Mbits/sec    0   0.00 Bytes
iperf3: getsockopt - Protocol not available
[  4]   2.00-3.00   sec  25.8 MBytes   216 Mbits/sec    0   0.00 Bytes
iperf3: getsockopt - Protocol not available
[  4]   3.00-4.00   sec  26.6 MBytes   223 Mbits/sec    0   0.00 Bytes
iperf3: getsockopt - Protocol not available
[  4]   4.00-5.00   sec  23.9 MBytes   200 Mbits/sec    0   0.00 Bytes
iperf3: getsockopt - Protocol not available
[  4]   5.00-6.00   sec  23.5 MBytes   197 Mbits/sec    0   0.00 Bytes
iperf3: getsockopt - Protocol not available
[  4]   6.00-7.00   sec  25.2 MBytes   212 Mbits/sec    0   0.00 Bytes
iperf3: getsockopt - Protocol not available
[  4]   7.00-8.00   sec  24.1 MBytes   202 Mbits/sec    0   0.00 Bytes
iperf3: getsockopt - Protocol not available
[  4]   8.00-9.00   sec  25.6 MBytes   215 Mbits/sec    0   0.00 Bytes
iperf3: getsockopt - Protocol not available
[  4]   9.00-10.00  sec  26.4 MBytes   221 Mbits/sec    0   0.00 Bytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   251 MBytes   211 Mbits/sec    0             sender
[  4]   0.00-10.00  sec   251 MBytes   211 Mbits/sec                  receiver

iperf Done.

So an average upload rate of 211Mbps is as expected for a 1300MBps WiFi connection. 

Now I will run with my PC as the iperf server in order to test the download rate.

Accepted connection from 10.0.0.3, port 50403
[  5] local 10.0.0.2 port 5201 connected to 10.0.0.3 port 50404
iperf3: getsockopt - Protocol not available
[ ID] Interval           Transfer     Bandwidth
[  5]   0.00-1.00   sec  23.8 MBytes   200 Mbits/sec
iperf3: getsockopt - Protocol not available
[  5]   1.00-2.00   sec  26.4 MBytes   222 Mbits/sec
iperf3: getsockopt - Protocol not available
[  5]   2.00-3.00   sec  26.6 MBytes   223 Mbits/sec
iperf3: getsockopt - Protocol not available
[  5]   3.00-4.00   sec  25.7 MBytes   215 Mbits/sec
iperf3: getsockopt - Protocol not available
[  5]   4.00-5.00   sec  27.3 MBytes   229 Mbits/sec
iperf3: getsockopt - Protocol not available
[  5]   5.00-6.00   sec  27.1 MBytes   227 Mbits/sec
iperf3: getsockopt - Protocol not available
[  5]   6.00-7.00   sec  24.5 MBytes   205 Mbits/sec
iperf3: getsockopt - Protocol not available
[  5]   7.00-8.00   sec  27.3 MBytes   229 Mbits/sec
iperf3: getsockopt - Protocol not available
[  5]   8.00-9.00   sec  27.1 MBytes   227 Mbits/sec
iperf3: getsockopt - Protocol not available
[  5]   9.00-10.00  sec  28.2 MBytes   237 Mbits/sec
iperf3: getsockopt - Protocol not available
[  5]  10.00-10.04  sec  1.16 MBytes   254 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  5]   0.00-10.04  sec   266 MBytes   222 Mbits/sec    2             sender
[  5]   0.00-10.04  sec   265 MBytes   221 Mbits/sec                  receiver

download rate of 221Mbps is even better than the upload.

Happy with my purchase

With an average latency of 3ms and transfer rate of 221/211Mbps to my NAS, I am very happy with the performance I receive. I am able to get faster speeds by using a 1300Mbps adapter that supports DFS. I would recommend the Netgear Nighthawk A7000 to anyone looking for a USB adapter who cannot get a PCIe adapter instead.


No comments:

Post a Comment