Linux on HP Omnibook XE4500 laptops

These old notes (from April 2003) describe Red Hat Linux 7.3.
Some slightly more recent pages are:
I'll start by describing how to get Linux working in a basic way on the XE4500. Then, I'll describe some optional tweaks such as replacing the kernel.
Background: HP's Omnibook XE4500 laptop
In Summer 2002, HP introduced the Omnibook XE4500 laptop. For a laptop it's cheap and has a nice bright screen with a wide viewing angle. There's a 1.6 GHz Pentium 4 model which seems very quick in Visual C++ under Windows 2000/XP and offers a 30 Gb disk, 256 Mb DDR RAM, 14" TFT, CDRW/DVD combo, sound, LAN, modem, TV out, firewire etc for just over 1,000 UK pounds. Hard disk is removable (www.Dabs.com sell spare drive carrier slides). Floppy and CDRW/DVD drives are built in, and both credit-cardbus slots are empty by default.
There's also a cheaper XE4100 Omnibook with a 1.2 GHz Celeron - this looks similar but in fact it has a completely different chipset, so these notes do not apply to the XE4100.
HP's website offers no information about running Linux. HP's telephone support line is politely useless.
Step 1 - Flashing the BIOS
I don't know if this was necessary, but I went to the HP website and downloaded the latest BIOS instead of the v1.20 my laptop came with, as the new BIOS version fixes some bugs.
Step 2 - Preparing the hard disk partitions
Well of course, if you want to run only Linux, then it's easy - you just skip to step 3 and allow the Linux installer to delete all the partitions on the disk.
If you want to dual-boot RedHat Linux and Windows XP, then my recommendation is as follows...
- Start from the factory installation. You should have a small (24 meg) HP utilities
partition, followed by a large NTFS partition for Windows XP. If you have corrupted this,
you can restore it by booting the HP recovery CDs that came with the Omnibook, but of course this
will destroy anything that was on your hard disk!
- Now let's shrink the factory NTFS partition to make room for Linux. 10GB should be enough
for (say) Windows XP, Office XP and Visual C++. For resizing partitions, I once used Partition Magic,
but it takes many hours, it's awkward, and it's expensive. An excellent new Win32 program
is called BootIt Next Generation.
Download it free from TeraByte Unlimited.com.
Running the small download file generates a 1.44 MB bootable floppy disk that does everything.
This includes an optional Boot Manager. If you keep the Boot Manager, you have to pay for it after 30 days.
But for a quick partition resize, this is not needed. Just boot the floppy, hit Escape
when prompted to install Boot Manager, and use the Utilities command to resize the second disk
partition. The Boot Manager will not be installed.
- You might want to convert the NTFS partition to FAT, so that you can mount it Read/Write
under Linux. Apparently Partition Magic 8.0 can convert NTFS to FAT.
- Now that we have some free space on the hard disk, we can install RedHat Linux (see steps below).
On my 30 Gb hard disk, I gave 10 Gb to Windows XP, then let the Linux DISK DRUID system have 10 Gb.
That will leave 10 Gb for when I get around to installing FreeBSD.
- Follow the steps later in this document to install Linux, and
be sure to accept the default boot manager, GRUB.
The only problem is that Linux always boots - never Windows XP! To fix this, just edit
/etc/grub.conf and
add an entry along the lines of "Bill Gates Dodgy Software" as shown below...
default=0 timeout=10 splashimage=(hd0,2)/grub/splash.xpm.gz title Red Hat Linux (2.4.18-3) root (hd0,2) kernel /vmlinuz-2.4.18-3 ro root=/dev/hda5 hdc=ide-scsi idebus=50 initrd /initrd-2.4.18-3.img # idebus=50 is a temporary kludge to fix IDE problem - really need later kernel. title Bill Gates Dodgy Software (WinXP) root (hd0,1) makeactive chainloader +1
This grub.conf will work for you if you use the factory XP installation, after resizing the XP partition as described above. Of course it would be wise to back up any files first;-) You'll get a warning during Linux installation about using a boot floppy due to the hard disk geometry not necessarily supporting hard disk boot, but happily this can be ignored - though a boot floppy is probably not a bad idea, just in case you do manage to corrupt your boot sector.
Step 3 - Booting the RedHat 7.3 CD
Due to the new IDE chipset, you will get bad hard disk errors during installation unless you boot the kernel with the parameter idebus=50. No problem, this is easy, but there are three stages to this. NB what follows assumes that you accept all the default boot manager options i.e. GRUB.
- When booting the RedHat CD,
when you get to the very first screen, type "linux idebus=50" and hit Return.
The installer will then run perfectly
and RedHat will install in the normal way. I think this runs the kernel IDE driver
in a more conservative mode, but a full
install still only takes about 45 minutes (KDE, GNOME, developer stuff and games - all 3 CDs).
If you have an external mouse in the PS/2 port, unplug it before you install Linux, otherwise the keyboard may not be detected correctly by the installer. Don't worry, you can plug the mouse in again once initial installation is complete.
For Red Hat 8.0, you need to type: "linux idebus=50 nousb" as the installer seems to have a USB bug which locks up the keyboard.
- When booting your new RedHat system for the first time, when the kernel number
is displayed at that
10-second prompt, type "e" to edit the boot parameters, then change the Kernel
parameter line, adding "idebus=50" to
the end.
- When you have logged in to your new RedHat system, you need to make the kernel parameter change permanent. Edit /etc/grub.conf and add that "idebus=50" parameter on to the end of the kernel parameter line.
Step 4 - Configuring XFree86
RedHat will autodetect the ATI Mobility Radeon M6 video chipset. We must change that, as it is very crashy with the default kernel. When the video type is shown, pick the list one down from "Generic", and choose "VESA". For the XE4500, I chose 1024 x 768, 32 Mb, 24 bit colour. Later on, when prompted about a monitor, I chose "Generic Laptop display 1024x768" with all defaults, and this was fine. No-doubt there's a faster driver we can use later, but this is a good stable starting-point for switching to and from X without problems.
Step 5 - Minor Tweaks
Some routine tweaks are as follows...
- Make up2date less frequent.
Edit /etc/sysconfig/rhn/rhdsd and change INTERVAL=120 to INTERVAL=800 (say) so that
Linux does not phone home every 2 hours in the style of MS!
- Tweak MTU if required.
If your ADSL or Surftime provider requires a forced MTU, one way to set this is to edit
/etc/sysconfig/network-scripts/ifcfg-eth0 to add "MTU=1400" (or whatever). Then reboot.
- Run "up2date". This will update RedHat by applying all the patches for 7.3. Beware, this takes some hours over a phone line: 109 Megabytes! But at least you'll then have the security patches etc.
Step 6 - Install a new Kernel (optional)
The XE4500 hardware is quite new, so a newer kernel may be worth using. Installation hints below. It can be tricky to find a good stable kernel version plus a set of configuration options, so I recommend you start from my known working setup, which is as follows...
-
Recommended Kernel Version: 2.4.20-ac2.
That means you take the source code for 2.4.20 from www.kernel.org,
then you apply an Alan Cox patch set (see below) to update the source code to
2.4.20-ac2.
-
Recommended Kernel ".config" file: this file.
That means you copy my ".config" file into /usr/src/linux-2.4.20-ac2
(or the directory where you choose to build your new kernel)
before running "make xconfig" etc etc.
My .config file supports such goodies as the mousepad on/off switch, WLAN Cardbus cards,
Samba, NFS, FAT, NTFS. (I can't get it to see my Adaptec SlimSCSI CardBus card though, so when
I want to use my scanner I will have to boot an older RedHat kernel.)
- Useful links for Kernel Building
- www.kernel.org, ftp.kernel.org. Where the kernel source lives.
- Alan Cox patches (www), (ftp). Where Alan Cox's kernel patch sets live.
- kernelnewbies.org Good place to start looking for FAQs.
- digitalhermit.com Detailed discussion of the kernel build/install procedure.
- README This lives in /usr/src/linux (or wherever you unpacked the kernel source code to).
- Summary.... How To Build The Kernel
- Go to ftp.kernel.org/pub/linux/kernel/v2.x and fetch linux-2.x.y.tar.bz2 - cd /usr/src - Unpack the kernel source archive: - bzip2 -dc linux-2.x.y.tar.bz2 | tar xvf - - If you need to patch the kernel, use a command like this: - cd /usr/src/linux.2.x.y - bzip2 -dc patch-2.x.y-ac2.bz2 > patchfile - patch -p1 < patchfile - Make a kernel config file: - Copy known good .config file, if any, to /usr/src/linux-2.x.y/.config - cd /usr/src/linux-2.x.y - make xconfig (or: make oldconfig, if you want to update an old .config file for a later kernel) - NOTE: Do not omit the "make xconfig" or "make oldconfig" step, or the build may fail! - Build the kernel: - make dep - make clean - make dep - make bzImage - make modules - make modules_install - Copy the kernel to /boot: - cp arch/i386/boot/bzImage /boot/vmlinuz-2.x.y - cp System.map /boot/System.map.2.x.y - Optional: In /boot, copy System.map.2.x.y on top of System.map for your chosen kernel - edit /etc/grub.conf and make a new entry, based on the old ones - Note: The "initrd" line and the "idebus=50" parameter are not needed for 2.4.20-ac2 and later. - Reboot and select your new kernel from the GRUB menu.
Step 7 - Update XFree86 and activate the ATI Radeon Mobility M6 video driver
This is worthwhile as it greatly speeds up the video display under X, especially when a "make" is scrolling by in an XTerm, or when you are scrolling down a web page in Mozilla.
-
Back up your /etc/X11/XF86Config-4 file.
-
Go to xfree86.org and download the patches
to get from 4.2.0 to 4.2.1. Follow the upgrade process but don't bother to run the
configurator.
-
Copy this XF86Config-4 file to your /etc/X11 directory.
-
Edit /etc/X11/XF86Config-4 to set up your keyboard type, if it is not the United
Kingdom "gb" keyboard: search for "XkbLayout" and change "gb" to "us", "de" or whatever.
-
Reboot and give it a try.
- Sometimes the display flickers at boot-up time. If this happens, use CTRL/ALT/BACKSPACE to kill the X server and it will restart. Or, you can try CTRL/ALT/F1 to get back to the text console, then CTRL/ALT/F7 to return to the X console.
Step 8 - Install Modem Driver
Look at Linux drivers for Conexant Modem Chipsets. Not sure if the original files are still there. Back in the day, I just downloaded a tarball and executed:
gzip -d hsflinmodem-xxxxxxxxxx.tar.gz tar -xfs hsflinmodem-xxxxxxxxx.tar cd hsflinmodem-xxxxxxxxxx make install hsfconfig hsfconfig --countryFor a quick check, you might want to download Minicom, which is a Telix-like RS232 serial comms program. Start this with command-line "minicom --noinit" otherwise it hangs or reports "/dev/modem is locked". Once in Minicom, you can type "AT" and the modem will say "OK". Or maybe try "ATDTxxxxxxxxxxxx" to dial your cellphone. So far so good.
To quickly set up the parameters for a dial-up ISP, in RedHat's X menus you can just select "Programs, System, Network Configuration". Under "Devices", hit "Add", then "Modem Connection". It will try to probe for a modem but this will fail. Don't worry, just add /dev/modem as a generic modem, and enter the phone number, username and password for your ISP. Then hit "Activate" to dial - easy! You should then be able to PING a few internet sites. If you had a web browser open before you dialled your ISP, you might find that you need to close and restart the browser before it will resolve DNS names.
Taking Stock... What works so far
-
Working:
- Video
- Ethernet
- Modem
- CD + floppy drives
- Sound (tested by playing MP3 using XMMS). Sound is a little harsh, but not bad for a laptop.
- CD sound playback (tested by inserting Santana CD, which brought up TCD player app)
- CD burning (tested using xcdroast creating image file first)
- USB port (tested using MS Intellimouse)
- Mousepad switch (with blue tell-tale light). Cool feature to stop accidental mouse clicks when typing in a word processor etc. Sometimes you have to press it twice to initialise it. (If this won't work for you, try builing the kernel exactly as described above - it works for me.)
- Mousepad scrollpad. OK: lets you scroll up and down just like a wheel mouse. (To make this work, you might have to tell X-Windows that you have an MS Intellimouse.)
- PCMCIA slots. OK: tested here with Adaptec AHA1480 SlimSCSI, 3COM LAN card, Buffalo Wireless LAN card, and SMC Wireless LAN card SMC2632W. Note: the Adaptec card only works in one of the two slots.
- DVD Movie playback. Not tested on RedHat 7.3, but I've seen it work OK
on RedHat 8 using both MPlayer and Ogle.
Depending on versions of kernel and/or XFree86 drivers, playback
may be slow. On RedHat 8 I cured this by installing the ATI and DRM drivers from
Gatos.sourceForge.net.
But this isn't really recommended unless you really care about DVD movies,
as you have to copy the Gatos modules into /lib/modules/2.4.xx.xx for each
kernel version you use, otherwise X won't start. There must be a better way.
- Not yet working:
- ACPI (battery not detected). Jari-Pekka Heini says this is fixed in a new set of kernel patches, but I couldn't get those to compile. It will be good when this works, as it is bad running on battery without any indication of how much charge the battery has.
- Volume control buttons on side of laptop. "kmix" is OK if you just want to adjust the volume! But if you really want to fix the volume control buttons, as well as the special function keys (email, www, etc), then you can install the Omnibook Kernel Module and see the file "doc/README.OneTouch" for a solution - but it seems like a lot of work for what is only a small function, so I have not done this myself.
- Microphone input socket works but gives very nasty choppy sound with Creative microphone.
- If there's a built-in microphone somewhere, then it doesn't seem to work - I tried yelling ;-)
- Sound playback stops when you plug a microphone in the microphone socket (??)
- Not yet tested:
- Infrared, FireWire. But Jari-Pekka Heini says: "It seems that both FireWire and IrDA work. I loaded ali-ircc module for irda and ohci1394 for firewire. They both loaded fine and reported that the hardware was found and configured. I may be able to test the irda with a Nokia cellphone some time soon. I, however, have never even seen a firewire device...".
- TV-Out via SVHS connector.
- Warning: Fan Noise! On both Linux and MS Windows, the fan is quite noisy, and seems to have a mind of its own - it can come on when the system is idle, when you would think the CPU was cool enough already. This is a little bit annoying with one laptop, more so if you have several users in one room.
Acknowledgments
Many thanks to the users on the HP Omnibook Mailing List, including Jari-Pekka Heini, Rainer Kiehne, Angelo Marconi, Alexander Meindl, Andraz Tori.
Useful Links for Linux on the XE4500
My other pages (other old versions of Linux): Omnibook Configuration Tools & Patches. This area on SourceForge holds various add-ons for Linux on Omnibooks, including a very-recently released Omnibook kernel module. I have not yet used these myself, but in a recent posting to the Omnibook Mailing List, Soos Peter states that the XE4500 is at least partially supported. Once again this is no thanks to HP, who won't even provide the project with documentation.
Debian GNU/Linux 3.0 (woody) on HP OmniBook XE4500 laptops. Good page on the XE4500 for Debian followers, by Jari-Pekka Heini.
Red Hat Linux 7.3 on a HP omnibook xe4500 by Gerald Schnabel. Nice summary. Amongst other things this page explains DVD playback and special function key mapping rather nicely.
Linux drivers for Conexant Modem Chipsets. hsflinmodem driver for the XE4500's modem.
Windows XP issues on the XE4500
There were some persistent crashing issues on this machine under Windows XP, traced to the video drivers. The fix was to update the BIOS from the HP website, then take the latest drivers you could find (not the ones on the HP CDROM). I did have some links here but they're all dead now ;-)6th April 2003