Last updated: 2007-06-12

This document briefly describes how to set up some hardware in Debian "Lenny" on Fujitsu-Siemens Amilo Pro V2035 laptop. In current version it focuses on:

Graphics

The computer is equipped with the VIA VN800 graphics chipset, which isn't supported in mainline X.org tree. Fortunately, the openChrome project has a somewhat working driver.

To download the newest version of the driver, check out the Subversion (package "subversion" in Debian) repository of the project:

svn co http://svn.openchrome.org/svn/trunk
cd trunk
or grab a locally mirrored snapshot:
wget http://kjdf.sdf-eu.org/v2035/files/openchrome-r357-20070612.tar.bz2
tar jxf openchrome-r357-20070612.tar.bz2
cd openchrome-r357-20070612

Now it's time to download packages needed for compilation, then compile and install the driver, and finally, tell Debian not to overwrite our new treasure:

aptitude install automake build-essential gcc libdrm-dev libgl1-mesa-dev \
    libtool libxvmc-dev pkg-config x11proto-fonts-dev x11proto-gl-dev \
    x11proto-randr-dev x11proto-render-dev x11proto-xf86dri-dev \
    xserver-xorg-dev
./autogen.sh --prefix=/usr
make
make install
aptitude hold xserver-xorg-video-via

To complete the installation, locate and modify the "Device" section of /etc/X11/xorg.org (usually the default driver is "vesa") to match this bit:

        Driver          "via"
	Option          "SWCursor"              "true"

The Xv (video overlay) extension may not work. In this case, you can make your video player use either OpenGL backend (see the next paragraph) or software scaling (e.g. "mplayer -vo x11 -zoom").

If you wish to enable DRI support (which I found a bit flaky, especially when combined with suspend/resume), you can try to follow the official openChrome guide (or a local copy of it).

Wireless networking

The laptop uses Broadcom 4318 chip for wireless communication. The native driver (bcm43xx) doesn't work with this particular device, so we will use NDISwrapper and Windows drivers instead. First, download and install the ndiswrapper module (Debian packages "ndiswrapper-source" and "module-assistant" are of interest, Ubuntu "Feisty Fawn" seems to have ndiswrapper compiled in by default). After that, download the binary driver (version 4.100.15.5), and install it with ndiswrapper:

wget http://kjdf.sdf-eu.org/v2035/files/bcmwl5.sys.bz2
wget http://kjdf.sdf-eu.org/v2035/files/bcmwl5.inf.bz2
bunzip2 bcmwl5.sys.bz2 bcmwl5.inf.bz2
ndiswrapper -i bcmwl5.inf
cat >/etc/modprobe.d/ndiswrapper <<EOF
blacklist bcm43xx
options ndiswrapper if_name=eth0
alias eth0 ndiswrapper
EOF

Probably by the time native bcm43xx driver supports this network card, bcm43xx-fwcutter will also support v4 of firmware, but just as a precaution here is version 3 of firmware, as found on the supplied CD.

Fan control

BIOS of the computer seems to be buggy, the result of which is that the processor fan always runs at full speed under Linux. The workaround is to install patched version of so-called DSDT table. To do this under Debian, you will need to recompile kernel using the "ACPI DSDT in initrd patch" (local copy for Linux 2.6.21). (Note for Ubuntu "Feisty Fawn" users - the patch is already applied in Ubuntu, no need to recompile the kernel).

Then, you will need to patch the DSDT table of your computer. The procedure is described in amilo-forum.de topic (local copy). If you are a lucky owner of a laptop with 768 MB RAM (16 MB reserved for graphics card), you can use one of my hacked versions:

If not, you can still use them as base for your own, custom version - you will need to decompile them with iasl, change values related to SystemMemory to match your own DSDT (as found in /proc/acpi/dsdt, also decompiled), and compile it back. Caution - I have no idea what happens if you use DSDT for laptop with unmatching RAM capacity, so be careful.

In either case, you will need to copy your new DSDT to /etc/initramfs-tools/DSDT.aml

Suspend to disk

Since we are already recompiling kernel to enable smarter fan control, we might as well use superior (IMHO, of course) suspend/resume subsystem - Suspend 2. After downloading and applying the patch (local copy for Linux 2.6.21), kernel 2.6.21 worked for me with no problems (version 2.6.18 needed "noapic pci=noacpi irqpoll" boot options). The Hibernate script seemed to need the following configuration options as well:

ProcSetting full_pageset2 1
UnloadBlacklistedModules no

(Note for Ubuntu "Feisty Fawn" users - uswsusp/s2disk seems to work just fine, so no need to recompile kernel at all)

Suspend to RAM

In Linux 2.6.21, to suspend to RAM simply issue the following command:

s2ram --force --vbe_post --vbe_mode
In 2.6.18 I was frequently running into SATA timeout problems after resume.

Touchpad

If the default configuration doesn't satisfy you (it should in Ubuntu "Feisty Fawn" ;), try following the fine manual: /usr/share/doc/xserver-xorg-input-synaptics/README.alps . My touchpad section in /etc/X11/xorg.conf looks as follows:

Section "InputDevice"
	Identifier      "Synaptics Touchpad"
	Driver          "synaptics"
	Option          "SendCoreEvents"        "true"
	Option          "Device"                "/dev/psaux"
	Option          "Protocol"              "auto-dev"
	Option          "SHMConfig"             "on"
	Option          "LeftEdge"              "120"
	Option          "RightEdge"             "830"
	Option          "TopEdge"               "120"
	Option          "BottomEdge"            "650"
	Option          "FingerLow"             "14"
	Option          "FingerHigh"            "15"
	Option          "MaxTapTime"            "180"
	Option          "MaxTapMove"            "110"
	Option          "EmulateMidButtonTime"  "75"
	Option          "VertScrollDelta"       "20"
	Option          "HorizScrollDelta"      "20"
	Option          "MinSpeed"              "0.3"
	Option          "MaxSpeed"              "0.75"
	Option          "AccelFactor"           "0.015"
	Option          "EdgeMotionMinSpeed"    "200"
	Option          "EdgeMotionMaxSpeed"    "200"
	Option          "UpDownScrolling"       "1"
	Option          "CircularScrolling"     "1"
	Option          "CircScrollDelta"       "0.1"
	Option          "CircScrollTrigger"     "2"
EndSection