Reverse Engineering att emulera bläckpatroner för skrivare Epson (2 / 8 steg)
Steg 2: signaler
Jag fick ut min lödkolv, en bandkabel (brukade vara en IDE-kabel från en gammal dator) och en kniv. Jag skär 6 tråd bred bandkabel ca 30cm lång, strippad ändarna omsorgsfullt med kniv (mycket lättare att använda en hobbykniv för att beröva en bandkabel än ett par clippers eller tång), och lödda dem på kretskortet som kompisar med bläckpatronerna.
Jag klädde de andra ändarna och lödda på vissa stift så jag kunde koppla in dem i min logik analysatorn.
Efter plugging i logik analysatorn i kretskortet och ta en titt på signalerna, fann jag att omedelbart SCK, SDA ser inget som I2C, jag är ganska säker på att Epson måste ha uppfunnit sina egna serial protocol för att prata med EEPROMs inuti bläckpatronerna.
Vad jag funnit är att CVDD blir drivs upp och strax efter, CRST och CSDA gå upp på exakt samma tid strax följt av CSCK som pulser. CSDA ändras på stigande kanten av CSCK och jag antar det får läsa på faller kanten.
CSCK är seriell klocka
CSDA är seriella Data
CRST återställs
och CVDD är makten
Ser ganska lätt men jag ville veta mer om detta protokoll, var där alla adresser som skickas?
Jag vände upp samplingsfrekvens på min logik analysatorn och funnit att det finns 4 klockan cykler, en paus, då 8 cykler, paus, 8 mer och så vidare. De 4 klockcykler i början gav mig idén att de första fyrana kan möjligen vara en 4 bitars adress av bläckpatronen. En hel del information var fortfarande okänt om detta protokoll. Så gjorde jag lite forskning!
Googla runt hittade ingenting om detta protokoll var det nästa bästa stället att leta i patent.
Ja, patent, jag sökte för "Epson SDA SCK RST minne eeprom" på http://www.freepatentsonline.com/ och en av de patent som jag hittade (US7660008 ) innehöll exakt vad jag var ute efter. Det beskrivs på SCK, SDA, RST och VDD i protokollet.
Jag ska bespara dig besväret och påpeka vad jag hittade:
1. flödesschema diagram som beskriver vad värd och slav gör
2. en timing diagram över protokollet
3. de första 3 bitarna är en 3 bitars adress följs av en läsa/skriva lite (Läs = 0, skriv = 1)
4. adress counter alltid börjar på 0x00 och ökar med 1 varje klockcykel (detta måste innebära skriver det i bitar, inte bytes)
5. nu första går låg, EEPROM stannar allt och återställer sig själv
6. det finns 252 bitar att läsa, de sista 3 bitarna (faktiskt de är från början) är adressen till bläckpatronen.
Med hjälp av vad jag hade hittat, bestämde jag mig att börja skriva kod