Difference between revisions of "Netbook Asus 1005HA"

From YobiWiki
Jump to navigation Jump to search
m (Reverted edits by Etegohy (Talk) to last revision by PhilippeTeuwen)
 
(48 intermediate revisions by the same user not shown)
Line 25: Line 25:
 
* Webcam 0.3Mpx UVC 1.00 IMC Networks (13d3:5108)
 
* Webcam 0.3Mpx UVC 1.00 IMC Networks (13d3:5108)
 
* SynPS/2 Synaptics TouchPad
 
* SynPS/2 Synaptics TouchPad
  +
  +
  +
==Firmware upgrade==
  +
It has v1102, since there were a couple of new versions:
  +
1401 Update brightness table
  +
1301 Improve Wifi performance
  +
1301 Update EC firmware
  +
1203 Fix there is no "safely remove hardware" icon in windows 7 when plug in SD card.
  +
So let's try to install v1401
  +
* http://support.asus.com/download/download.aspx
  +
** EEE family / EEE PC / 1005HA / Linux
  +
** BIOS 1401
  +
* Unzip archive
  +
* Rename file 1005HA-ASUS-1401.ROM into 1005HA.ROM and move it to a USB stick (my 6Gb USB HD wasn't detected I had to use a real 1Gb USB Flash)
  +
* Reboot on the USB by pressing ALT-F2 while rebooting
  +
* Flash is done automatically
  +
* Remove USB stick & reboot
   
 
==Ubuntu==
 
==Ubuntu==
  +
===Install===
 
For this one I wanted a minimal maintenance stuff for basic laptop operations so I chose the latest Ubuntu at the moment: Lucid Lynx.
 
For this one I wanted a minimal maintenance stuff for basic laptop operations so I chose the latest Ubuntu at the moment: Lucid Lynx.
 
<br>Actually they have a version special for netbooks, installable from a USB stick, cool:
 
<br>Actually they have a version special for netbooks, installable from a USB stick, cool:
Line 33: Line 51:
 
<br>First time I tried I used the partition tool from Ubuntu installer but if it succeeded completing the install, after reboot it appeared that the partition table didn't contain refs to the root partition, ouch! So the new partition table was never written to the disk.
 
<br>First time I tried I used the partition tool from Ubuntu installer but if it succeeded completing the install, after reboot it appeared that the partition table didn't contain refs to the root partition, ouch! So the new partition table was never written to the disk.
 
<br>I rebooted on a good old FCCU liveCD v12 and changed the partition table the way I wanted then I did again the Ubuntu install, this time without troubles.
 
<br>I rebooted on a good old FCCU liveCD v12 and changed the partition table the way I wanted then I did again the Ubuntu install, this time without troubles.
  +
  +
I advise to keep at least the EFI partition as it's an 8Mb primary partition used by the BIOS for its "Boot Booster".
  +
<br>In case you already deleted it, simply recreate it with fdisk: 8Mb, type "ef". On reboot, hit F2, and re-enable boot booster in the BIOS.
  +
<br>Mine is at end of the 250Gb HDD:
  +
Device Boot Start End Blocks Id System
  +
/dev/sda4 30400 30401 16064+ ef EFI (FAT-12/16/32)
  +
 
===Out-of-the-Box===
 
===Out-of-the-Box===
 
Working:
 
Working:
Line 54: Line 79:
 
* Hotkeys: hotkey display toggle, hotkey display resize, taskmanager, super-hybrid-engine. See below how to use them with eeepc-laptop & Jupiter
 
* Hotkeys: hotkey display toggle, hotkey display resize, taskmanager, super-hybrid-engine. See below how to use them with eeepc-laptop & Jupiter
   
===Tuning with eeepc-laptop===
+
===Powersave Tuning===
  +
====eeepc-laptop====
This modules gives access to the eee hotkeys & eee Super Hybrid Engine for better powersafe control
 
  +
eeepc-laptop module gives access to the eee hotkeys & eee Super Hybrid Engine for better powersafe control
====Install driver====
 
  +
  +
Install driver:
 
$ modinfo eeepc-laptop
 
$ modinfo eeepc-laptop
 
filename: /lib/modules/2.6.32-23-generic/kernel/drivers/platform/x86/eeepc-laptop.ko
 
filename: /lib/modules/2.6.32-23-generic/kernel/drivers/platform/x86/eeepc-laptop.ko
Line 85: Line 112:
 
input: Asus EeePC extra buttons as /devices/platform/eeepc/input/input11
 
input: Asus EeePC extra buttons as /devices/platform/eeepc/input/input11
 
NetworkManager: <info> Found wlan radio killswitch rfkill5 (at /sys/devices/platform/eeepc/rfkill/rfkill5) (driver eeepc)
 
NetworkManager: <info> Found wlan radio killswitch rfkill5 (at /sys/devices/platform/eeepc/rfkill/rfkill5) (driver eeepc)
  +
====sysfs controls====
 
  +
Sysfs controls:
 
$ ls /sys/devices/platform/eeepc/
 
$ ls /sys/devices/platform/eeepc/
 
available_cpufv cpufv_disabled input/ subsystem/
 
available_cpufv cpufv_disabled input/ subsystem/
Line 137: Line 165:
 
* http://www.fewt.com/2010/02/meet-jupiter.html
 
* http://www.fewt.com/2010/02/meet-jupiter.html
 
* http://bb.fewt.com/viewtopic.php?f=27&t=12
 
* http://bb.fewt.com/viewtopic.php?f=27&t=12
  +
  +
====powertop & greedy applications====
  +
powertop permits to spot easily which applications are wakening the CPU dozen of times per second and/or are writing files to the disk, preventing spin down.
  +
aptitude install powertop
  +
Maybe you can simply disable applications at startup but as I didn't use them anyway I removed them completely:
  +
----
  +
ubuntuone-* was causing 16% of the wakeups
  +
<br>[https://wiki.ubuntu.com/UbuntuOne/FAQ#How%20do%20I%20completely%20remove%20and%20reinstall%20the%20Ubuntu%20One%20client%20software? How to remove it?]
  +
killall ubuntuone-login ubuntuone-preferences ubuntuone-syncdaemon
  +
rm -rf ~/.local/share/ubuntuone
  +
rm -rf ~/.cache/ubuntuone
  +
rm -rf ~/.config/ubuntuone
  +
rm -rf ~/Ubuntu\ One/ # unless you've valuable data here, be careful!
  +
sudo apt-get purge ubuntuone-client* python-ubuntuone-storage*
  +
It removed rhythmbox-ubuntuone-music-store python-ubuntuone libubuntuone-1.0-1 ubuntuone-client-gnome ubuntuone-client python-ubuntuone-client python-ubuntuone-storageprotocol
  +
----
  +
[http://doc.ubuntu-fr.org/desktopcouch Desktopcouch] is also [https://bugs.launchpad.net/ubuntu/+source/desktopcouch/+bug/578219 quite active], actually it's used amongst others by evolution, gwibber, ubuntu-one,... so let's remove gwibber
  +
killall gwibber-service
  +
apt-get purge gwibber*
  +
It removed gwibber gwibber-service
  +
----
  +
and all CouchDB
  +
pkill -f couch
  +
apt-get purge couch*
  +
It removed python-desktopcouch-records python-desktopcouch desktopcouch couchdb-bin python-couchdb
  +
====other monitoring commands====
  +
We just saw powertop, here are some other handy commands which can help debugging activities on the HDD & spindown matters.
  +
<br>You can skip completely this section if you don't plan to get your hands dirty.
  +
  +
Smartmontools:
  +
aptitude install -R smartmontools
  +
by default the daemon will not run, we just want to have smartctl available
  +
smartctl -A /dev/sda|grep ^193
  +
193 Load_Cycle_Count 0x0032 100 100 000 Old_age Always - 352
  +
so here 352 spinoff cycles over the HDD lifetime.
  +
----
  +
Hdparm:
  +
<br>Will be used by laptop-mode-tools for powersaving, see next chapter.
  +
<br>To watch if the drive is spinning or not:
  +
watch hdparm -C /dev/sda
  +
To spin down immediately (for debug only. You want it to be automated, don't you?)
  +
hdparm -y /dev/sda
  +
----
  +
[http://www.j-pfennig.de/ngflushd/index.html Ngflushd]:
  +
<br>A kind of super noflushd, but more oriented towards server & supports journaling fs
  +
<br>You can install the .deb but make sure to edit /etc/default/ngflushd to disable the daemon startup, we'll use it here only for statistics collection
  +
<br>Example if you want to try ngflushd to actually spin down the HDD, not to be used simultaneously with laptop-mode!
  +
<br>Note that in this example I disabled partitions remount because it failed with "ngflushd: Remount error: /dev/sda7: Invalid argument"
  +
ngflushd -t1 -w50 -j6 -l500 -a
  +
Watching the results after two hours:
  +
ngflushd -c status
  +
Daemon state: IDLE Disks: 0/1 (up/dn) Uptime: 1:54 (h:mm)
  +
Disk: /dev/sda S mounts: 3 down: 68% cycles: 23 (484.5 day)
  +
OK, now here we'll start the daemon in foreground, then switch it to PAUSED mode so it will collect data but won't act on the HDD. It's a nice way to watch laptop-mode efficiency.
  +
ngflushd -vv -d -a
  +
From another terminal, send a suspend command to the daemon to switch it to PAUSED mode:
  +
ngflushd -c suspend
  +
Back to the daemon window, you can observe in realtime when external event spins down the HDD:
  +
ngflushd: Daemon state: PAUSED Disks: 1/0 (up/dn) Uptime: 0:00 (h:mm)
  +
ngflushd: External spindown: /dev/sda
  +
ngflushd: Normal spinup: /dev/sda: after 0:00 (h:mm)
  +
etc
  +
----
  +
blktrace:
  +
<br>Watching which application writes to the drive, preventing it to spin down:
  +
aptitude install blktrace
  +
blktrace -d /dev/sda -o - | blkparse -i -
  +
The output is buffered and will be flushed when CTRL-C, a pity.
  +
<br>The output is quite hard to understand, see man page
  +
----
  +
iostat:
  +
<br>Only global IO usage on HDD:
  +
aptitude install sysstat
  +
iostat -p sda 2
  +
----
  +
Some more details about HDD spinning down in [http://ubuntuforums.org/showthread.php?t=805570 this thread]
  +
  +
====laptop-mode-tools====
  +
aptitude install -R laptop-mode-tools
  +
=> accept to remove pm-utils-powersave-policy
  +
<br>pm-utils-powersave-policy was doing two things:
  +
* increase dirty_writeback to one minute
  +
* Power down HDA controller with corresponding Sigmatel/IDT codec after 10 idle seconds
  +
laptop-mode-tools is doing the same, but we've to enable the Intel HDA powersave mode manually
  +
  +
Default config of the main laptop-mode-tools in /etc/laptop-mode/laptop-mode.conf was ok for me, I just wanted to enable a few extra modules, see below
  +
----
  +
Intel HDA power saving settings:
  +
<br>Modify /etc/laptop-mode/conf.d/intel-hda-powersave.conf
  +
CONTROL_INTEL_HDA_POWER=1
  +
FYI powertop suggested automatically this powersave setting, which corresponds to
  +
echo 1 > /sys/module/snd_hda_intel/parameters/power_save
  +
----
  +
Intel SATA power management settings:
  +
<br>Modify /etc/laptop-mode/conf.d/intel-sata-powermgmt.conf
  +
CONTROL_INTEL_SATA_POWER=1
  +
FYI powertop suggested automatically this powersave setting, which corresponds to
  +
echo min_power > /sys/class/scsi_host/host0/link_power_management_policy
  +
Note that it seems min_power is always set even when on AC
  +
----
  +
USB autosuspend settings:
  +
<br>Modify /etc/laptop-mode/conf.d/usb-autosuspend.conf
  +
CONTROL_USB_AUTOSUSPEND=1
  +
FYI powertop suggested automatically this powersave setting
  +
----
  +
Note that laptop-mode could also take care of CPUfreq & eee SHE but we're already using Jupiter for that.
  +
  +
====relatime====
  +
ngflushd sets relatime when remounting ext3/ext4 but laptop-mode-tools doesn't do it so we've to set it ourselves in /etc/fstab:
  +
UUID=xxx / ext4 errors=remount-ro,relatime 0 1
  +
UUID=xxx /home ext4 defaults,relatime 0 2
  +
See [http://blogs.koolwal.net/2009/01/30/installing-linux-on-usb-part-4-noatime-and-relatime-mount-options/ here] what is relatime: to summarize, relatime is a good compromise between atime (most expensive) and noatime (least expensive)
  +
  +
====Power consumption measurements====
  +
Using powertop, you can get an idea of the power consumption of the various elements.
  +
<br>Getting it right is always a bit tricky as you've to make sure there is no other active elements than the ones you want to measure, especially check that the HDD is spin down (hdparm -C /dev/sda).
  +
<br>Measurements are not per sub-system but the total power consumption, then only you can approximate what's the diff when feature is on/off, and for basis X=(LCD_off, WiFi_off) you've to find it from A=(LCD_on, WiFi_off), B=(LCD_off,WiFi_on) and C=(LCD_on,WiFi_on): X=A-(C-B)
  +
  +
How I did measurements:
  +
* HDD standby (spinning down), better to run it at start of each non HDD test...
  +
hdparm -y /dev/sda
  +
* LCD backlight off (be sure it's not just a black screen!)
  +
DISPLAY=:0.0 xset dpms force off
  +
* HDD read once per second to keep it spinning
  +
for i in /usr/bin/*; do sleep 1; cat $i >/dev/null; done
  +
* HDD read continuously
  +
dd if=/dev/sda of=/dev/null
  +
* HDD read/write continuously
  +
dd if=/dev/sda of=/tmp/foo
  +
* Camera active
  +
cheese
  +
* Keeping CPU busy (!logical dualcore)
  +
while :;do :;done& while :;do :;done
  +
* Forcing CPU to 1GHz
  +
echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
  +
echo powersave > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
  +
* Forcing CPU to 1.66GHz
  +
echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
  +
echo performance > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
  +
* Bluetooth scanning
  +
while :;do hcitool scan; done
  +
* Disabling camera & SDCard reader
  +
echo 0 > /sys/devices/platform/eeepc/camera
  +
echo 0 > /sys/devices/platform/eeepc/cardr
  +
* Wi-Fi TX 100%
  +
# From another machine
  +
ssh eeepc "dd if=/dev/zero" >/dev/null
  +
  +
Running in minimal mode (4.6W, with Wi-Fi active every 10s) for 8.5 hours:
  +
* -> battery at 38% capacity, remains 5.2h (4.6*(8.5+5.2)=63Wh)
  +
* expected total autonomy: 13.7h
  +
  +
----
  +
So I got the following approximations:
  +
  +
* Basis (laptop-mode, CPU 1GHz idle, HDD standby, Wi-Fi disabled, BT disabled, LCD off, camera disabled, cardr disabled)
  +
** 4.1W / 4.8W
  +
*** different results on different days... CPU fan on/off??
  +
* CPU
  +
** +0.5W 1.00GHz active 100%
  +
** +0.3W 1.66GHz idle
  +
** +1.3W 1.66GHz active 100%
  +
* Wi-Fi
  +
** +? enabled with powersave
  +
** +0.5W enabled, active every 10s
  +
** +1.6W active TX 100%
  +
* Bluetooth
  +
** +0W enabled inactive (probably due to USB autosuspend)
  +
** +0.2W active scanning
  +
* HDD
  +
** +0.5W spinning
  +
** +3.8W read/write
  +
* LCD backlight
  +
** +1.4W min level
  +
** +2.9W max level
  +
* camera
  +
** +0W enabled inactive (probably due to USB autosuspend)
  +
** +1.8W active
  +
* Ethernet
  +
** +0.2W connected
  +
** +1.0W active TX 100%
  +
* VGA out
  +
** +0.9W active
  +
* SDCard reader
  +
** +0W enabled inactive (probably due to USB autosuspend)
  +
** +0.2W card mounted
  +
** +1.1W card read/write
  +
* Audio??
  +
* Touchpad??
  +
* 3G USB stick (Huawei K3565)
  +
** +0.3W enabled disconnected
  +
** +0.6W connected
  +
  +
====Tuning ONGOING====
  +
powertop proposed some more power saving settings:
  +
  +
Wireless card powersave mode:
  +
iwconfig wlan0 power timeout 500ms
  +
  +
Disable camera USB (but we've seen that with USB autosuspend, enabled but inactive camera doesn't consume much)
  +
echo 0 > /sys/devices/platform/eeepc/camera
  +
Disable SDCard reader (but we've seen that with USB autosuspend, enabled but inactive camera doesn't consume much)
  +
echo 0 > /sys/devices/platform/eeepc/cardr
  +
----
  +
could be done via /etc/laptop-mode scripts or [http://sourceforge.net/apps/mediawiki/jupiter/index.php?title=Kernel scripts via Jupiter]
  +
----
  +
laptop-mode:
  +
  +
? auto-hibernate required or is it already the case??
   
 
===Touchpad===
 
===Touchpad===
Line 149: Line 386:
 
* http://ubuntuforums.org/showthread.php?t=1419833
 
* http://ubuntuforums.org/showthread.php?t=1419833
 
* http://www.bhagwad.com/blog/2010/technology/alps-synaptics-touchpad-configuration-in-lucid-lynx-ubuntu-10-04.html
 
* http://www.bhagwad.com/blog/2010/technology/alps-synaptics-touchpad-configuration-in-lucid-lynx-ubuntu-10-04.html
  +
* http://wiki.archlinux.org/index.php/Asus_Eee_PC_1005HA
  +
 
===Microphone===
 
===Microphone===
 
Microphone does not work out of the box.
 
Microphone does not work out of the box.
 
<br>From [https://wiki.ubuntu.com/HardwareSupport/Machines/Netbooks#Ubuntu%2010.4%20Lucid%20Netbook%20Edition here]:
 
<br>From [https://wiki.ubuntu.com/HardwareSupport/Machines/Netbooks#Ubuntu%2010.4%20Lucid%20Netbook%20Edition here]:
<br>Install the pulse audio volume control app
+
<br>Install the pulse audio tools
aptitude install pavucontrol
+
aptitude install paman pavucontrol pavumeter padevchooser
 
Sound & Video / PulseAudio Volume Control / Input Devices tab:
 
Sound & Video / PulseAudio Volume Control / Input Devices tab:
 
<br>Unmute audio
 
<br>Unmute audio
Line 165: Line 404:
   
 
aptitude install skype
 
aptitude install skype
====Misc====
 
* openssh-server
 
* mc
 
* encfs
 
* gstreamer0.10-plugins-ugly gstreamer0.10-ffmpeg
 
 
 
===Bugs===
 
===Bugs===
At reboot I sometimes encountered the following bug: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/572279
+
At reboot I encountered once the following bug: [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/572279 getpwuid_r(): failed due to unknown user id(0)], gone after a reboot.
 
==Firmware upgrade==
 
It has v1102, since there were a couple of new versions:
 
1401 Update brightness table
 
1301 Improve Wifi performance
 
1301 Update EC firmware
 
1203 Fix there is no "safely remove hardware" icon in windows 7 when plug in SD card.
 
So let's try to install v1401
 
* http://support.asus.com/download/download.aspx
 
** EEE family / EEE PC / 1005HA / Linux
 
** BIOS 1401
 
* Unzip archive
 
* Rename file 1005HA-ASUS-1401.ROM into 1005HA.ROM and move it to a USB stick (my 6Gb USB HD wasn't detected I had to use a real 1Gb USB Flash)
 
* Reboot on the USB by pressing ALT-F2 while rebooting
 
* Flash is done automatically
 
* Remove USB stick & reboot
 
   
 
==Misc links==
 
==Misc links==

Latest revision as of 21:35, 24 November 2010

Characteristics

  • ASUS 1005HA ACPI BIOS revision 1102
  • Build Date 10/16/09
  • EC Firmware Version:EPCD-029
  • CPU Intel Atom N280 @ 1.66GHz, FSB 667MHz, L1 24kb, L2 512kb (2 logical cores, 1 physical)
  • 2Gb 667MHz DDR2 non-ECC CL5 SODIMM (the original one was a 1Gb SODIMM)
  • 1024x600 Intel Corporation Mobile 945GME Express Integrated Graphics Controller
  • BIOS v02.58 American Megatrends
  • HDD ST9250315AS 250GB
Disk /dev/sda: 250.0 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x8da2c67c

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1       13055   104857600    7  HPFS/NTFS
/dev/sda2           13055       29094   128835584    7  HPFS/NTFS
/dev/sda3           29094       30400    10485760   1b  Hidden W95 FAT32
/dev/sda4           30400       30401       16064+  ef  EFI (FAT-12/16/32)
  • Atheros AR8132 / L1c Gigabit Ethernet Adapter
  • Atheros AR9285 Wireless Network Adapter (PCI-Express) AW-NE785H
  • ASUSTek Broadcom Bluetooth 2.1 (USB) AW-BT253
  • Battery LION ASUS 1005HA 5800mAh 63Wh
  • Intel Corporation 82801GBM/GHM (ICH7 Family) SATA AHCI Controller
  • Webcam 0.3Mpx UVC 1.00 IMC Networks (13d3:5108)
  • SynPS/2 Synaptics TouchPad


Firmware upgrade

It has v1102, since there were a couple of new versions:

1401 Update brightness table
1301 Improve Wifi performance
1301 Update EC firmware
1203 Fix there is no "safely remove hardware" icon in windows 7 when plug in SD card.

So let's try to install v1401

  • http://support.asus.com/download/download.aspx
    • EEE family / EEE PC / 1005HA / Linux
    • BIOS 1401
  • Unzip archive
  • Rename file 1005HA-ASUS-1401.ROM into 1005HA.ROM and move it to a USB stick (my 6Gb USB HD wasn't detected I had to use a real 1Gb USB Flash)
  • Reboot on the USB by pressing ALT-F2 while rebooting
  • Flash is done automatically
  • Remove USB stick & reboot

Ubuntu

Install

For this one I wanted a minimal maintenance stuff for basic laptop operations so I chose the latest Ubuntu at the moment: Lucid Lynx.
Actually they have a version special for netbooks, installable from a USB stick, cool:

Ubuntu Netbook 10.04

The only thing is that I wanted to only replace the 2 NTFS partitions and keep the last 2 partitions for now.
First time I tried I used the partition tool from Ubuntu installer but if it succeeded completing the install, after reboot it appeared that the partition table didn't contain refs to the root partition, ouch! So the new partition table was never written to the disk.
I rebooted on a good old FCCU liveCD v12 and changed the partition table the way I wanted then I did again the Ubuntu install, this time without troubles.

I advise to keep at least the EFI partition as it's an 8Mb primary partition used by the BIOS for its "Boot Booster".
In case you already deleted it, simply recreate it with fdisk: 8Mb, type "ef". On reboot, hit F2, and re-enable boot booster in the BIOS.
Mine is at end of the 250Gb HDD:

   Device Boot      Start         End      Blocks   Id  System
/dev/sda4           30400       30401       16064+  ef  EFI (FAT-12/16/32)

Out-of-the-Box

Working:

  • Suspend-to-RAM
  • Suspend-to-Disk (hibernate)
  • Webcam
  • VGA output
  • Ethernet
  • Wi-Fi
  • Audio playback
  • CPU freq scaling 1/1.33/1.66GHz, ondemand
  • sdcard reader
  • Silverkey disable touchpad
  • Hotkeys: suspend, Wi-Fi on/off, disable touchpad, brightness up/down, volume off/up/down
  • Bluetooth, it detected a W300i phone and I could use the phone as remote control OOB, could use it to access Internet as well apparently
  • My 3G USB key (Vodaphone K3565 = Huawei E160)

Not working?:

  • multi-touchpad. See below the paragraph about Touchpad
  • audio mic. See below the paragraph about Microphone
  • Hotkeys: backlight on/off (not clear, it worked at the beginning, anyway it's barely usable without any backlight... Once Jupiter is used it seems it's used as VGAOFF)
  • Hotkeys: hotkey display toggle, hotkey display resize, taskmanager, super-hybrid-engine. See below how to use them with eeepc-laptop & Jupiter

Powersave Tuning

eeepc-laptop

eeepc-laptop module gives access to the eee hotkeys & eee Super Hybrid Engine for better powersafe control

Install driver:

$ modinfo eeepc-laptop
filename:       /lib/modules/2.6.32-23-generic/kernel/drivers/platform/x86/eeepc-laptop.ko
license:        GPL
description:    Eee PC Hotkey Driver
author:         Corentin Chary, Eric Cooper
srcversion:     9A474055673699361160D37
alias:          acpi*:ASUS010:*
depends:        
vermagic:       2.6.32-23-generic SMP mod_unload modversions 586 
parm:           hotplug_disabled:Disable hotplug for wireless device. If your laptop need that, please report to acpi4asus-user@lists.sourceforge.net. (bool)
sudo vi /etc/default/grub
=> GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_osi=Linux"
sudo update-grub
reboot 

Now eeepc-laptop kernel module will be properly loaded

In /var/log/syslog

eeepc_laptop: Eee PC Hotkey Driver
eeepc_laptop: wlan hotplug disabled
eeepc_laptop: Hotkey init flags 0x41
eeepc_laptop: TYPE (2000000) not reported by BIOS, enabling anyway
eeepc_laptop: PANELPOWER (4000000) not reported by BIOS, enabling anyway
eeepc_laptop: TPD (8000000) not reported by BIOS, enabling anyway
eeepc_laptop: Get control methods supported: 0xe101713
eeepc_laptop: Backlight controlled by ACPI video driver
input: Asus EeePC extra buttons as /devices/platform/eeepc/input/input11
NetworkManager: <info>  Found wlan radio killswitch rfkill5 (at /sys/devices/platform/eeepc/rfkill/rfkill5) (driver eeepc)

Sysfs controls:

$ ls /sys/devices/platform/eeepc/
available_cpufv  cpufv_disabled   input/           subsystem/
camera           disp             modalias         uevent
cardr            driver/          power/           
cpufv            hwmon/           rfkill/

Display:

/sys/devices/platform/eeepc/disp:
1 = LCD
2 = CRT
3 = LCD+CRT

If you run X11, you should use xrandr instead.

Camera:

/sys/devices/platform/eeepc/camera:
1 = on
0 = off

SDCard reader:

/sys/devices/platform/eeepc/cardr:
1 = on
0 = off

CPU clock configuration:

/sys/devices/platform/eeepc/cpufv:
0 = Super Performance Mode
1 = High Performance Mode
2 = Power Saving Mode

Reading this file will show the raw hexadecimal value which is defined as follow:

| 8 bit | 8 bit |
    |       `---- Current mode
    `------------ Availables modes

For example, 0x301 means: mode 1 selected, 3 available modes.

Jupiter

Jupiter is taking care of multiple power saving settings including the eee SHE & GMA950 overclocking if you install also jupiter-support-eee
See http://www.webupd8.org/2010/06/jupiter-take-advantage-of-asus-super.html To install it, there are a few pre-requisite:

aptitude install libnotify-bin acpi

Get .deb packages jupiter & jupiter-support-eee from here & install them

It takes also care of the extra FN buttons (there is also packages eee-applet & eeepc-acpi-scripts or eeepc-control if you prefer not to use Jupiter)

Applet will start at reboot, otherwise you can already start it manually by calling "jupiter.exe" (oups, C#...)
Hovering applet displays CPU temperature.

Issue: very slow at displaying messages when pressing several times / several buttons in a short amount of time.

Support:

powertop & greedy applications

powertop permits to spot easily which applications are wakening the CPU dozen of times per second and/or are writing files to the disk, preventing spin down.

aptitude install powertop

Maybe you can simply disable applications at startup but as I didn't use them anyway I removed them completely:


ubuntuone-* was causing 16% of the wakeups
How to remove it?

killall ubuntuone-login ubuntuone-preferences ubuntuone-syncdaemon
rm -rf ~/.local/share/ubuntuone
rm -rf ~/.cache/ubuntuone
rm -rf ~/.config/ubuntuone
rm -rf ~/Ubuntu\ One/ # unless you've valuable data here, be careful!
sudo apt-get purge ubuntuone-client* python-ubuntuone-storage* 

It removed rhythmbox-ubuntuone-music-store python-ubuntuone libubuntuone-1.0-1 ubuntuone-client-gnome ubuntuone-client python-ubuntuone-client python-ubuntuone-storageprotocol


Desktopcouch is also quite active, actually it's used amongst others by evolution, gwibber, ubuntu-one,... so let's remove gwibber

killall gwibber-service
apt-get purge gwibber*

It removed gwibber gwibber-service


and all CouchDB

pkill -f couch
apt-get purge couch*

It removed python-desktopcouch-records python-desktopcouch desktopcouch couchdb-bin python-couchdb

other monitoring commands

We just saw powertop, here are some other handy commands which can help debugging activities on the HDD & spindown matters.
You can skip completely this section if you don't plan to get your hands dirty.

Smartmontools:

aptitude install -R smartmontools

by default the daemon will not run, we just want to have smartctl available

smartctl -A /dev/sda|grep ^193
193 Load_Cycle_Count        0x0032   100   100   000    Old_age   Always       -       352

so here 352 spinoff cycles over the HDD lifetime.


Hdparm:
Will be used by laptop-mode-tools for powersaving, see next chapter.
To watch if the drive is spinning or not:

watch hdparm -C /dev/sda

To spin down immediately (for debug only. You want it to be automated, don't you?)

hdparm -y /dev/sda

Ngflushd:
A kind of super noflushd, but more oriented towards server & supports journaling fs
You can install the .deb but make sure to edit /etc/default/ngflushd to disable the daemon startup, we'll use it here only for statistics collection
Example if you want to try ngflushd to actually spin down the HDD, not to be used simultaneously with laptop-mode!
Note that in this example I disabled partitions remount because it failed with "ngflushd: Remount error: /dev/sda7: Invalid argument"

ngflushd -t1 -w50 -j6 -l500 -a

Watching the results after two hours:

ngflushd -c status
Daemon state: IDLE     Disks: 0/1 (up/dn)  Uptime: 1:54 (h:mm)
Disk: /dev/sda       S  mounts: 3  down: 68%   cycles: 23 (484.5 day)

OK, now here we'll start the daemon in foreground, then switch it to PAUSED mode so it will collect data but won't act on the HDD. It's a nice way to watch laptop-mode efficiency.

ngflushd -vv -d -a

From another terminal, send a suspend command to the daemon to switch it to PAUSED mode:

ngflushd -c suspend

Back to the daemon window, you can observe in realtime when external event spins down the HDD:

ngflushd: Daemon state: PAUSED   Disks: 1/0 (up/dn)  Uptime: 0:00 (h:mm)
ngflushd: External spindown: /dev/sda
ngflushd: Normal spinup: /dev/sda: after 0:00 (h:mm)
etc

blktrace:
Watching which application writes to the drive, preventing it to spin down:

aptitude install blktrace
blktrace -d /dev/sda -o - | blkparse -i -

The output is buffered and will be flushed when CTRL-C, a pity.
The output is quite hard to understand, see man page


iostat:
Only global IO usage on HDD:

aptitude install sysstat
iostat -p sda 2

Some more details about HDD spinning down in this thread

laptop-mode-tools

aptitude install -R laptop-mode-tools

=> accept to remove pm-utils-powersave-policy
pm-utils-powersave-policy was doing two things:

  • increase dirty_writeback to one minute
  • Power down HDA controller with corresponding Sigmatel/IDT codec after 10 idle seconds

laptop-mode-tools is doing the same, but we've to enable the Intel HDA powersave mode manually

Default config of the main laptop-mode-tools in /etc/laptop-mode/laptop-mode.conf was ok for me, I just wanted to enable a few extra modules, see below


Intel HDA power saving settings:
Modify /etc/laptop-mode/conf.d/intel-hda-powersave.conf

CONTROL_INTEL_HDA_POWER=1

FYI powertop suggested automatically this powersave setting, which corresponds to

echo 1 > /sys/module/snd_hda_intel/parameters/power_save

Intel SATA power management settings:
Modify /etc/laptop-mode/conf.d/intel-sata-powermgmt.conf

CONTROL_INTEL_SATA_POWER=1

FYI powertop suggested automatically this powersave setting, which corresponds to

echo min_power > /sys/class/scsi_host/host0/link_power_management_policy

Note that it seems min_power is always set even when on AC


USB autosuspend settings:
Modify /etc/laptop-mode/conf.d/usb-autosuspend.conf

CONTROL_USB_AUTOSUSPEND=1

FYI powertop suggested automatically this powersave setting


Note that laptop-mode could also take care of CPUfreq & eee SHE but we're already using Jupiter for that.

relatime

ngflushd sets relatime when remounting ext3/ext4 but laptop-mode-tools doesn't do it so we've to set it ourselves in /etc/fstab:

UUID=xxx /               ext4    errors=remount-ro,relatime 0       1
UUID=xxx /home           ext4    defaults,relatime          0       2

See here what is relatime: to summarize, relatime is a good compromise between atime (most expensive) and noatime (least expensive)

Power consumption measurements

Using powertop, you can get an idea of the power consumption of the various elements.
Getting it right is always a bit tricky as you've to make sure there is no other active elements than the ones you want to measure, especially check that the HDD is spin down (hdparm -C /dev/sda).
Measurements are not per sub-system but the total power consumption, then only you can approximate what's the diff when feature is on/off, and for basis X=(LCD_off, WiFi_off) you've to find it from A=(LCD_on, WiFi_off), B=(LCD_off,WiFi_on) and C=(LCD_on,WiFi_on): X=A-(C-B)

How I did measurements:

  • HDD standby (spinning down), better to run it at start of each non HDD test...
hdparm -y /dev/sda
  • LCD backlight off (be sure it's not just a black screen!)
DISPLAY=:0.0 xset dpms force off
  • HDD read once per second to keep it spinning
for i in /usr/bin/*; do sleep 1; cat $i >/dev/null; done
  • HDD read continuously
dd if=/dev/sda of=/dev/null
  • HDD read/write continuously
dd if=/dev/sda of=/tmp/foo
  • Camera active
cheese
  • Keeping CPU busy (!logical dualcore)
while :;do :;done& while :;do :;done
  • Forcing CPU to 1GHz
echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor 
echo powersave > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor 
  • Forcing CPU to 1.66GHz
echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor 
echo performance > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor 
  • Bluetooth scanning
while :;do hcitool scan; done
  • Disabling camera & SDCard reader
echo 0 > /sys/devices/platform/eeepc/camera
echo 0 > /sys/devices/platform/eeepc/cardr
  • Wi-Fi TX 100%
# From another machine
ssh eeepc "dd if=/dev/zero" >/dev/null

Running in minimal mode (4.6W, with Wi-Fi active every 10s) for 8.5 hours:

  • -> battery at 38% capacity, remains 5.2h (4.6*(8.5+5.2)=63Wh)
  • expected total autonomy: 13.7h

So I got the following approximations:

  • Basis (laptop-mode, CPU 1GHz idle, HDD standby, Wi-Fi disabled, BT disabled, LCD off, camera disabled, cardr disabled)
    • 4.1W / 4.8W
      • different results on different days... CPU fan on/off??
  • CPU
    • +0.5W 1.00GHz active 100%
    • +0.3W 1.66GHz idle
    • +1.3W 1.66GHz active 100%
  • Wi-Fi
    • +? enabled with powersave
    • +0.5W enabled, active every 10s
    • +1.6W active TX 100%
  • Bluetooth
    • +0W enabled inactive (probably due to USB autosuspend)
    • +0.2W active scanning
  • HDD
    • +0.5W spinning
    • +3.8W read/write
  • LCD backlight
    • +1.4W min level
    • +2.9W max level
  • camera
    • +0W enabled inactive (probably due to USB autosuspend)
    • +1.8W active
  • Ethernet
    • +0.2W connected
    • +1.0W active TX 100%
  • VGA out
    • +0.9W active
  • SDCard reader
    • +0W enabled inactive (probably due to USB autosuspend)
    • +0.2W card mounted
    • +1.1W card read/write
  • Audio??
  • Touchpad??
  • 3G USB stick (Huawei K3565)
    • +0.3W enabled disconnected
    • +0.6W connected

Tuning ONGOING

powertop proposed some more power saving settings:

Wireless card powersave mode:

iwconfig wlan0 power timeout 500ms

Disable camera USB (but we've seen that with USB autosuspend, enabled but inactive camera doesn't consume much)

echo 0 >  /sys/devices/platform/eeepc/camera

Disable SDCard reader (but we've seen that with USB autosuspend, enabled but inactive camera doesn't consume much)

echo 0 >  /sys/devices/platform/eeepc/cardr

could be done via /etc/laptop-mode scripts or scripts via Jupiter


laptop-mode:

? auto-hibernate required or is it already the case??

Touchpad

aptitude install gpointing-device-settings

& enable circular scrolling (System / Pointing Devices)

For multi-touch I'm not sure how to proceed. Lucid Lynx doesn't use hal anymore.
See

Microphone

Microphone does not work out of the box.
From here:
Install the pulse audio tools

aptitude install paman pavucontrol pavumeter padevchooser

Sound & Video / PulseAudio Volume Control / Input Devices tab:
Unmute audio
Unlock channels
Set front left channel to 100% and the front right channel to 0%.

Additional packages

Skype

Enable Canonical PArtners Repositories: System / Software Sources / Other Software:

http://archive.canonical.com/ubuntu lucid
aptitude install skype

Bugs

At reboot I encountered once the following bug: getpwuid_r(): failed due to unknown user id(0), gone after a reboot.

Misc links