<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [
<!ENTITY % man PUBLIC "-//FreeBSD//ENTITIES DocBook Manual Page Entities//EN">
%man;

<!ENTITY % freebsd PUBLIC "-//FreeBSD//ENTITIES DocBook Miscellaneous FreeBSD Entities//EN">
%freebsd;

<!ENTITY % authors PUBLIC "-//FreeBSD//ENTITIES DocBook Author Entities//EN">
%authors;

<!ENTITY % mailing-lists PUBLIC "-//FreeBSD//ENTITIES DocBook Mailing List Entities//EN">
%mailing-lists;
]>

<article>
  <articleinfo>
    <title>FreeBSD on Laptops</title>

    <pubdate>$FreeBSD$</pubdate>
   
    <abstract>
      <para>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.</para>
    </abstract>
   </articleinfo>

    <para>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.</para>

   <sect1>    
      <title>XFree86</title>
      
      <para>Recent versions of XFree86 work with most display adapters
        available on laptops these days.  Acceleration may not be
        supported, but a generic SVGA configuration should work.</para>

      <para>Check your laptop documentation for which card you have,
        and check in the XFree86 documentation (or setup program) 
        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).  In XFree86 version 4, you can try your luck
        with the command <userinput>XFree86 -configure</userinput>
        which auto-detects a lot of configurations.</para>

      <para>The problem often is configuring the monitor.  Common
        resources for XFree86 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 XFree86) and copy a modeline posted by someone for similar 
        hardware.</para>

      <para>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</para>

<programlisting>
Option "Emulate3Buttons"
</programlisting>

        <para>in the XF86Config file in the <literal>InputDevice</literal> section (for XFree86
        version 4; for version 3, put just the line <literal>Emulate3Buttons</literal>, 
        without the quotes, in the <literal>Pointer</literal> section.)</para>
    </sect1> 

    <sect1> 
      <title>Modems</title>
      <para> 
        Laptops usually come with internal (on-board) modems.
        Unfortunately, this almost always means they are <quote>winmodems</quote> 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).  Otherwise, 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.  
      </para>

    </sect1> 

    <sect1> 
      <title>PCMCIA (PC-card) devices</title>

      <para> Most laptops come with PCMCIA (also called PC-card)
        slots; these are supported fine under FreeBSD.  Look through
        your boot-up messages (using dmesg) and see whether these were
        detected correctly (they should appear as
        <devicename>pccard0</devicename>,
        <devicename>pccard1</devicename> etc on devices like
        <devicename>pcic0</devicename>).</para>

      <para>FreeBSD currently supports 16-bit PCMCIA cards, but not
        32-bit (<quote>CardBus</quote>) cards.  A database of supported cards is in
        the file <filename>/etc/defaults/pccard.conf</filename>.  Look
        through it, and preferably buy cards listed there.  Cards not
        listed may also work as <quote>generic</quote> 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.</para>

      <para>Some parts of <filename>pccard.conf</filename> 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 man page &man.pccardc.8;).
         </para>

      <para>If it is not running already, start the pccardd daemon.
        (To enable it at boot time, add
        <programlisting>pccard_enable="YES"</programlisting> to
        <filename>/etc/rc.conf</filename>).  Now your cards should be
        detected when you insert and remove them, and you should get
        log messages about new devices being enabled.</para>

      <para>There have been major changes to the pccard code
        (including ISA routing of interrupts, for machines whose
        PCIBIOS FreeBSD can not seem to use) before the FreeBSD 4.4
        release.  If you have problems, try upgrading your system.</para>
 
    </sect1> 

    <sect1> 

       <title>Power management</title>

       <para>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.</para>

       <para>To enable this, you may need to compile a kernel with
         power management support (<literal>device apm0</literal>) or
         add the option <literal>enable apm0</literal> to <filename>/boot/loader.conf</filename>, and
         also enable the apm daemon at boot time (line
         <literal>apm_enable="YES"</literal> in
         <filename>/etc/rc.conf</filename>).  The apm commands are
         listed in the &man.apm.8; manpage.  For instance,
         <command>apm -b</command> gives you battery status (or 255 if
         not supported), <command>apm -Z</command> puts the laptop on
         standby, <command>apm -z</command> (or zzz) suspends it.  To
         shutdown and power off the machine, use <command>shutdown -p</command>.
         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; in that case, switch to a virtual console
         (using Ctrl-Alt-F1 or another function key) and then execute
         the apm command.
         </para>

       <para>The X window system (XFree86) also includes display power
         management (look at the &man.xset.1; man 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.</para>

     </sect1>
</article>
