Este proyecto utiliza Arduino para restablecer el chip dentro del cartucho de mantenimiento MC-G02 de su impresora Canon, de modo que el chip vuelva a estar como nuevo y reutilice el cartucho una y otra vez.
Versión de EE. UU.: G620/G1220/G2260/G3260
Versión china: G580/G680/G1820/G2820/G2860/G3820/G3860
(y otras versiones en otros países..)
Conozca el uso básico de Arduino, como cargar un programa en Arduino y ejecutarlo, leer la salida del Serial Monitor.
Retire el chip del cartucho y conéctelo a Arduino.
El programa de escritura es literalmente el reiniciador del chip. Pero para poder utilizar el programa de escritura, necesitas una rom.
Para obtener una rom, necesitas:

Esas dos resistencias son de 10k ohmios y se utilizan como resistencias "pull-up". El circuito es sugerido por [1].
Si todo es como se esperaba, obtendrá el siguiente resultado de Serial Monitor (use velocidad en baudios 9600):
Start Dumping...
Below is your rom:
const unsigned char my_rom1[] PROGMEM=
{
0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,...,
...
...
}
Entonces el {0xXX,0xXX,0xXX,0xXX,...}material es la rom que tiraste. Cada 0xXX representa un byte; debería obtener 2048 de esos bytes. Ya que el chip es una eeprom de 16Kbits. Guárdelo para usarlo en el futuro, mejor con el const unsigned char my_rom1[] PROGMEM=prefijo, para poder copiarlo completo cómodamente.
Si obtiene algo más como Wire Not Ready!!!, entonces debe haber algún problema. (por ejemplo, su cable no está conectado correcta o sólidamente).
cárguelo en Arduino y ejecútelo. Si todo es como se esperaba, obtendrá el siguiente resultado del Serial Monitor (velocidad en baudios 9600):
Start Writing Rom...
current writing page:0
current writing page:16
......
current writing page:112
Write Done!
Start Dumping for Verification...
Check if this dump matches with before by yourself:
const unsigned char my_rom1[] PROGMEM=
{
0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,...,
...
...
}
El programa primero escribe la ROM volcada en el chip y luego inicia un volcado de verificación. Al menos necesitas hacer una verificación visual rápida del valor: el volcado de verificación debe ser idéntico a la rom que usaste para escribir. Para mayor seguridad, se sugiere asegurarse de que esos valores sean idénticos mediante algunas herramientas de diferenciación (p. ej. vimdiff).
Análisis básico del contenido del ROM.
Los 2048 bytes del chip están organizados en seis secciones distintas:
Sección 1 - 64 bytes .
Bytes 0-1: no estoy seguro de cuáles son (posiblemente dígitos de suma de verificación).
Bytes 2 a 11: los siguientes 10 bytes son el número de serie de 9 caracteres del cartucho (como valores little-endian de 16 bits) rellenados con un byte 0x00.
Bytes 12-13: no estoy seguro de cuáles son (posiblemente dígitos de suma de verificación)
Bytes restantes, todos 0x00
Sección 2 - duplicado de la sección 1
Sección 3 - 320 bytes
Bytes 0-1: 0xA5A5 en un cartucho nuevo, seguido de todos los 0x00
Bytes 0-257: datos hexadecimales seguidos de 62 0x00
Sección 4 - duplicado de la sección 3
Sección 5: 640 bytes
Bytes 0-1: 0xA5A5 en un cartucho nuevo, seguido de todos los 0x00
Bytes 0-513: datos hexadecimales seguidos de 126 0x00
Sección 6 - duplicado de la sección 5
Cada sección tiene bytes de suma de comprobación (¿el primero o los dos últimos bytes?), de modo que si agrega contenidos como números little-endian de 16 bits, cada sección suma 0xA5A5, ignorando cualquier desbordamiento.
Las secciones duplicadas son, presumiblemente, para mitigar la corrupción de datos. Hay exactamente el doble de datos en la sección 5 que en la sección 3, por lo que imagino que estas son tablas que registran algo sobre cada vez que se deposita tinta en el cartucho. También sospecho que la primera advertencia que se le da al usuario sobre el reemplazo del cartucho se da cuando se alcanza un cierto número de entradas y la impresora deja de imprimir por completo cuando las mesas están llenas o casi llenas.
Lo que muchos venden por todos lados y acá les comparto la ROM vacía.
Comparto esto porque:
Destesto la obsolescencia programada,
La gente siempre lucrando con las cosas
Acaban de borrar 2 repositorios con lo mismo en GitHub por compartir material protegido con derechos de autor y en los cuales no hay nada de derechos propietarios y si el moderador examina, verá que no tiene nada de propietario algo que el mismo autor ha compartido.
Creditos al autor Wangyu al publicarlo en la red, por su aporte, yo solo lo comparto
¿Qué es el cartucho de mantenimiento?
El cartucho de mantenimiento es un cartucho que se encuentra dentro de algunas impresoras, no se limita a Canon, es el lugar donde se almacenan las "tintas desperdiciadas". Este cartucho eventualmente se llenará y su impresora se negará a imprimir más. Entonces normalmente tendrás que comprar uno nuevo de Canon.¿Qué es MC-G02?
MC-G02 es un tipo de cartucho de mantenimiento que se utiliza en las impresoras recientes de la serie Canon PIXMA G, que incluye:Versión de EE. UU.: G620/G1220/G2260/G3260
Versión china: G580/G680/G1820/G2820/G2860/G3820/G3860
(y otras versiones en otros países..)
¿Qué le impide reutilizar el cartucho de mantenimiento MC-G02?
Puede desmontar la impresora de cartucho MC-G02 con bastante facilidad y puede limpiarla usted mismo y eliminar la tinta acumulada en su interior. Canon no utiliza un sensor para detectar cuánta tinta hay dentro del cartucho; en su lugar, hay un chip en el cartucho, que se comporta como un "contador" y aumenta cada vez que se utiliza el cartucho. Incluso si ha limpiado la tinta desperdiciada dentro del cartucho, el contador dentro del chip no disminuirá y la impresora seguirá negándose a imprimir.Volver a este proyecto
Este proyecto le permite "restablecer" el contador dentro del chip mencionado anteriormente. Entonces podrás reutilizar el cartucho MC-G02.Uso
Requisito previo
Para utilizar este proyecto, necesita:Conozca el uso básico de Arduino, como cargar un programa en Arduino y ejecutarlo, leer la salida del Serial Monitor.
Retire el chip del cartucho y conéctelo a Arduino.
Descripción general
Este proyecto consta de un programa de lectura (volcado) y un programa de escritura.El programa de escritura es literalmente el reiniciador del chip. Pero para poder utilizar el programa de escritura, necesitas una rom.
Para obtener una rom, necesitas:
- Consíguelo de otra persona que ya hizo el volcado, tal vez en Internet.
- volca una rom tu mismo.
Conecta el chip a arduino
Separe el cartucho de la impresora, retire el chip del cartucho y conecte los cables.



Esas dos resistencias son de 10k ohmios y se utilizan como resistencias "pull-up". El circuito es sugerido por [1].
Deshazte de la rom (si no puedes obtener una rom de otros)
Abra el programa interno sketch_hack_readcon Arduino IDE, cárguelo en Arduino y ejecútelo.Si todo es como se esperaba, obtendrá el siguiente resultado de Serial Monitor (use velocidad en baudios 9600):
Start Dumping...
Below is your rom:
const unsigned char my_rom1[] PROGMEM=
{
0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,...,
...
...
}
Entonces el {0xXX,0xXX,0xXX,0xXX,...}material es la rom que tiraste. Cada 0xXX representa un byte; debería obtener 2048 de esos bytes. Ya que el chip es una eeprom de 16Kbits. Guárdelo para usarlo en el futuro, mejor con el const unsigned char my_rom1[] PROGMEM=prefijo, para poder copiarlo completo cómodamente.
Si obtiene algo más como Wire Not Ready!!!, entonces debe haber algún problema. (por ejemplo, su cable no está conectado correcta o sólidamente).
Nota
EssugirióEs obligatorio volcarlo 2 veces y asegurarse de que los 2 volcados sean idénticos, en caso de que obtenga un volcado dañado.Nota 2
Se recomienda encarecidamente cargar el sketch_hack_readprograma en su Arduino antes de conectar el chip del cartucho al circuito. Para que esté seguro en el momento de conectar su chip, el programa que se ejecuta en arduino es el correcto.Escribe la rom volcada en el chip.
Abra el programa interno sketch_hack_writecon Arduino IDE, copie todo const unsigned char my_rom1[] PROGMEM={0xXX,0xXX,0xXX,0xXX,...}y péguelo en el lugar correcto del programa abierto en Arduino IDE (hay un indicador para ayudarlo a ubicar el lugar).cárguelo en Arduino y ejecútelo. Si todo es como se esperaba, obtendrá el siguiente resultado del Serial Monitor (velocidad en baudios 9600):
Start Writing Rom...
current writing page:0
current writing page:16
......
current writing page:112
Write Done!
Start Dumping for Verification...
Check if this dump matches with before by yourself:
const unsigned char my_rom1[] PROGMEM=
{
0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,0xXX,...,
...
...
}
El programa primero escribe la ROM volcada en el chip y luego inicia un volcado de verificación. Al menos necesitas hacer una verificación visual rápida del valor: el volcado de verificación debe ser idéntico a la rom que usaste para escribir. Para mayor seguridad, se sugiere asegurarse de que esos valores sean idénticos mediante algunas herramientas de diferenciación (p. ej. vimdiff).
Nota
Tanto el programa de lectura como el programa de escritura utilizaron [2] [3] como referencia durante la escritura.Todo listo.
El chip de su cartucho ahora está "restablecido". Inserte el chip nuevamente en el cartucho y conecte el cartucho a la impresora. (Es posible que desees limpiar/secar las tintas desperdiciadas en el interior antes de reutilizar el cartucho).Preguntas y respuestas
P: ¿Por qué necesito Arduino y conectar los cables? Escuché que se pueden restablecer los contadores de la impresora Canon simplemente presionando algunos botones de la impresora o usando el software "Serivice Tool".
R: Esos métodos sólo funcionan con impresoras antiguas. Hasta donde yo sé, para las nuevas impresoras Canon con MC-G02, por el momento no se conocen métodos tan sencillos.P: ¿Cuál es el chip dentro del MC-G02?
R: Para el MC-G02 que compré, está etiquetado como 416RT, STMicroelectronicsque en realidad es un M24C16-R, la hoja de datos se puede encontrar en el sitio web de ST[4]. Parece que también hay chips etiquetados como G16 4G16, pero la función del chip debería ser compatible con 416RT.P: ¿Este proyecto funciona para otros cartuchos?
Podría funcionar también para otros cartuchos, sin modificaciones o pequeñas modificaciones, siempre que se utilice un chip similar.Análisis básico del contenido del ROM.
Los 2048 bytes del chip están organizados en seis secciones distintas:
Sección 1 - 64 bytes .
Bytes 0-1: no estoy seguro de cuáles son (posiblemente dígitos de suma de verificación).
Bytes 2 a 11: los siguientes 10 bytes son el número de serie de 9 caracteres del cartucho (como valores little-endian de 16 bits) rellenados con un byte 0x00.
Bytes 12-13: no estoy seguro de cuáles son (posiblemente dígitos de suma de verificación)
Bytes restantes, todos 0x00
Sección 2 - duplicado de la sección 1
Sección 3 - 320 bytes
Bytes 0-1: 0xA5A5 en un cartucho nuevo, seguido de todos los 0x00
Bytes 0-257: datos hexadecimales seguidos de 62 0x00
Sección 4 - duplicado de la sección 3
Sección 5: 640 bytes
Bytes 0-1: 0xA5A5 en un cartucho nuevo, seguido de todos los 0x00
Bytes 0-513: datos hexadecimales seguidos de 126 0x00
Sección 6 - duplicado de la sección 5
Cada sección tiene bytes de suma de comprobación (¿el primero o los dos últimos bytes?), de modo que si agrega contenidos como números little-endian de 16 bits, cada sección suma 0xA5A5, ignorando cualquier desbordamiento.
Las secciones duplicadas son, presumiblemente, para mitigar la corrupción de datos. Hay exactamente el doble de datos en la sección 5 que en la sección 3, por lo que imagino que estas son tablas que registran algo sobre cada vez que se deposita tinta en el cartucho. También sospecho que la primera advertencia que se le da al usuario sobre el reemplazo del cartucho se da cuando se alcanza un cierto número de entradas y la impresora deja de imprimir por completo cuando las mesas están llenas o casi llenas.
Lo que muchos venden por todos lados y acá les comparto la ROM vacía.
Comparto esto porque:
Destesto la obsolescencia programada,
La gente siempre lucrando con las cosas
Acaban de borrar 2 repositorios con lo mismo en GitHub por compartir material protegido con derechos de autor y en los cuales no hay nada de derechos propietarios y si el moderador examina, verá que no tiene nada de propietario algo que el mismo autor ha compartido.
Creditos al autor Wangyu al publicarlo en la red, por su aporte, yo solo lo comparto