Just to put this in writing in case it helps anyone, here's my instrument cluster saga:
The cluster problems started with some intermittent shut downs and "twinkling" of all of its lights. This was not just the LCD going bad, as I was aware of that issue, but this was a problem with the whole cluster. It eventually failed completely, so I bought a used one on eBay. After trying several clusters, I discovered that I required one compatible with the old two-wire fuel sender system that my car had, else the fuel gauge would not work. Even though there are programming options in SDS to set the cluster for either sender system, it never worked to set a revised cluster to the older two-wire sender. I read posts where some people who had swapped W209 clusters to the W203 mentioned a wiring change to fix this, but I never found the exact details. I finally just looked for a cluster from a MY2001 with the old part number on it.
Everything worked, but since it was not properly coded to the car, the odometer would read "------". As a security feature, the odometer reading is stored in two places – the EIS (ignition switch) and the cluster. If these do not match, at least within something like 100kms, then the odometer display is blanked out. Only a brand new "virgin" cluster can have its odometer value reset to match the EIS. Since a new cluster was nearly $2,000, I just drove it like this for a few years. I even discarded the original cluster, not thinking that I might need to salvage its EEPROM chip. Besides, the car was being driven by my 16 year-old, so I figured the chances were high that she'd wreck it. Surprisingly, she never did (well, not enough to total it), so eventually, when I titled it to her, we needed the odometer reading.
We don't have vehicle inspections here, but I did have to sign an odometer affidavit and I wanted it to be correct. The odometer reading can be pulled from the EIS, but I could not get SDS to read it. Since SDS worked for other things (ECU/TCU), and worked just find on my CLK, I began to think that this was some sort of designed lock-out since the two odometers did not match. I eventually discovered that the problem was with the MUX on my SDS system. The cheap Chinese part had failed in such a way that it would still work just fine on "facelift" cars (like my MY2007 CLK), but would not work on some systems (cluster, EIS, ACC and SRS) on pre-facelift cars (like the MY2002 C240). I ended up buying a new higher-quality SDS MUX.
I did some research and discovered that if I would zero the odometer value stored in the cluster, then I could use SDS (with a working MUX!) to code it to the car, copying the odometer from the EIS. I talked to a guy at Palo Alto Speedometer and he would do it for about $300 for overnight service. I did more research and found there are tools to do this that plug into the OBDII or the cluster’s connector, but they are expensive (might as well buy a new cluster). Others required de-soldering the EEPROM. I decided to try one of those, so I found one called Carprog on eBay for under $100.
What I needed to do was read the contents of the chip into Carprog, edit the file to set the odometer value to zero, then rewrite the data to the chip. The odometer reading is actually stored twice on the chip – hex range 0000-001F and 0300-031F. Zeroing it means setting the 32 bytes in each of those two ranges to “FF”. I removed the cluster and disassembled it to get to the circuit board. The EEPROM chip is very tiny. It’s an 8-pin SOIC, so it’s less than 5mm long and the leads are less than 1mm wide. In attempting to de-solder the surface-mounted chip, I broke a leg on it. So, I noted the chip part number and ordered a 10-pack of them.
The problem was, I did not have a base program for the chip. The chip from the “used” cluster had a broken leg and I could not read it. The entire chip contents cannot be blank – it needs the base code for the car’s cluster. I found where someone had uploaded the original code from their chip online and used that. I then discovered that the Carprog clip that connects to the chip's leads was improperly wired. After some research there, I got the proper wiring and was able to program a new EEPROM chip with base code and zero miles. Then, when trying to solder the chip back onto the cluster, one of the surface contacts on the circuit board broke loose. I was able to rig it with a jumper wire, though. I mention this to note what a challenge the soldering is. I even used a variable-temp soldering iron, but it’s still a very tedious job, at least for me.
So, with the zero-mile chip in place, the next step was to use SDS to re-code it to the car. I went into cluster programming and used the “initial Startup” option and chose “Initial startup with manual settings input for new control unit (For example: the previous control unit can no longer be read).” This copied the odometer from the EIS and prompted me to input the various settings like national variant and what features the car had or not (KeylessGO, Distronic, NAV, etc.) Once all that was done, the odometer reading was correct and everything was working except for one problem - upon startup, I get this big red warning on the MFD that states "Trasnfer Case LO/HI!" Apparently, the base EEPROM code I had downloaded was for a car with two-speed transfer case, and since my car doesn't have that, it gives this error. Just ignoring it with the steering wheel buttons each time seems to work. I can only assume the EEPROM code I used came from a G-Class as it uses the same cluster as the W203 and it has a two-speed transfer case.
Anyhow, other than the transfer case message, the cluster works fine. I have not had a chance to find a copy of proper base code, but then again, I haven’t spent much time looking. The thought if dealing with that tedious soldering is not very enticing.
I found some really good information on this site:
Digital Kaos
This is where I got the base code and instructions for zeroing the cluster's mileage, as well as discovering that my SDS MUX was bad.