This Article is intended to examine and explain the different hardware-realted pitfalls that can ocur when trying to run Linux.
At the time of writing Linux Hardware support is far better than it has ever been, and development will surely continue in this
area. This article is seperated into several segments, dedicated to different types of hardware. Linux can encounter problems
running on laptops due to non-standard hardware, so these have been given a segment of their own.
Generic Tips
These are just generic tips for finding out whether a device will work, or obtaining help if it won't. Rememeber as a
rule the actual brand name and model of the item is relatively unimportant. The chipset being used is the most important element,
as it is the protocols to communicate with this chipset that is required for your hardware to work. A search on the net can often
reveal the chipset of your hardware, alternatively there are other means to find out. For PCI devices (i.e. Sound Card, PCI
Graphics cards etc.) ensure you have the pci-utils
package installed, then run (as root) lspci and look for the hardware in question.
ben@lister ~ $ su
[roots password]
lister ben # lspci
0000:00:00.0 Host bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 03)
0000:00:01.0 PCI bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 03)
0000:00:02.0 CardBus bridge: Texas Instruments PCI1450 (rev 03)
0000:00:02.1 CardBus bridge: Texas Instruments PCI1450 (rev 03)
0000:00:06.0 Multimedia audio controller: Cirrus Logic CS 4614/22/24 [CrystalClear SoundFusion Audio Accelerator] (rev 01)
0000:00:07.0 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ISA (rev 02)
0000:00:07.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01)
0000:00:07.2 USB Controller: Intel Corporation 82371AB/EB/MB PIIX4 USB (rev 01)
0000:00:07.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03)
0000:01:00.0 VGA compatible controller: Neomagic Corporation NM2360 [MagicMedia 256ZX]
0000:02:00.0 Network controller: Texas Instruments ACX 111 54Mbps Wireless Interface
lister ben #
For the Example I will assume I am trying to find out the chipset of the Network Controller (the last line) So I make
a note of the number just before the name of the device. Then
lister ben # lspci -n
0000:00:00.0 Class 0600: 8086:7190 (rev 03)
0000:00:01.0 Class 0604: 8086:7191 (rev 03)
0000:00:02.0 Class 0607: 104c:ac1b (rev 03)
0000:00:02.1 Class 0607: 104c:ac1b (rev 03)
0000:00:06.0 Class 0401: 1013:6003 (rev 01)
0000:00:07.0 Class 0680: 8086:7110 (rev 02)
0000:00:07.1 Class 0101: 8086:7111 (rev 01)
0000:00:07.2 Class 0c03: 8086:7112 (rev 01)
0000:00:07.3 Class 0680: 8086:7113 (rev 03)
0000:01:00.0 Class 0300: 10c8:0006
0000:02:00.0 Class 0280: 104c:9066
lister ben #
Now I find the relevant line, which in this case is the last line again (bizzarely they are not always in the same order for me),
the most important thing for our needs is the number in the form xxxx:xxxx so in this case my chipset ID is 104c:9066. Running a
Google search
on this reveals far more relevant information than a simple google search for Texas Instruments
ACX11.
For USB hardware, you will need
lsusb which is part of the
usbutils package. You use
lsusb in much the same way as lspci.
If a search yields no useful results, then ask a question on a forum such as
Linux Format using the details you have just acquired (Chipset ID, Make and Model of Hardware) along with the
information you would normally give (Distro you are using, what you have tried already).
An important thing to remember is that if you buy hardware as soon as it is released, it is unlikely to function with Linux,
at least for a while. Most hardware vendors do not release drivers for Linux, it is the community that creates them.
Finally where possible try and avoid 'budget' hardware, it may or may not work with linux, but generally you get what you pay
for, cheaper hardware does not last as long. It is also far harder (generally speaking) to find support for hardware made by a
budget company, as fewer people will have it.
Wireless Keyboards and Mice
As a rule, most wireless keyboards and mice will work (or at least the basic functions will), With most of these,a s far
as your computer is concerned it is just another USB wired keyboard. The wireless side of the equation is handled by the
hardware. However the GRUB boot loader has been known to experience the odd issue with wireless keyboards, although it does sound
like it is an intermittent error. As with many keyboards, the problem you may find is that your "advanced keys" (i.e. Multimedia
buttons etc.) do not work straight away. I will be writing a short tutorial on how to rectify this very soon.
Graphics Cards
The landscape in terms of Graphics card support is definitely improving very quickly. Both ATI and
NVIDIA have released
Linux drivers for their cards, the drivers are free, but not Open Source. If this bothers you then many of the various cards
available have their own dedicated Open Source Projects creating drivers for them.
Most Graphics cards are supported on Linux, however the resolution you can achieve in some cases may be lower than that in
Windows, however this works both ways. My ATI All-In-Wonder 128 achieves far better performance under Linux than under Windows.
As with all hardware try to avoid 'budget' graphics cards, it will cause you a lot more hassle if the device doesn't function
correctly under Linux, and the device may well cease to function long before a brand name graphics card would.
Searching Google for your graphics card will often help, also check the
Linux Compatibile Hardware Database. At the
time of writing the project has only been available for a short time, however it is quickly developing.
Sound Cards
Sound Cards do not generally pose too large an issue, as long as you do not purchase a 'bleeding edge' soundcard you can
be reasonably sure that it will work. Budget soundcards tend to work as well, although in my experience Budget hardware has a
much shorter lifetime. Once again to be sure, use Google (or indeed your search engine of choice) to search for information on
your Cards compatability, also check the Linux
Compatible Hardware Database.
Scanners
All the hardware covered so far is generally Linux compatible, Scanners however are much more of a grey area. To use a scanner
you will need SANE. The SANE project has a
database of supported devices,
this of course is the best place to check whether a scanner will work before you purchase it. Of course if you have a good
knowledge of programming, it is possible to write your own backend to SANE for an unsupported scanner, this however does take
about 6 months to complete. Once you have SANE installed and running you can use a variety of Front Ends and Graphics programs to
scan, I personally prefer XSane but it will even interface with the GIMP. The Documentation of SANE's homepage is essential for
getting your scanner up and running properly.
Printers
The most popular method for printing is CUPS (Common Unix Printing System) it has
great support for printers, and will even allow you to share your printer over the network. Configuration is of course printer
dependant, but as long as you do not buy 'bleeding edge' printers, the support should be there for you. Search the
CUPS Database to see if your printer exists.
Information on Printer compatability, and the various printing systems available can be found at
Linuxprinting.org. There are also some tutorials on configuring printers,
as well a a very good database of Linux Compatable printers.
Combination Scanner and Printer
This is where things get a little more complex, despite the unit being a single entity, as far as Linux is concerned you
have two pieces of hardware. Thus you need to refer to the Printer section for the Printer, and the Scanner section for the
Scanner. In other words you will need both SANE and CUPS, each 'server' will deal with the relevant section of your hardware,
compatability information can be a little harder to find for these devices, in as much as you will need to check the
compatability database of both projects. Once again the LCH Database is
also a good resource.
Digital Cameras
There are two types of Digital Cameras, those that show up as a USB mass storage device, and those that use a set
protocol
for communicating with your PC. Those that show up as a USB mass storage device will work quite happily on Linux, most of the
ones that use a different protocol will also work, but check whether it does on Linuxcompatible.org. There do seem to be very few
Digital cameras
out there that do not work with Linux, but there will probably always be a few. The number of compatible devices is not
overly suprising given some of the graphics programs available on Linux, If your Camera does not show up as a mass storage
device you will probably need a program such as
gtkam.
As ever Google is an invaluable resource if you do encounter problems.
Webcams
Webcams can be a little tricky, some work, some don't. Check Linux Compatible to find out if yours is supported. The main issue encountered with Webcams is many of them use
a compressed stream of video, and as the compression used is not documented, it is hard for people to write Linux drivers for the
chipset. It requires painstaking reverse engineering. Still many Webcams are Linux compatible nowadays, and I have seen products
with a little Tux printed on the box.
If you are thinking of buying a webcam, the Trust 120 Sp@cecam works quite well under Linux, the resolution can be a little low
but it does work well enough. There are instructions (in PDF format for now) on how to set it up
here.
MP3 Players
MP3 Players can suffer the same issues as Digital Cameras, if your MP3 Player appears as a USB mass storage device then it will
work under Linux, however if it requires the MTP (Media Transport Protocol) it may not work. However an interesting tip for these
devices is to use a program designed to capture Photos from a digital camera to transfer music to and from your MP3 Player. GTkam is apparantly good for this. Use
LinuxCompatible.org as
well as the
LCH Database to find out if yours is supported. If you own
an Ipod then you can use
Amarok to transfer Music to and
from it, as well as setting up Playlists. Unfortunately if you own a Sony NWA series (NWA-1000, 3000 etc) then your device is not
supported, you will be able to put music on it, but for some reason known only to Sony the player will not seem to detect the
music (i.e. you won't be able to listen to it).
External Hard Drives / Media Card Readers
Generally External Hard Drives (and for that matter most USB Flash memory sticks) will appear as a USB Mass storage device
(after all that is what they are) and will work
perfectly, I have never had any problems with any. Be aware however that many now come formatted with the NTFS filesystem, Linux
can read but not write this. If you intend to use the Hard drive with any computers runing Windows I would recommend formatting
it to the FAT32 filesystem, if it will only ever come into contact with non-Windows machines then use a filesystem such as ext2,
ReiserFS or similar.
Media Card Readers are all pretty well supported, however in my experience it is best to put your SD/MMC/CF card into the reader
before connecting it to the PC, otherwise the system will not always detect your card.
Bluetooth
Linux Bluetooth Support is still developing (at time of writing) however the current level of support it more than sufficient.
You will need a kernel with Bluetooth support enabled (most Distros will ship with it enabled as default), and then 90% of
bluetooth adaptors will work. As with everything else check Linuxcompatible.org and the
LCH Database.
To properly utilise Bluetooth you will of course require a bluetooth suite,
Kbluetooth is very good (especially if you are just
transferring data between your Mobile phone and your PC). It is worth noting that if you wish to send Data from your phone to the
PC you will need the
Obex Push Daemon installed and running.
Network Cards (wired/wireless)
Linux has very good support for wired network cards, if your network card is a 10/100 then you can almost be certain that Linux
will detect it correctly. Gigabit support is also very very good, very few people will find issue's there. And for the corporate
users out there (the only people I know who can afford it) Linux also supports 10Gb networking. If your network is wired you
will encounter very few problems.
Wireless however is another story, many people now have wireless networks in their homes. Linux's support for wireless network
cards can be a bit lacking at times. However most Belkin cards seem to be supported, as do adaptors based on the ZD1211 chipset
(I got a USB Wifi dongle based on this for 9.99). As ever Google is your friend, as are Linuxcompatible.org and the LCH database.
If it appears your Wireless network adaptor is not supported natively by Linux, there is another option - ndiswrapper - without
going into too much detail it emulates Window's ndis API, and allows you to use the windows drivers on Linux. Beware though it
does take some setting up. If you do decide to take the ndiswrapper route keep in mind that by using it to load the Windows
drivers you are running un-trusted code (do you trust the hardware vendor not to make any mistakes?) with superuser privileges.
There will often be a link available to a driver that is known to work with Ndiswrapper (it is of course card specific), if
available use that!
Laptops
Laptops can be a bit funny with Linux. The problem is that in order to achieve maximum performance, with minimal heat
output and weight, the manufacturers tend to take a standard chip and modify it. This of course can change the way in which it
operates, but they adapt their Windows device drivers to reflect that. This does not do you a lot of good if you have just bought
a new Laptop and want to run Linux on it however. Your first point of call should be Linuxlaptops.com followed by
linux-laptop.net. If you are buying a new laptop then try to aim for models
you know are supported, which often means going for vendors who openly support Linux. IBM is a good example, their Thinkpad
laptop series has built up quite a following, and has its own dedicated
webring for installing Linux on a Thinkpad. With careful
examination of the specifications of the laptop you wish to obtain it is easily possible to ascertain whether or not Linux will
run on it or not. Simply use the resources already listed on this page to look at the compatibility of each device one by
one.
Don't be afraid to experiment a bit, it may be that one Distro will not work on your laptop whilst others will. Every Distro has
its own strengths and weaknesses, it is just about finding the correct one for you and your system. If you are an experienced
Linux user then my personal recommendation for any Linux supported Laptop is
Gentoo but only attempt it if you don't mind getting your hands dirty with the installation.
Sadly Laptops are so varied and diverse that it is not possible to conver all aspects of them, however if you use your initiative
and play around a bit you will find that you have very few problems. Distro choice is very important, don't underestimate the
value of trying different Distros on your system.
Articles:
Articles Also Available
Getting Started with Linux Introduction Part 2 - Hardware
Getting Started With Linux
Getting Started With Linux - Installing Software