Gentoo Wiki


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



The Asus Eee PC is the first in a new generation of sub-sub notebooks. The current models feature 2, 4 or 8GB of flash storage, 512MB or 1GB of RAM, wireless and wired networking, external video connector, sound and 3 USB ports.


Code: /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 13
model name      : Intel(R) Celeron(R) M processor          900MHz
stepping        : 6
cpu MHz         : 900.000
cache size      : 512 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 mce cx8 apic sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss tm pbe
bogomips        : 1261.26
clflush size    : 64

Warning: The CPU speed is incorrectly reported. Asus downclocked it to 630MHz. see Overclocking the Front Side Bus (FSB) to 100 MHz with a Linux kernel module to set it back to 900MHz

Code: lspci
0:00.0 Host bridge: Intel Corporation Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller (rev 04)
00:02.0 VGA compatible controller: Intel Corporation Mobile 915GM/GMS/910GML Express Graphics Controller (rev 04)
00:02.1 Display controller: Intel Corporation Mobile 915GM/GMS/910GML Express Graphics Controller (rev 04)
00:1b.0 Audio device: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio Controller (rev 04)
00:1c.0 PCI bridge: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 1 (rev 04)
00:1c.1 PCI bridge: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 2 (rev 04)
00:1c.2 PCI bridge: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 3 (rev 04)
00:1d.0 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 (rev 04)
00:1d.1 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2 (rev 04)
00:1d.2 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3 (rev 04)
00:1d.3 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4 (rev 04)
00:1d.7 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller (rev 04)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev d4)
00:1f.0 ISA bridge: Intel Corporation 82801FBM (ICH6M) LPC Interface Bridge (rev 04)
00:1f.2 IDE interface: Intel Corporation 82801FBM (ICH6M) SATA Controller (rev 04)
00:1f.3 SMBus: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) SMBus Controller (rev 04)
01:00.0 Ethernet controller: Atheros Communications, Inc. AR5007EG 802.11 b/g Wireless PCI Express Adapter (rev 01)
03:00.0 Ethernet controller: Atheros Technology Corp. L2 100 Mbit Ethernet Adapter (rev a0)
Code: lsusb
Bus 003 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000
Bus 004 Device 001: ID 0000:0000
Bus 002 Device 001: ID 0000:0000
Bus 005 Device 001: ID 0000:0000
Bus 005 Device 002: ID 0951:1606 Kingston Technology


The kernel configuration used by the default OS can be found at /boot/ (look for the file called config-<version>). You can use this as a basis for configuring your own kernels. Since the storage on these devices is flash based, you'll want to avoid journaling filesystems to reduce the number of writes to disk.

Note: If the system reports that is is out of disk space, but still shows free space in the output of "df", the problem could by that the filesystes has run out of free inodes. In this case you might consider increasing this number when creating the filesystem. For example: mke2fs /dev/sdb2 -N 1000000 -m 0 -L eeepc_root

There are some specific options that you should keep in mind while configuring kernel manually.

Linux Kernel Configuration: EeePC kernel config
Processor type and features  --->
     [*] Tickless System (Dynamic Ticks)

Power management options  --->
     [*] Power Management support
     [*] ACPI (Advanced Configuration and Power Interface) Support  --->
           <M>   AC Adapter
           <M>   Battery  
           < >   ASUS/Medion Laptop Extras
     [*] CPU Frequency scaling
           <M>   'ondemand' cpufreq policy governor
           <M>   ACPI Processor P-States driver
           <M>   Intel Pentium 4 clock modulation

Bus options (PCI etc.)  --->
     [*] PCI support
     [*] PCI Express support
     <M>   PCI Express Hotplug driver
     <M> Support for PCI Hotplug  --->

Device Drivers  --->
     <*> Serial ATA (prod) and Parallel ATA (experimental) drivers  --->
           <M>   AHCI SATA support
           <M>   Intel ESB, ICH, PIIX3, PIIX4 PATA/SATA support
           <M>   Generic ATA support
     [*] Network device support  --->
           Wireless LAN  --->
               [*] Wireless LAN (IEEE 802.11)
                        < >   Atheros 5xxx wireless cards support

     [*] USB support  --->
           <*>   Support for Host-side USB
                        [*]     USB selective suspend/resume and wakeup

     Multimedia devices  --->
           <M> Video For Linux

     Graphics support  --->
           <M> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)  --->

     Sound  --->
           <M> Sound card support
                    <M> Advanced Linux Sound Architecture
                             PCI devices  --->
                                    <M> Intel HD Audio
                                    [*]   Build Realtek HD-audio codec support
                                    [*]   Aggressive power-saving on HD-audio                                                                            
                                    (10)    Default time-out for HD-audio power-save mode                                                        



The eeePC BIOS doesn't report its native screen resolution. With uvsafb, only 640x480 mode is available

Code: /sys/bus/platform/drivers/uvesafb/uvesafb.0/vbe_modes
640x480-32, 0x0112
640x480-8, 0x0101
640x480-16, 0x0111

In order to get the native 800x480 resolution on the framebuffer, you will need uvesafb driver and 915resolution to hack the video BIOS.

uvesafb and userland tools

Following directions from Spock's page, enable the the following features in your kernel. Note that Userspace Vesa VGA support must be a module, not built-in.

Code: make menuconfig
 Device Drivers ->
 <*> Connector - unified userspace <-> kernelspace linker  --->
  Graphics support ->
   [*] Support for frame buffer devices
   <M>   Userspace VESA VGA graphics support
   Console display driver support ->
    [*] Video mode selection support
    <*> Framebuffer Console support

Save the configuration and rebuild the kernel. Don't install it yet.

Add the 915resolution package to package.keywords so that you use the latest version: echo "sys-apps/915resolution ~x86" >> /etc/portage/package.keywords

And install the following packages: emerge -a klibc v86d 915resolution

Rebuild the kernel and install it. Do not put any video mode selection on the kernel parameters line.

Using the custom video mode

As root, check avaible video modes using: 915resolution -l

This will list the avaible modes according to the VESA BIOS. You probably don't want of 1920x1440 mode (5c), so this article with use its code to set up the custom resolution.

For the impatient, here is the shortest way to test it, run: 915resolution 5c 800 480 32; modprobe uvesafb mode=800x480-32@60; /etc/init.d/consolefont restart

You should now have a nice framebuffer with a neat font at native resolution. Now, to make your changes persistant (i.e. load them automatically), edit these two files :

File: /etc/conf.d/915resolution
# Copyright 1999-2006 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/sys-apps/915resolution/files/confd,v 1.3 2007/04/17 16:52:24 genstef Exp $

# Config file for /etc/init.d/915resolution
# based on the config file included with sys-apps/855resolution

# this example will replace mode "4d" with 1280x768x24
# to replace more than one mode do something like this
#replace="'4d 1280 768 24' '5c 1400 1050 16'"
replace="'5c 800 480 32'"

# if you want to log the output add the file here.
# this will be overwritten at every boot
File: /etc/init.d/uvesafb
# Copyright 1999-2006 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
Exp $

depend() {
	after 915resolution
	before xdm
	before consolefont

start() {
	ebegin "800x480-32@60"
	modprobe uvesafb mode=800x480-32@60 || retval=$?
        eend ${retval}

add it to init with: chmod +x /etc/init.d/uvesafb; rc-update add 915resolution boot; rc-update add uvesafb boot

Et voilĂ  !

You can use the original xorg.conf with just one modification:

Code: xorg.conf

Section "Monitor"
        Identifier   "Monitor0"
        VendorName   "Monitor Vendor"
        ModelName    "Monitor Model"
        Modeline     "800x480"  29.58  800 816 896 992  480 481 484 497  -HSync +Vsync


Wired Networking

For wired networking, use the atl2 kernel driver. This package is not available in portage, but is available on Gentoo's bugzilla. Simply install the package, add "atl2" to /etc/modules.autoload.d/kernel-2.6 and then set up your networking as normal.

You can also find this ebuild in Arcon overlay

As of kernel 2.6.25 portage will give warnings about an unknown symbol for __ioremap. The driver still appears to function correctly. Future kernels should support this device via the atlx driver (a merge of the atl1 and atl2 drivers).

The kernel in vanilla-sources-2.6.26_rc7 is working correctly. Atheros atl1 in the 1000 MB NIC section has to be enabled.


See Atheros 5xxx

Wifi on/off Script

There is a script, that allows to switch wifi on/off without rebooting.


#FILE: /sbin/
# main wifi toggle script (loads/unloads modules)

#. /usr/share/acpi-support/key-constants

# The sequence here *may* be important.
# (It seems to fail intermittently if you deviate.)
unload_modules() {
    rmmod ath_pci
    rmmod ath_rate_sample
    rmmod wlan_tkip
    rmmod wlan_scan_sta
    sleep 2
    rmmod ath_hal
    rmmod wlan

# At least this one's straightforward.
load_modules() {
   modprobe ath_pci

wifi_on() {
    rmmod pciehp
    sleep 1
   # pciehp_force may be unnecessary; Xandros did it.
   modprobe pciehp pciehp_force=1
   sleep 1
   # Switch on the hardware
   echo 1 >/proc/acpi/asus/wlan
   sleep 1

wifi_off() {
    /etc/init.d/net.ath0 stop
   echo 0 >/proc/acpi/asus/wlan

case $1 in
      acpi_fakekey $KEY_PROG1
      acpi_fakekey $KEY_PROG2
      STAT=`cat /proc/acpi/asus/wlan`
      if [ "$STAT" = "1" ];
         then wifi_off;
         else wifi_on;

Put this script somewhere in /usr/local/bin and make it executable with chmod +x, then just run on to turn wifi on. Make sure that you have compiled PCI Express Hotplug as module in kernel. Also this script uses acpi_fakekey which you can find eg. as part of the sys-power/acpi-support package in the Sunrise overlay.

Asus' Modified ACPI Module

An ebuild for Asus' modifed asus_acpi module for the EeePC has been provided by AllenJB on his site. You can also find this ebuild in Arcon overlay.

Note: Do make sure you don't have the Asus acpi module compiled in to your kernel, or modprobing this module will fail.

It seems that the provided in the ebuild on AllJB's site, as well as that in the Arcon overlay no longer works. You can work around this by saving into your /usr/portage/distfiles directory and trying the emerge again.

Eee kernel module

The eee kernel module is a highly experimental module that changes the FSB speed to allow the processor to run at 900MHz instead of its downclocked rate. You can find ebuild for this module in Arcon overlay.


First you need to install Arcon overlay. You can use layman to get the arcon overlay with: layman -a arcon

Install and load the eee module with: emerge sys-kernel/eeepc-linux; modprobe eee

To ensure the module is loaded on reboot, add it to module.autoload.d with: echo "eee" >>> /etc/modules.autoload.d/kernel-2.6

See Help on using layman for furter information.


After modprobing the module there will appear /proc/eee interface, which will provide access to controlling fan speed and fsb frequency.


The following is a sample script which will allow you to overclock the CPU to 900MHz.

Code: /usr/local/bin/oclock

sh -c 'echo 75 24 1 > /proc/eee/fsb'
sh -c 'echo 80 24 1 > /proc/eee/fsb'
sh -c 'echo 85 24 1 > /proc/eee/fsb'
sh -c 'echo 90 24 1 > /proc/eee/fsb'
sh -c 'echo 95 24 1 > /proc/eee/fsb'
sh -c 'echo 100 24 1 > /proc/eee/fsb'
echo "Overclocked to 900MHz"
echo "100" > /proc/eee/fan_speed
echo "1" > /proc/eee/fan_manual
cat /proc/eee/fan_rpm
echo "Set fan to manual mode and to maximum speed"
Warning: Be very carefull when setting fan to manual mode, as you may damage your CPU.


The EeePC incorrectly reports its remaining capacity not in mAh but in % with 5-10% steps. This confuses some battery applets and makes it difficult to calculate the remaining battery.

Code: /proc/acpi/battery/BAT0/*
present:                 yes
design capacity:         5200 mAh
last full capacity:      100 mAh
battery technology:      rechargeable
design voltage:          8400 mV
design capacity warning: 10 mAh 
design capacity low:     5 mAh
capacity granularity 1:  52 mAh
capacity granularity 2:  52 mAh
model number:            701
serial number:
battery type:            LION
OEM info:                ASUS
present:                 yes
capacity state:          ok
charging state:          charging
present rate:            unknown
remaining capacity:      80 mAh
present voltage:         8335 mV

The "last full capacity", "design capacity warning", "design capacity low" and "remaining capacity" values are percentages (%), not milliamp hours (mAh).


To use the webcam, you'll first need to ensure it's enabled in the bios or via the asus_acpi module (see above).

The kernel module required for the webcam is the linux-uvc module, and for viewing the webcam output, you can use luvcview (or cheese). You can install both of these packages with: emerge linux-uvc luvcview. These packages may be marked testing (~arch). For details on how to unmask them, please see the Mixing Software Branches documentation.

To load the kernel module for the camera, run: modprobe uvcvideo

To enable it via the acpi module, run: echo 1 > /proc/acpi/asus/camera

This should create the /dev/video0 device. You can also check the output of dmesg - you should get something like this:

Code: dmesg Output
usbcore: registered new interface driver uvcvideo
USB Video Class driver (v0.1.0)
usb 1-8: new high speed USB device using ehci_hcd and address 10
usb 1-8: configuration #1 chosen from 1 choice
uvcvideo: Found UVC 1.00 device <unnamed> (eb1a:2761)

If all goes well you can now test the cam by running luvcview -f yuv


Sound should work with hda-intel alsa driver. See the official Gentoo Alsa Guide.

The alsa drivers with kernel 2.6.24 will not work, you must disable them and use the alsa-driver package at least 1.0.16 this works.

For kernel in vanilla-sources-2.6.26_rc7 hda_intel is working correctly.

Switching Capture On

By default (under gentoo-sources-2.6.25-r7 at least), sound capture (for the microphones) is switched off in the mixer, and alsamixer doesn't provide a control to switch it on. You can enable it manually by running amixer cset name='Capture Switch' on.

To have this done automatically for you, you can modify your /etc/init.d/alsasound:

Code: Add this function:
fix_capture() {
	ebegin "Activating Eee PC sound capture"
	amixer -q cset name='Capture Switch' on,on
	eend 0
Code: and just above "return 0", before the end of start():

Enabling BootBooster

BootBooster allows a system to start [with a 1/2 second delay] the MBR of the harddrive. To enable this feature, you must create a partition for it to use, and change the type to 0xEF. The bios can still be reached by hitting F2 as it starts. This partition seems to be used to cache the results of the bios post, as well as containing a copy of the bios & video bios [seen by using strings on the partition]. As far as I can tell, this partition has nothing to do with Intel's EFI (Especially since it is populated by the bios), and just reuses the EFI partition id. Thanks to [mbm] on the eeepc freenode irc channel for your help.

The fileformat of this partition appears to be a memory dump (Probably created right after the bios post has been complete). This memorydump starts at the 0x200 address. source

Related Articles

External Sites

Retrieved from ""

Last modified: Fri, 10 Oct 2008 14:28:00 +0000 Hits: 21,552