Staging VW CAN
Con questo progetto voglio cimentarmi nello studio della rete CAN tramite l'utilizzo di Arduino. Il mio obiettivo e' quello di riuscire a controllare piu' funzioni possibili (quindi tutto cio' che e' possibile fare mediante linea CAN). Principalmente voglio ottenere due cose:
Una volta ottenuti questi due punti fondamentali voglio visualizzare tutte le informazioni principali che ho ricavato dai sensori, sul display LCD del quadro strumenti. Non sara' facile visualizzare qualcosa sul display quindi il primo passo e' quello di ricavare i dati e visualizzarli sul monitor seriale dell'IDE di Arduino oppure su un display LCD 16x2/20x4. Prima di iniziare pero', e' consigliato studiare le basi della CAN.
- Informazione: ricavare piu' dati possibili dai sensori (pressione turbo, coppia sviluppata, temperature, flusso d'aria, ecc.)
- Controllo: gestire attuatori e quadro strumenti (spie, lancette, display LCD, ecc.)
Una volta ottenuti questi due punti fondamentali voglio visualizzare tutte le informazioni principali che ho ricavato dai sensori, sul display LCD del quadro strumenti. Non sara' facile visualizzare qualcosa sul display quindi il primo passo e' quello di ricavare i dati e visualizzarli sul monitor seriale dell'IDE di Arduino oppure su un display LCD 16x2/20x4. Prima di iniziare pero', e' consigliato studiare le basi della CAN.
Hardware
Per questo progetto utilizzeremo Arduino Uno (che poi diventera' Arduino Mega se tutto va per il verso giusto, dato che ci sono talmente tante cose da fare che la memoria di sicuro non bastera' come e' quasi successo per il progetto Panda 4X4 OBD) accoppiato ad un modulo CAN gia' pronto, composto dall'IC MCP2515 (Controller CAN) e il TJA1050 (Transceiver).
Come potete osservare, qui a destra viene descritto il modulo CAN per Arduino. Al centro abbiamo il quarzo da 8MHz (con la classica coppia di condensatori da 22/33pf) per far oscillare l'MCP2515. Nei paraggi abbiamo il TJA1050. Poi c'e' l'MCP2515 e alla sua sinistra l'header dei pin da collegare ad Arduino per la comunicazione (INT, SCK, SI, SO, CS - Comunicazione Seriale SPI). Poi sotto all'MCP2515 c'e' una piccola sezione di alimentazione composta da diodo LED per visualizzare lo stato ON/OFF e relativo resistore di limitazione della corrente. Poi un paio di condensatori per filtrare l'alimentazione. Sotto al TJA1050 c'e' un jumper utilizzato per "inserire" il resistore da 120ohm presente sulla PCB tra la linea CAN High e CAN Low. Nel complesso l'hardware e' abbastanza semplice, c'e' veramente poco da vedere. Piu' avanti, se i primi step del progetto vanno a buon fine, posso iniziare ad aggiungere ulteriori moduli, a quel punto il circuito diventera' piu' complesso e realizzero' uno schema elettrico. Qui sotto trovate sia lo schema elettrico del modulo CAN che uno schema di esempio applicativo. Non iniziero' il progetto collegandomi direttamente al connettore OBDII dell'auto, ma lavorero' a banco con un quadro strumenti recuperato da un VW Touran e provero' ad interfacciarmi con il Controller CAN integrato al quadro per poi provare a controllare gli attuatori del quadro strumenti.
|
Quadro Strumenti
Come accennato precedentemente, ho intenzione di iniziare con un modulo singolo invece di collegarmi direttamente al connettore OBDII dell'auto. In questo modo evito di captare messaggi CAN di tutte le unita' di controllo installate nell'auto. Quindi utilizzero' un quadro strumenti recuperato da un VW Touran e provero' a gestirlo singolarmente (si tratta di un Half-FIS della Siemens). Dopo che sono riuscito a far funzionare tutto, trasferiro' il progetto sul quadro della mia Golf MK5 (che monta sempre un Half-FIS pero' della Visteon). Chiaramente il quadro strumenti e' un'unita' di controllo e in quanto tale al suo interno possiede un controller CAN/CAN Module con la quale dobbiamo riuscire a dialogare. Per prima cosa abbiamo bisogno del pinout del connettore presente sul retro del quadro strumenti; al momento i pin fondamentali sono l'alimentazione (VCC/GND) e i pin di comunicazione (CAN High e CAN Low).
Il connettore ha in totale 36pin, in grassetto sono segnati quelli che ci interessano: |
|
|
Quindi abbiamo bisogno di 4 pin in totale per far funzionare il quadro strumenti a banco:
Le spie di segnalazione elencate nel pinout non funzionano con la linea CAN quindi si tratta di un funzionamento analogico. Questo significa che tramite la linea CAN non le riusciremo a controllare. Spie non controllabili via CAN BUS:
Tutte le altre spie invece sono controllabili via linea CAN. Qui sotto trovate svariate foto di entrambi i quadri strumenti in questione. L'apertura del quadro strumenti non e' obbligatoria dato che tutti i pin necessari, come detto prima, sono raggiungibili dal connettore a 36pin posto sul retro. Io ho deciso di implementare il progetto nel miglior modo possibile, quindi ho aperto il quadro e ho modificato leggermente la struttura per poter ospitare Arduino.
- 1/2: Alimentazione positiva
- 19: Massa Alimentazione
- 13: CAN High (Drivetrain)
- 12: CAN Low (Drivetrain)
- 11: CAN High (Infotainment)
- 10: CAN Low (Infotainment)
Le spie di segnalazione elencate nel pinout non funzionano con la linea CAN quindi si tratta di un funzionamento analogico. Questo significa che tramite la linea CAN non le riusciremo a controllare. Spie non controllabili via CAN BUS:
- Livello liquido tergicristalli
- Livello carburante (indicatore quantitativo)
- Livello carburante basso
- Livello/Pressione olio motore
- Livello liquido refrigerante
- Segnalazione usura pastiglie freni
Tutte le altre spie invece sono controllabili via linea CAN. Qui sotto trovate svariate foto di entrambi i quadri strumenti in questione. L'apertura del quadro strumenti non e' obbligatoria dato che tutti i pin necessari, come detto prima, sono raggiungibili dal connettore a 36pin posto sul retro. Io ho deciso di implementare il progetto nel miglior modo possibile, quindi ho aperto il quadro e ho modificato leggermente la struttura per poter ospitare Arduino.
Siemens VDO (VW Touran)
Il quadro strumenti e' diviso in due PCB, quella superiore con tutti i LED, il display LCD e i motori stepper con le lancette, e la PCB inferiore, dove si trova il cuore del quadro strumenti. Il circuito integrato marcato Micronas CDC 3297G e' il microcontrollore che gestisce tutto il quadro strumenti, nonche' il Controller CAN (o CAN Module). Sempre su questa PCB troviamo la memoria EEPROM 24C32 dove ci sono salvate svariate informazioni tra cui la codifica, i dati dell'immobilizzatore e i km percorsi.
|
Visteon VDO (VW Golf 5)
Anche questo quadro strumenti e' diviso in due PCB, quella superiore con tutti i LED, il display LCD e i motori stepper con le lancette, e la PCB inferiore, dove si trova il cuore del quadro strumenti. Il circuito integrato marcato TMS 470R1VF689PZA e' il microcontrollore che gestisce tutto il quadro strumenti, nonche' il Controller CAN (o CAN Module). Sempre su questa PCB troviamo la memoria EEPROM 95160WP dove ci sono salvate svariate informazioni tra cui la codifica, i dati dell'immobilizzatore e i km percorsi.
Come detto prima, ho modificato leggermente la struttura del quadro per ospitare Arduino Nano e renderlo raggiungibile dall'esterno per motivi di aggiornamento/debug. Per alimentare Arduino ho utilizzano uno stabilizzatore di tensione 7805 che preleva la 12V da un punto specifico che ho localizzato (dove compare solo a chiave girata - quadro acceso) e la stabilizza a 5V.
|
Software
Se sapete come funziona il BUS CAN sui veicoli VAG (e avete consultato la pagina linkata all'inizio) sapete gia' che, in un veicolo VAG ci sono un totale di 3 linee CAN BUS (DriveTrain che funziona a 500kbps, Infotainment e convenience che funzionano a 100kbps). Il quadro strumenti fa parte della linea CAN DriveTrain, quindi dobbiamo comunicare alla velocita' di 500kbps. Per gestire il display LCD invece e' un'altra storia, infatti il display LCD non fa parte della linea CAN DriveTrain ma di quella Infotainment. Percio' per comandare il display bisogna comunicare a 100kbps e utilizzare i pin 10 e 11 sul connettore a 36 pin.
Per far funzionare il modulo CAN e semplificare il codice, e' preferibile utilizzare una libreria.
Ce ne sono varie, io ho deciso di usare questa: https://github.com/autowp/arduino-mcp2515.
La libreria va inizializzata per una comunicazione CAN a 500kbps (Per gestire il quadro, 100kbps per il display LCD), la frequenza dell'oscillatore dipende dal modulo CAN che avete acquistato (basta leggere sul quarzo stesso), nel mio caso e' di 8MHz. Il pin CS (Chip Select) per la comunicazione seriale SPI di default e' collegato al pin 10 di Arduino.
A questo punto per iniziare ad inviare messaggi CAN abbiamo bisogno dell'ID e il DLC di ogni funzione. Purtroppo in giro non si trova quasi nulla e individuarli non e' semplice dato che siamo praticamente bendati. Dato che la maggior parte dei quadri strumenti VAG non necessitano di un messagio di wake-up (sono quindi di tipologia free-running), non abbiamo bisogno di "svegliare" o abilitare il quadro alla comunicazione CAN. Quindi, un metodo per trovare gli indirizzi e' quello di effettuare un attacco brute force con Arduino, spammando messaggi CAN su tutto il range dell'ID. In questo modo, dovremo riuscire ad ottenere segni di vita dal quadro strumenti o variazioni dovute appunto all'attacco bruteforce (quindi bisogna tenere sotto controllo il quadro strumenti visivamente, per controllare se cambia qualcosa). Ecco un po' di pseudo-code per l'attacco bruteforce:
unsigned char stmp1[] = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}; //Frame 1
unsigned char stmp2[] = {0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80}; //Frame 2
unsigned char stmp3[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; //Frame 3
for(int can_id=0x01; can_id<0x900; can_id++)
{
CAN.sendMsgBuf(can_id, 0, 8, stmp1);
Serial.println(can_id, HEX);
delay(10);
}
Per far funzionare il modulo CAN e semplificare il codice, e' preferibile utilizzare una libreria.
Ce ne sono varie, io ho deciso di usare questa: https://github.com/autowp/arduino-mcp2515.
La libreria va inizializzata per una comunicazione CAN a 500kbps (Per gestire il quadro, 100kbps per il display LCD), la frequenza dell'oscillatore dipende dal modulo CAN che avete acquistato (basta leggere sul quarzo stesso), nel mio caso e' di 8MHz. Il pin CS (Chip Select) per la comunicazione seriale SPI di default e' collegato al pin 10 di Arduino.
A questo punto per iniziare ad inviare messaggi CAN abbiamo bisogno dell'ID e il DLC di ogni funzione. Purtroppo in giro non si trova quasi nulla e individuarli non e' semplice dato che siamo praticamente bendati. Dato che la maggior parte dei quadri strumenti VAG non necessitano di un messagio di wake-up (sono quindi di tipologia free-running), non abbiamo bisogno di "svegliare" o abilitare il quadro alla comunicazione CAN. Quindi, un metodo per trovare gli indirizzi e' quello di effettuare un attacco brute force con Arduino, spammando messaggi CAN su tutto il range dell'ID. In questo modo, dovremo riuscire ad ottenere segni di vita dal quadro strumenti o variazioni dovute appunto all'attacco bruteforce (quindi bisogna tenere sotto controllo il quadro strumenti visivamente, per controllare se cambia qualcosa). Ecco un po' di pseudo-code per l'attacco bruteforce:
unsigned char stmp1[] = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}; //Frame 1
unsigned char stmp2[] = {0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80}; //Frame 2
unsigned char stmp3[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; //Frame 3
for(int can_id=0x01; can_id<0x900; can_id++)
{
CAN.sendMsgBuf(can_id, 0, 8, stmp1);
Serial.println(can_id, HEX);
delay(10);
}
Come potete osservare, ho creato 3 frame per i messaggi CAN, uno composto da tutti 0xFF, uno con 0x80 e un altro con 0x00 (con uno di questi dovremo riuscire ad attivare qualcosa). Per l'attacco bruteforce basta utilizzare la funzione FOR. In questo modo, Arduino inviera' il frame da voi selezionato (in questo caso stmp1, stmp2 o stmp3) su tutto il range scelto, quindi (sempre in questo caso) a partire dall'indirizzo 0x01 fino a 0x900. La delay e' impostata a soli 10mS (in modo da osservare velocemente se ci sono variazioni sul quadro). Nel caso in cui l'esito sia positivo, dobbiamo iniziare ad aiutarci con il monitor seriale di Arduino per iniziare ad individuare con precisione gli indirizzi. Aumentiamo quindi la delay in maniera considerevole (magari a 500mS), apriamo il monitor seriale e aspettiamo una variazione sul quadro. Appena osservate che qualcosa e' cambiato (si e' accesa una spia oppure si e' mossa una lancetta) fermate subito l'auto-scrolling del monitor seriale. Da quelle parti dovrebbe esserci l'indirizzo per l'attuatore (spia, lancetta, ecc.) che avete appena visto variare. Per provare se l'indirizzo e' corretto, create al volo una riga di codice con la funzione per inviare un messaggio CAN: "CAN.sendMsgBuf(indirizzodatestare, 0, 8, stmp1);" ed osservate se la variazione si ripete nuovamente.
|
Con l'attacco bruteforce sono riuscito a ricavare svariati indirizzi. Qui sotto c'e' una piccola lista che ho scritto (testata per il mio quadro strumenti ovviamente, gli indirizzi potrebbero cambiare leggermente). (Trovate il frame da inviare per l'attivazione/variazione dell'attuatore e l'indirizzo HEX alla quale inviare il frame).
Mancano ancora gli indirizzi per:
Dimostrazione del funzionamento + proof of concept staging lancette:
- Spia Batteria {0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00} @0x470
- Spia errore lampade {0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00} @0x470
- Spia cofano aperto {0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00} @0x470
- Spia portabagagli aperto {0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00} @0x470
- Spia portiera aperta {0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00} @0x470
- Spia ESP {0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00} @0x1A0
- Spia pressione pneumatici {0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00} @0x1A0
- Lancetta KM/H {0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80} @0x1A0 (non funziona bene)
- Lancetta RPM {0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80} @0x280
- Spia airbag {0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00} @0x050
- Spia cinture di sicurezza {0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00} @0x050
- Controllo retroilluminazione quadro strumenti {0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00} @0x635
- Spia fendinebbia {0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00} @0x531
- Spia freccia sinistra {0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00} @0x531
- Spia freccia destra {0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00} @0x531
- Spia cambio automatico? {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF} @0x540
- Schermata marce cambio automatico {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00} @0x540
Mancano ancora gli indirizzi per:
- Spia cruise control
- Spia immobilizzatore
- Spia ABS
- Spia Sterzo
- Gruppo spie motore/DPF/Candele
- Controllo lancetta temperatura liquido refrigerante
- Controllo display LCD
Dimostrazione del funzionamento + proof of concept staging lancette:
Per lo staging la porzione di codice e' abbastanza semplice:
#include <mcp2515_can.h> //Includiamo la libreria per il modulo MCP2515
#include <SPI.h> //Includiamo la libreria per la comunicazione SPI
mcp2515_can CAN(10); //Imposta Pin CS (Chip-Select)
unsigned char KMHRST[] = {0,128}; //Crea messaggio per resettare count lancetta KM/H
unsigned char BACKLIGHT[] = {1,0}; //Crea messaggio per accendere la retroilluminazione
unsigned char RPM[] = {1,0,0,128}; //Crea messaggio per muovere la lancetta dei giri motore a fondo scala
unsigned char KMH[] = {1,128,140}; //Crea messaggio per muovere la lancetta dei KM/H a fondo scala
void setup()
{
Serial.begin(115200); //Inizializza comunicazione seriale a 115200 baud
CAN.begin(CAN_500KBPS); //Inizializza comunicazione CAN a 500KBPS
}
void loop()
{
if (millis() < 1000) //Se non e' passato piu' di 1 secondo dall'esecuzione del programma
{ //In questo modo esegue le istruzioni qui sotto una sola volta
CAN.sendMsgBuf(0x635, 0, 8, BACKLIGHT); //Invia messaggio per accendere la retroilluminazione
CAN.sendMsgBuf(0x1A0, 0, 8, KMHRST); //Invia messaggio per resettare count lancetta KM/H
CAN.sendMsgBuf(0x280, 0, 8, RPM); //Invia messaggio per muovere la lancetta dei giri motore a fondo scala
CAN.sendMsgBuf(0x5A0, 0, 8, KMH); //Invia messaggio per muovere la lancetta dei KM/H a fondo scala
}
else
{
//altrimenti stop
}
}
Dopo aver concluso i test con il quadro strumenti Siemens del VW Touran, ho trapiantato il progetto sul quadro strumenti Visteon della mia VW Golf 5. Purtroppo (senza apparente motivo e logica) non funzionava come previsto. Le lancette non erano sincronizzate, sul Siemens andavano perfettamente, sul Visteon invece no. Ho dovuto creare un altro sketch con una porzione di codice piu' complicata per provare a risolvere il problema via software. Ho risolto parzialmente (le lancette vanno in maniera quasi sincronizzata, tuttavia il problema si nota ancora).
Qui sotto quindi, oltre alla galleria immagini relativa al trapianto del progetto sulla mia macchina, trovate due sketch. Quello normale (perfettamente funzionante sui quadri strumenti Siemens) e quello con il fix, per il ritardo delle lancette.
#include <mcp2515_can.h> //Includiamo la libreria per il modulo MCP2515
#include <SPI.h> //Includiamo la libreria per la comunicazione SPI
mcp2515_can CAN(10); //Imposta Pin CS (Chip-Select)
unsigned char KMHRST[] = {0,128}; //Crea messaggio per resettare count lancetta KM/H
unsigned char BACKLIGHT[] = {1,0}; //Crea messaggio per accendere la retroilluminazione
unsigned char RPM[] = {1,0,0,128}; //Crea messaggio per muovere la lancetta dei giri motore a fondo scala
unsigned char KMH[] = {1,128,140}; //Crea messaggio per muovere la lancetta dei KM/H a fondo scala
void setup()
{
Serial.begin(115200); //Inizializza comunicazione seriale a 115200 baud
CAN.begin(CAN_500KBPS); //Inizializza comunicazione CAN a 500KBPS
}
void loop()
{
if (millis() < 1000) //Se non e' passato piu' di 1 secondo dall'esecuzione del programma
{ //In questo modo esegue le istruzioni qui sotto una sola volta
CAN.sendMsgBuf(0x635, 0, 8, BACKLIGHT); //Invia messaggio per accendere la retroilluminazione
CAN.sendMsgBuf(0x1A0, 0, 8, KMHRST); //Invia messaggio per resettare count lancetta KM/H
CAN.sendMsgBuf(0x280, 0, 8, RPM); //Invia messaggio per muovere la lancetta dei giri motore a fondo scala
CAN.sendMsgBuf(0x5A0, 0, 8, KMH); //Invia messaggio per muovere la lancetta dei KM/H a fondo scala
}
else
{
//altrimenti stop
}
}
Dopo aver concluso i test con il quadro strumenti Siemens del VW Touran, ho trapiantato il progetto sul quadro strumenti Visteon della mia VW Golf 5. Purtroppo (senza apparente motivo e logica) non funzionava come previsto. Le lancette non erano sincronizzate, sul Siemens andavano perfettamente, sul Visteon invece no. Ho dovuto creare un altro sketch con una porzione di codice piu' complicata per provare a risolvere il problema via software. Ho risolto parzialmente (le lancette vanno in maniera quasi sincronizzata, tuttavia il problema si nota ancora).
Qui sotto quindi, oltre alla galleria immagini relativa al trapianto del progetto sulla mia macchina, trovate due sketch. Quello normale (perfettamente funzionante sui quadri strumenti Siemens) e quello con il fix, per il ritardo delle lancette.
|
|
Problemi
Ho deciso di dedicare una sezione separata per i problemi (o meglio il problema) che potrebbe saltare fuori giocando con questi quadri strumenti (piu' in particolare con il Visteon, dato che sembrerebbe essere il piu' stronzo). Purtroppo, dopo aver trapiantato il progetto sul quadro della mia Golf 5 (il Visteon appunto) ed aver giocato un po' con lo sketch di Arduino per sistemare il problema della sincronizzazione delle lancette, il quadro ha deciso di andare in errore (rimanendo comunque funzionale sotto ogni aspetto). Mi spiego meglio; all'improvviso, ho notato che, girando la chiave e accendendo il quadro, il contatore dei KM totali era sparito, sostituito dalla scritta "ERROR" lampeggiante. A quadro acceso e chiave non inserita i KM totali vengono visualizzati correttamente. Appena si inserisce e si gira la chiave, con conseguente attivazione del quadro, compare l'errore. Tuttavia dopo aver percorso 1KM (quindi aumentando il conto dei KM Totali), l'errore scompare e ritornano i KM totali corretti (e aggiornati). L'errore quindi non comporta alcun problema a livello funzionale, eccetto la fastidiosa scritta quando si gira la chiave per partire.
Non c'e' una reale spiegazione per questo problema, a quanto pare, moltissime persone lo hanno riscontrato, anche solo cambiando semplicemente il buzzer o qualche diodo LED della retroilluminazione. Sembrerebbe che il problema sia causato dal checksum del contenuto della memoria EEPROM che non combacia piu' con il checksum contenuto all'interno del microprocessore. Forse lo stato di errore puo' dipendere anche da un malfunzionamento hardware (come un LED bruciato).
Su internet ho trovato un software sviluppato da Codecard.eu che promette di risolvere questo problema (alla modica cifra di 60 euro). La procedura consiste nel rimuovere la EEPROM 95160, leggerne il contenuto con un programmatore, caricare il file sul programma, correggerlo, riprogrammare la EEPROM e saldarla nuovamente sulla scheda.
E' disponibile in due versioni:
Non c'e' una reale spiegazione per questo problema, a quanto pare, moltissime persone lo hanno riscontrato, anche solo cambiando semplicemente il buzzer o qualche diodo LED della retroilluminazione. Sembrerebbe che il problema sia causato dal checksum del contenuto della memoria EEPROM che non combacia piu' con il checksum contenuto all'interno del microprocessore. Forse lo stato di errore puo' dipendere anche da un malfunzionamento hardware (come un LED bruciato).
Su internet ho trovato un software sviluppato da Codecard.eu che promette di risolvere questo problema (alla modica cifra di 60 euro). La procedura consiste nel rimuovere la EEPROM 95160, leggerne il contenuto con un programmatore, caricare il file sul programma, correggerlo, riprogrammare la EEPROM e saldarla nuovamente sulla scheda.
E' disponibile in due versioni:
- Visteon ST95320 v2.3 (per memorie 95320)
- Visteon ST95160 v2.4 (per memorie (95160)
Se andate a fare la diagnosi con VCDS l'errore sara' il seguente:
"00003 - control module 014 - defective Freeze frame : Fault status : 01101110 Fault priority : 2" Purtroppo anche se provate a cancellare l'errore, tornera' istantaneamente. |
Questa e' la descrizione riportata sul sito:
This software is suitable for VW GOLF 5 cars which has VISTEON dashboard with ST95xxx(original) eeprom inside. With this software you can change PIN code, Component Security, repair error message on the dashboard How it works: 1. Open dashboard 2. Find and read ST95160 eeprom 3. Save file 4. Load file to software using "Open eerpom" button 5. Change information which you need and press "Save eeprom button" 6. Write saved file to dashboard if you see error message on display : 1. Open dashboard 2. Find and read ST95160 eeprom 3. Save file 4. Load file to software using "Open eerpom" button 5. Press "Save eeprom button" and file will be repaired 6. Write saved file to dashboard Tuttavia NON ha funzionato. Non importa quanti dump proverete, il problema non sta nel contenuto della memoria EEPROM ma nel contenuto del microprocessore. A quanto pare l'unico modo per risolvere il problema e' utilizzare uno strumento chiamato "Enigma Tool" che costa migliaia di euro. Teoricamente questo tool va a correggere il checksum riprogrammando sia il microprocessore che la memoria EEPROM. Qui sotto trovate entrambi i programmi precedentemente citati (magari nel vostro caso con un po' di fortuna in piu' riuscite a risolvere):
|