lørdag 17. januar 2015

WiFi hardware and FOSS drivers on contemporary wireless routers.



Dag B., January 2015.  

Prelude  
I have recently done some research on what wireless router I should get get to replace the one I have. This turned out to be a “down the rabbit hole”-experience, so I thought I should share it with whoever is in the same position. I have tried to keep this readable and accurate, without covering every angle and diving into excessive details. Links are given for further reading.

A few things to note before we begin:  
First: I made a terminology list here.
Second: this not going very high in the protocol stack. I focus on the actual WiFi-bit here. 
Third: I consider anything not supporting 3-stream 802.11ac as legacy products. I am not interested.

And finally, I acknowledge that there are many aspects of a wireless router which can be used to define 'quality'. The wifi hardware, the amplifier, the antennas, the maturity of firmware, the maturity of the device driver, throughput, range, stability, the ability to tinker with the thing. To me, the ability to tinker weighs a lot. You may prioritize differently.

Contemporary wireless routers and type designation.  
Contemporary wireless routers for the private market typically have type designations like N150, N600, N900, AC1200, AC1350, AC1600, AC1750 or AC1900. The very latest ones are designated AC2400, AC3200 and AC5200. There are likely more variants as well. Please note that routers now also appear with dual radios in the 5GHz band (MU-MIMO). Aggregate throughput goes up, but this does not necessarily imply an increase of the theoretical maximum throughput of a single individual client.

The N- prefix means that the coolest protocol it supports is 802.11n, while the AC-prefix implies support for 802.11ac. The number is the sum of the maximum transmission bitrate in the two (or three) radios in the device. This is not a throughput number a user ever will experience.  

All contemporary routers are concurrent dual band routers. That is, they have two (or three) separate radios and operate in both bands at the same time. Hence, a device with support for 300Mbps in the 2.4 GHz band (802.11n) and 1300 Mbps in the 5GHz band (802.11ac), gets a designation of AC1600. Clear so far? Good.

Harsh words  
Manufacturers of wireless routers need to distinguish their own kit from that of their competitors. Thus they invent fancy names like Beamfarming+, ClearAir, AIRadome, UltraLaser, MegaSuperDuper and sprinkle their marketing materials with that. All of that largely contains stuff that is described in the standards plus some tweak or secret sauce on top to justify inventing a new marketing term. Does it add any value? Possibly. You really need to test by yourself.  

Speaking of tests:
When all is said and done, the performance tests performed by pundits, bloggers and journalists around the world are, in my opinion, not worth a whole lot. There are 3 gazillion little things which can impact the test results of a wireless link. They don't follow a common, agreed upon, testing procedure. The test environment is not controlled and verified. Tests are performed at different times and dates, with different clients, drivers, firmware, hardware versions, with clients from competitors, on machines with various operating systems in various grades of decay. The test results from various test suites may not be properly understood, may need interpretation or does not reflect real-world scenarios. Radio wave propagation theory and the effect of electromagnetic interference may be poorly understood. 

In short: they are, by and large, not very trustworthy from the beginning. And the instant a new wifi driver/wifi-firmware/router-firmware is available, the old tests are obsolete in any case. Bam. Useless. Like Spanish Pesetas.  

All of this also applies to any future performance test I happen to publish.

Notes on current wifi hardware and drivers for home routers and open source drivers.  
A fairly up-to-date list of current wifi chipsets for 802.11ac can be found here, and yet another list is here
A list of open source wifi drivers for linux can be found here and yet another list is here.

Broadcom  
At the time of writing, Broadcom hardware is present in many routers at the higher end of the market. Typically the bcm4360 chipset these days. Sadly, the situation with regards to drivers for Broadcom is a mess. There are at least 3 or 4 different drivers for broadcom wifi hardware. There is a bucket-load of different chipsets. Some chipsets are partially supported by multiple drivers, some products are supported by no drivers at all, and the Broadcom chipsets present in many current high-end routers do not come with open source drivers at all. None of the open source drivers for Broadcom hardware enables 802.11ac, as far as I can tell. The bcm43602 may be an exception.

Googling for broadom and linux very quickly looses its appeal. I have no idea if any of the drivers are feature complete for any hardware, but that really applies across the board. (Not just Broadcom.)  

This means that tinkerers have limited options when it comes to building custom kernels for many Broadcom-equipped routers. They must largely use the exact kernel sources provided by router manufacturers and a binary driver provided by Broadcom to router manufacturers. The binary driver does not conform to acknowledged interfaces in the linux kernel, so enabling options in the kernel other than the ones Broadcom found interesting may be hit or miss.

Broadcom hardware generally supports both explicit and implicit beamforming.  

A special note on Broadcom: their 600 Mbps transmission rate in the 2.4GHz band uses a non-standard MCS, and is compatible only with client hardware from Broadcom. Client hardware from Broadcom is very common, but for other clients there is no difference in throughput if the router is designated AC1750 or AC1900. 

Modulo other improvements or features of the AC1900 routers, of course.  

Qualcomm/Atheros  
Atheros, now a subsidiary of Qualcomm, also pushes wifi solutions for router manufacturers. They have long been a supporter of linux and open source. The open source drivers are developed in the open, and updated firmware appears regularly. Current home routers with Atheros almost all(?) use the qca9880 rev.2 chipset (3x3:3) and the ath10k driver. Beamforming is not supported. 

The next generation chipset is named qca9990. Driver situation is unknown. Note that the first revision of qca9880 is not supported by ath10k.  

A list of devices with the 9880 can be generated from the rather excellent site wikidevi.com. Check this, and scroll down a little bit. 

Marvell
The Marvell 88W8864 is a 4x4:3 802.11ac solution for routers. It supports beamforming. A first cut of an open source linux kernel driver was revealed at the end of 2014. It may take some time to stabilize and end up in the upstream kernel. One may hope there are sufficient resources allocated to the task. 

Wikidevi list of devices with this chipset. 

Quantenna  
At time of writing, the only vendor with a 4-stream capable chipset shipping in an end-user product. Open source drivers appears to be MIA. They have multiple chipsets. See this link, and look in the ESystems column to see available products.


As far as I can tell, these are the 4 companies with actual shipping products, used in actual routers supporting 802.11ac with 3 or more streams.  


What router to get?   
If you have no plan whatsoever to fiddle with the original software of the router, it does not really matter. One may assume, that the router manufacturer ships something that works. Or will provide software that eventually fixes the most annoying bugs. Those of us who have been burned by a-ok hardware with absolutely crap software which the product manufacturer quickly abandoned, will think again. 

A mature open source driver, developed in the open, in cooperation with those in charge of the linux kernel, makes for a much higher likelyhood of something that can be tinkered with.

With those requirements, there appears to be no alternative to Qualcomm/Atheros-equipped hardware at this moment in time. Marvell may end up as a worthy competitor, but only time will tell. Some of the very latest routers in the segment are equipped with Broadcom bcm43062 wifi hardware, which supposedly is supported in the vanilla linux kernel. (3.19+.) I do not know if that driver makes for a useable access point mode, or if a closed source alternate driver is required for this. 

This blogpost may provoke someone to enlighten me. I am getting a qca9880-based router in a day or two. Will see if I can make a writeup on that too. Eventually. 

Hopefully, the driver isn't all crap. And remember to take any performance number I quote with a bucketload of salt.
 

Ingen kommentarer:

Legg inn en kommentar