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:



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:



        A picture showing the code plug number from my car:



For the electronically enlightened:


        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:



  • 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.

If you would like to add any comments, remarks and/or corrections to this procedure, feel free to email Mike Oswald and we'll put it on our si te. Share your experiences with us so others may benefit from it.