Reset Toner Chip from my Printer

First, I would like to thank you, for reading this post and trying to help me. I appreciate any help.

My project: I have a printer (Xpress M2026W) and the cartridge in this laser printer is empty. I have ordered a cheap one on the Internet and would now like to install the chip in the old toner in the new one.

The problem is that the old chip contains the information that the toner is almost empty. So I wanted to reset it, but unfortunately I can't do it.

This is the Chip:


I connected with my Arduino Duemilavone like this:

Then I executed the following code on the Arduino, because I did not know on which I2C address this chip communicates:

#include <Wire.h>

void setup() {
  Serial.begin (9600);
  Serial.println ();
  Serial.println ("I2C scanner. Scanning ...");
  byte count = 0;

  Wire.begin();
  for (byte i = 0; i < 120; i++) {
    Wire.beginTransmission (i);
    if (Wire.endTransmission () == 0) {
      Serial.print ("Found address: ");
      Serial.print (i, DEC);
      Serial.print (" (0x");
      Serial.print (i, HEX);
      Serial.println (")");
      count++;
      delay (1);
    }// end of good response
  } // end of for loop
  Serial.println ("Done.");
  Serial.print ("Found ");
  Serial.print (count, DEC);
  Serial.println (" device(s).");
}

void loop() {}

Then I got the following result:

I2C scanner. Scanning ...
Found address: 40 (0x28)
Found address: 85 (0x55)
Done.
Found 2 device(s).

If it is correct, the chip now communicates with the Arduibo via the chip address 0x28 or 0x55.
Now I have tried to read out the chip and have the following result with this code:

#include <Wire.h>

const int tonerChipAdresse = 0x28; //0x55

void setup() {
    Wire.begin(); 
    Serial.begin(9600); 
}

void loop() {
    // Read data from the toner chip
    byte daten[8];
    Wire.beginTransmission(tonerChipAdresse);
    Wire.write(0); 
    Wire.endTransmission();
    Wire.requestFrom(tonerChipAdresse, 8); // reading 8 Bytes 
    for (int i = 0; i < 8; i++) {
        if (Wire.available()) {
            daten[i] = Wire.read();
        }
    }

    // Display data read out on the serial console
    Serial.print("Data from chip: ");
    for (int i = 0; i < 8; i++) {
        Serial.print(daten[i], HEX);
        Serial.print(" ");
    }
    Serial.println();

    delay(1000); // Wait 1 sec
}

Result:
Data from chip: 67 0 36 FD FD FD FD FD

I don't know what this data means. Maybe someone can help me

Why do you think printer companies are so stupid that they will allow any newbie with an Arduino board to rewrite their chip?

1 Like

I moved your topic to an appropriate forum category @kriesenmanager.

In the future, please take some time to pick the forum category that best suits the subject of your topic. There is an "About the _____ category" topic at the top of each category that explains its purpose.

This is an important part of responsible forum usage, as explained in the "How to get the best out of this forum" guide. The guide contains a lot of other useful information. Please read it.

Thanks in advance for your cooperation.

Thanks, I am a newbie <3

1 Like

We copied a new toner chip then programed that into the chip on the old toner chip. If we could not program it we replaced it, worked most of the time. We had an advantage the chip was labeled.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.