Determine the chipset

There are two manufacturers involved with wireless cards. The first is the brand of the card itself. Examples of card manufacturers are Netgear, Ubiquiti , Linksys, Intel and D-Link. There are many, many manufacturers beyond the examples give here.

The second manufacturer is who makes the wireless chipset within the card. For example, Ralink, Atheros, Qualcomm. This is the most important company to know. Unfortunately, it is sometimes the hardest to determine. This is because card manufacturers generally don't want to reveal what they use inside their card. However, for our purposes, it is critical to know the wireless chipset manufacturer. Knowing the wireless chipset manufacturer allows you to determine which operating systems are supported, software drivers you need and what limitations are associated with them. The next section describes the operating systems supported and limitations by chipset.

You first need to determine what wireless chipset your card uses. This can be done by one or more of these techniques:

Determine the driver

Once you have determined the chipset, chances are you already have identified the driver on Linux. If not, match the chipset against the “other resources” above to figure out the driver.

On Linux, there can be multiple drivers:
- Vendor driver: those do not and will not support monitor mode
- Peer-modified vendor driver: In some cases, they may support monitor mode but there could be caveats
- Staging driver: Standalone driver has been added to the Linux Staging tree. However, quality of the driver is unknown and needs more work to be included in the kernel
- Kernel/mac80211 driver: In this case, chances are, monitor mode is supported. Injection may or may not be supported

If you are deciding on which card to purchase, check the “What is the best wireless card to buy?” section on this page. There are many considerations that should go into your purchase decision:

Hardware compatibility with your existing equipment.

Price and availability of the card.

Availability of software drivers for your particular operating system and intended use of the software.

How active is development for the software drivers you need.

How much peer support and documentation is available for the card and software drivers.

It is not an easy decision to make. By considering these factors, it will help you make a more informed decision on what to purchase.

Example: Alfa AWUS036AC

The box on the right contain all the information needed to identify the chipset manufacturer and model. In this case, RTL8812AU.

It also lists the IDs (0bda:8812) which is what would be returned on Linux with the lsusb command, right next to ID.

If it were on Windows, even if the drivers were not installed, looking in the device manager, that ID would be found in Details pane of the device itself, in the property “Hardware IDs”. This is also displayed in WikiDevi: USB\VID_0BDA&PID_8812 (this is the same as the IDs on Linux, they're just uppercase and they contain some text around: USB device, VID stands for Vendor ID, PID stands for product ID).

Searching for that ID in WikiDevi or any search engine would also help finding the chipset and driver required. Multiple pages would be returned because multiple adapters share the same USB ID.

The exact same principles apply to internal devices, the only difference is they will be found under lspci.

Another way to find the chipset/driver, after exhausting the options above, if you don't have the device itself is to download the driver. It is very useful when searching for laptops that are too new to be in any search engine results.

In this case, the Windows driver of the AWUS036AC. It doesn't really matter which version of Windows, the important information are some filenames (and content).

Sometimes the name of the files (.cat, .inf and .sys) can indicate the chipset codename. Most of the time, they don't and the .inf file needs to be opened in a text editor (supporting UTF-16). Scroll down and there will be lists of IDs that are supported by that driver. In this example, the driver supports both PCI and USB Realtek devices, so, it will help narrow down what compatibility you have to look for on Linux.

If the driver is packed in an executable (.msi or .exe), unpacking will be required. Sometimes multiple times, such as when it is bundled with a WiFi manager. UniExtract (Universal Extractor) is one of the tools to do so.