Hi everyone, I know a lot of people have asked me if I can help reset a used cluster's odometer reading to match your car's actual VIN, odometer reading and coding, as well as a new uncoded cluster at the dealership too buy or from other parts sites so I decided to provide the instructions on how to do it. Note that this information is used to ensure your cluster downloads the correct information from your LCM and EWS modules, and not to set the mileage to a value that is not the case. I realize some people could use this information in this way, but unless other modules and the key change there will always be a record of the original miles to compare the cluster too.
So let's get to the actual information. To do this correctly you need PA Soft 1.4.0 and its cable and preferably also an INPA cable to use NCS Expert if you plan to build an M5 cluster on top of a non-M5 or e39 cluster an e38 or vice versa. This is because some options are not available for PA Soft (e.g. setting the fuel tank size so that the fuel gauge is displayed correctly when switching between group e39 and e38), while some options are much easier to configure in PA Soft, including restoring a backup of your EEPROM, which is discussed below. If you don't have them, cables are fairly inexpensive and can be found on eBay or other similar sites. I have no affiliation, howeverwww.bimmersoftware.comsells a FTDI 232-RL based cable (INPA type) for about $40 that comes from the US (gets to you much quicker) and has been tested before shipping. I know that most if not all of pins 7 and 8 need to be soldered into the cable to see all the modules, but this will be discussed in other DIYs.
Make a backup of the cluster EEPROM with PA Soft first, as you will need to restore it after setting the VIN and mileage. After creating the backup, use INPA and go to the "Activate" menu and then in the "Cluster" section, "Activate analog". This allows you to manually set an angle or speed. Then it records the position of the needle for a specific angle or speed. I set the angle for specific marks on the gauges so that I can easily see where to place the needles if I later recalibrate them, for example setting the tachometer angle to 2500 rpm. Using the speed value instead of the speedometer angle lets you decide how many extra miles per hour you read over what you're actually doing (fixed 5% integrated into the cluster). After recording the angles of each needle, make sure you have a good grip on the motor shafts with the pliers. The best way to tell if you have good spindle control is to spin the needle and listen for a squeak. If you don't hear the squeak, you're turning the shaft and likely damaging the motor when you try to remove the needle. When you hear the squeak, just pull lightly while twisting it back and forth a little (actually just a little) and they'll come loose easily. To remove the MPG/oil temp gauge needle, simply use a small salad fork to pry it out. The reason one is different is because the shaft it sits on doesn't go into the motor. Instead, it is connected to the motor shaft via gears. Anyhow, after removing the pins, gently pull on the faces, but you will encounter some resistance when you pull on the left side of the cluster as the electrical connection goes to the heater LED board on the back of the faces. Once removed you should see the 93S66 chip in much the same place as the m35080 chip would be on newer clusters (see photos on the web for where it is located). To remove the red epoxy I use the tip of my hot soldering iron and scrape it off lightly. You will find that the epoxy breaks down when heated and you can scratch it. Keep the soldering tip clean with a damp sponge while you work. Once the epoxy is out of the way add some solder to the legs of the chip and add some soldering flux. Then use a solder wick to extract as much solder as possible. There may only be a little bit left, so try to quickly heat up all the legs of the chip while prying it off at the chip with a small screwdriver. There is also quite a bit of epoxy under the chip so it can be a bit rough. You really don't want to pull on the pads under the chip, so be careful.
Ok, now you have the old chip and the new chip ready to use. Make sure the orientation is the same as the chip you removed. Mine was the opposite of the M35080 chips I took which meant the writing was upside down when looking at the board. The M35080 chips were open. There are no indicators to tell you where pin 1 is, so I recommend this method. Go ahead and clean the solder pads and solder the new chip in place of the old one.
Now I've created a dyno setup so I can power the cluster and connect my OBD2 cables without being in the car (it's cold in my garage), but I should be able to do it in the car too. Turn on the cluster and make sure all the lights come on (they can be a lot brighter than normal) and the odometer reads 26x,xxx miles (don't worry, this is effectively 0). It could also have a blinking tamper dot, meaning there's a problem with the EEPROM (it's obviously empty). If nothing comes on except for a red or yellow light on the right side of the dash, you installed the 93S66 the wrong way round. Open PASoft 1.4.0. You'll probably get an error message when talking to EWS or IKE, but that's okay. Once you have identified the IKE you should see all xxxxx in the VIN and ZCS area and I can't remember what the mileage says but I think it's 441xxx km. In any case, close the login window and double-click on IKE. There will be some kind of error again and it will take a little longer to read the data, but it should show xxxxxxx in the FGSTNR window and FF in all HW, SW, data etc windows. The first thing you will notice is that the algorithm misdetects. That's good. Click the Read EEPROM command. You should see that the hex values are pretty much all FF.
THIS PART IS VERY IMPORTANT!!!
Don't set the mileage first. In this case you cannot change the chassis number. Click on the change algorithm and set it to 93S66 - sw13. Then go to Reprogramming and set the FGSTNR to the last 7 of your VIN. Once you did that you could turn the key to position 2 and it would download the odometer but like I said before mine was benched so I set the odometer manually. If your mileage is set on the car using the first method, restore from the original backup you made before you start any of this. If not, change the algorithm to 93s56 - speedometer, go to reset and then to record odometer. You should then be able to set the mileage in your LCM or EWS to your correct mileage. Be sure to enter it in km, not miles. Now restored from the previously created backup.
After setting the mileage using the LCM method or the manual method, make sure to change the algorithm back to 93S66 - sw13 before restoring a previous backup. Since the mileage and VIN are already set and cannot be changed, you need to restore everything but them. This means the cluster will work the same as when it was first attached to the car, except the VIN and mileage will match the car. You don't have to code it for the car unless you bought the cluster used and didn't copy the ZCS info from the EWS beforehand, but that doesn't mean you can't do it later.
After testing to make sure everything works, it's time to reinstall the gauge faces and needles. The first one should be pretty self-explanatory, but reinstalling the needles shouldn't be too complicated. After attaching the measuring pads, reconnect to the car, load INPA and go to the same menu you were in before. Set the angles you recorded earlier, and at that angle, gently hold the tip of the pen over the value you recorded and lightly press the base of the pen. I usually set the angle to 10* and then go back to the angle I recorded to make sure it keeps coming back to where it's supposed to. If it's a bit off, don't pull the needle, just twist it as far as you can until it stops, and then push it a bit in the direction you want to adjust it. Turn it over and let the motor try to return to its setpoint. If you go too far, do the same in the opposite direction. Once you have it in place, hold the tip of the needle where you want it and push the base of the needle down until it is just above the face of the gauge. I think it's about 1mm or so above the face. Double check the angles to make sure they are still in the correct place, if not follow the adjustment technique above. I recommend doing the tachometer needle before taking the oil temp reading as it is much harder to set the tachometer needle with the oil temp needle on the go.
Reassemble the cluster and you should be back in business.
I should also mention that everything in my previous post also applies to M35080 clusters, except of course that the chip is different and the algorithm detects it as 0 by default instead of M35080-1 as expected. The other problem with the M35080 cluster is that you cannot manually set the mileage without the LCM connected to the cluster unless you program the mileage using an M35080 programmer before putting the chip onto the board soldering. This is because PA Soft cannot record the mileage on the M35080 even if it is restarted. That being said, I think you can use tool32 to program the M35080 blank you just installed, but I haven't tried this method and I still think you need it in the car to get the correct mileage from the LCM .
Another piece of information I discovered recently while testing multiple clusters: If you have two clusters that use the same hardware and software numbers, but are not M and M5 clusters, you can use the green connector on the back of the M5 Clusters (the one that the counter board connects to) and solder them to the open spot in the non-m group and place the M5 counter faces in the non-m group. Then upload the EEPROM backup created by PA Soft from the M5 cluster to the non-M cluster. You can now install the M5 caliber faces on the old non-M cluster.
Why do you want to do that you say? Well, there are a couple of reasons you might want to do that. Most exchange groups that BMW installed as part of the goodwill exchange had a new ribbon cable for the LCD. This new ribbon cable uses a real connector on the board instead of the poor quality glue used on the old ribbon so you never have to fix it for bad pixels. This means that if you can find a cheap 2004+ E39 or E38 cluster and have a badly pixelated M5 cluster, you can trade it in for a small upgrade.
The other reason to do this is that the non-m clusters had the orange/amber LEDs for the needles and numbers instead of the yellow ones that the m5 clusters had. Some prefer orange/amber, while others prefer black gauges over gray gauges, so this is an easy way to get orange LEDs with an M5 cluster. I've tested this with black and gray faces and I have to say that black faces look better with orange than gray.
Now remember that I have two clusters which are of the new tape type (m5 cluster was made in 2005 and 740i cluster was made in 2007) and they were swapped out successfully. If you don't have a copy of an M5 cluster's EEPROM of your hardware and software version, PM me and I'll see if I have one that works. I also have a cluster from 2002 (not m) that I will test to make sure it works with that too. Basically the EEPROM backup should set the stepper motors to the correct setting for the M5 (highest speed and RPM). There's a chance you can tweak this setting with NCS Expert, but I haven't tested it to confirm.
I'll be adding some photos to this DIY once I work on another set soon and may document it as I go to make sure you get everything you need.
If anyone is uncomfortable doing this themselves, please feel free to PM me for further assistance.