Links
Hi-Fi


Vee-dubs
Music
University Coursework
Food
Programming
Home
Computers
Photos

Linux Directory, click here!

Linux on my Laptop


This page documents the struggles I have undergone to get Linux running on my laptop.

It is intended as a guide to any other Linux user who wishes to install and successfully run Linux on a laptop of the same model as mine.

This page assumes the user has a basic understanding of Linux and it's associated terminology.

Last updated : 17th June 2000, Updated kernel section. Updated PCMCIA section. Updated Audio section. Updated USB section. Updated Resources section.

My laptop is an HP OmniBook XE , it has the following specifications:

Intel Pentium II Celeron 266MHz CPU
64MB RAM*
4GB E-IDE HDD
24x E-IDE CDROM
Silicon Motion LynxE PCI VGA Adapter
12.1" HPA LCD Display
2x Type II/1x Type III PCMCIA slot(s)
The lower slot supports Zoomed Video
IrDA port capable of FIR operation
USB port
ESS Maestro 2EM PCI Soundcard
& Modem
PS/2 Synaptics Touchpad Pointing Device
3½" FDD
External PS/2 port for Keyboard or Mouse
External Serial, VGA, & Parallel ports
Connection for an optional docking station
Novel buttons allowing the CDROM to be used as a CD player
RPTI EP401 NE2000 compatible PCMCIA network card*
* Thanks to Rik for letting me pillage his scrapped IBM ThinkPad 600 for spares, and the donation of a PCMCIA
network card. Shame I couldn't swipe the screen and processor!

HP also produces a range of laptops known as the HP Pavilion N3100 series which from what I can gleen, have almost exactly the same hardware as found in the OmniBook XEs, so these pages should also be of some use to you if you have one of these laptops.

Jason Bechtel has successfully installed Linux on his Pavilion N3110, so if you have question pertaining directly to these models, you might want to e-mail him instead.

When running Linux, there are the following areas that are of interest specific to laptops:

Kernel configuration
Advanced Power Management
Pointing Device
PCMCIA
X Windows
Audio
USB
IrDA

This is usually where proprietry hardware can be found making these areas more difficult to set up than on a normal desktop PC.

[ Top | Installation | Kernel | APM | Pointing Device | PCMCIA | X Windows | Audio | USB ]
[ IrDA | Conclusions | Resources ]
Installation

I initially installed RedHat Linux 5.2 as that was all I had available on bootable CD, (cheers Dougal!), although other distributions of Linux should work, ( Slackware , SuSE , Debian , etc.).

I have since purchased RedHat 6.0 , and this has been installed on the laptop from scratch to keep it nice and up-to-date.

If you want to have a dual boot with another Operating System, for example: Windows 98, (which comes as standard with the machine), you should install that first, as the installation will be much easier when it comes to install the LILO bootloader.

To boot the machine from a CD, it may be necessary to press the Escape key while the "HP OmniBook" logo is displayed on boot-up, this will bring up a menu of available bootable media. It may also be possible to perform the install using a boot disk and NFS or FTP, but as I haven't yet got a PCMCIA ethernet card I can't confirm this.

For my partitions, I decided on the following sizes:

Partition Approx. Size (MB) Filesystem Mount Point
hda1 1024 /dosC DOS FAT16, for Win 98
hda4 200 n/a Hibernate Partition
hda5 100 /
hda6 1400 /usr
hda7 1024 /usr/local
hda8 128 n/a Swap Partition
hda9 100 /home
hda10 50 /tmp
hda11 50 /var

...which I think pretty much fills up the 4GB available. I used the Disk Druid utility to carve up the disk for Linux as it is much easier to use than the traditional fdisk one. You don't have to follow my sizes here, these are just what work for me in my situation.

I opted for a fairly minimal install as I had tarballs of a lot of software, (GNOME, etc.) that was newer than that included on the CD, besides I tend to add packages as and when I need them so I don't lose track of what I've installed, and I quite like hand compiling the software anyway... I suppose I should be running SlackWare!

[ Top | Installation | Kernel | APM | Pointing Device | PCMCIA | X Windows | Audio | USB ]
[ IrDA | Conclusions | Resources ]
Kernel Configuration

The kernel that came with RedHat Linux 6.0 was a 2.2.5 based one. It booted the machine fine, everything including APM support was compiled in. The only problems were the fact that there was a lot of support for unnecessary hardware such as software RAID, etc.

I have since installed a much later 2.2.16 kernel as a replacement, which at this current date, is the latest available.

I have the 2.2.16 kernel and modules (including PCMCIA, ALSA & USB) available for download if you don't fancy the idea of configuring and compiling your own kernel. Or if you would only like a little bit of help, I have the kernel configuration file which can be used as a base template for modification.

In both cases, there are some important notes about the configuration.

  1. Modules are enabled with version symbols. This is so the OSS drivers function correctly, (should you choose to use them).

  2. IrDA support is now enabled. The kernel was unbootable when I tried to enable support in earlier 2.2.x kernels, but it's now working successfully.

  3. The Framebuffer console is enabled. This is due to myself actually liking it, (you get a bootlogo!), and as you will notice later on, if you want X the free/cheap way, you may need it.

    You will need to configure the framebuffer mode in your lilo.conf. Depending on the display your OmniBook has, this will affect which modes you can use. If your screen can do 800x600, (like my 12.1" HPA), then you can theoretically use the following:

    Bit depth # of Colours Mode (hexadecimal) Mode (decimal)
    8 256 0x303 771
    15 32768 0x313 787 This refuses to work
    16 65536 0x314 788
    24 16777216 0x315 789 My chosen mode

    If however your OmniBook is equipped with the higher spec. 13.3" TFT screen, 1024x768 is attainable and the following modes apply:

    Bit depth # of Colours Mode (hexadecimal) Mode (decimal)
    8 256 0x305 773
    15 32768 0x316 790
    16 65536 0x317 791
    24 16777216 0x318 792 Requires more than 2M VRAM

    Thanks to Manuel Gamba for providing this information.

    In your lilo.conf, place in the private configuration space for the kernel image, the following line:

    vga=xxx

    ...where xxx is the decimal value of your chosen mode. If xxx is "ask" you will need to use the hexadecimal equivalent instead upon prompting.

    Remember, whatever mode you choose here will be used for X Windows as well should you choose to run it. There are some problems with running 24-bit framebuffer modes with some versions of the XFree86 X Server, so a 16-bit mode is the safest bet until you know otherwise.

  4. Support for Iomega Zip/Zip Plus, on the parallel port is also enabled, (as a module), so I can "hot swap" the drive to and from the laptop.

  5. PLIP support is enabled as a module, so you can network the laptop via a standard LapLink cable on the parallel port. I have used this option quite extensively to attach the OmniBook to my local network via my Desktop PC. If you want to see how I did this, see here, (Coming soon).

  6. Parallel Printer support is enabled as a module so it can be interchanged with the PLIP and Zip modules depending on what you need to use.

  7. Support for the ESS Maestro soundcard is now available in both mainstream kernels and also the alternative ALSA package. Both sets of drivers have been compiled as modules for your convenience. So you can stop using the commercial OSS drivers if you so wish! (Check the Audio and Resources sections for some important information and ancillary packages!).

  8. PPP support has been added. I realised that some people might need to hook either an external serial or PCMCIA modem up to their OmniBook's so this should work now.

  9. USB support is now available, with all current USB drivers compiled as modules. (Check the USB section for more detailed information).

You may also like to download my lilo.conf file, which has settings to enable the framebuffer and to set up the parallel port properly. It also shows you how to set up a password to control who can boot the machine and how...

If you are set on compiling your own kernel, the Kernel-HOWTO is probably the most authorative source of information should you need more help.

[ Top | Installation | Kernel | APM | Pointing Device | PCMCIA | X Windows | Audio | USB ]
[ IrDA | Conclusions | Resources ]
Advanced Power Management

In order to use the APM facilities, a kernel supporting it should be installed. Most kernels in the newest Linux distributions do have this enabled, but if you have an older kernel, you may need to compile a new one. The "Power off on shutdown" option should ideally be enabled so that the laptop is automatically turned off when halted. This will require modification to the file /etc/rc.d/init.d/halt , (this applies to RedHat, other distributions may have this file located elsewhere) to make use of this option. Simply change the following line:

command="halt"

to

command="halt -p"

APM works fine with all suspend and standby functions operating. You can then type:

$ apm

to get battery status information. I have also installed the battery applet under GNOME so I can always see the power status.

You may notice after a suspend that sound, particularly the speaker beep no longer works but I don't think this is a model-specific problem.

[ Top | Installation | Kernel | APM | Pointing Device | PCMCIA | X Windows | Audio | USB ]
[ IrDA | Conclusions | Resources ]
Pointing Device

The Synaptics Touchpad built into the laptop is supported under gpm 1.17.8. I don't know how configurable it is, but it is reported to work smoothly.

Maybe I'll see if it is at all possible to port some of the Windows 9x utilities over to Linux...

[ Top | Installation | Kernel | APM | Pointing Device | PCMCIA | X Windows | Audio | USB ]
[ IrDA | Conclusions | Resources ]
PCMCIA

PCMCIA appears to support the Texas Instruments Controllers in the OmniBook. Using the "cardctl status" command, both slots' status could be displayed. After I upgraded the kernel, I broke the PCMCIA package due to version differences. I have downloaded the pcmcia-cs 3.1.16 source tarball and this compiled and installed with no problems. It would make things slightly easier if I could just reuse the modules under newer kernels but I have to set the module versioning option to keep OSS happy, so recomiling is necessary after every kernel upgrade, but it only takes 5 minutes.

I have included the 3.1.16 modules along with the latest kernel available from my site here .

WARNING! If you intend to use both PCMCIA devices and Sound, you might want to change line 6 in your /etc/pcmcia/config.opts file, otherwise the machine might lock up due to I/O conflicts:

include port 0x300-0x4ff, port 0x1000-0x17ff

Also check that the Interrupt assigned to the MIDI device does not conflict with any PCMCIA devices.

I now have an RPTI EP401 NE2000 compatible network card, which seems to be working great. I have set up my profiles/schemes, so depending where I am, I can have a different IP address and also enable and disable different services. Plug it in, "BEEP-BEEP", hey presto! One ethernet connection!

I have also previously borrowed a 3Com 3c589 PCMCIA network card, which worked flawlessly.

To see what PCMCIA cards are available, check the PCMCIA Home Page , and check the compatibility list to make sure your chosen card is supported.

[ Top | Installation | Kernel | APM | Pointing Device | PCMCIA | X Windows | Audio | USB ]
[ IrDA | Conclusions | Resources ]
X Windows

Out of all areas, this was the biggest cause of headache! This is due to the Silicon Motion LynxE PCI adapter being a little suspect. I have now found the Silicon Motion web site so you can see the specifications for yourselves, but it doesn't seem to be much help.

There are currently two methods of getting X to work with this chipset. There is a commercial Laptop X Server available from Xi Graphics . This costs $200 but had until recently the advantage of being the quicker solution due to it directly supporting the hardware, (A 10 minute timed demo is available for evaluation from their site).

The free method is with the XFree86 X Server usually available bundled with your chosen Linux distribution. Depending on the version of XFree you have, you have to configure it differently.

Up to (and including) version 3.3.5 you have to use the kernel framebuffer, which needs to be enabled in the kernel for it to work. The framebuffer has been supported in XFree for quite a while now, but versions prior to 3.3.5 didn't support 24-bit colour modes. I have previously installed XFree86 3.3.5 that comes as part of RedHat 6.0 and used it without problems. In particular, make sure you install the XFree86-FBDev-3.3.5 package as this contains the necessary server. To set up the X server properly, do not use xf86config! Go into /usr/X11R6/bin and make sure the X symlink points to the XF86_FBDev executable which should exist in that directory. The following command will do this:

$ ln -sf XF86_FBDev X

Copy the XF86Config file from my site into your /etc directory and X should now work.

Make sure you change your lilo.conf so that the framebuffer uses an appropriate mode, vga=789 works for me. You will also need to check that you have a framebuffer device for the X server to use.

$ mknod /dev/fb0 c 29 0

...typed as root should create the appropriate device file.

XFree86 3.3.6 now natively supports the various Silicon Motion Lynx chipsets with the XF86_SVGA server. You can set X Windows up more normally than before and have the advantage that there is now accelerated support, so X Windows appears to perform much quicker now. Newer Linux distributions should have this version included as standard so the compatibility problem should start to gradually disappear.

WARNING! XFree86 4.0 does not support the Silicon Motion Lynx chipsets as the 3.3.x driver has not been ported yet. You can probably use the XFree86 4.0 Framebuffer server, but to be honest, I can't see the point as I doubt you'll see any performance improvements. I'll update this section if and when the status on this changes.

[ Top | Installation | Kernel | APM | Pointing Device | PCMCIA | X Windows | Audio | USB ]
[ IrDA | Conclusions | Resources ]
Audio

The latest 2.2.x and 2.3.x kernels now support the ESS Maestro sound chip as well as the ALSA package with the latest 0.5.x drivers.

Both sets of drivers seem to work fine with the card, although I don't think recording is available through either interface.

I have included both the 0.5.8a ALSA driver and the 2.2.16 kernel driver in modular form along with the kernel available from my site here . If you intend to use the ALSA drivers, you will also want to install the ancillary ALSA 'lib' and 'util' source packages available from the ALSA site, or the binaries available here .

WARNING! Depending on how recent your OmniBook is, you may have what is referred to as a "Maestro 3". This is currently an unsupported model. To check what model you have, perform the following:

$ cat /proc/pci

and look for an entry similar to this:

Bus 0, device 14, function 0:
  Multimedia audio controller: Unknown vendor Unknown device (rev 16).
    Vendor id=125d. Device id=1978.
    Medium devsel. Fast back-to-back capable. IRQ 5. Master Capable. Latency=64. Min Gnt=2. Max Lat=24.
    I/O at 0xf800 [0xf801].

If the Device id field equals "1998" then I'm afraid you have one of the unsupported Maestro 3 models. If it is "1978" like mine or "1968" then you have one of the Maestro 1/2/2E's which do work.

The commercial OSS package was first with support for the card, and I tried the free trial package ages ago. The card worked, but MP3s produced excess noise when played. Reducing their output to 8-bit stopped this, and 4Front Technologies were working on a solution. Support was marked experimental/beta and has probably advanced now, but whether you want to spend $30 when free alternatives are available is up to you.

[ Top | Installation | Kernel | APM | Pointing Device | PCMCIA | X Windows | Audio | USB ]
[ IrDA | Conclusions | Resources ]
USB

This was only recently brought to my attention by the USB/Linux/Laptop page as a possible area of incompatibility. I don't have any USB devices, but I thought I'd see if it'd work.

Currently, the USB support is only actively developed in the 2.3.x kernel tree, but periodically, 'back-ported' patches are made available for the 2.2.x kernel tree here . I have patched the 2.2.16 source tree with the "2.3.99 pre7-1 for 2.2.14" patch, (currently the latest), and all the available drivers are compiled as modules and available along with the 2.2.16 kernel on this site.

I have access to an HP DeskJet 880C which has a USB port on it, so I'll see if that works at some point...

[ Top | Installation | Kernel | APM | Pointing Device | PCMCIA | X Windows | Audio | USB ]
[ IrDA | Conclusions | Resources ]
IrDA

The National Semiconductor NSC PC87108/PC87338 driver now seems to work properly on the laptop. This has only recently appeared in the latest 2.2.x and 2.3.x kernels.

Also, I have finally gotten hold of a transceiver for my desktop PCs motherboard which is now fitted and working. It may be a little impractical to mount the transceiver inside the desktop PC case, so like myself, you can mount it in an external box. This is how I built mine, (Coming soon).

You will need to acquire and install the latest copy of the IrDA utils package from here.

I have managed to successfully set up a network link between the two machines under Linux via IrLAN. Also, a friends Canon BJC-80 seems to work fine via the IrCOMM protocol. This page documents that particular installation process in depth.

[ Top | Installation | Kernel | APM | Pointing Device | PCMCIA | X Windows | Audio | USB ]
[ IrDA | Conclusions | Resources ]
Conclusions

Overall I'm happy that everything seems to work OK, the only thing that doesn't at present is the integrated modem, but I have a nasty feeling that it's a win-modem anyway.

Just as some sort of proof, here's a screenshot from my laptop under Enlightenment/GNOME. Notice the battery status indicator, gqmpeg, all proof that most of the discussed topics do work. I don't think there's a PCMCIA status applet for GNOME yet, hmmm...

The occasional person has also expressed an interest in the background picture shown in the screenshot, so you can download that if you wish.

Click to enlarge
Click to enlarge

To take up any of the slack CPU resources, I usually run the distributed.net client under both Linux and Windows 98 and I am still currently participating in the RC5-64 contest under my given e-mail address.

The HP OmniBook XE, (now replaced by the XE2), is a nice low-end priced laptop, which with the exception of the win-modem, represents a solid platform on which to run Linux and is excellent value for money.

[ Top | Installation | Kernel | APM | Pointing Device | PCMCIA | X Windows | Audio | USB ]
[ IrDA | Conclusions | Resources ]
Resources

http://www.bits.bris.ac.uk/madmatt/download/linux-2.2.16-i686.tar.gz
(1.5M, 1615604 bytes)
http://www.bits.bris.ac.uk/madmatt/download/linux-2.2.16-i686.tar.bz2
(1.5M, 1549685 bytes)
http://www.bits.bris.ac.uk/madmatt/download/alsa-0.5.8-i686.tar.gz
(888K, 909782 bytes)
http://www.bits.bris.ac.uk/madmatt/download/alsa-0.5.8-i686.tar.bz2
(500K, 512187 bytes)
http://www.bits.bris.ac.uk/madmatt/download/.config (12K, 12167 bytes)
http://www.bits.bris.ac.uk/madmatt/download/lilo.conf (249 bytes)
http://www.bits.bris.ac.uk/madmatt/download/XF86Config (2K, 1266 bytes)
http://www.bits.bris.ac.uk/madmatt/download/background.jpg (121K, 122239 bytes)

[ Top | Installation | Kernel | APM | Pointing Device | PCMCIA | X Windows | Audio | USB ]
[ IrDA | Conclusions | Resources ]
Contact me

Please contact me at madmatt@bits.bris.ac.uk for any of the following reasons:

You have run into difficulties and need some help, (the more information that you
can provide, the better)
You have something to contribute, such as PCMCIA cards that work, X tips, etc.
I have made an error on the page or you have some constructive criticisms.
You just want to thank me, (in which case, please go to the Linux Directory site
and vote for/rate my page, thanks)
Any other reason...

Please note that as I am currently studying at University I might not be able to reply immediately to anyone, due to work constraints that I may have. I promise I will reply to anyone who e-mails me, as soon as I have chance to. If you haven't heard anything from me in about three weeks, chances are I've probably lost your e-mail, so you're welcome to try again.

I can also be found occasionally participating on the comp.os.linux.portable newsgroup answering various (ir)relevant postings. Just make sure you have either "HP", "Omnibook", or something similar in the subject line and I should notice it and hopefully reply...

Graphics by Gimp Written in the vi editor Linux Directory, click here! Valid HTML 4.0! Get the client! GNOME NOW!

Last Modified : Sunday, 18-Jun-2000 15:30:25 BST
Comments & suggestions to Mad Matt , the web mastah of these 'ere pages.
Lost? Check the Site Map .