I’ve got a 2004 325i and the temp gauge is showing overheating so I changed out the water pump, thermostat, and coolant temp sensor. HOWEVER in the secret menu under the coolant/engine temp it shows 0121 which to my knowledge means 12.1 C. Which would be like 50F. Note that whenever I overheat it doesn’t go into limp mode and though it feels pretty hot as an engine should it doesn’t smoke or anything. Also note that my coolant is staying pretty full.
I have a European car and OBD displays in C not F.
For example, see attached . It shows 87C. No decimal places.
If yours is the same that would be 121C not 12.1C which is hot.
It would have to have been standing for a few days in zero temperature to register 12.1C.
The 121C is at the top of the range as it happens.
You don't really want it over 120C.
If your coolant is showing full you may have an air lock in the heater core.
Are you getting heat out of the heater?
I would recommend you bleed the cooling system properly.
See the video. (There are other videos on YT)
I run the engine observing the temperature until it reaches 98C which is the point that the thermostat
opens and allows coolant into the radiator.
You do this with the filler cap off. You will lose coolant through the ET as it expands.
Be ready to top up.
Make sure that you are getting heat from the heater vents.