mercoledì 30 agosto 2023

My little patches...

Below a list of my patches spread on different projects:


martedì 4 ottobre 2022

Honda CBR 929 - 99.999 km

NOTA: Scopo di questo post è illustrare come ripristinare a corretto funzionamento una moto.

 

 100.000km, anzi 99.999km !

Sono un felice possessore di un CBR 929 del 2000. E recentemente (estate 2022) ho traguardato i 100.000km... o meglio mi sono fermato a 99.999 km...

Infatti, con mio sgomento, ho scoperto che il conta-km (o più propriamente odometro) su questo modello (ma mi risulta anche il CBR 954) dopo i 99.999 km si blocca !!!

All'inizio non ci credevo, ma cercando su google numerosi utenti si sono trovati con questo problema; e sembra che l'unica soluzione della Honda sia sostituire tutta la dashboard.

Dopo l'iniziale sgomento e la successiva (isterica) ilarità, mi sono messo a cercare una soluzione.

Su internet qualcuno ha mostrato come riprogrammare l'eeprom che contiene i km percorsi [1][2].

Accesso alla eeprom

Innanzitutto bisogna smontare la plancia, e questo lo si fa svitando il bullone in cima

 

Poi bisogna sfilare la plancia e staccare il cavo posto dietro. Prestare attenzione che il connettore si sfila agevolmente SOLO DOPO aver premuto la clip di ritenuta; NON FORZARE tirando.

Dopo aver girato la plancia è possibile svitare le viti poste dietro.

Infine rimuovere il coperchio posteriore ed individuare la EEPROM incriminata.


A questo punto bisogna leggere e scrivere sulla EEPROM; il modello è una 93c56 (5V).

Io ho usato il sistema UPA USB, leggendo in modalità 16bit. E' possibile NON dissaldare la memoria usando una pinza. Io ho approcciato in entrambi i modi: ho sia dissaldato (in realtà è stato un mio collega :-) ) che programmato con un clip .

Immagine della EEPROM

Sopra il contenuto dell'eeprom. Ho evidenziato dove è memorizzata l'informazione dei KM percorsi. Si tratta di 6 parole a 16 bit. Ho provato a ricostruire l'algoritmo che lega i km al dato memorizzato nella eeprom:

    Indirizzo     Valore

    0x68         = 0xb73d    - h / 8

    0x6a         = 0x6e7b    - h / 4

    0x6c         = 0xdcf6    - h / 2

    0x6e         = 0xb9ed + 8 - h

    0x72         = 0x6e79 + 2 - h / 4

    0x74         = 0xdcf2 + 4 - h / 2

Dove 

        h = km / (53.7 / 8)

Difatti considerando l'indirizzo 0x6e, dove c'è il valore 0x7e25 (memorizzato come low/hi) si ottiene

                km = (0xb9ed + 8 - 0x7e25) * (53.7 / 8) = 102590

Che è appunto il km corrispondente al dump della memoria. Questo risultato dimostra che mentre la dashboard continua a mostrare 99.999, in realtà l'eeprom viene aggiornata.

In giro esistono software che calcolano le immagini, ed usano un algoritmo leggermente diverso:

    Indirizzo     Valore

    0x68         = 0xb73d - h / 8

    0x6a         = 0x6e7b - h / 4

    0x6c         = 0xdcf6 - h / 2

    0x6e         = 0xb9ed - h

    0x72         = 0x6e79 - h / 4

    0x74         = 0xdcf2 - h / 2

Dove 

        h = km / (53.7 / 8)

La discrepanza è minima, e forse è legata al fatto che nella realtà è possibile che le celle non vengano aggiornate tutte quante e ci possono essere dei disallineamenti.


Con le formule di cui sopra è possibile ricostruire l'immagine con il km voluto e memorizzarlo nella eeprom.

 

 





[1] https://www.youtube.com/watch?v=PJEsjzbrh1U

[2] https://www.digital-kaos.co.uk/forums/forumdisplay.php/174-DashBoard


My little patches...

Below a list of my patches spread on different projects: Linux kernel [all] 2018-02-01 iversion: Rename make inode_cmp_iversion{+raw}...