This document contains the hardware compatibility notes for FreeBSD 6.2-RELEASE on the
i386 hardware platform (also referred to as FreeBSD/i386 6.2-RELEASE). It lists devices
known to work on this platform, as well as some notes on boot-time kernel customization
that may be useful when attempting to configure support for new devices.

Note: This document includes information specific to the i386 hardware
platform. Versions of the hardware compatibility notes for other architectures will
differ in some details.

FreeBSD/i386 runs on a wide variety of “IBM PC compatible” machines. Due
to the wide range of hardware available for this architecture, it is impossible to
exhaustively list all combinations of equipment supported by FreeBSD. Nevertheless, some
general guidelines are presented here.

Almost all i386-compatible processors with a floating point unit are supported. All
Intel processors beginning with the 80486 are supported, including the 80486, Pentium,
Pentium Pro, Pentium II, Pentium III, Pentium 4, and variants thereof, such as the Xeon
and Celeron processors. All i386-compatible AMD processors are also supported, including
the Am486, Am5x86, K5, K6 (and variants), Athlon (including Athlon-MP, Athlon-XP,
Athlon-4, and Athlon Thunderbird), and Duron processors. The AMD Élan SC520
embedded processor is supported. The Transmeta Crusoe is recognized and supported, as are
i386-compatible processors from Cyrix and NexGen.

There is a wide variety of motherboards available for this architecture. Motherboards
using the ISA, VLB, EISA, AGP, and PCI expansion busses are well-supported. There is some
limited support for the MCA (“MicroChannel”) expansion bus used in the IBM
PS/2 line of PCs.

Symmetric multi-processor (SMP) systems are generally supported by FreeBSD, although
in some cases, BIOS or motherboard bugs may generate some problems. Perusal of the
archives of the FreeBSD symmetric multiprocessing mailing list may yield some
clues.

FreeBSD will take advantage of HyperThreading (HTT) support on Intel CPUs that support
this feature. A kernel with the options SMP feature enabled
will automatically detect the additional logical processors. The default FreeBSD
scheduler treats the logical processors the same as additional physical processors; in
other words, no attempt is made to optimize scheduling decisions given the shared
resources between logical processors within the same CPU. Because this naive scheduling
can result in suboptimal performance, under certain circumstances it may be useful to
disable the logical processors with the the machdep.hlt_logical_cpus sysctl variable. It is also possible to
halt any CPU in the idle loop with the machdep.hlt_cpus
sysctl variable. The smp(4) manual
page has more details.

FreeBSD will take advantage of Physical Address Extensions (PAE) support on CPUs that
support this feature. A kernel with the PAE feature enabled will
detect memory above 4 gigabytes and allow it to be used by the system. This feature
places constraints on the device drivers and other features of FreeBSD which may be used;
consult the pae(4) manpage
for more details.

FreeBSD will generally run on i386-based laptops, albeit with varying levels of
support for certain hardware features such as sound, graphics, power management, and
PCCARD expansion slots. These features tend to vary in idiosyncratic ways between
machines, and frequently require special-case support in FreeBSD to work around hardware
bugs or other oddities. When in doubt, a search of the archives of the FreeBSD
laptop computer mailing list may be useful.

Most modern laptops (as well as many desktops) use the Advanced Configuration and
Power Management (ACPI) standard. FreeBSD supports ACPI via the ACPI Component
Architecture reference implementation from Intel, as described in the acpi(4) manual
page. The use of ACPI causes instabilities on some machines and it may be necessary to
disable the ACPI driver, which is normally loaded via a kernel module. This may be
accomplished by adding the following line to /boot/device.hints:

hint.acpi.0.disabled="1"

Users debugging ACPI-related problems may find it useful to disable portions of the
ACPI functionality. The acpi(4) manual
page has more information on how to do this via loader tunables.

ACPI depends on a Differentiated System Descriptor Table (DSDT) provided by each
machine's BIOS. Some machines have bad or incomplete DSDTs, which prevents ACPI from
functioning correctly. Replacement DSDTs for some machines can be found at the DSDT section of the
ACPI4Linux project Web site.
FreeBSD can use these DSDTs to override the DSDT provided by the BIOS; see the acpi(4) manual
page for more information.

This section describes the devices currently known to be supported by with FreeBSD on
the i386 platform. Other configurations may also work, but simply have not been tested
yet. Feedback, updates, and corrections to this list are encouraged.

Where possible, the drivers applicable to each device or class of devices is listed.
If the driver in question has a manual page in the FreeBSD base distribution (most
should), it is referenced here. Information on specific models of supported devices,
controllers, etc. can be found in the manual pages.

Note: The device lists in this document are being generated automatically from
FreeBSD manual pages. This means that some devices, which are supported by multiple
drivers, may appear multiple times.

All major firmware revisions (2.x, 3.x, 4.x and 5.x) are supported, however it is
always advisable to upgrade to the most recent firmware available for the controller.
Compatible Mylex controllers not listed should work, but have not been verified.

Note: Booting from these controllers is supported. EISA adapters are not
supported.

With all supported SCSI controllers, full support is provided for SCSI-I, SCSI-II, and
SCSI-III peripherals, including hard disks, optical disks, tape drives (including DAT,
8mm Exabyte, Mammoth, and DLT), medium changers, processor target devices and CD-ROM
drives. WORM devices that support CD-ROM commands are supported for read-only access by
the CD-ROM drivers (such as cd(4)).
WORM/CD-R/CD-RW writing support is provided by cdrecord(1), which is
a part of the sysutils/cdrtools port in the Ports Collection.

The sn(4) driver supports
the SMC 91C90, SMC 91C92, SMC 91C94, SMC 91C95, SMC 91C96, SMC91C100 and SMC 91C100FD
chips from SMC. The Farallon EtherWave and EtherMac card came in two varieties. The ep(4)
driver supports the 595 and 895 cards. These cards have the blue arrow on the front along
with a 3Com logo. The Farallon 595a cards, which have a red arrow on the front, are also
called EtherWave and EtherMac. They are supported by the sn(4) driver.

The stge(4) driver
provides support for various NICs based on the Sundance/Tamarack TC9021 based Gigabit
Ethernet controller chips, including:

A range of USB peripherals are supported; devices known to work are listed in this
section. Owing to the generic nature of most USB devices, with some exceptions any device
of a given class will be supported, even if not explicitly listed here.