Table of Contents
Tutorial: Is My Wireless Card Compatible?
Version: 1.08 September 25, 2009
A common question that people ask is “I have model ABC wireless card, is it compatible with Aircrack-ng?” or “What card should I buy?” or “Can my card do injection?” and so on. This tutorial address these questions.
First off, answering these questions involves some work on your part. It is not as easy as posting the question on the Forum and waiting for an answer. If you do not do your homework first, no help will be provided. On the other hand, if you in fact do your homework properly, people will make every effort to help you.
If you are planning to purchase a card then the easiest method is to pick a card from the list of supported cards. If you are considering purchasing a particular then you can use this tutorial to determine if it will work with aircrack-ng.
Another point I want to make is that there are many, many compatible cards out there that are not listed in the supported cards section. Please, please take the time to post to the Forum when you are successful with a particular card. This is the only way we can expand the list of supported cards. When you post, please provide the manufacturer, model, card revision if applicable, chipset and what drivers you used.
Now, on to the matter at hand. Here are the steps we will be following:
- Determine your requirements and constraints
- Learn the basics of a wireless card
- Determine the chipset
- Verify the chipset capabilities
- Determine the drivers and patches required
- Select a card
Determine your requirements and constraints
First decide if you simply want to listen to wireless network traffic or to both listen to and inject packets. It is important to realize that at this point in time, Windows can only be used for listening to network traffic. Windows cannot inject data packets. This is a fundamental limitation. As well, there are far fewer cards compatible with Windows.
Depending on the card/chipset, Linux gives you the ability to both listen to and inject packets.
So at this point you need to have decided:
- Which operating system you plan to use
- Your preferred hardware format (PCI, PCMCIA, USB, etc.)
- Which features you require (listening, injection)
These will be constraints later on in this tutorial.
Learn the basics of a wireless card
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 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. 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 support, software drivers you need and what limitations are associated with them.
It is very important to realize that the difference between the two manufacturers. Just knowing the card manufacturer and model does not allow you to proceed. What you really need to know is the chipset. The next step provides information about how to determine the chipset in your card or the card you are planning to purchase.
Determine the chipset
Ok, this is the really hard part. I will tell you up front that you need to do your research well in this step to be successful. On the other hand, if you are lucky, your card is already listed in the supported card section and this gives you all the information required.
If this is not the case, then you first need to determine what wireless chipset your card uses. This can be done by one or more of these techniques:
- Search the internet for “<your card model> chipset” or “<your card model> linux”. Quite often you can find references to what chipset your card uses and/or other people's experiences. This is by far the easiest and most successful way of determining the chipset. Be sure to check a number of search entries to ensure they are consistent.
- Search the Forum
- You may also have a look at windows driver file names, it's often the name of the chipset or the driver to use.
- Check the card manufacturers page. Sometimes they say what chipset they use.
- On some cards such as PCI, you can physically see the wireless chip. Look for the brand such as Atheros, Texas Instruments, etc. The chipset number can also quite often be observed.
- All wireless devices sold in the United States must be Federal Communications Commission (FCC) approved. These same devices are typically sold around the world. Each device must have a FCC identification number (ID) on the board itself. If you have this ID then you can use the FCC ID Search to lookup detailed information on the device. It will give you the manufacturer, model and usually the chipset.
Here are some other resources to assist you in determine what chipset you have:
- WikiDevi the best resource
- Wireless Adapter Chipset Directory a good resource for this kind of information
- Atheros chipsets based wireless 802.11a/b/g devices only Atheros-based cards
Card manufacturers add to the confusion by keeping the same card model number yet changing the chipset inside them. This is where you will hear the term “card revision” or “card version”. D-Link seems to do this a lot. So first determine if this applies to your card. The version is typically found stamped on the card and located near the serial number or MAC address. See this TP-Link page for an example of the same card with different revisions.
So when you are determining the chipset for your card, make sure to include the revision/version when doing a search. For example, search for “DWL-G650 C1 chipset” and not just “DWL-G650”. The revision/version is extremely important.
If you are running linux, there are a variety of methods to obtain card information and possibly determine the chipset. Here are some methods:
- The “dmesg” command can quite often contain detailed messages indicating what card was detected and the chipset.
- If the card is an ISA card, you are usually out of luck.
- If the card is a PCI card, you need to use the command “lspci -nn” to display the card identification strings. In some cases, such as on cards with Broadcom chipsets, this alone can reveal the chipset. The “-nn” should cause the PCI ID to be displayed. An example of what a PCI ID looks like is “168c:0013” for an Atheros chipset card. Once you have the PCI ID, there are many Internet sites to do lookups. The PCI IDs websites is one of them. You can find other lookup sites by search for “PCI ID”. As well, the kernel modules required and in use are displayed. This can be very helpful in identifying the chipset.
- If the hardware is a USB dongle, you need to use the command “lsusb” to display the dongle identification strings. In some case, “lsusb” doesn't work (for example if usbfs is not mounted), and you can get the identification strings from the kernel log using “dmesg” (or in /var/log/messages).
- If the card is a Cardbus card (32 bits Pcmcia), and if you are using a relatively new kernel (2.4.X or above) with the kernel Pcmcia subsystem, you need to use the command “lspci -nn” to display the card identification strings. If the card is a Cardbus card (32 bits Pcmcia), and if you are using an older kernel with the standalone Pcmcia subsystem, you need to use the command “cardctl ident” display the card identification strings. Try both and see what comes out.
- If the card is a true Pcmcia card (16 bits), and if you are using kernel 2.6.14 or later, you need to use the command “pccardctl ident” to display the card identification strings. If the card is a true Pcmcia card (16 bits), and if you are using an older kernel, you need to use the command “cardctl ident” display the card identification strings. Note that cardmgr will also write some identification strings in the message logs (/var/log/daemon.log) that may be different from the real card identification strings.
- The “lsmod” command can be used to see the loaded modules. If the wireless card was auto-detected then you can sometimes work backwards based on the loaded modules to determine the chipset.
Even if you are running Windows, you can boot from a live distro and use the linux techniques above.
In a Windows environment, try hardware analysis tools such HWiNFO to obtain the chipset information.
If you are unable to determine which chipset your card has, then you are out of luck. Your options are to purchase a card from the compatible list or to research and identify a card which matches your criteria then purchase it.
Once you know the chipset, then proceed to the next step.
Verify the chipset capabilities
Using the Compatibly Section determine what features the chipset provides for the particular operating system that you will be using.
If this matches your requirements, great. If not, the consider using another operating system or using a different card.
If your prime operating system is Windows, and you like the linux features, consider using a live linux distro. This way you have the best of both worlds.
Proceed to the next step of determining the drivers and patches required.
Determine the drivers and patches required
Using the Drivers Section you can now determine the drivers required for your chipset and your operating system. The web site has links to the software required.
For linux, generally, you need to patch the wireless stack and driver in order to get the advanced features such as monitor mode and injection capability. Documentation on what patches to apply can be found on this page. This tutorial will not be providing detailed instructions on how to patch your system.
Select a card
Conversely, if you know what chipset provides the features you want, you can use the Compatible card list to find a card that uses that particular chipset.
As well, this tutorial will have given you the knowledge to determine if a particular card you are considering purchasing will provide you the features you want.