ASUS Eee PC 701
WARNING: THIS ARTICLE IS INCOMPLETE! Visit the Arch forum thread link below to get information on installing Arch Linux on the Asus EEE PC.
- 1 Before You Begin
- 2 Installing Arch Linux
- 2.1 Download the necessary drivers/modules
- 2.2 Booting Arch the installation CD/USB
- 2.3 Start the Installation
- 2.4 Prepare Hard Drive
- 2.5 Select Packages
- 2.6 Configure System
- 2.7 Install Bootloader
- 2.8 Install Network Adapter Driver
- 2.9 Install All the Necessary Modules
- 3 Getting Everything Working
- 4 Additional Tips & Tweaks
- 5 Default Eee xorg.conf file
Before You Begin
The install is pretty normal, except that you'll need to avoid the pitfalls of our alternative Linux install:
- Never choose to use a journaling file system on the SSD partitions
- Never use a swap partition on the SSD
- Always edit your new installation fstab to mount the SSD partitions "noatime"
- Never log messages or error log to the SSD
The rules ensure that we won't reach the maximum limit of writes on our SSD faster than we should.
Choosing Your Installation Media
The EEE PC does not have an optical drive installed on the machine. This means you will need to install Arch Linux through one of the alternative methods:
- External USB CD-ROM drive
- USB pen drive (Recommended)
Unfortunately, the kernel does not include drivers for a LAN or Wireless install. If anyone knows how to do this, they're more than welcome to add this information in =D
And Always Remember...
And I shouldn't have to tell you this: always back up your data ;)
It's now time to install Arch Linux (hooray!).
Installing Arch Linux
Note: if you're using the USB pen drive as your media, then follow these instructions to create the installation USB, using the Don't Panic CORE CD as a base.
Download the necessary drivers/modules
Since the stock kernel that come with Don't Panic CD doesn't supports both Eee ethernet and wireless network cards, you might want to download the ethernet or wireless drivers/modules that you need and copy them to the installation USB.
- You can download ethernet driver source from here
- Wireless driver can be download from here.
- The wireless driver required a patch to make them works with Eee PC. The patch can be download from here
- If you want to use dkite's eeemodules package, then you should also download the package(s) from his website and put it on USB for ease of installing. Especially important is the eeemodules-22.214.171.124-1-i686.pkg.tar.gz, because we will need to install this package after installation for wireless and ethernet to work.
Booting Arch the installation CD/USB
Please refers to Beginners_Guide for detail instruction. Ideally, your CD/USB should boot up just fine on Eee PC without any need for additional options
Start the Installation
If you are installing from the USB, then issues
mount /dev/sd[x] /src
To mount the usb.
Then just run
To start the installation just like normal.
Prepare Hard Drive
The default Eee PC drive is split up into four partitions (here's some information about the partitioning):
- I don't know how other people did it, but I ended up wiping the entire disk and using one partition for the install.
- Choose "NONE" for swap (see #2 in Avoiding Pitfalls).
- Select "ext2" as your filesystem (see #1 in Avoiding Pitfalls).
If you are installing from USB, then choose SRC as your source.
In addition to the BASE category, we also need all the packages in the DEVEL category for compiling our ethernet/wireless drivers.
If you intended to use wireless, then you'll also need the wireless_tools package from SUPPORT category.
Edit /etc/rc.conf and add asus_acpi to the MODULES array:
MODULES = (... asus_acpi ...)
- Arch will complains about this, pay no attention to the error message because once we install the patched version of asus_acpi module using either dkiete's package or filoktetes's kernel, the error message will disappear.
Make these edits to "/etc/fstab":
- Add "noatime" to the options of your mounts (you can also add "nodiratime") (see #3 in Avoiding Pitfalls)
- (OPTIONAL) Add a new line: "tmpfs /var/log tmpfs size=1M 0 0" (WARNING: this will delete all your logs! See #4 in Avoiding Pitfalls)
- To save your startup/shutdown logs, look at the pitfalls link above.
To decrease boot time, I set "timeout" to 0. It's all about boot up time ;)
Install Network Adapter Driver
After the installation, The first thing you will noticed after booting into your newly installed Arch Linux is that the network adapters (both ethernet and wireless) are not working. To install the drivers, mount the USB stick that contains the drivers by issues the following commands:
mkdir /mnt/usb mount /dev/sd[x] /mnt/usb
Then follow the following instructions to install your network driver.
Atl2 ethernet driver
There are a number of patches floating about for the atl2. More recent kernel changes (2.6.22 and above) introduce things that broke the original sources. After much hunting found the posting at http://forum.eeeuser.com/viewtopic.php?pid=54057 with a link to a debian package that happily enough includes working patches for 2.6.23. Extract the sources and use the provided makefile to build atl2.ko, then flip that to /lib/modules/`uname -r`/net and run depmod -a.
Alternative ethernet driver installation instruction
Extract the ethernet driver source and then issues
make clean make cp atl2.ko /lib/modules/2.6.23-ARCH/kernel/drivers/net # Change 2.6.23 as fits depmod
Confirmed to work on stock 2.6.23-ARCH kernel.
Atheros ethernet driver
Instructions from http://wiki.eeeuser.com/ubuntu#wireless_internet_using_native_madwifi_drivers to patch madwifi. This replaces the Arch madwifi packages.
wget 'http://madwifi.org/attachment/ticket/1679/madwifi-ng-0933.ar2425.20071130.i386.patch?format=raw' wget http://snapshots.madwifi.org/madwifi-ng/madwifi-ng-r2756-20071018.tar.gz tar zxvf madwifi-ng-r2756-20071018.tar.gz cd madwifi-ng-r2756-20071018 patch -p0 < ../madwifi-ng-0933.ar2425.20071130.i386.patch\?format\=raw make clean make sudo make install
If you have already downloaded both the driver source & the patch and have moved them into the USB, then both move the driver source & the patch into the same directory and issues the following command:
tar zxvf madwifi-ng-r2756-20071018.tar.gz cd madwifi-ng-r2756-20071018 patch -p0 < ../madwifi-ng-0933.ar2425.20071130.i386.patch\?format\=raw make clean make sudo make install
Working against stock kernel.
Using Windows wireless driver with Ndiswrapper
If for some reason the above method don't work for you, then you might want to try using Ndiswrapper with Windows's driver.
First, make sure ndiswrapper and utils are installed:
pacman -S ndiswrapper ndiswrapper-utils
Now, blacklist the Atheros modules loaded by hal. Edit the /etc/rc.conf blacklist to look something like this:
You will want to make sure that those modules are not loaded in the module list as well by adding a "!" before those modules (in /etc/rc.conf):
MODULES=(!ath_hal !ath_pci ...
Now, you will need the drivers. I got them from the DVD that came with the Eee, or you can download it from ASUS's website (direct link). On the DVD, copy all of the files from:
Place them in a place that your Eee can access. Now go the location of the drivers and install them in ndiswrapper:
cd /driver/location/ ndiswrapper -i ./net5211.inf ndiswrapper -l ndiswrapper -m depmod -a modprobe ndiswrapper iwconfig ndiswrapper -ma && ndiswrapper -mi
I had to add the final step above to actually create wlan0. Please edit the above if there is anything unecessary there. Those are the steps I took, though.
Finally, add ndiswrapper to your modules (in /etc/rc.conf):
MODULES=(!ath_hal !ath_pci ndiswrapper ...
That should do it.
Install wireless and ethernet drivers using dkite's eeemodules Package
Another way to install both wireless and ethernet drivers/modules, instate of having to build and install the drivers/modules yourself, is to use dkite's eeemodules Package, which included both wireless and ethernet drivers/modules, among other things.
Since Don't Panic installation CD comes with kernel version 126.96.36.199, we will need to use eeemodules-188.8.131.52-1-i686.pkg.tar.gz package, which you can get from his website, if you haven't got it already.
Mount the USB that contains the package and install it with this command:
pacman -Uf eeemodules-184.108.40.206-1-i686.pkg.tar.gz
Then load the modules with
Restart and now you should have a working wireless/ethernet connection.
Install All the Necessary Modules
After you have installed and configed the driver, proceed to upgrade the system with pacman -Syu command. After the upgrade is complete, it is the time to decide which methods you would like to use to install the modules:
- ATTENTION: Do NOT restart after upgrade the system and before you install the modules using one of the following methods, or your hardware (wifi, ethernet, etc.) WILL stop functions.
Install modules using dkite's eeemodules package
dkite have created a package that contains all the necessary modules for wifi, ethernet connection, acpi and video camera hardware that comes with the Eee PC. His package is to be use with the stock kernel.
The following is the list of hardwares/funtions that are known to work with dkite's eeemodules Package:
You can get the package from his website.
Currently there are three pre-complied package:
- eeemodules-220.127.116.11-1-i686.pkg.tar.gz for use with Don't Panic kernel.
- eeemodules-0.0.1-2-i686.pkg.tar.gz for the 18.104.22.168 kernel.
- eeemodules-0.0.2-22.214.171.124.1-i686.pkg.tar.gz for the 126.96.36.199-1 kernel.
- eeemodules-0.0.3-188.8.131.52.2-i686.pkg.tar.gz for the 184.108.40.206-2 kernel.
If you have newer or other version of kernel26, then you will need to download eeemodules.tar.gz, which contains PKGBUILD and all the necessary files, and build the package yourself.
- ATTENTION: You will also need to rebuild the package, using eeemodules.tar.gz, every time you upgrade your kernel, or else your hardware (wifi, ethernet, etc.) will stop function.
Install the package with the following command:
pacman -Uf eeemodules-<pkgver>.tar.gz
Then run a depmod command:
To load the modules
- Attention: Do not forget to run the depmod command after installed the package, otherwise the various hardwares won't function!
If you want to use the webcam then you might also need to load the asus_acpi module. Edit the /etc/rc.conf file and insert asus_acpi into MODULES array:
MODULES = (... asus_acpi ...)
Reboot and everything should function.
Using filoktetes's custom kernel
filoktetes have built a custom kernel which included all the necessary modules for Eee PC hardwares. It is in the community repository.
The following is the list of hardwares/funtions that are known to work with dkite's eeemodules Package:
Install filoktetes's kernel by issuing:
pacman -Sy kernel26eee
And then build the initramfs image with this command:
mkinitcpio -g /boot/kernel26eee.img
Then, edit the /boot/grub/menu.lst and add the following lines:
# (2) Arch Linux title Arch Linux EEE kernel root (hd0,0( kernel /boot/vmlinuz26-eee root=/dev/sda1 ro initrd /boot/kernel26eee.img
Save changes and restart, then select the Arch Linux EEE kernel from the menu. You should now have all hardwares function.
Getting Everything Working
By now, you should have Arch installed. The following is the guide on how to get the rest of your system working.
It is recommended that you use xf86-video-i810 video driver in state of xf86-video-intel. The reasons because currently the xf86-video-intel driver have a problem with EEE PC's brightness setting and that the XV video output doesn't work with the current intel driver.
You need these packages in addition to the Xorg's packages:
pacman -Sy synaptics xf86-video-i810 915resolution
Then, just drop in the following xorg.conf, modified to work with 915resolution patch by Kitty, into /etc/X11/ directory:
Section "ServerLayout" Identifier "ArchLinux" Screen 0 "Screen0" InputDevice "keyboard" InputDevice "mouse" InputDevice "synaptics" EndSection Section "Files" RgbPath "/usr/share/X11/rgb" ModulePath "/usr/lib/xorg/modules" FontPath "/usr/share/fonts/misc" FontPath "/usr/share/fonts/100dpi:unscaled" FontPath "/usr/share/fonts/75dpi:unscaled" FontPath "/usr/share/fonts/TTF" FontPath "/usr/share/fonts/Type1" EndSection Section "Module" Load "glx" Load "dri" Load "extmod" Load "synaptics" EndSection Section "ServerFlags" Option "AllowMouseOpenFail" Option "BlankTime" "5" Option "DontVTSwitch" "true" Option "AIGLX" "false" EndSection Section "InputDevice" Identifier "keyboard" Driver "kbd" Option "CoreKeyboard" Option "XkbRules" "xorg" Option "XkbLayout" "us" Option "XkbVariant" "" EndSection Section "InputDevice" Identifier "mouse" Driver "mouse" Option "Device" "/dev/input/mice" Option "Protocol" "IMPS/2" Option "Emulate3Buttons" "yes" Option "ZAxisMapping" "4 5" Option "CorePointer" EndSection Section "InputDevice" Identifier "synaptics" Driver "synaptics" Option "Device" "/dev/psaux" Option "Protocol" "auto-dev" Option "LeftEdge" "1000" Option "RightEdge" "5400" Option "TopEdge" "1000" Option "BottomEdge" "4900" Option "PalmDetect" "0" Option "SHMConfig" "true" Option "SendCoreEvents" "yes" Option "HorizScrollDelta" "0" Option "RBCornerButton" "0" Option "RTCornerButtom" "0" Option "MaxSpeed" "0.1" EndSection Section "Monitor" Identifier "Monitor0" VendorName "ASUS" ModelName "eeePC P701" Modeline "800x480" 29.58 800 816 896 992 480 481 484 497 -HSync +Vsync # 60 Hz EndSection Section "Device" Identifier "Card0" Driver "i810" VendorName "Intel Corporation" BoardName "Mobile 915GM/GMS/910GML Express Graphics Controller" BusID "PCI:0:2:0" EndSection Section "Screen" Identifier "Screen0" Device "Card0" Monitor "Monitor0" DefaultDepth 24 SubSection "Display" Viewport 0 0 Depth 1 EndSubSection SubSection "Display" Viewport 0 0 Depth 4 EndSubSection SubSection "Display" Viewport 0 0 Depth 8 EndSubSection SubSection "Display" Viewport 0 0 Depth 15 EndSubSection SubSection "Display" Viewport 0 0 Depth 16 EndSubSection SubSection "Display" Viewport 0 0 Depth 24 EndSubSection EndSection Section "DRI" Mode 0666 EndSection
Then edit the /etc/conf.d/915resolution to look like this:
# Enter the VBIOS mode to patch MODE="41" # Enter the desired resolution RESOLUTION="800 480"
Now put the 915resolution daemon into your /etc/rc.conf file:
DAEMONS=(... 915resolution ...)
Now, just follows the Beginners_Guide#Part_III:_Installing_and_configuring_a_Desktop_Environment to install and config your chosen DE.
Sound & Webcam
Some people have reported sound working right out of the box with no troubles. However, others might need to add the following line to /etc/modprobe.conf.
options snd-hda-intel model=3stack-dig
If you installed dkite eeemodules package or filoktetes's kernel, then you should already have webcam driver installed and don't need to install Linux UVC device driver. Just add:
echo 1 > /proc/acpi/asus/camera
to your /etc/rc.local file should be suffice to get your webcam working.
If you don't use dkite eeemodules package or filoktetes's kernel or prefers to install the driver yourself, then follows the following instructions.
First, install the Linux UVC device driver. Make sure you have the community repositories enabled, and run:
pacman -S linux-uvc-svn
Then just turn on the webcam (This requires the asus_acpi module):
echo 1 > /proc/acpi/asus/camera
If you want a simple application application to test it out with, install luvcview from the AUR, and run it with:
luvcview -f yuv
Alternatively, if you want the webcam application that the default Xandos installation uses, install ucview from the AUR.
The webcam also works fine with the latest version of Skype.
I have yet to get it working with vlc or any other software such as xawtv. If you know how, please update this.
- NOTE: For anyone who has accidentally disabled Auto Exposure for their webcam in luvcview (making the image dark), and can't enable it again, do the following:
Install libwebcam from the AUR.
Issue the following command:
uvcdynctrl --set "Exposure, Auto" 4
Getting Hot Keys, Graphic Indicators and Shutdown with the Power Button Working
If you want to have working hot keys for changing brightness and volumes, graphic indicators working as well as shutdown when press the power button (just like in the stock Eee PC), then you should install dkite's acpid_eee package, which can also be download form his website
The package itself can be install with
pacman -Uf acpid_eee-0.0.1-1-i686.pkg.tar.gz.tar
If your Eee won't shutdown properly (i.e. the power indicator led is on but the LCD screen is off), then by adding the following line
To your /etc/rc.local.shutdown should fix the problem.
If this does not work, the module may not be able to be unloaded until after all services have finished. Do the above, then in /etc/rc.shutdown move
if [ -x /etc/rc.local.shutdown ]; then /etc/rc.local.shutdown fi
from where it was to directly above the line
# Terminate all processes
this will cause the rc.local.shutdown script to run after services have been exited. This fixed all issues for the person editing this note.
Additional Tips & Tweaks
- If you use dkite's acpid_eee package then you should already be able to shutdown by pressing the power button and should not need to do this.
The two alternatives here are described in Allow_users_to_shutdown.
If you don't already or don't plan to use sudo, it may be simpler to use the setuid /sbin/halt method, otherwise using sudo is preferred.
Below are all the steps required for the sudo method. If you want to use the setuid method, read the article linked above and perform the 'power' file step here, while omitting the 'sudo' in it.
pacman -S sudo
As root, do the following:
Add the following line to the file:
USER HOST = NOPASSWD: /sbin/poweroff
Where USER = the user you want to be able to power down with and HOST = your hostname (from /etc/rc.conf).
Now, create a file called /etc/acpi/events/power, containing:
# /etc/acpi/events/power # This is called when the user presses the power button event=button/power (PWR.||PBTN) action=sudo /sbin/poweroff
Make sure that you execute
And/or add acpid to the daemons list in /etc/rc.conf:
DAEMONS=(hal, acpid ...
Compile the 'everything' Kernel
The 'everything' kernel has ath5k, which supports the Atheros chipset found on the EEE PC. Here are the instructions on compiling the 'everthing' kernel (thanks raymano!).
Using the EEE PC's Kernel, First Method
- Note by Trithemius on 2007-12-15: In the case of Arch, this is probably not the one you want - there are dependencies in Arch that rely on newer kernels.
The EEE PC's kernel has all the hardware working through its modules, so why not use it? Grab a few debs from the EEE PC package source mirror to your Arch install to make your life easier. They include:
- The Kernel (linux-image-220.127.116.11-eeepc_3_i386.deb)
- Wireless driver (atheros-swan-modules-18.104.22.168-eeepc_20070713-2_i386.deb)
- LAN driver (atl2-modules-22.214.171.124-eeepc_126.96.36.199-2_i386.deb)
- Webcam driver (uvcvideo-modules-188.8.131.52-eeepc_20070706-2_i386.deb)
- Modem driver (hsfmodem-modules-184.108.40.206-eeepc_7.60.00.04oem-4_i386.deb)
- ACPI (asus-acpi_1.38-1xandros5_i386.deb)
Now just extract the deb files and save the data.tar.gz files. I also grabbed the xorg.conf, since it has all the Synaptic touchpad info in it.
To get the wireless to work using the Eee Pc modules, include ath_pci in MODULES. For wired internet using the internal nic, include atl2 in the MODULES list.
Insert this line in /etc/conf.d/wireless: wlanconfig ath0 create wlandev wifi0 wlanmode sta
Using the EEE PC's Kernel, Second Method
- After running a bit, this is a bad idea. Arch has dependencies on the newer kernels (for example, rsync fails in weird ways) so this approach may work in the short term, but I'd consider deprecated in favor of a 'real' kernel tree.
I have much better luck with a rebuild of the kernel sources instead of trying to overlay the provided binaries. (I am running an encrypted root, and 2GB of RAM.) Unpacked the 220.127.116.11-eeepc sources to a USB thumb drive, used the Asus kernel config and ran a normal kernel build. Followed that up with mkinitcpio to create the initial disk image, and the EeePC is happy.
Note that the /boot/config-18.104.22.168-eeepc file is from the original Asus firmware.
unrar e Linux_Kernel_071127.rar ar x linux-source-22.214.171.124-eeepc_5_all.deb data.tar.gz tar xOf data.tar.gz ./usr/src/linux-source-126.96.36.199-eeepc.tar.bz2 | tar xvjf - rm data.tar.gz cd linux-source-188.8.131.52-eeepc cp /boot/config-184.108.40.206-eeepc .config make oldconfig make bzImage modules make install make modules_install
Make an initial disk image to boot from:
/sbin/mkinitcpio -k 220.127.116.11-eeepc -c /etc/mkinitcpio.conf -g /boot/eeepc.img
Add an appropriate entry to /boot/grub/menu.lst, such as:
title eee kernel root (hd0,0) kernel /vmlinuz root=/dev/sda2 ro initrd /eeepc.img
Use cpufreq for power saving
For scaling down the processor you have to load the p4_clockmod. Insert it into your /etc/rc.conf MODULES array for loading it at startup.
MODULES=(... p4_clockmod ...)
Then proceed like here. Add the following into /etc/conf.d/cpufreq
governor="ondemand" min_freq="113MHz" max_freq="900MHz"
With enabled cpufreq it scales the processor between 113MHz up to max. frequency. That should save a lot on battery power. The stated 900MHz will be never reached by the eeePC, the p4_clockmod reports a wrong frequency here. But scaling works, youo can feel it in the performance of eeePC that he slow down the processor.
Default Eee xorg.conf file
The following file is the default xorg.conf file that comes with Eee PC, include here for archival purpose.
Section "ServerLayout" Identifier "archeee" Screen 0 "Screen1" InputDevice "keyboard" InputDevice "mouse" InputDevice "synaptics" EndSection Section "Files" ModulePath "/usr/lib/xorg/modules" FontPath "/usr/share/fonts/X11/misc" FontPath "/usr/share/fonts/X11/Type1" FontPath "/usr/share/fonts/X11/75dpi" FontPath "/usr/X11R6/lib/X11/fonts/Type1" EndSection Section "Module" Load "glx" Load "dri" Load "extmod" Load "synaptics" EndSection Section "ServerFlags" Option "AllowMouseOpenFail" Option "BlankTime" "5" Option "DontVTSwitch" "true" Option "AIGLX" "false" EndSection Section "InputDevice" Identifier "keyboard" Driver "kbd" Option "CoreKeyboard" Option "XkbRules" "xorg" Option "XkbLayout" "us" Option "XkbVariant" "" EndSection Section "InputDevice" Identifier "mouse" Driver "mouse" Option "Device" "/dev/input/mice" Option "Protocol" "IMPS/2" Option "Emulate3Buttons" "yes" Option "ZAxisMapping" "4 5" Option "CorePointer" EndSection Section "InputDevice" Identifier "synaptics" Driver "synaptics" Option "Device" "/dev/psaux" Option "Protocol" "auto-dev" Option "LeftEdge" "1000" Option "RightEdge" "5400" Option "TopEdge" "1000" Option "BottomEdge" "4900" Option "PalmDetect" "0" Option "SHMConfig" "true" Option "SendCoreEvents" "yes" Option "HorizScrollDelta" "0" Option "RBCornerButton" "0" Option "RTCornerButtom" "0" Option "MaxSpeed" "0.1" EndSection Section "Monitor" Identifier "Monitor1" VendorName "ASUS" ModelName "eeePC P701" Modeline "800x480" 29.58 800 816 896 992 480 481 484 497 -HSync +Vsync # 60 Hz EndSection Section "Device" Identifier "Device1" Driver "i810" VendorName "Intel Corporation" BoardName "Mobile 915GM/GMS/910GML Express Graphics Controller" BusID "PCI:0:2:0" EndSection Section "Screen" Identifier "Screen1" Device "Device1" Monitor "Monitor1" DefaultDepth 24 SubSection "Display" Depth 8 Virtual 1680 1680 EndSubSection SubSection "Display" Depth 15 Virtual 1680 1680 EndSubSection SubSection "Display" Depth 16 Virtual 1680 1680 EndSubSection SubSection "Display" Depth 24 Virtual 1680 1680 EndSubSection EndSection Section "DRI" Mode 0666 EndSection #Section "Extensions" # Option "Composite" "Disable" #EndSection