IntroductionSince I have one LPT printer and several computers at home I considered buing a print server for a long time. What reliably discouraged me however was the price - for example HP print server price starts at around 140$.
Unfortunately I haven't bought a router with USB ports like Asus WL-500W, but rather Linksys WRT54GL and so the printer sharing as described at DD-WRT wiki was not applicable in my case.
Then I noticed that there is a p910nd print daemon package available at the JoKer's site.
There was not much information about the installation on the Web and so I was pretty unsure but I decided to give it a try.
Note: Before you follow the steps I describe here, please, make sure your printer is compliant with the JetDirect technology.
Hardware installationMy HP LaserJet 1100 printer is not USB but LPT, so there is some USB to LPT reduction necessary.
I also realized that there is not a standard printer cable but rather a Mini Centronics cable used for the printer connection.
So it seemed that besides something like the USB to Parallel port adapter (14$) also another reduction like Centronics to Mini Centronics adapter (11$) was necessary (there is also a combo for 24$ so you can spare a buck ;).
Since I already had a standard printer cable the best choice for me was the ST Lab U-370 Dongle. For only 11$ does the job very well.
So that's it regarding to hardware installation.
Software installationWe download and install the p910nd print daemon (I use 0.92 version, I had no luck with the latest 0.93 version, I got /var/lock/subsys/p9100d file not found error).
Edit: now the problem with 0.93 is solved, see the discussion below
box# cd /mnt/C box# wget http://mgb111.pradnik.net/addons/servers-print/p910nd-0.92-081017.tar box# tar xvf p910nd-0.92-081017.tar ./sys/ ./sys/etc/ ./sys/man/ ./sys/man/man8/ ./sys/man/man8/p910nd.8 ./sys/sbin/ ./sys/sbin/p910ndNow we are ready to plug the printer to USB port (suppose you use the USB1 port specifically) and run the daemon:
box# /mnt/C/sys/sbin/p910nd -b -f /dev/usblp0We can see that the process is now up and running. The fact that it is named p9100d (instead of original p910nd) means that it is listening at port 9100.
box# ps | grep p910 271 root 284 S /mnt/C/sys/sbin/p9100d -b -f /dev/usblp0 1863 root 216 S grep p910We can make sure it is actually listening at the port; when we run the network statistics to list all the ports all the processes are are listening for, newly we can see the jetdirect port.
box# netstat -l Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State ... tcp 0 0 *:jetdirect *:* LISTEN ...We can also look at the system log (with help of the dmesg command). There we can find something similar to the following:
box# dmesg ... hub.c: new USB device 00:0a.0-2, assigned address 2 printer.c: usblp0: USB Bidirectional printer dev 2 if 0 alt 1 proto 2 vid 0x067B pid 0x2305 ...When we retrieve the description string of the USB device, we get that there is a IEEE-1284 (parallel communication) controller made by the Prolific Technology Inc..
box# cat /proc/printer/usblp0 Prolific Technology Inc. IEEE-1284 Controller 0x18Note that in case you have a USB printer you should probably expect somewhat more meaningful string like
Hewlett-Packard HP LaserJet 1005 seriesNow we are ready to try some printing:
box# echo "printer test" > /dev/usblp0 ...Initially I got the following error message:
bash: /dev/usblp0: Device or resource busy... then I realized that there is a mini-lpd process running holding the device. mini-lpd is a small, non-queueing LPD implementation. I do not know why there is mini-lpd active on the box, I have not tried to make it work, I just killed it and used p910nd daemon instead:
box# killall mini-lpdAfter that everything started to work.
To make the changes permanent, I have added add the following lines:
### printserv killall mini-lpd /mnt/C/sys/sbin/p910nd -b -f /dev/usblp0 &to the /mnt/C/sys/etc/rc-local file.
Ok, that's it on the server side, let's look at the clients...
Client installationNow it is time to install the print clients:
I presume you already have the printer installed locally, and so the only thing you need is to create a new port and set it up as a Standard TCP/IP Port: Now you select the box IP or network name: As a device type you choose the Hewlett Pacjkard Jet Direct: Here is a result page(SNMP not supported, RAW protocol, port 9100): Here we see the newly created port: And finally we are ready to print test page:
In menu System/Administration/Printing we choose to create a new printer and in device selection choose Network Printer and AppSocket/HP JetDirect.In Host and Port fields we fill the box IP or network name and as port we use 9100: The next step is the Printer model and driver selection: Now we can specify the printer name and description: And finally we are ready to print test page:
- For those who interested in a variety of connectors, here is a link to a Connector guide PDF.
- Here is a forum regarding HP LaserJet 1100 USB connection.
- Here is a document regarding Making HP Jetdirect Print Servers Secure on a Network. I do not know whether it has any relevance, I did not look at it so far.
- Here is an AirLive WMU-6000FS installation manual (PDF) containing print server installation.