The HP Omnibook xt1000 and Linux

The HP Omnibook xt1000 and Linux
The onboard hardware as seen by Linux
Making it a dual boot machine (WinXP + Linux)
Configuring the basic hardware with Linux
Configuring the sound, first attempt
Configuring ACPI and sound, the hard way
After the ACPI enabled kernel boots
How to get ACPI power management working
What’s left: The not-so-nice things
Preface
Following are some experiences with the HP Omnibook xt1000 and Linux.
All observations were made with a SuSE Linux 8.0 distribution and/or the genuine Linux kernel 2.4.18.
Neither is the author a Windows pro, nor a Linux kernel hacker. Full feature installation for Linux with preserved dual boot ability is not trivial, but not impossible, either.
The following was written in the hope to make it easier for followers to achieve the same satisfying results.
Please kindly excuse missing precision, may it be in technical details or in the use of the beautiful English language.
Disclaimer
Neither will I or any other person, company or body other than you, the reader, be responsible for any kind of damage, data loss or misconfiguration, nor do I or any other person, company or body warrant for the correctness of the content of this document. All statements expressed in this document are solely the private opinion of its author.
Hardware
The HP Omnibook xt1000 is a decent Notebook with a PIII mobile 1133 Mhz CPU, 14.1 or 15 inch screen, DVD/CDRW, USB, Firewire, V90 Winmodem, PCMCIA, IrDA, external VGA, TVout and parallel port.
It has no native serial port, but instead a USB<>RS232 adaptor cable. No builtin floppy disk, but external USB floppy disk.
In short: with some manual configuration, all runs fine under Linux except the Winmodem and IrDA. Firewire not tested yet, but others report it as OK.
The onboard hardware as seen by Linux
|
PCI Bus |
Type |
Vendor |
Model |
|
00:00.0 |
Host bridge |
VIA Technologies, Inc. |
VT8605 [ProSavage PM133] |
|
00:01.0 |
PCI bridge |
VIA Technologies, Inc. |
VT8605 [PM133 AGP] |
|
00:04.0 |
CardBus bridge |
ENE Technology Inc |
Unknown device 1410 |
|
00:0d.0 |
Ethernet controller |
Realtek Semiconductor Co., Ltd. |
RTL-8139 (rev 10) |
|
00:0e.0 |
FireWire (IEEE 1394) |
VIA Technologies, Inc. |
OHCI Compliant IEEE 1394 Host Controller (rev 46) |
|
00:10.0 |
Communication controller |
ESS Technology |
ES2838/2839 SuperLink Modem (rev 01) |
|
00:11.0 |
ISA bridge |
VIA Technologies, Inc. |
VT8231 [PCI-to-ISA Bridge] (rev 10) |
|
00:11.1 |
IDE interface |
VIA Technologies, Inc. |
Bus Master IDE (rev 06) |
|
00:11.2 |
USB Controller |
VIA Technologies, Inc. |
UHCI USB (rev 1e) |
|
00:11.3 |
USB Controller |
VIA Technologies, Inc. |
UHCI USB (rev 1e) |
|
00:11.4 |
Bridge |
VIA Technologies, Inc. |
VT8235 Power Management (rev 10) |
|
00:11.5 |
Multimedia audio controller |
VIA Technologies, Inc. |
AC97 Audio Controller (rev 40) |
|
01:00.0 |
VGA compatible controller |
S3 Inc. |
Unknown device 8d01 (rev 02) |
Installing Linux
Making it a dual boot machine (WinXP + Linux)
Fortunately, HP delivers a system recovery CD with the ability to only restore the first found FAT/NTFS partition of the hard disk with the Windows XP image. So we don’t need any external partitioner to shrink the 20 GB Windows partition but instead repartition with our favorite linux distribution. Of course, following this approach, all data is deleted from the Windows partition, so if you have already installed own software or data, you should go with a repartitioner to shrink the Windows partition.
1. Boot from a Linux CD and delete all partitions except the first (hidden from Windows) hibernation partition. I don’t know if it is important to keep that one, but that’s what I read on the web when I did it. The hidden partition seems to be too small to keep the whole RAM for suspend to disk, so I really have no idea what it is used for. Maybe some Windows XP stuff. Alas, it’s only some 50MB, so keep it. Don’t delete it, don’t format it. That one is /dev/hda1 with Linux.
2. Create a vfat partition with at least 6 GB of size. This will become the Windows XP C: later on (the recovery CD will convert it to NTFS). If you reserve less than 6GB, the HP recovery tool will not accept it and abort.
3. Create a Linux swap partition with some hundred MB of size.
4. Create a Linux root partition with the rest of the HD space (~12GB). Preferably, use a journaling file system like ReiserFS (that’s what I chose) or ext3 to quickly recover from low battery reboots.
5. Install the Linux of your choice. I took SuSE 8.0, but of course, your mileage may vary.
6. Install Lilo into the MBR (Master Boot Record) of the hard disk. It will integrate fine with WinXP later.
7. At least when installing with SuSE’s standard install, Lilo is already configured with a Windows boot for /dev/hda2 (the vfat partition we created above). If not, modify your /etc/lilo.conf accordingly and run /sbin/lilo again. Check here for my lilo.conf.
8. Reboot the notebook, and this time boot from the HP Windows XP recovery disk. Do not simply follow the default recovery procedure, it will wipe out your Linux installation. Instead, choose extended options (or what it is called like, look, I am currently using this computer to write this text and cannot reboot ;-), and choose to only recover the C: partition. This will leave the MBR, Lilo and your Linux install alone.
9. That’s all, the Omnibook should now be a dual boot machine.
Configuring the basic hardware with Linux
I’m sorry for not providing a detailed configuration information for most devices – I have not thoroughly checked the config files, as SuSE did install it all just fine.
Except for the sound and the modem, all hardware is pretty automatically configured by SuSE 8.0 on a 2.4.18 kernel and working.
Against my expectations, this also includes full plug-and-play support for the external USB floppy drive and the fancy USB<>RS232 adaptor cable. USB hotplugging detects them, and the USB subsystem loads the drivers.
The DVD/CDRW is already configured as an IDE-SCSI emulation device, and xcdroast as well as other cdrecord based CD writer programs detect and use it without a problem.
The Ethernet port with its Realtek 8139 is running smoothly, either.
The graphics is an S3 savage twisterk, if you should need this for a manual X configuration.
Configuring the touchpad
The touchpad works out of the box, also the “mouse wheel” (a glide pad to the right of the main touchpad). It is a Synaptics touchpad.
Unfortunately, the touchpad generates left clicks when slightly tapping on it or softly gliding and erroneously interrupting the touch. This is somewhat dangerous when editing say sourcecode, and may lead to unwanted mouse actions. I don’t like that, so I looked for a fix.
Fortunately, there are at least two synaptics touchpad configuration utilities for Linux available: the Linux tpconfig touchpad driver (to be started before X is started) and the touchpad driver for Synaptics touchpads (an XFree86 v4 module).
I chose (by no special reason) the X module.
Installation of the X synaptics touchpad module:
1. Download the source archive (you usually won’t compile it yourself, as you would need the XFree sources, but it includes the installation instructions and the parameter list).
2. Download the binary module.
3. Move the binary module synaptics_drv.o into /usr/X11R6/lib/modules/drivers/ (or where your X11 is configured to find the modules).
4. Edit your /etc/X11/XF86Config. Add “Load
"synaptics"” to the Module section. Modify the mouse input section with the parameters
of your choice. Mine looks like:
Section "InputDevice"
Driver "synaptics"
Identifier "Mouse[1]"
Option "Device" "/dev/psaux"
Option "Edges" "1900 5400 1800 3900"
Option "Finger" "25 30"
Option "MaxTapTime" "0"
Option "MaxTapMove" "0"
Option "VertScrollDelta" "100"
Option "MinSpeed" "0.002"
Option "MaxSpeed" "0.080"
Option "AccelFactor" "0.004"
EndSection
That switches “tapping” off. See the parameter description in the source archive
for more details.
5. Restart the X server. The module should work. If not, check the source archive.
If you like “clicking by tapping”, you could install the synaptics X module, too. It adds extended functionality, such as two finger tapping = middle click that is not present in the standard driver.
If you decide to use the standard X driver, you should add the Emulate3Buttons config key, as the touchpad only has two buttons, and otherwise Copy/Paste with X won’t work. This is how the XF86Config’s mouse section should look like:
Section "InputDevice"
Driver "mouse"
Identifier "Mouse[1]"
Option "ButtonNumber" "5"
Option "Device" "/dev/mouse"
Option "Name" "AutoDetected"
Option "Protocol" "imps/2"
Option "Emulate3Buttons" "true"
Option "Emulate3Timeout" "100"
Option "Vendor" "AutoDetected"
Option "ZAxisMapping" "4 5"
EndSection
Configuring the modem
Two words: forget it.
After some research on the web, it seems as if the ES2838 Winmodem was never and will never be supported with Linux. There are rumors on a binary-only module for Linux being available somewhere, but as no one claims ownership nor is the source available, I even didn’t dreamed of installing it. Some other people were less caref^H^H^H^H^Hparanoid and did, and it didn’t work for them.
I’ll go get a decent PCMCIA modem, and save my time.
BTW, the modem is a mini PCI card modem, and even servicable without disassembling the notebook, so another solution would be to get a Linux supported brand of a mini PCI modem and try that one. Mail me if you got it working that way.
Comprehensive information on Winmodems and Linux can be found here and here.
Configuring IrDA
The Omnibook’s builtin IrDA chip is not supported by Linux. The chipset is in the VIA southbridge, a VT8231. There appears to be no working IrDA driver. Interestingly, I found this letter on the IrDA mailing list:
*Chiahui Han * linux-irda@pasta.cs.UiT.No <mailto:linux-irda%40pasta.cs.UiT.No>
/Wed, 21 Feb 2001 10:25:06 +0800/
Hi
Are any person interested in porting VIA VT8231 IRDA Linux driver ?
We will supply two mother boards, datasheet, programming guides ,
win98/winme/win2k FIR drivers
,technical support and some dos utilities.
In next generation, we will support VFIR . The programming style will be
similar.
regards
Han Chia Hui
Driver Team, VIA Technologies, Inc.
8F, 533, Chung-Cheng Rd., Hsin-Tien,
Taipei, Taiwan, R.O.C.
Tel : 886-2-22185452 EXT. 6022
Fax: 886-2-8667-1061
E-Mail : chiahuihan@via.com.tw <mailto:chiahuihan@via.com.tw>
But obviously, no one answered. At least, don’t blame VIA.
Configuring the sound, first attempt
The sound is detected as AC97 compatible, SuSE installs the respective driver (via_686), the mixer works fine, but if you want to play DSP sound (that is, all sound except the analog sound coming from the builtin CD player), it loops forever on the first second of the sound data.
After happily discovering that VIA offers a brand new sound module for this chipset as binary download for almost every Linux distribution existing under the sun, I installed the SuSE 8.0 version – and had to get rid of the module again ‘cause it froze the machine. This may be my error, but as I did not get it running this way, I gave up with the VIA module.
Especially since I read here, that the sound works all right after installing the ACPI patch for Linux 2.4.18.
And that started a whole new journey, finally leading to complete success, but sometimes I felt like Odysseus on his short boat trip. Except there were no sirens. Be my guest.
Configuring ACPI and sound, the hard way
What is ACPI?
ACPI is the successor (in a way) to APM, the power management features that are especially useful for notebooks. Whenever a notebook sleeps, suspends or switches the screen off, either APM, ACPI or a power outage is involved.
Unfortunately, the Omnibook xt1000 BIOS does not support APM, but only ACPI. APM is well supported by the Linux kernel, ACPI is not.
As of Linux kernel 2.4.18, ACPI is in the kernel. Unfortunately, at least for the Omnibook xt1000, it doesn’t work off the shelf.
How to get ACPI working
This is the non-trivial part of this document. Be prepared to compile your own kernel.
First of all, after zillions of trials it appears as if only the ACPI patch from 2002-05-17 for a vanilla kernel 2.4.18 works for the Omnibook xt1000. As of writing this, there are also more recent patches, I tried the most recent one from 2002-07-09, and it did not work for me.
Also, it didn’t work patching the SuSE kernel sources. OK, patching works (sort of, needs minor handwork), but the kernel hangs on boot as long as ACPI is not switched off at the kernel prompt (“ACPI=off”).
So, take the original (Linus’) 2.4.18 kernel sources, patch them with the acpi-20020517-2.4.18-diff.gz kernel patch (from sourceforge), and configure it properly before compiling.
Configuration is critical for ACPI to work. Switch on all ACPI options. Switch off all APIC (sic!) options before compiling, but probably leave APM in as a module. I got funny compile errors when not including it, but I didn’t find the time (after those six hours already spent...) to figure out where the error was, and with APM still in the compile it worked. Please also note that the config file you may have saved from an earlier kernel xsetup may cause trouble with the ACPI-enriched kernel sources. A number of ACPI config options have changed names, and I had problems to even enable the kernel options for ACPI in xconfig before some manual cleanup.
Configure the via82cxxx sound card as a module or for direct compile into the kernel.
You find my kernel configuration here, and please note that I configured a “fast compile” kernel (hey, I compiled it some 20 times, you see?) not including lots of legacy drivers, filesystems and unneeded multimedia extensions, not even as a module.
After the ACPI enabled kernel boots
The first some lines of the kernel boot messages should now tell you about the ACPI features and display battery and AC status.
Sound will work now if you compiled the kernel with the via82cxxx chipset or compiled it as a module and included it in /etc/modules.conf like “alias sound-slot-0 via82cxxx_audio”.
Additionally, now the hardware clock in the front LCD display (the small one with the CD player controls) is working, too, while Linux is running. Without the ACPI patch, it stopped promoting at boot time of Linux.
How to get ACPI power management working
The ACPI patch alone only fixes the sound issues and offers a management interface to the ACPI functions. You find lots of entries in /proc/acpi/ with system status information and some to switch the computer into sleep and hibernation modes. But without further programming, nothing of this is done by itself.
If you like to, do a “cat /proc/acpi/event” and watch what happens if you touch the power button or the small lid button left to it. “cat /proc/acpi/battery/BAT0/status” tells you about the current battery capacity.
The KDE 3 power management tools don’t work for me with this ACPI version. They complain about an incompatible ACPI interface
There is an acpid(aemon) that offers a scriptable interface to the /proc/acpi/ system, but recent versions refuse to work with this ACPI patch. Again, see Stefan Bellon’s page on the xt1000 for information, as he actually seems to use it.
To do something useful with the acpi interface (putting machine into sleep when lid is closed or battery is going down, or halting Linux when the power button is pressed), one needs some handwork.
I am currently writing my own little notebook daemon, when it is done I will publish it here for download.
At least you should install the noflushd daemon to put your hard disk into sleep at no activity, but this of course is unrelated to the ACPI stuff.
Or experiment with commands like the following:
“hdparm –y /dev/hda && echo –n 1 > /proc/acpi/sleep”
– this will put the hard disk to standby and the computer to sleep.
What’s left: The nice things
• The LCD is pretty. 15 inches, 1024x768, brilliant colors, good viewing angle, outdoor view OK.
• Silent. Fan starts during heavy duty tasks (compile), but only for some ten seconds, and even that one is acceptable. Hard disk spins next to inaudible, head seeking is audible.
• Weight is OK. 2.9 kg with battery. Light and small charger/AC-Adaptor.
• Up to 3 hours battery time with my average use.
• Standalone CD player. No need to switch the computer on.
What’s left: The not-so-nice things
• The shared memory graphics adapter appears to slow down the machine quite a lot. Comparing compilation times of a really large C++ project, it reaches nearly exactly the same throughput as an older PIII 800 Mhz desktop, although the notebook runs with 1133 Mhz.
• The hard disk however is all right, measuring ~22MB/sec compared to 28MB/sec on the desktop.
• With WinXP, using “snappy” to describe the desktop behaviour would be an euphemism. Well, fortunately we have KDE 3. (Who was laughing in the rear seats?)
• Additionally, DVD playback skips some frames every second or so. This is somewhat astonishing, as already much slower CPUs get that done right. And it really is embarassing, feels like a constant flickering. Probably also due to the shared memory graphics. But I have not already checked that with Linux, maybe it runs nicer here.
Other resources / links
Stefan Bellon’s page on the xt1000
Linux ACPI support by Dominik Brodowski
tpconfig touchpad configuration utility
Appendix
Sample for /etc/lilo.conf
boot = /dev/hda
change-rules
reset
read-only
menu-scheme = Wg:kw:Wg:Wg
lba32
prompt
timeout = 30
message = /boot/message
image = /boot/vmlinuz
label = linux
append = "hdc=ide-scsi"
initrd = /boot/initrd
root = /dev/hda4
vga = 791
image = /boot/vmlinuz.suse
label = failsafe
append = "ide=nodma apm=off acpi=off hdc=ide-scsi"
initrd = /boot/initrd.suse
optional
root = /dev/hda4
vga = 791
other = /dev/hda2
label = windows
Document last modified 2002-07-19