The main source of information is Debian for the Asus Eee PC, the following notes is my personal recipe.
On the EeePC 900 with kernel 2.6.25 (see below) there is a problem with internal microphone, which cannot record any audio. I installed the Debian 2.6.26 kernel and some packages from the Debian EeePC repository:
deb http://eeepc.debian.net/debian lenny main contrib non-free deb-src http://eeepc.debian.net/debian lenny main contrib non-free
Special EeePC packages fetched from the repository are:
eeepc-acpi-scriptsmadwifi-modules-2.6-686madwifi-modules-2.6.26-1-686
Support for camera (uvcvideo), network card (atl2) and Asus ACPI (eeepc_laptop) is provided by modules of the stock linux-image-2.6.26-1-686 kernel.
Kernel 2.6.26 provides ALSA drivers 1.0.16, which has some minor glitches on the EeePC 900:
The interesting ALSA controls are (use alsamixer to set them):
| Playback | |
|---|---|
| Master | Adjust the volume of headphone and internal speaker. When this control is muted, toggling mute on the Headphone or on the Front control is ignored. Muting works only on the headphone. |
| Headphone | Toggle the headphone output ON/OFF. |
| PCM | Adjust the volume of PCM audio. |
| Front | Adjust the volume of headphone and internal speaker. The mute does not work. |
| Capture | |
| Capture | Enable/disable capture and adjust gain. |
| Digital | Gain boost: keep below 60%. |
| Input Source | Select caputer source: Front Mic or Mic (external). |
It is convenient to connect Fn+F8 and Fn+F9 keys to both the Front and the Headphone controls, see /etc/default/eeepc-acpi-scripts:
VOLUME_LABEL='Front' HEADPHONE_LABEL='Headphone'
In xfce4-mixer set the wannabe master control to Front,0, and enable only the PCM, Front, Capture and Digital controls.
It seems that Alsa 1.0.18 has a better support for the EeePC, see the Debian EeePC Sound HowTo.
Note: For the EeePC 700 I used the 2.6.22 kernel, but for the EeePC 900 I used the 2.6.25 from Debian Sid, because of the sound problem.
I compiled a custom kernel on my desktop PC, because I don't want to install the development tools and kernel sources onto the EeePC, I also don't want to wait the time required to compile on the little Asus. It is also necessary to compile some modules which are not provided by the vanilla kernel, but have separated sources:
So the Debian packages required are:
I used the original Asus kernel configuration as a base for the new one:
cd /usr/src tar jxf linux-source-2.6.22.tar.bz2 ln -s linux-source-2.6.22 linux cd linux make mrproper cp /boot/config-2.6.21.4-eeepc .config make oldconfig make-kpkg clean make-kpkg --revision=0.1 --initrd kernel_image
To compile the extra modules (atl2, eeepc-acpi, linux-uvc, madwifi-eeepc) I used commands like that:
cd /usr/src tar jxvf atl2.tar.bz2 cd linux make-kpkg --added-modules atl2 modules
Then I installed with dpkg -i all the resulting packages:
We need to load the following kernel modules:
| ath_pci | Support for Atheros 802.11 wireless LAN cards |
|---|---|
| ath_rate_atheros | Rate control support for Atheros devices |
| ath_dfs | DFS Support for Atheros 802.11 wireless LAN cards |
| ath_hal | Atheros Hardware Access Layer (HAL) |
Like the Xandros setup, we load the pciehp module
(PCI Express Hot Plug Controller Driver) with an entry into /etc/modules, then the ath_pci is loaded with a modprope rule contained in /etc/modprobe.d/pcie:
options pciehp pciehp_force=1 install pciehp /sbin/modprobe --ignore-install pciehp pciehp_force=1; /sbin/modprobe ath_pci
The Madwifi driver with the Atheros WiFi chip, supports multiple access point and station configurations on the same phisical device, the phisical device is named wifi0. Whenever the WiFi is turned on, want an interface configured in station mode (named ath0), for this we write an udev rule into /etc/udev/rules.d/50_eeepc.rules
(borrowed from the original 50-xandros-udev.rules):
KERNEL=="wifi0", ACTION=="add", RUN+="/sbin/wlanconfig ath0 create wlandev wifi0 wlanmode sta"
We can turn-on (1) or turn-off (0) the WiFi card with the command line:
echo 1 > /proc/acpi/asus/wlan
Tried into the EeePC 900. Load the module uvcvideo, activate the camera with the command
echo 1 > /proc/acpi/asus/camera
then start the program luvcview from same name Debian package.
It seems that Ekiga has some trouble using the camera via V4L (Viedeo for Linux) version 1. I installed the libpt-1.11.2-plugins-v4l2 package to let Ekiga open the camera, solving the error message
your video driver doesn't support the requested video format
The EeePC does not halt (poweroff) when requested, the problem is with the audio kernel module snd_hda_intel. We must unload the module before poweroff. You can add a modprobe -r snd_hda_intel into /etc/init.d/halt or add a dedicated script linked as /etc/rc0.d/S89eeepc_local.
This is a summary of what I succeded to make work:
| Fn + F1 | Sleep does not work |
|---|---|
| Fn + F2 | WiFi on/off works |
| Fn + F3, F4 | Bright up/down work (but no OSD feedback) |
| Fn + F5 | LCD/CRT not verified |
| Fn + F6 | Task manager does not work |
| Fn + F7 | Mute/Unmute works |
| Fn + F8, F9 | Volume up/down works |
To get working hotkeys (Fn + F1, F2, …) we need some Debian packages installed:
The configuration files are:
If you start the EeePC with the standard Xandros installation, you can modify the /boot/grub/menu.lst, but your changes will be ignored at the next reboot. This is why your changes are written onto /dev/sda2, which is mounted as unionfs on top of /dev/sda1 after the boot.
You can boot off a different installation (press ESC on boot and choose to boot from USB), mount /dev/sda1 and make the changes to GRUB menu.
You can reduce the number of xserver-xorg installed packages by removing the ones you not need. To support the EeePC hardware you need:
I choosed Xfce instead of KDE or Gnome because it is light.
To have the battery status, a network widget, a calendar, a volume control in the Xfce panel, I installed some extra packages:
To let a standrd user to power-off the EeePC via the quit Actions applet you must partecipate the user into the powerdev group and write into /etc/xdg/xfce4-session/xfce4-session.rc:
[xfce4-session] Shutdown=%powerdev
To have the compose key help in typing characters that are not present on the keyboard, you can edit /etc/X11/xorg.conf following this example: caratteri_non_presenti_sulla_tastiera.
NOTA: Pare che modificare (abbassare) la frequenza della CPU sia del tutto inutile ai fini della durata della batteria e del calore generato.
Si installa il modulo kernel p4_clockmod, grazie a questo i tool tipo xfce4-cpufreq-plugin possono mostrare la frequenza attuale della CPU.
Si installa anche il pacchetto delle utility cpufrequtils.
Il modo in cui viene amministrata la frequenza del clock è affidata ad un policy governor, si può scegliere tra diversi moduli kernel:
La configurazione avviene direttamente in /etc/init.d/cpufrequtils, ad esempio:
ENABLE="true" GOVERNOR="ondemand" MAX_SPEED="900000" MIN_SPEED="112500"
Per scoprire il range di funzionamento del processore si usa:
cpufreq-info -l 112500 900000
Per vedere quale policy è attualmente in uso:
cpufreq-info -p 112500 900000 ondemand
I moduli kernel necessari si devono mettere in /etc/modules:
p4_clockmod cpufreq_ondemand
Install the eeepc-acpi-scripts package.
You can attach an external display to the VGA port after you have booted the notebook: hit Fn-F5 to switch between internal or external display.
Indeed I have a problem if the external display is attacched during XFCE login: the KDM login is displayed correctly on both internal LCD and external monitor, but XFCE startup crashes. I see a lot of flikering, then X crashes and a new KDM login appears. The last few lines of Xorg.log are:
(II) intel(0): [drm] removed 1 reserved context for kernel (II) intel(0): [drm] unmapping 8192 bytes of SAREA 0xf8c49000 at 0xb7f80000 (II) intel(0): [drm] Closed DRM master.
A workaround is to keep the external display disconnected once the login is completed, then plug the VGA cable and hit Fn-F5.
Check the following script and configuration files:
/etc/acpi/actions/vga-toggle.sh/etc/default/eeepc-acpi-scriptsYou can set the following option:
COMBINED_DISPLAY_SWITCHES="--auto --output LVDS --same-as VGA" #COMBINED_DISPLAY_SWITCHES="--auto --output LVDS --off" #COMBINED_DISPLAY_SWITCHES="--auto --output LVDS --below VGA" #COMBINED_DISPLAY_SWITCHES="--auto --output LVDS --right-of VGA"
I also changed the case statement of /etc/acpi/actions/vga-toggle.sh:
# handle return value # 0 = disconnected # 1 = connected and VGA enabled # 2 = connected and VGA disabled case $? in 0) xrandr --auto ;; 1) xrandr --auto sleep 3 xrandr --output VGA $COMBINED_DISPLAY_SWITCHES ;; 2) xrandr --output VGA --off --output LVDS --auto ;; esac