Linux Troubleshooting Guide: Fix the Most Common Problems
Get Wireless Working on Linux
If you're lucky, your wireless device will work out of the box on Linux. Some devices from certain manufacturers (like Atheros) are very Linux-friendly. Unfortunately, some of these components are used in products under different brand names, so it can be difficult to know what parts any given device has in it without doing extensive research. Even if your wireless device is not one of the most Linux-friendly out there, it may be possible to get it working.
Some devices require additional firmware to work. The firmware is what makes the wireless device work at all; without it, a device is little more than a series of interconnected parts with no real guidelines that allow it to function. In the old days, firmware was usually built into a device; these days, it is more common to see software-driven firmware. One of the most notable examples of this is Broadcom, which at the time of this writing has made no real efforts to accommodate Linux users and does not seem to be interested in doing so. Broadcom devices are common in many notebook models from a variety of manufacturers. Fortunately, the B43 Project has reverse-engineered a method to extract the necessary firmware as “binary blobs” from the Windows drivers and then use this firmware to activate the wireless device in Linux.

Once the firmware is in place, the device is able to interact with any operating system that has the right drivers. The Linux kernel has built-in support for Broadcom, but this is useless without the firmware. Ubuntu features restricted drivers that contain the necessary firmware while other distro users are able to obtain the firmware themselves with the “firmware-cutter” tool. Firmware should always be placed in /lib/firmware. A reboot is often required to activate it. If you have a Broadcom card, you should try this method first.
Sometimes, the only real option is to run the Windows driver under Linux with a tool called NDISwrapper. This is essentially a kludge that implements some parts of the Windows environment just enough for Windows wireless drivers to function. It is possible to work with NDISwrapper through the command line interface or through a GTK-based frontend. Some distros that provide centralized control centers have built-in tools to use NDISwrapper. (For Ubuntu, install the “ndisgtk” package.) In any case, NDISwrapper will need the .inf file along with the actual driver for any device you want to enable. Keep in mind that NDISwrapper requires drivers that match the architecture of the host system; if the Linux host system is 64 bit, the Windows drivers you use must also be 64-bit.
Troubleshooting through Deductive Reasoning
The ability to solve a problem through deductive reasoning is a valuable skill since it can be applied to any operating system (not just Linux) in virtually any situation, provided that enough information is available to figure out the problem. This part of our guide uses the standard scientific method to diagnose and repair computer problems: formation of a hypothesis, experimentation, and observation of the end result. Our goal with this technique is to help you learn how to think both creatively and logically when it comes to solving problems, since not every problem out there has a step-by-step procedure to help you solve it.
Before you Start
There are several qualifications that you must have before being able to troubleshoot effectively, which is why we recommend this technique for more advanced users. Unless you meet these prerequisites to some extent, you are probably not going to get very far in your efforts.
First, you must have the patience and willingness to fix the problem. Although your time is better spent doing other things, it is beneficial to learn how to fix your own problems since it makes you more self-sufficient in addition to saving money. Furthermore, you can't always assume that someone will be there to help you with your computer problems in an emergency.
Next, you should have a fairly good understanding of your computer's software and hardware. Although you don't have to understand everything there is to know about how it all fits together, you should at least be able to identify hardware like graphics cards, RAM, hard drives, etc. and be familiar with the inner workings of your operating system. For Linux, you should know your way around the directory structure and the terminal in addition to the most important configuration/log files. For Windows, you should know the directory structure and have a nominal to deep understanding of device drivers and the registry.
Last, you should be willing to experiment. Many new users are afraid to enter unfamiliar territory because they think they will only end up making the situation worse. It is important that you get over that fear if you have it; any problems you are experiencing will only persist or get worse if you ignore them. If something is already broken, your repair efforts are not likely to make it worse than it already is if the proper measures (like recording any changes you make) are taken.