If you've been grappling with Linux hardware problems, take heart: Jack Wallen has some strategies for resolving common issues — or avoiding them in the first place.
Sometimes, you just have to accept the fact that a piece of hardware won't work on Linux. But if you approach things the right way — and you have some good troubleshooting techniques — you can often sidestep problems and get your hardware working.
Note: This article is also available as a PDF download.
1: Don't use very old or cutting-edge hardware
It should be obvious why very old hardware is to be avoided. First, it is going to be on its last legs. Second, the newer distributions are less and less likely to contain legacy support for a piece of hardware that hasn't been sold for five years. But cutting-edge hardware should also be avoided because its drivers will be iffy at best. Although it's tempting to want that latest-greatest piece of hardware, many times you will only wind up frustrated because your distribution of choice has yet to catch up with the manufacturers. This is becoming less an issue (as more companies hop on the Linux bandwagon), but it's still a concern. I tend to avoid anything released within the last six months of the most recent release of my distro of choice. This system doesn't always work — but with the exception of the Wacom Bamboo Pen tablet, so far so good.
2: Verify support
Before you buy, check whether the product supports either Linux or Mac. If it supports Mac, chances are it supports Linux. This is especially true for printers. Of course, this is not always the case. But if the hardware states that it supports Linux, it's a sure thing. Before purchasing hardware, I like to find out what the company's reputation is with Linux. NVidia is always a good choice because it makes drivers for the Linux operating system to run its hardware. This is also true for Lexmark printers. (You will always see Tux on those boxes.)
3: Use proprietary drivers
I know this one burns the bulk of open source fans out there, but sometimes the proprietary drivers just work better. NVidia is a great example of this. Yes, there are the Nouveau drivers for NVidia cards, but those drivers are still suffering from a lack of maturity. Give them time and they will probably stand up to the NVidia proprietary drivers. But even though it might really burn you up to use a proprietary driver, if you need your hardware to work as well as it can, you might have to swallow your pride and use it.
4: Know your log files
There are tons of log files to comb through on a Linux box. But not all of them will help you out with hardware. The log files you need to know are all in /var/log:
- Xorg.0.log — For any X Windows issues
- cups/error_log — For printing issues
- messages — For any hotplugging issues and any issues that involve the kernel, such as non-authentication-based networking issues
- syslog — Sort of a catch-all log file; if you can't find it in the other log files, you might find it in syslog.
5: Don't use a cutting-edge distribution
It is tempting to live on the cutting edge with your distribution. The problem is the Fedoras and the OpenSuSEs tend to break support for hardware, even if for a short period. This can get frustrating when you do an update only to have it bring X Windows to a screeching halt. Instead, if you like your hardware support to be steady, go with a distribution that offers something like the Ubuntu LTS (Long Term Support). That way, you know the distribution will work with your hardware for the long haul.
6: Don't draw a conclusion from a Live CD
I have had this happen to me. You have your new machine and you slap in a Live CD only to find out that one piece of hardware doesn't work. Instead of scrapping that distro, go ahead and install it. In some cases, the full installation will offer much more hardware support than the Live version. This is especially true when proprietary drivers are needed. I recently booted up Ubuntu 10.04 on an Asus laptop that had no wireless support. I plugged that laptop into my wired network, installed the OS, and let the hardware detection discover that a proprietary driver was necessary for wireless to function. Once that was installed, wireless worked perfectly.
7: With wireless, try an open network
There have been instances where I assumed a wireless card wouldn't work, even though it was detected by the OS. No matter how many times I tried to connect to a network, it simply wouldn't work. If I see this happening, one of the first things I will do (if I have access) is temporarily drop the security on the wireless access point and see if the machine can then connect. If so, the issue could be encryption. For that, sometimes a different wireless manager will work. Try WICD and see whether it can help you connect to your re-encrypted access point.
8: Wipe out the xorg.conf file
If you're using a new distribution (especially Ubuntu >= 9.04), the whole of X Windows has been changed. Instead of heavily relying on the xorg.conf to configure video, a new system is in place that doesn't require a preconfigured configuration file. If something happens to X, and the only way you can log in is with terminal, make a backup of that xorg.conf file and then delete the original. Once you have done that, restart X (or reboot the machine), and X should come back. If it doesn't, your video driver is most likely suffering from a bit of a breakdown.
9: Learn the commands
Lots of command-line tools are available to help troubleshoot issues. For instance, the xinput command helps troubleshoot problems with input devices. If you issue the command xinput list, you will get a list of all input devices seen by your kernel. Sometimes, a piece of hardware will have its own tools. Take, for example, the Wacom tablets. When you install the drivers for these pieces of hardware, you will often install troubleshooting tools like wacdump. If you use NVidia proprietary drivers, you can take advantage of the nvidia-config tool (which has an outstanding GUI). It can help you configure advanced features for your video hardware.
10: Try the hardware on a different machine
After much frustration and work, you sometimes need to be 100 percent sure that the issue isn't faulty hardware. This was the case in my struggle to get a Wacom Bamboo Pen to work with any Linux distribution. At one point, I had to give the hardware a try on my wife's Mac. It worked fine, so I knew for sure the issue was with Linux. Had the tablet not worked on the Mac, I would have known the hardware to be bad and given up. In this situation, however, the hardware was good and my struggle continued.
Most of the time, you can alleviate hardware issues with an update or upgrade. But not every time. And of course, there are many more methods for troubleshooting hardware in Linux. What is your method for doing so?