contact contact

Installing Linux on a HP Netserver

By Michael Marxmeier (mike@marxmeier.com)

Some notes on Installing Linux on the HP Netserver LC3. We installed a few of those boxes at customer sites and this article intends to share some of our experiences. Of course, feedback and suggestions are appreciated.

Disclaimer: Please be aware that information on this page is provided without any guarantee. We intend to be helpful by sharing some of our experiences but as usual YMMV. When something does not work for you, you are on your own to fix it (feel free to contact us for a quotation if you need help).


We usually recommend a HP Netserver LC3 (model 4) to Linux prospects (yes we're slightly HP biased here). It is reliable hardware (this is important after all), it can be extended by including a second processor and additional I/O devices and rather inexpensive additional on-site support options (hardware) are available.

We usually recommend the server with at least 128 MB RAM and suggest to include a second disk for better performance. As a backup device we use HP DDS2 (8GB) drives.

We currently use 500 MHz PII processors because they are so far the most cost effective option. The top line processors are often rather expensive while adding only slightly improvements.

When planing to use two processors (SMP) it is probably a good idea to purchase the processors at the same time. SMP configurations can cause problems if different processors steppings (models/revisions) are used.

There is also the LC3 HS version available. It has hot pluggable disks. It's more expensive but in my opinion it adds few additional value (how often do you change in disk drives during daily work?).
Update: Recently HP obsoleted the non hot-swappable LC3 models. So this is no longer an option.

We once tried the NetRaid-1 RAID controller which is available as an option (this is an AMI MegaRAID 428 controller, OEM product) and found it rather slow (we tried a RAID 1 configuration, it was much slower than using a SW RAID configuration on Linux). This could have been related to a defect in the Linux driver though which was new at this point. Since we don't have the hardware in the office we are currently unable to re-evaluate this for now.
We plan to evaluate the software RAID included with the Linux Kernel to see if this is a viable alternative for customers which demand RAID disks.


  • You need a mouse connected or you get a warning during boot (independend on BIOS settings - it shows its NT heritage).
  • If you disable the mouse (and ignore the BIOS message during boot) and a program later on tries to access the mouse, the console will freeze (and come back to life during shutdown - odd).
  • If you disable the mouse but actually have a mouse connected and the mouse is moved, the console will stall for some time.
  • When another driver grabs IRQ 12 (usually dedicated to the mouse) weird things could happen.
So usually it's less hassle to have the mouse connected and enabled in the BIOS.

Management Port

The Management port (no idea if it can be used with Linux - it looks like a serial device) is enabled by default. Conversly the 2nd serial device is disabled in the BIOS. To have two serial devices, simply enable the serial device and disable the management port. Check for a proper base address for the serial device or Linux will fail to discover it automatically.

Bios configuration:

  • The first serial port should have I/O port 0x03f8 and IRQ 4
  • The second one I/O port 0x02f8 and IRQ 3.


We have good experiences using Cyclades serial devices. Slightly expensive but they work fine (we so far connected up to 24 ports to a single machine). When connecting HP equipment (using existing cables) you need to keep in mind that the connectors are "wrong": Cyclades has males on the panel (rather than females) and the pins are reversed. The easiest solution is to use a NULL modem adaptor which has both female connectors. Then old cables could be just plugged in.

Possible problem with Linux 2.2: We suspect the Cyclades driver has a minor buglet to handle XON/XOFF properly when the device is closed. This hit us when connecting serial printers which could loose data on the last page. This was fixed by a patch to LPRng and we're still undecided if the Cyclades serial driver was the origin of the problem or something strange in LPRng.


We use an APC UPS which is connected to a serial port. We usually suggest a Smart-UPS 700 or 1000 which provide plenty of power reserves for a PC server.
APC currently does not provide controling software for Linux but the apcupsd package works perfectly for us controling the UPS (see below).


Linux Distribution

We used the SuSE 6.0 and SuSE 6.1 distributions to install customer machines. Other distibutions should work alike but we have good experiences using SuSE internally.

Of course you should compile and install a custom kernel. This is even required for SMP. Please note that SuSE (same as RedHat) has the habit to include patched kernels where applying subsequent kernel patches might fail.


We don't use the BSD derived lpr, since it does not allow filters to be used for remote printers and has other shortcomings. We tried PLP and gave up after serious problems and finding out it is no longer maintained.

So we switched to LPRng (LPR next generation, the PLP successor). LPRng allows easy support of serial printers and printers providing HP's JetDirect network interface.

The following patch against LPRng 3.5.4 solved (or worked around) the problem. It should be included in subsequent LPRng releases:

--- LPRng-3.5.4-orig/src/common/pr_support.c    Thu Nov 19 22:12:02 1998
+++ LPRng-3.5.4/src/common/pr_support.c Mon May 31 14:31:02 1999
@@ -225,6 +225,8 @@
        if( (fd = filter->input) > 0 && isatty( fd ) ){
                DEBUG3("Close_tty: fd %d, timeout %d, key %s",
                        filter->input, timeout, key );
+               if(tcdrain(fd) == -1)
+                       DEBUG1( "Close_tty: tcdrain() failed: %s", errno );
                filter->input = -1;
                if( Set_timeout() ){
                        Set_timeout_alarm( timeout, 0 );
This patch fixed a problem where serial printers could loose data on the last page. The patch is also available on the ftp server.

The following is an example LPRng printcap which provides the definition of a networked LaserJet and a serial HP2235 ("RuggedWriter") printer.

# /etc/printcap
# 01.06.99, mike
# lj5 uses a JetDirdct connection, the hp2235 is connected seial.

        :cm=HP LaserJet 5:\
        :if=/usr/local/etc/hp-filter %Z:\
        :br#9600:ty=cs8 clocal -crtscts ixon:\
        :if=/usr/local/etc/hp-filter %Z:\
After adding this to yout /etc/printcap i recommend to execute a checkpc -f (LPRNG utility program to create spooler directories and fix permissions) and either restart the lpd server or execute a lpc reread command so lpd gets awre of the changes.

The /usr/local/etc/hp-filter is a shell script which is similar to the SYSV printer interface scripts and allows easy controlling of printer features:

# hp-filter - lpr if filter for HP printers
# (C) Copyright 1998-2000 Marxmeier Software AG
# This is free software. Use it for whatever purpose but please
# be aware that there is NO WARRANTY of any kind.
# 24.12.1998, mike
# 15.06.1999, mike - fixed option handling for lprng
# 03.12.1999, mike - orientation, cpi options
# 30.01.1999, mike - added duplex, tray options
# 26.05.2000, mike - fixed tray option


#date >> /tmp/hp-filter.log
#echo "$@" >> /tmp/hp-filter.log
#exec 2>>/tmp/hp-filter.log

while [ $# -gt 0 ]
   arg=`echo "$1"|cut -c 3-`
   case "$1" in

if [ -n "$zopt" ]
   #echo "zopt=$zopt" >&2
   for opt in `echo "$zopt" | sed -e 's/,/ /g'`
     val=`echo "$opt"|cut -d= -f 2`

     case "$opt" in
        case "$val" in
        portrait) orientation="\033&l0O";;
        landscape) orientation="\033&l1O";;
        rportrait) orientation="\033&l3O";;
        rlandscape) orientation="\033&l4O";;

if [ $mode = "text" ]; then
   echo -ne "\033&k2G\033(8U"
   #echo -ne "\033(s1Q\033(s12V"
   if [ -n "$tray" ]
      echo -ne "$tray"
   if [ -n "$orientation" ]
      echo -ne "$orientation"
   if [ -n "$duplex" ]
      echo -ne "$duplex"
   if [ -n "$cpi" ]
      echo -ne "$cpi"
   if [ -n "$init" ]
      cat $init
   recode $cp:roman8
   echo -ne "\033&k0G"
   if [ -n "$tray" ]
      echo -ne "$tray"
   if [ -n "$duplex" ]
      echo -ne "$duplex"
   if [ -n "$init" ]
      cat $init
   cat -

if [ $? != 0 ]; then
   #echo "cat failed!" >&2
   exit 1

if [ $mode = "text" -o $mode = "reset" ]; then
   echo -ne "\033E"
This script is called by the lpd subsystem.
  • Should work with almost all HP printers.
  • Printing from command line (without options) will cause set the printer to LF line termination mode and convert input from ISO8859-1 to HP-ROMAN8 encoding.
  • Issues a Printer Reset at the end of the print job (which causes a form feed).
  • When specifying the bin mode (lpr -Z mode=bin) no conversio is done.
  • In addition, you could specify another code page.
The correspongding definition in /etc/opt/eloquence6/eloq.config is:
PRINTER 0 PIPE "lpr -Php2235 -Zmode=reset,cp=roman8 >/dev/null 2>&1"
PRINTER 1 PIPE "lpr -Php2235 -Zmode=reset,cp=roman8,cpi=16.67,tray=2 >/dev/null 2>&1"

  Privacy | Webmaster | Terms of use | Impressum Revision:  2000-01-16  
  Copyright © 1995-2002 Marxmeier Software AG