Linux Hardware Compatibility HOWTO

This document attempts to list most of the hardware known to be
either supported or unsupported under Linux.

Copyright

This HOWTO is free documentation; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free software Foundation; either version 2 of the
license, or (at your option) any later version.

1. Introduction

This document lists most of the hardware components (not whole
computers) known to be supported or not supported under Linux, so
reading through this document you can choose the components for your
own Linux computer and know what to avoid. As the list of components
supported by Linux changes constantly, this document will never be
complete. If a component is not mentioned in this HOWTO, I simply
have not found support for the component and nobody has told me about
support.

Subsections titled 'Alpha, Beta drivers' list hardware with alpha or
beta drivers in varying degrees of usability. Note that some drivers
only exist in alpha kernels, so if you see something listed as
supported but isn't in your version of the Linux kernel, upgrade.

1.1. Notes on binary-only drivers

Some devices are supported by binary-only modules; avoid these when
you can. Binary-only modules are modules which are compiled for ONE
kernel version. The source code for these modules has NOT been
released. This may prevent you from upgrading or maintaining your
system. It will also prevent you from using the component on
alternate (usually non-x86) architectures.

Linus Torvalds says "I allow binary-only modules, but I want
people to know that they are _only_ ever expected to
work on the one version of the kernel that they were compiled
for." (See
http://lwn.net/1999/0211/a/lt-binary.html
for the rest of the message.)

1.2. Notes on proprietary drivers

Various proprietary drivers for sound, video, etc. exist for Linux.
Tracking these proprietary drivers is beyond the scope of this
document. These drivers might be mentioned at various points in
this document, but note that no effort has been made to make sure
that this information is current.

1.3. System architectures

This document primarily deals with Linux for x86-based platforms.
For other platforms, check the following:

1.4. Related sources of information

1.5. Known problems with this document

This document can't possibly be up-to-date at all times. I would
like to see this document be a useful reference again. The
following items need to be fixed for that to happen:

Old cruft needs to be eliminated. Much of this document was
written in 1995, give or take, when PCI was new and not
supported terribly well, and ISA PnP was seen as something
evil. Oh, how the times have changed...

Also, many of the model numbers listed in this document are
no longer available, and are probably not of much interest to
the vast majority of people. Personally, I think hardware
that hasn't been available for more than 5 years or so can
safely be removed. Old versions of this document will always
be available on the Internet...

URLs in this document need updating. I've begun to do that,
but it is a big job... Diffs are welcome.

In the process of updating and converting this document to
DocBook, some cruft was introduced. If anyone wants to help
clean up this, get the latest source (preferably by emailing
me at <steve@silug.org>) and grep for "FIXME".

Lists in this HOWTO that are available in other HOWTOs or
FAQs need to be either updated here or dropped completely
from this document.

Newer interfaces such as USB need to be added into the list.
(Would a USB-attached hard drive go under "USB", "Removable
drives", "Hard drives", or all of the above?)

And, of course, random hardware that just isn't listed in
this document needs to be added.

All of this is going to require a lot of work. If this happens to
interest you, please email <steve@silug.org>. I can
use the help. :-)

1.6. New versions of this document

1.7. Feedback and corrections

If you have questions or comments about this document, please feel
free to email Steven Pritchard at <steve@silug.org>.
I also welcome corrections and additions. At some point in the
near future, I plan to set up a web interface for adding components
to this document. In the mean time, please just use the word
"hardware" somewhere in the subject when sending corrections or
additions.

1.8. Acknowledgments

This document has passed through many hands. I don't know if he
wrote the first version, but in 1993 Ed Carp was maintaining it.
In August of 1994, FRiC (Boy of Destiny) took over. After he fell
off the face of the planet in late 1995 or early 1996 (and we all
miss him from IRC, I might add), Patrick Reijnen took over
(sometime in 1997) and continued to maintain this document until
late 1999.

Recent versions of this document contained the following:

Thanks to all the authors and contributors of other HOWTO's,
many things here are shamelessly stolen from their works; to
FRiC, Zane Healy and Ed Carp, the original authors of this
HOWTO; and to everyone else who sent in updates and feedbacks.
Special thanks to Eric Boerner and lilo (the person, not the
program) for the sanity checks. And thanks to Dan Quinlan for
the original SGML conversion.

Many thanks to all those who have contributed to this document over
the years.

Replaced "commercial" with "proprietary" in most cases. (I
should probably go one more step and make that "proprietary,
closed-source" or something similar. Comments and
suggestions are appreciated.)
Added placeholder IEEE 1394
section.
Updated various other sections.
Thanks to Rick Moen for prompting this revision with various
updates and suggestions.

Revision 3.2.0

2002-08-13

Revised by: sjp

Removed a lot of cruft.
Added information direct from pcmcia-cs.sourceforge.net on
supported PCMCIA cards.
Added a section on DVD drives.
Thanks to Tom Hanlin for pointing out that there was no mention
of them before.
Replaced all references to metalab with ibiblio, and all
references to linuxdoc.org with tldp.org.
Probably other changes I'm forgetting, which should teach me
not to wait so long between releases.

Revision 3.1.5

2002-03-28

Revised by: sjp

Moved revision history to
Introduction section.
More dead link fixes and other corrections. Thanks to Lin
Hung-Ta, Silviu Tamasdan, and various others.

Update location for GS-4500 software in the
scanners section. (Thanks to
Jan Willamowius for pointing out that the page had moved.)
Begin updating RAID controller section by separating SCSI RAID
and IDE RAID.

Early models apparently had bugs. Be sure you have
a recent BIOS and a recent 2.2.x or 2.4.x kernel.

The following are old notes and are probably out of date.

IBM PS/2 MCA systems

Supported since kernel version 2.0.7, but only for the stable
kernel releases. For information you can look at the
Micro Channel Linux Home Page.
Software for MCA systems can
be found here. Information on the MCA SCSI
subsystem can be found
here.

EFA E5TX-AT motherboard has a solvable problem with RedHat
Linux 5.0 and possibly other versions of Linux. It
spontaneously reboots while probing hardware. To solve,
update BIOS to version 1.01. Get the BIOS update
here.

The Zida 6MLX motherboard with PII Intel LX chipset is
mentioned only to work with Linux when the PII cache is
disabled in BIOS. BIOS upgrade does not solve the problem.
Symptom is random reboots during or shortly after system boot.

2.2. Unsupported

Supermicro P5MMA with BIOS versions 1.36, 1.37 and 1.4. Linux
will not boot on this motherboard. A new (beta) release of
the BIOS which makes Linux boot, is available
here.

Supermicro P5MMA98. Linux will not boot on this motherboard.
A new (beta) release of the BIOS which makes Linux boot, is
available here.

3. Laptops

In general, any laptop will support Linux fine. Some specific
features (wireless and video especially) may have issues, but these
should not interfere with basic functionality.

Currently, laptops with the
Intel®
Centrino™ logo are the most likely to work perfectly under
Linux. The Intel PRO/Wireless
2100 and
2200 802.11b/g
wireless cards are supported by drivers released by Intel that are being
integrated into the stock Linux kernel. Accelerated 3D support for
the on-board video is provided by the
DRI project and
is included in recent releases of
X.org and
XFree86.

For more information about Linux and laptops, the following sites are
good starting points.

4.2. AMD

AMD 386SX/DX, 486SX/DX/DX2/DX4, K5, K6, K6-2, K6-3, and Athlon (all
varieties, including MP) are all supported. Older versions of K6
should be avoided as they are buggy. Setting "internal cache"
disabled in bios setup can be a workaround. Some early K6-2 300Mhz
have problems with the system chips.

AMD's 64-bit Opteron and Athlon64 processors, as well as the mobile
Athlon64 (or Turion64), are also supported, running either in
32-bit or 64-bit mode. For 32-bit mode, compile a kernel for i386,
optionally optimized for Athlons, since that's essentially what
these processors look like in 32-bit mode. For 64-bit mode,
compile a kernel for
x86_64. It will still
run 32-bit binaries, assuming all the appropriate libraries are
available. Opteron and Athlon64 systems use standard PC hardware,
so the information in this HOWTO still applies.

The old NexGen processors are also supported.

A few very early AMD 486DX's may hang in some special situations. All
current chips should be okay and getting a chip swap for old CPU's
should not be a problem.

4.4. IDT

4.5. Transmeta

4.6. Misc. notes

Linux has built-in FPU emulation if you don't have a math coprocessor.

Linux supports SMP (multiple CPUs) in all 2.x kernels. See the
Linux SMP
HOWTO for more information.

ULSI Math*Co series has a bug in the FSAVE and FRSTOR instructions that
causes problems with all protected mode operating systems. Some older
IIT and Cyrix chips may also have this problem.

There are problems with TLB flushing in UMC U5S chips in very old
kernels. (1.1.x)

5. Memory

All memory like DRAM, EDO and SDRAM can be used with Linux. Be aware
that older kernels or kernels running on a mortherboard with an older
BIOS may only be able to detect 64MB of RAM. If you have this
problem, when you add more than 64 Mb of memory you have to add the
following line to your LILO configuration file:

append="mem=<number of Mb>M"

So when you have 96 MB of memory this should become

append="mem=96M"

Don't use a number higher than the amount of RAM you really have.
This will cause crashes.

6. Video cards

Please note that this section is currently being
updated, so some information may not be entirely correct or
complete.

Linux will work with all video cards in text mode, VGA cards not listed
below probably will still work with mono VGA and/or standard VGA drivers.

If you're looking into buying a cheap video card to run X, keep in mind
that accelerated cards (ATI Mach, ET4000/W32p, S3) are MUCH faster than
unaccelerated or partially accelerated (Cirrus, WD) cards.

"32 bpp" is actually 24 bit color aligned on 32 bit boundaries. It
does NOT mean the cards are capable of 32 bit color, they still
display 24 bit color (16,777,216 colors). 24 bit packed pixels modes
are not supported in XFree86, so cards that can do 24 bit modes to
get higher resolutions in other OS's are not able to do this in X
using XFree86. These cards include Mach32, Cirrus 542x, S3
801/805/868/968, ET4000, and others.

AGP (Accelerated Graphics Port) support is growing fast. Most of the
X-servers (both freely available and proprietary versions) have more
or less support for AGP.

6.1. XFree86

The following is a list of cards known to work with XFree86
versions 3.3.6 and/or 4.1.0. See the XFree86 web site for
more information.

6.2. Kernel Framebuffer (fbdev)

The kernel supports a graphical console on some video cards. This
support was originally designed for non-x86 architectures which
generally do not have text-capable video cards. It was integrated
into the kernel in 2.2, and now supports various video cards.

7.1. Alpha, Beta drivers

8. Controllers (SCSI)

It is important to pick a SCSI controller carefully. Many cheap ISA
SCSI controllers are designed to drive CD-ROM's rather than anything
else. Such low-end SCSI controllers are no better than IDE. See the
SCSI HOWTO and look at performance figures before buying a SCSI card.

ICP-Vortex PCI-SCSI Disk Array Controllers (many RAID
levels supported) Patches for Linux 1.2.13 and 2.0.29
are available
here. The controllers GDT6111RP,
GDT6121RP, GDT6117RP,
GDT6127RP, GDT6511RP, GDT6521RP, GDT6517RP, GDT6527RP,
GDT6537RP and GDT6557RP are supported. You can also use
pre-patch-2.0.31-4 to pre-patch-2.0.31-9.

ICP-Vortex EISA-SCSI Controllers (many RAID levels
supported) Patches for Linux 1.2.13 and 2.0.29 are
available
here. The controllers GDT3000B,
GDT3000A, GDT3010A, GDT3020A
and GDT3050A are supported. You can also use
pre-patch-2.0.31-4 to pre-patch-2.0.31-9.

10. IDE RAID Controllers

Support for ATA, IDE, E-IDE and UDMA drive. Controllers
available can be plugged into ISA and PCI slots, and directly
into the IDE controller. Furthermore, 3.5-inch and 5.25-inch
Bay Mount units are available that fit into the respective
drive bays. More information at
Arco's web site.
Make sure you have at least rev 3.00 of the firmware.

3ware Escalade IDE RAID controllers

3ware's 5000-series and 6000-series controllers have been
supported since kernel 2.2.15. Support for the 7000-series
controllers and RAID5 on the 6000-series controllers requires
kernel 2.4.5 or 2.2.20 or better. Also make sure to use a
recent firmware for RAID 5, since older firmware revisions
(and older versions of the driver) can cause data
corruption when a RAID 5 array runs degraded. 8000-series
SATA cards also work fine with recent 2.4.x or 2.6.x kernels.
9000-series cards are supported with the 3w-9xxx driver
(instead of the older 3w-xxxx driver).

Adaptec ATA RAID 2400A

4-port ATA/100 controller which supports RAID 0, RAID 1, RAID
1+0, and RAID 5. Use the dpt_i2o driver, which is
included in recent 2.4.x kernels.

Promise SuperTRAK SX6000

6-port ATA/100 controller which supports RAID 0, RAID 1,
RAID 1+0, RAID 3, and RAID 5. Use the pti_st driver or
the generic i2o drivers. Be sure to set the BIOS on the
card for "Other OS" instead of "Linux", and check for
firmware updates.

11. Controllers (I/O)

See National Semiconductor's ``Application Note AN-493'' by
Martin S. Michael. Section 5.0 describes in detail the
differences between the NS16550 and NS16550A. Briefly, the
NS16550 had bugs in the FIFO circuits, but the NS16550A (and
later) chips fixed those. However, there were very few NS16550's
produced by National, long ago, so these should be very rare.
And many of the ``16550'' parts in actual modern boards are from
the many manufacturers of compatible parts, which may not use
the National ``A'' suffix. Also, some multiport boards will use
16552 or 16554 or various other multiport or multifunction chips
from National or other suppliers (generally in a dense package
soldered to the board, not a 40 pin DIP). Mostly, don't worry
about it unless you encounter a very old 40 pin DIP National
``NS16550'' (no A) chip loose or in an old board, in which case
treat it as a 16450 (no FIFO) rather than a 16550A. - Zhahai
Stewart < zstewart@hisys.com>

12. Controllers (multiport)

12.1. Non-intelligent cards

12.1.1. Supported

AST FourPort and clones (4 port)

Accent Async-4 (4 port)

Arnet Multiport-8 (8 port)

Bell Technologies HUB6 (6 port)

Boca BB-1004, 1008 (4, 8 port) - no DTR, DSR, and CD

Boca BB-2016 (16 port)

Boca IO/AT66 (6 port)

Boca IO 2by4 (4 serial / 2 parallel, uses 5 IRQ's)

Computone ValuePort (4, 6, 8 port) (AST FourPort compatible)

DigiBoard PC/X, PC/Xem, PCI/Xem, EISA/Xem, PCI/Xr
(4, 8, 16 port)

Comtrol Hostess 550 (4, 8 port)

PC-COMM 4-port (4 port)

SIIG I/O Expander 4S (4 port, uses 4 IRQ's)

STB 4-COM (4 port)

Twincom ACI/550

Usenet Serial Board II (4 port)

Non-intelligent cards usually come in two varieties, one
using standard com port addresses and use 4 IRQ's, and
another that's AST FourPort compatible and uses a selectable
block of addresses and a single IRQ. (Addresses and IRQ's
are set using setserial.)
If you're getting one of these cards, be sure to check
which standard it conforms to, prices are no indication.

13. Network adapters

13.1. Supported

13.1.1. Ethernet

Ethernet adapters vary greatly in performance. In general the
newer the design the better. Some very old cards like the 3Com
3c501 are only useful because they can be found in junk heaps
for $5 a time. Be careful with clones, not all are good clones
and bad clones often cause erratic lockups under Linux. Read the
Ethernet HOWTO for detailed descriptions of various cards.

OSS supports all MIDI daughter cards including Wave
Blaster, TB Rio and Yamaha DB50XG. The only requirement is that
the "host" card is supported by OSS. Note that only the "host"
card needs to be configured using soundconf. The daughter card
will be automatically accessible through the MIDI of the "host"
card.

14.2. Alpha, Beta drivers

4Front Tech. Waveloop loopback audio device

Acer FX-3D (AD1816 based)

AVM Apex Pro card (AD1816 based)

Aztech AZT1008, AZT2320, AZT3000

Aztech SC-16 3D (AD1816 based)

Creative Sound Blaster Vibra16x

Creative Sound Blaster Live! and Live! Value Edition
Creative Labs has beta driver for this card. They work
with kernels 2.0.36 and 2.2.5 (and most probably newer
kernels in these series). The drivers can be downloaded
under the software download area at
Creative's web site.

For the AD1816 sound chip based sound cards isapnptools is
needed for configuration.

14.3. Unsupported

Please note that this section has not been updated
recently. It is most likely incorrect.

A-Trend Harmony 3DS724 (PCI)

Actech PCI 388-A3D q

Adaptec AME-1570

Aureal Vortex (PCI)

Cardinal DSP 16

Contributed lowlevel drivers

Crystal CS4614 (PCI)

Cyrix MediaGX builtin audio

Diamond Monster Sound MX300

Diamond Sonic Impact

Dream 94PnP Home Studio

EON Bach SP901 (A3D)

ESS (PCI)

ESS Maestro-1 (PCI), Maestro-2
(PCI)

ESS Solo-1 (PCI)

Echo Personal Sound System

Generic ALS007, ALS100 based soundcard

Orchid NuSound 3D

Orchid SoundWave 32

Paradise DSP-16

Quicknet Internet LineJACK

Terratec XLerate (A3D)

Turtle Beach Montego

Turtle Beach TBS-2000

Videologic SonicStorm

Wearnes Beethoven ADSP-16

Western Digital Paradise DSP-16

Yamaha YMF724 (PCI)

The ASP chip on Sound Blaster 16 series is not supported.
AWE32's onboard E-mu MIDI synthesizer is not supported.

Nathan Laredo < laredo@gnu.ai.mit.edu>
is willing to write AWE32 drivers if you send him a
complimentary card. He is also willing to write drivers for
almost any hardware if you send him free samples of your
hardware.

Sound Blaster 16's with DSP 4.11 and 4.12 have a hardware
bug that causes hung/stuck notes when playing MIDI and digital
audio at the same time. The problem can happen with either Wave
Blaster daughterboards or MIDI devices attached to the MIDI
port. There is no known fix.

15. Hard drives

All hard drives should work if the controller is supported.

Users of large Western Digital IDE hard drives (40GB up to 200GB
at least) manufactured before 2003-03-25 should look at
this FAQ
for an update that fixes a serious bug in those drives.

(From the SCSI HOWTO) All direct access SCSI devices with a
block size of 256, 512, or 1024 bytes should work. Other block
sizes will not work (Note that this can often be fixed by changing
the block and/or sector sizes using the MODE SELECT SCSI
command).

Large IDE (EIDE) drives work fine with newer kernels. The
boot partition must lie in the first 1024 cylinders due to PC BIOS
limitations.

Some Conner CFP1060S drives may have problems with Linux and
ext2fs. The symptoms are inode errors during
e2fsck
and corrupt file systems. Conner has released a firmware upgrade
to fix this problem, contact Conner at 1-800-4CONNER (US) or
+44-1294-315333 (Europe). Have the microcode version (found on
the drive label, 9WA1.6x) handy when you call.

Many Maxtor and Western Digital IDE drives are reported to
not happily co-exist on the same IDE cable with the other
manufacturers drive. Usually one of the drives will fail during
operation. Solution is to put them on different IDE cables.

Certain Micropolis drives have problems with Adaptec and
BusLogic cards, contact the drive manufacturers for firmware
upgrades if you suspect problems.

15.1. Unsupported

The following hard drives are mentioned as not supported
by Linux. Read the bug report available.

NEC D3817, D3825, D3827, D3847 "These drives are
slightly non-SCSI-2 compliant in the values reported in
Mode Sense Page 3. In Mode Sense Page 3 all NEC D38x7
drives report their sector size as zero. The NEC drives
are the first brand of drive we have ever encountered that
reported the sector size as zero. Unfortunately, that
field in Mode Sense Page 3 is not modifiable and there is
no way to update the firmware on the D38x7 drives to
correct this problem." Problems are mentioned for D3825
and D3827 (both revision 0407). Revision 0410 of these two
hard drives seems to solve this problem.

16. Tape drives

16.1. Supported

SCSI tape drives (From the SCSI HOWTO) Drives using both
fixed and variable length blocks smaller than the driver
buffer length (set to 32k in the distribution sources)
are supported. Virtually all drives should work. (Send
mail if you know of any incompatible drives.)

17.2. Alpha, Beta drivers

17.3. Notes

All CD-ROM drives should work similarly for reading data.
There are various compatibility problems with audio CD playing
utilities. (Especially with newer low-end NEC drives.) Some
alpha drivers may not have audio support yet.

Early (single speed) NEC CD-ROM drives may have trouble
with currently available SCSI controllers.

PhotoCD (XA) is supported. The hpcdtoppm program by Hadmut
Danisch converts PhotoCD files to the portable pixmap format.
The program can be obtained from
here
or as part of the PBM utilities.

Also, reading video CD is supported in kernel series
2.1.3x and later. A patch is available for kernel 2.0.30.

Finally, most IDE CD-ROM Changers are supported.

18. CD-Writers

Many CD-Writers are supported by Linux now. For an up to date
list of CD-Writers supported check the
CD-Writing HOWTO, check
here or check
here.
Cdwrite,
cdrecord,
cdrkit,
Libburn, and other
tools can be used for writing CD's. The X-CD-Roast package for Linux
is a graphical front-end for using CD writers. The package can
be found at xcdroast.org.
Other graphical front-ends include
K3b and
Brasero.

Grundig CDR 100 IPW

HP CD-Writer+ 7100

HP SureStore 4020i

HP SureStore 6020es/i

JVC XR-W2010

Kodak PCD 225

Mitsubishi CDRW-226

Mitsumi CR-2600TE

Olympus CDS 620E

Philips CDD-521/10,522,2000,2600,3610

Pinnacle Micro RCD-5020/5040

Plextor CDR PX-24CS

Ricoh MP 1420C

Ricoh MP 6200S/6201S

Sanyo CRD-R24S

Smart and Friendly Internal 2006 Plus 2.05

Sony CDU 920S/924/926S

Taiyo Yuden EW-50

TEAC CD-R50S

WPI(Wearnes) CDR-632P

WPI(Wearnes) CDRW-622

Yamaha CDR-100

Yamaha CDR-200/200t/200tx

Yamaha CDR-400t/400tx

19. DVD drives

Most, if not all, ATAPI and SCSI DVD-ROM and writable DVD drives
are supported.

Removable drives work like hard disks and floppies, just
fdisk /
mkfs
and mount the disks. Linux provides drive locking if your drives
support it.
mtools
can also be used if the disks are in MS-DOS format.

21.2. Alpha, Beta drivers

21.3. Notes

Touchpad devices like Alps Glidepoint also work, so long
they're compatible with another mouse protocol.

Newer Logitech mice (except the Mouseman) use the
Microsoft protocol and all three buttons do work. Eventhough
Microsoft's mice have only two buttons, the protocol allows
three buttons.

The mouse port on the ATI Graphics Ultra and Ultra Pro use
the Logitech busmouse protocol. (See the
Busmouse HOWTO for details.)

22. Modems

All external modems connected via a RS-232 serial port should work.
This includes external ISDN adapters, although some of the extended
features of external ISDN adapaters (such as multilink) may or may
not work.

Internal modems are another story, however. There are many so-called
"winmodems" available now. In fact, it seems that most PCI modems
are winmodems. Some of them do have drivers for Linux now, but many
of the drivers are often binary-only. (See the
note on binary-only drivers.) See
Linmodems.org for more
information on Linux-supported winmodems.

Note that there are external USB winmodems on the market now, so be
very careful when shopping for external modems.

Furthermore, many flash upgradable modems only have
flash programs for Win95/NT. These modems cannot be upgraded under
Linux.

A small number of modems come with DOS software that
downloads the control program at runtime. These can normally be
used by loading the program under DOS and doing a warm boot. Such
modems are probably best avoided as you won't be able to use them
with non PC hardware in the future.

Most 16-bit PCMCIA modems should work with the PCMCIA drivers.
CardBus modems are usually winmodems much like PCI modems. Your best
bet for now is to find a card that lists compatibility with DOS and
Windows 3.1.

All that said, if a modem is known to have a real UART (or hardware
UART emulation), whether it is ISA, PCMCIA, etc., it should work
under Linux.

Fax modems need appropriated fax software to operate. Also
be sure that the fax part of the modem supports Class 2 or Class
2.0. It seems to be generally true for any fax software on unix
that support for Class 1.0 is not available.

An exception to this is the Linux efax program which
supports both Class 1 and Class 2 fax modems. In some cases there
can be a few (minor) technical problems with Class 1 modems. If
you have a choice it is recommend to get a Class 2 modem.