Tuesday, October 16, 2007



Can this silliness be used for good? Perhaps...

It is amazing how unaware some people can be. This little perl program allows you to set the "Ready Message" on HP printers to whatever you'd like. (if you want to run it under Windows, and don't know how, read this.) I wrote it after coming across the command in an HPPJL (HP Printer Job Language) reference manual I was reading for some reason that I now forget. Thanks to the flexibility and power of perl, it was a no-brainer to play with the new information. (Maybe you should consider learning perl?)

I want my ready back!

Well, of course I couldn't ignore such an opportunity, and it turns out to be a lot of fun. You can think up your own funny, confusing or scary messages. My personal favorite is "INSERT COIN" which fits perfectly on the small LCDs. You can even sit in sight of the printer and change the message while watching the reaction of your victim (or reading about it). Don't be surprised, though, if a large fraction don't even notice. I was quite surprised myself but, it appears, some people don't look at what is in front of them.

I wrote a more elaborate version that takes advantage of the HP 4200's larger, four-line display. It sends the current weather conditions which I grab from NOAA using the perl Geo::METAR module. It updates every 10 minutes. Amazingly, while many people noticed the report on the printer display, no one questioned it!

People are endlessly surprising. Isn't it great?

NOTE: There have been many requests for help with this. Non-networked printers, running the script, etc. While I cannot guarantee anything, you might find help on FreeNode's #perl IRC channel, here. In about three days this post has garnered more than 105,000 unique visitors. If a few of you can lurk there and help out it would be great. Apparently many of us share a sense of humor. Maybe there is an "INSERT COIN" community. Who knows?

A Philosophical Comment

The anonymous comment below, accusing me of considering myself "king of the hacker elite" made me re-read this post. I originally thought he was responding to a comment I made, not the post itself. After thinking about it I realized he might not have read any of the comments at all. That being the case, let me be very clear about something: while I definitely enjoy being extremely extroverted in my attention, and noticing all sorts of details and peculiarities in the world around me, I do not believe that such a tendency is exclusively meritorious or inherently superior. I work with many people who do not share this cognitive style but are intelligent, insightful people who have taught me a lot. Please don't take the observations above as belittling people who don't share my natural fascination with the things in the world. That would be much different than my intention.

Labels: , , ,


Blogger washort said...

Once in my foolish youth working as an intern in the IT department of a local hospital, I discovered the management console for all the printers. I set the ready text to "OUT OF CHEESE". Some poor nurse called the help desk _dreadfully_ confused shortly after. I confessed to my boss and he nearly exploded laughing. I don't know that I'll ever hear the end of it from him and his family. :)

Tue Oct 16, 04:55:00 PM EDT  
Anonymous Henry Miller said...

I don't see why you are surprized. Printers work for the most part. If you hit print, go to the printer, and the paper sitting in it is what you printed you walk away.

The display is something you look at only if there is problems. So I might see your insert coin message if the printer is out of paper (assuming the printer doesn't override your message). I may also see your message before hitting setup) I wouldn't read it normally.

In fact some of the printers where I work are situated such that reading the display would take effort. (Printer is lengthwise along a hall and I come from the other direction)

Cool hack though.

Tue Oct 16, 05:00:00 PM EDT  
Blogger Yaakov said...

I suppose my surprise stems from my own tendency to look at everything around me in detail. Most people I spend time with are similarly disposed. It is part of "hacker genetics", I suspect.

I learned something from seeing people ignore the display, though. These are people that I respect and are by no means "stupid". It reminded me that my cognitive style is not "right", there are other perfectly valid ways to look at the world.

I like learning things like that.

Tue Oct 16, 05:38:00 PM EDT  
Anonymous rjbs said...

I did this at an old job, only to find that by setting the text every two minutes, I was causing it to queue up. After two hours, you'd have to hit "OK" sixty times to clear the display and let printing happen.


Tue Oct 16, 05:43:00 PM EDT  
Blogger Yaakov said...

Oops is right. Fortunately whatever you might have been doing to make the printer think it had print jobs this script avoids. I run a 10-minute cron job with the weather script I mentioned, 27x7x365 with no side effects.

I suppose it is possible that *some* model doesn't behave well, but I have run this against at least a dozen with no ill effects.

Thanks for the warning to TEST FIRST.

Tue Oct 16, 05:54:00 PM EDT  
Anonymous Anonymous said...

hardly a hack, it's most likely documented in the manual.

Tue Oct 16, 06:47:00 PM EDT  
Blogger Yaakov said...

Yes, the manual is where I found it. I don't consider it specially clever, and the perl is very basic, but in the classic sense it is exactly a hack. It is too bad the word has lost its meaning. Language changes, though, and there is nothing we can do about it.

Tue Oct 16, 06:59:00 PM EDT  
Blogger Kevin said...

The original I found was written by l0pht in C. Subsequently some of my friends have had our way with it:


...and yes, I have set one to "INSERT COIN". The Red Hat IS department enjoyed the laugh.

Tue Oct 16, 09:57:00 PM EDT  
Blogger Yaakov said...

I don't actually know when I wrote the first version of this. It was probably around 2001. I really like that so many people chose "INSERT COIN". I also had "TWO PLAYER START" but that didn't fit on the smaller displays.

Tue Oct 16, 10:02:00 PM EDT  
Blogger tomchuk said...

This is even more fun when you combine it with multicast DNS. You can enumerate network printers advertising _pdl-datastream._tcp and change ALL their PJL RDYMSG's in one go. It can be done in a 3 line shell script using avahi-browse and netcat.

for host in `avahi-browse -rt \
_pdl-datastream._tcp | grep address | \
sed -e 's:^.*\[\(.*\)\]:\1:g'`
do echo "@PJL RDYMSG DISPLAY=\"$*\"" | \
nc -q5 $host 9100

My entire university (all 3 campuses) were on one wide-open network, and all the HP printers were advertising service over multicast DNS. Needless to say, I left a nice going away present upon my departure.

Tue Oct 16, 10:48:00 PM EDT  
Anonymous atc guy said...

METARs are only updated once per hour, at 55 minutes past the hour. If you set your script to check for weather at 5 past, you'll save yourself a whole bunch of useless checks, as well as bandwidth for the rest of us using the METAR system.

Tue Oct 16, 11:52:00 PM EDT  
Anonymous Anonymous said...


Wed Oct 17, 12:57:00 AM EDT  
Anonymous Heurrgh! said...

Lovely! Would you consider posting your more elaborate version?

Wed Oct 17, 01:36:00 AM EDT  
Blogger Yaakov said...

Yes, the METAR information doesn't change but the printer display sometimes does. Fortunately I am using NOAA's web page and they only refresh from the system as required. The page is a few KB in length and I am certain that my access isn't having an adverse effect. I had considered caching, but it was a quick hack and didn't bother.

You have a good point, though about shared resources. This used to be a problem for things like network time servers. It is important to be sure we are not unintentionally abusing a public resource.

Wed Oct 17, 05:06:00 AM EDT  
Anonymous devolute said...

I am seriously considering doing this to our large HP at work. If the boss doesn't appreciate the joke and I get fired for this; thanks in advance!

Wed Oct 17, 05:49:00 AM EDT  
Anonymous Anonymous said...

It's quite amusing to read this as I did the exact same thing ("INSERT COIN", though not using Perl) on one of the printers here at work a couple of years ago. It was a couple of days until anyone noticed and hilarity ensued.

Wed Oct 17, 06:00:00 AM EDT  
Blogger Yaakov said...

Well, if someone would fire you for changing a < 50 character printer message than you either have unprecedented rhetorical skills or they are looking for an excuse. If they are looking for an excuse be sure you read your company's Acceptable Use Policy for computing assets before proceeding.

I hope your bosses have a sense of humor.

Wed Oct 17, 06:28:00 AM EDT  
Blogger Yaakov said...

This idea seems to be perpetually incipient among folks working with the printers. The choice of "INSERT COIN" probably comes to mind because of the focus on arcade games in our youths.

It is fun.

Wed Oct 17, 06:30:00 AM EDT  
Anonymous Anonymous said...

Yaskov, so you are suggesting that you are some king of hacker elite because everytime you go to the printer, you check the little readout? 10 times a day, you check the little readout? And you think this is clever. So I guess reading the exact same thing 1000 times a year makes you... obsessive compulsive at best.

Wed Oct 17, 07:48:00 AM EDT  
Blogger Yaakov said...

Wow, no. First, I don't "check the the little readout 10 times a day". I just notice the message on it when I am at the printer. I also notice many other things in the environment others miss. I am very interested in the details of things.

I don't consider myself king of anything. I wonder what prompted that invective. I thought I made it clear I was humbled by the fact that other people didn't place the same importance on such details. Sorry I communicated that poorly.

Wed Oct 17, 07:54:00 AM EDT  
Anonymous Anonymous said...

Just tested it on my coworkers. It was fun as hell. First I picked only two people standing at the printer (which I see from my desk), and postet two sort messages. As soon as the called everyone to come, I reverted to default.

So now nobody believed them, until i started a prepared batchfile which made the printer display "i'm a barbie girl, in a barbie world...." and so on. The whole song.

After that everyone was standing at the printer, laughing. People began to fear that this is a hacker, breaking in our network. Until I revealed myself, bevore someone called the IT Departement.


Wed Oct 17, 08:27:00 AM EDT  
Blogger Dan said...

A friend of mine discovered this some years ago, and took pleasure in setting suitably entertaining messages on printers elsewhere on the company WAN, including some that were 900 kilometres away.

I'm sure that distance record has been beaten many times by now, especially in these days of small business networks connected to the Internet with no firewall.

(I have personally only printed one test page on a Web-enabled printer in Switzerland.)

Wed Oct 17, 09:58:00 AM EDT  
Blogger c-cheung said...

If the printer allows for a blank message, just change it every 2 seconds or so to blank and back, giving the appearance of a flashing message.

This will sure draw a lot more attention. (If it is not too heavy on the network, of course)

Wed Oct 17, 10:40:00 AM EDT  
Blogger goninzo said...

My VP came up with a great message: "PC LOAD LETTER"

It's right outside of my office. Now it's a matter of time. I can't wait.

Wed Oct 17, 12:21:00 PM EDT  
Anonymous Anonymous said...

The anti "hacker elite" commenter is clearly suffering from self esteem issues already if the observation that most people don't notice printer readouts was so offensive to him/her.

If I noticed "insert coin" I would assume the printer had a DIP switch for when there's a coinbox attached (e.g. for libraries) and that there was dirt on the contacts.

Wed Oct 17, 12:32:00 PM EDT  
Blogger Dale said...

On a more serious note, I took the weather display script, deleted the weather part and used it to display whatever I wanted. So now on all of the 4250s at work they have the name of the printer displayed on them.

Oh and one of them now says "Out of Cheese"

Wed Oct 17, 12:52:00 PM EDT  
Blogger Yaakov said...

A real application! Thanks.

Wed Oct 17, 12:55:00 PM EDT  
Anonymous Jeff said...

@goninzo - PC LOAD LETTER is ingenious! Sadly, 90% of my coworkers would not get the Office Space reference.

Wed Oct 17, 12:56:00 PM EDT  
Blogger jeremiah said...

has anyone put "ENTER PASSWORD" yet?

I already have my office thinking the printer is self-aware.

"computers and robots do that sometimes." -- dwight schrute

Wed Oct 17, 01:20:00 PM EDT  
Anonymous Anonymous said...

For non-networked LaserJets (like my LJ4), on Linux, you can make the perl script:

print <<EOJ
\e%-12345X\@PJL JOB

And send the command to the printer with:

$ perl myscript.pl "WHATEVER MESSAGE" | lpr -l

The "-l" means to send the commands raw. This works even if the printer is hosted by a print server, even a Windows print server. It should basically work with any LaserJet that is set as the default printer, regardless of connection or protocol.

Wed Oct 17, 01:23:00 PM EDT  
Anonymous Anonymous said...

The next step - make a HalfLife(TM) laser printer.

Take a junker printer, cut a sweeping slot across the top of the case and melt the edges a bit with a soldering iron. Hide a laser pointer in the case, beaming out from the end of the slot. The screen can warn "CONTAINMENT FAIL", "LASER GUIDE ERR", "BEAMS CROSSED"; let bad scifi be your guide.

Wed Oct 17, 01:27:00 PM EDT  
Anonymous Anonymous said...

"everytime you go to the printer, you check the little readout? 10 times a day, you check the little readout? [...] I guess reading the exact same thing 1000 times a year makes you... obsessive compulsive at best."

Remind me never to be a passenger while the Anon above is driving. He apparently only checks his gas gauge, speedometer, and rear-view mirror once per day.

Wed Oct 17, 01:59:00 PM EDT  
Anonymous Anonymous said...

Finally, a reason to buy HP printers again...

Wed Oct 17, 02:04:00 PM EDT  
Blogger Feathered said...

Cool. It was even cool in 1999 when I first created http://www.ancientpond.com/ljshen.html and it had been around years earlier in alt.shenanigans.

Just posting some history :)

Adding surrealism to people's lives is almost always a good thing.

Wed Oct 17, 02:04:00 PM EDT  
Blogger dd-b said...

The display is something you look at only if there is problems.

Very strange. I find it completely weird that people could *not* see what's on the display if their eyes go across it.

Nor would it occur to me to associate this somehow with "hacker" mentality/habits. I think of hackers as likely to be inner-directed introvert types, the ones most likely *not* to pay attention to that sort of environmental thing.

Wed Oct 17, 02:13:00 PM EDT  
Blogger Stephen said...

This goes back at least ten years. At Netscape, someone wrote a perl script to post the current stock price on all the printer lcds, allowing potential mozillionaires to keep track of their mozillions.

Wed Oct 17, 02:20:00 PM EDT  
Anonymous Anonymous said...


Wed Oct 17, 02:21:00 PM EDT  
Anonymous Anonymous said...

During the dark of winter I created a similar php script that parsed wunderground.com data and fed it to the IT department's Laserjet. Once the effect wore off on the geeks I fed it out to all of the HPs on the network. Worked great. Then... we had some tempermental activity from certain printers and I sadly turned off the weather update script. Heck, it said "Snow" every day anyway.

Wed Oct 17, 02:38:00 PM EDT  
Blogger Case said...

I just noticed this on the printer in my office yesterday, and then I saw the boing boing post (where i got here from) this morning.


Our printer now says:

“insert coin

One player 25 cents
Two players 50 cents”

Wed Oct 17, 02:49:00 PM EDT  
Blogger The Tim said...

This is great. Ok, so I'm probably just a dummy here, but how do I get this to work when the Printer IP shows as xx.xx.xxx.xx_LPT2?

Wed Oct 17, 02:53:00 PM EDT  
Blogger Chuck said...

Yeah, cool. I wrote that back in May, 2001

Wed Oct 17, 02:53:00 PM EDT  
Blogger The Tim said...

Upon further inspection, I realized that the printer in question is running off a print server, and the only interface available to the printer is the parallel port to the server. So I guess that fails the "JetDirect equipped" qualification. So sad :^(

Wed Oct 17, 02:58:00 PM EDT  
Anonymous Anonymous said...

Heh, I'd try the old "Help! Trapped inside printer factory!"-joke, but I guess it is too long.

Wed Oct 17, 02:59:00 PM EDT  
Anonymous Walter said...

Anybody ever set up a script to update the display to current outside weather conditions or other useful information? Insert Coin seems very funny, but there could be useful applications as well. Even listing the printer name would be useful. The day of the week might be too simplistic. I was thinking that outside weather conditions might be good though.

Wed Oct 17, 03:06:00 PM EDT  
Anonymous Anonymous said...

jeremiah said...

"has anyone put "ENTER PASSWORD" yet?

I already have my office thinking the printer is self-aware."

I don't have any access to HP printers but I really want someone who does to make them say:


Wed Oct 17, 03:07:00 PM EDT  
Anonymous pointfive said...

How do you undo it? I'm a programming novice.

Wed Oct 17, 03:14:00 PM EDT  
Blogger Jody said...


Wed Oct 17, 03:17:00 PM EDT  
Anonymous Matthew said...

Cool, its ashame all the printers at my school are Lexmarks though :(.

Does Lexmark have a similar command?

Wed Oct 17, 04:02:00 PM EDT  
Blogger Yaakov said...

re: Lexmark, I don't know. It might emulate HPPJL or you can just look for the documentation and modify the message it sends.

re: Undoing it, the easiest thing is to send "READY" to the printer or you can powecycle. It isn't persistent.

Wed Oct 17, 04:17:00 PM EDT  
Blogger Yaakov said...

See the link more elaborate version here for a weather conditions program as detailed above.

Wed Oct 17, 04:20:00 PM EDT  
Anonymous Anonymous said...

I'm new to Perl, and I don't know where to enter the printer's IP address and my message. Any help?

Wed Oct 17, 04:46:00 PM EDT  
Blogger Craig said...

Ok so I know nothing about perl but I installed activeperl on my mac and the terminal seems to running it fine.

The only things to change in the script would be the ip address of the printer and the messeage i want displayed?

Right? Wrong?

If so where do I input those. Thanks

Wed Oct 17, 05:05:00 PM EDT  
Anonymous Commander Beavis said...

My "hacker genetics" come with a label; "ADHD" ;)

Wed Oct 17, 05:24:00 PM EDT  
Anonymous Anonymous said...




Wed Oct 17, 05:28:00 PM EDT  
Blogger Alexander said...

That reminds me of a story Alan Cox once told at Linuxworld 2002 (?) in Dublin.
Apparently someone ported Linux to the HP 8000 Laserprinter, uploaded it via some kind of remote hole and let it do some kinda weird calculation over night (SETI? don't know).
From what was told it was spreading from LJ to LJ like a virus, just to reboot back to the default firmware every morning at 6AM.
Don't know if that's a true story or just an urban myth, it sounds funny nonetheless :)


Wed Oct 17, 05:49:00 PM EDT  
Blogger Yaakov said...

If you run the script with no arguments it should emit a usage message.

Wed Oct 17, 05:54:00 PM EDT  
Blogger Yaakov said...

Re: porting Linux to printers, I suspect that is not true but there are NFS mountable partitions on the large HP printers and I have considered writing "HPFS" that would do RAID over several printers.

The partitions are tiny so it is just a silly thing but it would be great to do it anyway.

Wed Oct 17, 05:56:00 PM EDT  
Blogger Zamber said...

Great! I have a LJ5 and it works nicely :).

Is there a way to set it permanently (without using cron)?

Wed Oct 17, 07:26:00 PM EDT  
Blogger Yaakov said...

I don't know of any way to make it persistent but perhaps someone has more information.

Wed Oct 17, 07:29:00 PM EDT  
Blogger Nirav said...

My 4050N is now displaying:

Wed Oct 17, 09:02:00 PM EDT  
Blogger Randal L. Schwartz said...

the comments in the program confuse "stdin" with "the command line". you want to put arguments on the command line, not stdin, as in:
./this_command HERE

Wed Oct 17, 09:11:00 PM EDT  
Anonymous Anonymous said...

nice, changed to:
all your printouts are belong to us

Wed Oct 17, 09:32:00 PM EDT  
Anonymous Anonymous said...


It may be funnier to change the "Two players" line to show 49 cents.


Wed Oct 17, 10:25:00 PM EDT  
Blogger Carter said...

Mine says: "Dry - Add Water"

Wed Oct 17, 10:48:00 PM EDT  
Blogger Cav said...

The possibilities are endless.







Wed Oct 17, 11:37:00 PM EDT  
Blogger Fabien said...

This is brillant! I can wait to show that to my boss

Thu Oct 18, 04:59:00 AM EDT  
Blogger Yaakov said...

Thanks, Randal.


Thu Oct 18, 05:18:00 AM EDT  
Anonymous Ivan Stojic said...

Mine is set to "Check engine oil!" Also, escape characters such as "\n" work very well indeed on multiline printers!

Thu Oct 18, 06:38:00 AM EDT  
Anonymous lego said...

Thank you cav. I'm in tears laughing. I also like FEED ME A KITTEN, but it's late here in Hawaii and just about anything would be funny now.

P.S. Patrick who forwarded this to me...If I find this on the printers in the morning, I'll know who it was.

Thu Oct 18, 07:06:00 AM EDT  
Anonymous mihalich84 said...

Very fun hack, maaybe it'll be a starting point for me to learn perl =)

Any way to send a message in Cyrillic to printer? cause it gets strange symbols on screen if message is cyrillic.

Thu Oct 18, 07:07:00 AM EDT  
Anonymous Psych said...

Is there another function to change the message displayed during power save / standby?

Thu Oct 18, 09:31:00 AM EDT  
Blogger creepylesbo said...

How about the old classic of 'I read your email'. You could even change it to 'I read your printouts.'

Thu Oct 18, 10:04:00 AM EDT  
Blogger Yaakov said...

Not through plain PJL, however, I am researching what else is possible. I know, for example, that HP can read the current message on the display. They do it with some of their tools. I am trying to find out how.

The INQUIRE command returns "?" for the obvious methods of using it to get the information.

I haven't given up, though...

Thu Oct 18, 10:12:00 AM EDT  
Anonymous Anonymous said...


Thu Oct 18, 10:38:00 AM EDT  
Anonymous Anonymous said...


Thu Oct 18, 11:13:00 AM EDT  
Blogger Jesse said...

Uploading to CIA

Thu Oct 18, 11:19:00 AM EDT  
Anonymous Anonymous said...


Thu Oct 18, 11:41:00 AM EDT  
Blogger Dima said...

I have no idea why, but this is not working so happy for me. I have an an HP4250 printer, and when i run the perl script, i get this message
usage: printer.pl "Insert Coin"

but the screen on the printer does not change. Wonder what i'm doing wrong.

Thu Oct 18, 11:48:00 AM EDT  
Blogger Dima said...

Ignore my previous message, i feel so silly, didn't realize that you need to pass the variables in from comand line... duh...

Thu Oct 18, 12:03:00 PM EDT  
Anonymous Anonymous said...

I, in my sadness, also did this trick many years ago.

My favourite message (which did fit into the display on ours printers) was :-


It still makes me laugh to this day!

Thu Oct 18, 12:16:00 PM EDT  
Anonymous Anonymous said...

I have now translated this to English!

I, in my sadness, also did this trick many years ago.

My favourite message (which did fit into the display on our printers) was :-


It still makes me laugh to this day!

[Translation over] ;-)

Thu Oct 18, 12:21:00 PM EDT  
Anonymous Anonymous said...

Some more ideas...

If you want a free printer - "Replace Toner"
If you want a new Printer -"Contact HP support"
If you want to get a coworker in trouble - "Top User: XXX @ 5000 ppw"
If you want to baffle "Please apply reverse
shunting rule"


Thu Oct 18, 12:33:00 PM EDT  
Blogger Deirdre said...


Thu Oct 18, 12:35:00 PM EDT  
Blogger mrbass68 said...

this is great......years ago we did this manually to our LJ4mv with the hp laser jet utility--a favorite message of mine was TONER LOW.

Thu Oct 18, 12:38:00 PM EDT  
Anonymous Anonymous said...

Years ago, back at school, a friend and I used to have hours of fun sending beep characters to the line printers, making the communal printers sit there beeping incessently for ages. We then discovered a load of commands in the printer manuals and found we could have the printer shuffle the paper up and down and move the print head back and forth at will.

The only thing we had to be careful of was fitting it all in the printer buffer so we didn't appear on the spool list. All childish pranking but we felt very empowered at the time.

Thu Oct 18, 12:51:00 PM EDT  
Anonymous Anonymous said...

I changed the message to:

I had to fess up when a coworker asked my boss if she could call IT services to report the problem.

Thu Oct 18, 12:55:00 PM EDT  
Anonymous Anonymous said...

I changed the message on a 4000 Series PCL6 and was expecting the first line on the multi line display to change (The word "READY"), however the whole display changed and all the printer information is gone. Can I reset it back to default?

Thu Oct 18, 12:57:00 PM EDT  
Blogger Alastair said...

I tried this on a Kyocera Mita FS-1900.
Works great although it only flashes the message up for about a second and then back to "Ready". Is that what happens to the HP printers too?

Thu Oct 18, 01:02:00 PM EDT  
Anonymous Duo said...

Chris62vw on freenode helped by improving the script a bit. He added some functionality so it can draw a random phrase from a text file. I have put together a decent list of random phrases, packaged it up and made it available on my site. (http://duo.digitalarcadia.net/)

Feel free to steal it away, post it here. I am more than sure it could be useful to many here.

I currently have it nicely crontab'd. Every so often it automagically changes the phrase. =)


Thu Oct 18, 01:02:00 PM EDT  
Anonymous Carl said...

I was thinking that this is interesting since I now know how the printers can be switched from a language to another. All HP are showing messages in French in the office. However, the way the text is pushed is permanent...

And about the hacker's perspective, its an interesting debate. I am a programmer but I never tought of inserting Ester Eggs in my code. I never tought of ways of hacking (in the idea of breaking in something) either. The wildest I have done was to change the "Start Menu" font size to something huge for a user who didn't lock its workstation. I guess I never joined the dark force, Luke.
However, that doesn't prevent me from looking at things a bit differently than others. Now that the printers are in French, the "PROCESSING JOB" type message says "TRAITEMENT TACHE". Because it can't display accents (TÂCHE), it means "stain" instead of "job". I keep seeing this as the printer making a dirty job.

Now that this post has been read by many co-workers, I'll be walking by the printer a couple of times a day...

Thu Oct 18, 01:06:00 PM EDT  
Anonymous Nikita said...

In Russia we love to print out "I PRINT THEREFORE I AM" followed by the relevant extract from Discourse on the Method on printers that are emotely accessible. Works great if you choose the right printer and the right time (not that of IT dept.).

Thu Oct 18, 01:10:00 PM EDT  
Anonymous Anonymous said...

Did this about a decade ago in high school.

My favorite message was


Thu Oct 18, 01:37:00 PM EDT  
Anonymous TRAINTOR!!! said...

My printer has 3 lines of available space so I made a haiku:

Toner like my hopes
slowly draining of supply
I yearn for repair

Thu Oct 18, 01:49:00 PM EDT  
Anonymous Anonymous said...

To answer my own question you just restart the printer to reset the msg.

Alastair: No the msg stays put on the screen.

Thu Oct 18, 01:50:00 PM EDT  
Anonymous Harry said...

Evil Genius!

Thu Oct 18, 01:54:00 PM EDT  
Anonymous Anonymous said...

Just tried it on a LaserJet 2820, no luck.... disappointing end to my lunch!

Thu Oct 18, 02:21:00 PM EDT  
Anonymous Erik said...

This is wholesome fun for the whole office. The printers here now read:

"Polly wants a cracker."
"Nice day for a bike ride, isn't it?"
"I am not here to amuse you."

Thanks for posting this. I think I will next go on to some sort of fortune telling scheme.

Thu Oct 18, 02:28:00 PM EDT  
Blogger iain010100 said...

Someone in my office beat me to it with "INSERT COIN" on the communal printer.

Thu Oct 18, 02:31:00 PM EDT  
Anonymous Anonymous HP Engineer said...

The message resets after a power cycle because you're sending the command down within PJL - settings are at the job level (i.e. temporary). When the printer reinits, it pulls the init data from the onboard NVRAM.

To change it permanently (well, at least beyond a powercycle) within the NVRAM, you need to send a PCL command down without being bookended within the PJL job specification... so instead of applying the command at the job level, it applies the change directly to the attribute within the printer's static memory. It's the same high-level theory that works when you choose 3 copies in landscape mode on a print job, and it defaults back to 1 copy portrait-orientation the next time you bring up your print dialog box within a different application - although that particular scenario happens at the driver, not the printer. Same reasoning behind functionality, in any case.

I'm not going to spell out the actual syntax in non-PJL PCL coding, since it seems you're already getting enough flak for your "hacking". It's in the manual, though. ;)

Keep playing in PCL/PJL... it can do some pretty neat stuff.

Thu Oct 18, 02:36:00 PM EDT  
Blogger mohrt said...


Thu Oct 18, 03:14:00 PM EDT  
Anonymous some perl dumbass said...

made a win32 binary for those windows people who just want to mess with some printers: here

(compiled with activestate dev kit)

Thu Oct 18, 03:40:00 PM EDT  
Blogger BitShepherd said...

If you try this (even if it does not read 'Insert Coin', please:

* take a photo
* upload it to flickr
* tag it as "HP Insert Coin" (one hpinsertcoin tag please)
* watch the collection grow!

Share your fun ;)

Thu Oct 18, 03:51:00 PM EDT  
Anonymous Anonymous said...

"..I run a 10-minute cron job with the weather script I mentioned, 27x7x365 with no side effects." I don't know where you live that has a 27 hour day, but I hope my boss never finds it or I am sure I would be shipped there

Thu Oct 18, 04:08:00 PM EDT  
Blogger TP said...

It would be great to get two next to each other....

Have the left one say, "ALL YOUR BASE ARE "

and the right one say, "BELONG TO US"

Thu Oct 18, 04:18:00 PM EDT  
Anonymous Anonymous said...

It would be cool to take an old hp printer, hack it up into something resembling a little digital clock, and put it on your office desk to display funny messages.

Thu Oct 18, 04:32:00 PM EDT  
Anonymous Anonymous said...


Thu Oct 18, 04:50:00 PM EDT  
Blogger Gizzy said...


Thu Oct 18, 06:13:00 PM EDT  
Anonymous Anonymous said...

If anyone can provide a walk through guide on this that would be awesome! Im fairly tech savy, but dont know where to go from installing the perl distro. Thanks! J

Thu Oct 18, 06:26:00 PM EDT  
Anonymous Anonymous said...

Worked great on my LJ 4240. Tried on an old LJ2300 but it wouldn't print after that, had to reboot it. We also have an HP 5035MFP that is used for copies. For that, I used "Steveorama, makin' copies" (from SNL)

Thu Oct 18, 06:30:00 PM EDT  
Anonymous Anonymous said...

Ive downloaded the program, just cant figure out what else to do. Anybody care to help me out?

Thu Oct 18, 07:21:00 PM EDT  
Anonymous Anonymous said...


Thu Oct 18, 07:33:00 PM EDT  
Blogger Zamber said...

Photo done ;P

Thu Oct 18, 08:13:00 PM EDT  
Anonymous Dan said...

I feel dumb for having to ask this, but like they say, he who asks a question looks stupid for a minute, he who doesn't is stupid forever, so here goes:

Firstly, where do I put the message and the printer IP? For that matter, how would I go about finding the printer IP?

Secondly, all of the printers that I would use this on I access wirelessly from a laptop. Does that affect how I would use this?

Thanks in advance, everyone.

Thu Oct 18, 08:13:00 PM EDT  
Blogger Nagumi said...

how about "PAPER JAM"? That'd be good for some laughs.

Thu Oct 18, 08:37:00 PM EDT  
Anonymous Adem Rudin said...

Variations on this have been floating around almost since the Laserjet 4 days. I think the earliest version of this hack I've discovered dates from 1996; like you said, the basics of how to do it are all in the manual. Still, it's nice to see someone reinvent it.

It's still as fun as ever.

Thu Oct 18, 09:07:00 PM EDT  
Anonymous Anonymous said...

"Replace Flux Capacitor"

"The Door is Ajar"

Thu Oct 18, 09:09:00 PM EDT  
Anonymous mike said...

I think I'm going to do the one near my office during lunch today "Spelling Errors Found"

Mike from

Thu Oct 18, 09:23:00 PM EDT  
Blogger fahhem said...

I did this for my school a year ago. I set all the displays to say "Help! I'm trapped! Open the tray!" and the tech support started getting calls and people would stop them randomly and say "I think there's someone stuck in my printer..." By the end of the year, I used the same thing to send out a note to all the printers once-per-hour from the senior class. To this day, all the screens say "Seniors 2007, We own you"

Thu Oct 18, 09:50:00 PM EDT  
Anonymous Anonymous said...

So I can see the 2600N and print to it. Know the IP. Can sudo in OSX. Have this Perl script. Have installed this OSX perl deal. Now what?

Fri Oct 19, 12:09:00 AM EDT  
Blogger J Consortium said...

I have a feeling I'd get in a lot of crap for doing this on our HP.

But if I could get away with it, this is what I'd display:


Fri Oct 19, 01:55:00 AM EDT  
Anonymous Anonymous said...

Ran this today, had fun with it. Started at 9am on three different printers (used by about 20 people total), changing messages randomly throughout the day, and no-one noticed until 2.30. She guessed it was me (yes I am the office geek/computer genius), laughed about it with me and didn't tell anyone else. Next person noticed and laughed so much everyone knew, that was about 4pm.

Then I put it on the accounting printer (in a separate room). Turns out the person in there was printing at the time, and when she saw the panel change from "READY" to "HELP I AM TRAPPED IN THE PRINTER", she ran out of her office screaming in panic, because she thought someone was hiding in the printer. It's an HP4000, which is not even two feet square, and she thought there was someone in it.

Seriously. You think I'm joking, but I'm not. I only wish I had video, it would have killed on YouTube.

- Steve in Dallas

Fri Oct 19, 02:17:00 AM EDT  
Blogger Nick said...

My favorite text for this prank is "SKYNET ONLINE".

Fri Oct 19, 02:25:00 AM EDT  
Anonymous Anonymous said...

I decided to go along with the trend of fighting global warming, hence the message on printers in my office now read

"-- Save The Earth --
Print on both side."

and another one is

" Print Less
Waste Less"

Cool hack , by the way.

Fri Oct 19, 06:39:00 AM EDT  
Anonymous photo sharing said...

Wow this really works

Fri Oct 19, 07:05:00 AM EDT  
Blogger Punisher said...

PAPER JAM - "Why does it say paper jam when there is no paper jam, I swear..one of these days.

Fri Oct 19, 07:42:00 AM EDT  
Anonymous Anonymous said...

how do you change it if you have USB HP Printer and not one with an IP

Fri Oct 19, 08:41:00 AM EDT  
Anonymous Cedric said...

i have an hp printer that is used USB and it doesnt have an IP address what would you do in htis senario?? thanks

Fri Oct 19, 08:43:00 AM EDT  
Anonymous Anonymous said...

Is this possible todo on a Mac via USB?

Could you update the page to include details of how todo this for people with no clue at all, like me.

Fri Oct 19, 09:06:00 AM EDT  
Anonymous Anonymous said...

I connected via telnet and put in the lines and it just sat there. Is there something I need to put at the end to "activate"? Also, once it timed out it printed the script.

Fri Oct 19, 09:30:00 AM EDT  
Anonymous Anonymous said...


Fri Oct 19, 10:32:00 AM EDT  
Anonymous Anonymous said...

Could you add a more step by step guide of how to do this using telnet software please for those that have no idea how to run the script, like me.

Also, how can you use more than 1 line where possible? I couldn't work it would from the weather script.


Fri Oct 19, 11:10:00 AM EDT  
Blogger Pseudo said...

This isn't working on my 3550. When I run the script the LCD says "processing TEXT JOB" and keeps spitting out blank paper until I power cycle the printer.

What am I doing wrong?

Fri Oct 19, 11:35:00 AM EDT  
Anonymous Anonymous said...

On my Color Laser Jet in the main copy room:

Replace White Toner

Fri Oct 19, 11:47:00 AM EDT  
Blogger Zamber said...

Made a video showing what you can do with this script and some programming knowledge (rly basic stuff :P)


Fri Oct 19, 12:34:00 PM EDT  
Anonymous Anonymous said...

Newer printers have "Powersave Mode" which hides the Ready Message.

Any info on how to get that code too.

Fri Oct 19, 12:49:00 PM EDT  
Anonymous Anonymous said...

Back before the PJL codes were commonly available, I had posted a tool 'hp.c' which would remotely update the code. It has been years since I've looked at the code, but I believe it was published in 1996 or 1997. I remember playing around with this in 1995 though.

Here is a link to the original l0pht code:


Fri Oct 19, 01:49:00 PM EDT  
Anonymous Anonymous said...

I'd have it say either "Wake up, Neo", or "I can't do that, Dave. -HAL"

Fri Oct 19, 01:53:00 PM EDT  
Anonymous Anonymous said...

Open the command prompt and type:

hpsetdisp.pl IP ADDRESS "MESSAGE"

...So, my printer's IP address is, and the message I want is "INSERT COIN" ... I typed this:

hpsetdisp.pl "INSERT COIN"

Also, the display on our HP printers is 16 characters long with 2 lines. It's all UPPER CASE, too. If you want your message to read:


You structure the command like this:


This hack is really fun and easy. Thanks again for posting this and have a great day!

Fri Oct 19, 03:47:00 PM EDT  
Blogger Zamber said...

Posted it to YT too :).

Fri Oct 19, 04:37:00 PM EDT  
Anonymous Anonymous said...

Anyone have any clue how to get it to display multiline messages properly? I am having trouble figuring out how to send it escape sequences.

I've read various accounts about using \ escaped sequences as well as ~ and ^ but all display verbatim instead of sending the display a linefeed.

Fri Oct 19, 04:53:00 PM EDT  
Blogger Kyle said...

I can't believe this hasn't been suggested:
All your base are belong to us

Fri Oct 19, 05:33:00 PM EDT  
Anonymous Anonymous said...

I made our printer (a newer one with a multi-line display) say "I'm tired of printing, give me a cookie." only to find out that the help desk spent 30 minutes taking the printer apart trying to find out where to insert a cookie.

Fri Oct 19, 06:08:00 PM EDT  
Anonymous Anonymous said...

I looked for inspiration here - some good suggestions, but I eventually went with:


Fri Oct 19, 06:53:00 PM EDT  
Anonymous Dirkus said...

This is great. It also works on Canon ImageClass 4000 printers with the network card installed. Since it's a 2-line display, the first line reads READY, and the message you set is on the second (normally blank) line.

I just took a 2 week vacation, and left a batch file running on my computer that waits 30 minutes, then sets the message to one of several preset messages for 5 minutes, then clears it and goes back to waiting 30 again. I wonder if anyone will notice... they're not frequently used.

I did tell someone how to kill it just in case though.

The series of messages is...

Where is Dirk?
I miss Dirk.
umop apisdn w,I (I'm upside down)
You lookin' at me?

Fri Oct 19, 10:08:00 PM EDT  
Anonymous Anonymous said...

On a black and white printer: "BLUE TONER LOW"

Sat Oct 20, 12:00:00 AM EDT  
Blogger Raimundo said...

noone is on the irc channel you provided i hope someone goes there soon i want to join in on the fun

Sat Oct 20, 09:00:00 AM EDT  
Anonymous Anonymous said...

I'm using the shortened version someone posted.

works great with a 5100, all caps only. Couldn't do the cent character.

Linefeeds don't work. Use spaces to force text onto the 2nd line.

our 3550 will register the message, but each time you do it, it spits out a sheet of paper.

Nothing happened, that I could tell, with our 7100. Tried both RDYMSG and JOB.

Sat Oct 20, 02:19:00 PM EDT  
Blogger Dag �gren said...

Here is a patch for less complaining and more doing:

unless (@ARGV>=2) { print "usage: $0 <ip address> \"<RDYMSG>\"\n" ; exit }

my $peeraddr = $ARGV[0];
my $rdymsg = join " ",@ARGV[1..$#ARGV];

Sat Oct 20, 03:21:00 PM EDT  
Anonymous Anonymous said...


Sun Oct 21, 01:42:00 PM EDT  
Blogger Andrew said...

best one so far:



Sun Oct 21, 06:54:00 PM EDT  
Anonymous Anonymous said...

I did this awhile back with a windows service (written in .NET) which rotated the messages on all networked printers in the IT department hourly.

I almost got fired. ;)

Mon Oct 22, 01:20:00 AM EDT  
Anonymous drbayer said...

All right, this is entirely too much fun. FWIW, it works as written on Xerox Phaser 6120n printers - no changes necessary.

Mon Oct 22, 11:02:00 AM EDT  
Anonymous Anonymous said...


Mon Oct 22, 11:53:00 AM EDT  
Anonymous Anonymous said...


Mon Oct 22, 05:42:00 PM EDT  
Anonymous Anonymous said...

It works on most Lexmarks.

Mon Oct 22, 07:59:00 PM EDT  
Anonymous rouge said...

Very cool - unfortunately we don't have any HP printers in our office!

Tue Oct 23, 03:30:00 PM EDT  
Anonymous mogrify said...

Thanks for this!

If anyone's interested, I ported it to D and built a standalone Windows executable.

Wed Oct 24, 01:03:00 PM EDT  
Anonymous Red said...

I love it. Thanks

Thu Oct 25, 11:55:00 AM EDT  
Anonymous Jay said...

Our Printer sits next to our fax machine -- So i set the ready message to say INCOMING FAX

this is great and will get me started in perl!

Wed Oct 31, 11:02:00 AM EDT  
Anonymous Anonymous said...

Is there some way to send this message to the printer without appearing as a print job in the spool?

Thu Nov 01, 05:56:00 AM EDT  
Anonymous ACH said...



This one is in the corridor near the rest room:

Guess where this printer is located:

Sun Nov 25, 05:36:00 PM EST  
Blogger Ivan said...

Que loqueras, lo acabo de implementar en las 3 impresoras de la oficina y REALMENTE FUNCIONA, ahora solo espero a que lleguen las victimas...

Fri Apr 04, 06:31:00 PM EDT  

Post a Comment

Links to this post:

Create a Link

<< Home