Wednesday, January 10, 2007

Automotive software bugs

My phone rang. It was my favourite auto-technician asking if I can check his workshop PC as some Bosch technician said it might be a hardware problem. Just before dark he arrived with the PC and the KTS unit (the KTS is a small embedded device that sits between the PC and the vehicle's ECU). We fired up the PC and up it came, diagnosing one fault on the golf: Idle speed too high. We cleared the error memory and tried again, but it refused to reconnect to the KTS unless we reboot first. After much back and forth we eventually got one of those dreaded "illegal operation" errors, followed by this beauty:


Zugriffsverletzung bei adresse 047D0F6B in modul KTS500_SD_IDENT.DLL


While trying to find a way to reproduce the error we finally got a notice telling us that the firmware on the KTS is outdated. Cool, that sort of makes a lot of sense. We update the firmware and the problem appears to be gone. My friend goes on his merry way.

The next morning my phone rings again. Apparently the gremlin is back, but it only affects certain vehicles. A service announcement from Bosch says to switch the KTS protocol version back to 1.0, which seems to have little effect.

Now did I mention that this piece of crappy software costs several thousand rands? What's more, if you don't buy the next upgrade the KTS stops working. If you don't buy the add-on package every year (addons include petrol ignition systems, diesel ignition systems, wiring diagrams, service history etc etc) the old information you already paid for is removed from your computer. These guys make Microsoft look like a girl scout.

So I consult with someone I know who builds diagnostic tools for Volkswagens and he tells me what the problem is with my golf's idling speed. The golf 1.4i (and several others, eg Polo Playa 1.4i) is fitted with the MP9 fuel injection computer. The MP9 comes from Brazil. It has a bug in the firmware which cannot be fixed because the source code has been lost.

The bug is an interesting one. The ECU takes readings from the throttle body to determine throttle position. To compensate for dirt buildup in the throttle body, it calculates the rest position and factors it into the calculation. The designer however did not allow for the condition where a throttle body might return to a clean state. With a new or cleaned throttle body, the resting position reading is of course a lot lower: the ECU subtracts what it thinks is the correction factor and causes an overflow to occur. Over time the effect gets so bad that the car won't idle properly at all.

The only way to fix the problem is to reset the values stored in EEPROM to the factory defaults. Any VW dealer will however tell you that you need to replace the throttle body AND the ECU, an excercise that will set you back several thousand South African Rands. Apparently the fix is as easy as 1) clean throttle body with a bit of paraffin and 2) reset the values stored in the ECU. You cannot perform this operation with the Bosch ESItronic software though. But apparently there are several others that can.

0 Comments:

Post a Comment

<< Home