Saw the topic yesterday and I just digged into that because this temp gauge really pisses me off the way BMW has left it to behave on E53 (and other models).
Good news here is that I found a really easy way on making the gauge work like it should, you don't need to change the EEPROM and bother with HEX code strings in LCM. All you need is to change one coding option. The right place to do this is the KOMBI module. I'm with the high cluster on E53 3.0d facelift model so this is KMBI_E38.C12 module in my case in NCS Dummy. Just find the
KUEHLMITTELTEMP_ADC_WERT option wich is setting of the characteristic curve of the gauge. The values might differ, depending on your cluster and engine.
If you take a look on the default value kennlinie_03 you will see the HEX code is an exact match of the celsius positions of the gauge. Pay attention in the DATA string, it's the HEX values converted to DEC in celsius.
There is a pre-set option kennline_04, wich suits my needs perfect, select that and recode witn NCS Expert.
Values here are:
15 60 85-100 107 114. Those makes more sense.
Interesting why BMW chose a factory setting of kennlinie_03 instead of this?
Well, rebuilding/replacing an overheated engine could be costly in the local dealer I guess.
After recoding your cluster the gauge will behave correctly, tested it while driving with the hidden menu TEST 07 wich is the coolant temp sensor reading in real time and the values are spot on! Also I think you can add your own string and modify the values (keep the 00s in place), but in my case I found the given option of the curve good enough.
One more thing, after you recode you will need to change MOTOR_UEBERTEMP (overehating cluster alarm) in LCM module to 114 c celsius or lower! I was surprised to find out this setting was completely missing in my FSW_PSW.TRC after recoding KOMBI because it was now out of range. Default was 125_grad_celsius, I had it changed before to 115 c and it was still missing because the maximum temperature of the cluster gauge will be 114 c celsius. So you have to set that, just add new parameter before you load the .TRC in NCS Dummy and hit Update module and recode.
Good luck