Search:  
Gentoo Wiki

Acer_Travelmate_C100

This article is part of the Hardware series.
Laptops TV Tuner Cards Wireless Servers Storage Other Hardware Motherboards Related

Contents

Acer Travelmate C100 series

The Acer Travelmate C100 series
The Acer Travelmate C100 series

The page is under construction and still unfinished. If you have any questions and/or need support for getting Linux onto your C100, you can contact me via mail: heiko AT am MINUS anger MINUS 1 DOT de

This page is intended to collect all hints and howtos to use Gentoo on the Acer Travelmate C100 series Tablet PCs.

Hardware Facts

My Acer C102Ti Tablet PC has the following technical specs:


Right now I'm trying to set everything up and I'll add my experiences here as soon as I found out something new. If you own such a gadget and already solved a number of issues, c'mon and join me.

Getting Linux on it

I was pointed to a very important point by Prashant Mundkur (thanks!): It's a little bit complicated to get Linux on this little gadget because a lot of LiveCDs (including Knoppix and the Gentoo Live CD) seem to have difficulties booting from an USB cdrom drive which is what most Acer owners bought with their machines. The only two CDs found that support booting from the Acer's external USB cdrom drive are a SuSE CD-ROM and (beta versions of) Ubuntu 6.06 (Dapper Drake). But there are two alternatives if you cannot or do not want to use a SuSE or development Ubuntu Boot CD.

With the new gentoo 2008.0 beta2 release the boot from the USB cd-rom drive succesfully works.

Using a Firewire Drive

I recently bought an external Firewire DVD drive and found out that all the boot difficulties went away. So, if you can, use a Firewire CD/DVD drive instead of the USB drive. The Acer has only USB 1.1 ports, so using Firewire will give you some extra speed as an additional bonus. Knoppix and the Gentoo Live CD worked just fine with Firewire.

(Comment from Bernhard: I try since a long time to boot from a Plextor PX-708A in a external Firewire-Box on the C102TI, and didn't get it to work. So please specify your hardware!)

Working Hardware: Heiko's Firewire Hardware: An external Pioneer DVR-S606 (DVD-R/RW Drive), which holds a Pioneer DVR-106-PZ and a USB2.0/Firewire-to-IDE controller with an unknown chipset (I only could spot an "SST" logo on one chip).

Booting via Network

This solution was recommended by a number of Acer C100 related sites I found before I used Gentoo. Prashant managed to boot his Acer by using this method and he was so kind to share his experiences / notes with us. So, here's what he found out:

Resizing the Windows Partition

Prashant notes: "Debian Sarge also includes ntfsresize, but for some reason it was not usable from with the installer's curses gui. It is usable from the shell however; use it to make space for Linux. From this point, one can closely follow Gentoo's installation handbook, except we start by using Debian's fdisk to partition the disk."

I initially installed SuSE Linux on the Acer, so YaST resized my partition without a hassle.

Bootloader Issues

As Prashant already mentioned in the Netboot section, it seems that Grub has had problems with the C100 harddisk, therefore you can use lilo which just works fine. However, the version of GRUB that comes with Ubuntu 6.06 Dapper Drake seems to work perfectly.

Prashant wrote of earlier versions of GRUB: "Grub has a problem installing to the hard disk. In fact, if you try to let grub do its thing, it can (and did!) corrupt the disk and wipe out the pre-installed Windows partition, so I higly recommend not letting grub come anywhere near the hard disk. As I discovered later by trial and error, lilo apparently does understand the disk."

(Comment from Bernhard: I experienced the same problem with grub, but I found one way to get it working: Use SuSE 9.1 and make a regular install with grub in the MBA of hda. I don't know why, but it works! You can now add additional partitions. It doesn't seem a problem of the disk, I now changed the original 30 GB Hitachi drive for a new Samsung MP0804H 80GB drive. Its a little bit more noisy but same thing: I had to install grub along with Suse 9.1 to get grub working! Further more I connected the original Hitachi disk with an 2.5-adaptor to my desktop PC and there I had no problems with grub any longer. So I suggest a bug in the C102TI's BIOS.)

A better way to get grub working: grub> install /grub/stage1 d (hd0) /grub/stage2 p /grub/menu.lst also have a look at http://www.gnu.org/software/grub/grub-legacy-faq.en.html#q11 (David hse04003@fh-hagenberg.at)

Kernel Configuration

(still unfinished, just ask me (heiko AT am MINUS anger MINUS 1 DOT de) if you need support) or want me to send you my kernel configuration.

Linux Kernel Configuration: Acer Travelmate C100
Processor type and features:
 Subarchitecture Type: PC-compatible
 Processor family: Pentium M

Bus options (PCI, PCMCIA, EISA, MCA, ISA):
 [*] PCI Support
       PCI Access mode (Any)
   [*] Legacy /proc/pci interface
   [*] PCI device name database
   [*] ISA Support
       PCCard (PCMCIA/CardBus) Support --->
        [*] PCCard (PCMCIA/CardBus) support
        [*] 16bit PCMCIA support
        [*] 32bit CardBus support
        [*] CardBus yenta-compatible bridge support

Device Drivers:
 Plug and Play support:
   [*] Plug and Play support
   [*] Plug and Play ACPI support
 IEEE 1394 (FireWire) support:
   [*] IEEE 1394 (FireWire) support
   [*] OHCI-1394 support
   [*] SBP-2 support (Harddisks etc.)
   [*] Raw IEEE1394 I/O support
 Networking support:
   [*] Network Device Support
       Ethernet (10 or 100Mbit):
         [*] EISA, VLB, PCI and on board controllers
             [*] Realtek RTL-8139 PCI Fast Ethernet Adapter Support
       Wireless LAN (non hamradio):
         [*] Wireless LAN (non hamradio) & Wireless Extensions
         [*] Hermes chipset 802.11b support (Orinoco/Prism2/Symbol)
         [*] Hermes PCMCIA card support
 Input Device support:
   [*] Provide legacy /dev/psaux device
   [*] Event interface
   [*] Mouse:
       [*] PS/2 Mouse
 Sound:
   Advanced Linux Sound Architecture
     [*] Advanced Linux Sound Architecture
     [*]  Sequencer Support
     [*]  OSS Mixer API
     [*]  OSS PCM (digital audio) API
     [*]  OSS Sequencer API
          PCI-Devices
           [*] Intel/SiS/nVidia/AMD/ALi AC97 Controller
 USB:
   [*] Support for Host-side USB
   [*] USB device filesystem
   [*] EHCI HCD (USB2.0) support
   [*] UHCI HCD (most Intel and VIA) support
   [*] USB Printer Support
   [*] USB Mass Storage Support
   [*] USB Human Interface Device (full HID) support
   [*]  HID input layer support
   [*] USB Monitor

X Windows Configuration

The following xorg.conf file needs you to "emerge linuxwacom setserial", which adds the wacom driver and the setserial utility. Please see the comments for details:

File: /etc/X11/xorg.conf
Section "Module"
    Load        "dbe"  	# Double buffer extension
    SubSection  "extmod"
      Option    "omit xfree86-dga"   # don't initialise the DGA extension
    EndSubSection
EndSection

Section "Files"
    RgbPath	"/usr/X11R6/lib/X11/rgb"
    FontPath   "/usr/share/fonts/misc/"
    FontPath   "/usr/share/fonts/TTF/"
    FontPath   "/usr/share/fonts/Type1/"
    FontPath   "/usr/share/fonts/75dpi/"
    FontPath   "/usr/share/fonts/100dpi/"
    FontPath   "/usr/share/fonts/local/"

EndSection

Section "InputDevice"
    Identifier	"Keyboard1"
    Driver	"kbd"	
    Option "AutoRepeat" "500 30"	
    Option "XkbRules"	"xorg"
    Option "XkbModel"	"pc105"
    Option "XkbLayout"	"de"
    Option "XkbVariant"	"nodeadkeys"
 # I added a acer-hk keyboard definition file which is used to map
 # the special buttons P1, P2, Mail and Web to F17-F20
    Option "XkbVariant" "acer-hk"
EndSection

# This is the touchpad, you need to "emerge synaptics" if you want to use it this way:
Section "InputDevice"	
    Identifier	"touchpad"
    Driver	"synaptics"
    Option "Protocol"    "Auto"
    Option "Device"      "/dev/mouse"
    Option "Buttons" "7"
    Option "ZAxisMapping" "4 5 6 7"
    Option "Emulate3Buttons"
    Option "CircularScrolling" "yes"
    Option "CircScrollTrigger" "8"
    Option "FastTaps" "yes"
EndSection

# Now, a generic USB mouse entry. Whenever you are plugging in a USB mouse, you
# can use it thanks to this entry
Section "InputDevice"
    Identifier  "usbmouse"
    Driver      "mouse"
    Option      "Protocol"      "Auto"
    Option      "Device"        "/dev/input/mice"
EndSection

# From here on we define the Tablet/Pen devices, you need to "emerge linuxwacom" to add the
# appropriate driver ("wacom") to your system.
# The tablet is connected via an internal serial port (/dev/ttyS0) which needs to be initialized
# with setserial at boot time.
# Please "emerge setserial" and add the following line to your file
# /etc/serial.conf :
# /dev/ttyS0 port 0x93f8 autoconfigure
Section "InputDevice"
    Identifier "cursor"
    Driver     "wacom"
    Option     "Device"        "/dev/ttyS0"
    Option     "Type"		"cursor"
    Option     "ForceDevice"	"ISDV4"
EndSection

Section "InputDevice"
    Identifier "stylus"
    Driver     "wacom"
    Option     "Device"        "/dev/ttyS0"
    Option     "Type"		"stylus"
    Option     "ForceDevice"	"ISDV4"
    Option     "Mode"           "Absolute"
EndSection

Section "InputDevice"
    Identifier "eraser"
    Driver     "wacom"
    Option     "Device"        "/dev/ttyS0"
    Option     "Type"		"eraser"
    Option     "ForceDevice"	"ISDV4"
EndSection
# End of tablet related configuration

Section "Monitor"
    Identifier  "LaptopLCD"	
    HorizSync   31.5 - 48.5	
    VertRefresh 50-70
EndSection

Section "Device"
    Identifier  "SiliconMotion"
    Driver      "siliconmotion"
EndSection

Section "Screen"
    Identifier  "Screen 1"
    Device      "SiliconMotion"
    Monitor     "LaptopLCD"
    DefaultDepth 16
    Subsection "Display"
	Depth       8
	Modes
	ViewPort    0 0
    EndSubsection
    Subsection "Display"
	Depth       16
	Modes       "1280x1024" "1024x768" "800x600" "640x480"
	ViewPort    0 0
    EndSubsection
    Subsection "Display"
	Depth       24
	Modes       "1280x1024" "1024x768" "800x600" "640x480"
	ViewPort    0 0
    EndSubsection
EndSection

Section "ServerLayout"	
    Screen "Screen 1"	
    InputDevice "touchpad" "CorePointer"
    InputDevice "usbmouse" "SendCoreEvents"
    InputDevice "Keyboard1" "CoreKeyboard"
    InputDevice "cursor" "SendCoreEvents"
    InputDevice "stylus" "SendCoreEvents"
    InputDevice "eraser" "SendCoreEvents"
EndSection

EDIT: I had some severe issues with Modular Xorg 7.x and getting wacom tablet support enabled. It stems basically from the portage default drivers being outdated. If you suffer from this problem, add >=x11-misc/linuxwacom-0.7.2 to your /etc/portage/package.keywords file and remerge the linuxwacom package. Adding entry to package.keywords

echo ">=x11-misc/linuxwacom-0.7.2" >> /etc/portage/package.keywords

ACPI support

It was a hard fight to let the kernel accept ACPI support for my C100, it seems that its RSDP checksum is invalid and the kernel refuses to enable ACPI support because of this. Dean Townsley provided a patch forcing the kernel to use a more sophisticated routine to detect the ACPI data tables (it seems that there are two different functions existing) and voila - it works. While Ubuntu 6.06's Live CD accounts for this ACPI problem, an actual installation remains ignorant of the matter.

The patch from Dean (thank you so much) is targeted against a 2.6.11 kernel, but I was able to manually apply the changes to my 2.6.12-rc3 vanilla kernel without problems.

Here it is:

diff -ur linux-2.6.11-orig/arch/i386/kernel/acpi/boot.c linux-2.6.11/arch/i386/kernel/acpi/boot.c
 --- linux-2.6.11-orig/arch/i386/kernel/acpi/boot.c	Wed Mar  2 01:38:25 2005
 +++ linux-2.6.11/arch/i386/kernel/acpi/boot.c	Mon May  9 21:59:24 2005
 @@ -506,27 +506,6 @@
  EXPORT_SYMBOL(acpi_unmap_lsapic);
  #endif /* CONFIG_ACPI_HOTPLUG_CPU */
  
 -static unsigned long __init
 -acpi_scan_rsdp (
 -	unsigned long		start,
 -	unsigned long		length)
 -{
 -	unsigned long		offset = 0;
 -	unsigned long		sig_len = sizeof("RSD PTR ") - 1;
 -
 -	/*
 -	 * Scan all 16-byte boundaries of the physical memory region for the
 -	 * RSDP signature.
 -	 */
 -	for (offset = 0; offset < length; offset += 16) {
 -		if (strncmp((char *) (start + offset), "RSD PTR ", sig_len))
 -			continue;
 -		return (start + offset);
 -	}
 -
 -	return 0;
 -}
 -
  static int __init acpi_parse_sbf(unsigned long phys_addr, unsigned long size)
  {
  	struct acpi_table_sbf *sb;
 @@ -630,21 +609,11 @@
  unsigned long __init
  acpi_find_rsdp (void)
  {
 +	struct acpi_pointer	addr;
  	unsigned long		rsdp_phys = 0;
  
 -	if (efi_enabled) {
 -		if (efi.acpi20)
 -			return __pa(efi.acpi20);
 -		else if (efi.acpi)
 -			return __pa(efi.acpi);
 -	}
 -	/*
 -	 * Scan memory looking for the RSDP signature. First search EBDA (low
 -	 * memory) paragraphs and then search upper memory (E0000-FFFFF).
 -	 */
 -	rsdp_phys = acpi_scan_rsdp (0, 0x400);
 -	if (!rsdp_phys)
 -		rsdp_phys = acpi_scan_rsdp (0xE0000, 0xFFFFF);
 +	if (!ACPI_FAILURE(acpi_find_root_pointer(ACPI_PHYSICAL_ADDRESSING,&addr)))
 +		rsdp_phys=addr.pointer.physical;
  
  	return rsdp_phys;
  }
 diff -ur linux-2.6.11-orig/arch/i386/mach-es7000/es7000plat.c linux-2.6.11/arch/i386/mach-es7000/es7000plat.c
 --- linux-2.6.11-orig/arch/i386/mach-es7000/es7000plat.c	Wed Mar  2 01:38:26 2005
 +++ linux-2.6.11/arch/i386/mach-es7000/es7000plat.c	Mon May  9 21:23:15 2005
 @@ -35,6 +35,7 @@
  #include <linux/reboot.h>
  #include <linux/init.h>
  #include <linux/acpi.h>
 +#include <linux/efi.h>
  #include <asm/io.h>
  #include <asm/nmi.h>
  #include <asm/smp.h>
 @@ -75,6 +76,52 @@
  
  #endif // (CONFIG_X86_IO_APIC) && (CONFIG_ACPI_INTERPRETER || CONFIG_ACPI_BOOT)
  
 +
 +static unsigned long __init
 +es7000_acpi_scan_rsdp (
 +	unsigned long		start,
 +	unsigned long		length)
 +{
 +	unsigned long		offset = 0;
 +	unsigned long		sig_len = sizeof("RSD PTR ") - 1;
 +
 +	/*
 +	 * Scan all 16-byte boundaries of the physical memory region for the
 +	 * RSDP signature.
 +	 */
 +	for (offset = 0; offset < length; offset += 16) {
 +		if (strncmp((char *) (start + offset), "RSD PTR ", sig_len))
 +			continue;
 +		return (start + offset);
 +	}
 +
 +	return 0;
 +}
 +
 +
 +unsigned long __init
 +es7000_acpi_find_rsdp (void)
 +{
 +	unsigned long		rsdp_phys = 0;
 +
 +	if (efi_enabled) {
 +		if (efi.acpi20)
 +			return __pa(efi.acpi20);
 +		else if (efi.acpi)
 +			return __pa(efi.acpi);
 +	}
 +	/*
 +	 * Scan memory looking for the RSDP signature. First search EBDA (low
 +	 * memory) paragraphs and then search upper memory (E0000-FFFFF).
 +	 */
 +	rsdp_phys = es7000_acpi_scan_rsdp (0, 0x400);
 +	if (!rsdp_phys)
 +		rsdp_phys = es7000_acpi_scan_rsdp (0xE0000, 0xFFFFF);
 +
 +	return rsdp_phys;
 +}
 +
 +
  /*
   * Parse the OEM Table
   */
 @@ -153,7 +200,8 @@
  	int				i;
  	struct acpi_table_sdt		sdt;
  
 -	rsdp_phys = acpi_find_rsdp();
 +	 /* FIXME -- can we use the general acpi_find_rsdp() ? */
 +	rsdp_phys = es7000_acpi_find_rsdp();
  	rsdp = __va(rsdp_phys);
  	if (rsdp->rsdt_address) {
  		struct acpi_table_rsdt	*mapped_rsdt = NULL;

Hibernation

I sucessfully added support for hibernation (suspend-to-disk) by using the suspend2 software/kernel patch. More about this can be found here:

HOWTO_Software_Suspend_v2 - A very good complete description of how to enable hibernation support

www.suspend2.net - the home page of the people providing the suspend-to-disk support for the Linux kernel


Please "emerge hibernate-script" after you added suspend2 support to your kernel. My /etc/hibernate/hibernate.conf file looks like this:

Code: /etc/hibernate/hibernate.conf
### suspend2 (for Software Suspend 2)
UseSuspend2 yes
## useful for initrd usage:
SuspendDevice swap:/dev/hda2
## Powerdown method - 3 for suspend-to-RAM, 4 for ACPI S4 sleep, 5 for poweroff
PowerdownMethod 5

Verbosity 0
LogFile /var/log/hibernate.log
LogVerbosity 1

### clock
SaveClock restore-only

### grub
# ChangeGrubMenu yes
# GrubMenuFile /boot/grub/menu.lst
# AlternateGrubMenuFile /boot/grub/menu-suspended.lst
# BackupGrubMenuFile /boot/grub/menu.lst.hibernate.bak

### lilo
EnsureLILOResumes yes

### modules
UnloadBlacklistedModules yes
LoadModules auto

### xhacks
SwitchToTextMode yes


Softmodem

The integrated Intel AMR softmodem works just fine when you enable the special kernel driver, which can be found here: Device Drivers -> Sound -> Advanced Linux Sound Architecture -> PCI Devices -> Intel/SiS/nVidia/AMD MC97 Modem

Afterwards I emerged "slmodem" and had to uncomment the line " need alsasound " which prevents the slmodem script from setting everything up when "alsasound" is not started (I compiled alsa into the kernel and therefore do not start alsasound at all).

The settings in /etc/conf.d/slmodem:

# Config file for /etc/init.d/slmodemd

DEV=/dev/ttySL0
COUNTRY=DE
GROUP=dialout
# the group should be kept in sync with:
# /etc/devfs.d/slmodem (devfs)
# /etc/udev/rules.d/55-slmodem.rules (udev)

# The following symlink will be created if uncommented
LN_DEV=/dev/modem

# Raise priority to reduce modem dropouts
NICE=-6

# ALSA Options:

# The following sets the ALSA (alsasound) init script to
# be a dependency of the slmodem one. It does also provides
# ALSA support.
MODULE=alsa

# The modem hardware slot
# use "modem:0", "modem:1", etc.
# usually modem:1 is used
HW_SLOT=modem:1

IrDA

The C100 has an NSC Infrared Data controller built-in to the front useful for syncing to a palm pilot, digital camera or printer. Luckily the NSC port built into the Tablet is able to use the FIR interface (Fast InfraRed) versus SIR (Serial [or Slow] InfraRed) so no serial configuration will be necessary

First, all relevant IrDA kernel options must be compiled (I will add the options to the above config later). I prefer to compile them straight into the kernel instead of module style, which is just easier for me. When you boot into the kernel, it shuold autoload the nsc-ircc module and enable your IR port. Mount with ifconfig:

ifconfig irda0 up

Check the status of the IR port and ensure HWADDRESS is populated with a value other than 00:00:00:00

ifconfig -a | grep irda

You must emerge the irda-utils package in order to properly use the device

emerge irda-utils

Test IR port by pinging

irdaping -i irda0

If you see the red L.E.D. inside the IR port cover blinking, setup is a success! Of course configuring for various IR devices is another matter, but I can't wait to get an IR link game between a GameBoy Color and VisualBoy Advance going on! :P

If you're having issues with enabling the hardware, findchip can help with troubleshooting.

findchip -v

Software needed

Acer Hotkeys

emerge acerhk

This enables extensive support for the special keys (P1, P2, mail, web) of your Acer C100.

Synaptics Touchpad driver

emerge synaptics

This enables extensive support for the touchpad of your Acer C100.

EDIT: I also had issues with the synaptics driver and Modular Xorg 7.x. Using "Device" option /dev/input/mouse0 in /etc/X11/xorg.conf seems to resolve this. /dev/mouse and /dev/psaux worked for me in Xfree86 and monolithic Xorg when using synaptics driver, but not in modular Xorg.

Linux Wacom Tablet Driver

emerge linuxwacom

This adds a driver for the tablet/pen (see X Windows configuration for details).

setserial

emerge setserial

Needed for tablet/pen operation, the serial port used to talk to the tablet (/dev/ttyS0, only an internal port) needs to be initialized with setserial first. See X Windows configuration (in-file comments).

slmodem

emerge slmodem

Useful scripts for the internal softmodem (see Softmodem section).

irDa Utilities

emerge irda-utils

Utilities useful/necessary for utilizing the Infrared Data Port.

Tablet PC Software

I'm of the opinion that, while I choose Linux as my OS of choice on the Tablet PC, it's useless unless it works the way Acer intended under Windows XP Tablet PC edition. On that note I'll list some of the better software I've used to create the Tablet PC experience while using Linux.

CVoiceControl

emerge cvoicecontrol

This program enables voice recognition on a command line.


WirelessLan Adapter

Kernel modules

Linux Kernel Configuration: needed WLAN modules
 Device Driver:
   [*] Network Device Support
       Wireless LAN (non hamradio):
         [*] Wireless LAN (non hamradio) & Wireless Extensions
         [M] Hermes chipset 802.11b support (Orinoco/Prism2/Symbol)
         [M] Hermes PCMCIA card support
 Networking:
   <M>   Generic IEEE 802.11 Networking Stack   
   [*]     Enable full debugging output
   ---     IEEE 802.11 WEP encryption (802.1x)
   <M>     IEEE 802.11i CCMP support
   <M>     IEEE 802.11i TKIP encryption
   <M>     Software MAC add-on to the IEEE 802.11 networking stack
   [*]       Enable full debugging output

{{{2}}}

startup the wlan device

 modprobe -v orinoco_cs
 /etc/init.d/pcmcia restart

Now you should see with ifconfig -a your wlan adapter if you enabled it at boot.

To Do

What is not working yet?

Contacts

Below follows a list of individuals willing to answer any questions they can who have successfully installed Linux onto an Acer Travelmate C100.

Retrieved from "http://www.gentoo-wiki.info/Acer_Travelmate_C100"

Last modified: Sun, 10 Aug 2008 23:08:00 +0000 Hits: 25,981