HP Ink Cartridge Expiration Patch

By dose | October 7, 2009
Under: Uncategorized

English-speaking users: Patch instructions are found at the end of the blog post.

Wir haben hier im Büro einen HP Businessjet Farbtintenstrahldrucker, welcher sich vor einigen Tagen plötzlich weigerte zu drucken. Als Statusinformation am Display des Druckers kam: “Tintenpatrone abgelaufen”.
Nach einigen Recherchen in Google fand ich dann eine Beschreibung der Problematik auf dieser Seite von HP.

HP versieht also scheinbar bei einigen seiner Druckermodelle die Tintenpatronen mit einem Chip, auf welchem das Ablaufdatum der Patrone gespeichert wird und wenn man die Patrone länger benutzt als 2 Jahre, dann verweigert der Drucker den Dienst und besteht auf den Tausch der entsprechenden Patrone.
Nachdem es für mich inakzeptabel ist, dass HP mir vorschreiben will, wie lang ich die Patrone benutzen darf, habe ich versucht, das Problem zu analysieren.

Im Internet finden sich etliche Seiten, welche diese Problematik beschreiben, beispielsweise dieser mit reichlichen Kommentaren versehene Blog Eintrag. Viele Leute lösen das Problem auf mechanische Weise, indem sie die Druckerbatterie entfernen und somit den Drucker resetten, was dazu zu führen scheint, dass dieser “vergisst”, dass die PAtrone abgelaufen ist. Auch das Abdecken des Chips der Patrone soll zum Erfolg führen. Der Tip eines Kommentarschreibers, dass man nach dem Einschalten des Druckers einmal mit zurückgestelltem Datum drucken muss und anschließend während der aktuellen Sitzung normal weiterdrucken kann, hat mich auf die Idee gebracht, dass das Ganze wohl auch einfach Softwaretechnisch zu lösen sein muss. Scheinbar bekommt also der Drucker das aktuelle Datum vom Treiber zugesendet und verwendet dies dann für seine Ablaufdatumsberechnung.

Folglich habe ich mir einmal angesehen, was der Druckertreiber dem Drucker so an Informationen sendet, indem ich den Anschlussport des Druckers in den Druckeroptionen auf FILE: umgestellt und mir die Rohdaten angesehen habe. Dabei sticht folgendes PJL Kommando heraus:

@PJL SET TIMESTAMP="20091005153634"

Hier wird also der aktuelle Zeitstempel an den Drucker übertragen und aufgrund von entsprechenden Versuchen mit modifizierten Dumpfiles konnte ich herausfinden, dass der Drucker auch ohne diesem PJL Kommando funktioniert und folglich keinen Fehler beim Drucken mehr anzeigt.
Kleiner Tip am Rande: Man kann dem Drucker Rohdaten senden, indem man den Drucker freigibt, ihn anschließend mittels

net use lpt1 \hostprinter

einem Port zuordnet und anschließend die Rohdaten mit

copy /b rawdump lpt1

sendet. Damit ist einfaches Testen möglich.

Folglich kann man das Problem also am Einfachsten lösen, indem man den Druckertreiber derart modifiziert, dass er den Zeitstempel nicht an den Drucker sendet. Leider ist jeder Druckertreiber anders aufgebaut, sodass dies keine universelle Lösung ist, auch wenn das einfache Überspringen der Kommandoausgabe sicher die “sauberste” Lösung darstellt. Durch weitere Versuche stellte sich jedoch auch heraus, dass der Drucker ungültige PJL-Kommandos stillschweigend ignoriert. Daher kann man also einen universellen Patch bauen, indem man einfach im Druckertreiber nach dem oben genannten PJL-String sucht und diesen leicht modifiziert (z.B. indem man das Schlüsselwort TIMESTAMP in TIMESTAMX ändert – schon erkennt es der Drucker nicht mehr).

Ich habe einen kleinen Patcher gebaut, welcher einige Druckertreiber “kennt” und dort das Senden des TIMESTAMPs einfach überspringt. Für alle HP Druckertreiber, die er nicht kennt, benutzt er die eben erwähnte universelle Methode, indem er einfach den TIMESTAMP-String ändert. Der Patcher kann die von ihm getätigten Änderungen auch wieder rückgängig machen, falls diese zu Problemen führen sollten. Ich hoffe, dass man das Problem damit umgehen kann und jemand den Patcher brauchen kann. 

Instructions for patching:

I have been notified that this patch may not work on other printer models (I can only confirm that it works on my HP Business Inkjet 2300). so I recommend that you first verify if your printer can be tricked by the following procedure:

1) Turn off your printer
2) Set back system date to prior to the printer cartridge expiration date
3) Turn your printer on again
4) Try to print
5) Reset system date to current date

If printing works with these steps then the driver patch should work too. If it doesn’t, there may be some extra safeguards in your printer model. Sorry.
I don’t own other HP printers with expiring cartridges that I can try out, so I can only hope that the trick works for your printer as well.

>> DOWNLOAD PATCH <<

1) Turn off your printer so that the internal date gets reset. At least this works for HP Businessjet.
2) Apply patch and check if at least one printer driver file gets patched.
3) Either restart the spooling service or restart your computer just to be sure that the patched driver DLL gets loaded.
4) Turn on your printer again and see if you can print with the expired cartridge.

Update 07.04.2010: Incorporated deden’s patch into the patcher, maybe this helps for some printer models…

Feedback via Comments is welcome.

53 comments | Add One

Comments

  1. Raed Al-Bitar - 03/7/2017 at 10:04

    Thank you. It worked for me. I have an HP business inkjet 2800. For windows 10, I used the driver file bi2800_pcl5_x64.exe and I used your patch hpfix.exe to get rid of the “ink cartridge expired” message. Thanks.

  2. ian h - 09/6/2017 at 23:21

    Thanks, this utility enabled an hp business inkjet 1100 to work with both xp & an xp POS os system, for which there are only HP drivers . Reluctant to buy another HP inkjet after this experience – full original date expired carts.

  3. happy-user - 03/7/2018 at 17:01

    HPFIX.EXE and XP

    Doesn’t work unless …. evil grin
    You change hpz5r043.dll that is located in the main and subdirectories under
    /windows/system32/spool/drivers/w32x86
    and locate the expression TIMESTAMP. Change it to TIMESTAMX and voila,
    no more nagging “cartridges expired” on the printer display.

    Side note:
    The 3 versions of hpz5r043.dll are identical, nevertheless each has to be modified.
    Their use depends on the choice of printer emulation you make during driver installation (PCL5/PCL6/PS)

Trackbacks

Leave a Comment

Name:

E-Mail :

Subscribe :
Website :

Comments :