Gentoo on Asus A3E-5018

Last update: 2007 Nov 26.

This document describes what needs to be done to get Gentoo running on Asus A3E-5018 notebook. All information here could be also used with other Linux distributions, but I'm "Gentoo centric" ;)

First the specs for my machine:

nelchael ~ # cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 13
model name      : Intel(R) Pentium(R) M processor 1.73GHz
stepping        : 8
cpu MHz         : 1729.117
cache size      : 2048 KB
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 2
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss tm pbe nx est tm2
bogomips        : 3460.71

nelchael ~ # cat /proc/meminfo | grep 'MemTotal'
MemTotal:      1018684 kB
nelchael ~ # lspci
0000:00:00.0 Host bridge: Intel Corporation Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller (rev 04)
0000:00:02.0 VGA compatible controller: Intel Corporation Mobile 915GM/GMS/910GML Express Graphics Controller (rev 04)
0000:00:02.1 Display controller: Intel Corporation Mobile 915GM/GMS/910GML Express Graphics Controller (rev 04)
0000:00:1b.0 Class 0403: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio Controller (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.1 IDE interface: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) IDE Controller (rev 04)
0000:01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
0000:01:01.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev b3)
0000:01:01.1 FireWire (IEEE 1394): Ricoh Co Ltd R5C552 IEEE 1394 Controller (rev 08)
0000:01:01.2 Class 0805: Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (rev 17)
0000:01:01.3 System peripheral: Ricoh Co Ltd R5C592 Memory Stick Bus Host Adapter (rev 08)
0000:01:03.0 Network controller: Intel Corporation PRO/Wireless 2200BG (rev 05)
nelchael ~ #

What works & what doesn't:

Video: Ok
Requires support for i915 driver from recent X.Org (>x11-base/xorg-x11-6.8.99.15) and from kernel:
CONFIG_DRM=y
CONFIG_DRM_I915=y
CONFIG_AGP_INTEL=y
/etc/X11/xorg.conf:
Section "Device"
	Identifier  "Card0"
	Driver      "i810"
	VendorName  "Intel Corporation"
	BoardName   "Mobile 915GM/GMS/910GML Express Graphics Controller"
	BusID       "PCI:0:2:0"
	Option      "DisplayInfo" "False"
	Option      "DRI" "True"
	Option      "MonitorLayout" "CRT,LFP"
	Option      "Clone" "True"
EndSection
glxgears in 24 bit color:
4421 frames in 5.0 seconds = 884.063 FPS
4403 frames in 5.0 seconds = 880.548 FPS
4421 frames in 5.0 seconds = 884.150 FPS
Xinerama works ok too.
Sound: Ok
Required modules:
CONFIG_SOUND=y
CONFIG_SND_HDA_INTEL=y
USB: Ok
EHCI and UHCI.
Firewire: Ok
Tested on eth1394.
PCMCIA: Ok
Yenta driver:
CONFIG_YENTA=y
Touchpad: Ok
Just emerge x11-misc/synaptics.
Power management: Ok
ACPI (and Asus ACPI Extras) and cpufreq:
CONFIG_ACPI=y
CONFIG_ACPI_BOOT=y
CONFIG_ACPI_INTERPRETER=y
CONFIG_ACPI_AC=y
CONFIG_ACPI_BATTERY=y
CONFIG_ACPI_BUTTON=y
CONFIG_ACPI_VIDEO=y
CONFIG_ACPI_HOTKEY=y
CONFIG_ACPI_FAN=y
CONFIG_ACPI_PROCESSOR=y
CONFIG_ACPI_THERMAL=y
CONFIG_ACPI_ASUS=y
CONFIG_ACPI_BLACKLIST_YEAR=0
CONFIG_ACPI_BUS=y
CONFIG_ACPI_EC=y
CONFIG_ACPI_POWER=y
CONFIG_ACPI_PCI=y
CONFIG_ACPI_SYSTEM=y
CONFIG_X86_PM_TIMER=y

CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_TABLE=y
CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_X86_SPEEDSTEP_CENTRINO=y
CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI=y
I'm using sys-power/ncpufreqd to manage governors. Mail led works (/proc/acpi/asus/mled), Wireless led doesn't (/proc/acpi/asus/wled).
swsuspend works great. What's needed? Support for it enabled in the kernel and simple command:
echo shutdown > /sys/power/disk && echo disk > /sys/power/state
Also don't forget to have
resume=/dev/swap_partition
in kernel line in grub.conf:
title Gentoo Linux (2.6.16-ck5-sws)
	root (hd0,1)
	kernel /boot/vmlinuz-2.6.16-ck5-sws root=/dev/hda2 vga=0x318 resume=/dev/hda3
suspend2 works even better.
Hotkeys: Ok
Emerge sys-power/acpid and edit /etc/acpi/default.sh:
#!/bin/sh

set $*

[[ -x /home/nelchael/bin/acpi-event.sh ]] && ( su - nelchael /home/nelchael/bin/acpi-event.sh ${@} & )
Then in acpi-event.sh:
#!/bin/bash

source /etc/profile
export DISPLAY=:0.0

handle_hotkey() {
	case "${1}" in
		*51)
			xmessage 'Web browser'
			;;
		*50)
			xmessage 'Mail client'
			;;
		*6b)
			xmessage 'Don\'t know - fourth icon - running man'
			;;
		*5c)
			xmessage 'Don\'t know - third button'
			;;
		*32)
			xmessage 'Mute'
			;;
		*31)
			xmessage 'Volume down'
			;;
		*30)
			xmessage 'Volume up'
			;;
		*40)
			xmessage 'Previous track'
			;;
		*41)
			xmessage 'Next track'
			;;
		*43)
			xmessage 'Stop'
			;;
		*45)
			xmessage 'Play / pause'
			;;
		*1?)
			xmessage 'Brightness up'
			# Value: $(( 10 + (0x${1} - 0x10) * 6 ))
			;;
		*2?)
			xmessage 'Brightness down'
			# Value: $(( 10 + (0x${1} - 0x20) * 6 ))
			;;
		*33) ;; # LCD backlight off
		*34) ;; # LCD backlight on
		*61) ;; # Toggle LCD/external
		*57) ;; # AC Adapter plug/unplug
		*58) ;; # AC Adapter plug/unplug
		*)
			xmessage "Unknown key - ${1}"
			;;
	esac
}

handle_power_button() {
	# For example: halt
	xmessage 'halt'
}

handle_sleep_button() {
	kdialog --title 'SWsuspend' --warningyesno 'Suspend system to disk?'
	[[ $? = 0 ]] && (
		dcop kdesktop KScreensaverIface lock
		sleep '0.1s'
		/sbin/swsuspend &
	)
}

case "${1}" in
	"hotkey")
		handle_hotkey "$3";;
	"button/power")
		handle_power_button;;
	"button/sleep")
		handle_sleep_button;;
	"processor")
		;; # Ignored - processor switches mode
	"ac_adapter")
		;; # Ignored - AC adapter plugged/unplugged
	"battery")
		;; # Battery charging/discharging
	"button/lid")
		# LID closed:
		dcop kdesktop KScreensaverIface lock
		# or: xscreensaver-command -lock
		;;
	*)
		xmessage "Unhandled key pressed - ${@}"
esac
I'm using xosd to display results of key presses, audacious_remote (homebrew software ;) ) to control Audacious and amixer to change volume.
SD/MMC Card reader: Ok
Experimental SDHCI (Secure Digital Host Controller Interface) driver.
Ethernet: Ok
8139too driver.
Wireless: Ok
Getting the driver to work is simple: enable ipw2200 as module in kernel and install firmware:
emerge --ask --verbose ipw2200-firmware
Then add this to /etc/modules.autoload.d/kernel-2.6:
# Wireless:
ipw2200
WARNING: The RF Kill Switch is broken in Asus ACPI extras, and causes much trouble: Kill Switch can be enabled (disables WiFi card), but to turn the card back on you need Windows or patched DSDT. Patch (asus-a3e-dsdt.rfswitch.patch) has to be applied to your dsdt.dsl:
~ # cat /proc/acpi/dsdt > dsdt.aml
~ # iasl -d dsdt.aml
~ # patch -p0 < asus-a3e-dsdt.rfswitch.patch
~ # iasl -tc dsdt.dsl
dsdt.hex is ready - specify the full path to it for CONFIG_ACPI_CUSTOM_DSDT_FILE in kernel configuration. After rebooting Fn+F2 will work :)
CD/DVD Recorder: Ok
Emerge CD/DVD recording software (for example K3b) with USE="dvdr".
Builtin webcam: No driver found
Will probably work with m560x driver.
IrDA: Ok
Works with:
CONFIG_IRDA=y
CONFIG_IRCOMM=y
CONFIG_IRTTY_SIR=y
CONFIG_SERIAL_8250=y
Tested with irda-utils and obexftp and SonyEricsson mobile (T630).