Search:  
Gentoo Wiki

Asus_EEE_PC_901

Contents

Introduction

The Asus EEE PC 901 is the second-generation EEE PC with a 9-inch screen. It has an Intel Atom processor and 20G of SSD storage divided into a 4GB master and slower 16GB (8GB in Windows version) slave disk. Built in features:

EEE 901 running KDE
EEE 901 running KDE

This is the 20G version, which comes with a Xandros-derivative installed by default. All of the features work on that, and Asus has reportedly been good at contributing their code, so in theory getting everything working should be possible. In practice, however, as of August 2008 some of the hardware is so new it's not even in the stable vanilla kernel, let alone in an officially stable version of gentoo-sources.

See also: Asus EEE PC 1000 - similar hardware, but not as small.

Warning: Before installing to an SD card or USB key, you should read and understand

the issue with suspending while you have filesystems mounted from USB hardware.

Hardware

Booting

No CD-ROM of course, so you'll have to follow the directions here. I had some trouble with syslinux, so I ended up just installing Grub on the SD card and modifying the syslinux.cfg file into a grub menu.lst file. I'll paste it later.

Live CD Install

It is possible to do a gentoo install to an SD card with the 2008.0 livecd (actually livecd-i686-installer-2008.0-r1.iso). Hitting escape for the BIOS BBS menu on bootup, will give you the option to boot off an external CD/DVD USB drive.

The Live CD may need to have the ext2/ext3 filesystems created manually, but otherwise it should complete the install (including an unasked-for grub install) after a couple of hours.

File System Layout Options

Note that when considering file system layout options, there is a large difference in read performance between the internal SSD's and an SD/SDHC card:

# hdparm -t /dev/sd?
/dev/sda:
  Timing buffered disk reads:   98 MB in  3.03 seconds =  32.36 MB/sec
/dev/sdb:
  Timing buffered disk reads:   88 MB in  3.01 seconds =  29.20 MB/sec
/dev/sdc:
  Timing buffered disk reads:   54 MB in  3.07 seconds =  17.61 MB/sec
/dev/sdd:
  Timing buffered disk reads:   76 MB in  3.07 seconds =  24.74 MB/sec

In the above timings:

sda and sdb
are the internal SSD drives.
sdc 
is a Sandisk SDHC Extreme III SDHC card rated at 20MB/sec read/write
sdd 
is a generic external USB 3.5 inch PATA disk (very useful for holding /usr/src and /usr/portage)

Boot Configuration

There are a couple more steps required to actually get the installed gentoo to self boot:

root (hd2,0)

to

root (hd0,0)
rootwait

as a kernel parameter to stop the kernel panicking because the root partition can't be found (the USB system takes a while to find it and tell the rest of the kernel about it).

clocksource=acpi_pm

as a kernel parameter to stop the kernel from hanging on boot after ata2: PATA max UDMA/100 cmd 0x170 ctl 0x376 bmdma 0xFFa8 irq 15. It also fixed a warning about sycing the hardware clock later in the boot process.

grub update

Version Bump

Warning: The updates to the livecd include grub. To avoid stage mismatch, the first stage should be reinstalled manually prior to a reboot.
# grub
grub> find /grub/grub.conf
( hd2,0)
grub> root (hd2,0)
 Filesystem type is ext2fs, partition type 0x83
grub> setup (hd2)
 Checking if "/boot/grub/stage1" exists... yes
 Checking if "/boot/grub/stage2" exists... yes
 Checking if "/boot/grub/e2fs_stage1_5" exists... yes
 Running "embed /boot/grub/e2fs_stage1_5 (hd2)"...  16 sectors are embedded.
succeeded
 Running "install /boot/grub/stage1 (hd2) (hd2)1+16 p (hd2,0)/boot/grub/stage2
/boot/grub/menu.lst"... succeeded
Done.
grub> quit

Example grub.conf

Example grub entry showing the required rootwait kernel parameter and root device selection:

File: /boot/grub/grub.conf
title=2.6.25-gentoo-r7
       root (hd0,0)
       kernel /2.6.25-gentoo-r7 ro root=/dev/sdc2 rootwait

Moving Goalpost

If you leave an external harddisk or USB key plugged in while booting off an SD card then it is possible for grub to hang as the root partition has changed as far it is concerned.

Directly relevant points to note from the previous sections are:

File: /boot/grub/grub.conf
...
root (hd0,0)
...

While the grub reinstall is made to:

...
grub> root (hd2,0)
...

Selecting the root partition by label would be a useful option (a patch from 2004 which was never merged).

Failing that selecting the root partition by UUID was recently added to the Ubuntu flavor of grub.

X11

The hardware looks like this to lspci:

# lspci -vs 00:02
00:02.0 VGA compatible controller: Intel Corporation Device 27ae (rev 03) (prog-if 00 [VGA controller])
       Subsystem: ASUSTeK Computer Inc. Device 830f
       Flags: bus master, fast devsel, latency 0, IRQ 16
       Memory at f7e00000 (32-bit, non-prefetchable) [size=512K]
       I/O ports at dc80 [size=8]
       Memory at d0000000 (32-bit, prefetchable) [size=256M]
       Memory at f7dc0000 (32-bit, non-prefetchable) [size=256K]
       Capabilities: [90] Message Signalled Interrupts: Mask- 64bit- Queue=0/0 Enable-
       Capabilities: [d0] Power Management version 2

00:02.1 Display controller: Intel Corporation Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller (rev 03)
       Subsystem: ASUSTeK Computer Inc. Device 830f
       Flags: bus master, fast devsel, latency 0
       Memory at f7e80000 (32-bit, non-prefetchable) [size=512K]
       Capabilities: [d0] Power Management version 2

The intel-agp module needs to be added to the module's autoload file (or else built into the kernel):

File: /etc/modules.autoload.d/kernel-2.6
...
intel-agp
...

All of the modes in the xorg.conf generated (by the livecd installer) can be replaced with Modes "1024x600" in the screen section:

File: /etc/X11/xorg.conf
...
Section "Screen"
       Identifier      "Screen0"
       Device  "Card0"
       Monitor "Monitor0"
       SubSection "Display"
               Depth   24
               Modes "1024x600"
       EndSubSection
EndSection
...

Touchpad

Generic Mouse

The touchpad works as a standard mouse with none of the advanced features.

File: /etc/X11/xorg.conf
Section "ServerLayout"
       InputDevice    "Touchpad"      "CorePointer"
...
Section "InputDevice"
       Identifier      "Touchpad"
       Driver          "evdev"
       Option          "Device"        "/dev/input/by-path/platform-i8042-serio-1-event-mouse" 
EndSection
...

Elantech Driver

The Touchpad is from Elantech, and is known to work with the out-of-tree Elantech driver Version 5. Support for the EEE PC was added with Version 5. After patching there is good documentation available in the /usr/src/linux/Documentation/input/elantech.txt file:

linux-2.6.26-gentoo-r1 # patch -p1 <.../elantech-v5-2.6.26.5.patch 
patching file Documentation/input/elantech.txt
patching file drivers/input/mouse/Kconfig
patching file drivers/input/mouse/Makefile
patching file drivers/input/mouse/elantech.c
patching file drivers/input/mouse/elantech.h
patching file drivers/input/mouse/psmouse-base.c
patching file drivers/input/mouse/psmouse.h

The driver is known to work with this configuration:

Example /etc/X11/xorg.conf file - see synaptics(5) for generally terse descriptions of the available settings and a good description of the edge layout:

File: /etc/X11/xorg.conf
Section "ServerLayout"
       InputDevice     "Elantech"      "CorePointer"
...
Section "InputDevice"
       Identifier      "Elantech"
       Driver          "synaptics"
       Option          "Protocol"      "auto-dev"
       Option          "Device"        "/dev/input/by-path/platform-i8042-serio-1-event-mouse"
       Option          "SHMConfig"     "on"
       Option          "AccelFactor"   "0.0320"        # default: 0.0015
       Option          "MaxSpeed"      "0.72"          # default: 0.18
       Option          "Emulate3Buttons"       "off"
       Option          "LBCornerButton"        "2"
       Option          "LeftEdge"      "60"
       Option          "RightEdge"     "1070"
       Option          "TopEdge"       "90"
       Option          "BottomEdge"    "680"
       Option          "VertTwoFingerScroll"   "1"
       Option          "HorizTwoFingerScroll"  "1"
       Option          "LockedDrags"   "1"
       Option          "CoastingSpeed" "0.13"
       Option          "CircularScrolling"     "1"
       Option          "CircScrollTrigger"     "8"     # 8=Top Left Corner
EndSection

The device looks like this:

# cat /proc/bus/input/devices 
...
I: Bus=0011 Vendor=0002 Product=000d Version=0063
N: Name="ETPS/2 Elantech Touchpad"
P: Phys=isa0060/serio1/input0
S: Sysfs=/class/input/input5
U: Uniq=
H: Handlers=mouse0 event5 
B: EV=f
B: KEY=6420 0 7000f 0 0 0 0 0 0 0 0
B: REL=143
B: ABS=1000003
# dmesg|grep -i elan
elantech.c: Elantech version query result 0x02, 0x00, 0x30.
elantech.c: assuming hardware version 2, firmware version 2.48
elantech.c: Synaptics capabilities query result 0x00, 0x02, 0x64.
input: ETPS/2 Elantech Touchpad as /class/input/input5

# grep -i elan /var/log/Xorg.0.log
(**) |-->Input Device "Elantech"
(--) Elantech auto-dev sets device to /dev/input/event5
(--) Elantech touchpad found
(**) Elantech: always reports core events
(II) evaluating device (Elantech)
(II) XINPUT: Adding extended input device "Elantech" (type: MOUSE)
(--) Elantech auto-dev sets device to /dev/input/event5
(--) Elantech touchpad found
(**) ETPS/2 Elantech Touchpad: always reports core events
(**) ETPS/2 Elantech Touchpad: Device: "/dev/input/event5"

Synaptics Driver

The synaptics driver does not recognise the touchpad, returning this on startup:

Synaptics no synaptics event device found (checked 17 nodes)
Query no Synaptics: 6003C8

Direct Rendering

The glxinfo/glxgears binaries from the livecd crash the X server:

$ DISPLAY=:0 glxinfo
name of display: :0.0
libGL: XF86DRIGetClientDriverName: 1.8.0 i915 (screen 0)
libGL: OpenDriver: trying /usr/lib/dri/tls/i915_dri.so
libGL: OpenDriver: trying /usr/lib/dri/i915_dri.so
drmOpenDevice: node name is /dev/dri/card0
drmOpenDevice: open result is 4, (OK)
drmOpenByBusid: Searching for BusID pci:0000:00:02.0
drmOpenDevice: node name is /dev/dri/card0
drmOpenDevice: open result is 4, (OK)
drmOpenByBusid: drmOpenMinor returns 4
drmOpenByBusid: drmGetBusid reports pci:0000:00:02.0
libGL warning: 3D driver claims to not support visual 0x63
Unrecognized deviceID 27ae
<X Server segv's>

Unmasking these packages and configuring AIGLX allows glxgears to run with direct rendering at 525fps. 400 to 900fps is one reported range for the 701. Setting INTEL_BATCH=1 brings that up to 897fps for the 901 (select XAA as the AccelMethod).

media-libs/mesa ~x86
x11-base/xorg-server ~x86
x11-base/xorg-x11 ~x86
x11-drivers/xf86-input-evdev ~x86
x11-drivers/xf86-input-keyboard ~x86
x11-drivers/xf86-input-mouse ~x86
x11-drivers/xf86-video-i810 ~x86
x11-libs/libdrm ~x86
x11-libs/libXrender ~x86
x11-libs/xtrans ~x86
x11-proto/renderproto ~x86
x11-proto/xf86driproto ~x86
Note: Note the ebuild comments about setting -nptl as a useflag for xorg-server, and the requirement to rebuild all the X11 drivers when moving from X Server 1.3 to 1.4.

If you lose the use of your arrow keys and up arrow runs ksnapshot, then disable KDE keyboard layouts (or switch to evdev).

Google Earth runs well after an initial (long) startup pause. The stable 4.2 version in portage is out of sync with the binary package available from Google - unmasking the 4.3 version enabled an install where the ebuild matched the binary available from Google.

An /etc/X11/xorg.conf excerpt summarising the DRI settings:

File: /etc/X11/xorg.conf
Section "ServerFlags"
       Option  "AIGLX"         "true"
...

Section "Module"
...
       Load       "glx"
       Load       "dri"
       Load       "dbe"
...

Section "Device"
       Identifier "Card0"
       Driver     "i810"
       BusID      "PCI:0:2:0"
       Option     "DRI"                   "true"
       Option     "AccelMethod"           "XAA"   # for faster scrolling in firefox
       Option     "XAANoOffScreenPixmaps" "true"
...

Note: If X doesn't run and has the error 'No devices found' then run X -configure to create a new xorg.conf file.

Compiz Fusion

The Compiz Fusion in portage installs without a hitch. The Zoom Desktop plugin works well for small details on web pages... etc

EEE PC 901 running Compiz Fusion
EEE PC 901 running Compiz Fusion
The Compiz Fusion Cube on the 901
The Compiz Fusion Cube on the 901

Later releases of Compiz Fusion may be found in the desktop-effects overlay.

evdev

Switching to the evdev driver for keyboard and mouse input may be useful if:
  1. the keyboard mapping is incorrect
  2. the X server does not respond to the keyboard or touchpad after a suspend/resume cycle


File: /etc/X11/xorg.conf
Section "ServerFlags"
       Option  "AllowMouseOpenFail" "true"
       Option  "AutoAddDevices" "no"
...

Section "InputDevice"
       Identifier      "Keyboard"
       Driver          "evdev"
       Option          "Device"        "/dev/input/event4" 
       Option          "XkbRules"      "xorg"
       Option          "XkbModel"      "evdev"
       Option          "XkbLayout"     "us"
EndSection

Section "InputDevice"
       Identifier      "Touchpad"
       Driver          "evdev"
       Option          "Device"        "/dev/input/event6"
EndSection

Setting AutoAddDevices set to no:

  1. stops the X server from trying to add the devices again after the explicit entries in xorg.conf have already claimed them.
  2. disables hotplugging, and so unfortunately also stops the X server adding a bluetooth mouse on-the-fly.
  3. seems to improve the chances of the devices being available after a suspend/resume cycle.

The file /proc/bus/input/devices can be used to map from device description to the eventN device file.

Networking

Both wired and wireless interfaces can be brought up against the current gentoo-sources kernel (2.6.25-gentoo-r7) using the out-of-tree drivers.

The ethernet driver (atl1e/eth0) works out of the box, while the wireless driver (rt2860sta/ra0) requires more work if you want WPA (at least).

Ethernet

The device looks like this to lspci:

# lspci -vs 03:00.0
03:00.0 Ethernet controller: Attansic Technology Corp. Device 1026 (rev b0)
       Subsystem: ASUSTeK Computer Inc. Device 8324
       Flags: bus master, fast devsel, latency 0, IRQ 17
       Memory at fbfc0000 (64-bit, non-prefetchable) [size=256K]
       I/O ports at ec80 [size=128]
       Capabilities: [40] Power Management version 2
       Capabilities: [48] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0 Enable-
       Capabilities: [58] Express Endpoint, MSI 00
       Capabilities: [6c] Vital Product Data <?>
       Kernel driver in use: ATL1e
       Kernel modules: atl1e

There are at least three kernels which can be considered to host the ethernet device/driver:

2.6.24-gentoo-r5 livecd kernel 
The livecd does not install sources and 2.6.24-gentoo-r5 is no longer in portage (2.6.24-r8 is). It is not known if the ASUS atl1e driver builds or works with this kernel version.
2.6.25-gentoo-r7 stable gentoo sources 
The ASUS P5KPL-CM motherboard atl1e driver builds and works well against this kernel.
2.6.27 vanilla sources 
An atl1e driver is present in the 2.6.27 rc series (rc4, released 20 Aug 2008, mentions it in the patches).

ASUS P5KPL-CM motherboard atl1e driver

Asus makes available a GPL-2 atl1e driver on Asus.com. The P5KPL-CM motherboard happens to have the same ethernet adapter as the EEE PC 901.

Copying this unzip'd and unrar'd source directory along with a 2.6.25-gentoo-r7 stable gentoo sources tree to a USB key and doing a local build on the EEE PC 901 is a fast and relatively painless way of getting a new machine up on the network. It has the additional advantage that it is known to work.

  1. Download the drivers for the P5KPL-CM motherboard from Asus.
  2. Unpack it (both unzip and unrar required).
  3. Enter the L1e_Lan/src directory and type KBUILD_NOPEDANTIC=1 make install & modprobe atl1e
  4. Configure the interface as normal as eth0.

Wireless

There may be a mainline driver ready for 2.6.28 or more likely 2.6.29 - in the meantime the out-of-tree driver works well.

# lspci -vs 01:00.0
01:00.0 Network controller: RaLink Device 0781
       Subsystem: RaLink Device 2790
       Flags: bus master, fast devsel, latency 0, IRQ 19
       Memory at f7ff0000 (32-bit, non-prefetchable) [size=64K]
       Capabilities: [40] Power Management version 3
       Capabilities: [50] Message Signalled Interrupts: Mask- 64bit+ Queue=0/5 Enable-
       Capabilities: [70] Express Endpoint, MSI 00
       Kernel driver in use: rt2860
       Kernel modules: rt2860sta

If you find that going in and out of wifi coverage causes sshd to exit with messages like this:

# grep sshd /var/log/auth.log |grep termin
.... sshd[6751]: Received signal 15; terminating.

then consider installing monit from portage and configure an sshd service test.

WPA Support

This sequence of steps are required for WPA support:

  1. Download and unpack the driver.
  2. Edit .../os/linux/config.mk to select WPA support and disable the flood of debug messages:
    • set: HAS_WPA_SUPPLICANT=y
    • set: HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y
    • remove –DDBG from WFLAGS
  3. make the driver - watch out for it copying to the module to (the probably non-existent) /tftpboot directory. Install the module manually (if necessary).
  4. Configure the interface for WPA and bring it up.

This patch was posted to the Arch Linux forum - it covers a lot of the configuration changes, and more.

wpa_supplicant

If wpa_supplicant (stable version 0.5.7 in portage) fails to associate with the AP and raises either of these errors:

  1. an error on startup echoed to the console: ioctl/AUTH call param 4 failed
  2. an error seen when wpa_supplicant is run manually with debugging selected: wpa_parse_wpa_ie_wpa: malformed ie or unknown version - run this from /etc/wpa_supplicant to look for this problem: wpa_supplicant -c wpa_supplicant.conf -Dwext -ira0 -d

Then one or both of these fixes may help:

  1. unmask version 0.6.4 of wpa_supplicant (its both keyworded and hard masked) and emerge =wpa_supplicant-0.6.4
  2. select ap_scan=2 (note the requirements for ap_scan=2) to have the driver take care of scanning, AP selection, and IEEE 802.11 association parameters.


File: /etc/wpa_supplicant/wpa_supplicant.conf
...
ap_scan=2
...

Power Management

The official gentoo documentation has a lot of information on configuring a machine for minimising power usage and sleep modes.

GUI Front Ends

User friendly front ends to the EEE hardware include:

kpowersave
(the latest version 0.7.3, is ~x86 keyworded in portage) is generally useful to manage power usage.
eee-control 
is a python/gtk GUI front end to the knobs (hardware, hotkeys, performance levels) exposed by ACPI and EEE specific kernel modules (the in-tree ACPI eeepc_laptop in 2.6.27+ and eeepc-linux).

Suspend to RAM

Note: Suspend sometimes works with this combination of software.
2.6.26-gentoo-r1 gentoo sources (~x86 keyworded)
the 2.6.26 kernel comes with an ACPI eeepc-laptop driver to query and control EEE hardware (wifi, camera, screen, fan... Bluetooth is a notable absentee). A one line patch is required to the wireless driver in order to get it to compile with this kernel version (in .../os/linux/rt_main_dev.c replace:
device = dev_get_by_name(dev->nd_net, slot_name);

with

device = dev_get_by_name(dev_net(dev), slot_name);
sys-power/suspend (for /usr/sbin/s2ram)
s2ram provides a wrapper around: echo -n "mem" > /sys/power/state

From a root terminal and selecting the s3_mode ACPI video flag:

# sync
# s2ram -f -a 2
Switching from vt7 to vt1
 
<machine is suspended at this point>

switching back to vt7
# 

And syslog records:

File: /var/log/messages
...
... kernel: PM: Syncing filesystems ... done.
... kernel: Freezing user space processes ... (elapsed 0.00 seconds) done.
... kernel: Freezing remaining freezable tasks ... (elapsed 0.00 seconds) done.
... kernel: Suspending console(s)
... kernel: ACPI: PCI interrupt for device 0000:00:02.0 disabled
... kernel: sd 1:0:1:0: [sdb] Stopping disk
... kernel: sd 1:0:0:0: [sda] Stopping disk
... wpa_cli: interface ra0 DISCONNECTED
...

The machine shuts down - screen and fan are turned off, the wifi LED is turned off and the power and power-button LEDs blink. Note that sdc was not stopped (the SD card holding the root file system in this case).

The machine is restarted by briefly pressing the power button. The screen turns on, the wifi connection reconnects and so does a bluetooth mouse. The camera works after a restart - having the camera in use may cause suspend to fail - it may need to be forced off via the eeepc-laptop ACPI interface.

Syslog shows the internal SSD's, the camera and bluetooth being reconnected.

The SD card reader holding the root file system survives the suspend (the persist flag having been set - see the example /etc/conf.d/local.start).

The suspend to RAM option of the kpowersave menu does not work out-of-the-box. It may need pm-utils installed and configured to talk to hal. hal in turn has the useflag laptop that Adds support for power management scripts (sys-power/pm-utils).

Suspend Problems

The s2ram documentation is a useful reference for working through suspend-specific problems.

The 901 is not known to s2ram (sys-power/suspend-0.8):

# s2ram
Machine is unknown.
This machine can be identified by:
   sys_vendor   = "ASUSTeK Computer INC."
   sys_product  = "901"
   sys_version  = "x.x"
   bios_version = "1101   "

With further experience white listing will be an option.

ACPI Sleep S3 Mode

The s3_mode (s2ram -f -a 2) has the best results seen so far. In one sequence of ten suspend/resume cycles:

  1. the machine recovered each time:
    • wifi comes back and remote network connections are fine
    • sound works
    • camera works
  2. a bluetooth mouse continued to work after resume - however kde bluetooth/KbluetoothD popped up a warning dialog after each resume complaining about either:
    • no SDP server running
    • or more cryptically from deep in the bluetooth stack: kbtobexsrv ... might require a modified class number for your bluetooth adapter. kbluetoothd thinks that the class is set to 0x0 when in reality it is 0x3e0100.
  3. on the 7th resume of the 10 cycle test, a warning popped up complaining that hal wasn't running. Checking with /etc/init.d/hald status and ps -aef confirmed this. It was restarted manually and no other problems were seen.
# grep hal messages
... kernel: hald[5327]: segfault at 95 ip 080556a7 sp bfbdbdac error 4 in hald[8048000+49000]

ACPI Sleep S3 BIOS Mode

With s3_bios selected (s2ram -f -a 1), a remote terminal will sometimes record this type of trace leading to a complete machine lockup:

dal kernel: ------------[ cut here ]------------
dal kernel:        c1815a40 f72f4700 00203046 f761e95c f75772c0 f7c015c0 00203246 000004d0 
dal kernel: invalid opcode: 0000 [#1] PREEMPT SMP 
dal kernel: Stack: c011b879 f7c03364 f7c5e068 000004d0 f7c015c0 f7c08400 f7c03340 c0118ad2 
dal kernel: Process X (pid: 10526, ti=f71ce000 task=f776c780 task.ti=f71ce000)
dal kernel:        c01721af f75772c0 00000040 000004d0 f7c817c0 c037a3a3 00000000 e44e0740 
dal kernel: Call Trace:
dal kernel:  [hrtick_start_fair+217/368] hrtick_start_fair+0xd9/0x170
dal kernel:  [<c011b879>] hrtick_start_fair+0xd9/0x170
dal kernel:  [enqueue_task+18/48] enqueue_task+0x12/0x30
dal kernel:  [<c0118ad2>] enqueue_task+0x12/0x30
dal kernel:  [__kmalloc+207/224] __kmalloc+0xcf/0xe0
dal kernel:  [<c01721af>] __kmalloc+0xcf/0xe0
dal kernel:  [__alloc_skb+83/272] __alloc_skb+0x53/0x110
dal kernel:  [<c037a3a3>] __alloc_skb+0x53/0x110
dal kernel:  [sock_alloc_send_skb+362/448] sock_alloc_send_skb+0x16a/0x1c0
dal kernel:  [<c03761ba>] sock_alloc_send_skb+0x16a/0x1c0
dal kernel:  [_spin_unlock_irqrestore+14/48] _spin_unlock_irqrestore+0xe/0x30
dal kernel:  [<c040fe3e>] _spin_unlock_irqrestore+0xe/0x30
dal kernel:  [unix_stream_sendmsg+533/800] unix_stream_sendmsg+0x215/0x320
dal kernel:  [<c03dd705>] unix_stream_sendmsg+0x215/0x320
dal kernel:  [sock_aio_write+226/256] sock_aio_write+0xe2/0x100
dal kernel:  [<c0372d82>] sock_aio_write+0xe2/0x100
dal kernel:  [core_sys_select+531/768] core_sys_select+0x213/0x300
dal kernel:  [<c01827e3>] core_sys_select+0x213/0x300
dal kernel:  [<c0372ca0>] sock_aio_write+0x0/0x100
dal kernel:  [do_sync_readv_writev+192/256] do_sync_readv_writev+0xc0/0x100
dal kernel:  [sock_aio_write+0/256] sock_aio_write+0x0/0x100
dal kernel:  [autoremove_wake_function+0/80] autoremove_wake_function+0x0/0x50
dal kernel:  [<c0174fd0>] do_sync_readv_writev+0xc0/0x100
dal kernel:  [rw_copy_check_uvector+126/256] rw_copy_check_uvector+0x7e/0x100
dal kernel:  [<c0137800>] autoremove_wake_function+0x0/0x50

And the X server installed originated from the livecd:

# equery belongs `which X`
[ Searching for file(s) /usr/bin/X in *... ]
x11-base/xorg-server-1.3.0.0-r6 (/usr/bin/X -> Xorg)

Sound

For full support including integrated microphone and speakers you need alsa version 1.0.17, which is supposed to be in kernel in 2.6.27. For details see: bugreport, diff.

After configuring the system for intel hda audio running alsaconf as root sets up the sound system correctly (you may have to unmute the front speakers).

The 3.5mm microphone jack and headphone works well with Skype.

Installing new alsa-driver

Until alsa 1.0.17 is merged in kernel, you may want to emerge media-sound/alsa-driver or later. Note that you need to disable alsa in kernel first.

# echo '=media-sound/alsa-driver-1.0.17 ~x86' >>/etc/portage/package.keywords
# echo '=media-sound/alsa-headers-1.0.17 ~x86' >>/etc/portage/package.keywords
# emerge alsa-driver

Bluetooth

The bluetooth device sits on the USB bus:

# lsusb -v
Bus 005 Device 002: ID 0b05:b700 ASUSTek Computer, Inc.
Device Descriptor:
 bLength                18
 bDescriptorType         1
 bcdUSB               2.00
 bDeviceClass          224 Wireless
 bDeviceSubClass         1 Radio Frequency
 bDeviceProtocol         1 Bluetooth
 bMaxPacketSize0        64
 idVendor           0x0b05 ASUSTek Computer, Inc.
 idProduct          0xb700
 bcdDevice            2.41
 iManufacturer           1 Broadcom Corp
 iProduct                2 BT-253
...

Bluetooth requires both kernel and userland configuration.

Disabling/enabling the transmitter may require patching and/or hardware hacking.

Bluetooth Mouse

With the Bluez stack installed and configured (bluez-utils-2.25-r1, bluez-libs-2.25), a Logitech V470 works well.

# hidd --show
00:07:4C:FA:AB:48 Logitech Bluetooth Mouse [046d:b008] connected

You might have to manually modprobe or autoload the hci_usb module if it is not loaded automatically.

WebCam

The hardware is the same as on the EEE PC 1000:

# lsusb -vd 04f2:b071
Bus 001 Device 004: ID 04f2:b071 Chicony Electronics Co., Ltd 
Device Descriptor:
 bLength                18
 bDescriptorType         1
 bcdUSB               2.00
 bDeviceClass          239 Miscellaneous Device
 bDeviceSubClass         2 ?
 bDeviceProtocol         1 Interface Association
 bMaxPacketSize0        64
 idVendor           0x04f2 Chicony Electronics Co., Ltd
 idProduct          0xb071 
 bcdDevice           15.18
 iManufacturer           2 Chicony Electronics Co., Ltd.
 iProduct                1 CNF7129
...
   Interface Association:
...
     bFunctionClass         14 Video
...
     iFunction               5 USB2.0 1.3M UVC WebCam

Unmask and emerge linux-uvc as per the EEE PC 1000 instructions.

After a modprobe uvcvideo you can try mplayer (as per the above instructions) if you have that installed or emerge luvcview. For luvcview the yuv format must be specified, as in luvcview -f yuv.

Skype allows you to select the new video device under the options configuration menu.

Sensors

ACPI appears to provide the only temperature sensor reading (from /proc/acpi/thermal_zone/TZ00/temperature). This is available when either the current asus-laptop or the old asus_acpi driver is selected (probably means that the driver variety is irrelevant for this item).

# cat /proc/acpi/thermal_zone/TZ00/temperature 
temperature:             50 C

gkrellm can be used to watch this discrete/instantaneous temperature (be patient it starts off at 0 C and remains that way for a couple of seconds).

Note that however:

# cat /proc/acpi/thermal_zone/TZ00/polling_frequency
polling frequency:       30 seconds

lm_sensors

The lm_sensors sensors-detect script produces a Sorry, no sensors were detected. message.

And the version in the lm_sensors SVN repository produces the same result.

Clock

If you experience intermittent hangs on boot when hwclock is called to set the system clock from the hardware clock, then experiment with setting:

File: /etc/conf.d/clock
...
# note that directisa is inherently racey and may cause problems of its own
CLOCK_OPTS="--directisa"
...

This behavior has been seen with this kernel configuration:

# egrep 'RTC|TICK|HPET|TIMER|HZ' .config |egrep -v 'SND|is not set'|sort
CONFIG_HIGH_RES_TIMERS=y
CONFIG_HPET_EMULATE_RTC=y
CONFIG_HPET_TIMER=y
CONFIG_HZ=1000
CONFIG_HZ_1000=y
CONFIG_LEDS_TRIGGER_TIMER=y
CONFIG_NO_HZ=y
CONFIG_RTC=y
CONFIG_SCHED_HRTICK=y
CONFIG_TICK_ONESHOT=y
CONFIG_TIMERFD=y
CONFIG_TIMER_STATS=y
CONFIG_X86_PM_TIMER=y
# dmesg|egrep -i 'hpet|clock|tsc'
ACPI: HPET 3F7A5820, 0038 (r1 A_M_I_ OEMHPET   7000811 MSFT       97)
ACPI: HPET id: 0xffffffff base: 0xfed00000
hpet clockevent registered
checking TSC synchronization [CPU#0 -> CPU#1]: passed.
Real Time Clock Driver v1.12ac
Marking TSC unstable due to: TSC halts in idle.
Clocksource tsc unstable (delta = -166628435 ns)

hwclock hanging or timing out appears to be a common enough problem.

Configuration Files

Here are some example configuration files used to bring up gentoo on a EEE PC 901.

Warning: Do not blindly copy these files without understanding the changes they are making to

the way a gentoo linux box works. At the very least some of them will increase your risk of data loss.

Kernel Config

Here are some known working kernel config files:

2.6.24-gentoo-r5 livecd kernel 
This is the kernel config from the 2008.0 livecd which served to bring up gentoo on the 901 (no ethernet or wireless support).
2.6.25-gentoo-r7 stable gentoo sources 
This is the latest stable sys-kernel/gentoo-sources in portage.
2.6.26-gentoo-r1 
This is the latest unstable sys-kernel/gentoo-sources in portage. It is configured with the Elantech touchpad driver for the 901 (after patching).

modules autoload

File: /etc/modules.autoload.d/kernel-2.6
# uncomment intel-agp if built as a module
#intel-agp
atl1e
rt2860sta
uvcvideo
hci_usb

fstab tmpfs filesystems

Adding a couple of tmpfs file systems may be useful in some circumstances (a little faster/a little less wear on the flash drive). If you have the memory it is generally good to have portage (/var/tmp or /var/tmp/portage) as a tmpfs or as a symbolic link to /dev/shm for example.

File: /etc/fstab
...
# your mileage will vary with these - don't use unless you are sure of what you are doing
none        /dev/shm  tmpfs   defaults          0 0
none        /tmp      tmpfs   size=128M         0 0
none        /var/log  tmpfs   size=20M          0 0
none        /var/run  tmpfs   size=2M           0 0
...

svcdir tmpfs filesystem

In the same manner, configuring a svcdir as a tmpfs may be a good idea:

File: /etc/conf.d/rc
...
# Should we mount $svcdir in a ram disk for some speed increase 
# for slower machines, or for the more extreme setups ?
svcmount="yes"
...

local.start

Some users may find these settings useful. Do not use unless you are sure you understand the consequences. Your mileage will vary.

File: /etc/conf.d/local.start
...
# default is 40% - raise it here to try and give
# write combining a chance, and hence reduce disk i/o's
echo 60 > /proc/sys/vm/dirty_ratio
# default is 10; max % of pages that can be dirty before pdflush begins
# to write them
echo 40 > /proc/sys/vm/dirty_background_ratio
# powertop: This wakes the disk up less frequenty for background VM activity
echo 1500 > /proc/sys/vm/dirty_writeback_centisecs
# 001 Device 002: ID 058f:6335 Alcor Micro Corp.
dev=`grep -n 058F6335 /sys/bus/usb/devices/*/serial | cut -d / -f 1-6`
if [ -f $dev/power/persist ] ; then
       echo 1 > $dev/power/persist
       echo "Alcor Mass Storage $dev, persist=`cat $dev/power/persist`"
else
       echo "storage device not found"
fi
# FIXME: needs to run after the tmpfs is mounted & before daemons start
cd /var/log && (
       mkdir -p cups gdm news portage/elog sandbox
       for f in lastlog cups/.keep_net-print_cups-0 news/.keep \
             gdm/.keep_gnome-base_gdm-0 sandbox/.keep_sys-apps_sandbox-0; do
             if [ ! -f $f ] ; then touch $f; fi
       done
       )
cd /var/run && mkdir -p hald/hald-runner hald/hald-local wpa_supplicant \
       ddclient sepermit cups cups/certs openldap dbus

local.stop

File: /etc/conf.d/local.stop
...
[ ! -d /var/oldlog ] && mkdir -p /var/oldlog
tar -C /var/log -cf - . | bzip2 -9 >/var/oldlog/`date '+%Y%m%d%H%M'`.tar.bz2

# limit the buildup of tarballs in /var/oldlog
cd /var/oldlog && \
       while [ `ls *.bz2 | wc -l` -ge 5 ] ; do rm -f `ls -rt|head -1`; done
...

make.conf

File: /etc/make.conf
#
# also consider -Os - cache is a reasonable 32KB iL1/24KB dL1/512KB L2 but space may get tight on an SD card
#
CFLAGS="-O2 -march=prescott -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"
CHOST="i686-pc-linux-gnu"
#
## local additions
#
SYNC="..."
GENTOO_MIRRORS="..."
#
AUTOCLEAN="yes"
MAKEOPTS="-j2" 
LINGUAS="en"
PORTAGE_NICENESS="19" 
PORTAGE_TMPFS="/dev/shm"
#
INPUT_DEVICES="evdev synaptics"
VIDEO_CARDS="i810 vga"
USE="a52 ffmpeg -gpm hal -ipv6 kde -kerberos -ldap -ogg -oss qt4 symlink -snmp -theora -vorbis xulrunner"
#

See also

This blog details how to get networking running under Ubuntu; I don't see any reason it wouldn't work with your own install of Gentoo as long as you have the kernel source (the LiveCD doesn't, but your final install will).

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

Last modified: Wed, 08 Oct 2008 04:28:00 +0000 Hits: 7,708