                               FreeBSD on Laptops

   Revision: 43126

   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 "(TM)" or the "(R)"
   symbol.

   Last modified on 2013-11-07 by gabor.
   Abstract

   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.

     ----------------------------------------------------------------------

   Table of Contents

   1. Xorg

   2. Modems

   3. PCMCIA (PC Card) devices

   4. Power management

   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(R) Windows(R)). 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.

1. Xorg

   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.

2. Modems

   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(R) 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.

3. PCMCIA (PC Card) devices

   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.

4. Power management

   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.

  Note:

   You cannot have APM and ACPI enabled at the same time, even if your laptop
   has support for both of them.

  4.1. APM

   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";
 }

  4.2. ACPI

   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 2. Boot FreeBSD with ACPI
   disabled in the menu.

  4.3. Display Power Management

   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.
