Linux on HP omnibook xt1000

This is the detailed step-by-step configuration of Mandrakelinux 10.1. As this distribution version has great enhancements for the omnibook xt1000, I decided to restructure this description and only keep old version as history.

It is the first time I succeeds in making suspend-to-disk work correctly without compiling the kernel. So the configuration steps are really easier.

0. Check your notebook BIOS version

This step is only needed if you want to use a Linux bootable CDROM. HP recovery disk boots perfectly but my Linux CDROM (ISOLinux program with ElTorito iso9660 extension) failed to boot with a checksum error. Annoying isn't it ?

The Omnibook BIOS in version 1.9 is buggy and does not support the bootable-CD-ROM standard - aka El Torito. Versions 1.8 and 1.10 are OK.

If you are relunctant to flash your BIOS, just create the distribution boot floppy.

1. Install your favorite distribution

Mandrake in my case. Just refer to your distribution installation documentation.

If you want to use Software Suspend, just take care to create a large enough swap partition, at least your memory size.

Warning: if you update to Mandrake 10.1 and your previous boot line in your bootloader configuration contains noapic nolapic, this will freeze the kernel 2.6.8.1-12mdk. Personnally, I had to boot my old kernel to avoid the freeze and correct the new kernel boot command line.

2. What's working out of the box ?

With Mandrake 10.1,

What is not supported in Mandrake 10.1 ?

The S-VHS video output should be activated with the s3switch program. Easy to install in /usr/local/sbin for instance whatever your Linux is. For Mandrake, I have installed the s3switch-20020308-1.rpm (binary and man page).

3. System tuning

Boot options

To boot the Mandrake kernel, here are the options I'm using on the command line in my GRUB configuration. I do not use LVM, my root partition is hda6 and my swap partition is hda5:

title Linux Mandrake 10.1 - 2.6.8 - Software Suspend
kernel (hd0,5)/boot/vmlinuz root=/dev/hda6 quiet acpi=on
  video=vesafb:nomtrr splash=silent pmdisk=/dev/hda5 resume=/dev/hda5 vga=791
initrd (hd0,5)/boot/initrd.img

Anacron

It is important for a notebook to use anacron in addition to cron ! I have discovered that my log files were not rotated regularly. So the way to correct that is simple: urpmi anacron. Now, the trouble is: when you resume your system, the cron tasks are run whenever you are on battery or AC. That is a point I want to change (see my ToDo list).

Software Suspend to disk

The software suspend to disk (pmdisk) is now included in kernel 2.6 and I consider it as stable. Do not hesitate ! It rocks. For users that are new in notebook world, it corresponds to the Ms Windows hibernation. The system status is written to disk and the notebook is turned off. At next boot, the system is restored from its saved state. The Linux implementation uses the swap partition to store the system image.

I ran once the suspend.sh installation script. That script may be found in the Software Suspend tarball or in Mandrake suspend-scripts-1.6-4mdk.
It will create the original /etc/suspend.conf file and the /usr/local/sbin/hibernate script.

I have modified the software suspend hibernate script to use the new command echo disk > /sys/power/state. Here is my temporary dirty version to make it work.

Read the configuration file to match with your system. Here is my /etc/suspend.conf as a example.

Warning: If you use a FAT partition to share data between your Windows XP and your Linux, take care to avoid file system corruption because of OS suspension. Add such a partition in the list of mount points to umount when suspending and remount after resume. Options SWSUSP_UMOUNTS and SWSUSP_REMOUNTS in /etc/suspend.conf.

You can now try to suspend and resume your Linux by invoking hibernate as root. In case of troubles, refer to pmsuspend documentation.

It is not so convenient to do a su - -c /usr/local/sbin/hibernate in a console and tape the root password. So enjoy sudo !

Here is a quick tutorial:

  1. as root, invoke visudo
  2. add the following line:
    %users  your_machine_name= NOPASSWD: /bin/su - -c /usr/local/sbin/hibernate
    
    ( users is supposed to be an existing group on your Linux you can use your user's login without % instead)
  3. Save with ZZ. The content will be checked before replacing /etc/sudoers. Do not edit /etc/sudoers directly, but use visudo. Read sudo and sudoers manual pages for more information.
  4. Now your users can invoke sudo /bin/su - -c /usr/local/sbin/hibernate without password prompt.
  5. Integrate this command line in your desktop - if you're using one - for instance, the Gnome Battery Charge Monitor applet (battstat-applet) has a configurable command to suspend the computer. Or else create an alias in your shell or both ;)

I tried to use /usr/sbin/suspend2 but the system frooze too many times (in 10.1)... So I keep the old hibernate. I should update the script and configuration file with the new suspend.sh in the package suspend-scripts-1.8.1-1mdk. Except in some cases described in the Troubles section, that configuration works perfectly for me.

Touchpad configuration in X.org

With Mandrake 10.1, the simplest way is to install the contrib package synaptics-0.13.5-1mdk.

You may also compile the X.org driver from sources to get the module /usr/X11R6/lib/modules/input/synaptics_drv.o.

Then, the configuration must be done by hand in /etc/X11/xorg.conf. Add a load directive in Module section:

Section "Module"
    Load "synaptics"
    Load "dbe" # Double-Buffering Extension
    Load "v4l" # Video for Linux
    Load "extmod"
    Load "type1"
    Load "freetype"
    Load "glx" # 3D layer
    Load "dri"
    Load "GLcore"
EndSection

and your mouse configuration becomes:

Section "InputDevice"
  Driver  	"synaptics"
  Identifier  	"Mouse1"
  Option 	"Device"  	"/dev/input/mice"
  Option	"Protocol"	"auto-dev"
  Option	"LeftEdge"      "1700"
  Option	"RightEdge"     "5300"
  Option	"TopEdge"       "1700"
  Option	"BottomEdge"    "4200"
  Option	"FingerLow"	"25"
  Option	"FingerHigh"	"30"
  Option	"MaxTapTime"	"180"
  Option	"MaxTapMove"	"220"
  Option	"VertScrollDelta" "100"
  Option	"MinSpeed"	"0.06"
  Option	"MaxSpeed"	"0.12"
  Option	"AccelFactor" "0.0010"
  Option	"SHMConfig"	"on"
#  Option	"Repeater"	"/dev/ps2mouse"
EndSection

Isn't it marvelous to click with a finger tape ? Isn't it comfortable to do a middle-click with a two-finger tape and right-click with three fingers ? The horizontal scroll zone is also enjoyable for many applications like The GIMP.

Read /usr/share/doc/synaptics-0.13.5 files to know more !

Omnibook keys in X.org

The volume control keys works by default. If you want extra keys for application shortcuts, they must be enabled. You have the choice between:

As I'm using Sawfish because of its lisp engine (I'm fond of Emacs), here is my ~/.sawfish/rc:

;; -*-sawfish-*-
;; My own sawfish configuration

;; Configure Omnibook OneTouch buttons
(system "xmodmap ~/.xmodmaprc")

And my .xmodmaprc:

keycode 236 = F13
keycode 244 = F14
keycode 178 = F15
keycode 243 = F16
keycode 242 = F17

keycode 174 = F23
keycode 176 = F24

Sound volume control with omnibook keys

You can map volume keys to aumix command: aumix -v-10 and aumix -v+10. Here is an extract of my ~/.sawfish/custom created thanks to sawfish-ui to do the extra keys invocations:

(custom-set-keymap (quote global-keymap) 
    ((run-shell-command "xmms") . "F14") 
    ((run-shell-command "aumix -v+10") . "F24") 
    ((run-shell-command "aumix -v-10") . "F23")
    ((run-shell-command "emacs") . "F13")
    ((run-shell-command "mozilla") . "F15")
    )

X.org hardware acceleration

As I like using the console, I find the framebuffer really comfortable. But I found out that Xv does not work correctly: the MTRR initialization failed in X.org because of the framebuffer. The solution is to add the option video=vesafb:nomtrr in boot command.

Mandrake 10.1 provides X.org 6.7 with DRI support compiled. But the needed options are not included by default in /etc/X11/xorg.conf. Moreover, the needed kernel module to do DRI with S3 is not included yet. So with such a basic configuration, the performance are poor for gamers or any other 2D/3D usage:

$ glxgears 
Xlib:  extension "XFree86-DRI" missing on display ":0.0".
455 frames in 7.0 seconds = 65.000 FPS
420 frames in 7.0 seconds = 60.000 FPS
420 frames in 7.0 seconds = 60.000 FPS

I found a page about DRI for S3 Savage http://www.linux-sxs.org/guis/DRIS3.html. Exact information about the S3 graphical chipset is; lspci -vvv:

01:00.0 VGA compatible controller: S3 Inc. 86C380 [ProSavageDDR K4M266] (rev 02) (prog-if 00 [VGA])
        Subsystem: Hewlett-Packard Company: Unknown device 0020
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
        Status: Cap+ 66Mhz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 64 (1000ns min, 63750ns max), cache line size 04
        Interrupt: pin A routed to IRQ 11
        Region 0: Memory at e0000000 (32-bit, non-prefetchable) [size=512K]
        Region 1: Memory at 90000000 (32-bit, prefetchable) [size=128M]
        Expansion ROM at 000c0000 [disabled] [size=64K]
        Capabilities: [dc] Power Management version 2
                Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [80] AGP version 2.0
                Status: RQ=32 Iso- ArqSz=0 Cal=0 SBA- ITACoh- GART64- HTrans- 64bit- FW- AGP3- Rate=x4
                Command: RQ=1 ArqSz=0 Cal=0 SBA- AGP- GART64- 64bit- FW- Rate=x4

Xv is working but I have not succeeded in activating DRI yet.

Use an extra mouse in X.org

I have configured my X.org server to enable a serial mouse connected through the HP USB-serial adapter (FTDI Vendor=0403 ProdID=6001 Rev= 2.00). That configuration is easy but not provided by the graphical tools of Mandrake.

In /etc/X11/xorg.conf, add such a block near the description of the "Mouse1" device:

Section "InputDevice"
    Identifier "Mouse2"
    Driver "mouse"
    Option "Protocol" "Microsoft"
    Option "Device" "/dev/ttyUSB0"
EndSection

Then, add the line InputDevice "Mouse2" "SendCoreEvents" in the ServerLayout section:

Section "ServerLayout"
    Identifier "layout1"
    InputDevice "Keyboard1" "CoreKeyboard"
    InputDevice "Mouse1" "CorePointer"
    InputDevice "Mouse2" "SendCoreEvents"
    Screen "screen1"
EndSection

4. ToDo list: improvements I want

5. Troubles

Extra one touch keys

Omnibook extra keys works (sometimes) when they are binded to a command.
When a not binded key is pressed, I get the following kernel messages:

atkbd.c: Unknown key pressed (translated set 2, code 0xf2 on isa0060/serio0).
atkbd.c: Use 'setkeycodes e072 <keycode>' to make it known.

and no X11 events in xev.

After a classical boot, the keys work if enabled with the command omke.pl -k 1. After a resume from suspend to disk, it often failed for unknown reason yet.

Even if extra keys do not work, the volume control sequences Fn+PageUp, Fn+PageDown and Fn+BackSpace are usable. Does the BIOS handle the even instead of the OS ?

Extra mouse detection

There is still a strange behavior: X.org 6.7 does not handle the second mouse dynamically. After connecting the mouse or resuming from Software Suspend, I have to switch to another terminal and come back to X (Ctrl+Alt+F1 and Ctrl+Alt+F7) to get the serial mouse working.

Software suspend

The software suspend fails to suspend after I have connected my external mouse (serial with USB converter) in X.org.

After resuming, it is possible that some devices are not available. I solved this issue adding corresponding modules to the SWSUSP_INSERTMODS variable in /etc/suspend.conf, for instance for ACPI and CD-ROM and parallel port.

After resuming, I often have to eject and insert again my Cardbus Ethernet/Modem card to avoid the error in kppp: modem is not ready.

Video switching with kernel 2.6

The s3switch refuses to switch to the TV output even when the cable is connected correctly (the other operating system delivered with the hardware is able to switch to the TV). The tool says no TV is connected...

Supermount

When I read a large file on my USB key with supermount, it takes many many minutes to get it. With supermount a cp spends all its time in kernel (seen in a CPU monitor). It is faster with a classical mount point so I decided to give up supermount.

Latest update on december, the 22nd 2004. Any comments are welcome at ymartin59 _ at _ free _ dot _ fr.