I have a number of old threads on this but since it's come up a few times recently, and I've been testing my favorite 88C values for a while and am very happy w/ them, I thought it might be better to consolidate and update this into one current thread.
The issues - slow temp response and high alarm thresholds:
Many of us find the cluster coolant temp gauge behavior to be less than satisfactory or ideal. The factory gauge needle will virtually never move from center during normal operation, until an extreme overheat condition occurs to finally make it move to the right.
In order to display the temperature, the cluster buffers the signal (averages over time), then uses one conversion table to turn raw temp-signal into actual temp degrees C, then uses a 2nd temp-to-needle-angle lookup table to finally set the gauge. The buffering is obviously to make everything look sedate and 'fine at all times' to the layman so he/she doesn't worry "oh no my gauge is moving around!" but it means you don't see spikes quickly. Then also the BMW gauge 'angle' tables are setup from Munich so that the needle 'sticks' in the upright zone for anything vaguely in the range of 'normal' and short of a major failure. Again - make it look 'all is well all the time!' as much as possible. However between the buffering and the angle you don't get much warning when something goes wrong and as many have noted over the years - the needle seems to almost never move after the car warms up.
Ideally many would prefer an 'old school' gauge behavior out of the display, one that acts like a true temp gauge showing both small and large movements, giving some early indication of when the coolant temp is beginning to rise for instance.
First - all the coding for the gauge needle resides in the cluster and therefore, with some slight limitations, custom coding the curve for gauge points is perfectly possible.
Second - in addition the overheat alarm that appears in the cluster when the car overheats is at 130C by default, which is fairly high. Many would also like to see an alarm well before that point. Well that is coded through the LCM and therefore is also very customizable.
Before going on, here's the...
Disclaimer: These mods require a working coding tool - NCSExpert and/or PASoft - and solid understanding of how to code including adding new parameters. These are not mods that can be accomplished with only ticking boxes and saying 'OK'. They aren't too dangerous and you shouldn't be able to screw things up too badly but anybody wanting to undertake this is on their own and if you brick a cluster or module its on you... And please don't ask here "how do I learn to code and what is a computer and where do I get a cable and what's an NCSExpert etc. etc. etc." Those questions and answers all are well covered elsewhere in the forums, specifically in the diagnostic software section. If you are stupified by any of the concepts below, there are many forum members w/ software and capabilities who might be able to help you with this, some for free and some as a service, including but not limited to the swell guys known as blackknight530i and DUDMD (no business affiliation... just good guys). Consider yourself disclaimed.
Background - key temperatures:
Worth nothing before going any further, what some of the key KTMP (coolant temp) points are for these cars:
80C - Theoretical 'bottom' of OE MAP range (if it was powered all the time)
90-95C - Roughly 'normal' operating range for 88C BMW diesel thermostat
105-110C - Roughly 'normal' operating range for OE MAP thermostat
117C - AC partial cut-out temperature
120C - AC full cut-out temperature
130C - OE coolant temp alarm
Temp curve tweaks:
Adjusting the temp curve consists of tweaking the gauge angle values with two factors in mind - where 'normal operating range' will sit, and, how 'steep' can we make the gauge movement for the most temperature resolution or granularity. Basically the desire for most people will be to see the most movement of the needle per each degree of temperature change. For certain technical coding reasons, there are some limitations on how much can be done however.
The values provided as suggestions below are as 'steep' for each 'center value' as can be achieved without adjusting additional tables which may or may not have problematic secondary impacts elsewhere in the car.
And because of the first factor of consideration - where center sits - the tables should very much be different for an 88C non-MAP thermostat (or otherwise modified/aftermarket t-stat) than for those running the factory thermostat. Therefore below are two separate sections...
Mechanics of coding:
In order to change gauge angle, all that has to happen is to edit a single temp-to-angle table string in the instrument cluster and provide a custom value for it. There are 2 ways to accomplish this using the most common coding software available to people..
Method 1 - Using NCS Expert, add the desired custom value for the parameter "KUEHLMITTELTEMP_ANZEIGEW" - either using NCS Dummy functions for adding a custom parameter value or by hand editing the config files - and then use normal NCS Expert / Dummy methods to code that new value to the cluster i.e. the IKE/KMBI. If any of that is Greek Rocket Science to you, see the disclaimer.
Method 2 - Using PASoft, download the binary hex for the module coding, and edit the strings beginning at 0x00F4, and at 0x029C (the parameter appears twice in the binary). If any of that is Greek Rocket Science to you, see the disclaimer.
For various raisins, I had trouble coding w/ NCS Expert but some of those raisins are due to oddball stuff in my config so Method 1 may work fine for some folks - I think I was able to use it fine in the past w/ older setup, but at the moment I'm coding my own car w/ Method 2.
OEM MAP Thermostat:
Because of technical reasons involving 'incremental values' and the value of one byte = 128, there is only so steep the curve can be made without screwing up other things. However there is another choice which is where 'normal' sits. If we place 'normal' on the left hash instead of the middle centered hash (like some Audis do from the factory BTW), then we have more room to steepen the curve. Therefore below are two values - one for those who insist on a 'centered must be normal cuz that's how they do it in racecars!', and one for those who would take more-needle-movement in return for accepting the 'normal' to sit on the left hash.
For these t-stats the movement won't be too profound during 'normal' conditions but it will move faster and more extreme when you get to the further ends of pperating condition and certainly sooner than the factory needle moves (i.e. 2 seconds before meltdown).
Option 1 - OEM MAP T-stat - Factory centered operating point with steepest curve before/after.
2A0F7E327E4BFF737478237D
Option 2- OEM MAP T-stat - Normal op point on left hash(dot) with max steep curve before/after.
1C0F4632684BFF73CF78237D
88C BMW Diesel Thermostat:
The 88C T-stat provides more room to work, and therefore we can easily center the gauge and have a nice steep movement of the gauge during regular driving and a nearly perfect linear curve of movement to temperature. This works very very nicely, in normal conditions on cool days the needle will dip, on very hot days w/ AC on the needle will rise.... all things your coolant is doing all the time anyway but you can't see due to BMW's factory gauge philosophy.
88C T-stat - Centered operating point
540FC432854BFF731978077D
CHART TIME!
Cluster overtemperature alarm tweak:
In addition the alarm temperature for the dash can be recoded fairly easily. Factory options are 125C (I6's mostly) or 130C (the V8's) - the default 130C temperature for the V8's is certainly very high, and many of us would prefer to have been warned long before it gets to that point.
Mechanics of coding:
All coding for the alert is in the LCM (I know seems weird but LCM controls sending alert messages to the cluster).
In this case it's a bit more involved you need to tweak a couple things to enable the custom alert value to work for some reason... but this is easily accomplished w/ NCS Expert & NCS Dummy.
1. Change the TWO values (aka there are 2 different ones w same name) for KUEHLMITTLETEMP to 'melden' aka reported.
2. Ensure KUEHLMITTELUEBERTEMP_CAN is set to 'nicht activ'.
3. Then edit the value for MOTOR_UEBERTEMP to the temperature you want to be alerted for. Factory options are 125C (I6's mostly) or 130C (the V8's) so V8's can lower the temperature by 5C without any custom parameter work. In order to get anything more than that, a custom parameter value needs to be added however. Convert your desired temperature to a hex value then add that as a parameter value option... And if any of that is confusing... see disclaimer.
OEM MAP Thermostat:
While getting sooner notice is probably a really good idea, with a factory T-stat you prob don't want below 115C or it will 'false alarm' frequently during non-crisis events. Given the AC is fully cut out by the DME at 120C one might think you'd like to know at or around that temperature for instance, so something around 115-120C is probably a decent value for a stock car. Possible hex values you might like to choose below.
115C = 0x73
117C = 0x75
120C = 0x78
88C BMW Diesel Thermostat:
For an 88C T-stat, I found 105C to be a bit too low, and on hot slow traffic AC days I'd get the alarm and despite knowing in my mind "well it should still be fine according to the gauge..." it could be a bit nerve wracking... 115C seems to be a good compromise, and I know I'll get the alarm still before the AC starts to kick out. Anything 110-115C is probably good for these cars.
110C = 0x6E
112C = 0x70
115C = 0x73
HTH. GG.
Bookmarks