How to increase the tachometer limit to 9000 RPM

Started by bobo83, February 6, 2026, 13:48

0 Members and 1 Guest are viewing this topic.

bobo83

In preparation for my 2zz swap, I decided to tackle the tachometer 8k rpm display limit and found a way of achieving this without any physical alteration to the speedometer.

How the tachometer works
The TACH signal that arrives at the dash is a square wave made of two pulses for each full revolution of the crankshaft. This signal is passed through to the main integrated circuit on the board, which counts the pulses and drives the air core gauge motor.

The main integrated circuit is Denso branded and is not reprogrammable. The board also contains an EEPROM, a small memory chip that stores the long-term data such as the mileage and the board config.

The exact format of the EEPROM data is not public, but through experiments I found that modifying some EEPROM data increases the tach rpm limit to 9k. The scale of the readings can also be altered. This is a purely software modification that requires no physical changes to the printed circuit board.

How to increase the tach rpm limit to 9k
The first thing you will need is an EEPROM programmer compatible with the 93C46 chip (5V). My experience with cheap Chinese programmers advertised as compatible, such as this one, was not great. These cheap programmers claim to be 5V compatible but in practice they are 3.3V only.

I ended up getting the XGecu T48 programmer, which can be had on offer for about £35 on Aliexpress. These hook clips were used to attach to the EEPROM in-circuit (without de-soldering it from the board).

The connection EEPROM <---> programmer looks like this (it can also be done from the back):


Your EEPROM data should look similar to this:


The 3 bytes at the offset 0x5B (the green ones in the screenshot above) control the scale of rpm display. Increase this value (it's one byte repeated 3 times) and the needle travels more for the same amount of rpm. Using a relatively high value made the tach needle travel nearly 360 degrees.

The two bytes at the offset 0x5E (the red ones in the screenshot above) control the displayed RPM limit. I have mostly focused on the first byte (with the initial value of 0x77) and tried many many values. Only two behaviours were observed: the limit was either 8k or 9k.

To increase the tach rpm limit to 9k, change the value of the byte at the offset 0x5E (the first red one in the screenshot above) from 0x77 to 0x80.

Here is a demo of the final result:


Disclaimer
All my tests were conducted indoors by using a simulated TACH signal. I see no reason for this mod not to work on a 2zz car.

AdamR28

Love this! Thanks so much for sharing your time and knowledge.

atlex

Massive Awesome Public Service Sir. I SALUTE YOU.

[I have two cars that need this.]
Touge Touge - Mazda - Toyota, etc.

Ardent

#3
I have no need for this, but doff my cap in appreciation of knowledge, ingenuity  and sharing.

Excellent.

I wonder what other creative options you might come up with.

shnazzle

#4
Top notch!! I love a good bit of engineering in action

There are a number of signals that the use of a standalone ecu seems to fail to communicate to the OEM dash. I believe tach was one of them.
Seems like a bit more fiddling could lead to a custom eeprom that could get around this :)
...neutiquam erro.

bobo83

Quote from: shnazzle on February  7, 2026, 11:40Top notch!! I love a good bit of engineering in action

There are a number of signals that the use of a standalone ecu seems to fail to communicate to the OEM dash. I believe tach was one of them.
Seems like a bit more fiddling could lead to a custom eeprom that could get around this :)

Unfortunately the main microprocessor of the dash cannot be re-programmed so there is limited wiggle room in what can be achieved. I am working on a module that would translate CAN <-> MPX so that the dash could be used with standalone ECUs, but it's purely for fun, as such modules already exist on the market.

simonrobinson

#6
Well bobo83 that is absolute genius! I never would have guesses it would be a configurable block in the eeprom. I'm guessing toyota have used the same firmware for lots of clusters of the same era.
Did you compare the eeprom data from celica cluster?
I'm going to have a play with this.

@shnazzle  I have ECU master driving my factory rev counter, that is simple as its just a pulse input, and I have oem cluster with a working temp gauge, charge light and oil pressure light. The bean/mpx is very easily sent to the cluster, there are a few github repos with the project, and if you want one I made 20 pcbs so you can have one if you need one.

shnazzle

Quote from: simonrobinson on February  7, 2026, 14:10Well bobo83 that is absolute genius! I never would have guesses it would be a configurable block in the eeprom. I'm guessing toyota have used the same firmware for lots of clusters of the same era.
Did you compare the eeprom data from celica cluster?
I'm going to have a play with this.

@shnazzle  I have ECU master driving my factory rev counter, that is simple as its just a pulse input, and I have oem cluster with a working temp gauge, charge light and oil pressure light. The bean/mpx is very easily sent to the cluster, there are a few github repos with the project, and if you want one I made 20 pcbs so you can have one if you need one.
Ah things have moved on then since I had the ecumaster. "Back then" we had to have the stock ecu controlling some things and the ECUmaster the rest
...neutiquam erro.

simonrobinson

Excuse my poor photoshop skills, but we need to make something like this..


It could be just a transparent sticker that just adds the dots, lines and 9. I've scanned the fascia so if anyone wants to scan PM me.

bobo83

Quote from: simonrobinson on February  7, 2026, 14:10Did you compare the eeprom data from celica cluster?

Good idea! I haven't done it yet, but will probably do it as well at some point.


Quote from: simonrobinson on February  8, 2026, 09:59Excuse my poor photoshop skills, but we need to make something like this..


It could be just a transparent sticker that just adds the dots, lines and 9. I've scanned the fascia so if anyone wants to scan PM me.

Making something that would look good in daylight should be not too hard, but making something that passes through light in the same way as the other elements, would require a custom dial face.

simonrobinson

Wonder if we could cut out some holes from the original one with a 3d printer running one of these little laser cutter jobbies. Wonder if it would burn tidy edges, then the stuck on graphics would glow properly, bit of clear on the back to bridge it. Maybe a dial firm will step up and make a fascia if they know there is a market for them.

I'm still in awe you've cracked this!

Ardent

@Topdownman

I recalll you fitting some custom dial overlays, can you recall the source, do you know if some went up to 9,000?
And do I recall one element of it was a PIA. The stop return pin needle rest thing?

Ardent

 I was looking for pics of Simons's jazzy dials, but found the PIA post instead.
https://www.mr2roc.org/index.php?msg=825873

Topdownman

I got the dials from this firm but they no longer list the Mr2.

https://moman.pl/en/687-toyota-tacho-replacement-mph-kmh-gauges-dials?SubmitCurrency=1&id_currency=4

Camil Sofrag at T4 customs made the later one I had in the silver car, not sure if he still does them though.

@canny_eu
"Racing" tax disc holder (binned), Poundland air freshener, (ran out), Annoying cylinder deficiency,  (sorted),
Winner of the Numb bum award 2017
Readers Ride

06 not V6 readers ride

simonrobinson

Prototype cluster number 1



bobo83

Looks very good! Are the edges of the sticker visible at all ?

simonrobinson

There is no edge of the sticker, it uses some clever printing where it basically just makes the graphics, its called UV DTF printing. There is no backing once peeled... here is a video of applying this type of artwork:-

https://www.youtube.com/shorts/laXp0GJFyl0

And here is what it looks like on the clocks....




But obviously it doesn't back light, but its a quick and easy entry into a proper rev counter swing.

simonrobinson

#17
To understand what bytes do what I thought documenting them out was a good move.



I have a whole stack of clusters here of all different types, I have put quite a few hours into this!

I still do not understand the bytes that control the tacho. It seems "77" make it run 8k, and pretty much any other value switches it to 9k. Part of me wonders if we are just breaking it somehow with that byte, and the FBFBFB AFAFAF bytes are related.   

AFAFAF is the Tacho needle scaling, if you change that to AAAAAA it sweeps to about 9500rpm and 9C points to about 11000rpm, but with the 9000rpm signal. It does not effect the 9000rpm maximum rev pulse input limit.

I think dumping some Celica clusters would be smart, 1zz v's 2zz clusters.