Joined
·
7,636 Posts
Requirements
After studying M and non-M EEPROM files, here's what I found -- there is a function deliberately designed to increase the speed by a certain ratio. In the non-M, the displayed speed is the real speed + 5.7%. In the M3, the error is a massive 8.9% -- completely unacceptable IMO.
So here's what you do.
If you're curious as to how the change works, the bytes I change are used as a ratio. 0x25 = 37; 0x23 = 35. 37/35 = 1.057, or a 5.7% error. I am not sure what the 0xC8 (200) value represents; I think it might be an upper limit to the allowed error (5.7% until the error reaches 20 km/h). That last byte is simply a checksum (XOR all the values together, and then XOR with 1)
If you have a 99-01 cluster, please send me your EEPROM. I can't promise I'll figure out how to do the change there, but I'll try. Also, if there are any Japanese fanatics here, please send me a dump of your cluster. In the E39, the Japanese values for the cluster are 100% accurate; I suspect the same holds true for the E46. It would be interesting to see how BMW configured the cluster.
Also give me feedback; so far in my testing it agrees with GPS, but it's always nice to have others confirm too.
- BMW Scanner
- Cluster made in 09/2001 or newer (edit: not 100% sure about this date cutoff after looking at some NCS Expert files. Might even be as late as 03.5). I'm sure it is possible to do this on early clusters too, but the software is quite different. I can research if a few of you send me a dump of your cluster EEPROM
- Some common sense
After studying M and non-M EEPROM files, here's what I found -- there is a function deliberately designed to increase the speed by a certain ratio. In the non-M, the displayed speed is the real speed + 5.7%. In the M3, the error is a massive 8.9% -- completely unacceptable IMO.
So here's what you do.
- Start up the PASoft software and load your IKE. Read off the EEPROM.
- Now, in the built in hex editor, look for the following hex string (pick the appropriate one for your model). In my cluster, it was located at offset 0x339
Code:E46 M3: 03 00 2D C8 00 31 D6 Non-M: 03 00 23 C8 00 25 CC
- Change it to the following
Code:All models: 03 00 01 C8 00 01 CA
- Save the file, and flash the EEPROM back to your cluster.
If you're curious as to how the change works, the bytes I change are used as a ratio. 0x25 = 37; 0x23 = 35. 37/35 = 1.057, or a 5.7% error. I am not sure what the 0xC8 (200) value represents; I think it might be an upper limit to the allowed error (5.7% until the error reaches 20 km/h). That last byte is simply a checksum (XOR all the values together, and then XOR with 1)
If you have a 99-01 cluster, please send me your EEPROM. I can't promise I'll figure out how to do the change there, but I'll try. Also, if there are any Japanese fanatics here, please send me a dump of your cluster. In the E39, the Japanese values for the cluster are 100% accurate; I suspect the same holds true for the E46. It would be interesting to see how BMW configured the cluster.
Also give me feedback; so far in my testing it agrees with GPS, but it's always nice to have others confirm too.