I am experiencing the same issue in my 2006 VW Jetta TDI. At about 60mph (GPS measured), the speedometer would indicate 65mph, so it is about 8% error. I have seen some talks about it and VW claims it is normal as they don't want to responsible for speeding tickets in case it showed less. This has been bothering me and I would like to know what to change in the instrument cluster for the gauge to show the correct speed. Are we talking about modifying the content of serial EEPROM 24C32 or something else?
Not sure if I got from this thread how to do this...
Hey Hytron,
I agree, I would prefer an accurate reading but a lot of people on forums(fora!?) claim that this higher reading is a deliberate safety measure in a lot of modern cars. And it may be that is just a European standard. I think I read that the rule allows for speedos to read higher up to (10% of your speed + 4kph) but they must always read higher. So my 2-3 mph at 30/40mph doesn't seem that high after all! I'm not the best at wading through lots of threads but I guess I read a fair amount on this one and it seems to me the general consensus is you either fiddle the Distance Impulse Multiplier to reflect the right speed,
but then adverseley affect the odometer; or you just live with it reading high. But I'm not 100% about the Distance Impulse Multiplier affecting odometer - there was some debate about that and I'm just erring on the side of caution by assuming it does in my case.
I imagine you already know this but for anyone else who doesn't, the Distance Impulse Multiplier is set via the last(5th) digit of the Instruments softcoding(5 digit field that appears under "17 - Instruments" in VAG COM/VCDS). I can't tell you the precise technical definition but it's to do with how many times the tyres rotate over a given distance so obviously tyre size affects it. If you get tyres with a larger circumference, you're going to want to lower that number or your speedo.
The setting on my last cluster was 0141
4 where the 5th digit,
4, is the Distance Impulse Multiplier.
Setting the Distance Impulse Multiplier in VAG COM(VCDS) by changing the last digit of "17 Instruments" softcoding, you will have a set number of options available and I believe that varies for different models, but for my car there are be 4 values to choose from:
1 = 4345 impulses/km
2 = 3528 impulses/km
3 = 4134 impulses/km
4 = 3648 impulses/km
VCDS also says there's a 0 option which covers all eventualities by getting the impulses through the CAN. However I couldn't code my car to this value using VCDS. I tried hard coding it via other means but the speedo was way off.
These are the results I got from changing these values then testing the speed at 30-40 mph:
0 = get impulses through CAN - speedo reading 14-16 mph
under actual speed
1 = 4345 impulses/km - speedo reading 3-4 mph
under actual speed
2 = 3528 impulses/km - speedo reading 3-4 mph
over actual speed
3 = 4134 impulses/km - speedo reading 1-2 mph
under actual speed
4 = 3648 impulses/km - speedo reading 2-3mph
over actual speed
It's a bad idea to have it reading under, so I went with 4 as it was the closest higher reading.
These options appear as a tooltip when you go into VCDS and click "17 Insturments > 07 Recode" (or "07 Coding" on more recent versions) and click into the softcoding field.
1) To change it via VCDS:
SELECT > 17 Instruments > 07 Recode
overwrite existing value with new value and save it. This should take effect without any kind of cluster reset. I think I just turned the ignition off then on again and it took effect.
2) to change it with an EEPROM editor, you'll need to know
beyond any doubt which addesses correspond to your softcoding and change them all 100% accurately before writing the EEPROM back. I believe that if you make any errors there's a risk of bricking the cluster, though fortunately this didn't happen in my case. But you definitely want to make a backup of your cluster's EEPROM before attempting anything like this so, hopefully, you can restore it if it goes wrong.
So in mine I figured out by changing it in VCDS and comparing files, working out what the numbers were, that it was stored in 3 locations:
i) 00001c, 00001d
ii) 00011c, 00011d
iii) 00021c, 00021d
(remember that the above addresses will vary depending on what cluster you have so DO NOT go blindly trying to change them or you will wreck your cluster if it's the wrong locations)The reason there's 2 addresses for each is there's 2 x 2 digit hexadecimal numbers making up the code. For some reason they are stored in reverse order so you take them, switch them round, then run them through a Hexadecimal > Decimal converter to work out the actual code or vice versa. Here's an example.
So each of those 3 locations above currently stores "86 05" in my case. So if I want to know the digital value that corresponds to, I swithc the numbers first, giving me "05 86", then I put them through the Hex> Dec converter (like this:
http://www.rapidtables.com/convert/number/hex-to-decimal.htm) and it tells me "1414" which matches my cluster's softcoding.
To do this work on mine I used VAG EEPROM Programmer but there's other software that can do this like VAG K Commander. You also need a K-line OBD2 cable and a laptop to run VAG EEPROM Programmer from. Not unusual to need multiple attempts to read/write. The only thing I'd warn you is that sometimes, when I attempted to hard code the 0 value in or cod it back to 1,2 3,4 from the 0 value, it didn't always take and I had to do a new cluster adaptation to get it back to the other value range. SAo my advice to you would be to perhaps stiuck to VAG Com/VCDS and only enter what it allows you to in there.
3) I have read something about actually hard coding the impulse value in to make the speedo reflect the speed. But I was afraid this would throw the odometer out so I didn't go down that route. Plus the Hex addresses provided don't seem to hold that info in my case.
If there's any inaccuracies in the above info, I'm seriously just a begninner at this stuff so don't be too harsh!