Hey guys, I know several people have been asking me if I can help them to reset the mileage on a used cluster in order to allow it to match their car's actual VIN, mileage, and coding, just like buying a brand-new uncoded cluster from the dealer or other parts websites, so I have decided to provide the instructions on how to do it. Keep in mind that this information is to make your cluster download the correct information from your LCM and EWS modules and not to set the mileage to something it isn't. I realize that some people could possibly use this information in that way, but unless they change other modules and the key, there will always be a record of the original miles to compare the cluster too.
So, let's move on to the actual information. In order to do this properly, you will need PA Soft 1.4.0 and the associated cable and preferably an INPA cable as well in order to use NCS Expert in case you are planning on installing an M5 cluster into a non-M5 or an e39 cluster into an e38 or vice versa. This is because some options are unavailable to PA Soft (e.g. setting the fuel tank size so the fuel gauge reads correctly when switching between e39 and e38 cluster), while some options are much easier to set in PA Soft, including restoring from a backup of your EEPROM, which is discussed below. If you don't have these, the cables are fairly cheap and can be found on eBay or other such sites. I have no affiliation, but www.bimmersoftware.com sells an FTDI 232-RL-based cable (INPA type) for about $40 that ships from the US (gets to you much quicker) and has been tested before shipping. I do know that most if not all will need pins 7 and 8 soldered together inside the cable for it to see all modules, but that's discussed in other DIYs.
First, make a backup using PA Soft of the cluster's EEPROM since you'll need to restore it after setting the VIN and mileage. After you have made your backup, use INPA and go to the "Activate" and then "Activate Analog" menu under the cluster section. This will let you set an angle or speed manually. Then you record the needle position for a given angle or speed. I set the angle to specific marks on the gauges so I can easily see where to set the needles when recalibrating them later, for example setting the angle of the tach so that it lines up with 2500 RPM. Using the speed value instead of the angle for the speedo will let you decide how much additional mph it reads over what you actually are going (5% correction that is built-in to the cluster). After recording the angles of each needle, make sure you get a very good hold on the motor shafts with the pliers. The best way to tell when you have a good grip on the shaft is by twisting the needle and listening for a creaking sound. If you don't hear the creaking, you're turning the shaft and will likely damage the motor by trying to remove the needle. If you do hear the creaking, just lightly pull while twisting back and forth a little (really just a little bit) and they will come off pretty easily. As for the MPG/Oil Temp gauge needle, to remove it, just use a small salad fork to pry it up. The reason that one is different is that the shaft that it is on doesn't go into the motor. Instead, it connects to the motor's shaft through a couple of gears. Anyways, once you have the needles off, carefully pull the faces off, but you will encounter some resistance on the left side of the cluster when pulling due to the electrical connector that goes to the warm-up led board on the back of the faces. After that's been removed, you should see the 93S66 chip in pretty much the same location the m35080 chip would be on the newer clusters (refer to pictures on the web of where that is). To remove the red epoxy, I use my heated-up soldering iron tip and lightly scrape it off. You'll see that as the epoxy heats up, it crumbles and you can scrape it away. Keep the soldering tip clean by using a wet sponge while you're working. After the epoxy is out of the way, add a bit of solder to the legs on the chip and then add some solder flux. Then use some solder wick to pull up as much of the solder as you can. There might be just a little bit, so try to quickly apply heat to all the legs of the chip while prying it up with a small flat screwdriver on the chip. There is also a bit of epoxy under the chip, so this might be a little difficult. You really don't want to pull up the pads under the chip, so be careful.
Ok, so now you've got the old chip off and a new one ready to go on. Make sure the orientation is the same as the chip you took off. Mine was the opposite of the M35080 chips I'd taken off, which meant the writing was upside down when looking at the board. The M35080 chips were right-side up. There are no indicators telling you where pin 1 is, so that's why I recommend this method. Go ahead and clean the solder pads and solder the new chip in place of the old one.
Now, I made a test bench setup so that I can power the cluster and connect my obd2 cables without being in the car (it's cold in my garage), but you should be able to do this in the car as well. Power on the cluster and make sure that all the lights come on (they might be on a lot brighter than normal) and the mileage reads 26x,xxx miles (don't worry, this is effectively 0). You might also have a blinking tamper dot, which means that there is a problem with the EEPROM (obviously, it's blank). If nothing lights up except for a red or yellow light on the right side of the board, you have the 93S66 installed upside down. Open up PA Soft 1.4.0. You'll probably get an error either talking to the EWS or IKE, but this is fine. After it identifies the IKE, you should see all xxxxx in the VIN and ZCS area and I can't remember what's in the mileage, but I think it's 441xxx km. Anyways, close the identify window and double-click on IKE. It again will give you some kind of error and take a bit longer to read the data but should show xxxxxxx in the FGSTNR window, and show FF in all the HW, SW, Date, etc. windows. The first thing you'll notice is that the algorithm will be misdetected. This is fine. Click the Read EEPROM command. You should see the hex values being pretty much all FFs.
THIS PART IS VERY IMPORTANT!!!
Do not set the mileage first. If you do, you will not be able to change the VIN. Click change algorithm and set it to 93S66 - sw13. Then go to Reprogramming and set the FGSTNR to the last 7 of your VIN. After doing this, I think you could turn the key to position 2 and it would download the mileage, but as I said before, mine was on a bench, so I manually set the mileage. If your mileage is set to the car by the first method, then restore from the original backup you made before beginning this whole thing. If not, change the algorithm to 93s56 - Tacho, then go to Reprogramming, then Write Odometer. You should then be able to set the mileage to whatever your correct mileage is on your LCM or EWS. Make sure you input it in kms, not miles. Now restored from the backup you made previously.
After setting the mileage either by the LCM method or manual method, make sure you change the algorithm back to 93S66 - sw13 before restoring from your previous backup. Since the mileage and VIN have already been set and can't be changed, it should only restore everything but them. That means that the cluster will act exactly as it did when you first put it in the car, except the VIN and mileage will match the car. You shouldn't need to code it to the car unless you bought the cluster used and didn't copy the ZCS information from the EWS before, but that doesn't mean you can't do it after.
After you've tested to make sure everything is working, it's time to reinstall the gauge faces and the needles. The first should be self-explanatory, but reinstalling the needles shouldn't be too complicated. After you have the gauge faces on, plug it back into the car, load up INPA, and go to the same menu you were on before. Set the angles that you recorded before and while it's at that angle, carefully hold the tip of the needle over the value you recorded and press down on the base of the needle just a bit. I usually set the angle to 10*, then go back to the angle I recorded to make sure it keeps going back to where it should. If you're a bit off, don't yank the needle off, just turn it as far as it will go until it hits the stop, then nudge it just a bit in the direction you need to adjust. Rotate it back and let the motor try to go back to its set point. If you nudged it too far, do the same in the opposite direction. Once you have it in the right spot, hold the tip of the needle where you want it again, and press down on the base of the needle until it's just above the gauge face. I think it's somewhere around 1 mm or so above the face. Check the angles again to make sure you got it still in the right spot and if not, do the same adjustment technique as mentioned above. I recommend doing the Tach needle before doing the Oil Temp since it's much more difficult to adjust the tach needle with the Oil temp needle in the way.
Reassemble the cluster and you should be back in business.
I should also mention that everything in my above post applies to the M35080 clusters as well, except of course that the chip is different and that the algorithm will be detected as 0 by default instead of M35080-1 like you would expect. The other issue with the M35080 cluster is that you will not be able to manually set the mileage without having the LCM connected to the cluster unless you program the mileage using an M35080 programmer before soldering the chip onto the board. This is because PA Soft cannot write mileage to the M35080, even if it is zeroed out. That being said, I think you can use tool32 to program the freshly installed blank M35080, but I haven't tested that method, and I still think you need it in the car for it to download the correct mileage from the LCM.
One more tidbit of information that I've discovered in testing multiple clusters lately, If you have two clusters that use the same hardware and software numbers, but are non-m and M5 clusters, you can desolder the green connector from the back of the M5 cluster (the one that the gauge face circuit board plugs into) and solder it to the open spot on the non-m cluster and put the M5 gauge faces on the non-m cluster. Then load the EEPROM backup made by PA Soft of the M5 cluster onto the non-M cluster. Now you can install the M5 gauge faces on the formerly non-M cluster.
Why would you want to do this you say? Well, there are a couple of reasons you might want to. Most of the replacement clusters that BMW installed as part of the Goodwill replacement had a brand new ribbon cable for the LCD. This new ribbon cable uses an actual connector on the board instead of the crappy glue that the old ribbon used, so you should pretty much never need to repair them for bad pixels. That means that if you find a 2004+ E39 or E38 cluster for cheap and you have an M5 cluster with bad pixels, you can swap them over for a bit of an upgrade.
The other reason that someone might want to do this is that the non-m clusters had the orange/amber colored LEDs for the needles and numbers as opposed to the yellow that the m5 clusters got. Some prefer the orange/amber, just like some prefer the black face gauges over the gray, so doing this is an easy way of getting orange LEDs with an M5 cluster. I've tested this with both black faces and gray and I have to say the black faces look better with orange than the gray.
Now, keep in mind, I have two clusters that are both the new ribbon type (the m5 cluster was made in 2005, and the 740i cluster was made in 2007) and they swapped over properly. If you don't have a copy of an M5 cluster's EEPROM from your hardware and software version, PM me, and I'll see if I have one that will work. I also have a cluster made in 2002 (non-m) that I am going to try on to make sure it works with it as well. Basically, the EEPROM backup should adjust the stepper motors to the correct settings for the M5 (higher speedo and tach). There is a possibility that you can adjust these settings using NCS Expert, but I haven't tried it yet to confirm.
I will add some pictures to this DIY soon since I'm going to be working on another cluster soon and can document it as I go to make sure I get everything you all will need.
If anyone feels uncomfortable doing this themselves, please feel free to PM me for any additional help
So, let's move on to the actual information. In order to do this properly, you will need PA Soft 1.4.0 and the associated cable and preferably an INPA cable as well in order to use NCS Expert in case you are planning on installing an M5 cluster into a non-M5 or an e39 cluster into an e38 or vice versa. This is because some options are unavailable to PA Soft (e.g. setting the fuel tank size so the fuel gauge reads correctly when switching between e39 and e38 cluster), while some options are much easier to set in PA Soft, including restoring from a backup of your EEPROM, which is discussed below. If you don't have these, the cables are fairly cheap and can be found on eBay or other such sites. I have no affiliation, but www.bimmersoftware.com sells an FTDI 232-RL-based cable (INPA type) for about $40 that ships from the US (gets to you much quicker) and has been tested before shipping. I do know that most if not all will need pins 7 and 8 soldered together inside the cable for it to see all modules, but that's discussed in other DIYs.
First, make a backup using PA Soft of the cluster's EEPROM since you'll need to restore it after setting the VIN and mileage. After you have made your backup, use INPA and go to the "Activate" and then "Activate Analog" menu under the cluster section. This will let you set an angle or speed manually. Then you record the needle position for a given angle or speed. I set the angle to specific marks on the gauges so I can easily see where to set the needles when recalibrating them later, for example setting the angle of the tach so that it lines up with 2500 RPM. Using the speed value instead of the angle for the speedo will let you decide how much additional mph it reads over what you actually are going (5% correction that is built-in to the cluster). After recording the angles of each needle, make sure you get a very good hold on the motor shafts with the pliers. The best way to tell when you have a good grip on the shaft is by twisting the needle and listening for a creaking sound. If you don't hear the creaking, you're turning the shaft and will likely damage the motor by trying to remove the needle. If you do hear the creaking, just lightly pull while twisting back and forth a little (really just a little bit) and they will come off pretty easily. As for the MPG/Oil Temp gauge needle, to remove it, just use a small salad fork to pry it up. The reason that one is different is that the shaft that it is on doesn't go into the motor. Instead, it connects to the motor's shaft through a couple of gears. Anyways, once you have the needles off, carefully pull the faces off, but you will encounter some resistance on the left side of the cluster when pulling due to the electrical connector that goes to the warm-up led board on the back of the faces. After that's been removed, you should see the 93S66 chip in pretty much the same location the m35080 chip would be on the newer clusters (refer to pictures on the web of where that is). To remove the red epoxy, I use my heated-up soldering iron tip and lightly scrape it off. You'll see that as the epoxy heats up, it crumbles and you can scrape it away. Keep the soldering tip clean by using a wet sponge while you're working. After the epoxy is out of the way, add a bit of solder to the legs on the chip and then add some solder flux. Then use some solder wick to pull up as much of the solder as you can. There might be just a little bit, so try to quickly apply heat to all the legs of the chip while prying it up with a small flat screwdriver on the chip. There is also a bit of epoxy under the chip, so this might be a little difficult. You really don't want to pull up the pads under the chip, so be careful.
Ok, so now you've got the old chip off and a new one ready to go on. Make sure the orientation is the same as the chip you took off. Mine was the opposite of the M35080 chips I'd taken off, which meant the writing was upside down when looking at the board. The M35080 chips were right-side up. There are no indicators telling you where pin 1 is, so that's why I recommend this method. Go ahead and clean the solder pads and solder the new chip in place of the old one.
Now, I made a test bench setup so that I can power the cluster and connect my obd2 cables without being in the car (it's cold in my garage), but you should be able to do this in the car as well. Power on the cluster and make sure that all the lights come on (they might be on a lot brighter than normal) and the mileage reads 26x,xxx miles (don't worry, this is effectively 0). You might also have a blinking tamper dot, which means that there is a problem with the EEPROM (obviously, it's blank). If nothing lights up except for a red or yellow light on the right side of the board, you have the 93S66 installed upside down. Open up PA Soft 1.4.0. You'll probably get an error either talking to the EWS or IKE, but this is fine. After it identifies the IKE, you should see all xxxxx in the VIN and ZCS area and I can't remember what's in the mileage, but I think it's 441xxx km. Anyways, close the identify window and double-click on IKE. It again will give you some kind of error and take a bit longer to read the data but should show xxxxxxx in the FGSTNR window, and show FF in all the HW, SW, Date, etc. windows. The first thing you'll notice is that the algorithm will be misdetected. This is fine. Click the Read EEPROM command. You should see the hex values being pretty much all FFs.
THIS PART IS VERY IMPORTANT!!!
Do not set the mileage first. If you do, you will not be able to change the VIN. Click change algorithm and set it to 93S66 - sw13. Then go to Reprogramming and set the FGSTNR to the last 7 of your VIN. After doing this, I think you could turn the key to position 2 and it would download the mileage, but as I said before, mine was on a bench, so I manually set the mileage. If your mileage is set to the car by the first method, then restore from the original backup you made before beginning this whole thing. If not, change the algorithm to 93s56 - Tacho, then go to Reprogramming, then Write Odometer. You should then be able to set the mileage to whatever your correct mileage is on your LCM or EWS. Make sure you input it in kms, not miles. Now restored from the backup you made previously.
After setting the mileage either by the LCM method or manual method, make sure you change the algorithm back to 93S66 - sw13 before restoring from your previous backup. Since the mileage and VIN have already been set and can't be changed, it should only restore everything but them. That means that the cluster will act exactly as it did when you first put it in the car, except the VIN and mileage will match the car. You shouldn't need to code it to the car unless you bought the cluster used and didn't copy the ZCS information from the EWS before, but that doesn't mean you can't do it after.
After you've tested to make sure everything is working, it's time to reinstall the gauge faces and the needles. The first should be self-explanatory, but reinstalling the needles shouldn't be too complicated. After you have the gauge faces on, plug it back into the car, load up INPA, and go to the same menu you were on before. Set the angles that you recorded before and while it's at that angle, carefully hold the tip of the needle over the value you recorded and press down on the base of the needle just a bit. I usually set the angle to 10*, then go back to the angle I recorded to make sure it keeps going back to where it should. If you're a bit off, don't yank the needle off, just turn it as far as it will go until it hits the stop, then nudge it just a bit in the direction you need to adjust. Rotate it back and let the motor try to go back to its set point. If you nudged it too far, do the same in the opposite direction. Once you have it in the right spot, hold the tip of the needle where you want it again, and press down on the base of the needle until it's just above the gauge face. I think it's somewhere around 1 mm or so above the face. Check the angles again to make sure you got it still in the right spot and if not, do the same adjustment technique as mentioned above. I recommend doing the Tach needle before doing the Oil Temp since it's much more difficult to adjust the tach needle with the Oil temp needle in the way.
Reassemble the cluster and you should be back in business.
I should also mention that everything in my above post applies to the M35080 clusters as well, except of course that the chip is different and that the algorithm will be detected as 0 by default instead of M35080-1 like you would expect. The other issue with the M35080 cluster is that you will not be able to manually set the mileage without having the LCM connected to the cluster unless you program the mileage using an M35080 programmer before soldering the chip onto the board. This is because PA Soft cannot write mileage to the M35080, even if it is zeroed out. That being said, I think you can use tool32 to program the freshly installed blank M35080, but I haven't tested that method, and I still think you need it in the car for it to download the correct mileage from the LCM.
One more tidbit of information that I've discovered in testing multiple clusters lately, If you have two clusters that use the same hardware and software numbers, but are non-m and M5 clusters, you can desolder the green connector from the back of the M5 cluster (the one that the gauge face circuit board plugs into) and solder it to the open spot on the non-m cluster and put the M5 gauge faces on the non-m cluster. Then load the EEPROM backup made by PA Soft of the M5 cluster onto the non-M cluster. Now you can install the M5 gauge faces on the formerly non-M cluster.
Why would you want to do this you say? Well, there are a couple of reasons you might want to. Most of the replacement clusters that BMW installed as part of the Goodwill replacement had a brand new ribbon cable for the LCD. This new ribbon cable uses an actual connector on the board instead of the crappy glue that the old ribbon used, so you should pretty much never need to repair them for bad pixels. That means that if you find a 2004+ E39 or E38 cluster for cheap and you have an M5 cluster with bad pixels, you can swap them over for a bit of an upgrade.
The other reason that someone might want to do this is that the non-m clusters had the orange/amber colored LEDs for the needles and numbers as opposed to the yellow that the m5 clusters got. Some prefer the orange/amber, just like some prefer the black face gauges over the gray, so doing this is an easy way of getting orange LEDs with an M5 cluster. I've tested this with both black faces and gray and I have to say the black faces look better with orange than the gray.
Now, keep in mind, I have two clusters that are both the new ribbon type (the m5 cluster was made in 2005, and the 740i cluster was made in 2007) and they swapped over properly. If you don't have a copy of an M5 cluster's EEPROM from your hardware and software version, PM me, and I'll see if I have one that will work. I also have a cluster made in 2002 (non-m) that I am going to try on to make sure it works with it as well. Basically, the EEPROM backup should adjust the stepper motors to the correct settings for the M5 (higher speedo and tach). There is a possibility that you can adjust these settings using NCS Expert, but I haven't tried it yet to confirm.
I will add some pictures to this DIY soon since I'm going to be working on another cluster soon and can document it as I go to make sure I get everything you all will need.
If anyone feels uncomfortable doing this themselves, please feel free to PM me for any additional help