Subaru Impreza GC8 & RS Forum & Community banner

1 - 20 of 186 Posts

·
Registered
1999 Silverthorn Impreza RS
Joined
·
165 Posts
Discussion Starter #1 (Edited by Moderator)
Warning! Modification of a vehicle odometer for fraudulent purposes is against the law! Check your local laws before proceeding. Make sure you have contacted your local law enforcement and government for additional steps, licenses, forms, etc. required to complete this procedure legally.

This guide is aimed at individuals who have swapped in different digital gauge clusters and would like to match their odometer to the actual mileage of their vehicle. I will be focusing on the V5/6 cluster with the solid PCB. I haven’t handled a soft-back V4 cluster so I cannot comment on the differences. Newer clusters from a GD should be the same as a V5/6, but I cannot confirm yet.

This modification is a little on the difficult side. You should be proficient at soldering and have a general understanding of electronics, programming and hexadecimal math.

I have not perfected the math for coding the odometer chip. While I can get the mileage close, I cannot program the chip exactly to some numbers.

Required Tools:
  • Flat head screwdriver
  • Soldering Iron and solder
  • De-soldering tools: Copper braid or a solder-vacuum
  • Pliers
  • A pen
  • Personal computer with a serial port
  • Microwire serial programmer (schematic included)
  • Serial programming software (Such as PonyProg2000: PonyProg - Serial device programmer )

Step 1: Extraction.

The first step is to remove the odometer memory chip from the gauge cluster. This is the most difficult part of the entire project. Start with a cluster removed from your car. I won’t cover removing the gauge cluster.

Remove the rear plastic cover by lifting the ten tabs around the side, and pressing back on the three ‘center’ tabs on the back. A slotted screwdriver helps with this.


Once you have removed the rear cover, you now have to free the stepper motors from the PCB. Locate the four motors. I have circled them in the picture. Using the screwdriver and the pliers, pry back the two tabs on each motor. Be careful not to scratch any traces nearby.


Using a ballpoint pen, push gently on each motor, pushing it away from the board. This is to free the motors a little so they come off easily when you remove the PCB.

Remove the circuit board. You may have to push back the three plastic tabs. If the stepper motors are still stuck onto the board, you can try wiggling the board a bit or push the motors away with a pen.

Once the board is free from the rest of the gauge cluster, you can start to remove the odometer memory chip. First locate the chip. I have circled here in the picture.



In most cases it should be a 93C56EN. You must now de-solder the chip. There are eight connections to the PCB. I have marked the points in the picture. I used a solder vacuum, but use whatever you are most comfortable with.

Once you have the extracted chip, you can start with the programmer.
 

·
Registered
1999 Silverthorn Impreza RS
Joined
·
165 Posts
Discussion Starter #2 (Edited)
Step2: Programmer.

Shown here is one of the most simplistic Microwire serial programmers one can build.


The following components are used:

  • 3x 5v Zener diodes
  • 3x 4.7k ohm resistors
  • 2x 47uF electrolyte capacitors
  • 2x 100 mF ceramic capacitors
  • 3x high-speed diodes (1N4148)
  • 1x 5 volt regulator, suggested LM2936Z
  • 1x 8-pin DIP socket
  • 1x DB9 male serial jack

My completed programmer looks something like this:


Step 3: Decoding.

Install and launch PonyProg2000.
From the SetUp menu, choose Interface Setup.

You should have the I/O port set as:
  1. Serial
  2. SI Prog I/O
  3. Which ever port you connected you programmer to.
  4. Leave all the check boxes unchecked.
Click OK!

From the chipset dropdown, choose MicroWire 16 eeprom and the 9356 chip.

Insert your odometer chip into the programmer, and connect the programmer to your computer.

From the command menu, click the Read option.
You should now be presented with a memory dump of your odometer chip.
 

·
Registered
1999 Silverthorn Impreza RS
Joined
·
165 Posts
Discussion Starter #3 (Edited)
Step 4: Encode Chip

Looking at the memory dump from your odometer chip, the lines we are interested in are 000060 and 000070.

The mileage is encoded in two hexadecimal octets. The two octets have an inverted checksum.
These four octets are duplicated four times per line, for a total of eight copies.

In my case, I have 20 1B DF E4 duplicated eight times.
My actual mileage is contained in 20 1B. The DF E4 is the inverted checksum.

Each digital is a multiplier.
  • The first digit is a 65,536 multiplier.
  • The second digit is a 4,096 multiplier.
  • The third digit is a 256 multiplier.
  • I haven’t quite figured out the fourth digit, it appears to loop based on an extra multiplier.

So far I can’t figure out how to get even numbers on the odometer. If others would like to post up their mileage, let’s see if we can figure out exactly how to encode the values.

I haven't figured out the details, but the following table appears to work well enough:
Code:
0 = 15
1 = 95
2 = 223
3 = 143
4 = 159
5 = 207
6 = 79
7 = 31
8 = 191
9 = 239
A = 111
B = 63
C = 47
D = 127
E = 255
F = 175
In my case, 20 1B can be read as (2 x 65536) + (0 x 4096) + (1 x 256) + 63 which equals 131391!

Let’s say I want to change my mileage to 203,151. I would use 31 93.
(3 x 65536) + (1 x 4096) + 91 x 256) + 143 = 203151.

The checksum is found by inverting each digit.
In my case I get 31 93 CE 6C


For ease, the checksums can be found using this table:
Code:
0 - F
1 - E
2 - D
3 - C
4 - B
5 - A
6 - 9
7 - 8
8 - 7
9 - 6
A - 5
B - 4
C - 3
D - 2
E - 1
F - 0
 

·
Registered
1999 Silverthorn Impreza RS
Joined
·
165 Posts
Discussion Starter #4 (Edited)
Once you have your new value to encode, enable the Edit Buffer in PonyProg from the Edit menu. Click on each octet and make your changes.
Remember to repeat your value and checksum four times per line!

When done, issue a write command; select Write All from the Command menu.
To be on the safe side, verify that the write is correct, select Verify All from the Command menu.

If everything is good so far, it’s time to finish up.

You can now reinsert the chip into the gauge cluster and solder all eight points.
Reassembly is the reverse of disassembly.
 

·
Registered
02RS RIP, 91Stealth, 05STi
Joined
·
1,778 Posts
This is very interesting and seems to be alot of work.
 

·
Registered
RS, GF, SSx2, STI GDB
Joined
·
692 Posts
Confused at to whether you are using the serial connection and the adapter or just the serial connection?

Need more input.

LOL
 

·
Registered
2000 Impreza 2.5RS BRP Coupe
Joined
·
1,772 Posts
I am an ELET at LaTech and we are just now starting this... >_< this is quite facinating.. I love it...

I must say that is some good work.
 

·
Registered
1999 Silverthorn Impreza RS
Joined
·
165 Posts
Discussion Starter #14
Confused at to whether you are using the serial connection and the adapter or just the serial connection?

Need more input.
I am technically using serial, however I am also sinking power from the serial lines. You need the 'programmer' to power the serial eeprom and to protect the PC.

I am an ELET at LaTech and we are just now starting this... >_< this is quite facinating.. I love it...

I must say that is some good work.
Thanks! I have zero electrical education, I've just figured things out as I went.
Perhaps you could help me decode a few dumps to see if we can figure out the rest of the logic. I still can't get even numbers...

OK so when can we send you our clusters and get them reset???:)
If you want to cover shipping both ways, I need to see more hex dumps to complete this DIY. I just cannot warrant any work that I do however.
 

·
Registered
99 2.5rs
Joined
·
68 Posts
That's some awesome work man!

I notice in the picture of the back of the gauge cluster you have some wires on the top left connector. Are you using these for powering the cluster? Or do you have a "speedo healer"? I was working on converting a speedo from km/h to mph and the best thing I could come up with was intercepting the pulses from the sensor in the transmission where they come into the cluster (around the area with the wires in your picture, I forget which pins it's been a while) and using a PIC to multiply or divide the pulses.

If there was a multiple stored in memory somewhere that combined with the input pulses from the speedo, that determine the proportional ouput voltage to the speedo needle "stepper", changing another constant in memory somewhere might allow a very easy conversion from km/h to mph.

Any thoughts?
 

·
Registered
1999 Silverthorn Impreza RS
Joined
·
165 Posts
Discussion Starter #16
The wires are for powering the cluster. I also added a socket for the serial chip.

I have two 99 RS clusters, one from a USDM and one from a Canadian model... unfortunately I wiped the contents of the Canadian chip before I could read it correctly (don't use a Microchip PIC programmer, they say it supports a 93C56, but not the fairchild models at least).

It's very possible that there is a switch stored inside the eeprom to tell the MC to work in KM or Miles, it's also possible that the MC itself is different.

I cannot find any physical differences between my US and CDN boards, not even a reversed diode that could possibly be used as a trigger.

I should really build a pulse generator for this project. I have a bunch of PIC 16F690s, but I don't really know what I am doing with them.

Next step is to change the milage on my JDM STi cluster. That was the original purpose for this project. Once I dump the eeprom from there, I should have more data to work with.
 

·
Free!
01 RSTI / 03LeggyH6
Joined
·
6,934 Posts
That's some awesome work man!

I notice in the picture of the back of the gauge cluster you have some wires on the top left connector. Are you using these for powering the cluster? Or do you have a "speedo healer"? I was working on converting a speedo from km/h to mph and the best thing I could come up with was intercepting the pulses from the sensor in the transmission where they come into the cluster (around the area with the wires in your picture, I forget which pins it's been a while) and using a PIC to multiply or divide the pulses.

If there was a multiple stored in memory somewhere that combined with the input pulses from the speedo, that determine the proportional ouput voltage to the speedo needle "stepper", changing another constant in memory somewhere might allow a very easy conversion from km/h to mph.

Any thoughts?
I bought a JDM cluster so that I could have a DCCD readout for my Type R trans. I thought about getting the speedohealer but in the end I found a plug and play harness from IA performance. It works perfectly!!!

http://www.iaperformance.com/index.php?cPath=44_293_321_326

The next step is to correct the mileage....:)until then Ill keep updating my pacenotes lol
 

·
Registered
99 2.5rs
Joined
·
68 Posts
Yeah, the DCCD readout cluster is what got me started on this whole adventure too. I had seen those ia performance converters but at the time I was in super-geek mode fooling around with PIC's and programming and stuff so I was basically trying to make my own.

This thread resparked that interest when I saw that you could reprogram the EEPROM.

Please post up if you find anything in the EEPROM about mph/kph.
 

·
Registered
2005 STi
Joined
·
4 Posts
Hello and I first want to thank you for your work on reprogramming the WRX and 2.5RS cluster mileage. I am trying to recalibrate an STi cluster but the code does not appear to have the same structure as the WRX or RS.

Have you had any success with the STi cluster yet?

Here is a screen shot from PonyProg of the STi EEPROM data:



As you can see, lines 060 and 070 are not the same as the other cluster data.

I appreciate any help you can lend!

Cory
 

·
Registered
1999 Silverthorn Impreza RS
Joined
·
165 Posts
Discussion Starter #20
Interesting Cory,

What year is that cluster from?

What make and series is the EEPROM?


I personally haven't looked at anything beyond the GC clusters that I have.
 
1 - 20 of 186 Posts
Top