Benscomputer.no-ip.org
Benscomputer.no-ip.org
Home Projects About me Tutorials



Getting Started With Linux Introduction - Part 2 - Hardware


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