Acer Travelmate 291LCi & SuSE Linux 9.3

Original version created 02 May 2004 with focus on SuSE 9.1 and some gentoo 2004.0 -- mainly inspired by Joan Tur. Eivissa from Spain and his page about the Acer TM291LMi with Debian. Revised 02 Nov 2005, now focussing on SuSE 9.3.

This report is listed at TuxMobil - Linux on laptops, PDAs, mobile phones.
TuxMobil - Linux on Laptops, PDAs and mobile Phones


I created this page (I should rather say: adapted the page of Joan) for two reasons:
  1. to let you know the experiences I have made with this laptop and my favorite Linux distribution SuSE and
  2. to get solutions for the very few problems that I have (namely IrDA, FN keys and 3D). So please contact me if you have any suggestion or find errors: mader at imtek dot de

Updates -- November 19+22, 2005

I found new information about KDE 3.4.x and the extra keys (volume up/down, mute, etc) AND I had the time to test LCD/CRT Switching.

Editorial -- November 02, 2005

I still receive email from time to time from other people with extremely helpful suggestions about my remarks on this laptop and my experiences with SuSE 9.1. Some also tell me that this and that already works fine for them -- and they are usually right: Most stuff also works perfectly fine for me, too -- I just didn't update this site due to a lack of time. To make a long story short: I'm now using SuSE 9.3 and everything besides the volume keys (under KDE, that is!) works beautifully. The TV Out is still untested so that I don't know. Also, I haven't hooked it to a beamer, so no news on that, either. This laptop and probably the many similar ones from Acer (without too much bells and whistles like software enabled buttons etc.) is just about perfect for use with a recent Linux distro! The TM 291LCi is part of Acer's 290 series, so most of the information should be valid for all TM 29x and maybe future models.

Content

Specifications

lspci

dionysos:~ # lspci
0000:00:00.0 Host bridge: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to I/O Controller (rev 02)
0000:00:00.1 System peripheral: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to I/O Controller (rev 02)
0000:00:00.3 System peripheral: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to I/O Controller (rev 02)
0000:00:02.0 VGA compatible controller: Intel Corporation 82852/855GM Integrated Graphics Device (rev 02)
0000:00:02.1 Display controller: Intel Corporation 82852/855GM Integrated Graphics Device (rev 02)
0000:00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 03)
0000:00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 03)
0000:00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 03)
0000:00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 03)
0000:00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 83)
0000:00:1f.0 ISA bridge: Intel Corporation 82801DBM (ICH4-M) LPC Interface Bridge (rev 03)
0000:00:1f.1 IDE interface: Intel Corporation 82801DBM (ICH4-M) IDE Controller (rev 03)
0000:00:1f.3 SMBus: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 03)
0000:00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 03)
0000:00:1f.6 Modem: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 03)
0000:01:00.0 FireWire (IEEE 1394): VIA Technologies, Inc. IEEE 1394 Host Controller (rev 80)
0000:01:01.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
0000:01:02.0 Network controller: Intel Corporation PRO/Wireless LAN 2100 3B Mini PCI Adapter (rev 04)
0000:01:04.0 CardBus bridge: ENE Technology Inc CB1410 Cardbus Controller (rev 01)

Why SuSE?

After having played with SuSE 9.0 for a while I decided to give gentoo 2004.0 a try because I didn't need a productive system at that time. The installation runs quite well if you make sure you read the installation manual carefully and have a working internet connection - I gave up on the networkless installation. I chose the most recent kernel (gentoo-dev-sources, 2.6.5) and everything worked! Compiling XFree and KDE took about 13hrs, I guess, and I was lucky that I had a working XF86config from my SuSE 9.0... Compiling all additional software took another 6hrs. But the system was the fastest I have ever seen before! Also KDE 3.2.1 came untainted (unlike SuSE's...) and I really liked it. But after a emerge -uD world (which I did to get KDE 3.2.2) I was asked to perform etc-update and the resulting system was crippled because the files in /etc got replaced with new defaults :( -- due to something I did wrong I guess. Gentoo is a pretty difficult and time-consuming distribution when it comes to maintaining and setting up additional features (like printer, PCMCIA wireless card and so on), and this was the final disappointment I needed to decide it was time for a more comfortable distribution... Sorry for this little lengthy intro. I had to wait another two days, and on the first day of availability my dear girlfriend went to the shop and bought the 9.1 Professional Student Edition for me. I've had absolutely no trouble at all installing SuSE 9.1 (and the 9.0 earlier, too). The only thing that needs a tweak right away: the xorg.conf.

xorg.conf

The default xorg.conf is fine as long as no second mouse is wanted -- unfortunately most people will want the option to plug in a USB or PS/2 mouse when needed. For those people here's my working and productive xorg.conf. It's generally easy to edit the Xserver settings with SuSE's sax2 (SuSE Advanced Xconfiguration -- preferentially started from runlevel 3) and to set up stuff like a second mouse, but for any reason SuSE assigns both mice the same device:
  Option       "Device" "/dev/input/mice"
This will work, but the speed of the mice will be doubled :/ I assigned the above input to an external mouse and this one to the internal touchpad:
  Option       "Device" "/dev/mouse"
This is what those sections will look like:
Section "InputDevice"
  Driver       "synaptics"
  Identifier   "Mouse[1]"
  Option       "AccelFactor" "0.04"
  Option       "BottomEdge" "1650"
  Option       "CircScrollDelta" "0.1"
  Option       "CircScrollTrigger" "2"
  Option       "CircularScrolling" "1"
  Option       "Device" "/dev/mouse"
  Option       "EdgeMotionMaxSpeed" "15"
  Option       "EdgeMotionMinSpeed" "15"
  Option       "Emulate3Buttons" "on"
  Option       "EmulateMidButtonTime" "75"
  Option       "FingerHigh" "15"
  Option       "FingerLow" "14"
  Option       "HorizScrollDelta" "20"
  Option       "InputFashion" "Mouse"
  Option       "LeftEdge" "120"
  Option       "MaxSpeed" "0.5"
  Option       "MaxTapMove" "110"
  Option       "MaxTapTime" "180"
  Option       "MinSpeed" "0.2"
  Option       "Name" "ALPS;Touchpad"
  Option       "Protocol" "auto-dev"
  Option       "RightEdge" "830"
  Option       "SHMConfig" "on"
  Option       "TopEdge" "120"
  Option       "UpDownScrolling" "1"
  Option       "Vendor" "Sysp"
  Option       "VertScrollDelta" "20"
  Option       "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
  Driver       "mouse"
  Identifier   "Mouse[3]"
  Option       "Buttons" "7"
  Option       "Device" "/dev/input/mice"
  Option       "InputFashion" "Mouse"
  Option       "Name" "USB-Mouse;ExplorerPS/2 on USB"
  Option       "Protocol" "ExplorerPS/2"
  Option       "ZAxisMapping" "4 5"
EndSection

...

Section "ServerLayout"
  Identifier   "Layout[all]"
  InputDevice  "Keyboard[0]" "CoreKeyboard"
  InputDevice  "Mouse[1]" "CorePointer"
  InputDevice  "Mouse[3]" "SendCoreEvents"
  Option       "Clone" "off"
  Option       "Xinerama" "off"
  Screen       "Screen[0]"
EndSection

Touchpad & Mouse

As said, the internal touchpad works well out of the box. With kernel version 2.4.21 there was no acceleration or scroll functionality, with the new 2.6.x and the synaptics driver both works fine without kernel rebuild! I added some options to the default xorg.conf to prevent horizontal scrolling (extremely annoying during webbrowsing where it is interpreted as go back/forward) and adjusted the tap forces to my likes, see above. In order to adapt those parameters to your specific mouse and to properely adjust the settings you'll have to install the whole synaptics package which includes the synclient utility that shows the touchpad coordinates, finger pressure forces and so on. Theoretically, you could install ksynaptics and have a dedicated KDE Control Center module to locally setup the touchpad according to each user's preferences with full GUI comfort. Unfortunately this DID NOT work for me (albeit it worked for all the other laptops that I installed SuSE 9.3 on: a Sony Vaio and a Dell C600) and made the mouse do weird things or just plainly not do anything (depending on the ksynaptics version). Maybe this is because it has an ALPS touchpad which doesn't seem to be 100% compatible. So I prefer the systemwide settings in the xorg.conf and that works.

TV Out

I am happy to have the TV Out interface, but so far I have not tested it due to the lack of a proper adapter. Until that I will repeat the postings Joan got (at the time of writing, i.e. 1st version!):

Here's the feedback I've got (thanks to all of you who contribute with your feedback):

LCD/CRT Switching

I have never been too optimistic to have this feature work out of the box because when Fn+F5 is pressed the desktop gets corrupted (slides down about 2cm from top, the Kicker vanishes the top is ugly artefacts) and won't change back to normal :( Even worse, with a CRT plugged in the machine totally freezes. Reducing the the screen resolution to 800x600 before switching does NOT help (albeit the KRandRTray application does a very good job on that). Maybe disabling ACPI would help but this is not an option for me as I would prefer to reboot when the output is needed.

Here's how to make it work:

3D Acceleration

The onboard Intel graphics chip has very basic 3D acceleration features and SaX2 gives the option to enable them but it feels like OpenGL screensavers don't run properly (at least not within KDE -- might just be a KDE issue) and FlightGear still won't work at all. glxgears do run, though, as does GL-117.

Wireless LAN

I have a good working PCMCIA wireless LAN card (Cisco Aironet 340) so I am not dependent on the built-in Intel PRO/Wireless 2100. The good thing is it's working fine since SuSE 9.1 - and it was EASY! It uses the upcoming driver (Late enough, INTEL...) from sourceforge.net. In the early beginning it was only capable of basic infrastructure (=managed) mode without WEP. I still don't know about the ad-hoc mode but at least the WEP encryption now works fine, but -- more important -- also WPA is no problem at all, all conveniently configurable with YaST:
YaST WLAN Configuration

In 9.1 it was still necessary to download the proper firmware via the YaST Online Update (YOU) but I can't recall that I had to do this with 9.3 :) so some things are getting better. In case you are using both ethernet and wireless devices and have them configured, it is very recommendable to use the Profile Management Tool, see the Systems section in YaST. Also, configure the startup option for your ethernet cards as "on cable-connection" which will prevent Linux to set wrong routing! Very comfortable and works super good!

For completeness I will post Joan's words again:

Modem

It's recognized and YaST suggests (does it still in 9.3? I think it just worked :) to install the proper driver/module. It let's you configure the modem and even chooses the correct interface for it: ttySL0. Very good, SuSE! In the 9.0 a very lot of handworking was necessary, as I recall. The module is loaded automatically, and the Modem works! No manual driver compilation is necessary.

ACPI: Standby, Suspend, Hibernate

Unfortunately, there is a lot of confusion out there about the right names for the powersaving states.

Standby exists in two types: Standby and Suspend to RAM. In both states all parts are switched off except the RAM which means that the laptop still need some energy! The desktop computer of my dad won't turn off the power supply unit, making this pretty much useless. On some computers only Standby will work, on others only the Suspend to RAM variety does its job. The Acer TM291LCi belongs to the latter ones! You should disable the Standby option completely as it just hangs the system. Use Suspend to RAM instead and be happy. Also be sure to disable the default ACPI power button event: it cleanly shuts down the system so once it's back to life it will turn off right away:
YaST ACPI Configuration

Resuming works very fast compared to Suspend to Disk (which is sometimes referred to as Hibernate), where all memory contents are calculated and written to a memory image in the swap. After that, the system switches of completely! Booting shows grub, and then the swap is checked for a stored image.

Compared to a regular shutdown STD may save only little time (in 9.3 about 60%), but it's worth it to me and it seems to improve with every version of the kernel (and SuSE). The commands are conveniently available via the kpowersave button in the KDE system tray.

To test these powersaving features via commandline (e.g. to test it in runlevel 3 only without the additional risk with running X) SuSE's powersave daemon provides extensive options:
powersave -U # Suspend to Disk
powersave -u # Suspend to RAM
powersave -m # Standby
powersave -b # verbose battery info
powersave -r # current system frequency in MHz
The more basic commands using /proc/acpi/sleep bypass the powersave daemon and should NOT BE USED:
echo 3 > /proc/acpi/sleep
echo 5 > /proc/acpi/sleep

One funny bug is noticeable: when the laptop is used WITHOUT present battery and then set to Suspend to Disk (not Standby, because it can't be unplugged then!) to take it home or somewhere else -- and resumed WITH battery it is not recognized by ACPI. The laptop resumes but /proc/acpi/battery/BAT1/info is empty and kpowersave displays an empty battery. Hooking the laptop to AC is one solution, the other is to call a small script as root:
#!/bin/sh
rmmod battery
rcpowersaved restart
This resets the ACPI daemon and everything works OK. I'm pretty sure that this behavior will go away as it is only minor, and in fact there have been times when it worked fine for me, too. But I always stick to SuSE's default kernels and this is most probably a kernel issue. SuSE 10.0 might not have this bug anymore.
UPDATE:
This bug is NOT a SuSE kernel issue but a KDE bug in some 3.4.x versions of the SuSE packages: I have upgraded to KDE 3.5 and didn't notice when exactly but only that this annoying behavior is gone now.

Centrino's Speedstep

SuSE use their powersave daemon to unite all the different daemons for ACPI event-handling! To me it seems powerful -- albeit I can imagine that this will spoil some purists. You don't need tools like cpufreq and cpudyn to allow and manage stepping. Fan is almost never on and I have never before seen such a quiet notebook! Battery life depends on use, of course, but when running constantly at 600MHz (without dynamic stepping) it performs about 4-5hrs. For example you can constantly watch the current CPU-speed with watch -n 2 powersave -r or you put it on your screen with a small script (requires cat_osd for the onscreen display!). In Powersave Mode it won't speed over 600MHz, and if you further enable toggling, it speeds down to 60MHz! Fine thing! Disabling IrDA and the parallel port, both of which I don't need, further reduces energy consumption in both standby and operation (BIG thanks to Matthias Jung from Uni Dortmund for those suggestions!)

USB 1.1 & USB 2.0

Nothing to say about that: works great. Tested with various external devices (20GB 2,5"HDD in a USB2.0 CutieDX and ICY Box, several USB sticks). At this very moment I want to say something about SuSE's new concept of handling hotplug devices! Devices are now addressed a lot more dynamically than earlier: Not just /media/sda1 but the *label* of the device (if there is one) or as fallback the kind and size like 257M Removable Media in Konqueror (via kio-slave media:/). They are all mounted under /media and the mountpoints are removed after disconnecting the drives. SuSE say this is necessary as more and more hotplug-devices are used and the old system is not flexible enough for that. I think that this is a very powerful concept which will bring true plug&play, easier even than on Apple or Windows boxes! Before you unplug the devices just be sure to close all applications that access it and wait a few seconds. To get dynamic device symbols also on the desktop and not just in Konqueror (My Computer or Storage Media, respectively), right-click on the desktop and check Show Device Icons under Behavior -> Device Icons. I have had the impression earlier, that after a resume the speed of the USB ports is only that of 1.1. My quick and dirty solution to that was to call this script as root (it also helps people with a USB subsystem that doesn't "survive" the suspend/resume and plays dead:
#!/bin/sh
rmmod uhci_hcd
modprobe uhci_hcd

IrDA & Bluetooth

I have NOT yet been able to connect to my Siemens Mobile (S45i) with infrared and gscmxx so far! I did:
$ insmod ircomm-tty
$ irattach /dev/ttyS0

Somewhere I read that the correct device was /dev/ircomm1. How would I set that?
$ irattach /dev/ircomm1?
Help is appreciated!

But anyway, I don't essentially need that feature, I even disabled IrDA in the BIOS for powersaving reasons, see above. Bluetooth works fine and is easily setup with YaST. I have a fairly expensive Belkin stick (around 25EUR) but reportedly also the cheap things for 8EUR work fine. I can now access my Motorola V600 via kmobiletools (they also tell you how to connect this particular phone, it's not yet (version 0.4.3.1) totally graphical, but easy enough and it works) for address syncing and sms storage and downloading and uploading pictures and files via the OBEX file transfer tool from KDE.

Extra Buttons & Function Keys

Be sure that you set up the keyboard as "Generic 105-key (Intl) PC" in KDE (the xorg.conf-settings are done correctly by sax2, no worries, but KDE offers the possibility to overwrite those settings user specific...), otherwise the function keys are not recognized at all (try the xev in a terminal to look up the key codes) under KDE, and the <>| button only works in the US-English keyboard layout...

The two extra buttons P1 and P2 can easily be given a function with the Gnome tool ACME, also the sound buttons and the sleep button work with it, but as I am really fond of KDE (mainly because of the great Konqueror) I am still looking for an equally easy-to-use tool for this desktop environment!

Possibly the lineak daemon would work, and Matthias Jung has suggested to use KHotkeys as an at least partial graphical solution but it should also work without any other additional utility: just by mapping the corresponding keys in the local ~/.Xmodmap:
!****************
!! P1:
keycode 236 = F13
!****************

!****************
!! P2:
keycode 178 = F14
!****************

!****************
!! Fn + Esc:
keycode 223 = F15
!keycode 223 = XF86Sleep
!****************

!****************
!! Fn + End:
!keycode 160 = F16
keycode 160 = XF86AudioMute
!****************

!****************
!! Fn + Next:
!keycode 174 = F17
keycode 174 = XF86AudioLowerVolume
!****************

!****************
!! Fn + Prior:
!keycode 176 = F18
keycode 176 = XF86AudioRaiseVolume
!****************
Now you could manage those keys F13 - F18 with KHotkeys, but I had to learn that KDE already has a daemon called KMilo which is turned on by default in SuSE 9.x. If not go to Control Center --> KDE Components --> Service Manager. Then, make a backup copy of the current .Xmodmap with
xmodmap -pke > Xmodmap.save
Add the above keycodes, save it to e.g. customXmodmap (get mine here, and load it testwise with:
xmodmap customXmodmap
The multimedia buttons should now work right away. Once you're satisfied, copy that new version back to ~/.Xmodmap.

This site (in German only) also describes the procedure in great detail. It also mentions the reason for why KDE sometimes doesn't seem to honor neither the systemwide nor the local Xmodmap so that its settings have to be brought to life manually every time with the above command: it happens with enabled different keyboard layouts such as German and US-English! KDE will then overwrite the .Xmodmap at login time and with every switch of the layout. I created a small script in ~/bin and linked it to ~/.kde/Autostart and as long as the keyboard layout isn't switched the extra buttons work. This doesn't require any changes in systemwide settings or configuration files. Another way of doing this is described here in detail.

DVD/CD-RW

Very rarely the CD drive -- or more precisely: the subsystem for dynamically mounting removable media -- hangs and won't eject the CD. This happened with heavily scratched or badly burnt CDs. I use eject in a script (accessible as all the other via a desktop button).