How I change my BMW E46 Temperature Gauge Buffer Range

Here I would like to share a guide on how I chang my BMW E46 Temperature Gauge Buffer Range.  The procedure requires BMW Scanenr PA Soft 1.4.

 

The following only applies to facelift cars; I’m sure the same can be done to prefacelifts, but the procedure will differ. Even on the facelift cars, the EEPROM addresses may vary.

 

Read your cluster’s EEPROM with BMW Scanner 1.4.0. Open the resulting file with a hex editor and go to offset 0x34D (my edit: 0x340 may be the correct offset; either way, the codes will be identical). Take note of the following 8 bytes:

Code:

06 0F 32 4B 73 7D 8F 00 10 2D 2D

0x0F = 15ºC = Gauge Start (not sure about this one)

0x32 = 50ºC = First Notch (I know the ZHP guys say it’s 65ºC, so it might represent the end of the blue)

0x4b = 75ºC = Buffer Start

0x73 = 115ºC = Buffer End

0x7D = 125ºC = 3rd Notch (or maybe start of red)

0x8F = 143ºC = Gauge maxed out

 

So as you can see, the buffer is 40 degrees in this case. I would change it to the following:

Code:

06 0F 41 5A 64 6E 78 00 10 2D 2D

 

That still leaves a small buffer of 90º – 100º which is an appropriate range for the car. And if it’s anything like the M3 (which also has a 10 degree buffer), small variations do cause it to wiggle around in the buffer zone; it’s not noticeable on the non-M since the range is so wide. I haven’t tried eliminating the buffer, but I imagine you’d set the buffer start and end values to the same thing (95ºC would be 5F) — I’m not sure exactly how I’d scale the surrounding values, but you can play with that. 

 

(if you’re wondering why I included the unbolded values, it’s because NCS defines that whole region as the coolantgauge characteristic curve)

 

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

 

I chatted with the tutorial writer and from this, he deduced the following:

 

Code:

Factory     0x0F0:  0F 00 32 1F 4B 5A 73 5A 7C 94 7D A4 06 0E 1E 0F

Revision #1 0x0F0:  0F 00 41 1F 5A 5A 64 5A 6E 94 73 A4 06 0E 1E 0F

 

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):

 

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

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):

Code:

 bmw-scanner-v140

 

 

Here are step-by-step instructions with BMW Scanner v1.4.0

 

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.s

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.