Read/Write toner chip?

I would like to read this toner chip when it is new, then write it back (reset) it when it is "empty" so I can fill the toner cartridge myself cheaply. I know this is possible because I see other devices that do it for other toner cartridges, just not mine. See here:

How can I read and buffer the chip, then write it back later?

Just making the chip visible

Get a close-up of the top of that IC chip. It's pretty obvious which pin goes to which pad. All you gotta do is lookup the datasheet for the chip and see how to read from and write to it.

The numbers on the chip are below it in the pic
"NC-0416
170-102"
I can't find any info about it at all, either from Digikey or Jameco..
?

It looks like a fairly standard small capacity EEPROM. If so:

1,2,3,4 ground
5 SDA
6 SCL
7 Gnd
8 Vcc

The longer pad is ground.

hello how to reset mlt-d111s toner chip?

1 Like

I ordered some other toner chips for this printer (Dell E525W) and now I know the correct pins (they were labeled on the circuit board).

What code can I use to read the eeprom and dump the contents?

I know it will be trial and error, but I can change parameters and keep trying until it works.

I was using the info on this site but couldn't get it to work:

3DPiper:
What code can I use to read the eeprom and dump the contents?

You need a datasheet for the chip. Read that. Then read up on the Wire library, you'll need it to send the I2C commands.

Doing a google search you can find pre programmed modules that you replace the old one with. I'm not sure if you have modules like this because the chips cannot be re-programmed and the toner level is estimated by the printer firmware. Something like the amount of pages the printer has done.

You need a datasheet for the chip. Read that. Then read up on the Wire library, you'll need it to send the I2C commands.

As I stated, I cannot find any info on this chip or the new ones (they are black epoxy covered).

If you went to the link, you would have seen where they guy on the blog is in the same boat. He has a toner chip that he knows nothing about. He wrote some Arduino code to scan the I2C bus until it finds a device:

"I never used the wire library before and I was surprised by the small number of methods it has.
On Wikipedia I read each device on a I2C-Bus has it's own 7-bit address and to communicate with it you have to know this address. So firstly I wrote a function to scan for devices on the bus. My idea was to try to read from each possible address and to listen for answers. This worked excelently I found the chip at the first try."

Is this not possible to just scan the I2C bus until you find the device? It seemed to work for this guy. However I can't seem to get it to work with mine and could use some help from people much smarter than me. :slight_smile:

Doing a google search you can find pre programmed modules that you replace the old one with. I'm not sure if you have modules like this because the chips cannot be re-programmed and the toner level is estimated by the printer firmware. Something like the amount of pages the printer has done.

Yes, I have done this to purchase new toner chips. You are also correct in that the toner chip comes pre-programmed with a number that the printer deducts from (and writes back to the chip) until it is at zero. Then, no matter how much toner you actually have left, you have to get a new toner (or at least a new toner chip).
All of that is documented very well on the link I posted above.

I'm not averse to just purchasing new toners, but I thought this would be a fun project to dump the eeprom content from each new toner chip (C, M, Y, K), then have an Arduino uno with four colored buttons that will write that content (based on the button color and matching toner color) to a spent toner chip to 'reset' it..

3DPiper:
Is this not possible to just scan the I2C bus until you find the device? It seemed to work for this guy. However I can't seem to get it to work with mine and could use some help from people much smarter than me. :slight_smile:

It didn't work for you? You haven't mentioned anything about trying to scan the I2C yet. I don't know if I'm that much smarter, but common sense would seem to dictate that you should post your attempt to scan the I2C and the results and lets see if someone can figure out what went wrong.

3DPiper:
You are also correct in that the toner chip comes pre-programmed with a number that the printer deducts from (and writes back to the chip) until it is at zero.
Is it writing back to the chip or is the chip just a serial number that the printer sees a new toner cartridge and then assumes the toner is full and subtracts the usage level internal to the printer and not writing to the chip.
Until you can dump the contents and see if it changes between prints you cannot be sure.

All of that is documented very well on the link I posted above.
But the link you supplied seems to be for a totally different printer and toner chip so may not be relevant to the one your using.

The ultimate way to do this would be to use a logic analyser to capture the data traffic between the printer and the toner chip to get an idea of the wire commands used.
Does the chip use 3.3V or 5V and what voltage is your arduino working at?