Installing Gentoo Linux on an Acer Travelmate 8104WLMi

This is a rough guide for installing Gentoo Linux on an Acer Travelmate 8104 WLMi, a laptop/notebook from Acer's 8100 range. It is derived from a set of notes I took whilst attempting the installation myself, hence the reason it's written in the first person.

I am confident the process is repeatable but I have not actually followed the guide myself (it was derived from my written notes) so do so at your own risk!

I strongly recommend you read an entire section before attempting anything with your own system, because I describe my mistakes as well as my successes. Also, the local copies of some articles will show exactly what versions I followed - some articles, particularly the Gentoo WIKI ones, change frequently.

Very important: Make sure you back up anything you change. I created backups of all application config, kernel config, kernel and initramfs files before making a change. I also added options to /boot/grub.conf for each new kernel that I tried, so that I could easily revert to the previous config if there was a problem (as indicated by my bloated grub.conf file).

Contents | Go to top

Specification | Go to top

The Acer TravelMate 8100 Technical specifications (local copy here) give the general specs. The 8104WLMi model that I've got has a 2 GHz processor, 1024 MB RAM and a 100 GB hard disk.

Note that whilst the Acer spec says that it has a 5-in-1 card reader, Linux reports the device as a 4-in-1 card reader.

Status | Go to top

Hard disk - SATAGood.
Speedtouch USB modemGood.
XGood for my purposes. I've not set up any kind of 3D acceleration or direct rendering.
ACPIGood. Buttons, power management of hardware and CPU frequency scaling all work well.
CDR, DVDR, DVDRWGood. Audio and data only - i.e. not tried writing a DVD movie. CDRW not tested but probably functional.
Synaptics touchpadGood. Button and double-button events, multifinger taps, vertical scrolling.
PCMCIA - PC card, smartcard, 4-in-1 card readerModerate but untested. My PC card is recognised but I've not actually configured and used it. I've not tested the smartcard but expect it to work. The 4-in-1 card reader is not yet supported.

I haven't tried configuring the Fast InfraRed (FIR) or firewire (IEEE 1394) ports.

Preparing the hard drive | Go to top

The laptop came preinstalled with Windows XP and so the hard disk was already partitioned for Windows. I opted to keep XP and set up a dual boot system, mainly because it's not guaranteed that all hardware will work with Linux (hardware manufacturers still tend towards releasing device drivers for Windows and leaving Linux in the lurch).

To resize the partitions I used a Gentoo Linux based rescue CD called SystemRescueCd. It contains a number of useful tools including fdisk and QtParted.

I had to boot the CD with gentoo nodetect to prevent autodetection of hardware that caused the system to hang. Once booted, run-qtparted showed the hard disk partitioned as follows:

LabelNumberPartitionTypeStatusSizeUsed SpaceStartEnd

I used QtParted to keep all existing partitions but resize them so that Linux could fit with plenty of space. I also added a small 10 gig partition for sharing data between Linux and Windows.

Note: I kept the Acer rescue partition called PQSERVICE because I wasn't too sure whether it was needed by Windows. It isn't. I later found that it was only used by an Acer recovery tool which would completely wipe the hard disk when invoked, so I won't be using it. Besides, it was rendered useless by the resizing process ;-)

After resizing, fdisk /dev/sda shows the hard disk partitioned as follows:

/dev/sda11383307641612Compaq diagnostics
/dev/sda2*384234115727635cW95 FAT32 (LBA)
/dev/sda32342364610482412+cW95 FAT32 (LBA)
/dev/sda436471216168396737+fW95 FAT32 (LBA)
/dev/sda636553915209645182Linux swap / Solaris

Installing Gentoo 2005.0 | Go to top

I did a Gentoo Linux 2005.0 stage 3 installation, following the Gentoo Linux x86 Quick Install Guide. If you've not installed Gentoo before I recommend you follow the full Gentoo Linux x86 Handbook.

I had to boot with gentoo *** to prevent it hanging at boot.

Note: Rather optimistically I set set the CFLAGS (in /etc/make.conf) to CFLAGS="-O3 -march=pentium-m -mtune=pentium-m -pipe -ftracer -fomit-frame-pointer -ffast-math -momit-leaf-frame-pointers", according to the Gentoo forums [HOWTO] Flying with gentoo (local copy here). This allowed the kernel sources to be emerged and the kernel built, but the emerge of syslog-ng failed. Using the more conservative flags of CFLAGS="-O3 -march=i686 -pipe -fomit-frame-pointer" allowed me to emerge syslog-ng and continue (after re-emerging the kernel sources and recompiling the kernel).

I did not have network access, so the emerge of hotplug failed with the message Temporary failure in name resolution. The full message showed the URL of the desired file and the location in the portage tree that it tried to download it too. Since I still had Windows I rebooted into it, downloaded the file, copied it to the shared partition, rebooted into the Gentoo install CD, mounted the neccessary partitions, chrooted into my new system, added the shared partition to /etc/fstab, mounted the shared partition and copied the file to it's desired location in the portage tree. After doing this I could emerge hotplug and set it to start in the default runlevel.

localhost ~ # emerge -av hotplug
localhost ~ # rc-update add hotplug default

After successfully completing the steps in the installation guide and rebooting I got various Spurious ACK on isa0060/serio0 messages before the system hung with Block device /dev/sda7 is not a valid block device. The first message was stopped by adding acpi=off as a boot parameter.

To allow /dev/sda7 to be recognised properly I recompiled the kernel with SATA support for all devices and SCSI disabled. On reboot lspci | grep -i sata showed that I had an Intel Corporation 82801FBM (ICH6M) SATA Controller (rev 04), which meant that I only had to compile in support for the Intel PIIX/ICH device.

Device drivers ->
  SCSI Device support ->
    <*> SCSI disk support
    SCSI low-level drivers ->
      [*] Serial ATA (SATA) support
      [*] Intel PIIX/ICH SATA Support

Internet access with a Speedtouch USB modem | Go to top

To continue with the installation I needed network access and the only means of getting it was using a Speedtouch USB modem to access my broadband connection. I followed the The Linux Kernel Speedtouch Driver on Gentoo guide (local copy here).

After plugging in the modem, cat /proc/bus/usb/devices | grep USB showed that I needed to enable UHCI and EHCI.

S:	Product=Intel Corp. 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4
S:	Product=Intel Corp. 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB EHCI Controller

My ISP, Zen, uses PPPoA. Looking at the kernel config, I already had many of the desired options set as modules, so I changed these to be compiled into the kernel and added whatever other options were needed for UHCI, EHCI and PPPoA.

Note: The names of the menu options differed slightly to those listed in the guide. For example, the options that the guide listed as "USB DSL modem support" and "Speedtouch modem support" were called "USB ATM/DSL drivers" and "Alcatel Speedtouch USB support" respectively.

Again, because I didn't have a network I had to log into Windows in order to download the linux-atm-2.4.1.tar.gz file then copy it to the portage tree in order to successfully emerge net-dialup/ppp. Before doing so I opted to add atm as a USE flag in /etc/make.conf rather than adding it to /etc/portage/package.use.

I also used Windows to download the required firmware. Once the firmware zip file was downloaded, cat /proc/bus/usb/devices | grep -B 1 THOMSON showed that my modem was a Thomson one, which meant I needed to use the ZZZL_2.012 firmware from the zip file. Of course, in order to unzip the file I had to emerge -av unzip first.

Update Gentoo packages | Go to top

Now that the broadband connection is working, I updated the portage tree before updating all installed packages.

localhost ~ # emerge --sync
localhost ~ # emerge -av --update --deep --newuse world

etc-update wanted to replace 80+ config/init files, all of which I allowed except for the net.ppp0 ones. The new file for /etc/conf.d/net.ppp0 would have replaced some new config added when I installed the modem and was the same as the original file, so I deleted the new one. The new file for /etc/init.d/ppp0 didn't replace anything that had been added during the modem installation, so I replaced the existing one.

I'd previously read somewhere that it's recommended to rebuild the dependencies after updating the system, so I emerged gentookit and ran revdep-rebuild, which showed nothing was broken.

On reboot, the system hung when it attempted to bring up ppp.

Plugin loaded.
Connect(0.38): Resource temporarily unavailable
Oop: 0000 [#1]
(lots of debugging messages)

After rebooting into the Gentoo installation CD and chrooting to my installation, running /usr/bin/pppd call speedtch failed.

Plugin loaded.
/usr/bin/pppd: pppd is unable to open the /dev/ppp device. 
You need to create a ppp device node (...)

dmesg | less showed that the speedtouch firmware had failed to load properly, depsite the fact that speedtch-2.bin was in /lib/firmware/.

1-2: found stage 1 firmware speedtch-1.bin
1-2: no stage 2 firmware found!

After some searching it seemed that this was probably because the latest atm ebuild required the latest kernel. I followed the Gentoo Linux Kernel Upgrade Guide (local copy here) to upgrade from 2.6.11-gentoo-r3 to 2.6.12-gentoo-r10. This solved the problem - the firmware is found and net.ppp0 starts ok.

Note: Compiling the kernel resulted in the creation of an initramfs file rather than an initrd file in the /boot directory.

Graphical environment (X Org)| Go to top

I followed The X Server Configuration HOWTO (local copy here) from Gentoo.

After emerging xorg-x11, Xorg -configure failed and xorgconfig asked too many questions ;-)

Since I have an ATI graphics card, to get support for my graphics card I emerged the ati-drivers package, as mentioned in Gentoo's X Server Configuration HOWTO and also recommended by Gentoo Linux ATI FAQ (local copy here).

localhost ~ # ACCEPT_KEYWORDS="~x86" emerge -av ati-drivers

I couldn't use fglrxconfig (provided by ati-drivers) to generate the /etc/X11/xorg.conf file because it didn't list the video card. Instead, the config from Linux on an Acer Travelmate 8104WLMi - Part I (local copy here) worked a treat. X -config /etc/X11/xorg.conf worked, as did startx. A copy of my final xorg.conf file can be found at the end of this document in the Appendix: Hardware details and configuration.

Note: I hadn't emerged the x11-drm package, so I got the message "You have DRM enabled, direct rendering will not work" when I emerged ati-drivers. This I chose to ignore.

Note: At first, after copying the config into /etc/X11/xorg.conf.test, X -config /etc/X11/xorg.conf.test failed with a parse error. It turned out this was due to dodgy characters in the file. Make sure you get rid of any Windows line breaks with dos2unix /etc/X11/xorg.conf.test (you'll have to emerge it first). Also, I had to open the file, add and then remove a space character and save it again before it worked! Once the test config worked I copied it to /etc/X11/xorg.conf.

Keyboard mappings

After starting X it became apparent that the keyboard mappings were wrong. Edit /etc/conf.d/keymaps to set KEYMAP="uk" and set the "XkbLayout" option in /etc/X11/xorg.conf to "gb" (provided you want a uk/gb keyboard that is).

Polishing X

I followed the rest of The X Server Configuration HOWTO (local copy here) to set up the gdm and the fluxbox window manager.

ACPI| Go to top

The Gentoo Power Management Guide (local copy here) worked pretty floorlessly for me, at least after overcoming the DSDT problems (see later).

Note: Before finding the Gentoo Power Management Guide I followed the TIP ACPI basic configuration (local copy here) guide from the Gentoo Wiki to install the acpi acpid package. This didn't work because I didn't have ACPI support compiled into the kernel. Next I followed the ACPI: Advanced Configuration and Power Interface (local copy here) guide from The Linux Documentation Project to configure the kernel for ACPI. However, the guide was for 2.4 kernels and so the menuconfig options differed for my 2.6 kernel. The Gentoo Power Management Guide is better than both these guides because it covers everything necessary to get power management working on a Laptop - including Kernel configuration - and it's specific to Gentoo on 2.6 kernels.

The first step was to configure the kernel for ACPI support. I initially compiled these as modules like the guide suggests, but later compiled everything into the kernel.

Power management options (ACPI, APM) --->
  [*] Power Management support
  ACPI (Advanced Configuration and Power Interface) Support --->
    [*] ACPI Support
    <*> AC Adapter
    <*> Battery
    <*> Button
    <*> Video
    <*> Fan
    <*> Processor
    <*>   Thermal Zone
    (0) Disable ACPI for systems before Jan 1st this year
    [*] Power Management Timer Support
  APM (Advanced Power Management) BIOS support --->
    < > APM (Advanced Power Management) BIOS support

On reboot, the system hung after unpacking the kernel (which occurred whether or not ACPI support was compiled into the kernel or as modules).

Fixing the DSDT

Note: After configuring my machine as per the description below, I later had to apply a custom DSDT in order to prevent continuous lid events that resulted in 100% CPU usage and a flickering screen after closing the lid. See How to apply a custom DSDT to fix continuous lid events for more information.

The Linux on an Acer Travelmate 8104WLMi - Part I (local copy here) guide said that it was necessary to patch the DSDT, and a comparison between my kernel config and the one in the guide revealed that he had the custom DSDT option set and I did not.

The Gentoo Wiki HOWTO Fix Common ACPI Problems (local copy here) has a very good description of what the DSDT is and how to patch it. The DSDT resource ACPI4Linux - DSDT: View had a DSDT for the Acer Travelmate 8104WLMi here (local copy here).

For my first attempt I applied the patch to my existing initramfs, according to section "2a. Initrd Override with Bootsplash". This didn't work properly, resulting in a kernel panic at boot. After patching the kernel to support an initramfs file (rather than initrd) according to ACPI DSDT in initrd (local copy here) I had partial ACPI support. Note that I got the following messages on boot, but I'm not sure whether this is normal at this stage or not.

ACPI: Subsystem revision 20050309
ACPI: Interpreter disabled
pnp: PnP ACPI: disabled

On reboot, pressing and holding the power button powers off the PC.

At this point I started installing power management features (see next subsection, Power management scripts). All worked fine except for the battery. Querying the battery status with cat /proc/acpi/battery/BAT1/state produced AC_NOT_FOUND errors. This, according to a number of posts on the Gentoo forums, is due to a buggy DSDT.

(...) ACPI_0352: *** Error: Looking up [Z00G] in namespace, AE_NOT_FOUND
(...) search_node dfe4a160 return_node 00000000
(...) ACPI_1138: *** Error: Method execution failed [\_SB_.BAT1.BST] (Node dfe4af40), AE_NOT_FOUND

Note: I confirmed that it was the battery event causing problems by compiling the ACPI drivers as modules and then loading them one by one until the problem occurred. The module names were given in the ACPI: Advanced Configuration and Power Interface (local copy here) guide and are called button, battery, fan, ac, thermal and processor. You can load a module with modprobe [module name]. Once the problem was fixed I compiled them into the kernel, as shown above.

I tried updating the BIOS - because mine was version 3C19 and the DSDT I used was for 3C20 - using Windows and the Winphlash utility, downloaded from Acer - Utilities, software and tools. Then I tried to fix the DSDT according to Debugging the DSDT of Acer Aspire 1694WLMi, Bios 3C25 (local copy here) because the DSDT errors looked similar. Neither of these worked.

Eventually the problem was fixed by following section "3. Build-in Options for Kernel 2.6.9 and Later" in the HOWTO Fix Common ACPI Problems (local copy here) guide - something I should have done in the first place. DOH!

Note: Whilst adding kernel support for including a custom DSDT, I also disabled the "Read Custom DSDT from initrd" option.

Power management scripts | back to Fixing the DSDT

I already had power management and ACPI compiled into the kernel, done when previously following the ACPI: Advanced Configuration and Power Interface (local copy here) guide.

I installed acpid and powermgmt-base, created the battery runlevel, added the runlevel switch and added the event scripts, as per guide.

Note: There were already scripts present in /etc/acpi/ because I'd created them as part of the Gentoo Wiki TIP ACPI basic configuration (local copy here) guide. I left most of these in place because looking at them they didn't seem to conflict with any of the scripts added when following the Gentoo Power Management Guide (local copy here). One exception is the /etc/acpi/events/battery script, which I deleted because it didn't seem to do anything other than output a message and could potentially conflict with the pmg_battery event (added when following the Gentoo Power Management Guide).

Note: The actions directory mentioned in the guide didn't exist, so I had to create it with mkdir /etc/acpi/actions.

Note: A number of the scripts in /etc/acpi/ did not have executable permission, as indicated by access denied messages in /var/log/acpid. I gave them executable permission for user, group and others.

CPU frequency scaling

I already had support for CPU frequency scaling compiled into the kernel. My existing config had the 'performance' CPU frequency governer set as default, with it compiled into the kernel. As per the guide I changed the default to 'userspace' and added support for the other governers. I added these as modules because I wasn't sure at this stage which one I wanted to use.

I added support for all CPUFreq processor drivers as modules, with the intention of compiling support into the kernel when I'd later found which module worked.

The guide mentioned that I should not use "Intel Pentium 4 clock modulation" on a Pention M system because it could lead to strange results, so I disabled it.

Power management options (ACPI, APM) --->
  CPU Frequency scaling --->
    [*] CPU Frequency scaling
    [ ]   Enable CPUfreq debugging
    <M>   CPU frequency translation statistics
    [ ]     CPU frequency translation statistics details
          Default CPUFreq governor (userspace)  --->
    <*>   'performance' governor
    <M>   'powersave' governor
    ---   'userspace' governor for userspace frequency scaling
    <M>   'ondemand' cpufreq policy governor
    <M>   'conservative' cpufreq governor
    ---   CPUFreq processor drivers
    <M>   ACPI Processor P-States driver
    <M>   AMD Mobile K6-2/K6-3 PowerNow!
    <M>   AMD Mobile Athlon/Duron PowerNow!
    <M>   AMD Opteron/Athlon64 PowerNow!
    <M>   Cyrix MediaGX/NatSemi Geode Suspend Modulation
    <M>   Intel Enhanced SpeedStep
    [*]     Use ACPI tables to decode valid frequency/voltage pairs
    [ ]     Built-in tables for Banias CPUs
    <M>   Intel Speedstep on ICH-M chipsets (ioport interface)
    <M>   Intel SpeedStep on 440BX/ZX/MX chipsets (SMI interface)
    < >   Intel Pentium 4 clock modulation
    <M>   nVidia nForce2 FSB changing
    <M>   Transmeta LongRun

When I came to set up CPU frequency scaling, after installing cpufrequtils, /sys/devices/system/cpu/cpu0/ remained empty and cpufreq-info returned an error message.

No or unknown cpufreq driver is active on this CPU.

This turned out to be because I'd compiled the CPUFreq governers as modules and I'd not loaded any of them! modprobe speedstep_centrino fixed the problem and populated /sys/devices/system/cpu/cpu0/ (as recommended by a Gentoo Forums post [Howto] Power Management for your laptop using ACPI (local copy here)). I made this permanent by adding speedstep_centrino to a line in /etc/modules.autoload/kernel-2.6.

The list of available CPU frequency scaling governers is given in the file /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors.

localhost ~ # cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
powersave ondemand userspace performance

Note: The use of userspace CPU frequency governers with Intel SpeedStep was mentioned in a lot of articles. One good article about Intel SpeedStep and the ondemand governer is Enhanced Intell SpeedStep Technology and Demand-Based Switching on Linux (local copy here).

Now that cpufreq-info was working properly I continued with the guide, installing and configuring cpufreqd.

Note: I had to install x86info with emerge -av x86info in order to monitor the CPU speed with watch x86info -mhz, because watch grep \"cpu MHz\" /proc/cpuinfo didn't update.

LCD power management

Configured as per guide, of course ignoring the IBM-specific instructions.

Disk power management

Because the laptop has SATA disks, I could not use hdparm because of it's limited support for SATA disks. Instead I installed cpudyn to spin down the disk after 120 seconds. Despite a potential conflict with cpufreqd, inspection of the CPU frequencies with watch x86info -mhz showed that they were still changing according to demand.

Note: I initially attempted to use hdparm, according to the Gentoo Wiki HOWTO Use hdparm to improve IDE device performance (local copy here), however hdparm -i /dev/sda failed with HDIO_GET_IDENTITY failed: Inappropriate ioctl for device. The troubleshooting section of the guide revealed that htparm has limited support for SATA drives but that querying basic info (and benchmarking) should work. It also states that SATA drives are generally set up automagically to use most of the decent settings. blktool is suggested as an alternative to hdparm, but it's ebuild is masked so I didn't install it.

Benchmarking the hard disk performance with hdparm revealed that the performance for cached reads was good (> 1000 MB/sec) but bad for buffered reads (< 50 MB/sec). I'll leave this for the time being because I'm not sure whether hdparm is a reliable tool for benchmarking SATA disks, particularly because of the HDIO_DRIVE_CMD errors it returns.

localhost ~ # hdparm -tT /dev/sda

 Timing cached reads:   3804 MB in  2.00 seconds = 1901.34 MB/sec
HDIO_DRIVE_CMD(null) (wait for flush complete) failed: Inappropriate ioctl for device
 Timing buffered disk reads:  108 MB in  3.03 seconds =  35.66 MB/sec
HDIO_DRIVE_CMD(null) (wait for flush complete) failed: Inappropriate ioctl for device

Power Management for other devices

Followed the guide to make the wireless LAN card power off 3 seconds after traffic stops. In the scripts, I changed every occurrence of wlan0 to eth0 because my wireless card is eth0.

The script doesn't work properly when activating power management. wfconfig eth0 power on gives the same error but wfconfig eth0 power off doesn't!

Error for wireless request "Set Power Management" (8B2C) :
    SET failed on device eth0 ; Operation not supported.	

Sleep states: sleep, standby, suspend to disk

I didn't configure any support for sleep states because it's still experimental.

CD and DVD writing | Go to top

Burning a CDR

I followed the Gentoo WIKI HOWTO ATAPI CD Burning guide (local copy here). After making an iso image as per the guide, burning the CD with cdrecord dev=/dev/hdc /tmp/image.iso failed.

cdrecord: Warning: Running on Linux-2.6.12-gentoo-r10
cdrecord: There are unsettled issues with Linux-2.5 and newer
Warning: Open by 'devname' is unintentional and not supported
(A few messages about not supporting DVD-R/DVDRW and installing cdrecord-ProDVD)

cdrecord: DMA speed too slow (OK for 8x). Cannot write at speed 24x.
cdrecord: Max DMA data speed is 8.
cdrecord: Try to use 'driveropts=burnfree'.

Trying again with the driveropts flag worked, but it wrote very slowly with a new message about the writing speed instead of the driveropts message.

localhost ~ # cdrecord dev=/dev/hdc /tmp/image.iso driveropts=burnfree
cdrecord: DMA speed too slow (OK for 8x). Cannot write at speed 24x.
Starting to write CD/DVD at speed24x in real TAO mode for single session.

Burning a DVDR

To burn a DVD you could install dvdrtools, but because it is blocked by cdrtools I opted to use cdrecord-ProDVD. Install it with emerge -av cdrecord-prodvd.

cdrecord-ProDVD dev=/dev/hdc /tmp/image.iso fails with a message about support being limited without a key.

cdrecord: Warning. Running on Linux-2.6.12-gentoo-r10
cdrecord: There are unsettled issues with Linux-2.5 and newer.
Warning: Open by 'devname' is unintentional and not supported.
cdrecord-ProDVD: This version of cdrecord limits DVD-R/DVD-RW support to -dummy or 1GB real (...) (can get free keys from author).
Supported modes: Packet SAO
cdrecord-ProDVD: Drive does not support TAO recording.
cdrecord-ProDVD: Illegal write mode for this drive.

Using the -sao flag solved the problem and the DVD burnt ok. cdrecord-ProDVD -sao dev=/dev/hdc /tmp/image.iso driveropts=burnfree. Note that the driveropts flag is needed to prevent the previous errors (see above, the Burning a CDR section).

Note: You could use growisofs to burn DVDs instead of cdrecord-ProDVD (it's provided by the dvd+rw-tools package). This could be a better option because cdrecord-ProDVD is non-GPL and you've got to register it for full support.

Burning a DVDRW (data only) / Packet writing

I followed the Gentoo forums post DVD+/-RW writing without packet writing (local copy here). The DVD drive is /dev/hdc and not /dev/hdb as in the post's example.

Note: I initially followed the Gentoo WIKI HOWTO Packet Writing on CD-RW (local copy here) but it didn't work.

Kernel 2.6 supports writing to a UDF file system if compiled in. Because I'd earlier configured the kernel according to the (see above note), my kernel had support for packet writing and the UDF file system.

Device Drivers --->
  Block devices --->
    <*> Packet writing on CD/DVD media
    (8) Freebuffers for data gathering
    [ ] Enable write caching
File systems --->
  CD-ROM/DVD Filesystems --->
    <*> UDF file system support

As mentioned in the post, because mounting a DVD as writable costs a superblock and the DVD is useless when it's 1000 superblocks are gone, you should mount read only unless you're definately going to write data. To allow this I added 4 new lines to /etc/fstab and created the mount points as appropriate.

/dev/hdc	/mnt/cdr	auto	noauto,noatime,ro,user		0 0
/dev/hdc	/mnt/cdrw	udf	noauto,noatime,unhide,rw,user	0 0
/dev/hdc	/mnt/dvd	auto	noauto,noatime,ro,user		0 0
/dev/hdc	/mnt/dvdrw	udf	noauto,noatime,unhide,rw,user	0 0

GUI CD/DVD writing

I installed xcdroast with emerge -av xcdroast. When running the emerge I noticed the -dvdr flag, so I cancelled it and added dvdr to the USE flags in /etc/make.conf before emerging again.

Running xcdroast returned and error message because of a problem with cdrecord-ProDVD.

localhost ~ # xcdroast

** (xcdroast:11589): WARNING **: Invalid cdrecord-ProDVD version 2.01.01a01 found.
        Expecting at least version 2.01a11
        Start xcdroast with the -n option to override (not recommended!)

According to information in the xcdroast web site, xcdroast won't accept the new cdrecord-ProDVD version numbering scheme. You can run it successfully using the -n flag to prevent it checking version numbers. Doing this, with xcdroast -n, started xcdroast successfully. It correctly detected the DVD drive.

Starting to scan for devices...
[ATAPI:0,0,0] HL-DT-ST DVDRAM GMA-4080N 0H35
Scan finished.

Note: xcdroast gives a warning that using an ATAPI device is not recommended because it will effect performance. This I ignored because I don't care much about writing speed.

Note: According to the Gentoo WIKI HOWTO Packet Writing on CD-RW (local copy here), xcdroast can not be used as anyone but root if using kernel >= 2.6.10. I can not validate this because I've not yet attempted to burn a CD/DVD as a normal user.

Synaptics touchpad | Go to top

The Gentoo WIKI HARDWARE Synaptics Touchpad guide (local copy here) worked fine.

I increased the max speed, min speed and acceleration values to speed up the touchpad. I also tried configuring circular scrolling by adding a couple of options, but this didn't work (see this Gentoo WIKI Talk:HARDWARE Synaptics Touchpad (local copy here) for the available trigger values). The SHMConfig option is needed to use syndaemon to prevent the touchpad working when typing (see below).

Section "InputDevice"
   Option "MinSpeed" "0.18"
   Option "MaxSpeed" "0.36"
   Option "AccelFactor" "0.0300"
   Option "CircularScrolling" "1"
   Option "CircScrollTrigger" "8"
   Option "SHMConfig" "on"

To prevent the touchpad working when typing I had to run syndaemon, which is provided by the synaptics package. To get this to start when X starts I had to add the script to /etc/X11/xinit/xinitrc.d/syndaemon. The -d flag runs syndaemon as a daemon process and -i0.3 sets the timeout to 0.3 seconds.

localhost ~ # mkdir /etc/X11/xinit/xinitrc.d
localhost ~ # echo "syndaemon -d -i0.3" > /etc/X11/xinit/xinitrc.d/syndaemon

localhost ~ # chmod a+x /etc/X11/xinit/xinitrc.d/syndaemon

Bluetooth | Go to top

I followed the Gentoo Linux Bluetooth Guide (local copy here). I didn't set up RFCOMM or PAN.

hcitool scan detected my mobile phone and l2ping [mac address] .

Note: Remember to press the bluetooth button on the front of the laptop before configuring bluetooth, otherwise the device will not be turned on. You'll have to restart bluetooth after doing so with /etc/init.d/bluetooth restart.

Since bluetooth was now working, I added bluetooth to the USE flags in /etc/make.conf.


I installed wammu so I could manage the content of my mobile phone (emerge -av wammu). At first it didn't start properly, with the message ImportError: No module named wx. Adding /usr/lib to the PYTHONPATH environment variable fixed the problem. This could be made permanent by adding the path to a Gentoo environment file in /etc/env.d.

localhost ~ # echo "PYTHONPATH=\"/usr/lib\"" > /etc/env.d/99pythonpath
localhost ~ # etc-update
Scanning Configuration files...
Exiting: Nothing left to do; exiting. :)
localhost ~ # source /etc/profile

Once the PYTHONPATH was set correctly, wammu ran without a problem, but I haven't figured out how to connect to the phone using bluetooth or even if it's possible!

Ethernet | Go to top

To create a network init script for the ethernet controller, I copied the net.eth0 script to net.eth1.

localhost ~ # cd /etc/init.d
localhost ~ # cp net.eth0 net.eth1

Because there is no configuration for eth1 in /etc/conf.d it defaults to trying to configure itself using DHCP. So, because I've not installed DHCP yet, running /etc/init.d/net.eth1 start failed with the messages Cannot default to dhcp as there is no dhcp module loaded and No configuration for eth1.

I installed dhcp with emerge -av dhcp and, after connecting the laptop to my (wireless) router via an ethernet cable, running /etc/init.d/net.eth1 start assumed DHCP and successfully configured the connection.

Wireless | Go to top

The Gentoo WIKI HOWTO Wireless Configuration and Startup (local copy here) indicates that configuration is done using iwconfig. Linux on an Acer Travelmate 8104WLMi - Part I (local copy here) says that the ipw2200 package is needed, so I installed it with emerge -av ipw2200.

iwconfig will report no wireless extension for all network interfaces unless the ipw2200 module is loaded. You can load it with modprobe ipw2200 and make it permanent by adding it to /etc/modules.autoload.d/kernel-2.6 (note that I also added the led=1 switch as per Linux on an Acer Travelmate 8104WLMi - Part I (local copy here)).

ipw2200 led=1

With the ipw2200 module loaded, iwconfig recognises the wireless device as eth0. With the wireless button off, radio off is reported.

eth0      radio off  EESID:off/any
          Bit Rate=0 kb/s   Tx-Power=off

With the radio button on and no wireless devices present, iwconfig shows eth0 as unassociated.

eth0      unassociated  EESID:off/any
          Bit Rate=0 kb/s   Tx-Power=20dBm

With the radio button on and a wireless router present, iwconfig shows the details of the router.

eth0      IEEE 802.11g  EESID:"[router name]"  Nickname:"[router name]"
          Mode:Managed  Frequency:2.437 GHz  Access Point: [mac address]
          Bit Rate=36 Mb/s   Tx-Power=20 dBm   

Note: I didn't need to load the ieee80211 module, since lsmod showed it was already loaded.

Note: Remember to press the wireless button on the front of the laptop before configuring wireless, otherwise the device will not be turned on.

Once the wireless router was being properly detected, I removed all default configuration for iface_eth0 in /etc/conf.d/net. This will result in DHCP being used by default when eth0 is started.

Next I added the wirless configuration to /etc/conf.d/wireless as per the Gentoo WIKI HOWTO Wireless Configuration and Startup (local copy here). The extra essid_eth0 line prevents the interface scanning for available access points and picking up various neighbours unsecure ones.

essid_eth0="[router name]"
key_[router name]="[wep key] enc open"
preferred_aps=( "[router name]" )

Restarting eth0 with /etc/init.d/net.eth0 restart now connects to the router and defaults to configure everything using DHCP.

PCMCIA (PC card, smartcard and 4-in-1 card reader) | Go to top

PCMCIA support is needed for the PC card, the smartcard and I'd guess the 4-in-1 card reader too.

Probably the best resources to read are the Linux PCMCIA HOWTO from The Linux Documentation Project and the pcmcia-cs homepage on Sourceforge. I have not actually installed a smart card or PC card yet because the only one I've got is a NIC (Network Interface Controller) which I've no use for. However, I believe I've got the system sufficiently configured for when I come to use the functionality, with hopefully only loading an additional module or two required to get a PC card or smartcard working.

My kernel was already configured for PCMCIA support, with most of it compiled as modules.

Bus options (PCI, PCMCIA, EISA, MCA, ISA) --->
  PCCARD (PCMCIA/CardBus) support --->
    <*> PCCard (PCMCIA/CardBus) support
       16-bit PCMCIA support
    [*]   32-bit CardBus support
    ---   PC-card bridges
       CardBus yenta-compatible bridge support
       Cirrus PD6729 compatible bridge support
       i82092 compatible bridge support
       i82365 compatible bridge support
       Databook TCIC host bridge support

I installed the pcmcia-cs package with emerge -av pcmcia-cs. This provides the cardctl and cardmgr programs, used for querying and controlling the PCMCIA device.

Without the pcmcia module loaded, cardctl status returns no pcmcia driver in /proc/devices. After loading the pcmcia module (with modprobe pcmcia) cardctl status shows that there are 3 sockets, which I would guess are for the PC card, the smart card and the 4-in-1 card reader. Without any cards in the slots, cardctl status shows that a card is loaded in socket 2 despite the fact no cards are inserted (I even tried removing the plastic thingy that sits in the PC card slot, with no difference).

Socket 0:
  no card
Socket 1:
  no card
Socket 2:
  5V 16-bit PC Card
  function 0: [ready]

With a PC card inserted, cardctl status shows the card in socket 0, so evidentally socket 2 isn't the PC card slot.

Socket 0:
  3.3V CardBus card
  function 0: [ready]
Socket 1:
  no card
Socket 2:
  5V 16-bit PC Card
  function 0: [ready]		

The Gentoo WIKI HARDWARE Gentoo Acer Travelmate 803LCi Manual (local copy here) indicates that there are a number of other modules that could be of use, namely pcmcia_core, yenta_socket and ds.

The manual also suggests that the card residing in Socket 2 is the O2Micro Smartcardreader, which is not supported under Linux. Presumably it's talking about the 4-in-1 card reader, because the overall impression I got from a number of different resources was that the smartcard reader could be configured to work but that the 4-in-1 card reader could not.

PCMCIA network interface controller

I've not actually set up my PCMCIA NIC because the speed and proximity of my wireless network is such that I'd not get any benefit from doing so. However, for future reference the Gentoo WIKI seems to have a nice guide: HARDWARE PCMCIA NIC.

4-in-1 card reader

lspci shows that my card reader is made by O2 Micro.

0000:06:09.0 CardBus bridge: O2 Micro, Inc. OZ711M3/MC3 4-in-1 MemoryCardBus Controller
0000:06:09.1 CardBus bridge: O2 Micro, Inc. OZ711M3/MC3 4-in-1 MemoryCardBus Controller
0000:06:09.2 System peripheral: O2 Micro, Inc. OZ711Mx 4-in-1 MemoryCardBus Accelerator
0000:06:09.3 CardBus bridge: O2 Micro, Inc. OZ711M3/MC3 4-in-1 MemoryCardBus Controller	

Unfortunately, as far as I can determine, O2 Micro have not released the required firmware for Linux so you can't use it. This is said by the HARDWARE Gentoo Acer Travelmate 803LCi Manual (local copy here) and by the only other resource I could find with information about the O2 Micro 4-in-1 card reader: HARDWARE Gentoo Fujitsu Stylistic ST5010 Manual (local copy here).

Summary | Go to top

All in all I'm happy with the installation. I've got support for everything I need at the moment, except the 4-in-1 card reader. I'll just have to swallow my pride and periodically boot into Windows to back up the cards. At some point I'll try to get graphics acceleration going so I can see how good the card is and maybe try some games, but that can wait.

Appendix: Hardware details | Go to top

Partition table

localhost ~ # fdisk -l /dev/sda

Disk /dev/sda: 100.0 GB, 100030242816 bytes
255 heads, 63 sectors/track, 12161 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1         383     3076416   12  Compaq diagnostics
/dev/sda2   *         384        2341    15727635    c  W95 FAT32 (LBA)
/dev/sda3            2342        3646    10482412+   c  W95 FAT32 (LBA)
/dev/sda4            3647       12161    68396737+   f  W95 Ext'd (LBA)
/dev/sda5            3647        3654       64228+  83  Linux
/dev/sda6            3655        3915     2096451   82  Linux swap / Solaris
/dev/sda7            3916       12161    66235963+  83  Linux

Hardware - lshw

Output of lshw.

PCI - lspci

localhost ~ # lspci
0000:00:00.0 Host bridge: Intel Corporation Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller (rev 03)
0000:00:01.0 PCI bridge: Intel Corporation Mobile 915GM/PM Express PCI Express Root Port (rev 03)
0000:00:1b.0 Class 0403: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio Controller (rev 04)
0000:00:1c.0 PCI bridge: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 1 (rev 04)
0000:00:1c.1 PCI bridge: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 2 (rev 04)
0000:00:1c.2 PCI bridge: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 3 (rev 04)
0000:00:1d.0 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 (rev 04)
0000:00:1d.1 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2 (rev 04)
0000:00:1d.2 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3 (rev 04)
0000:00:1d.3 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4 (rev 04)
0000:00:1d.7 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller (rev 04)
0000:00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev d4)
0000:00:1f.0 ISA bridge: Intel Corporation 82801FBM (ICH6M) LPC Interface Bridge (rev 04)
0000:00:1f.2 IDE interface: Intel Corporation 82801FBM (ICH6M) SATA Controller (rev 04)
0000:00:1f.3 SMBus: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) SMBus Controller (rev 04)
0000:01:00.0 VGA compatible controller: ATI Technologies Inc Radeon Mobility X700 (PCIE)
0000:06:03.0 Network controller: Intel Corporation PRO/Wireless 2915ABG MiniPCI Adapter (rev 05)
0000:06:06.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5788 Gigabit Ethernet (rev 03)
0000:06:07.0 FireWire (IEEE 1394): Texas Instruments TSB43AB21 IEEE-1394a-2000 Controller (PHY/Link)
0000:06:09.0 CardBus bridge: O2 Micro, Inc. OZ711M3/MC3 4-in-1 MemoryCardBus Controller
0000:06:09.1 CardBus bridge: O2 Micro, Inc. OZ711M3/MC3 4-in-1 MemoryCardBus Controller
0000:06:09.2 System peripheral: O2 Micro, Inc. OZ711Mx 4-in-1 MemoryCardBus Accelerator
0000:06:09.3 CardBus bridge: O2 Micro, Inc. OZ711M3/MC3 4-in-1 MemoryCardBus Controller		

Kernel configuration


Loaded modules

localhost ~ # lsmod
Module                  Size  Used by
ipv6                  263168  6 
cpufreq_ondemand        6172  0 
cpufreq_powersave       1728  1 
snd_seq                55504  0 
snd_seq_device          8716  1 snd_seq
snd_pcm_oss            53728  0 
snd_mixer_oss          19968  1 snd_pcm_oss
parport_pc             41604  0 
parport                38344  1 parport_pc
rtc                     9876  0 
yenta_socket           23560  1 
rsrc_nonstatic         13568  1 yenta_socket
tg3                   101316  0 
i2c_i801                8780  0 
i2c_core               22544  1 i2c_i801
intel_agp              23452  1 
agpgart                36552  1 intel_agp
joydev                  9792  0 
ipw2200               182408  0 
ieee80211              49156  1 ipw2200
ieee80211_crypt         6856  2 ipw2200,ieee80211
speedstep_centrino      6036  1 
freq_table              4484  1 speedstep_centrino
dm_mirror              23764  0 
dm_mod                 60604  1 dm_mirror
sbp2                   24968  0 
ohci1394               36468  0 
ieee1394              106360  2 sbp2,ohci1394
sl811_hcd              13888  0 
usb_storage            76416  0 
usbhid                 46304  0 
ehci_hcd               33800  0 

GRUB configuration


XOrg configuration


Appendix: Link dump | Go to top

A dump of *most* resources I read, in no real order. For my future reference apart from anything else.

Last modified: 28/07/2008 Tags: (none)

This website is a personal resource. Nothing here is guaranteed correct or complete, so use at your own risk and try not to delete the Internet. -Stephan

Site Info

Privacy policy

Go to top