Linux on a Acer Travelmate 6000 Laptop


Table of Contents

1. Overview
2. Hardware
3. CPU
4. Video
Resolutions, BIOS and Acer
Framebuffer
XFree
Intel graphics drivers
Second display
The solution
DVI output
TV-Out
5. Networking
Ethernet
Wireless LAN
Modem
6. Sound
7. Keyboard
8. Touchpad
Horizontal scrolling
9. Firewire
External harddisk
Digital video camera
10. Infrared
IrDA
LIRC
11. USB
12. PCMCIA
PCMCIA alone
Smartcard reader
13. Power consumption
14. Additional hardware
Lexmark Z65
CanoScan LiDE 30
Acer Bluetooth Dongle BT-600
Canon digital IXUS IIs
Logitech USB Mouse MX310
15. Version + author

List of Tables

2.1. "Working hardware" sheet
13.1. Power consumption of my Travelmate
15.1. Version list

Chapter 1. Overview

This document describes my efforts to install a Gentoo Linux on my Acer Travelmate 6003LCi Laptop.

My normal computer is running a SuSE Linux 9.0, and so the Gentoo is my first "hand-compiled" system. It took me 3 weeks to get the base system running for everyday use - but remember, it was my first gentoo. In this time, I've learned a lot about the linux system in general and in-depth looks into a number of applications and tools.

As I'm using the 2.6.7 kernel, all settings refer to this one.

Chapter 2. Hardware

The offical specs can be found at the Acer page.

Table 2.1. "Working hardware" sheet

CPU + speedstepworking
Display (15"@1400x1050)working (except framebuffer)
Second displayworking
TV-OutNOT working
DVI outputuntested
DVD/CD-Recorderworking
Gigabit Ethernetworking
Wireless lanworking
Modemworking
Firewireworking
USB 2.0working
IrDAworking
LIRCNOT working
Soundworking
Keyboardworking
Touchpadworking
Smartcard readerworking
PCMCIAworking
4-in-1 card readerNOT working

Here the output of some programs:

lspci

0000:00:00.0 Host bridge: Intel Corp.: Unknown device 3580 (rev 02)
0000:00:00.1 System peripheral: Intel Corp.: Unknown device 3584 (rev 02)
0000:00:00.3 System peripheral: Intel Corp.: Unknown device 3585 (rev 02)
0000:00:02.0 VGA compatible controller: Intel Corp.: Unknown device 3582 (rev 02)
0000:00:02.1 Display controller: Intel Corp.: Unknown device 3582 (rev 02)
0000:00:1d.0 USB Controller: Intel Corp. 82801DB USB (Hub #1) (rev 03)
0000:00:1d.1 USB Controller: Intel Corp. 82801DB USB (Hub #2) (rev 03)
0000:00:1d.2 USB Controller: Intel Corp. 82801DB USB (Hub #3) (rev 03)
0000:00:1d.7 USB Controller: Intel Corp. 82801DB USB EHCI Controller (rev 03)
0000:00:1e.0 PCI bridge: Intel Corp. 82801BAM/CAM PCI Bridge (rev 83)
0000:00:1f.0 ISA bridge: Intel Corp.: Unknown device 24cc (rev 03)
0000:00:1f.1 IDE interface: Intel Corp.: Unknown device 24ca (rev 03)
0000:00:1f.3 SMBus: Intel Corp. 82801DB SMBus (rev 03)
0000:00:1f.5 Multimedia audio controller: Intel Corp. 82801DB AC'97 Audio (rev 03)
0000:00:1f.6 Modem: Intel Corp. 82801DB AC'97 Modem (rev 03)
0000:02:02.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5705 Gigabit Ethernet (rev 03)
0000:02:04.0 Network controller: Intel Corp.: Unknown device 4220 (rev 05)
0000:02:06.0 CardBus bridge: O2 Micro, Inc.: Unknown device 7223
0000:02:06.1 CardBus bridge: O2 Micro, Inc.: Unknown device 7223
0000:02:06.2 System peripheral: O2 Micro, Inc.: Unknown device 7110
0000:02:06.3 CardBus bridge: O2 Micro, Inc.: Unknown device 7223
0000:02:07.0 FireWire (IEEE 1394): Texas Instruments TSB43AB21 IEEE-1394a-2000 Controller (PHY/Link)

lshw (I cut some unnecessary things):

bogo
    description: Computer
    product: TravelMate 6000
    vendor: Acer
    version: Rev 1
    capabilities: smbios-2.31 dmi-2.31
  *-core
       description: Motherboard
       product: TravelMate 6000
       vendor: Acer
     *-firmware
          description: BIOS
          vendor: ACER
          version: 3A14 (04/20/2004)
          size: 107KB
          capacity: 448KB
          capabilities: isa pci pcmcia pnp apm upgrade shadowing escd cdboot int13floppy720 int5printscreen int9keyboard 
                         int14serial int17printer acpi usb agp smartbattery biosbootspecification
     *-cpu
          description: CPU
          product: Intel(R) Pentium(R) M processor 1600MHz
          vendor: Intel Corp.
          version: 6.9.5
          size: 1600MHz
          capacity: 1600MHz
          clock: 400MHz
          capabilities: fpu fpu_exception wp vme de pse tsc msr mce cx8 sep mtrr pge mca cmov pat clflush dts 
                         acpi mmx fxsr sse sse2 tm pbe tm2 est
        *-cache:0
             description: L1 cache
             slot: L1 Cache
             size: 32KB
             capacity: 32KB
             capabilities: asynchronous internal write-back
        *-cache:1
             description: L2 cache
             slot: L2 Cache
             size: 1MB
             capacity: 1MB
             capabilities: burst external write-back
     *-memory
          description: System Memory
          slot: System board or motherboard
          size: 512MB
          capacity: 3GB
        *-bank:0
             description: DIMM SRAM Synchronous 333 MHz (3.0 ns)
             size: 256MB
             clock: 333MHz (3.003ns)
        *-bank:1
             description: DIMM SRAM Synchronous 333 MHz (3.0 ns)
             size: 256MB
             clock: 333MHz (3.003ns)
     *-pci
          description: Host bridge
          product: 82852/855GM Host Bridge
          vendor: Intel Corp.
          clock: 33MHz
        *-system:0 UNCLAIMED
             description: System peripheral
             product: 855GM/GME GMCH Memory I/O Control Registers
             vendor: Intel Corp.
             capabilities: bus_master
        *-system:1 UNCLAIMED
             description: System peripheral
             product: 855GM/GME GMCH Configuration Process Registers
             vendor: Intel Corp.
             capabilities: bus_master
        *-display:0
             description: VGA compatible controller (VGA)
             product: 82852/855GM Integrated Graphics Device
             vendor: Intel Corp.
             logical name: /dev/fb0
             size: 128MB
             clock: 33MHz
             capabilities: vga bus_master cap_list fb
             configuration: depth=8 frequency=76.65Hz mode=1280x1024 visual=pseudocolor xres=1280 yres=1024
        *-display:1 UNCLAIMED
             description: Display controller
             product: 82852/855GM Integrated Graphics Device
             size: 128MB
             clock: 33MHz
             capabilities: bus_master cap_list
        *-usb:0
             description: USB Controller (UHCI)
             product: 82801DB USB (Hub #1)
             vendor: Intel Corp.
             capabilities: uhci bus_master
             configuration: driver=uhci_hcd
        *-usb:1
             description: USB Controller (UHCI)
             product: 82801DB USB (Hub #2)
        *-usb:2
             description: USB Controller (UHCI)
             product: 82801DB USB (Hub #3)
        *-usb:3
             description: USB Controller (EHCI)
             product: 82801DB USB EHCI Controller
             vendor: Intel Corp.
             clock: 33MHz
             capabilities: ehci bus_master cap_list
             configuration: driver=ehci_hcd
        *-pci
             description: PCI bridge (Normal decode)
             product: 82801BAM/CAM PCI Bridge
             vendor: Intel Corp.
             physical id: 1e
             clock: 33MHz
             capabilities: pci normal_decode bus_master
           *-network:0 DISABLED
                description: Ethernet controller
                product: NetXtreme BCM5705 Gigabit Ethernet
                vendor: Broadcom Corporation
                logical name: eth0
                clock: 66MHz
                capabilities: bus_master cap_list mii autonegotiation 100bt-fd 100bt 10bt-fd 10bt ethernet physical
                configuration: broadcast=yes driver=tg3 driverversion=3.6 link=no multicast=yes
           *-network:1
                description: Network controller
                product: Intel Corp.
                capabilities: bus_master cap_list
                configuration: driver=w22n51.sys
           *-pcmcia:0 UNCLAIMED
                description: CardBus bridge
                product: O2 Micro, Inc.
                vendor: O2 Micro, Inc.
                capabilities: pcmcia bus_master cap_list
           *-pcmcia:1 UNCLAIMED
                description: CardBus bridge
                product: O2 Micro, Inc.
                vendor: O2 Micro, Inc.
                capabilities: pcmcia bus_master cap_list
           *-pcmcia:2 UNCLAIMED
                description: CardBus bridge
                product: O2 Micro, Inc.
                vendor: O2 Micro, Inc.
                capabilities: pcmcia cap_list
           *-system UNCLAIMED
                description: System peripheral
                product: O2 Micro, Inc.
                vendor: O2 Micro, Inc.
                capabilities: cap_list
           *-firewire UNCLAIMED
                description: FireWire (IEEE 1394) (OHCI)
                product: TSB43AB21 IEEE-1394a-2000 Controller (PHY/Link)
                vendor: Texas Instruments
                capabilities: ohci bus_master cap_list
        *-isa UNCLAIMED
             description: ISA bridge
             product: 82801DBM LPC Interface Controller
             vendor: Intel Corp.
             capabilities: isa bus_master
        *-ide
             description: IDE interface
             product: 82801DBM (ICH4) Ultra ATA Storage Controller
             vendor: Intel Corp.
             configuration: driver=PIIX IDE
           *-ide:0
              *-disk
                   description: ATA Disk
                   product: IC25N040ATMR04-0
                   vendor: Hitachi
                   bus info: ide@0:master
                   logical name: /dev/hda
                   version: MO2OAD4A
                   size: 37GB
                   capacity: 37GB
                   capabilities: ata dma lba iordy smart security pm apm
                   configuration: apm=off mode=udma5 smart=on
           *-ide:1
                description: Channel 1
                logical name: ide1
              *-cdrom
                   description: DVD reader
                   product: QSI CD-RW/DVD-ROM SBW242C
                   logical name: /dev/hdc
                   capabilities: atapi cdrom removable nonmagnetic dma lba iordy audio cd-r cd-rw dvd
                   configuration: mode=udma2
        *-serial UNCLAIMED
             description: SMBus
             product: 82801DB SMBus
             vendor: Intel Corp.
        *-multimedia
             description: Multimedia audio controller
             product: 82801DB AC'97 Audio
             vendor: Intel Corp.
             capabilities: bus_master cap_list
             configuration: driver=Intel ICH
        *-communication
             description: Modem (Generic)
             product: 82801DB AC'97 Modem
             vendor: Intel Corp.
             capabilities: generic bus_master cap_list
             configuration: driver=Intel ICH Modem
  *-network
       description: Ethernet interface
       logical name: wlan0
       capabilities: ethernet physical
       configuration: broadcast=yes ip=xxx.xxx.xxx.xxx multicast=yes

Chapter 3. CPU

The pentium mobile supports "speedstepping" which means that you can throttle it to save power. To activate it, just enable the following options:

Power management options (ACPI, APM)  --->
  CPU Frequency scaling  --->
    CPU Frequency scaling
    Default CPUFreq governor (userspace)
    'performance' governor
    'powersave' governor
    CPU frequency table helpers
    Intel Enhanced SpeedStep

Now you can control the speed of your cpu like this:

echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo 600000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed

sets the processor to the minimum of 600MHz and

echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo 1600000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed

sets it to the maximum of 1.6GHz.

Together with ACPI it is a real power saver: If my laptop is on battery, it runs with 600MHz, and as I plug in the cable, it instantly switches to 1.6GHz. For this I wrote some small scripts:

In /etc/acpi/default.sh I defined the action for the battery switch:

        battery)
                /scripts/switchspeed
                ;;

with the /scripts/switchspeed being the following:

#!/bin/sh
batstate="`/scripts/battery-cable`"
if [ $batstate == "cable" ] ; then
        /scripts/cpumax
        echo "CPU@performance - we're on cable"
        logger "CPU@performance - we're on cable"
else
        /scripts/cpumin
        echo "CPU@minimum - we're on battery"
        logger "CPU@minimum - we're on battery"
fi

The /scripts/battery-cable checks if we are on cable or on battery:

#!/bin/sh
echo `cat /proc/acpi/ac_adapter/ACAD/state | sed s/^.*off.*$/battery/ | sed s/^.*on.*$/cable/`

I know that there is a predefined battery-script in /etc/acpi, but I noticed that too late... ;)

Now my laptop runs approx. 5 hours on battery, and the longest time (I forgot to plug in the cable over night) at university was 4 whole lectures (6 hours), but with closing the lid everytime there was nothing to write... And without wlan and such things.

Chapter 4. Video

Resolutions, BIOS and Acer

The biggest problem with the graphics display is that the BIOS lacks the information that it can display 1400x1050 - only 1280x1024 and 1600x1200 is there. That's the reason the framebuffer can't be run with the native resolution and the BIOS has to be patched with 855resolution before starting X.

I contacted Acer on 2004-11-20, complaining about that problem and asking them to provide a fully functional BIOS. Two weeks later the answer is there; Acer refuses to provide a new BIOS because the pre-installed operating system (Windows) works ok with it. That's all, they won't support non-ms people.

Framebuffer

The display supports a SXGA+ resolution of 1400x1050 pixels. I've spent a time trying to run the framebuffer at this resolution, but failed - now it runs at 1280x1024.

The grub setting for this resolution is just a

vga=775

so that the grub conf looks like this:

default 1
timeout 1

title=Gentoo kernel 2.6.4
root (hd0,0)
kernel /kernel-2.6.4-gentoo root=/dev/hda3 vga=775

title=Gentoo kernel 2.6.7
root (hd0,0)
kernel /kernel-2.6.7-gentoo root=/dev/hda3 vga=775

XFree

That was a very hard one: The BIOS says that 1400x1050 is not supported, so XFree doesn't recognize this as a possible resolution. The solution came with a tool called 855resolution, wich can be found at http://perso.wanadoo.fr/apoirier/. This patches the BIOS everytime the X display manager is started (patch is not permanent). All you need to do is:

855resolution 5a 1400 1050

and all works. I embedded this in the xdm start script at /etc/init.d/xdm:

start() {
        setup_dm
        # run 855-script for intel graphics card in full 1400x1050
        /scripts/855

        # set the cpu to the right speed
        /scripts/switchspeed

...

The /scripts/855 just contains the 855resolution call. Another thing you see here is the switchspeed script which changes sets the CPU speed for battery and cable differently on boot.

Parts of my /etc/X11/XF86Config looks like this:

Section "InputDevice"
 Identifier  "Keyboard1"
 Driver      "Keyboard"
 Option "AutoRepeat" "500 30"
 Option "XkbRules"      "xfree86"
 Option "XkbModel"      "pc104"
 Option "XkbLayout"     "de"
 Option "XkbVariant"    "nodeadkeys"
EndSection


Section "InputDevice"
 Identifier             "Touchpad"
 Driver                 "synaptics"
 Option "Protocol"      "ImPS/2"
 Option "Device"        "/dev/psaux"
 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 "VertScrollData"        "100"
 Option "MinSpeed"      "0.06"
 Option "MaxSpeed"      "0.12"
 Option "AccelFactor"   "0.0010"
 Option "SHMConfig"     "on"
EndSection

# USB-Mouse
Section "InputDevice"
 Identifier             "USBMouse"
 Driver                 "mouse"
 Option "Device"        "/dev/usbmouse"I
 Option "Protocol"      "IMPS/2"
 Option "ZAxisMapping"  "4 5"
EndSection


Section "Monitor"
    Identifier  "Acer Travelmate 6003LCi"
    HorizSync   28-65
    VertRefresh 60
EndSection 


Section "Device"
    Identifier  "Acer Travelmate 6003LCi"
    Driver      "i810"
EndSection

Section "Screen"
    Identifier  "Screen 0"
    Device      "Acer Travelmate 6003LCi"
    Monitor     "Acer Travelmate 6003LCi"
    DefaultDepth 24

    Subsection "Display"
        Depth       8
        Modes       "1400x1050" "1280x1024" "1024x768" "800x600" "640x480"
        ViewPort    0 0
    EndSubsection
    Subsection "Display"
        Depth       16
        Modes       "1400x1050" "1280x1024" "1024x768" "800x600" "640x480"
        ViewPort    0 0
    EndSubsection
    Subsection "Display"
        Depth       24
        Modes       "1400x1050" "1280x1024" "1024x768" "800x600" "640x480"
        ViewPort    0 0
    EndSubsection
EndSection


Section "ServerLayout"
 Identifier  "Simple Layout"
 Screen "Screen 0"

 InputDevice "Touchpad" "CorePointer"
 InputDevice "Keyboard1" "CoreKeyboard"
 InputDevice "USBMouse" "AlwaysCore"
EndSection

Section "DRI"
   Mode 0666
EndSection

Intel graphics drivers

Note

The XFree mentioned above has been replaced with an X.org 6.8.2 server. All future documentation will refer to this one.

X.org provides a driver for Intel based graphics chipsets, the i810. Unfortunately, glxgears is somehow slow (around 600fps), and I wanted to replace the X.org driver (which are generally built for stability) with the one Intel provides on its website.

They have two files for the driver:

  • dri-I915-v1.1-20041217.i386.rpm

  • i915Graphics.tar.gz

The first one didn't install, but as I don't like rpms on a Gentoo box, I tried the driver compilation via the install.sh script in the tar.gz driver package. It has a menu which guides you through the installation process. However, compilation failed with the message:

Compiling new agpgart module...
Compiling DRM module...
ERROR: Kernel modules did not compile

The dri.log then contained the following lines:

make -f Makefile.linux DRM_MODULES=gdg.ko modules
make[1]: Entering directory `/data/download/intel855/dripkg/drm'
make -C /lib/modules/2.6.13/build  SUBDIRS=`pwd` DRMSRCDIR=`pwd` modules
make[2]: Entering directory `/usr/src/linux-2.6.13'
  CC [M]  /data/download/intel855/dripkg/drm/gdg_drv.o
In file included from /data/download/intel855/dripkg/drm/gdg_drv.c:17:
/data/download/intel855/dripkg/drm/drm_agpsupport.h:47: error: syntax error before '*' token
... (usual stuff which follows the first error)

I wrote to Intel support asking for help or an updated driver. The answer came one day later:

The support we provide for Linux* is limited to providing drivers. For assistance in other support topics, please contact your Linux* vendor.

They are telling me that they provide drivers, and if they don't work it's my problem? If they really mean this seriously, Intel just lost a customer.

Second display

The second display works fine if you attach the vga adaptor before booting the laptop. I had some presentations with beamers at 1400x1050 resolution; works like a charm.

If you connect the external vga adaptor later, you can change the display used for output with Fn+F5. If you do this, the upper third (640x480), the upper fourth (800x600) or the upper fifth (1024x768) of the screen is scrambled and not usable. The rest of the screen is moved down, so that you won't see your kicker (task bar). Perhaps that wouldn't be soo bad, but the mouse cursor uses the whole screen, so that you've got to click 50px above the button to activate it. Very annoying.

Note

The screen stays scrambled even if you are back to "LCD only"-mode. Switch to a console and switch back to X, and it's nice again. No need for restarting X.

When using the "auto" BIOS mode and the second device attached while booting, only the second display is used.

The usable solution comes when using the "both" BIOS mode. The screen contents are on both screens, but the borders (approx 30px) are cut off. You can switch the resolution with krandrtray or whatever, but even at 1024x768 the borders are missing. But this mode can be used for presentations; I already did it.

Note

If you are in "both" mode, DON'T use the Fn+F5 switch.

A notable thing is that you can drive your LCD at 1400x1050, for the second display it is downscaled. But that doesn't look nice.

The solution

There are two tools written for the i855 chipsets which allow switching the second crt on and off:

  • Connect the external vga before booting

  • i810switch

    This is a universal tool for all chipsets based on the i810 one, and the i855 belongs to that group. With the simple call

    i810switch crt on

    the second display gets active and displays even the 1400x1050 resolution (if the monitor supports it). Now it's pretty unusable as the picture flickers really bad. Try the next tool:

  • i855crt

    This program does the same as i810switch, but only for 855GM chipsets and with a different technique. Do a simple

    ./i855crt on 1024x768@85

    and the second display works fine. 60Hz and 85Hz seem to be supported in every resolution, 70Hz not. Alas the 1400x1050 resolution does not work...

    But with Ctrl+Alt+(plus|minus on keypad) you can shrink the resolution, but have the virtual screen still on 1400x1050, meaning that you can scroll your screen. The scrolling does not work on the second display; the scroll position of the time the script has been executed is kept.

DVI output

The laptop has a DVI-D socket, which means that you can connect digital display only and have to use the second vga socket for analog devices.

Not tested - I don't own a display with DVI input.

TV-Out

There is a S-Video out at the back of the notebook. I tested it the same way as the second display, but the BIOS setting has no influence on the output. The screen contents are not shown, even not when booting.

If I use the Fn+F5 key kombination, screen and TV are totally distorted. And it works only in 640x480 and 800x600, other resolutions give no picture on the TV.

Chapter 5. Networking

Table of Contents

Ethernet
Wireless LAN
Modem

I got all the networking things working; and they work well. Just the gigabit ethernet wasn't tested for full gigabit speed, cause I've got no gigabit switches around ;)

Ethernet

You just have to activate

Device Drivers -->
  Networking support -->
    Ethernet (1000 Mbit) -->
      Broadcom Tigon3 support

and it works like a charm.

Wireless LAN

I'm using the ipw2200 version 1.0.3, intels official linux wlan driver. It works like a charm - except that the orange LED at the laptop front does not work.

Before ipw2200 was usable, I used the ndiswrapper to use the windows driver. This had the advantage that the LED worked, but also caused the laptop to hang once a two days (windows drivers..).

Here is my wlan-startup script as it is not started during boot:

/sbin/modprobe ipw2200

/etc/racoon/setkey.conf
/usr/sbin/racoon

/usr/sbin/iwconfig wlan0 mode Managed
/usr/sbin/iwconfig wlan0 nickname "bogo"
/usr/sbin/iwconfig wlan0 key restricted ########################
/usr/sbin/iwconfig wlan0 essid "####################"

/sbin/ifconfig wlan0 xxx.xxx.xxx.xxx broadcast xxx.xxx.xxx.255 netmask 255.255.255.0
/sbin/ifconfig wlan0 up

/sbin/route add default gw xxx.xxx.xxx.xxx

Note

The racoon is just for secure networking at my university, an you probably won't need it.

To shut it down, just make a

rmmod ipw2200

or press the wlan-button at the laptop front - this works nice.

Modem

Normally I don't need it, because my SuSE acts as a gateway, but I had some free hours and got it working (thanks to the gentoo forum thread http://forums.gentoo.org/viewtopic.php?t=129853.

In kernel 2.6.7 (perhaps also earlier) there is the option

Device Drivers --->
  Sound --->
    Advanced Linux Sound Architecture  --->
      PCI devices  --->
        Intel i8x0/MX440; AMD768/8111 modems (EXPERIMENTAL)

which gives you the basic drivers. After compiling this as a module, I changed the /etc/modules.d/alsa the following way:

alias snd-card-0 snd-intel8x0
alias snd-card-1 snd-intel8x0m
...
options snd cards_limit=2

(just added the second card and set up the card limit). To use it, modprobe it:

modprobe snd_intel8x0m

Now you need the slmodem application which gives you the modem as a usable device at /dev/ttySL0 (http://www.smlink.com).

Note

First I compiled the slmodem with alsa support and the slmodemd always told me "ALSA support is not compiled in". I didn't read the readme carfully enogh; they said "cd modem" which I forgot...

Now just set up wvdail and pppd (see the gentoo forum thread for this), don't forget to disable carrier detection with

Carrier Check = no

in /etc/wvdail.conf and live happy.

I had some with name resolution and although the access rights to /etc/resolv.conf had been set correctly, only root could make a ping to cweiske.de, normal users not. The wvdail or pppd change the resolv.conf when the connection is established, and only root can access this file... do a chmod after the connection in your script, and you're done..

Note

If you use a route on e.g. eth0, it is wise to shut this interface down before calling wvdail.

Chapter 6. Sound

The ALSA-sound works out of the box if you activate it in the kernel. You should add a

ALSA_CARDS="snd-intel8x0"

in your /etc/make.conf before emerging the alsa things.

To be able to have multiple applications playing sounds, I changed the ~/.asoundrc:

#/home/cweiske/.asoundrc
pcm.ossmix {
        type dmix
        ipc_key 1021
        slave {
                pcm "hw:0,0"
                period_time 0
                period_size 1024
                buffer_size 8192
                rate 48000
        }

        bindings {
                0 0
                1 1
        }
}

pcm.!default {
        type plug
        slave.pcm "ossmix"
}

pcm.dsp0 {
        type plug
        slave.pcm "ossmix"
}

ctl.mixer0 {
        type hw
        card 0
}

Chapter 7. Keyboard

It is just a normal keyboard with some extra keys: Email, "World" orwhatever, "P1" and "P2" as well as some audio keys (Fn+Up/Down/F8). "P1" and "P2" don't generate any scancode. The other ones can be added to your personal .Xmodmap:

keycode 176 = XF86AudioRaiseVolume
keycode 174 = XF86AudioLowerVolume
keycode 160 = XF86AudioMute
keycode 236 = XF86Mail
keycode 178 = XF86WWW

Some words towards Acer: Although it's a relly nice laptop with a nice keyboard, the "<"-Key left to the RIGHT shift is a pain!

There is a driver called acerhk which gives you and me access to the buttons which don't generate scancodes. You just have to load the module and execute the following:

setkeycodes e074 89
setkeycodes e073 90
setkeycodes e025 91
setkeycodes e026 92
setkeycodes e027 93
setkeycodes e056 94
setkeycodes e055 95
setkeycodes e057 120
setkeycodes e058 121

When you have done this, you can extend the .Xmodmap file:

keycode 123 = XF86Launch1
keycode 128 = XF86Launch2
keycode 127 = XF86Support
keycode 129 = XF86Option
keycode 120 = XF86Standby
 keycode 225 = XF86Sleep
keycode 139 = XF86LaunchA
keycode 134 = XF86LaunchB
keycode 131 = XF86LaunchC
 keycode 229 = XF86LaunchD

I know that it looks weird that the keycodes don't match, but X somehow rewrites them. Note that the sleep button (Fn+F4) can't be used.

Chapter 8. Touchpad

Table of Contents

Horizontal scrolling

Although the settings are described in the Video/XFree section I use this place to tell you that you have to enable PS/2 support in the kernel!

I deactivated it because there are no PS/2-Ports at the laptop, but the touchpad needs it... It took me 2 days to figure this out.

Even the scrolling works in vertical AND horizontal direction...

Horizontal scrolling

If you have problems getting this to work (it does definitely work in Opera), start xev in a terminal. Move your mouse above the window and press the horizonal scroll buttons. You should get "ButtonPress" and "ButtonRelease" events. The third line tells you which button is recognized: Perhaps button 8 and 9? If yes, that's the source of your problem.

Normally, vertical scroll wheel is buttons 4 and 5, and the horizontal is 6 and 7. You can check the physical-virtual button assignment by executing xmodmap -pp and change it via

xmodmap -e 'pointer = 1 2 3 4 5 8 9 6 7 10 11 12'

This command swaps the assignments of the buttons 8 and 9, making them be reported as virtual buttons 6 and 7 - what I needed to make it work here.

Chapter 9. Firewire

External harddisk

I recently bought an external harddisk for backups, using FireWire to connect it - as USB is too unstable for me. To use it, I need the following modules:

  • ieee1394

  • ohci1394

  • sbp2

I had some problems getting the drive to work, because you have to do all in a certain order:

  1. Don't connect the disk/cable!

  2. Load the three modules listed above in the given order

  3. Connect the cable now

  4. Do a cat /proc/scsi/scsi to see if something happened, or a classical dmesg

  5. Mount the harddisk

Whenever I attached the cable (with powered harddrive) before loading the modules, I never got the disk working.

I also had another problem: Copying from the disk was incredible slow, taking about 20 minutes for 50Mib. A dmesg showed me the following lines:

Nov  1 23:18:33 bogo ieee1394: sbp2: aborting sbp2 command
Nov  1 23:18:33 bogo scsi0 : destination target 0, lun 0
Nov  1 23:18:33 bogo command: cdb[0]=0x2a: 2a 00 00 01 00 d1 00 00 06 00
Nov  1 23:19:03 bogo ieee1394: sbp2: aborting sbp2 command

Everywhere those "aborting sbp2 command" lines. Searching the web for that string unveiled the solution: I need an extra module parameter, serialize_io=1. I added it to /etc/modules.conf, had no time to test it and came back two weeks later with the same problem. What happened? The file had been re-generated by modules-update, and my changes were gone. This time I did it correctly and created a new file /etc/modules.d/sbp2, filling it with the following line:

options sbp2 serialize_io=1 max_speed=2

After that I run modules-update causing the modules.conf to be regenerated, and since then my disk works fine. I doubt that the max_speed=2 parameter is necessary, but I have no means to change it as it works :)

Digital video camera

I used a Panasonic NV-DS29 digital video camera together with the Kino video editing program to cut movies over firewire. You need some extra modules like raw1394 for it; and it works.

Chapter 10. Infrared

Table of Contents

IrDA
LIRC

The Acer support told me that the IrDA functions are on the motherboard's LPC chip. The chip is called SIO LPC47N227.

IrDA

Although I don't need it, this gave me more success feelings than lirc. Much more.

The basic thing is to enable IrDA support in the kernel

Device Drivers --->
  Networking support --->
    IrDA (infrared) subsystem support  --->
      IrLAN protocol
      IrNET protocol
      IrCOMM protocol
      Ultra (connectionless) protocol
      Infrared-port device drivers  --->
        IrTTY (uses Linux serial driver)
        IrPORT (IrDA serial driver)
        NSC PC87108/PC87338

and here my irda-up script:

/bin/setserial /dev/ttyS1 uart none
/sbin/modprobe nsc-ircc io=0x2f8 irq=3 dma=1
/usr/sbin/irattach irda0

LIRC

It just doesn't want to work. I've spent 5 whole days with this, and still doesn't work.

The port is recognized at startup when IrDA is activated in the BIOS:

# dmesg | grep tty
ttyS1 at I/O 0x2f8 (irq = 3) is a NS16550A

On the smsc.com website they say, that Customer IR is supported... I'll try the smsc kernel drivers.

Chapter 11. USB

The Travelmate has 4 USB 2.0 ports. I am regulary using an USB mouse, and my Canon LiDe 30 scanner as well as the Lexmark Z65 work without any problems on the ports. I was even able to get access to a digital camera which I connected via the USB cable.

Chapter 12. PCMCIA

PCMCIA alone

I tested it with a PCMCIA network card, and it works fine. The smartcard reader is also recognized as such a device.

You need to enable the following things in the kernel:

Bus options (PCI, PCMCIA, EISA, MCA, ISA)  --->
  PCMCIA/CardBus support  --->
    PCMCIA/CardBus support
    CardBus yenta-compatible bridge support

I made them both as modules, and so I do a

modprobe pcmcia_core
modprobe ds
modprobe yenta_socket

to activate them. I'm not sure if I need the pcmcia-cs package from sourceforge, because cardctl and cardmgr were there before I installed it.

Smartcard reader

The card reader is made by O2Micro, and finally (2005-10-17) there is a working open source driver for it!

If you do a cardctl ident you will see the following output:

Socket 0:
  no product info available
Socket 1:
  no product info available
Socket 2:
  product info: "O2Micro", "SmartCardBus Reader", "V1.0"
  manfid: 0xffff, 0x0001

The driver can be found at the MUSCLE driver page. I have kernel 2.6.13 with version 2.0.3 of the driver running nearly without problems. Get the driver, unpack it, do the ./configure-release. Then modprobe the yenta_socket and then the newly installed ozscrlx module. Install the sys-apps/pcsc-lite gentoo package. Now start the pcmcia and the pcscd daemons. Run the pcsc_scan program and insert a smartcard - you will see the card ATR and perhaps even the name of it.

Next thing I need to figure out is how to get gpg to store the keys on the card, and how to automatically log in into kdm when the smartcard is inserted. And if kwallet can store the passwords on the card. Unfortunately, gpg doesn't recognize the card or the driver has a bug - but the reader is recognized.

There shall be a windows tool which allows you to create the key and make the BIOS to require it while booting. So this _should_ work if you use the preinstalled windows, create the key, set the bios config with the tool and install Linux after all this. But since my first action was to remove windows, I don't have any chance to test this.

Chapter 13. Power consumption

Between christmas and new year 2004, I bought an energy counter. You plug it into the socket and attach the desired device to it - and it displays which voltage, amperage, power etc. it uses.

The first thing I tested was my Travelmate here are the results:

Table 13.1. Power consumption of my Travelmate

DeviceStateConsumption in Watt
AC adaptornot plugged into laptop6 W
connected with off-state laptop, not loading0 W
Laptoploading, 1.6GHz37 W
loading, 600MHz37 W
loaded, 1.6GHz32 W
loaded, 600MHz27 W
loaded, LCD off, 1.6GHz27 W
loaded, LCD off, 600MHz22 W

Note

The "loading" states were mesured when the battery was loaded about 50%. With increasing percentage (from 85 or so) the laptop uses less power, even when loading.

Note

It seems not to make a difference if the machine is idle or compiling something - it uses the same power.

All in all: I never thought the laptop would consume so few power. My desk light needs 20W, and with 600MHz and LCD off the notebook is nearly equal.

For those who wonder: In Germany we have a voltage of 250V.

Chapter 14. Additional hardware

Here is my experience with some other pieces of hardware I use together with my notebook.

Summary: Getting things to work on Linux isn't problematic in the most cases. There is plenty of help in the form of mailing lists and forums out there, and many problems have already been solved.

A growing number (but still too few) hardware producers support Linux, some tell they will in the near future, and others (very bad example: Canon) tell they haven't any drivers, and won't produce some in the near future. Please avoid buying products of this vendors, or at least nerve them with emails asking for Linux support. They can't ignore us forever.

Lexmark Z65

This tool is a printer convenient for printing normal text and photos as well. Main problem was to get the right driver, as Cups doesn't have it by default.

Lexmark's US website provides some drivers for SuSE/Redhat 7.x, but they aren't really helpful as they don't work. Maybe it has something to do with the POSIX change problem, but who cares.

All you need is the "Z65.ppd" which is packed in the installer. After copying it from /tmp/... while the installation program is crashing, you can use the KDE printer manager to import the file while doing a new printer install. That's all, works without problems.

Note

Before the Linux driver had been released I emailed the (german) Lexmark support: They should provide a driver or exchange the printer with a one which is supported on Linux. They agreed to exchange it; but (un?)fortunately I found the driver on their US website and didn't need to send the printer. Anyway, it was a honest offer.

Note

I would not recommend to buy any printer from Lexmark. They are a pain in the Popo to set up and get them working. Take an Epson instead.

CanoScan LiDE 30

A small flatbed scanner, works without problems using SANE.

Apart from getting it working by myself, I emailed Canon if they have Linux drivers for it. They replied with a standard email telling me that they develop drivers exclusive for Windows and Mac only. There may be drivers for Linux on the internet, but Canon doesn't support them and doesn't recommend their use.

Acer Bluetooth Dongle BT-600

As I don't have an in-built bluetooth module (resp. Acer charges 300€ for it), I use the USB dongle to connect the laptop with my mobile (Sony Ericsson T 630). To get it working, you just need the bluetooth modules in the kernel.

I can use the mobile connection to make calls, read the SMS list and sync the addressbook with kabc using kmobiletools. A small app called "btcid" displays incoming calls on the notebook's LCD (with name and number).

Canon digital IXUS IIs

My girlfriend got it christmas 2004, and so I needed to get it working with my Linux. The "Digikam" frontend for libgphoto (UPT mode) makes a nice job transferring the pictures, but deleting is a pain - only every second picture gets deleted, and so deleting it via the camera built-in function is a lot faster. But that seems to be a bug in libgphoto, or in the camera. We'll see.

Transferring the pictures takes about 2 second per picture; a friend of mine told me that the windows version is really faster, transferring multiple pictures per second. I'll contact the libgphoto mailing list for the two problems.

When asking Canon for drivers (again; I think they're getting nerved :)) for the camera (as Windows and Mac discs were delivered with the cam), they replied with the same standard mail I got last time. Just this time a list with links for printer driver web pages for Linux was appended. Does my camera need a printer driver???

Logitech USB Mouse MX310

With the help of "logitech_applet", I am able to set the resolution of the mouse from 400 to 800dpi. Since I don't want to do this everytime I plug in the mouse by hand, an udev-rule comes to help: Just create the file /etc/udev/rules.d/10-user.rules and put in the following line (yes, it's one single line):

SYSFS{manufacturer}=="Logitech", SYSFS{product}=="USB-PS/2 Optical Mouse",
 NAME="input/%k", MODE="0644", RUN+="/usr/sbin/logitech_applet -s 800"

I found this at the Gentoo udev wiki entry.

Chapter 15. Version + author

This document has been written by Christian Weiske and is available at www.cweiske.de

Table 15.1. Version list

1.013.07.2004initial version
1.115.07.2004PCMCIA, second display, tv-out, links
1.225.08.2004second display is working
1.2102.09.2004PCMCIA has been tested, USB, extra keys
1.2207.12.2004second display works perfect; acer email answer arrived; ipw2200 is usable
1.310.01.2005power consumption, additional hardware
1.3117.10.2005smartcard reader works (nearly)
1.3906.11.2005Firewire text, got the IDs right (have to set the id attributes at the section tag, not the title)
1.4024.11.2005Intel doesn't fix their drivers.


I want to say thanks to a number of people whose documents helped me a lot:

Bernd Wurst with his article on the TM 800
Jan De Luyck and Linux on Acer TM 800
Gentoo support forums
TuxMobil.org
xmlmind.com for the nice docbook editor with which I'm writing this document now

This document is licensed under a Creative Commons license.