Installing LJ4 Laserjet with Jetdirect

I have an old HP LJ4MV printer with a Jetdirect card that I want to use on FreeBSD.
The working installation on Solaris requires a bootp server to get the printer to show its IP. HP supplied a script to support the installation, which I have. It appears that FreeBSD (10.2) does not have a bootp. To summarize the handshaking as I understand it, the printer sends it's MAC address to the O/S, which responds to the printer, allowing the printer to send its IP to the O/S. The IP is not visible to the O/S until this handshaking is done.

Is there a way to install a driver for this printer on FreeBSD, and if so, how?
 
Are you looking for bootpd(8)? Also some (all?) DHCP servers can respond to the BOOTP messages/requests.

Generally speaking, there is print/hplip, but I can't say anything about support for your model there.

So! FreeBSD does have bootpd() installed in the default install. Can't explain why I didn't find it, when it's got man pages and all. Another case of cockpit error.

Anyway, thanks for the pointer. I've looked at the man pages, and it looks as though I can just copy over the Solaris installation to FreeBSD.
 
You have 3 options in FreeBSD for print spoolers.

1) lpr
  • comes w/ base installation
  • simple, good diagnostics
  • Can print to jetdirect port 9100
  • If your printer is postscript capable, no driver needed. If not, usually the printcap adds a filter/driver.
  • system covered in handbook documentation. Recently updated by forum moderator wblock@
  • network address usually statically set in jetdirect card and then referenced in /etc/hosts
2) sysutils/LPRng
  • lpr with gui, accounting.
  • previously used in production environments but being displaced by print/cups
  • can print to jetdirect port 9100
3) print/cups
  • the defacto standard in linux
  • xfce4, gnome3, kde4 have print "wizards" that configure cups
  • does alot behind the scenes sometimes making trouble shooting a pita
  • can print to jetdirect port 9100
  • requires a ppd for your particular model - ppd can also be generated with foomatic-db.
  • network discovery via dbus/avahi
 
Thanks for the comments. I have a functioning Solaris 9 install as a prototype.
For reference, the LJ4MV is a 1994 printer. I have two Jetdirect cards for it, both of which require the bootpd() linkup. The driver on Solaris is lpd(), and I'll assume that the FreeBSD version is compatible with its control files. I don't think that the old Jetdirect cards know anything about port 9100.
Right now, I think my main issue is getting the printer IP accessible from the O/S. The filter configuration in Solaris should map over fairly easily; if not, I have a complete description of the control parameters in the LJ4 HP manual. It's been many years since I configured this printer on Solaris 9, so I'll have to refresh my memory. However, it is postscript printer, and has about 20 other fonts configurable.

I have reviewed the Handbook discussion of printer installation, and, right now, it looks as though the only major issue in a straightforward install is getting
the IP sockets linked up through bootpd(). I expect to start work on this later today.
 
I do not have experience with Solaris printing although I was running a 1996 HP 5L via a trendnet printserver until a couple of weeks ago. Some of the terminology being used may be confusing to future readers.
lpd is the default print spooler which is a system daemon in FreeBSD - it is not really a driver. OpenPrinting adds to the confusion by referring to ppd's as "drivers".

In cups, there is a AppSocket remote printing option that directs the print job to IPaddress:9100.
Hewlett Packard JetDirect
socket://address:9100
socket://address:9101
socket://address:9102
 
Some really, really, really old JetDirects predated DHCP. Those were the ones that used bootp. I had the impression that DHCP kind of grew out of bootp and might be semi-compatible, but whatever, this is all back in the time when top hats were the height of fashion and electricity had not been discovered yet.

Can you just set a static address for the JetDirect from the control panel? Some resources say a firmware upgrade can convert the very oldest J2550 "A" to a "B" model, but not whether that might support DHCP. Oldrancher, I have a J2550-60013 here for an MIO slot. No idea if it supports DHCP, and no way to test, but PM me if you want it.
 
Aha! HP makes their support website worse each year, but determined hunting can find things: http://h20564.www2.hp.com/hpsc/doc/public/display?docId=emr_na-bpj07475

So if your old JetDirect is a J2550B, J2552B, or J2555B, it supports DHCP with firmware version A.05.05 and later. Upgrading those old cards can be challenging. HP had a reasonably not-terrible update program called JetAdmin (for Windows, of course). They replaced that with the terrible "Web" JetAdmin, although you can still find the old one sometimes. Some cards can be updated with just ftp(1) or telnet(1) and the firmware file.
 
Some really, really, really old JetDirects predated DHCP. Those were the ones that used bootp. I had the impression that DHCP kind of grew out of bootp and might be semi-compatible, but whatever, this is all back in the time when top hats were the height of fashion and electricity had not been discovered yet.

Can you just set a static address for the JetDirect from the control panel? Some resources say a firmware upgrade can convert the very oldest J2550 "A" to a "B" model, but not whether that might support DHCP. Oldrancher, I have a J2550-60013 here for an MIO slot. No idea if it supports DHCP, and no way to test, but PM me if you want it.

Yes, it's old, and predates the "consumer internet." The IP that the printer links to in the O/S is set in the printer. I'm not going to gamble on doing a firmware upgrade when it looks as though FreeBSD has the resources to get it connected through bootp. The script that HP provided for installing the printer on Unix (generic) was broken for actually installing it, but reading the script allowed me to manually install the needed files. Actually, I installed the print startup as a piggyback on a Solaris Jumpstart server install, so any manual work I do will probably apply to setting up a similar install server for FreeBSD. At any rate, the ball is in my court to proceed to get this thing set up. Might be worthwhile to write up what I do as a later HowTo.
 
If the printer has an IP address, doesn't just sending it a ping work?
If that fails, you can usually add the MAC address to the arp cache via arp -s ... and then ping it.
Neither works?
 
If the printer has an IP address, doesn't just sending it a ping work?
If that fails, you can usually add the MAC address to the arp cache via arp -s ... and then ping it.
Neither works?

Just to answer these questions, just pinging the IP does not work. And part of the bootp setup is to add the MAC address to a file in /etc.
As I've said, the Solaris 9 Jumpstart setup uses a script that can be used to set the daemons and files needed to get the printer connected. With some appropriate modifications, that script should run on FreeBSD.
 
To summarize the handshaking as I understand it, the printer sends it's MAC address to the O/S, which responds to the printer, allowing the printer to send its IP to the O/S. The IP is not visible to the O/S until this handshaking is done.

No, the printer does not send its ip to the O/S (server).

When the printer is turned on, the HP Jetdirect print server broadcasts BootP requests. The server listening in the bootps port, with the proper BootP configuration for the MAC sending the request, sends the TCP/IP information to the HP Jetdirect print server. The HP Jetdirect apply the information obtained to it's configuration.

BootP is a bootstrap protocol used to automatically obtain TCP/IP parameters from a network server, DHCP use the same bootstrap and you can think dhcpd is the newer version of bootpd, you can't use both at the same time in the server.

The IP address may also be specified using the front panel of the printer (recommended), but if you want to use BootP, print the "Configuration Page" of the printer and confirm it is set to use BootP

To enable bootpd in FreeBSD

Uncomment the line in /etc/inetd.conf

Code:
bootps  dgram  udp  wait  root  /usr/libexec/bootpd  bootpd

And run /etc/rc.d/inetd restart to reread the configuration file.

Assuming that your printer has the MAC 00:60:B0:CB:21:C7, in the/etc/bootptab file you need to put

Code:
hplj4m:ht=ethernet:ha=0060b0cb21c7:ip=192.168.1.3:sm=255.255.255.0:gw:=192.168.1.254:

Change values to feed your needs and turn off and on the printer.

For more information, read inetd(8), inetd.conf(5), bootpd(8) and bootptab(5)

Whit this, the IP should ping, and for the driver, you shuold read the section "9.5.3.3. Printing PostScript to PCL Printers" of the Handbook.
 
Back
Top