Linux on the Asus eeePC 1001P


Last updated: July 18, 2010

Feedback

If you have any questions, comments or tips, email me at jlinkels AT linkels DOT net.

Preamble

After years of my lovely wife's whining that I always was reading from a laptop in bed I had decided quite long time ago to give her her own personal laptop. However good laptops are still a bit high in price for personal use, so when the netbooks appeared it was clear that I should buy her a netbook. By the time the screen resolutions had increased to 1024 pixels, virtually all eeePC's had become glossy. If there is one thing I hate, it is glossy screens. Why are screens made glossy? Everyone must hate that, as for years screen manufacturers had produced screen with an anti-glare coating. Once the laptops became real popular with consumers, they all became glossy. Have you ever watched a glossy screen? Fortunately Asus now produces 2 models with matte screen, which are the 1005HA and the 1001P.
The matte finish on the outside is nice as well, but not such a strong requirement. As a matter of fact, the finish is that nice carbon fibre look, which is complety fingerprint rejecting. At first I thought the finish would look the same as a checked Gucci bag, but fortunately that is not the case. No pun intended.
At the time of buying, Amazon.com sold two models of the 1001P, the low cost eeePC 1001P-MU17 for $289 and the somewhat higher priced eeePC 1001P-PU17 for $329. The latter comes with a 250GB hard disk instead of 160GB and with built-in Bluetooth. Both were black, and altough I really preferred a blue one, I had to go for a black one as my wife's birthday approached rapidly. also considered the 1005HE, but this was clearly an older model so I went for the 1001P
Before I actually placed the order, I checked the Debian Wiki for eeePC for compatibility of this particular model. Information about actual installation on this particular model was sparse. I found Jeff Richard's page on which he had published the succesful installation of the 10001P. These are the specification of this particular model 1001P-PU17:

Especially the Windows 7 Starter edition made me happy. What would I be without Windows? But I didn't have much choice. Unfortunately, the Microsoft offensive to push Linux off the netbook market, first by extending the life of XP, and then by designing Windows 7 was quite succesful.
While I don't even want to be buried next to a Windows® machine, I must admit that Microsoft did a better job than usual in designing this version. Of course much of the requirements of Windows7® were to make sure it would run smoothly on netbooks, as to be sure that Linux would not be able to dominate that market. The first time I did start up in Windows® as to check whether all hardware was fully functional. That took about three quarters of an hour, and numerous restarts.

Distribution

Debian is my favorite distribution. The installation process is easy but highly configurable with the Debian netinstaller. Too bad the netinstaller didn't work this time, so I had to download a complete CD. I like Debian a lot, and I have not seen a good reason to switch to another distro. Altough on some machines I have switched to XFCE as my default window manager instead of the sluggish and extremely bloated KDE4. I have to credit Debian tough that the Stable version is still installing KDE 3.5.
So everything on this web page will be referred to Debian. If you use Debian as well, it can be a help. If you use something else, some tips might be useful but there might be differences with your own distribution.

Initial installation

The usual starting point is to download a Debian Netinstaller. On USB this time, because that is the only external media from which the eeePc can boot. There is a slight problem with the 1001P, the Testing and Unstable netinstaller do not support the ethernet device which is an Atheros AR928X. Obviously the wireless device was not supported either.
And that is where the fun started.
The netinstaller I created on a 256 MB USB stick, using the standard Debian way as described in the Debian installation manual. Note that this manual points to the Sarge repository, to download Squeeze, use Squeeze hd-media ftp site. I can't quite remember why I downloaded the i386 version instead of the AMD architecture. The processor carries the 64bits flag according to /proc/cpuinfo:

flags         : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat clflush 
		dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm  constant_tsc arch_perfmon pebs 
		bts aperfmperf pni dtes64 monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm movbe lahf_lm

I know that some Atom mainboards have a BIOS which prevent the CPU operating in 64-bits mode, maybe that was the case with this netbook as well, maybe I just overlooked the 64-bits mode. In general I prefer 64-bits over 32-bits.
As expected, the network did not work, so without a network the netinstaller is worthless. I knew this topic was discussed on wiki.debian.org. It is incredible how Murphy is able to strike when he wants to. This was 3 days before my wife's birthday and wiki.debian.org was down. And like I said before, installation reports for eeePc are hard to find, and virtually all links point to wiki.debian.org. The next day the site was still down, but somewhere else I found out that the only way to install Debian testing on eeePc's was to create a complete installer CD #1. I couldn't use a CD, but it should be equally easy to put it on a USB stick. I follewed to the instructions as previously, but this time I obviously had to use a 1 GB stick, and follewed the "flexible way" as described on as described in the Debian installation manual. That worked perfectly, except that the eeePc wouldn't boot from this USB. It still booted from the 256 MB stick previsously made. That precluded a BIOS setting in the eeePc, right?
To make a long story short, I tried each and every partitioning, formatting or CHS scheme avaiable for bootable USB sticks on the internet. This site about everything related to making USB sticks bootable proved to be very helpful in those exercises. Now I did have bootable USB sticks, but the eeePc wouldn't boot. My other laptop, a Lenovo T61 booted without a problem. Eventually, it appeared that I had to adjust the eeePc BIOS on 2 places. I am still puzzled about how it could boot from the first 256 MB stick.
But anyway. After a full day of struggling, the system booted and installation went smooth, including the network adapter. The explanation for this boot problem is below:

The perfectly hidden boot option

So when the eeePC is booted, the boot menu shows the regular options for boot priority options

It is obvious that you choose to boot from the removable device (being our USB stick) first. Still, whatever you do, whatever USB stick you insert, you'll never boot from USB. The dreaded "Windows is starting up now" message fills your screen.

Now this is the secret: switch on the power with the USB stick inserted and enter the boot menu. Oh, surprise, suddenly there is an addition option in the menu! It wasn't there before!

And only entering this menu let you specifu the USB stick as your first boot device. Now at subsequent boots this setting remains active.

Partitioning

I had the installer shrink the Windows7® partition to 50 GB. Yes, that is large, but didn't know exactly what would be needed for Windows7® Not that I ever want to use Windows7®! But, in case of problems, you want to be sure whether it is your hardware failing or your driver, and when the device breaks down you want to send it to the service department running Windows® so ASUS cannot tell you the defect is because of the mere presence of Linux.
There were 2 more partions, one hidden 10 GB W95/FAT32 partition, for which I don have a clue what it contains, maybe the restore data, and another small 17 MB EFI (FAT-12/16/32) one which made no sense either.
When I shrunk the first partition, containing Windows®, a free space of 190 GB was created between sda1 and sda3. sda4 was also present, which left me nothing else than creating a logical partition between sda1 and sda3 to avoid that I would run out of partitions. Then I created the main partition for the Debian installation as sda5 of 180GB and a swap partition of 4GB as sda6. For this machine I left the usual policy to create separate /home, /usr and /var partitions. Looking in hindsight it would have been better to create a separate /home directory, but then again, I am not planning to do a re-install ever and my wife should not store any data on the machine anyway.

Software

The remainder of the Debian installation was a breeze. With the network adapter being recognized I installed a system as bare as possible. Then I added joe (my favorite editor, but still using the old Wordstar key bindings), ssh (which Debian doesn't install by default), kde-desktop and kdm login manager

What works

Graphics

This machine comes with the Intel Corporation N10 Family Integrated Graphics Controller. It is autodetected by xorg and KDE4 runs smoothly on it.

KDE's perfectly imitated Windows stupidity

Other than that, KDE4 is heavily Vistalized. Bloated, slow and buggy. I was running this laptop hidden in a cabinet (it was a birthday present for my wife, remember?) while I connected thru Rmote Desktop. At a certain moment I had to reboot the machine to test something, I think it was automatic network connection. Then I shut down using the KDE menu. I lost connection immediately. But the computer would not come back on-line again. Neither could I SSH back into it. It was gone. So I waited for the better part of an hour before my wife left the room and I could power cycle the laptop. When I opened the cabinet, I saw a dialog box:


Turn Off Computer.
Abort active sessions:
jlinkels: TTY login

This is insane! Breaking your remote connection and then come with stupid question whether you want to shut down! And it doesn't time out, it stays there forever! How much more you can imitate Windows? This is way cool if you have your computer somewhere in a co-location. Not that you should install KDE on a server, but still. I think KDE4 is the worst thing ever been done to KDE. Still, I know I am quite schizofrenic, because I actually kinda like those graphical effects and that eye candy, particularly the desktops on side of a rotating cube. Well, at least KDE4 runs on this graphic card. In my other desktop equipped with an NVIDIA 5200FX I had to replace KDE4 with XFCE as it was impossible to get it to run smoothly.

Touchpad

The touchpad actually is an Elantech touchpad. However, with the kernel version I used (2.6.26-3) the Elantech is not being recognized yet. (More info on Elantech) With this kernel version it is recognized as a Synaptics touchpad, no additional drivers are needed, but it doesn't act on tapping with your finger. In oreder to get it work properly I had to change the configuration in /etc/X11/xorg.conf so it became this:

Section "InputDevice"
        Identifier      "Touchpad"
        Driver          "synaptics"
        Option          "Device"                "/dev/input/mouse0"
        Option          "Protocol"              "auto-dev"
        Option          "VertTwoFingerScroll"   "1"
        Option          "HorizTwoFingerScroll"  "1"
        Option          "TapButton1"            "1"
        Option          "TapButton2"            "2"
        Option          "TapButton3"            "3"
EndSection

Section "ServerLayout"
        Identifier      "Builtin Default Layout"
        InputDevice     "Touchpad"
EndSection

Two finger scroll doesn't work, and neither zooming using two fingers.

Something else I don't terrible like is that the touch pad is level with the other part of the case. On the Lenovo the touchpad is somewhat sunken in the panel, which is easy while scrolling. You just position your index finger on the detectable edge of the touch pad and finger movement results in scrolling. That is much more difficult here. There is only a slight difference in smoothness between touchpad and the somewhat textured surface of the case. That makes that sometimes your are merely moving the mouse instead of scrolling, or not doing anything at all.

Wireless and wired network

Once I had overcome the problems during the installation process, both wireless and wired worked immediately. The lspci output for both adapters showed:

Network controller: Atheros Communications Inc. Device 002c (rev 01)
Ethernet controller: Atheros Communications AR8132 Fast Ethernet (rev c0)

The next problem was that I had to make the network detection, wired or wireless, acess point detection and acquiring an IP address fully automatic. This laptop was for my wife, remember? I can't expect her acquire a DHCP address, to know the difference between wired and wireless connection, or even more complicated, let her choose an access point. Simple instructions like "in this room, you have to plug in this cable, in the bedroom just open the cover" are more viable to work.
There are various solutions to this problem, but I particularly liked wherami. Full instructions about how to install required packages are provided. The compiling of the conf files is a bit complicated, and don't expect it to work the first time right. Start with the /etc/whereami/detect.conf file

# It is a good idea to default to somewhere...
default     undocked
# Test for the presence of an ethernet connection plugged into eth0
testmii     eth0          lan
# Get a list of the access points that we can see
testap      wlan0,khome,s:va233 wlan
if lan
  # If the testmii at the top was successful
  # I have two options, home and rnw (office)
  set INTERFACE eth0
  testdhcp    '*.*.*.*'    dhcp
elif wlan
  # If we found an accesspoint:
  set INTERFACE wlan0
  testap    khome,s:va233      home,dhcp
else
  always at undocked
fi

if dhcp
  testdhcp    192.168.110.*     home
  testdhcp    192.168.0.*       rnw
fi

and then the /etc/whereami.conf file, which configures what should happen when a certain network is detected:

## This only happens if we are not at a WLAN
!wlan ifconfig wlan0 down
!wlan resolvconf -d wlan0
## This only happens if we are not at a LAN
!lan ifconfig eth0 down
!lan resolvconf -d eth0
## Setup wlan connections
!wlan if /bin/false; then
=any iwconfig wlan0 mode managed
=any ifconfig wlan0 up
## example
=home set ip link wlan0 up
=home iwconfig wlan0 key s:****
=home iwconfig wlan0 essid "khome"
=home ntpdate vas_gw.rnbtech.com
=rnw ntpdate vas_gw.rnbtech.com
## Get IP from dhcp
=any dhclient wlan0
!wlan fi

Once you have these config files edited to what you think they should be, run whereami --debug in the foreground so you see what is happening. First you should see the detection, then what happens after detection.
While testing I had an unexpected problem. In my computer room where I did the confiring of this eeePC, I could detect the access point, but it would not acquire a DHCP address. This took a few hours before I figured out this was due to too low a field strength in relation to the bitrate. E.g. the wireless receiver would detect an accesspoint, but at a given bitrate communication was not reliable enough to negotiate an IP address. This is quite odd as signal strength is about 25/70, which usually is sufficient for a connection. I think it would be possible to write another script to lower the bitrate when this happens, but then I don't think it is worth it. I just told my wife to use a cable in this room. The wherami script give priority to the cable connection when a cable is plugged in anyway.

Then another problem is that after hibernating of the wireless network often is gone. The easiest sulution I found was simply running the wherami script again whenever the laptop wakes up. In addition I set the link down first and then up again, this is necessary in other laptop I have, and even if it is not needed here, it doesn't do any harm. The script I put in the directory containing all scripts related to sleep and wake-up events: /usr/lib/pm-utils/sleep.d/60wlan. By naming the script 60wlan it will run just before 70action_wpa which seemed to be a good idea. The contents of this simple script is:

#!/bin/sh
# Stop and restart wireless network

. "${PM_FUNCTIONS}"

WLAN=wlan0

suspend_wlan()
{
        ip link set $WLAN down
}

resume_wlan()
{
        /sbin/ip link set $WLAN down
        /sbin/ip link set $WLAN up
        /usr/sbin/whereami
}

case "$1" in
        hibernate|suspend)
                suspend_wlan
                ;;
        thaw|resume)
                resume_wlan
                ;;
        *) exit $NA
                ;;
esac

Haven't had any problems since.

Webcam

This was a surprise. The webcam worked right away. I tested it using Skype, no problem at all.

Sound

No problem here, worked out of the box.

Bluetooth

Didn't test it yet. Remember that I bought this model because Bluetooth was included? Guess how hard I needed it!

Suspend to RAM

Hibernate to RAM works as soon as you close the cover. The only problem was that the wireless networking would not re-initialize correctly. But as I described in the network section I found a good workaround for this problem.

Hotkeys

Card Reader

Works as advertised.

What did not work or still gives problems

Suspend to disk

Suspending actually works, but somehow resuming doesn't work. The image is written to disk, the computer switches off, but it always does a fresh reboot. I only tried to add the resume parameter to the list of boot parameters, nothing more. Suspend to RAM is good enough for now.



Cheap Laptop Rugged Laptop Case Gaming Laptop Lenovo Linux Laptop
Linux on Laptops is copyright © 2009 linux-on-laptops.com
Privacy Statement  Contact us at linuxonlaptops (at) gmail.com
  Advertise on linux-on-laptops.com

No Warranties: This information is provided "as is" without any warranty, condition, or representation of any kind, either express or implied, including but not limited to, any warranty respecting non-infringement, and the implied warranties of conditions of merchantability and fitness for a particular purpose. All logos or trademarks on this site are the property of their respective owner. In no event shall linux-laptop.net, linux-on-laptops.com, or any directors, trustees, associates, or employees thereof be liable for any direct, indirect, special, incidental, consequential or other damages howsoever caused whether arising in contract, tort, or otherwise, arising out of or in connection with the use or performance of the information contained on this web site.