After having bought a cheap old HP Jetdirect EX (J2382B) printserver, I found out (once again) that not all hardware works out-of-the-box. Which is a good thing really, because such manual devices usually allow much more specific configuration - as soon as you've found out how to get the message across. Thankfully the seller had kept the original HP documentation from 1993, back when you still got multiple large, detailed manuals with computer equipment. (Nowadays you're lucky to even find a ten-page booklet with a reference to some PDF on the driver CD, because nobody reads manuals for those auto-configuring devices until something's wrong.) Anyway, the manuals were helpful but a little outdated, so on this page I will explain what I did to get the Jetdirect working in my modern, fairly standard home network (802.3 Ethernet 100-BaseT with DHCP). Also, as I didn't get any software with the purchase and I'm assuming that's not exceptional, I'll link to all the utilities you need. Although I gathered all the information here specifically for Jetdirect EX model J2382B servers, I'm sure it may also be helpful for configuring other old Jetdirect models (including those inside HP LaserJets).
Warning: The descriptions on this page assume basic networking knowledge. If you aren't familiar with certain terms, look them up or try to follow instructions while ignoring the reasoning behind them. I am not responsible for any damage you do to your computer, server, network, printer etc. by following the advice here!

The printserver on my good old 10-BaseT hub, which is connected to a Linksys WRT54G router
Check the current config
First hook up the power, printer and network cables if you haven't already. (I used standard CAT5 / RJ45 which nearly all home networks have, but if you are still on BNC for some reason that should also work.)
Now resetting the server to start with a clean configuration is advised to ensure it is in the same state as mine when I wrote this manual (and to clear any messed up settings).
To reset simply unplug the power cord from the server, hold down the TEST button (in front of the three status LEDs), plug back the power and release TEST after 2 seconds.
Wait a minute for the booting process to finish, then switch on your printer and push the server's TEST button once to make it print a status report.
If all is well it should say "I/O Card Ready" in manifold languages and on another page "BootP in progress".
I/O Card failure can mean a lot of things, e.g. bad network cables. The HP manual has an error code table which you'll need: try e-mailing me if you don't have it.
If your Jetdirect doesn't use BootP to get its network configuration data, it's beyond the scope of this article.

My printed status pages and the HP manuals, click here for large version
BootP Basics
According to its default settings the server will now broadcast so-called BootP requests.
BootP is basically a predecessor of DHCP, but instead of assigning IP addresses automatically it needs a list saying which IP to use for which MAC address.
Most modern routers do not support BootP, but if yours does you will probably want to use that marvelous feature.
My Linksys WRT54G and Draytek Vigor 2200E weren't any good here so I made my own BootP server (see next paragraph).
Either way, you will need to find your Jetdirect's LAN HW address (MAC) on the status print.
Mark it or write it down on a piece of paper. We need to reply to those BootP requests in order to assign the print server an IP.
A BootP server application on a computer (or router) will do just that, but before setting it up we should make an NPI file and determine what IP the server will get...
Note that my Jetdirect EX does not seem to support DHCP at all, so we're stuck with BootP, but even if your model does support DHCP we'd still have to switch that on by first connecting through BootP IP-assignment.
This manual is not intended for Jetdirects that by default use another method than BootP to get their IP. Check the status print (at "config by") to see what method your server uses.
Making an NPI config file
So what's this NPI (Network Printer Interface) file?
According to the HP manual it contains configuration parameters that will be sent to the server with the BootP reply.
The manual proceeds to tell that hpnpcfg will create such a file - but unfortunately that's a UNIX tool on some driver disk that even I didn't get with the Jetdirect.
So we need to know the syntax to make this file ourselves. It's no big deal really (text below from a NetBSD manual):
name: printer name
location: Location of the Printer
contact: Contact Person
idle-timeout: 1800
banner: 0
You're probably best off copying this into a textfile and modifying the top three options as fitting.
There seem to be many other options in NPI (check out this, this and this) but not every command is supported by all Jetdirects, so if you're desperate to tweak you'll have to find out what your model supports by trial-and-error.
In case you'd actually do that, please send me the results! There's a lot of SNMP stuff possible according to the HP manual. One interesting option may be allow 192.168.1.105 to restrict access to the Jetdirect.
Choosing an IP
Next you will want to check your router's configuration panel to (1) see if it supports BootP and (2) what your DHCP pool is.
Because the thing is, BootP only allows you to assign a static IP to the server and that should be outside of the range that your router's automatic DHCP can assign to other network devices like computers.
Otherwise a conflict may occur (and that's no good).
Since you're going to setup the BootP reply, it's up to you to pick a good IP for the print server.
So if your LAN computers have addresses like 192.168.1.102 (which is common) it's probably a good idea to choose something far away like 192.168.1.200.
But don't change the first three numbers, just the last one. Write down your selected IP on a paper for later use.
Downloading a BootP server app
Now that we have the MAC, a valid IP and the NPI file to send, we're ready to setup a BootP server.
According to the HP manual it's a common protocol in the UNIX world, so if you're into that (or Linux/BSD/etc.) check your repository for one, e.g. bootpd.
For those on Windows, there are a few freeware BootP servers available.
First of all I found this package on driverguide, which includes HP Port Monitor (whatever it's good for).
Second, there's the good old Cabletron 16-bits (from Win3x) application recommended for Win9x users.
The linked download page includes a great manual and I really hope they won't take it down (as tends to happen to great software from the 90's - I got my backup copy).
Finally there's also haneWIN's server which I recommend for Windows 2000/XP/Vista users.
I'll explain how to use Cabletron, for the others you're on your own (but it should be quite analog).
Assigning an IP with BootP using Cabletron
After installing you'll find the Cabletron server in the Start menu folder "Tftpboot".
We're mostly interested in the BootP Server tab, but the Log also provides useful info such as the MAC addresses of devices that are sending BootP requests.
I'd first sit back and wait for the requests to come in: you should recognise the Jetdirect's MAC that you wrote down earlier from the status print.
If it doesn't show, reset the server (as described above). The Jetdirect's BootP requests should come in a regular interval (every 90 seconds or so).
You can generally ignore BootP requests from other machines on your network: I got some from a laptop with Windows XP that was already connected through DHCP, for no apparent reason.
Next, configure the application (see image) to respond to your Jetdirect by assigning an IP and sending the NPI-file.
Obviously the MAC and IP in this image are examples, replace them with the values you determined for your situation earlier.
Keep in mind that Cabletron is a Win3x program that doesn't support LFN (Long File Names) so rename your NPI file to something 8.3 valid (jetdir.npi or whatever) and put it in an 8.3 valid directory as well (C:\ will always be fine).

Now it's just a matter of waiting (in the Log tab) for your Jetdirect's next BootP request.
Cabletron will tell you that it has answered the request, and if the Jetdirect stops sending new requests it has accepted your reply.
If it hasn't, something's wrong. Check the MAC address, check the NPI file, and maybe try another BootP server.
Checking if BootP reply was OK
As soon as your Jetdirect has succesfully received the BootP reply with a correct NPI file, it should respond to ping.
Use ping <ip> on the commandline of a computer on your network to verify (with <ip> the IP you chose for the server).
If you get a reply, you're ready to connect a computer to the server and do some printing!
If you get a timeout, it's troubleshooting time: probably the BootP reply was either unsuccesful or the NPI file was bad, e.g. with an unsupported command.
Try printing a status page (push server's TEST button) to see what's going on.
How to install the network printer in Windows
To use a Jetdirect-connected network printer in Windows, it has to be installed just like any other printer.
In my case the server appeared in my Network neighborhood, so it was behaving like a regular SMB workstation with a shared printer:

Installing is then just a matter of double-clicking the printer and giving Windows the correct printer drivers.
(Look up your model number, e.g. DeskJet 420, see if the drivers are included with Windows and if not use "Have disk" to browse to the driver files you got off the floppy, CD or Internet.)
But since Windows shares are prone to failure you'll be happy to know another way of installing a network printer.
Too bad it's a stupid wizard though. See this page for more info.
Now you should be ready for printing! I hope it works, otherwise you'd best ask for help on some computer forum (and link to this page, too!). The next paragraphs deal with optional stuff and assume a bit more advanced networking knowledge. These are not required steps to get your Jetdirect working, they're just additional quests in becoming a Jetdirect Master...
Firmware upgrade: SIMM installed?
My JetDirect EX J2382B came with firmware revision B.00.02 (as seen on the status print).
The latest available firmware for this model, to my knowledge, would be rev. B.03.19 but upgrading can be quite tough.
As far as I know all EX models need some sort of Flash SIMM memory module installed to be upgradeable:

Just open the slot on the side of the Jetdirect to see if you have one installed, clearly I don't have it.
These SIMMs are hard to find nowadays and probably not worth the money anyway.
But for the happy few that have one installed, read on for instructions on upgrading the firmware.
(If you have a different model than I do, it may be possible to upgrade without a SIMM: to find out just follow the guide.)
Firmware upgrade: protocol choice
The main program you need is HP Download Manager,
but this version doesn't work on Win9x, so you can get the 1998 version here (leave those two firmwares though, they're not for the Jetdirect EX.)
You'll find it to be one maze of a program but I'll show you the way that worked out for me.
(I only tried the '98 edition, can't comment on the new one. It's probably fancy, in a web 2.0 style.)
So after having your install-and-reboot party, launch the "HP Download Manager Configurator" and all you get is this lousy dialog:

You can now choose the protocol that your computer will use to connect to the server.
The ancient IPX/SPX surprisingly had great auto-detection for me, but you probably don't have it installed by default.
So either grab your Windows CD off the shelf and go for another reboot or choose IP in the configurator and enter your subnet mask (usually 255.255.255.0).
The other settings can probably be left as they are.
Firmware upgrade: the real deal
Now you can launch the Download Manager itself to get a 3-button main menu.
First click Autodiscovery. IPX/SPX'ers won't have to do anything except wait a few seconds until the server is found:

If the server doesn't show up, close the Manager and choose TCP/IP in the Configurator to try that instead.
TCP/IP'ers also click Autodiscovery, but don't get it all done for them.
They must click the IP Discovery button and enable SNMP Sequential, which simply means the program will try every IP address in your subnet until it finds the server.
Great, huh? The other method, Address Table, apparently asks the router where to find the server.
For this you should enter your router's IP at the Default Gateway field, but it didn't work for me anyway.

To start TCP/IP discovery, click the Restart button in this dialog.
When the discovery is succesful (for whatever protocol) just click OK until you are asked to save the results to an NTI-file.
Make sure you remember where you put it, then return to the main menu (the 3 buttons).
Click the "Use autodiscovery file" and behold...

Or at least that's the sad message I got.
If you have an upgradeable device, first put your firmware file in the right spot (for B.03.19 it's a matter of running its Setup file).
Then select the device, click "Change version" select the new firmware version and click "Download".
I bet that should do it. If anyone actually performed this, let me know what happens (and send me the SIMM while you're at it!).
Telnet access
It should be possible to configure the Jetdirect by telnet.
However, according to this page it will only work on newer firmwares.
Make sure to set telnet: 1 in the NPI file for this to work, then simply launch a telnet client and point it to your server's IP.
Unfortunately my firmware is too old and I cannot upgrade (see above) so I haven't been able to verify this.
HP Jetadmin
In addition to configuring the printserver like this, you could use HP's pretty tool called Jetadmin.
There's the classic 3.42 version from 2000 but obviously HP is distributing some web 2.0 fancy new edition that I'm not trying.
Apparently Jetadmin allows you to change a lot of settings but in my situation there's wasn't much interesting.
This may be related to the printer you've connected: I have a DeskJet 420 which isn't exactly designed for network use.
JetAdmin doesn't even detect it correctly, it says "DeskJet 400". Oh well.

© 2008 Arnoud Onnink: arnie[at]arnie.frih.net