FreeBSD is a registered trademark of the FreeBSD Foundation.
Linux is a registered trademark of Linus Torvalds.
Microsoft, IntelliMouse, MS-DOS, Outlook, Windows, Windows Media and Windows NT are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries.
Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this document, and the FreeBSD Project was aware of the trademark claim, the designations have been followed by the “™” or the “®” symbol.
FreeBSD works fine on most laptops, with a few caveats. Some issues specific to running FreeBSD on laptops, relating to different hardware requirements from desktops, are discussed below.
FreeBSD is often thought of as a server operating system, but it works just fine on the desktop, and if you want to use it on your laptop you can enjoy all the usual benefits: systematic layout, easy administration and upgrading, the ports/packages system for adding software, and so on. (Its other benefits, such as stability, network performance, and performance under a heavy load, may not be obvious on a laptop, of course.) However, installing it on laptops often involves problems which are not encountered on desktop machines and are not commonly discussed (laptops, even more than desktops, are fine-tuned for Microsoft® Windows®). This article aims to discuss some of these issues. Several people have also documented their experiences with FreeBSD on specific laptop models on webpages which are not part of the FreeBSD documentation. You might very well find some information if you type the name of your laptop model and the word “FreeBSD” into a search engine of your choice. Additionally there is a FreeBSD-specific online database which aims to give information on hardware issues with laptops, The FreeBSD Laptop Compatibility List.
If you want to communicate with other FreeBSD laptop users,
check out the freebsd-mobile list. You can also get additional
information about using Laptops on FreeBSD at
http://tuxmobil.org/mobile_bsd.html
.
Recent versions of Xorg work with most display adapters available on laptops these days. Acceleration may not be supported, but a generic SVGA configuration should work.
Check your laptop documentation for which card you have,
and check in the Xorg documentation
to see whether it is specifically supported. If it is not, use
a generic device (do not go for a name which just looks
similar). You can try your luck
with the command Xorg -configure
which auto-detects a lot of configurations.
The problem often is configuring the monitor. Common
resources for Xorg focus on CRT monitors; getting a
suitable modeline for an LCD display may be tricky. You may
be lucky and not need to specify a modeline, or just need to
specify suitable HorizSync
and VertRefresh
ranges. If that
does not work, the best option is to check web resources
devoted to configuring X on laptops (these are often
Linux oriented sites but it does not matter because both systems
use Xorg) and copy a modeline posted by someone for similar
hardware.
Most laptops come with two buttons on their pointing devices, which is rather problematic in X (since the middle button is commonly used to paste text); you can map a simultaneous left-right click in your X configuration to a middle button click with the line
Option "Emulate3Buttons"
in the xorg.conf
file in the InputDevice
section.
Laptops usually come with internal (on-board) modems. Unfortunately, this almost always means they are “winmodems” whose functionality is implemented in software, for which only Windows® drivers are normally available (though a few drivers are beginning to show up for other operating systems; for example, if your modem has a Lucent LT chipset it might be supported by the comms/ltmdm port). If that is the case, you need to buy an external modem: the most compact option is probably a PC Card (PCMCIA) modem, discussed below, but serial or USB modems may be cheaper. Generally, regular modems (non-winmodems) should work fine.
Most laptops come with PCMCIA (also called PC Card)
slots; these are supported fine under FreeBSD. Look through
your boot-up messages (using dmesg(8)) and see whether these were
detected correctly (they should appear as
pccard0
,
pccard1
etc on devices like
pcic0
).
FreeBSD 4.X supports 16-bit PCMCIA cards, and
FreeBSD 5.X supports both 16-bit and
32-bit (“CardBus”) cards. A database of supported
cards is in the file /etc/defaults/pccard.conf
.
Look through it, and preferably buy cards listed there. Cards not
listed may also work as “generic” devices: in
particular most modems (16-bit) should work fine, provided they
are not winmodems (these do exist even as PC Cards, so watch out).
If your card is recognised as a generic modem, note that the
default pccard.conf
file specifies a delay time of 10 seconds
(to avoid freezes on certain modems); this may well be
over-cautious for your modem, so you may want to play with it,
reducing it or removing it totally.
Some parts of pccard.conf
may need
editing. Check the irq line, and be sure to remove any number
already being used: in particular, if you have an on board sound
card, remove irq 5 (otherwise you may experience hangs when you
insert a card). Check also the available memory slots; if your
card is not being detected, try changing it to one of the other
allowed values (listed in the manual page pccardc(8)).
If it is not running already, start the pccardd(8) daemon. (To enable it at boot time, add
pccard_enable="YES"
to
/etc/rc.conf
.) Now your cards should be
detected when you insert and remove them, and you should get
log messages about new devices being enabled.
There have been major changes to the pccard code (including ISA routing of interrupts, for machines where FreeBSD is not able to use the PCI BIOS) before the FreeBSD 4.4 release. If you have problems, try upgrading your system.
Unfortunately, this is not very reliably supported under FreeBSD. If you are lucky, some functions may work reliably; or they may not work at all.
To make things a little more complex, there are two existing standards for power management: APM and ACPI, the latter superseding the former and including more features, but also introducing more problems.
Some laptops support both APM and ACPI (to a certain degree), others just support one of them, so chances are that you have to experiment with both of them to have reliable power management on your laptop.
You cannot have APM and ACPI enabled at the same time, even if your laptop has support for both of them.
The APM (Advanced Power Management) BIOS provides support for various power management features like standby, suspend, hibernation, CPU clock slow down etc. and is available under FreeBSD 4.X and FreeBSD 5.X.
To enable APM support, you can compile a kernel with power
management support (device apm0
on
FreeBSD 4.X and device apm
on
FreeBSD 5.X). A kernel module for APM is available under
FreeBSD 5.X, to simply load the APM kernel module at boot
add the line apm_load="YES"
to
/boot/loader.conf
.
On FreeBSD 5.X, you also have to set
hint.apm.0.disabled="0"
in
/boot/device.hints
.
You can start APM at boot time by having
apm_enable="YES"
in
/etc/rc.conf
. You may also want start
the apmd(8) daemon by adding
apmd_enable="YES"
to
/etc/rc.conf
, which takes care of
various APM events that are posted to the BIOS, so you can
have your laptop suspend/resume by pressing some function
key on the keyboard or by closing/opening the lid.
The APM commands are listed in the apm(8) manual page.
For instance, apm -b
gives you battery
status (or 255 if not supported), apm -Z
puts the laptop on standby, apm -z
(or
zzz
) suspends it. To shutdown and power
off the machine, use shutdown -p
. Again,
some or all of these functions may not work very well or at
all.
You may find that laptop suspension/standby works in
console mode but not under X (that is, the screen does not
come on again); if you are running FreeBSD 5.X, one solution
for this might be to put options
SC_NO_SUSPEND_VTYSWITCH
in your kernel configuration file and recompile your kernel.
Another workaround is to switch to a virtual console (using
Ctrl+Alt+F1
or another function key) and then execute apm(8).
You can automate this with vidcontrol(1), if you are
running apmd(8). Simply edit
/etc/apmd.conf
and change it to
this:
apm_event SUSPENDREQ { exec "vidcontrol -s 1 < /dev/console"; exec "/etc/rc.suspend"; } apm_event USERSUSPENDREQ { exec "vidcontrol -s 1 < /dev/console"; exec "sync && sync && sync"; exec "sleep 1"; exec "apm -z"; } apm_event NORMRESUME, STANDBYRESUME { exec "/etc/rc.resume"; exec "vidcontrol -s 9 < /dev/console"; }
ACPI (Advanced Configuration and Power Management Interface) provides not only power management but also platform hardware discovery (superseding PnP and PCI BIOS). ACPI is only available under FreeBSD 5.X and is enabled by default, so you do not have to do anything special to get it running. You can control ACPI behaviour with acpiconf(8).
Unfortunately, vendors often ship their laptops with broken ACPI implementations, thus having ACPI enabled sometimes causes more problems than being useful, up to the point that you cannot even boot FreeBSD on some machines with ACPI enabled.
If ACPI is causing problems, you might check if your laptop vendor has released a new BIOS version that fixes some bugs. Since the FreeBSD ACPI implementation is still very evolving code, you might also want to upgrade your system; chances are that your problems are fixed.
If you want to disable ACPI simply add
hint.acpi.0.disabled="1"
to
/boot/device.hints
. You can disable
ACPI temporarily at the boot loader prompt by issuing
unset acpi_load
if you are having problems
booting an ACPI enabled machine. FreeBSD 5.1-RELEASE and
later come with a boot-time menu that controls how FreeBSD is
booted. One of the proposed options is to turn off ACPI. So
to disable ACPI just select in the menu.
The X window system (Xorg) also includes display power management (look at the xset(1) manual page, and search for “dpms” there). You may want to investigate this. However, this, too, works inconsistently on laptops: it often turns off the display but does not turn off the backlight.