Asus Eee PC 701
From Gentoo Linux Wiki
| Laptops • TV Tuner Cards • Wireless • Servers • Storage • Other Hardware • Motherboards • Related |
Contents |
[edit] Introduction
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.
[edit] Hardware
| 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 |
| 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 |
[edit] Kernel
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.
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
|
[edit] Video
[edit] Framebuffer
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.
[edit] 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.
[edit] 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 log="/var/log/915resolution" |
| File: /etc/init.d/uvesafb |
#!/sbin/runscript
# 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Ă !
[edit] X.org
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
EndSection
|
[edit] Networking
[edit] 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.
[edit] Wireless
See Atheros 5xxx
[edit] Wifi on/off Script
There is a script, that allows to switch wifi on/off without rebooting.
| Code: eee-wifi-on-off.sh |
#!/bin/sh
#FILE: /sbin/eee-wifi-on-off.sh
# 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
load_modules
}
wifi_off() {
/etc/init.d/net.ath0 stop
unload_modules
echo 0 >/proc/acpi/asus/wlan
}
case $1 in
on)
acpi_fakekey $KEY_PROG1
wifi_on
;;
off)
acpi_fakekey $KEY_PROG2
wifi_off
;;
toggle)
STAT=`cat /proc/acpi/asus/wlan`
if [ "$STAT" = "1" ];
then wifi_off;
else wifi_on;
fi
;;
esac
|
Put this script somewhere in /usr/local/bin and make it executable with chmod +x eee-wifi-on-off.sh, then just run eee-wifi-on-off.sh 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.
[edit] 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.
[edit] 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.
[edit] Install
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.
[edit] Use
After modprobing the module there will appear /proc/eee interface, which will provide access to controlling fan speed and fsb frequency.
[edit] Overclock
The following is a sample script which will allow you to overclock the CPU to 900MHz.
| Code: /usr/local/bin/oclock |
#!/bin/bash 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" |
[edit] Battery
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).
[edit] Webcam
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
[edit] Sound
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.
[edit] 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(): |
fix_capture |
[edit] 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
[edit] Related Articles
- Small Footprint Gentoo on USB
- Light Gentoo Installation
- Install from USB using syslinux
- Setup a Portage BINHOST server
[edit] External Sites
- EeeUser.com user community - includes forums and wiki
- EeeUser.com wiki article on the 701 - includes useful hardware information.
- Official Asus site
- GeeeNTOO.com - unofficial site with patched kernel sources
- Ubuntu Eee PC guide
- EeePC dedicated IRC channel on Freenode
- Gentoo on Asus Eee PC (quick guide to installing gentoo on the internal Eee hard drive)
- Gentoo on the EEE Pc by Darin Ohashi
- eeeXubuntu OSD Scripts - can be rewritten for Gentoo
