Though I am the author of this original post, it really has become a thread by committee. Thanks to TerraPhantm's & Silbervogel's contributions, this thread is incredibly useful to all e46 owners.
Many e46 owners complain that the non-M coolant temperature gauge is practically useless given its wide buffer range (75ºC-115ºC) and high range settings. The 12 o'clock position represents the buffer range, which means that the needle will stay at this position when the coolant temperature is between 75ºC and 115ºC. This is problematic for at least a couple of reasons. Your needle will stay at the 12 o'clock position even if you have the all-too-common soft failing thermostat (See jfoj's excellent thread on this issue and related problems ). This was true on my wife's car, which ran in the 77-87ºC range without turning on the service engine soon light (SES). Secondly, an upper limit of 115ºC for the buffer range doesn't give the driver much time to shut off the engine in the event that it overheats. Given the relatively high failure rate of t-stats and other cooling system components on the e46, performing this revision can help avert catastrophe.
TerraPhantm has made it possible to reprogram the temperature gauge to behave in a more linear manner, which provides the driver with a more accurate representation of what's happening under the hood. It does so by setting the buffer range to 90-100ºC instead of the factory programmed range of 75-115ºC and also by adjusting the lower and upper ranges of the gauge. After you perform this modification, you'll know if you have a soft failing t-stat by simply looking at the gauge. You'll also have more advanced warning of overheating and, therefore, more time to shut the engine down. Furthermore, because the lower limit of the buffer range will be set at 90ºC instead of the factory preset of 75ºC, the driver might be less inclined to flog the engine before it reaches operating temperature. By all accounts, the baseline operating temperature for these cars is 95-97 ºC.
TerraPhantm is responsible for most of the useful information that follows. Any errors are, of course, my own.
The first set of instructions that follows can also be found in this thread:
From this, he deduced the following:
Worked like a charm. I used the values shown above, but you may want to play with upper range values depending on your driving style and operating conditions. Here's a chart that can help you do it (Added on 11/23):
For example, if you want to eliminate the buffer altogether and make needle behavior in the upper range almost linear, here's another option (added on 11/23):
---------------Bottom Hash Mark---Upper Limit of Blue---2nd Hash Mark--12 o'clock---3rd Hash Mark---Lower Limit of Red---Red (Maxed Out/Light On):
Needle Angle-----------ø0----------------ø31-----------------ø55---------ø90----------ø124--------------ø148----------------ø164--------------
T(Factory 0x340)------0-15ºC------------ 50ºC----------------60ºC----75-115ºC-----120ºC----------------125ºC---------------143ºC-------------
T(Rev. 0x340)---------0-15ºC-------------65ºC----------------75ºC------90-100ºC---105ºC----------------110ºC---------------120ºC----------
T(Factory 0x0f0)------0-15ºC-------------50ºC----------------60ºC----75-115ºC-----120ºC----------------124ºC---------------125ºC-------------
T(Rev. #1 0x0f0)----- 0-15ºC-------------65ºC----------------75ºC------90-100ºC---105ºC----------------110ºC---------------115ºC----------
T(Rev. #2 0x0f0)------0-15ºC-------------65ºC-------------75ºC-----------95ºC--------105ºC-------------115ºC---------------120ºC-------------
T=Temperature
The upper range is, of course, not observed, but we can assume that the needle will move accordingly.
*Take a mental note of the corresponding needle positions and temperatures in the chart above so that you know how to read the reprogrammed gauge, which will now be much more sensitive in the upper range. This is merely a result of the "new normal" gauge behavior that this modification seeks to achieve. Though the baseline operating temperature is 95ºC, the electrically controlled t-stat allows normal operating temperature to fluctuate in the 75ºC-113ºC range depending on driver input and operating conditions. For more details on how it works, look here. As mentioned, the reprogrammed temp. gauge is advantageous because it will, among other things, help you recognize a soft failing t-stat and give you more time to shut off your engine if it overheats.
The following is a graphic of the factory vs. revision #1 temp. gauge, courtesy of SilberVogel. His original post can be found here. He has also attached a screenshot of his revision of offset 0x0F0 with PA Soft 1.4 in post #62 of this thread.
Here are step-by-step instructions with PA Soft 1.4
1) Click on IKE.
2) Click "Read EEPROM"
3) Hex editor functions are in the lower left hand corner. Click the floppy disk icon to save the factory loaded file onto your desktop as backup.
4) Make revisions from "factory" bolded values to "revised" bolded values shown above: Find the corresponding offset and move the cursor over the bytes to be revised. You can use arrow keys to move the cursor as well.
5) Click "Write EEPROM." Your cluster will flash and beep several times after completion -- and like magic, your gauge will now reflect more accurately what's happening under the hood.
To TerraPhantm, I send a big "thank you." If you're ever in Philly, I'll take you out for a beer, a cheesesteak and whatever else you want.
To make this even simpler, Solidjake made this video of himself reprogramming his 2002 330i:
https://www.youtube.com/watch?v=aZkM5Nx2LN0
Subsequently, Silbervogel improved the graphic with this incredibly useful tool for those of us who do not regularly work with hexadecimals but want to play around with the values; and even for those well versed, this visual representation of gauge behavior is invaluable. His contributions make moot my charts above, but I've not deleted them in order to show the evolution of this thread and contributions of others.
What follows are his words and can also be found in post #132 of this thread.
Silbervogel: I decided to take the temperature gauge graphic a bit further and made an interactive version.
It's a basic hex generator that translates the string from P.A. Soft and displays the corresponding temps. It will also convert the temperature ranges you give it back into hex and properly format it again.
Here's a screenshot of the program's interface:
It's a standalone application that runs on Windows and can be downloaded here: www.bmwpnpc.com/silbervogel/E46 Temp Gauge Hex Generator.exe
Find this to be a hugely beneficial modification and think it has a lot of value. For anyone who might feel it's beyond their abilities or comfort level, I hope this tool helps alleviate some concerns and makes the process even easier.
Many e46 owners complain that the non-M coolant temperature gauge is practically useless given its wide buffer range (75ºC-115ºC) and high range settings. The 12 o'clock position represents the buffer range, which means that the needle will stay at this position when the coolant temperature is between 75ºC and 115ºC. This is problematic for at least a couple of reasons. Your needle will stay at the 12 o'clock position even if you have the all-too-common soft failing thermostat (See jfoj's excellent thread on this issue and related problems ). This was true on my wife's car, which ran in the 77-87ºC range without turning on the service engine soon light (SES). Secondly, an upper limit of 115ºC for the buffer range doesn't give the driver much time to shut off the engine in the event that it overheats. Given the relatively high failure rate of t-stats and other cooling system components on the e46, performing this revision can help avert catastrophe.
TerraPhantm has made it possible to reprogram the temperature gauge to behave in a more linear manner, which provides the driver with a more accurate representation of what's happening under the hood. It does so by setting the buffer range to 90-100ºC instead of the factory programmed range of 75-115ºC and also by adjusting the lower and upper ranges of the gauge. After you perform this modification, you'll know if you have a soft failing t-stat by simply looking at the gauge. You'll also have more advanced warning of overheating and, therefore, more time to shut the engine down. Furthermore, because the lower limit of the buffer range will be set at 90ºC instead of the factory preset of 75ºC, the driver might be less inclined to flog the engine before it reaches operating temperature. By all accounts, the baseline operating temperature for these cars is 95-97 ºC.
TerraPhantm is responsible for most of the useful information that follows. Any errors are, of course, my own.
The first set of instructions that follows can also be found in this thread:
But I could not find offset 0x34D (nor 0x340) in my EEPROM so I sent him a line that looked very similar:
Code:
0x0F0: OF 00 32 1F 4B 5A 73 5A 7C 94 7D A4 06 0E 1E 0F
TerraPhantm pm w/ revisions for accuracy said:
Code:
[I]Factory[/I] 0x0F0: 0F 00 [B]32[/B] 1F [B]4B[/B] 5A [B]73[/B] 5A [B]7C[/B] 94 [B]7D[/B] A4 06 0E 1E 0F
[I]Revision #1[/I] 0x0F0: 0F 00 [B]41[/B] 1F [B]5A[/B] 5A [B]64[/B] 5A [B]6E[/B] 94 [B]73[/B] A4 06 0E 1E 0F
Code:
Decimal 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 105 110 115 120 125 130 135 140
HexaDecimal 14 19 1E 23 28 2D 32 37 3C 41 46 4B 50 55 5A 5F 64 69 6E 73 78 7D 82 87 8C
Code:
[I]Factory[/I] 0x0F0: 0F 00 [B]32[/B] 1F [B]4B[/B] 5A [B]73 5A 7C[/B] 94 [B]7D[/B] A4 06 0E 1E 0F
[I]Revision #2[/I] 0x0F0: 0F 00 [B]41[/B] 1F [B]5F[/B] 5A [B]69 7C 73[/B] 94 [B]78[/B] A4 06 0E 1E 0F
Needle Angle-----------ø0----------------ø31-----------------ø55---------ø90----------ø124--------------ø148----------------ø164--------------
T(Factory 0x340)------0-15ºC------------ 50ºC----------------60ºC----75-115ºC-----120ºC----------------125ºC---------------143ºC-------------
T(Rev. 0x340)---------0-15ºC-------------65ºC----------------75ºC------90-100ºC---105ºC----------------110ºC---------------120ºC----------
T(Factory 0x0f0)------0-15ºC-------------50ºC----------------60ºC----75-115ºC-----120ºC----------------124ºC---------------125ºC-------------
T(Rev. #1 0x0f0)----- 0-15ºC-------------65ºC----------------75ºC------90-100ºC---105ºC----------------110ºC---------------115ºC----------
T(Rev. #2 0x0f0)------0-15ºC-------------65ºC-------------75ºC-----------95ºC--------105ºC-------------115ºC---------------120ºC-------------
T=Temperature
The upper range is, of course, not observed, but we can assume that the needle will move accordingly.
*Take a mental note of the corresponding needle positions and temperatures in the chart above so that you know how to read the reprogrammed gauge, which will now be much more sensitive in the upper range. This is merely a result of the "new normal" gauge behavior that this modification seeks to achieve. Though the baseline operating temperature is 95ºC, the electrically controlled t-stat allows normal operating temperature to fluctuate in the 75ºC-113ºC range depending on driver input and operating conditions. For more details on how it works, look here. As mentioned, the reprogrammed temp. gauge is advantageous because it will, among other things, help you recognize a soft failing t-stat and give you more time to shut off your engine if it overheats.
The following is a graphic of the factory vs. revision #1 temp. gauge, courtesy of SilberVogel. His original post can be found here. He has also attached a screenshot of his revision of offset 0x0F0 with PA Soft 1.4 in post #62 of this thread.
Here are step-by-step instructions with PA Soft 1.4
1) Click on IKE.
2) Click "Read EEPROM"
3) Hex editor functions are in the lower left hand corner. Click the floppy disk icon to save the factory loaded file onto your desktop as backup.
4) Make revisions from "factory" bolded values to "revised" bolded values shown above: Find the corresponding offset and move the cursor over the bytes to be revised. You can use arrow keys to move the cursor as well.
5) Click "Write EEPROM." Your cluster will flash and beep several times after completion -- and like magic, your gauge will now reflect more accurately what's happening under the hood.
To TerraPhantm, I send a big "thank you." If you're ever in Philly, I'll take you out for a beer, a cheesesteak and whatever else you want.
To make this even simpler, Solidjake made this video of himself reprogramming his 2002 330i:
https://www.youtube.com/watch?v=aZkM5Nx2LN0
Subsequently, Silbervogel improved the graphic with this incredibly useful tool for those of us who do not regularly work with hexadecimals but want to play around with the values; and even for those well versed, this visual representation of gauge behavior is invaluable. His contributions make moot my charts above, but I've not deleted them in order to show the evolution of this thread and contributions of others.
What follows are his words and can also be found in post #132 of this thread.
Silbervogel: I decided to take the temperature gauge graphic a bit further and made an interactive version.
It's a basic hex generator that translates the string from P.A. Soft and displays the corresponding temps. It will also convert the temperature ranges you give it back into hex and properly format it again.
Here's a screenshot of the program's interface:
It's a standalone application that runs on Windows and can be downloaded here: www.bmwpnpc.com/silbervogel/E46 Temp Gauge Hex Generator.exe
Find this to be a hugely beneficial modification and think it has a lot of value. For anyone who might feel it's beyond their abilities or comfort level, I hope this tool helps alleviate some concerns and makes the process even easier.