                           FreeBSD on Laptops

   $FreeBSD: doc/en_US.ISO8859-1/articles/laptop/article.sgml,v 1.25
   2007/01/16 17:27:05 markus Exp $

   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.

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

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