[To Section 11 - The X Window System]
[To Section 13 - Multimedia]
12 - Hardware and Platform-Specific
Table of Contents
12.1 - General hardware notes
12.1.1 - PCI devices
- PCI devices are mostly self-configuring -- the computer and OS will
allocate resources to the cards as required.
- Interrupts can be shared on the PCI bus. Not only can they be, the
system will often perform better when the IRQs are shared, especially on
- There are several different PCI bus standards.
You will occasionally find a PCI2.2 specification card that will just
not work in a PCI2.1 specification system.
Also, many cards with on-board bridges (such as, multi-port network
cards) will not work well in older systems.
- The PCI bus supports two levels of signaling, 3.3V and 5V.
Cards that work with 3.3V signaling have a second notch cut in their
Most PCI cards use 5V signaling, which is used by most computers.
The Soekris single-board computers (Net45x1 and Net4801) are
commonly-encountered computers that only support 3.3V signaling.
12.1.2 - ISA devices
- ISA devices cannot share resources, and in general, must be
manually configured to settings that don't conflict with other
devices in the system.
- Some ISA devices are "Plug and Play"
-- if you have any problem with these devices, though, verify their
configuration in your
dmesg(8), ISAPnP doesn't always work as desired.
- In general, if you have a choice, most people are best advised to avoid
ISA cards in favor of PCI. ISA cards are more difficult to configure and
have a much greater negative impact on the system's performance.
12.1.3 - My device is "recognized" but says "not
configured" in dmesg
In short, it means your device is not supported by the kernel you
are using, so you will not be able to use it.
PCI and many other types of devices offer identifying information
so that the OS can properly recognize and support devices.
Adding recognition is easy, adding support is often not.
Here is part of a dmesg with two examples of "not configured"
The first one (a network adapter) had its vendor code identified and the
general type of card was determined, but not the precise model of the
The second example was another network adapter, this one a developer had
seen and had entered into the identification file that is
used to identify the card.
In both cases, however, the cards will be non-functional, as both are
shown as "not configured", meaning no driver has attached to
vendor "Intel", unknown product 0x5201 (class network subclass ethernet,
rev 0x03) at pci2 dev 9 function 1 not configured
"Intel EE Pro 100" rev 0x03 at pci2 dev 10 function 0 not configured
What can I do about a not configured device?
- If the device or card you are seeing is not one you need, you can
safely ignore the "not configured" devices, they will not hurt
Some "special purpose" devices are deliberately left unconfigured so the
system's BIOS will handle them.
- In some cases, it is just a variation of an already supported
device, in which case, it may be relatively easy for a developer to add
support for the new card.
In other cases, it may be a totally unsupported chip set or
implementation (such as the above examples).
In that case, a new driver would have to be written, which may not even
be possible if the device is not fully documented.
You are certainly welcome to write a driver for the device yourself.
- If you are running an install kernel, the device may not be
supported by the install media you used, but may be supported by a
different boot disk.
This is a common issue with users of some popular SCSI cards who misread
the footnotes on the i386 platform page
and try all the boot floppies their SCSI card is NOT supported on,
rather than the one that it is supported on.
- If you are running a modified kernel, you may have removed support
for a device you now need.
In general, removing devices from a kernel is a
This is one reason why.
- Before reporting a "not configured" device, make sure you
have first tested the most recent
snapshot, as support may already have
been added, and check the mail list archives
to see if the issue has been discussed already.
Remember, however, if you are using an older version of OpenBSD, you
will generally have to upgrade to get the benefit of any new driver
12.1.4 - I have a card listed as "supported", but it doesn't
Unfortunately, many manufacturers use product model numbers to indicate
marketplace position, rather than the technical nature of a product.
For this reason, you may buy a product with the same name or model
number as a product listed in the platform
pages, but end up with a totally different product that may not work
For example, many early wireless network adapters were based on the
Prism2 chip set, using the
driver, but later, when lower-cost chips became available, many
manufacturers changed their product to use chips for which no open
source drivers exist, but never changed their model numbers.
Wireless network adapters, unfortunately, are far from the only
example of this.
12.1.5 - Are WinModems supported?
WinModems are low-cost modems which rely on the processor to do much of
the signal processing normally done in hardware in a "real" modem.
Due to the variety of incompatible and typically undocumented WinModem
chips, there is no support for WinModems in OpenBSD, and this is not
likely to change.
12.1.6 - What happened to the Adaptec RAID support (aac)?
Adaptec has refused to provide useful and accurate documentation about
As these RAID controllers seem to be very buggy, this documentation is
critical for a useful driver.
Since this driver was so unreliable, it was removed from the GENERIC
I can compile my own kernel with aac(4) support, right?
But what part of "unreliable" did you fail to understand?
This isn't an "experimental" feature, this is a known-flawed driver.
Maybe it works with some variations of hardware sufficiently well to be
usable, but we don't recommend betting your data on it.
12.1.7 - My ami(4) card will only support one logical disk!
There is a known bug with
which will cause data corruption if you use more than one volume on
On controllers with this issue, OpenBSD will limit you to one logical
disk, resulting in a message in your dmesg that looks like:
ami0: FW A.04.03, BIOS vA.04.03, 4MB RAM
ami0: 3 channels, 16 targets, 2 logical drives
ami0: firmware buggy, limiting access to first logical disk
scsibus0 at ami0: 1 targets
12.1.8 - How do I activate my crypto accelerator card?
Supported crypto accelerator hardware, such as the
based cards will "just work" when installed in an OpenBSD system.
No activation or other configuration is needed.
The overhead of talking to one of these devices will sometimes negate
much or all of the benefit of offloading the processor of the crypto
Your results may vary widely depending on the task you have to
12.2 - DEC Alpha
12.3 - AMD 64
12.3.1 - Can I run OpenBSD/amd64 on my Intel P4 or AMD Sempron?
In the case of many recent processors, the answer is "yes".
Unfortunately, trying to find out which processor variations do
and which do not properly support the amd64 instruction set is difficult.
It is usually easier to just try it and see if it works.
Processors that do not support the amd64 instruction set will fail very
early when booting the kernel; there will be no question about "does it
work?" in your mind.
12.3.2 - Can I run my i386 binary on OpenBSD/amd64?
OpenBSD/amd64 is a totally separate platform from OpenBSD/i386, and at
this point, no binary compatibility is provided.
As OpenBSD encourages open source applications, there is not much
interest in binary compatibility across platforms with developers.
Note that the OpenBSD/amd64 and OpenBSD/i386 boot loaders will
load each other's kernels, making it easier to reinstall a system with the
However, it has to be a complete "wipe and reinstall" operation -- left-over
binaries from the "previous" installation will most likely make your life
12.3.3 - Is it always better to run OpenBSD/amd64 on processors that
There are a number of reasons one may desire to use OpenBSD/i386
over OpenBSD/amd64, even on hardware that supports amd64 code:
- Need for i386 binary (or other OS) compatibility.
- Need to run applications that are not "64 bit clean".
- Need for ability to move disks to another machine that isn't amd64 capable
- For some applications and on some hardware, OpenBSD/i386 may outperform
Relatively few people will ever experience this, and work is
on-going to eliminate as many of these situations as possible.
12.4 - ARM-based appliances
12.5 - ARMv7-based systems (BeagleBoard, PandaBoard, SABRE Lite, Nitrogen6x)
For 5.4, this was called the "beagle" platform, but for -current
and later releases, this platform has been renamed
This platform is being actively improved; running -current is
Being this platform is still very much in a state of flux, this article
will reflect the state of -current rather than the current
Building from source:
At this moment, the kernel has to be in the FAT boot partition, not the
root of the file system like other OpenBSD platforms, and this kernel
must be in a format required by the U-Boot boot loader.
So, after building your kernel, you must go through some special steps:
config GENERIC-OMAP # for Beagle; others may use GENERIC-IMX
make clean; make
make bsd.umg # Extra steps start here!
mount /dev/sd0i /mnt # assuming your FAT partition is 'i'
cp bsd.umg /mnt
No real time clock: Many of the armv7 devices do not have a
battery backed real time clock.
For this reason, using the "-s" option of
OpenNTPD may be desirable.
Distribution kernels must be converted before use:
The distribution kernels are standard kernels, which can be used
for the -N option of
and similar applications, but can not be booted directly by the U-Boot
bootloader used on this platform.
This can be done using
Typical operation is something along these lines for OMAP/beagle:
mkuboot -a arm -o linux -e 0x80300000 -l 0x80300000 bsd bsd.umg
where bsd is the name of the kernel you are converting.
mkuboot -a arm -o linux -e 0x10800000 -l 0x10800000 bsd bsd.umg
- Booting single user (OMAP/beagle):
U-Boot# mmc rescan
U-Boot# setenv bootargs sd0 -s
U-Boot# fatload mmc 0 0x82800000 bsd.umg
U-Boot# bootm 0x82800000
- Booting single user (i.MX6, mmc storage):
U-Boot# mmc rescan
U-Boot# setenv bootargs sd0 -s
U-Boot# fatload mmc 0 0x12000000 bsd.umg
U-Boot# bootm 0x12000000
- Booting single user (i.MX6, SATA storage):
U-Boot# sata init
U-Boot# setenv bootargs sd0 -s
U-Boot# fatload sata 0 0x12000000 bsd.umg
U-Boot# bootm 0x12000000
12.6 - HP300
12.7 - HPPA
12.8 - i386
12.8.1 - ISA NICs
As OpenBSD runs well on older hardware, users often will end up using
ISA NICs on OpenBSD systems.
ISA hardware requires much more configuration and understanding than
does PCI hardware.
In general, you can't just stuff the card in the computer and expect it
to magically work.
In many machines, if your ISA device is not in a "Plug 'n' Play" (PNP)
mode, you must reserve the resources the card uses in the system's BIOS.
3Com 3C509B ep(4)
This is an excellent performing ISA NIC, supported by the
The 'B' version can be distinguished from the non-B version by labeling
on the card and by the larger "main" chip on the board (approximately
2.5cm on a side for the 'B' version, vs. 2cm on a side on the older
version), and will provide better performance on a loaded or dual
network card system.
The 3C509B ships configured in a PNP mode, which unfortunately does not
comply with standards, and causes problems in OpenBSD's
The adapter is picked up first as a non-PNP device, then again after the
PNP support comes on-line, resulting in an extra NIC showing in the
This may work fine, or it may cause other problems. It is highly
recommended that the 3C509B cards have PNP mode disabled and manually
configured to non-conflicting settings using the 3Com DOS-based
configuration utilities before configuration.
The ep(4) driver will pick the cards up at any hardware combination that
does not conflict with other devices in the system.
If you have multiple 3C509 cards in your system, it is recommended that
you label the cards' spine with the MAC address, and use the dmesg to
identify which is which.
Note that the 3C509, the 3C905 and the 3C590 are often confused.
The 3C509 is a 10Mbps ISA card, the 3C905 and 3C590 are PCI
The original NE2000 NIC was developed in the mid-1980s by Novell.
Since then, many manufacturers have produced cards that are very
similar, which are generally called NE2000-compatibles, or clones.
Performance of these clone cards varies greatly.
While some older NE2000-compatible cards performed very well, many of
the currently-available ones perform poorly.
NE2000-compatibles are supported by the
driver in OpenBSD.
OpenBSD will handle some ISAPNP-capable NE2000-compatible cards well if
the ISAPNP mode is turned on.
Other cards will have to be set using either jumpers or a DOS-based
Unfortunately, as the original NE2000 cards did not have software
configuration or ISAPNP support, there are no standards for this -- you
need the utility that will have been originally supplied with your
This can often be difficult to obtain.
The ne(4) driver supports three configurations of the ISA NE2000 card
in the GENERIC OpenBSD kernel:
ne0: port 0x240 irq 9
ne1: port 0x300 irq 10
ne2: port 0x280 irq 9
If these settings are not acceptable, you can adjust them using
User Kernel Configuration (UKC) or
by building a customized kernel.
Note that the ne(4) driver is fairly "dumb" -- only the I/O port is
probed, if any of the above I/O addresses is detected, the corresponding
IRQ is assumed.
will not reflect the actual IRQ of the adapter in the case of ISA ne(4)
If this is not the actual IRQ your card is set to, it will not work.
Note that there are non-ISA cards that use the ne(4) driver -- PCI and
PCMCIA ne(4) cards exist. These notes do not apply to them, these
devices are auto-configuring.
12.8.2 - OpenBSD won't work on my 80386/80386SX/80486SX system!
Support for the 80386DX and 80386SX processors was dropped beginning
with OpenBSD 4.2.
In addition to limitations of the 80386 chip, the systems are just too
slow and rarely had enough RAM and a required FPU to run OpenBSD.
The 80486SX chip was a "low-cost" version of the 80486, which lacked the
hardware floating point support (like the 80386) OpenBSD requires.
Fortunately, full 80486DX chips are fairly available, and is an easy
upgrade in most systems.
The 80486DX and newer chips run OpenBSD fine.
12.8.3 - My dmesg shows multiple devices sharing the same Interrupt
This is entirely acceptable, and in fact, even desirable for PCI
This is a design feature of the PCI bus.
Some people will say that sharing interrupt requests (IRQs) is bad,
however they are either confusing the situation with the ISA bus (where
IRQ sharing is not permitted), or past experience with broken hardware
ISA devices can not share IRQs. If you find ISA devices sharing IRQs,
you must correct this problem.
12.8.4 - My keyboard/mouse keeps locking up (or goes crazy)!
This is most often seen when using a "switch box" (sometimes called a
"KVM switch") to attach multiple
computers to one keyboard, monitor and mouse.
You can experiment with different brand and design switch boxes, but
OpenBSD seems to be more sensitive to switching the mouse than some
other operating systems.
The problem is usually just the switching of the mouse.
If you are not using the mouse, the solution is simple:
don't attach the mouse cable to the computer.
If you are using the mouse, an easy solution is "one mouse per computer",
and switch just the keyboard and monitor.
You may find using a PS/2 Mouse -> USB port adapter (so OpenBSD sees a
USB mouse) will work around this problem.
If you just want console access to the machine, you
may wish to consider using a
serial console instead.
12.8.5 - My Soekris/Alix/Lanner performs poorly
These machines are quiet, low-power, small and modest cost PC class
systems, and many OpenBSD users are quite pleased with them.
However, it must be remembered the processors, NICs, and other devices
on the system are all chosen for low power consumption, not performance.
While they are suitable for many applications, they are not high
performance machines compared to contemporary full-feature machines.
12.8.6 - I get "missing interrupt" errors on my CF device
With some CF systems, such as early Soekris 4801 systems and some CF
adapters, the DMA support is not properly wired up, so you might see
messages such as:
In these cases, you will need to disable DMA in the
driver to avoid this problem.
This can be done using ukc to install, then
config(8) to change it permanently:
pciide0:0:0: bus-master DMA error: missing interrupt, status=0x20
ukc> change wd
42 wd* at wdc*|pciide* channel -1 flags 0x0
change [n] y
channel [-1] ?
flags  ? 0x0ff0
42 wd* changed
42 wd* at wdc*|pciide* channel -1 flags 0xff0
12.8.7 - Is this really new CPU supported?
The issue of support is rarely the CPU itself, it is almost always the
surrounding and supporting hardware.
Most likely, yes, the latest CPU is supported just fine.
The surrounding support hardware may not work if it is significantly
different than earlier versions.
If you have problems with new hardware, make sure you try a
snapshot before making a
12.9 - Landisk
12.10 - Luna88k
12.11 - MacPPC
12.11.1 - My bm(4) network adapter doesn't work!
driver, supporting the BMAC chip used on some MacPPC systems (including
early iMacs) has issues.
NIC is recommended for these systems at this time.
12.12 - MVME68k
12.13 - MVME88k
12.14 - SGI
12.15 - SPARC
12.16 - UltraSPARC (sparc64)
12.16.1 - My UltraSPARC won't boot from the floppy image
Only the Ultra 1/1e and Ultra 2 can boot any OS from floppy disk.
Use CD-ROM, Miniroot, or network boot to do your installation instead.
12.16.2 - I'm getting "partition extends past end of unit"
messages in disklabel
On sparc and sparc64 systems, the BSD disklabel cannot describe a disk
geometry larger than 8GB, while individual disklabel entries can be
Every time you run disklabel(8), it performs some sanity checks of the
disklabel entries against what it thinks is the correct drive geometry,
and since it sees a truncated geometry, it warns and will not let you
edit entries outside this 8GB area unless you tell it to use the real
Do this using the 'g' command of the command-driven editor of
disklabel(8) and tell it to use the
You will still get the warning messages, but you can configure and use
your disk as desired.
A proper solution would have to be compatible with existing systems
already in use, plus be compatible with Solaris running on disks larger
than 8GB, but this has not been worked out yet.
# disklabel -E wd0
# Inside MBR partition 3: type A6 start 63 size 17912412
Initial label editor (enter '?' for help at any prompt)
[d]isk, [b]ios, or [u]ser geometry: [d] d
12.17 - DEC VAX
12.17.1 - Can I use the SIMH VAX simulator?
The SIMH VAX simulator
can be used to effectively emulate a real VAX.
Instructions can be found in the OpenBSD/vax
on SIMH page.
12.18 - Sharp Zaurus
12.18.1 - USB devices aren't working properly
The Zaurus has very little current available on its USB port, so many
USB devices will not work if they are directly attached to it.
You will need to use a powered USB hub to run these devices.
[To Section 11 - The X Window System]
[To Section 13 - Multimedia]