Dell 700m with Debian Sarge




Kernel 2.6.9 custom built

This site is:    and Document made with Nvu

Here I will try to explain as best as I can how I got Debian Sarge working on my Dell 700m laptop. Most things are very straight forward, so I wont go into them. What I will focus on, is:

1. Kernel 2.6.9 - with patch for Swsusp2
2. IPW 2200 B/G Intel Pro Wireless Card
3. 1280x800 Resolution wide screen display with X
4.
Using the Touchpad correctly - Synaptics driver with X
5. ACPI power management NEW UPDATES (CPU throttling, Suspend to RAM, Suspend to Disk)
6. Flashing BIOS with the lack of a Floppy drive
7. Using TV out with the i810 Chipset - by Juergen Lennefer

1. I got Debian's new Sarge installer from here. I will assume you know how to choose what is suited for this laptop (i386)

The install was straight forward from the CD. It boots, and installs. What I did, is I made sure I installed with the 2.6.8 kernel. For that, if I remember correctly, you need to pass a "linux26" command at the install, when it prompts you. But to be sure, press F3 there, and it will display the various kinds.

MAKE SURE that if you want the ACPI Software Suspend2 to work, you create a sufficient SWAP partition.
That is RAM + 30%. I have 512 Ram so I went with 1GB Swap just to be sure.

Once you are done, you can install your Preferred kernel, I chose the 2.6.9 as APCI is known to be better with 2.6.9. I installed the sources from here.

Then I downloaded the patch for Swsusp2 from here . At time of writing, the newest one was 2.1.5. You unzip it to a location you choose, then you go to the kernel source folder, usually /usr/src/kernel-source-2.6.9/ and you apply the patches. Lets say you unzipped the patch to /home/mike/swsusp

Then here is step by step what you do:

cd /usr/src/kernel-source-2.6.9/ ---> provided here are your kernel sources
/home/mike/swsusp/apply  --> this will apply the patch.

For me it didnt go 100% smooth, one patch didnt want to apply, so the installer asked me if I wanted to reverse it. I said NO. Just a note, to unapply the patches, you do /home/mike/swsusp/unapply from the kernel sources directory.

Now, go to the menuconfig, and configure your kernel as you want to. If you have the same hardware as me , you might use my config here.

What you need to look for, is that under Power Management, having applied the patch, you will see a new menu, Software Suspend 2. To read a lot more of Debian Specific install, read here . Please only choose (M) as module and not (*) as compiled in. As we use INITRD image for debian kernels, when swsusp2 loads, the HDD is not being recognized yet, so it will stop loading it. When it is a module, we can call it later, when the HDD is already initalized. More about swsusp2 later in this document. Convenient hyperlink to the place.

2. This Intel PRO wireless is not working out of the box as of yet, 2.6.9 kernel. You need to get two things, the Firmware and the Drivers.  The firmware will load every time you boot, and that is how it's working properly. The driver you need to compile. When you unzip the Firmware file, just copy all files to /usr/lib/hotplug/firmware/

Then unzip the driver, and do a "make" and "make install"

When you next reboot your computer, you will have everything ready. Of course make sure that you have the wireless extensions installed. Try passing the follwoing command "iwconfig" as root. If it works, you have it. If its an unknown command, you need to install wireless-tools "apt-get install wireless-tools"
Now pass the commang "iwconfig" (after rebooted with the firmware in place and driver compiled) and see which eth interface is associated with Wireless. For me it is eth0 and eth1 is the Wired Network.

Then do a regular config for the ethx (x being the number of your interface) in /etc/network/interfaces

Here's mine, I have WEP encription, Shared key secure mode, and no DHCP

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
        address 192.168.0.5
        netmask 255.255.255.0
        gateway 192.168.0.1
        wireless_mode managed
        wireless_essid xxxxxxx # (this is the ESSID of your gateway)
        wireless_key restricted xxxxxxxxxxxxxxxxxxxxxxxxxx # (this is the WEP key)

3. The 1280x800 resolution does not work, as the BIOS doesn't have the 1280x800 resolution of the 855 Chipset. What you have to do, is run a script, every time you boot, that will load itself to the ROM or RAM (sorry for inaccuracy) of the Chip, so it will think it supports 1280x800. Thanks to this Gentleman, Alain Poirier, it is now available. Get the patch from here. You should read the README always of course, but here is what you need to do to get it working on your Dell700m, and in general everything that has the 855 Chip and 1280x800 resolution.

Unzip the file, and run "855resolution -l". You will see a bunch of resolution modes. This is my output for reference:

VBIOS Version: 3104

Mode 30 : 640x480, 8 bits/pixel
Mode 32 : 800x600, 8 bits/pixel
Mode 34 : 1024x768, 8 bits/pixel
Mode 38 : 1280x1024, 8 bits/pixel
Mode 3a : 1600x1200, 8 bits/pixel
Mode 3c : 1280x800, 8 bits/pixel
Mode 41 : 640x480, 16 bits/pixel
Mode 43 : 800x600, 16 bits/pixel
Mode 45 : 1024x768, 16 bits/pixel
Mode 49 : 1280x1024, 16 bits/pixel
Mode 4b : 1600x1200, 16 bits/pixel
Mode 4d : 1280x800, 16 bits/pixel
Mode 50 : 640x480, 32 bits/pixel
Mode 52 : 800x600, 32 bits/pixel
Mode 54 : 1024x768, 32 bits/pixel
Mode 58 : 1280x1024, 32 bits/pixel
Mode 5a : 1600x1200, 32 bits/pixel
Mode 5c : 1280x800, 32 bits/pixel
Mode 7c : 1280x801, 8 bits/pixel
Mode 7d : 1280x801, 16 bits/pixel
Mode 7e : 1280x801, 32 bits/pixel


As you can see I alreeady have 1280x800 resolutions enabled, and the reason is that I already ran the script. What you do, is you check out a Mode that you will never use for sure. I chose a ridiculously high resolution, and I ran the patch against it. What you do, is you run "855resolution 5c 1280 800", and what that does, is overwrites the Mode 5c to be 1280 800. As you can see for me 5c is now 1280x800.

As I said earlier, you need to run this every time you boot, as the BIOS will forget it on reboot. I created a scrip and called it "startupscript" and placed it in /etc/init.d/startupscript . Now I installed rcconf (apt-get install rcconf) and then ran it "rcconf" and now I can select this startupscript to start every time I boot. Rcconf is a great tool anyways. Here is the script for reference

# /etc/init.d/startupscript
855resolution 5c 1280 800

Now we are not yet done. The XF86Config-4 has to be modified.

Here is what I did to get mine going.

Section "Monitor"
        Identifier      "Generic Monitor"
        HorizSync       30-90
        VertRefresh     50-160
        Option          "DPMS"
        Modeline "1280x800_60.00"  83.46  1280 1344 1480 1680  800 801 804 828
        -HSync +Vsync

To this section, I added the part that is Italicized. (Do not italicize it in the real file)

Section "Screen"
        Identifier      "Default Screen"
        Device          "Generic Video Card"
        Monitor         "Generic Monitor"
        DefaultDepth    24
        SubSection "Display"
                Depth           24
                Modes           "1280x800"
        EndSubSection

Again the Italicized part is what I added.

Now restart your X and enjoy the High and wide resolution.

4. Synaptics Touchpad Driver with X windows

Out of the box, your Touchpad will work, but not correctly. For example, you cannot click with the TAP, etc. And not only that. This new Synaptics technology lets you scroll with the touchpad, if you tap once on the right side, keep your TAP pushed in (dont release) and pull your finger up-down. The same you can do with a bottom TAP and pulling finger left-right. This will equal to the browser's BACK and NEXT buttons. Great feature once you get used to it.

Here is how its done:

apt-get install xfree86-driver-synaptics

Once that is done, you need to modify your XF86Config-4 file in two places. I will just copy mine, and you can figure out what was changed. Pretty easy:

# Add this section where it belongs:

Section "InputDevice"
        Driver        "synaptics"
        Identifier    "Mouse[1]"
        Option        "Device"        "/dev/psaux"
        Option        "Protocol"      "auto-dev"
        Option        "LeftEdge"      "1700"
        Option        "RightEdge"     "5300"
        Option        "TopEdge"       "1700"
        Option        "BottomEdge"    "4200"
        Option        "FingerLow"     "25"
        Option        "FingerHigh"    "30"
        Option        "MaxTapTime"    "180"
        Option        "MaxTapMove"    "220"
        Option        "VertScrollDelta" "100"
        Option        "MinSpeed"      "0.06"
        Option        "MaxSpeed"      "0.12"
        Option        "AccelFactor" "0.0010"
#       Option        "SHMConfig"     "on"
#       Option        "Repeater"      "/dev/ps2mouse"

# Modify this end section like follows:

Section "ServerLayout"
        Identifier      "Default Layout"
        Screen          "Default Screen"
        InputDevice     "Generic Keyboard"
        InputDevice     "Mouse[1]" "CorePointer"
#       InputDevice     "Configured Mouse"
        InputDevice     "Generic Mouse"
EndSection


As I am sure you can see, now the default mouse is Mouse[1], and Mouse[1] is the synaptics mouse. Restart X and voila, you have a smart touchpad.

5. ACPI is not working out of the box. You need several modifications.

-----NEW UPDATE BEGINS 2005 04 12----

I just got speedstepping working as I wanted it to work, so it was time to post the results and ways to get it work here.

First you need to make sure you have a higher kernel than 2.6.8 as until then the Dothan CPU is unrecognized. There are patches you can apply to an older kernel as well, but I havent done it, so I wont explain it due to lack of experience. Before you compile the kernel, please make sure you have the following enabled.

CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_X86_SPEEDSTEP_CENTRINO=m
CONFIG_X86_SPEEDSTEP_CENTRINO_TABLE=y
CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI=y

CONFIG_X86_SPEEDSTEP_ICH=m
CONFIG_X86_SPEEDSTEP_SMI=m
CONFIG_X86_SPEEDSTEP_LIB=m
CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK=y

The ones that are underlined are must haves, the rest I have no idea honestly, but I have them anyways. To see if you have these in your already built kernel, pass the following commands:

grep SPEEDSTEP /usr/src/kernel-source-2.6.x/.config
grep USERSPACE /usr/src/kernel-source-2.6.x/.config

of course change x in kernel-source-2.6.x to whatever your kernel-source path is. If these come back with results same as mine, you are good to do.

Now load the necessary modules, speedstep_centrino cpufreq_userspace

modprobe speedstep_centrino
modprobe cpufreq_userspace

For these to load automatically at every boot, put them in /etc/modules (of course in that case do not include "modprobe")

Now install the powernowd

apt-get powernowd

This will run in the background, and will set your CPU speed at necessary speeds. THe speed for me varies between 600MHz and 1600MHz, which is pretty nice. This is a dynamic tool, so it doesnt only have the two (minimum maximum) values, but all together 8 speeds, so it can adjust as it needed. All I can say that I can almost never hear the fan, unless I do something drastic like compiling kernel, rendering, encoding, etc. Pretty neat. I will try to play with it later as well, my goal is to make something that will change the profile,for example when unplugged, the speed can vary between only 600 and 900 etc. Also I would like to make it lower than 600MHz if possible, but will have to look into that later.

To check the CPU frequency you currently run at just pass the following command:

less /proc/cpuinfo

You should get something like this:

processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 13
model name      : Intel(R) Pentium(R) M processor 1.60GHz
stepping        : 6
cpu MHz         : 598.244
cache size      : 2048 KB
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 2
wp              : yes
flags           : fpu vme de pse tsc msr mce cx8 sep mtrr pge mca cmov pat clfl
ush dts acpi mmx fxsr sse sse2 ss tm pbe est tm2
bogomips        : 1185.79

-----NEW UPDATE ENDS 2005 04 12----


I had done two things. One was I wanted to have Suspend to RAM work. With the 2.6.8 kernel, that was impossible. With the 2.6.9, it is possible, and I will explain why. With the 2.6.8, the computer suspends, but will never wake up. WIth 2.6.9 it will wake up as well, but nothing is perfect enogh right? This scenario is true in this case too. It will wake up, but will not post Video. That means that you wont see anything on the screen, but will be able to SSH into the box via ethernet. There is a tool that wil wake up the Video, and I found it here . To get the file, just click on the "video_post tool from Venki". This will download a file named "Attachment.cgi" which you can handle just like a zip file. Unzip it, and install it. It will have the Readme file with it if I remember well. Just put it under a directory, in default it is under /root. When you unzip it, it will have the directory /root/emu and in there will be the tool /root/emu/video_post

All you need now, is to write a script that will do the suspend and wake your video up after suspend. I will include my script here, but you might need to tailor it to your needs. What I discovered is that the Wireless network doesnt work after suspend, so I need to remove and reload the wireless module, and also the regular wired netowrk module, as that hangs the machine if not unloaded. Dont forget that. Got me puzzled for a while.

Here is my /etc/acpi/lidbtn.sh script. For this you need to have a /etc/apci/events/lidbtn file. Here are how mine look like:

/etc/acpi/events/lidbtn

event=button/lid
action=/etc/acpi/lidbtn.sh

This tells the ACPID that whenever the lid is closed or opened, it should look for what to do in the /etc/acpi/lidbtn.sh file.

/etc/acpi/lidbtn.sh

#!/bin/bash

lid_state=/proc/acpi/button/lid/LID0/state

test -e $lid_state || exit 0

if cat $lid_state | grep closed > /dev/null
  then echo "lid closed -> suspending"
  rmmod ipw2200
  rmmod b44
  echo "mem" > /sys/power/state
  modprobe i830
  /root/emu/video_post
  chvt 1
  chvt 7
  modprobe ipw2200
  modprobe b44
  /etc/init.d/networking restart

else echo "lid opened -> resuming"
fi

This is a script I wrote, and might not be 100% correct, but it works for me. Please remember I am not a linux pro. Now, make sure you have acpid installed, if not then "apt-get install acpid". When acpid runs, and you close the lid, you should get into suspend. When you open the lid, the computer will come out of suspend, but you will see a lot of weird characters, not your regular X windows. THis is a because the video_post tool is not a permanent way to fix it, and this is all we have for now. I hear they are planning to fix this in the next few kernels.

What you need to do now, is Press CTRL ALT F1 and then CTRL ALT F7

-----NEW UPDATE BEGINS 2005 04 11----

Thanks to Juergen Lennefer, this is resolved, hence I crossed the text out. In the script above you already see the right parameters, but just to explain what I had to do to solve the Console shifting, I will show what I included in the script.

chvt 1
chvt 7

This makes the console shift to 1 and then back to 7 (default KDE - X windows console). I will here include Juergens email piece, that explained about it. His solution is way more advanced, but all I needed is to get back console 7, so I modified it to my needs. Here is his solution:

"To solve this SuSE has included a script switch_vt which is part of
SuSE's special ACPI powermanagement scriptings. I added the video_post
program just before switching the consoles, but it still doesn't work.
I'm quite shure this is because the miss of the kernel fix in 2.6.9.

This is switch_vt with my change:

#!/bin/bash

# first get helper functions (e.g. DEBUG, load_scheme, ...)
. "/usr/lib/powersave/scripts/helper_functions"

DEBUG "process function: switch_vt" DIAG

# Switch LCD on for Dell Inspiron 700m
/usr/local/bin/video_post
sleep 2

local VT
VT=`fgconsole`
chvt 1
chvt $VT
exit 0


Maybe it makes you solution more convenient ;-)"

Thanks again Juergen.

-----NEW UPDATE ENDS 2005 04 11----



There you have your X back with no problem. Isnt that great? We dont even miss WIndows anymore, do we :))

Now the second issue is the SOftwaresuspend. That you want if you will run out of battery, and you want your laptop to shut down completely, but save the state where it was left at.

You need to download the swsusp2 patches, and that is explained in detail at the beginning of this document. Here is a convenient hyperlink for all you lazy linux geeks...:)))

Once you have your kernel configured, dont compile just yet. You need to place a script in the /etc/mkinitrd/scripts/ directory. Name it swsusp2 and here it is how it should look like:

/etc/mkinitrd/scripts/swsusp2

#!/bin/sh

# Put this script in /etc/mkinitrd/scripts/ and regenerate your initrd (by
# "mkinitrd -o /boot/initrd.img-`uname -r`" or reinstall your kernel package.

# Copy in modules
# Note: if you want to add gzip to the list, you'll need zlib_deflate too.

MODULES="suspend_core suspend_block_io suspend_text suspend_swap lzf suspend_lzf"

pushd $MODULEDIR > /dev/null 2>&1
for i in $MODULES ; do
find -name "$i.ko"
done | cpio -p --make-directories --quiet $INITRDDIR/lib/modules/$VERSION/
popd > /dev/null 2>&1

# Figure out swap device from the first device listed in /proc/swaps
swap_device=`awk 'BEGIN{getline;getline;print$1}' < /proc/swaps`
swap_type=`awk 'BEGIN{getline;getline;print$2}' < /proc/swaps`

if [ "x$swap_type" = "xpartition" ] ; then
resume2=`perl -e "@a=stat '$swap_device';printf 'swap:%04x', \\$a[6]"`
else
echo "Unable to determine swap device! You will need to set resume2= on your"
echo "kernel command-line manually."
fi

[ -n "$resume2" ] && resume2="echo $resume2 > /proc/software_suspend/resume2"

# Modify linuxrc script

mv $INITRDDIR/linuxrc $INITRDDIR/linuxrc.real
cat <<EOT > $INITRDDIR/linuxrc
#!/bin/sh

export PATH=/sbin:/bin

mount -t proc proc /proc
. /loadmodules
modprobe suspend_core
modprobe suspend_block_io
modprobe suspend_text
modprobe lzf
modprobe suspend_lzf
modprobe suspend_swap
$resume2
echo > /proc/software_suspend/do_resume
rmmod suspend_swap suspend_lzf lzf suspend_text suspend_block_io suspend_core
umount /proc
. ./linuxrc.real
EOT


chmod 777 $INITRDDIR/linuxrc


Now that the script is in place, you are ready to compile and install your kernel. Dont forget to do the kernel as I described and even more as you can see in this page. I already included this link in the 1st section, but I cannot emphasise it enough. This led me to completion.

Once you are done, do an "apt-get install hibernate" and when it installed itself, run "hibernate" and you will go into suspend. When you restart the computer, you will get back to the original state where you left it at.

6. BIOS flash - HowTO

I wanted to flash my BIOS, but it wasn't as easy as I thought so. Dell has only Windoze support, so that wont fly very well with this. What you need, is a DOS boot CD-rom, as we have no floppy drive built in. If you have a USB floppy, then I envy you,and please don't keep reading this :)) That makes things easy.

I found this site, and go down to the part, that is titled "

Clean Bootable CD-Rom (for BIOS upgrade) [new! dec 16, 2002]

"

Here you will see how to create a BOOT CD that will boot into DOS. I wasted a full day on this, and a lots of CD's until I found this site. If you follow the steps closely, you will have no problem. Of course you need a windows system to create it. I had a VMware Windows Install under Linux, so it was no problem to me. I hope this helps you.

7. Using Video out Feature with the i810 Chipset. This has not been tested yet, I recieved this info from Juergen Lennefer, who stumbled accross this site, and wished to add additional information. Thanks Juergen. Here comes his "email" and then the config file

"Hello Benedek,

how is it going?

Yesterday I had little time to do some experiments with the internal
graphic Intel chip i810 cause I've to give a presentation with a beamer
connected to the external video connector on friday.
This mostly not very loved internal graphic solution is capable of some
astonishing features. It has two pipes to work with and with Xorg I'm
able to have some different multiheaded layouts now.
If you activate in section "ServerFlags" one of the layouts different
from the DefaultLayout and connect a second screen to the the video port
you'll be surprised about the abilities of this Intel chip.
Shure it's not powerful enough to play any Windoofs games, but for
professional use I was very surprised of the features, especially after
I recognised a very bad video signal quality in "Clone" mode.

I haven't tried the TVLayout as I'm unshure if my 700m will give PAL
signals to the Svideo port, I'd assume it's NTSC. Additional I haven't
got any TV set to my working place ;-0

Btw, I got most of the config file from
http://ghoff.home.insightbb.com/xorg.conf.


Another hint:

If you won't always end your default X11 session on vt7 you can start
another one on vt8 with the new config file like this:

su - pres -c 'nohup /usr/X11R6/bin/startx ${1+"$@"} -- :1 vt08 \
-xf86config XF86Config-1 2>&1 >$HOME/.X.err'

"pres" is my special presentation user which starts Gnome for this usage
as I'm normally running a very complex configured KDE session ...


Have fun with it ...

Looking forward to your experiences :-))

Brgds,
Juergen


PS: Feel free to add this info to you nice 700m-Webpage."


Here is the XF86Config-1

##############
# Xorg configuration created by system-config-display
# Modified for use with Dell Inspiron 700m and SuSE 9.2 by Juergen Lennefer 04-Apr-2005

Section "Files"
  FontPath     "/usr/X11R6/lib/X11/fonts/misc:unscaled"
  FontPath     "/usr/X11R6/lib/X11/fonts/local"
  FontPath     "/usr/X11R6/lib/X11/fonts/75dpi:unscaled"
  FontPath     "/usr/X11R6/lib/X11/fonts/100dpi:unscaled"
  FontPath     "/usr/X11R6/lib/X11/fonts/Type1"
  FontPath     "/usr/X11R6/lib/X11/fonts/URW"
  FontPath     "/usr/X11R6/lib/X11/fonts/Speedo"
  FontPath     "/usr/X11R6/lib/X11/fonts/PEX"
  FontPath     "/usr/X11R6/lib/X11/fonts/cyrillic"
  FontPath     "/usr/X11R6/lib/X11/fonts/latin2/misc:unscaled"
  FontPath     "/usr/X11R6/lib/X11/fonts/latin2/75dpi:unscaled"
  FontPath     "/usr/X11R6/lib/X11/fonts/latin2/100dpi:unscaled"
  FontPath     "/usr/X11R6/lib/X11/fonts/latin2/Type1"
  FontPath     "/usr/X11R6/lib/X11/fonts/latin7/75dpi:unscaled"
  FontPath     "/usr/X11R6/lib/X11/fonts/baekmuk:unscaled"
  FontPath     "/usr/X11R6/lib/X11/fonts/japanese:unscaled"
  FontPath     "/usr/X11R6/lib/X11/fonts/kwintv"
  FontPath     "/usr/X11R6/lib/X11/fonts/truetype"
  FontPath     "/usr/X11R6/lib/X11/fonts/uni:unscaled"
  FontPath     "/usr/X11R6/lib/X11/fonts/CID"
  FontPath     "/usr/X11R6/lib/X11/fonts/ucs/misc:unscaled"
  FontPath     "/usr/X11R6/lib/X11/fonts/ucs/75dpi:unscaled"
  FontPath     "/usr/X11R6/lib/X11/fonts/ucs/100dpi:unscaled"
  FontPath     "/usr/X11R6/lib/X11/fonts/hellas/misc:unscaled"
  FontPath     "/usr/X11R6/lib/X11/fonts/hellas/75dpi:unscaled"
  FontPath     "/usr/X11R6/lib/X11/fonts/hellas/100dpi:unscaled"
  FontPath     "/usr/X11R6/lib/X11/fonts/hellas/Type1"
  FontPath     "/usr/X11R6/lib/X11/fonts/misc/sgi:unscaled"
  FontPath     "/usr/X11R6/lib/X11/fonts/xtest"
  FontPath     "/opt/kde3/share/fonts"
  InputDevices "/dev/ttyS0"
  InputDevices "/dev/ttyS1"
  InputDevices "/dev/ttyS2"
  InputDevices "/dev/ttyS3"
  InputDevices "/dev/ttyS4"
  InputDevices "/dev/ttyS5"
  InputDevices "/dev/ttyS6"
  InputDevices "/dev/ttyS7"
  InputDevices "/dev/ttyS8"
  InputDevices "/dev/psaux"
  InputDevices "/dev/logibm"
  InputDevices "/dev/sunmouse"
  InputDevices "/dev/atibm"
  InputDevices "/dev/amigamouse"
  InputDevices "/dev/atarimouse"
  InputDevices "/dev/inportbm"
  InputDevices "/dev/gpmdata"
  InputDevices "/dev/mouse"
  InputDevices "/dev/usbmouse"
  InputDevices "/dev/adbmouse"
  InputDevices "/dev/input/mice"
  InputDevices "/dev/input/event0"
  InputDevices "/dev/pointer0"
  InputDevices "/dev/pointer1"
  InputDevices "/dev/pointer2"
  InputDevices "/dev/pointer3"
EndSection

Section "ServerFlags"
#       Option          "DefaultServerLayout" "DefaultLayout"
#       Option          "DefaultServerLayout" "MultiheadLayout"
        Option          "DefaultServerLayout" "BeamerLayout"
#       Option          "DefaultServerLayout" "TVLayout"
        Option          "AllowMouseOpenFail"
EndSection

Section "Module"
        Load  "dbe"
        Load  "extmod"
        Load  "fbdevhw"
        Load  "glx"
        Load  "record"
        Load  "freetype"
        Load  "type1"
        Load  "dri"
EndSection

#Section "Module"
#  Load         "freetype"
#  Load         "type1"
#  Load         "dbe"
#  Load         "glx"
#  Load         "extmod"
#  Load         "v4l"
#EndSection

###########

Section "InputDevice"
  Driver       "kbd"
  Identifier   "Keyboard0"
  Option       "Protocol" "Standard"
  Option       "XkbLayout" "us"
  Option       "XkbModel" "pc104"
  Option       "XkbRules" "xfree86"
EndSection

Section "InputDevice"
  Driver       "mouse"
  Identifier   "Mouse1"
  Option       "ButtonNumber" "5"
  Option       "Device" "/dev/mouse"
  Option       "Name" "SynPS/2 Synaptics TouchPad"
  Option       "Protocol" "imps/2"
  Option       "Vendor" "Sysp"
  Option       "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
  Driver       "mouse"
  Identifier   "Mouse3"
  Option       "Device" "/dev/input/mice"
  Option       "InputFashion" "Mouse"
  Option       "Name" "USB-Mouse;IMPS/2"
  Option       "Protocol" "imps/2"
  Option       "ZAxisMapping" "4 5"
EndSection

###########

Section "ServerLayout"
        Identifier      "DefaultLayout"
        Screen      0   "Screen0" 0 0
        InputDevice     "Keyboard0" "CoreKeyboard"
        InputDevice     "Mouse1" "CorePointer"
        InputDevice     "Mouse3" "SendCoreEvents"
EndSection

Section "ServerLayout"
        Identifier     "MultiheadLayout"
        Screen      0  "Screend0" RightOf "Screend1"
        Screen      1  "Screend1"
        InputDevice     "Keyboard0" "CoreKeyboard"
        InputDevice     "Mouse1" "CorePointer"
        InputDevice     "Mouse3" "SendCoreEvents"
        Option      "Xinerama" "on"
#       Option      "Clone" "on"
EndSection

Section "ServerLayout"
        Identifier     "BeamerLayout"
        Screen      0  "Screend0" LeftOf "Beamer1"
        Screen      1  "Beamer1"
        InputDevice    "Keyboard0" "CoreKeyboard"
        InputDevice    "Mouse1" "CorePointer"
        InputDevice    "Mouse3" "SendCoreEvents"
        Option         "Xinerama" "on"
#       Option         "Clone" "on"
EndSection

Section "ServerLayout"
        Identifier     "TVLayout"
        Screen      0  "Screentvd0" LeftOf "TV1"
        Screen      1  "TV1"
        InputDevice     "Keyboard0" "CoreKeyboard"
        InputDevice     "Mouse1" "CorePointer"
        InputDevice     "Mouse3" "SendCoreEvents"
#       Option      "Xinerama" "on"
#       Option      "Clone" "on"
EndSection

###########

Section "Monitor"
        Identifier   "Monitor0"
        Option       "CalcAlgorithm" "CheckDesktopGeometry"
        DisplaySize  320 240
        HorizSync    30-82
        ModelName    "Local LCD Panel 1280X800@60HZ"
        Option       "DPMS"
        VendorName   "--> LCD"
        VertRefresh  57-60
        Modeline      "1280x800" 83.46 1280 1344 1480 1680 800 801 804 828
EndSection

Section "Monitor"
        Identifier   "Monitor1"
        VendorName   "--> CRT"
        ModelName    "CRT 1280x1024"
        HorizSync    31.5 - 67.0
        VertRefresh  70.0 - 75.0
        Option      "dpms"
EndSection
 
Section "Monitor"
        Identifier   "Monitor2"
        VendorName   "--> Beamer"
        ModelName    "Beamer 1024x768"
        HorizSync    31.5 - 67.0
        VertRefresh  50.0 - 65.0
        Option      "dpms"
EndSection
 
Section "Monitor"
        Identifier   "TVm1"
        VendorName   "Monitor Vendor"
        ModelName    "TV"
        Option       "dpms"
EndSection

###########

Section "Device"
        Identifier  "Videocard0"
        Driver      "i810"
        VendorName  "Intel"
        BoardName   "855 GM"
EndSection

Section "Device"
        Identifier  "Videocardd0"
        Driver      "i810"
        VendorName  "Intel"
        BoardName   "855 GM"
        BusID       "PCI:0:2:0"
        Screen      0
        Option      "MonitorLayout" "CRT,LFP"
EndSection

Section "Device"
        Identifier  "Videocardd1"
        Driver      "i810"
        VendorName  "Intel"
        BoardName   "855 GM"
        BusID       "PCI:0:2:0"
        Screen      1
        Option      "MonitorLayout" "CRT,LFP"
EndSection

Section "Device"
        Identifier  "Videocardtvd0"
        Driver      "i810"
        VendorName  "Intel"
        BoardName   "855 GM"
        BusID       "PCI:0:2:0"
        Screen      0
        Option      "MonitorLayout" "TV,LFP"
EndSection

Section "Device"
        Identifier  "Videocardtvd1"
        Driver      "i810"
        VendorName  "Intel"
        BoardName   "855 GM"
        BusID       "PCI:0:2:0"
        Screen      1
        Option      "MonitorLayout" "TV,LFP"
EndSection

###########

Section "Screen"
        Identifier "Screen0"
        Device     "Videocard0"
        Monitor    "Monitor0"
        DefaultDepth     24
        SubSection "Display"
                Viewport   0 0
                Depth     24
                Modes    "1280x800" "1024x768" "800x600" "640x480"
                Virtual  1280 1024
        EndSubSection
EndSection

Section "Screen"
        Identifier "Screend0"
        Device     "Videocardd0"
        Monitor    "Monitor0"
        DefaultDepth     24
        SubSection "Display"
                Viewport   0 0
                Depth     24
                Modes    "1280x800" "1024x768" "800x600" "640x480"
                Virtual  1280 1024
        EndSubSection
EndSection

Section "Screen"
        Identifier "Screend1"
        Device     "Videocardd1"
        Monitor    "Monitor1"
        DefaultDepth     24
        SubSection "Display"
                Viewport   0 0
                Depth     24
        EndSubSection
EndSection

Section "Screen"
        Identifier "Beamer1"
        Device     "Videocardd1"
        Monitor    "Monitor1"
        DefaultDepth     24
        SubSection "Display"
                Viewport   0 0
                Depth     24
                Modes    "1024x768" "800x600" "640x480"
        EndSubSection
EndSection

Section "Screen"
        Identifier "Screentvd0"
        Device     "Videocardtvd0"
        Monitor    "Monitor0"
        DefaultDepth     24
        SubSection "Display"
                Viewport   0 0
                Depth     24
                Modes    "1280x800" "1024x768" "800x600" "640x480"
                Virtual  1280 1024
        EndSubSection
EndSection

Section "Screen"
        Identifier "TV1"
        Device     "Videocardtvd1"
        Monitor    "TVm1"
        DefaultDepth     24
        SubSection "Display"
                Viewport   0 0
                Depth     24
        EndSubSection
EndSection

###########

Section "DRI"
    Group      "video"
    Mode       0660
EndSection

Section "Extensions"
EndSection


THE END

If you would like to add something to this document, please drop me a line at linux *&at() celifornia ^%dot$# com

Benedek Frank