Asus Eee PC 901
From Gentoo Linux Wiki
The Asus EEE PC 901 is the second-generation EEE PC with a 1024x600 9-inch screen. It has a 1.6GHz Intel Atom processor with 20G of SSD storage divided into a 4GB master and a slower 16GB (8GB in Windows version) slave disk. Driver support for all of the EEE PC 901 hardware is present as of sys-kernel/gentoo-sources-2.6.30.
Contents |
[edit] Networking
[edit] Wired
The Ethernet network card of the Eee 901 is a Atheros L1E Gigabit Ethernet Adapter as shown by lspci below:
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
Enable Atheros L1E Gigabit Ethernet support in your kernel:
| Linux Kernel Configuration: Atheros L1E Gigabit Ethernet support |
Device Drivers --->
[*] Network device support --->
[*] Ethernet (1000 Mbit) --->
<*> Atheros L1E Gigabit Ethernet support
|
[edit] Wireless
The wireless device (rt2860sta/ra0) looks like this to lspci:
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
The rt2860sta driver was not included in the Linux mainline until 2.6.30. So you'll need to use >=sys-kernel/gentoo-sources-2.6.30:
| Linux Kernel Configuration: Enabling the rt2860sta driver |
Device Drivers --->
Network device support --->
Wireless LAN --->
[*] Wireless LAN (IEEE 802.11)
[*] Staging drivers --->
[ ] Exclude Staging drivers from being built
<*> Ralink 2860 wireless support
|
.... sshd[6751]: Received signal 15; terminating.Consider installing monit from portage and configure an sshd service test.
[edit] Function Keys
For the Eee 901 function keys(Fn) to work you'll need to enable the eeepc_laptop module in your kernel:
| Linux Kernel Configuration: Enabling the Eee Hotkeys |
Bus options (PCI etc.) --->
<*> Support for PCI Hotplug --->
Device Drivers --->
[*] X86 Platform Specific Device Drivers --->
<*> Eee PC Hotkey Driver
|
[edit] Power Management
The Gentoo Power Management Guide has a lot of information on configuring a machine for minimizing power usage and sleep modes. powertop (sys-power/powertop) is very useful for tweaking the system for minimum power usage. You should expect to draw about 7W while browsing with WiFi enabled and a reasonable brightness level.
[edit] Super Hybrid Engine
This is a special power-saving feature particular to this computer. Despite the corny name, it drastically reduces power consumption--at the price of performance of course. This alters some of the frequencies and voltages on the motherboard and should be used in addition to normal cpu governors. The eeepc_laptop driver, available in kernel versions 2.6.30 and above, has the ability to set SHE performance preset via /sys/devices/platform/eeepc/cpufv. You need enable Eee PC Hotkey Driver support in your kernel for this to work:
| Linux Kernel Configuration: Enable eeepc_laptop support |
Bus options (PCI etc.) --->
<M> Support for PCI Hotplug --->
Device Drivers --->
[*] X86 Platform Specific Device Drivers --->
<M> Eee PC Hotkey Driver
|
Valid values for /sys/devices/platform/eeepc/cpufv are:
0: Performance 1: Default 2: Powersave
To check the current setting,
This should output something similar to:
0x301
The highlighted 1 indicates that its set to Default. To change to Powersave, you would issue:
[edit] WiFi
If you're using wifi, you can activate the drivers power saving mode by issuing:
Put it back to normal with:
This will save you around half a watt. You could also set PSMode=Max_PSP, but this is really slow. The following file will automatically apply the power saving mode if you're using NetworkManager:
| Code: /etc/NetworkManager/dispatcher.d/02wifipower |
#!/bin/bash if [ "$1" = "ra0" -a "$2" = "up" ]; then /sbin/iwpriv ra0 set PSMode=Fast_PSP fi |
See the NetworkManager man page for more info.
[edit] Sound
The sound device is an Intel HDA with a Realtek ALC269 codec:
00:1b.0 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 02)
Card default 'Intel'/'HDA Intel at 0xf7db8000 irq 16' Mixer name : 'Realtek ALC269' Components : 'HDA:10ec0269,1043831a,00100004' Controls : 7 Simple ctrls : 5
Select the appropriate driver and codec in the kernel:
| Linux Kernel Configuration: Intel HD Audio |
Device Drivers --->
<*> Sound card support --->
<*> Advanced Linux Sound Architecture --->
[*] PCI sound devices --->
<M> Intel HD Audio
[*] Build Realtek HD-audio codec support
|
The snd-hda-intel module should be set to conform to the specifics of the Eee 901:
... options snd-hda-intel model=eeepc-p901
[edit] Bluetooth
The bluetooth device sits on the USB bus:
Bus 005 Device 002: ID 0b05:b700 ASUSTek Computer, Inc. Device Descriptor: ... 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 ...
Select the appropriate driver in the kernel:
| Linux Kernel Configuration: Intel HD Audio |
[*] Networking support --->
<*> Bluetooth subsystem support --->
Bluetooth device drivers --->
<*> HCI USB driver
|
The device can be enabled/disabled in the BIOS (Advanced>Onboard Devices Configuration>Onboard Bluetooth).
[edit] WebCam
The webcam is the CNF7129 from Chicony Electronics:
Bus 001 Device 003: ID 04f2:b071 Chicony Electronics Co., Ltd
Some revisions of the EEE PC 901 may ship with a camera from Gensys Logic.
Bus 001 Device 003: ID 05e3:0505 Genesys Logic, Inc.
The in-kernel uvcvideo driver supports these:
| Linux Kernel Configuration: USB Video Class (UVC) |
Device Drivers --->
Multimedia devices / Multimedia support --->
[*] Video For Linux
[*] Video capture adapters --->
[*] V4L USB devices --->
<*> USB Video Class (UVC)
[*] UVC input events device support
|
[edit] Sensors
| Linux Kernel Configuration: Intel 82801 (ICH) |
Device Drivers --->
-*- I2C support --->
<*> I2C device interface
[*] Autoselect pertinent helper modules
I2C Hardware Bus support --->
<M> Intel 82801 (ICH)
|
[edit] Temperature
The CPU temperature can either be read using ACPI (from /proc/acpi/thermal_zone/TZ00/temperature) or the hwmon framework (from /sys/class/hwmon/hwmon0/temp1_input).
[edit] Fan
The fan can be controlled from /sys/class/hwmon/hwmon1/. fan1_input shows the fan RPM, pwm1 shows the fan speed (between 0 - 255), and pwm1_enable toggles manual versus BIOS-operated fan control (0: BIOS control, 1: Manual control). The fancontrol script provided by the sys-apps/lm_sensors package can be used to control the fan speed based on the CPU temperature.
To use it first create a new file /etc/fancontrol, and edit it to look something like the following:
INTERVAL=10 FCTEMPS=hwmon1/pwm1=hwmon0/temp1_input FCFANS= hwmon1/pwm1=hwmon1/fan1_input MINSTART=hwmon1/pwm1=50 MINSTOP=hwmon1/pwm1=5 MINTEMP=hwmon1/pwm1=55 MAXTEMP=hwmon1/pwm1=75
Read the fancontrol man page for further information.
You can then start the fancontrol daemon with the following:
To start it automatically, add it to the default runlevel with:
[edit] X11
Following the Gentoo X11 Guide will probably suffice for setting up X11 to function on the 901. For more information, see the X.Org, Graphics drivers and Intel GMA articles for further information.
[edit] Graphics
The graphics hardware in the Eee901 is a Intel 950 GMA as shown below with lspci:
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 xf86-video-intel is the driver required by X to handle this card. Set VIDEO_CARDS to intel in /etc/make.conf and see the Graphics drivers and Intel GMA articles.
[edit] Input
The touchpad is from Elantech:
... 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
This touchpad requires the Elantech PS/2 protocol extension to be enabled in your kernel:
| Linux Kernel Configuration: Enabling the Elantech PS/2 protocol extension |
Device Drivers --->
Input device support --->
[*] Mice --->
<*> PS/2 mouse
[*] Elantech PS/2 protocol extension
|
Set INPUT_DEVICES to synaptics in /etc/make.conf. If you want X to auto-configure other input devices, like external keyboards and mice, you should also add evdev to INPUT_DEVICES. See the Input drivers article for further information.
Note: I had to add mouse and keyboard to my INPUT_DEVICES to get them to work.
Below is a custom, Eee 901 specific FDI file. FDI files are basically rule sets for HAL on how to configure the features of various input drivers. Make sure you save it too /etc/hal/fdi/policy/:
Note: As of Gnome 2.28 and the upstream decision for deprecation of HAL, synaptics settings are being ignored. [1] You can go to System->Preferences->Mouse->Touchpad to configure it or follow the instructions in the link provided.
<?xml version="1.0" encoding="utf-8"?>
<deviceinfo version="0.2">
<match key="info.product" contains="ETPS/2 Elantech Touchpad">
<append key="info.capabilities" type="strlist">input.touchpad</append>
</match>
<match key="info.capabilities" contains="input.touchpad">
<merge key="input.x11_driver" type="string">synaptics</merge>
<merge key="input.x11_options.SHMConfig" type="string">True</merge>
<merge key="input.x11_options.Protocol" type="string">auto-dev</merge>
<merge key="input.x11_options.Device" type="string">/dev/input/by-path/platform-i8042-serio-1-event-mouse</merge>
<merge key="input.device" type="string">/dev/input/by-path/platform-i8042-serio-1-event-mouse</merge>
<merge key="input.x11_options.LeftEdge" type="string">60</merge>
<merge key="input.x11_options.RightEdge" type="string">1070</merge>
<merge key="input.x11_options.TopEdge" type="string">90</merge>
<merge key="input.x11_options.BottomEdge" type="string">680</merge>
<merge key="input.x11_options.MaxTapTime" type="string">180</merge>
<merge key="input.x11_options.MaxTapMove" type="string">59</merge>
<merge key="input.x11_options.MaxDoubleTapTime" type="string">180</merge>
<merge key="input.x11_options.FastTaps" type="string">1</merge>
<merge key="input.x11_options.MinSpeed" type="string">0.219</merge>
<merge key="input.x11_options.MaxSpeed" type="string">0.937</merge>
<merge key="input.x11_options.AccelFactor" type="string">0.16</merge>
<merge key="input.x11_options.Emulate3Buttons" type="string">0</merge>
<merge key="input.x11_options.LBCornerButton" type="string">2</merge>
<merge key="input.x11_options.VertTwoFingerScroll" type="string">1</merge>
<merge key="input.x11_options.HorizTwoFingerScroll" type="string">1</merge>
<merge key="input.x11_options.LockedDrags" type="string">0</merge>
<merge key="input.x11_options.CoastingSpeed" type="string">0.13</merge>
<merge key="input.x11_options.CircularScrolling" type="string">1</merge>
<merge key="input.x11_options.CircScrollTrigger" type="string">8</merge>
<merge key="input.x11_options.TapButton1" type="string">1</merge>
<merge key="input.x11_options.TapButton2" type="string">2</merge>
<merge key="input.x11_options.TapButton3" type="string">3</merge>
</match>
<match key="info.capabilities" contains="input.keyboard"> <!-- keyboard -->
<merge key="input.x11_driver" type="string">evdev</merge>
<merge key="input.xkb.rules" type="string">xorg</merge>
<!-- Layout are here set to English(American(US)) and Russian, change to fit. -->
<merge key="input.xkb.layout" type="string">us,ru</merge>
<merge key="input.xkb.variant" type="string">,winkeys</merge>
<merge key="input.x11_options.XkbOptions" type="strlist">grp:caps_toggle</merge>
</match>
</deviceinfo>[edit] Framebuffer
The eeepc BIOS doesn't report its native screen resolution. With uvesafb alone, the closest mode available is 1024x768.
In order to get the native 1024x600 resolution on the framebuffer, the 915resolution utility is needed to hack the video BIOS. The 915resolution package in the portage tree does not recognise the intel 945GME chipset, however. There is a bug that contains a patch.
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.
| Linux Kernel Configuration: uvesafb kernel options |
Device Drivers ->
<*> Connector - unified userspace <-> kernelspace linker --->
Graphics support ->
[*] Support for frame buffer devices
<M> Userspace VESA VGA graphics support
Console display driver support ->
<*> Framebuffer Console support
|
Save the configuration and rebuild the kernel. Don't install it yet.
Fetch the 915resolution ebuild and patch from bugzilla and install to a local overlay.
And install the following packages:
Rebuild the kernel and install it. Do not put any video mode selection on the kernel parameters line.
As root, check available video modes using:
This will list the available modes according to the VESA BIOS. You probably don't want of 1920x1440 mode (5c), so this article will use its code to set up the custom resolution.
For the impatient, here is the shortest way to test it, run:
You should now have a nice framebuffer with a neat font at native resolution. Now, to make your changes persistent (i.e. load them automatically), edit these two files :
... replace="'5c 1024 600 32'"
#!/sbin/runscript
# Copyright 1999-2006 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
depend() {
after 915resolution
before xdm
before consolefont
}
start() {
ebegin "1024x600-32@60"
modprobe uvesafb mode_option=1024x600-32@60 || retval=$?
eend ${retval}
}
[edit] Configuration
[edit] make.conf
You can also consider -Os march option as cache is a reasonable 32KB iL1/24KB dL1/512KB L2 and space may get tight on an SD card. See the Intel Atom N270 section of the Safe Cflags article for the CHOSTS, CFLAGS and CXXFLAGS.
USE="mmx mmxext sse sse2 sse3 ssse3"
[edit] See also
- Safe Cflags for Atom N270
- how to clean a mac for mac users
[edit] External links
- Eee User: site and wiki
- EEE Fast Init: reimplementation of ASUS Fastinit
- Linux USB: Wait for the root partition to show up
- SSD Performance: zdnet Geek Sheet: A Tweaker’s Guide to Solid State Drives (SSDs) and Linux