Samsung Clp 315 Firmware Update

SAMSUNG has been using firmware updates on its laser printers to disable compatible. Affected models: CLP-310, CLP-315, CLP-320, CLP-325, CLX-3170,.

Hacking the Samsung CLP-315 Laser Printer 03 March 2012 on,,,, I am the happy owner of a laser printer. It is a fantastic printer for the price. Things were going great until it came time to replace the toner. At the time, the price of a full set of toner cartridges was around $150. To put things in perspective, the printer itself could be. Not being the type of person who so easily bends to the will of “The Man”, I set out on a journey to find a cheaper source of toner.

As it turns out, the answer is yes but in the end it was worth it. This is going to be a long post, so strap yourself in. If you’d prefer to cheat, you can skip straight to the. How Stuff Works Since I last purchased a laser printer (my circa 2001 is still kicking) the industry has changed. Imagine that!? Apparently, it is now common practice for printers and even toner cartridges themselves to count the number of pages that have been printed in order to track the consumption of toner. The printers then use these page counts to project how much toner remains in the cartridge.

To my knowledge, the cartridges don’t have a way to sense how much toner remains. Why does this matter, you ask? Essentially, it would be like having a gas gauge in your car that only tracked how far you had driven, not how much gasoline was left in the tank. Depending on several factors (driving style, load, tire pressure, etc), the amount of fuel consumed in a mile can vary wildly. The end result; you either waste gas, or run out. Neither is good.

The same can be said for the way modern laser printers track toner. This causes two problems. First, toner is likely being wasted (which irks me). Second, refilling the cartridges with toner purchased in bulk does nothing to reset the accumulated page count.

It is like putting gasoline in your tank, but not being able to start the car until the odometer is reset. Knowing all this, the only thing standing between me and was finding a way to reset the counters. Unsurprisingly, I am not the first person to try to address this problem. In fact, there is plenty of published hackery surrounding this printer. Not wanting to start from scratch, I got to reading. What I discovered is that the page counts are all stored on an EEPROM chip that is attached to an bus (an, in this case).

Service Checker TYPE III software (English Version) Ver.1.06 Support models. D III: D III-NET connection. Used to drive the Service Checker TYPE III. Daikin service checker software.

If that last sentence meant nothing to you, you might want to skip to the “Reset Procedure” section It is going to get technical for a while. Sniffing After doing some homework, I decided to try watching the I²C traffic with a to see what memory locations were getting updated on the EEPROM after each print. I was able to catch the first handful of writes, but there were so many that I decided to take a slightly different approach. I wrote an to dump the entire memory of the EEPROM to the serial port.

This allowed me to see a before and after memory snapshot. So, I would dump the EEPROM, print a page, and dump it again. I then compared the outputs using a diff program. I looked specifically for writes that looked like they incremented a value. Like I had suspected, there were lots of locations that were incrementing. The next thing I did was print off the printer’s “Configuration Report”. This is done by holding down The Button until the green light flashes rapidly.

This report includes several counts, including the counts for our toner cartridges and the printer itself. By searching the dump file for these numbers (after converting them to hex), I was able to track down which memory locations were used to store which counts. Now I had a list of memory locations that (I assumed) stored the page counts. I could use another to write zeros back into those locations. Using our analogy from before, I hoped this would reset the “odometer” and register the tank as full. I was able to successfully write zeros to all of the incrementing memory locations. Unfortunately, after printing the configuration report again, the “Toner Remaining” percentage hadn’t updated for any of the cartridges.

Also, the low-toner warning lights remained lit for all colors. Apparently that percentage is a stored value, not one that is calculated on the fly based on the page count. If the numbers were stored as floating points, this could explain why they were harder to see, as they may not have changed by exactly 1 like the page counts did. I needed a better way to analyze and flash the entire address space on the EEPROM. I hooked up my to the I²C bus, and was going to start writing some software to accomplish this.