Odometer stuck at 299 960 km
Written by Johan735
Document history:
# 23 Jul 2004 - Upgraded with more information on the different instrument
clusters and more Atmel code plug information.
# 12 Oct 2004 - Fixed incorrect info about the back plate covers. Thanks for pointing them out Oahu Steve!
Problem: The odometer stops at 299 960 km or
300 000 miles.

Models: All E32 models manufactured before 02/89.
This also applies to E34 models with a "high" version of the cluster. If your
E34 has a check control display it's the "high" version.
There are a couple of ways of identifying the
affected clusters:
- Push the odometer reset button on the
cluster while turning the key from I to II. On the affected clusters it will
show a number. On the newer clusters it won't show anything, but if you press
the other button while turning the key you will see a self test. This test
will start with some information on your check control display. More on this
test later.
- The back cover of the affected
cluster is grey. The newer clusters have a blue or a white cover.
- There is a code plug in the brown plug that
goes into the older cluster. The newer cluster has the code plug integrated in the
back
of the cluster.

- The speedometer shows a number behind the K. The newer unaffected clusters just have EG on them. My guess is that
the EG stands for "electronisch geregelt" which is German for electronically
controlled. The newer clusters also show a K index in their test
mode.

Background: The specific vehicle information
is stored inside the code plug. The information inside the plug is: the fuel tank
capacity, automatic or manual gearbox, electronic automatic gearbox with S/E/M
switch or standard automatic gearbox (I've only seen these on the 730i 6 cylinder),
the fuel consumption calculation data, the temperature indicator offset and off
course the mileage of the car.
There are three versions of the instrument
cluster all with their own code plug. You can't interchange the code plug in between the different versions, but you can swap the entire cluster. Do be
advised when you take the old cluster you need the code plug that's mounted
inside the brown plug.
| Application date |
Back plate colour |
Code plug type |
Size |
Extra information |
| start ->02/89 |
Grey |
HML 075 |
2048 bytes |
No self test or diagnosis via Modic. Stops at 299960.
code plug is non-standard |
| 02/89 -> 09/90 |
White |
PIC 93C46 |
1024 bytes |
Self test + diagnosis via Modic. Code plug is standard EPROM |
| 09/90 -> end |
Blue |
PIC 93C56 |
2048 bytes |
Self test + diagnosis via Modic. Code plug is standard EPROM |
Of the failing odometer in euro cars I've heard about 99% stop at 299 960 km. US
cars do seem to make it to 300 000 miles before freezing up.
There is no clear reason
for me why the counter stops. The chip's internal representation is 40km higher making it 300
000 which still doesn't give any clue as to why it stops.
As mentioned before the newer clusters have a self test. On the one I
have with a blue cover you can start the self test by pressing the right
button while turning the ignition on. Invoking this test will show you the
following:
The BMW number. Probably the number starting from the 1st ever BMW
manufactured.

The
code plug number.

The K-Zahl. This has something to do with the speedometer correction as it's
completely electrical on the new clusters. It's actually the same number as
printed on my older cluster. Both came from 735i's.

The F.G.Nr. These
are the last seven digits of your VIN.

The SW version
inside the cluster.

The AND Index.
This is the "Änderungs-Index" or change index. Thanks for the information Wolfgang!

Solutions: Of course we all hate having
parts in our cars that do not work. And a failing odometer is really irritating
as you have no idea what the mileage is of the car. Personally I don't think it
makes a difference for the value of the car as 300K is more then most people care
to see when they buy a used car. The state is much more important if you ask me. So don't leave a
car standing because the mileage is unknown (do try to haggle the price down ;-)
)
There are a couple of options you can explore to get the odometer to start
counting again:
Options for people who think electronics are complicated:
- Get used to it. Write down the mileage of the trip counter on the fuel
receipts and add these up every month so you can at least account for the
mileage when selling the car. This is a very cheap option.
- Get a used code plug out of a car with the same configuration that has some life left in it i.e.
it's still under 300k. A used code plug should be 5 to 20 Euro/US$. Have a look around the scrap
yards. Do check that it comes from the same type of vehicle. Getting the plug from a car with a manual box will
disable the
automatic gearbox program, getting a plug from a v12 into a R6 will mess up
the fuel consumption,...etc. Don't try looking for the exact same code plug number as these numbers are unique.
- Get a new code plug from the dealer. This will start the counter back
at zero. You will need the VIN number of your car and the code plug number.
The number can be obtained by turning the key from I to II while holding
the odometer reset. The number is also printed on the code plug itself.
This will set you back about 110 Euro/US$. This should not active the red
LED that indicated the odometer has been tampered with.
A picture showing the code plug number from my car:


- Have the plug reset to zero. You've probably seen ads in the paper
that got your petrol enriched blood boiling: "Mileage adjustments for
all cars". Well time to call them. As the affected code plug is a
microcontroller instead of a standard serial EPROM you can't write to
the data area directly. So most of these guys who claim to have the
equipment can't do this. So they have to send it out to someone else.
If that's the case don't bother as this will make it expensive. Before I had a full
understanding of this problem I had my plug reset for 70 Euro/US$. Which was
way over the agreed price of 45 Euro/US$.
- Get a newer type cluster with code plug and all. Install this into your
car and then you can choose to have it reprogrammed to 300K. This is the nicest way to solve
the problem. And again see that the code plug comes from the same car
configuration as your own. You can find a used cluster for 16 Euro (fleabay)
to 100 Euro (breakers).
For the electronically enlightened:
- Reset the plug yourself: I haven't checked it yet, but I was told
by someone you can clock in a speed signal of 100 kHz. This equals a
very high speed (about 60 000 km/h). The plug should then store the
mileage in it's RAM. As it can't write settings over 300K in into
the ROM area 300K you will have to wait until
it's been around 1 000 000 km. It should then write 000 000 back into the
odometer. This costs about 0 Euro. Highly recommended. If you have
tried this and it works I LOVE to hear from you!!!
- Build your own code plug based on an Atmel 90S2313
microcontroller. There is
some very interesting information about the code plug on a Russian
site called Diakom. As I can't read Russian I never saw this site
until I found an automatic translation of the site on a French E32
site from J. Weiss have at look at his page here:
Combiné d'instruments BMW E32/E34
(Merci beaucoup!!). Even though my plug was already on it's way to
be reset I had to try this as I love electronics :-) The
translation of the website is mirrored locally here: here
Of course nothing ever seems to
work as people tell you so I've ran into a couple of problems:
- The schematic on the Diakom page speaks of pin numbers
over 20 while the plug only has 18 pins. This was easily
solved when I found out the referred pins numbers are the
pins of the HML075 IC. Anyway the code plug has pins 4-12 on
the lower row and the higher row has 16-4.

- Nothing showed up at all. Leaving out resistor "R102"
on the schematic solved this.
- Nothing but garbage showed up on my display...Mea
culpa: I forgot to program the EPROM area of the Atmel
with an odometer setting. The fun part was that it did
count in a strange way:


- The odometer started counting very strangely. In 37
km the odometer had covered 100 km. And that was the only
change in the odometer. So it's save to say there is an
error in the assembler code. I've fixed this (at least I
think I did ;-) ). My code is over
here. And yes I've thought of getting the odometer to count
backwards :-)


- After fitting the plug to the car the service
interval information kept resetting itself and every
now and then a "kuhlwasser temp" or coolant
temperature error came up on the display while there
was nothing wrong. The solution to this problem came
from Fred a member of the 7er.com/forum. Change pin 7 and 9 (PD3/INT1 and PD5/T1) on the Atmel.
- Now the cluster still behaves strange. It still
doesn't show the transmission program
(Sport/Economy/manual) and the fuel consumption is
twice the actual value (that or the Atmel runs on
petrol :-) ) So I still need to copy the information
from the original code plug. When I get the time and
urge to play with it again I'll write a piece of code
that allows an Atmel to read the code from the
original plug. If you want to have a go at it the timing is explained on the
Diakom
webpage.
Some results from the Atmel building and tinkering:



Some pictures of the Atmel code plug and it's placement in my cluster:

My test setup on my
desk with the extra instrument cluster from the 735iL
parts car (also stuck at 299 960 km). In the picture you
can see: a power supply, an instrument cluster, two
code plugs, a small circuit that give a speed pulse from 140
km/h to 250 km/h and the Atmel code plug connected to my pc
+ power supply for programming.

I used an assembler from Atmel's homepage and a little program called "Sp13" to
download the code into the Atmel under DOS or Linux.
Thanks to everybody who
supplied me with extra information!
Story by Johan735.