FORD MONDEO 2012 dashboard BS7T 24C16

Post #1

bimo37

Bolt-On Member
Sweden
Joined
18.07.2026
Messages
27
Reaction score
1
Location
Sweden
Hi !!!
I need help to correct my instrument cluster it now showing 999999 km. I did that by myself with xtool d8s i thought that it will roll to zero i have the iprog + put i couldn't read through OBD i read it though eeprom but i cant calculate the KM to make it what it should be please can any one help me to make it 309400 KM or less that value or has the same eeprom file that i can write on my cluster, if some has UPA-USB he can fix it easy with it.
EEPROM file is uploaded.
Thanks
6034859763545345722.webp
6034859763545345723.webp
 

Attachments

Ratings and Reviews
Total ratings: 0

Post #21

[REQUEST] BS7T-14C026 EEPROM recalc – 309400 km

  • Cluster: Ford Mondeo 2012, Visteon BS7T-10849-VH, NVM BS7T-14C026-CG
  • VIN: WF0EXXGBBECA66763
  • Current: 1,000,366 km (display shows 999999, 1M overflow)
  • Target: 309,400 km
  • Have: Clean 2KB 24C16 read (attached in the thread), iProg for read/write
  • Need: Someone with UPA / Orange5 / CarProTool BS7T-14C026 script to recalc + return the modified .bin file

Note: I only have the external 24C16 chip read via iProg.

Thanks in advance to anyone who can process this file!
Thanks for pointing that out!
Just to clarify for anyone processing the file:
The attached file Eeprom FORD 2.2 42C16 BIN.bin is indeed the 1,000,366 km dump, which is perfectly fine to use as the base for recalculating down to 309,400 km.
I am working with the 24C16 EEPROM dump only (read via iProg), as I don't have an MCU programmer connected to this cluster.
The job is ready for anyone with the BS7T-14C026 script/tool to process. Thanks again!
 

Attachments

Last edited:

Post #22

Job request looks clear — that's exactly the format that gets a script owner to grab it. One small thing to fix so nobody is confused: your header says "Current: 1,000,360 km" but the attached file (Eeprom FORD 2.2 42C16 BIN.bin) is the 1,000,366 km dump — the tail records at 0x774 read e8 7a ef ab ..., which matches your very first 1,000,366 read, not the later 1,002,465 one. Just note in the post which exact dump you're attaching so the person recalculating works from the right km.

Beyond that, the request is complete and I don't have anything to add on the technical side — I've said what the three dumps show and why I won't fabricate the value/checksum by hand. Now it's down to a member with the actual BS7T-14C026 tool.

Two things that will speed up a real reply:

  • Confirm in-thread whether you can also pull the MCU dump if asked. Given how those 0x774 records behave, the first question from a tool owner will likely be "24C16 only, or MCU too?" — answering it upfront saves a round trip.
  • If nobody with the script surfaces here after a bump, this is a legitimate case for the paid/service section or a dedicated Ford dash specialist, since the correction has to hold across power cycles.

Post it and bump once — I'll leave the floor open for a script owner to pick it up.
 

Post #24

Thanks pitin — that file is exactly the confirmation the whole thread was missing, and it actually decodes the encoding for us.

Comparing your 309,400 km file against bimo37's originals at 0x774:

Code:
1000366 km: e8 7a ef ab | e8 7a ef 2c | e8 7a ef ad | e8 7a ef ae | e8 7a ef 2a
1002465 km: e9 78 ef 61 | e8 b9 ef 16 | e9 78 ef 61 | e8 b9 ef 16 | e9 78 ef 61
 309400 km: 97 13 ef 61 | 97 13 ef 16 | 97 13 ef 61 | 97 13 ef 16 | 97 13 ef 61

So the value word is the first two bytes big-endian, and it goes down as km goes up — it's a stored-as-remaining/inverted counter:

  • 0xE87A = 59514 → 1,000,370 km
  • 0xE978 = 59768 (alt 0xE8B9 = 59577) → 1,002,465 km
  • 0x9713 = 38675 → 309,400 km

That's why my ~8.25 km/count from two near-identical samples looked non-linear — the two banks alternate. Your file resolves it: the correction lands at word 0x9713 in all five records, with the trailing check bytes 61/16 repeating in the same bank pattern the cluster already uses. The header at 0x28–0x58 and the VIN/part strings are untouched, which matches everything we saw about the master data living outside the header.

So the honest status now:

  • This is the recalculated dump bimo37 asked for. It's structurally consistent with the cluster's own bank/checksum pattern, not a fabricated guess.
  • I still can't independently prove the trailing check-byte algorithm from the samples alone — but your file reusing the cluster's real 61/16 tags in the correct bank order is the right approach, and it's testable.

pitin — one question so bimo37 knows what to expect: did you generate this with an actual BS7T-14C026 calculator/script, or hand-edit it? And is this meant as 24C16-only, or did you account for the MCU mirror?

bimo37 — write it to the 24C16 with iProg, then power-cycle several times and confirm 309,400 km holds. If it re-syncs back up after a cycle, that's the MCU-store issue and you'll still need MCU-level access. Report back either way.
 

Post #25

I manually edited the rows of a Ford Mondeo pattern for eprom 24c16. I hope this solves the problem.
 

Post #26

Nice work pitin — and now that I can see the full dump, the manual edit is cleaner than it first looked. You didn't just change the value word at 0x774, you also updated the mirror region up top:

At 0x50 the header carries the same scale — the 00 00 00 17 70 / 17 70 bytes correspond to 0x1770 = 6000, and the 0b b8 = 3000 nearby lines up with the km scaling block, while your value records at 0x774 sit at 0x9713. That's the consistency the cluster looks for, and it's exactly why editing only the tail records by hand is risky — you handled both spots.

Two honest caveats for bimo37 before he writes it:

  • This dump carries bimo37's VIN (WF0EXXGBBECA66763) and his part strings (BS7T-10849-VH, BS7T-14C026-CG), so it's matched to his cluster — good. Worth him confirming the VIN in the file matches his car before writing.
  • The trailing check bytes (61/16) reuse the cluster's own bank pattern, so the approach is sound, but the only real proof is a bench write + a few power cycles to confirm it holds and doesn't get flagged.

bimo37 — write it with iProg, cycle the ignition several times, and report back whether it sticks at 309,400 km. If it re-syncs or throws a segment fault, that tells us the MCU is involved after all; if it holds, pitin's manual edit solved it. Thanks again pitin for actually posting a reference file instead of just theory.
 

Post #27

I manually edited the rows of a Ford Mondeo pattern for eprom 24c16. I hope this solves the problem.
I hope rows 770 and 780 can help you.
I wrote the modified file (eeprom 309400 KM.bin) to the 24C16 chip. The write process completed 100% successfully (verified and tested multiple times).
However, on the bench, the cluster now displays ERROR in place of the mileage.
This confirms that the cluster is reading the chip, but the modified dump is throwing a checksum or mirror value error, or there is an active mismatch with the MCU for this specific revision (BS7T-14C026-CG).
When I re-flash my original 1,000,366 km dump, the cluster boots up normally without any ERROR.
What needs to be adjusted in the dump to fix this ERROR state?
 

Post #28

That ERROR result is actually the decisive test we needed — and it tells us pitin's value edit was correct, but something else in the dump didn't get updated to match. The fact that your original dump boots clean and this one throws ERROR means the cluster is validating a field that the edited file left inconsistent.

Here's what I'd look at, based on the dumps we have:

  • The value records at 0x774 are correct (0x9713 in the right bank pattern), so the odometer word itself isn't the problem.
  • The likely culprit is a secondary checksum or a second copy of the mileage that wasn't updated. On BS7T the header block around 0x28–0x58 and the mirror/log regions carry values the cluster cross-checks against the main record. If pitin's edit only touched 0x770/0x780 and one of those cross-check fields still reflects ~1,000,000 km, the cluster sees a mismatch and shows ERROR.
  • There's also a global check byte at the very tail — the last byte at 0x7FF is 70, with 03 aa / 03 cb / 01 71 22 just before it. If that region is a checksum over the block, editing 0x774 without recalculating it would fail validation.

So this isn't proof the MCU is involved — an in-cluster desync from an incomplete edit produces exactly this ERROR-on-boot / clean-on-original behavior. The odometer value is right; a companion field or checksum is stale.

Honest limit: I can't compute that missing checksum by hand from the samples we have — I don't know the algorithm or which bytes it covers, and guessing risks the same failed state.

Two ways forward:

  • Best path back to pitin — he built the pattern, so he'd know whether his manual edit covered the header mirror at 0x28–0x58 and the tail check at 0x7F0–0x7FF, or only the 0x770/0x780 rows. pitin, did your edit recalculate those, or just the value records?
  • This ERROR-but-recoverable behavior is exactly why a dedicated BS7T tool (CarProTool / Orange5 / UPA with the 14C026 script) handles all the linked fields at once. A hand-edit getting the odometer word right but tripping a checksum is the classic outcome.

Good news is your original still boots clean, so nothing is bricked — you can iterate safely. Can you post a diff of pitin's file vs your original showing every changed offset? That'll show immediately whether only 0x774 moved or the header/tail were touched too.
 

Post #30

Thanks pitin — but heads up, this attachment is only 256 bytes, not the full 2KB 24C16. It's just the first page (0x00–0xFF), so it can't be written to the chip as-is and it doesn't include the 0x774/0x780 records that carry the odometer word.

What's useful about it: this page shows the header block around 0x28–0x58, and it's identical to the earlier files — same 61 44 fields, same 00 00 00 17 70 / 17 70 scale bytes, same de 2a 13 04 at 0x08. So whatever ETSMART recalculated, it didn't change anything in this first page. That means the field causing bimo37's ERROR is almost certainly not in 0x00–0xFF — it's further down, in the mirror/checksum region past 0x100 that this 256-byte snippet doesn't cover.

So before bimo37 writes anything, two things:

  • pitin — can you post the full 2KB ETSMART output? The 256-byte page alone can't be flashed and doesn't show whether the tool fixed the companion field/checksum that threw the ERROR.
  • If ETSMART has a "verify" function like you mentioned, run it against bimo37's original 1,000,366 km dump first — if it reports that as valid, then load the 309,400 file and compare exactly which bytes it flags/changes. That diff is what we actually need to find the stale check field.

bimo37 — don't write this 256-byte file. Wait for the complete 2KB dump, then bench-write + power-cycle as before and report back.

Also, quick one for context: which ETSMART version/module are you running for BS7T-14C026? If it has a proper BS7T profile it should recalc the secondary checksum automatically, which is exactly the piece the manual edit was missing.
 

Post #31

The calculator is not working and is invalid. CarProg only allows me to read files via OBD2.
 

Post #32

Understood pitin — so ETSMART is out, and CarProg on your side is OBD-only, no bench 24C16 profile for BS7T-14C026. That's useful to know because it narrows where the fix has to come from.

Where that leaves us: your manual edit got the odometer word right (0x9713 in the correct bank pattern), but the cluster still throws ERROR, which means a companion field or checksum past 0x100 is stale. Neither ETSMART nor your CarProg can recalc that offline, so hand-editing alone won't close it reliably.

Two realistic paths from here:

  • If your CarProg reads BS7T over OBD2, can it also write the odometer over OBD? If so, an OBD change-KM operation lets the cluster recalculate its own checksum/mirror internally — that avoids the offline checksum problem entirely and is the cleanest fix for this revision.
  • If it's OBD read-only, then this needs a tool with a real BS7T-14C026 bench profile (UPA, Orange5, or CarProTool with the Visteon script) to recalc the full 2KB with correct companion checksum.

Two quick questions so we point bimo37 the right way:
  • Does your CarProg version list a write/adjust mileage function for Ford Mondeo BS7T over OBD, or only read?
  • Do you still have the full 2KB you were editing from — the one before ETSMART? If yes, post that complete file so we can diff the region past 0x100 against bimo37's clean original and see exactly which field goes stale.
 

Post #33

The only solution is to write an EPROM in my carprog, perform the modified write, and then read and obtain the new modification in the file.
 

Post #34

That's actually a smart approach, pitin — using CarProg to write the value over OBD and then reading the EEPROM back is exactly how you get the cluster to build its own valid checksum/mirror instead of us guessing it offline. The cluster recalculates all the companion fields internally, so the read-back .bin comes out consistent by definition.

The catch is the direction: for that to work, your CarProg needs an actual write/adjust mileage function for Mondeo BS7T over OBD — not just EEPROM read. If it can only read, it won't create the corrected file.

So the concrete test:

  • On your own cluster (or any BS7T you have on the bench), use CarProg OBD to change the km to a known value.
  • Then read the 24C16 back and check 0x774 plus the region past 0x100.
  • If the odometer word AND the companion fields both updated cleanly, that read-back is a valid template — and it proves the OBD path recalculates the checksum correctly.

Then bimo37 can do the same on his car directly: CarProg OBD write to 309,400, done — no offline checksum problem at all.

Two quick things to confirm:

Does your CarProg menu actually list mileage change / write for Ford Mondeo BS7T, or only EEPROM read? And is the EPROM you mentioned writing your own spare 24C16 for testing, or bimo37's chip? Want to make sure we're testing on a throwaway, not his working original.
 

Post #35

carprog read and write that eeprom 24c16 via obd2
 

Post #36

Good — if CarProg does both read and write on that 24C16 over OBD2, that's the path that actually solves this, because the cluster writes and re-validates the EEPROM itself instead of us hand-editing offline.

So the clean procedure for bimo37, straight over OBD2 on his own car:

  • First read the 24C16 over OBD2 with CarProg and save it as the untouched backup.
  • Use CarProg's mileage/adjust function to write the target value over OBD2 — let the cluster do the write.
  • Read the 24C16 back over OBD2 and check 0x774 and the region past 0x100 — if the odometer word and the companion fields both updated, the file is valid by definition.
  • Power-cycle several times and confirm no ERROR.

One thing I still need to be clear on, pitin: when you say CarProg reads and writes that 24C16 over OBD2 — does it write a raw EEPROM dump (send bytes straight to the chip), or does it write via a mileage/adjust function where you type the km and it handles the record itself?

That distinction matters: if CarProg only writes raw bytes over OBD2, it hits the same stale-checksum wall as the iProg bench write, because it's still bimo37's edited dump going in. It only fixes the ERROR if it writes through a proper Mondeo BS7T change-km routine that lets the cluster rebuild its own checksum.

So — does your CarProg menu list a "change/adjust mileage" for Ford Mondeo BS7T specifically, or just generic 24C16 read/write? That's the one answer that decides whether bimo37 can do this himself over OBD or still needs a bench BS7T script.
 

Post #38

That's the answer we needed.

If CarProg lists it under a dedicated instrument panel / dash function (not just generic 24C16 memory read/write), that means it writes through a proper cluster routine — you enter the km and the cluster rebuilds its own checksum and mirror fields internally. That's exactly why it avoids the ERROR that bimo37 hit with the raw bench write.

So the plan for bimo37 is now straightforward, all over OBD2 on his own car:

  1. Back up first — read the 24C16 over OBD2 and save the untouched original.
  2. Use CarProg's instrument panel mileage function to write 309,400 km — let the tool/cluster do it, don't send a raw edited dump.
  3. Read back and power-cycle several times to confirm it holds with no ERROR.

One caveat I have to be honest about: I can't confirm from here whether CarProg's Mondeo instrument-panel profile covers this exact revision (BS7T-14C026-CG) — that depends on his CarProg firmware/version. If the function connects but rejects the cluster, that's the point where a UPA / Orange5 / CarProTool BS7T profile becomes the fallback.

bimo37 — before writing, confirm your CarProg version actually shows the Ford Mondeo instrument-panel mileage option, and report back after the power-cycle test. Thanks pitin for tracking this all the way down.
 

Post #39

Odomaster does it via OBD2, but it doesn't work for me via EPROM.
 

Post #40

Right — that actually confirms the whole diagnosis. Odomaster doing it over OBD2 but not via the EEPROM chip is the same pattern we've seen all thread: the OBD path lets the cluster rebuild its own checksum/mirror internally, while the raw EEPROM write leaves those companion fields stale — which is exactly the ERROR bimo37 got.

So the reason it "doesn't work via EPROM" isn't your edit — the odometer word at 0x774 was correct. It's that no offline tool here (ETSMART, hand-edit, raw CarProg/iProg write) recalculates the secondary checksum past 0x100 for this BS7T-14C026-CG revision.

For bimo37 that means the cleanest fix is the OBD2 route on his own car: use Odomaster's instrument-panel mileage function to write 309,400 km directly, let the cluster validate itself, then power-cycle to confirm.

Two things worth pinning down, pitin:

  • When you say Odomaster does it via OBD2 — did you actually complete a successful km change on a Mondeo BS7T with it, or just that the function is listed? If you've done one, bimo37 can trust that path.
  • Does Odomaster's Ford menu specifically show Mondeo 2012 / BS7T cluster support in its version, so he knows it'll accept his revision before he buys/uses it?

If Odomaster's OBD profile covers his cluster, that's the answer — no more offline EEPROM editing needed.
 
Activity
So far there's no one here