Connor

a space for my professional and personal development.

BMW E36 Z3 Cluster EEPROMs

Recently I’ve been interested in converting my analog dash board on my 2001 BMW Z3 into a digital dashboard using an arduino. Although this idea won’t really happen, I’d like to take a chance to at least explore a little bit. So I bought a used cluster off of eBay for ~$47 The only part I was originally planning to use was the front half of the dash board to take the dials out and put 5″ LCD screen while keeping the cutouts for the odometer, turn signals, warning lights, etc. That way I would be able to still use the original second half of the cluster to keep the original odometer rolling and VIN number. Curiously I was interested in what was inside the two EEPROMs. The E36 cluster has two EEPROMs, one which is detachable and is believed to store the mileage, and car-specific info such as the size of the gas tank, size of differential gearbox, transmission type, etc. According to realoem.com this EEPROM is described as the “CODING PLUG” and is shown below.


The plug is an enclosure for a Fairchild 93C46EN EEPROM. Upon connecting onto a TL866CS Minipro Programmer, I was able to read 128 bytes.

And its contents:
E36 mileage location
The content is similar to that of a M35080 EEPROM from an E46.
https://www.bimmerforums.com/forum/showthread.php?1709868-Hex-Offset-in-M35080-EEprom-E46
Twisted (if you’re using an editor other than the EEPROM’s built in) :
E36 odometer mileage twisted
The first two lines contain the mileage, it’s just a matter of learning the formula used to store it. Also there might be a checksum as well. I remember reading on a forum (no link, sorry) that after the first two lines the data contains vehicle specific integers and flags such as the differential gear size, gas tank capacity for fuel gauge, KPH or MPH, etc. No one has been able to decode them last time when I searched.
In order to gain access to the second EEPROM you will need to remove the black plastic shell as shown below. You’ll need to detach the front half with the back half. The white, blue, and black X connectors each have “clamps” which are holding the plastic shell, you’ll need to apply force and squeeze the pins inwards while pulling the shell away from the board without damaging it.

The data which was pulled off:
ST_M93S56_LM03114_275447KM.BIN

 

Examining the ST M93S56 EEPROM, the VIN number (IKE stores only the last 7 characters of the VIN) appears to have been coded as:
Alpha-numerical VIN: LM03114
LM 03 11 03 40 -> 4C4D 0311 0340
E36 VIN location
If your using some other Hex editor other than the EEPROM programmer builtin editor, each byte will be twisted with the other, meaning that                 LM->4C4D->4D4C.
E36 twisted VIN
The 03 in between 11 and 40 to my best assumption represents the year of the car model is equal to or less than 2003.
Unfortunately I may have damaged something along the way of removing something which caused a malfunction and it pretty much ended here (CodE_2), as I’ve said before I’m not concerned for this board since I’m going to use the original one once I fit the LCD and arduino along with whatever transceiver I decide use to pull real-time data. I also wasn’t able to decode the mileage off of the Fairchild EEPROM but I’m guessing it’s stored in the first two lines (0x00 and 0x01). I’ve checked with Tachosoft and I also had no luck, the best way is probably creating a before and after snapshot of the EEPROM contents, record what the odometer displays and what the above contents are inside the EEPROM then run the car for a few miles or so and then again record the displayed mileage and and EEPROM contents and see what values have changed and how. FYI this cluster had 275,447 km on the odometer.

CodE_2 Error

“CODE-2 on the unit means that internal eeprom is damaged (or possibly not soldered correctly etc…). CODE-1 would mean that eeprom in coding plug is damaged or not present. Also could be EEP-1 or EEP2 indicating probably that data in either of eeproms are corrupted.” – Martin Kutny

More pictures!

11 Comments

  1. Ralf

    Hi Osmar,
    what is not clear to me is, the new odometer shows MLS (miles) with the code error, but you are talking about Kilometers in the describtion of the EEPROM. Whats correct? Miles or Kilometers?
    Regards,
    Ralf

    Reply
  2. Connor McMillan

    To my understanding from my research the mileage is indeed stored in kilometers on the EEPROM and is then converted to miles on the screen depending on the region the car was manufactured for. US = miles, EU = km. The US/EU bit flag is probably also encoded into the “Coding Plug”.

    Reply
    1. Kamil Z

      Hi, I struggling with mile to km conversion on lcd and found this website. I have changed code plug from us to eu and still on lcd miles where show up. That info need to be stored somewhere else .

      Reply
    1. Connor McMillan

      I’m sorry but I don’t have any to spare. Besides that, putting a coding plug into a dashboard requires you to have the data pulled from the old plug. Mismatch of mileage from the new coding plug and the dashboard EEPROM will result in a red tamper dot next to your mileage.

      Reply
      1. Martin Kutny

        Hi Osmar,
        pleaset if you have disassembled that coding plug, would you be able to tell me or look at the 93c46 eeprom pinout? I mean which leg goes to which pin on the coding plug’s enclosure, to be able to read without breaking it?
        Also please how did you separate pcb from rear plastic? Did you drill out those plastic rivets?

        Reply
  3. Martin Kutny

    Hi Osmar,
    pleaset if you have disassembled that coding plug, would you be able to tell me or look at the 93c46 eeprom pinout? I mean which leg goes to which pin on the coding plug’s enclosure, to be able to read without breaking it?
    Also please how did you separate pcb from rear plastic? Did you drill out those plastic rivets?

    Reply
  4. Andrew

    Hi Osmar and Martin,
    I had an EEP1 error while trying to clear a “service engine soon” light with an aftermarket scanner.
    Now in addition to EEP1, all temp, gas, rev gauges went dead. Which of the eeprom is bad: coding plug or the internal one? I could get a new coding plug from the dealer and have it programmed, but do not know if it’s the problem.
    If you would, please shred your wisdom how i should fix this dreaded eep1 error code.
    thanks, Andrew

    Reply
  5. Peter Pinsolitsch

    Hi Connor, can you tell me where I can found the eeprom 2 on the E36 series? I always ge eeprom2 errors during cold weather.

    Reply
  6. Richard Vavřich

    zdravim mam problem pri zmene km sviti mi na tachu mala tecka. neumim dopocitat km rucicka teploty ukazuje na plno

    Reply

Leave a Reply to Connor McMillan Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.