Fighting the
Epson ink chip and winning!! This project continues at http://nerdipedia.com | ||
---|---|---|
|
||
What is a Intellidge ink chip. | ||
| ||
This is the sort of thing I got. No
protocol I ever seen. Obviously synchronous with bi-directional
data, very short format. I was confused a little by how short it
was - because I expect much better precision for the ink
level. | ||
Convert to binary and some patterns emerge. Below is one chip being read at startup, there are 7 accesses one for each chip. Only 3 block have data – the other chips must be hooked to different data lines.
| ||
Below is the complete shutdown stream. Again we can only see 3 chips from here.
| ||
| ||
The first 3 bits appear to be the chip address, I guess the next is a read/write select. I used a AVR mega323 to detect the start of the serial transmission look for the address of chip1+read (black apparently) then pull data low for 6 clock edges. I'm sure I can reset 3 of the chips by tapping into chip1 signal. Reseting the rest will mean tapping into at least one more. The current set up is for experimentation only – it is not “the real thing”. Shorting the data to ground may be a bit drastic but it is only for a very brief time. I hoped the data line would be open collector but this doesn't seem to be the case. |
Tuesday
1'st October. - reading the chip without the printer.
I
don't really need to do this but I wanted to see if I really
understood the protocol. I wrote code for the micro to act as a
master for the chip. I knew the chip was a low voltage part but I
hoped it would be 5 volt tolerant and save me some trouble. After
getting no sense out of two chips and confirming the printer couldn't
read them either I assume I've killed them. I went shopping and
bought 3V3 zeners and 330R resistors to limit the output of the micro
port to 3V3. Data started to flow. The micro would not read it
because is was below the input threshold so I added a pull up to the
data pin (on the micro side of the 330R current limiting resistors so
the inkchip didn't see 5V). I could then read the contents of the
chip.
I then spent the afternoon trying to write to it without any success.
Wednesday 2'nd October – reseting the chip without the printer.
After sleeping on it, I wrote a better trigger routine for my data-logging program so I could get a better look at what the printer did differently. The trace revealed all.
What
you see here is the printer starting a write sequence at normal speed
then after transmitting the address and write bit the clock (2'nd
from bottom) slowed down to around 1 Khz. I wrote a “slow
write” routine and presto I can write to it. My code simply
writes zeros to the first 8 bits in the chip. I repeat the process 7
timse using every chip address. The proof was to take an empty
cartridge - zap it and feed it to the printer. The printer said yum
and did it's charging thing - then showed a full cartridge on the
status monitor. I won't bore you with another image of it. A chip
reseter could be made with a $2 micro and not much else – the
socket is a problem. Most people can't program micros but for those
who can it is trivial now that the protocol is knonw. My hacked about
code is too ugly to show here.
Alan Chan has sent me this hoping it would help people ID their chips.