ASUS R2H UMPC Linux Howto
This howto is no longer actively maintained. Information may be outdated or incorrect!
Table of contents:
1. Introduction
2. Hardware overview
3. Hardware configuration
3.1 Before you start
3.2 Graphics (Xorg)
3.3 Touchscreen (Xorg)
3.4 Sound (Alsa)
3.5 Integrated NIC
3.6 WiFi
3.7 ACPI
3.8 Fingerprint scanner
4. Software configuration
4.1 Display power management
4.2 Processor power management
4.3 Hibernation using Suspend2
4.4 On-screen keyboard
1. Introduction
The ASUS R2H is a new breed of personal computers: Ultra Mobile PC aims to be the perfect blend between laptop and pda.
The distribution used in this howto is Arch Linux (often referred to as "arch") with
kernel 2.6.19.2 and the latest versions of all packages.
Other distributions were not tested but as long as they are up-to-date everything should work with similar modifications.
At the very least this howto should give some pointers to get you started.
2. Hardware overview
- CPU: Intel Celeron M ULV 900Mhz (no speedstep, 8 P-states)
- RAM: 512MB DDR2 533Mhz (PC4200)
- HDD: 40G 1.8" 4200 RPM ULTRA-ATA
- CHIPSET: Intel 910GML (ICH6)
- VGA: Intel GMA900 (i810 xorg driver)
- SCREEN: 7" Active Matrix TFT 800x480px touchscreen (supported with evtouch)
- SOUND: Intel High Def Audio (intel hda AD1986A)
- NIC: Realtek RTL8101E 10/100 PCI-Express (r8169)
- WIFI: Asus WL-159g integrated (Zydel 1211B)
- EXTDRIVE: Ricoh R5C882 Secure Digital cardreader (supported)
- SECURITY: AuthenTec. Fingerprint scanner (untested/unsupported??)
- PORTS:
- USB: usb2.0, 2 regular, 1 mini usb
- NET: standard RJ45
- VGA: standard vga with dongle
- AUDIO: line-out, line-in
- TV: mini-jack adapter
- GPS: SiRFstarIII (untested/unsupported??)
Note: my model came without integrated webcam and bluetooth so I haven't tested those.
3. Hardware configuration
3.1 Before you start
3.1.1 Enable WiFi
Make sure that the WiFi card is set to Enabled -using the hardware button- when in windows. The BIOS remembers it's state after a reboot and linux cannot activate it!
3.1.2 Enable integrated NIC
It seems that the integrated Realtek NIC has some sort of BIOS power management feature which disables the card after a period of idle time. This can be
deactivated within the BIOS (F2 key).
3.2 Graphics (Xorg)
Edit xorg.conf and adapt the following sections if necessary:
To enable OpenGL and proper textconsole restoration after Xorg logout:
Section "Module"
...
Load "glx"
Load "dri"
Load "vbe"
...
EndSection
The integrated graphics chipset is supported by the "i810" driver:
Section "Device"
...
#Driver "vesa"
Driver "i810"
Option "VBERestore" "TRUE"
...
EndSection
Define resolutions as you like, this one worked for me:
Section "Screen"
...
DefaultDepth 24
...
SubSection "Display"
Viewport 0 0
Depth 24
Modes "800x480"
EndSubSection
...
EndSection
And finally enable DRI for all users:
Section "DRI"
Mode 0666
EndSection
The native resolution of 840x480 px was picked up correctly by the Xserver, no need for 915resolution. DRI works as well so we have accelerated openGL.
3.3 Touchscreen (Xorg)
3.3.1 Installation
Yes, even the touchscreen works! Get the evtouch driver at the evtouch project page.
Arch Linux users: download a precompiled tarball for Xorg 8.1, untar and install the "evtouch_drv.so" file to "/usr/lib/xorg/driver/input/".
Other users: you'll have to check your Xorg/X11 installation paths first. Download a suitable driver tarball from the evtouch project page,
I used the precompiled driver but you may have to compile your own! Anyway, check whether a precompiled package exists for your distribution first...
Note: I could not get calibration values using the method described in evtouch's readme, see below for an easier way.
3.3.2 Calibration
A commercial company has a great calibration tool available, get the "calibrator.cpp" file here. There is even a howto available on using the software. It was
written specifically for their products but can be used for other touchscreens as well (and it's written much better than my scribbles I might add ;), just don't go asking them
for support on your shiny asus umpc...
Use the following command to compile the source file for your system:
gcc -L/usr/X11R6/lib/ -lX11 -o calibrator calibrator.cpp
Note: the library paths may have to be modified for your system if it uses a recent modular Xorg build.
Arch Linux users should do this instead:
gcc -L/usr/lib/ -lX11 -o calibrator calibrator.cpp
Once we have the binary prepared it's time to run it, please make sure you are in console-mode (no X11/Xorg server running):
./calibrator /dev/input/YOUREVENTDEVICE
Replace "YOUREVENTDEVICE" with the correct device node name, read a little bit further first if you don't know how to find it.
Edit your xorg.conf file and add or adapt the following sections:
Section "ServerLayout"
...
InputDevice "touchscreen" "CorePointer"
...
EndSection
Section "InputDevice"
Identifier "touchscreen"
Driver "evtouch"
Option "Device" "/dev/input/YOUREVENTDEVICE"
Option "DeviceName" "touchscreen"
Option "MinX" "0"
Option "MinY" "0"
Option "MaxX" "0"
Option "MaxY" "0"
Option "SwapY" "1"
Option "ReportingMode" "Raw"
Option "Emulate3Buttons"
Option "Emulate3Timeout" "50"
Option "SendCoreEvents" "On"
EndSection
Replace the values for "MinX MinY MaxX MaxY" using the correct values from the calibration procedure. The "SwapY" option is required to make the touchscreen function properly!
Replace "YOUREVENTDEVICE" with the correct device node (event0 eg). You can use the following command to find the number:
dmesg|grep PANJIT
There should be something listed like "/class/input/input0". Substitute "input0" with "event0" in your xorg.conf file and you're good to go.
The touchscreen works but there is an annoying issue: taps on the screen get registered as double taps unless you move the stylus a little bit before releasing it. It takes some time to get used to but
becomes second nature after a while.
3.4 Sound (Alsa)
Supported by "snd_intel_hda" module with
"model=3stack position_fix=1" parameter, this is important since the default load option
produces an annoying beeping sound. Volume is a little low through headphones but
loud enough on the internal speaker. The internal microphone was briefly tested and didn't work unfortunately.
Automatic load at boot with option:
edit "/etc/modprobe.conf"¹, add the following line:
options snd_hda_intel model=3stack position_fix=1
Manual driver load:
modprobe snd_hda_intel model=3stack position_fix=1
IMPORTANT: make sure no sound driver is loaded before you try a manual driver probe.
3.5 Integrated NIC
Supported with "r8169" module. The version shipped with kernel 2.6.19.2 works, older versions had problems.
Supported with "zd1211rw" module by the zd1211rw linux driver. This driver is part of the linux kernel. Recent versions have built-in support for this particular asus card, so kernels 2.6.21 and up should
detect it without any modifications. Try loading the module:
modprobe zd1211rw
Check if the module detected the card using the following command:
iwconfig
You should see a wireless device listed.
Another important thing is that you need the userspace firmware from here.
Install to "/lib/firmware/zd1211" as per readme file instructions.
The driver works flawlessly but by default it is set to a rate of 11M (802.11b). You can set it to 54M (802.11g) manually:
iwconfig eth0 rate 54M
"eth0" should be replaced with your device name if necessary.
Obsolete instructions for older versions of the zd1211rw driver:
Older versions of the zd1211rw driver had no support for this asus card's module id, to add it manually: get the zd1211rw driver tarball, edit the zd_usb.c file and add the following id: 0b05:171b to the usb_device_id array:
/* ZD1211B */
{ USB_DEVICE(0x0b05, 0x171b), .driver_info = DEVICE_ZD1211B },
Now you can compile the driver and install it.
Since this is an ASUS computer we can enable some handy extra controls if the "asus_acpi" kernel module is loaded. This will give us access to the display
brightness control and will make some hardware buttons available for custom configuration.
Use this command to find out if is already loaded by your system:
lsmod|grep asus_acpi
The module details should appear on screen, if they don't:
modprobe asus_acpi
Arch linux users can add the module to the "MODULES" array in "/etc/rc.conf" for automatic load at boot. Other distro users should check the configuration utilities on their systems.
A generic way is to edit "/etc/modprobe.conf"¹ and add the module there.
3.8 Fingerprint scanner
There is some work going on here: http://gkall.hobby.nl/authentec.html but I haven't tried it yet. Looking at first glance I'd say it's worth a try sometime :)
4 Software configuration
4.1 Display power management
Make sure the following option exists in xorg.conf:
Section "Monitor"
...
Option "DPMS"
...
EndSection
This will allow the power management software to disable the lcd screen when it's not in use.
In gnome you can configure the power management applet to use a different brightness level when on battery power and to dim the backlight after a certain period of idle time. Very nifty indeed.
For this to work make sure you followed the instructions under ACPI.
4.2 Processor power management
The Celeron M cpu doesn't support speedstep so there is no way to adjust the voltage. What can be adjusted is the clockfrequency using the processor's P-states, better known as "throttling".
While not a big powersaver it does help a bit and keeps the system a little cooler. There are several ways of doing it:
If it doesn't work the required modules are probably not loaded:
modprobe -a p4_clockmod cpufreq_userspace cpufreq_ondemand
4.3 Hibernation using Suspend2
Hibernation works like a charm in arch, just follow this howto: http://wiki.archlinux.org/index.php/Suspend_to_Disk.
There should be similar setup documents available for other distributions.
Some configuration ("/etc/hibernate/common.conf"¹) comments:
- The swapfile configuration works, suspend to ram failed to bring up the screen again
- "UnloadBlacklistedModules" was not used
- Added the wireless and realtek nic to "DownInterfaces" (eth0 eth1)
- Added Xvkb to the program blacklist (it was causing occasional lockups when resuming)
4.4 On-screen keyboard
I've tried gnome's GOK on-screen keyboard but it was hard to use so I quickly started investigating other options and eventually settled for
Xvkbd. It's simple and works as it should though it's looks are quite outdated, try matchbox-keyboard if that sort of thing bothers you.
¹ Location may be different on your system
First published: 2007 02 12
Last modified: 2007 05 13 (calibration section updated)
History:
2007 05 06 (wifi section updated, fixed w3c validation errors)