Guri Logo
Desenvolvimento de Sistemas e
Consultoria em Informática

Fone: 0xx-12-3933-0867


By Ulisses Thadeu Vieira Guedes


Network Administration is very easy if you have money enough to buy what you need. When you need something and haven't money .... you need to find out solutions .... That's the case.

Today, a network printer (you know: that printer with a network card!) has a lot of features. One of them is that it provides a first and/or last page with user information "automagically". This may be done, also, by configuring each user system (Windows Printer Drivers and Spool, Linux cups, lpd, etc). My arms and brain were tired to seat down on chairs, configure systems and after a couple days all of them is misconfigured by user intervention (new installation/rescue after virus/worms/*wares): "He always knows what he is doing!".

The network under my administration has 140 computers and me. (I'm not a computer but someone told me that I'm almost there!!) . All of them has fixed IP address and a host name (of course!), running Windows, Linux, *BSD, OpenVMS,  HP-UX, SunOS, etc, and sharing the same (and only one) network printer. (This what a poor organization pay for!). Windows box always broken! Linux box always updating (user behind keyboard wants latest version of "that" distribution for my pain).

No so far, at same room of network printer, the department has a secretary that would like to know "Who devil and when in this hell print this?", looking to pages and pages with only one character impressed...  and under critical eyes of my boss! (That's not good!!). So I need a fast, easy and effective solution under only one system.


The solution is a TCP/IP session proxy/HP JetDirect Emulator. One system can use the IP address of the network printer (don't matter what type of printer!) and send a first page with IP address, host name, date, room and phone extension of user. The application don't need know what it is printing but WHO prints that document, and WHEN it was printed (the secretary wishes!).


Initially, the printer has its own IP address and provides a JetDirect Service, under TCP protocol and port 9100.

One system assumes the logical identity of network printer, under protocol TCP and port 9100. If the printer is connected to parallel port (directly connected) I configure the application to Emulation only. If the printer is connected to network then that system assumes the logical identity of printer. At all situation the simulator prints a first page with requested information before each sent document. (See figure above)

Of course the logical printer will have another logical identity  unreachable by user. This action requests that the connection to printer in keep-alive mode (application and printer always connected) because the JetDirect embedded software implements only one access per time avoiding complex spool control letting the hard job to be done by client side application (for instance, CUPS).

The scenarios:

Printer has its own IP and port

Printer is connected directly to parallel, usb or serial port

Printer is connect to network unreachable by others

You can download the lastest source code and samples files or the binary (almost ready to use!) tar file. They are free, under GPL.

If you want to know the configuration parameters and what they does (taking a look, only) you can visit the configuration manual of current version.

If you have/know any bug, comments, donations or else, please, send an e-mail to address to (I will not say to avoid spammers. They hate to open files to collect e-mail address for while, of course!!).