Hallo,
Eigenlijk is je CMU gebrickt. Ik heb precies hetzelfde gedaan als jij, waarbij mijn auto uitging net na het installeren van het failsafe-pakket. Gelukkig is er een manier om te herstellen, wat niet zo eenvoudig is om te doen, maar het is redelijk te doen als je niet bang bent om de CMU te demonteren, te openen en wat draden aan te sluiten.
Volledige uitleg:
Dankzij deze website:
http://www.2x4logic.com bespaart het me veel tijd om uit te zoeken hoe het systeem werkt. Het CMU-updateproces is inderdaad zeer slecht ontworpen, omdat het veel foutpunten heeft waar het eindigt met een gebrickt apparaat dat niet meer opstart. De gemakkelijkste manier om dat te doen, is door de CMU uit te schakelen na de installatie van het failsafe-pakket. In principe gebeurt het volgende: een kleine flashchip die het bootprogramma bevat, heeft een vlag die bepaalt op welk systeem hij moet opstarten. Het kan het normale Mazda-systeem zijn of de «*failsafe*»-software. Wanneer je het failsafe-updatepakket installeert zonder het 2e herinstallatiepakket, wordt de bootselect-modus van de flashchip ingesteld om op te starten op de ibc1-partitie, die niet overeenkomt met het huidige Mazda-systeem. Deze ibc1-partitie wordt bijgewerkt door het herinstallatiepakket. Het is dus gebrickt omdat het niet meer kan opstarten.
De gemakkelijkste oplossing hier is om de bootselect-waarde op de flashchip te wijzigen om op te starten op ibc2 (de failsafe). Dit wordt normaal gesproken gedaan door het updateproces, nadat het herinstallatiepakket op integriteit is gecontroleerd. Hier gaan we het doen door het opstarten te forceren. Het start de «*failsafe*»-installatiesoftware op, die ons zal vertellen dat de installatie mislukt en dat we het opnieuw kunnen proberen door een USB-stick met een correct herinstallatiepakket in de auto te steken. Dan wordt de installatie voortgezet en voltooid.
Handleiding:
Hier is een stapsgewijze handleiding over hoe je dit kunt bereiken. Wees ervan bewust dat dit moeilijk kan zijn als je niet begrijpt wat je doet. Maar in het geval dat je CMU gebrickt is (zwart scherm na een mislukte upgrade of zo) heb je niets te verliezen, toch? De auto naar een dealer brengen helpt niet, ze zullen je gewoon een volledige CMU-vervanging in rekening brengen, en dat kost veel...
De flashchip bevindt zich aan de achterkant van de CMU-printplaat. Het is een NOR SPI Flash. Het idee is om rechtstreeks verbinding te maken met deze chip en een raspberry pi (die een SPI-bus heeft) te gebruiken om het geheugen opnieuw te programmeren.
Benodigde hardware:
- Een raspberry pi
- Een programmeur testclip SOIC16 of 6x IC testclips (ik gebruikte testclips)
- Een breadboard om de verbindingen te maken
Op de raspberry pi moet je Raspbian installeren (de Lite-versie is oké). Stel de pi in na een nieuwe installatie van Rasbian om SPI in te schakelen door het volgende uit te voeren:
Code:
sudo raspi-config
(SPI inschakelen in Interfacing Options*)
sudo reboot
Installeer enkele benodigde tools:
Code:
sudo apt-get update
sudo apt-get install build-essential libusb-1.0-0-dev libusb-dev git wget curl libpci-dev
Download een nieuwere versie van flashrom:
Code:
git clone [url]https://github.com/flashrom/flashrom[/url]
cd flashrom
make
sync
Schakel de raspberry uit.
Nu is de raspberry pi klaar. Demonteer de CMU uit je auto (kijk op YouTube voor een video over hoe je dat doet, het is gemakkelijk), schroef de printplaat los van de CMU en sluit de draden van de raspberry aan op de flashchip zoals hier (zie bijgevoegde foto) en
http://www.2x4logic.com/mcbot-annotated.jpg
Zet de raspberry pi aan. En controleer of de flash wordt gedetecteerd:
Code:
cd flashrom
./flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=8000
Dit vertelt of een chip wordt gedetecteerd of niet. Zo niet, dan is je bedrading niet in orde. Wanneer er iets wordt gedetecteerd, kan flashrom je vertellen dat er meerdere verschillende chips worden gedetecteerd. Dat komt omdat sommige chips van dezelfde fabrikant hetzelfde protocol kunnen hebben. Je moet het juiste apparaatmodel lezen van wat er op de chip staat. Ik had een MX25L6445E. Ik weet dat sommige andere CMU's een ander chipmodel kunnen hebben. Het zou ook moeten werken als flashrom het kan detecteren.
Probeer dan het geheugen te lezen en een back-up te maken:
Code:
./flashrom -r backup-cmu.bin -c "MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E/MX25L6473F" -V -p linux_spi:dev=/dev/spidev0.0,spispeed=8000
Lees zorgvuldig wat flashrom doet om te controleren op eventuele fouten. Ik moest de optie -c "MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E/MX25L6473F" gebruiken om het juiste chipmodel in flashrom te selecteren, omdat het werd geschreven bij het gebruik van de -p-optie (alle gedetecteerde apparaten weergeven)
Zodra je de back-up hebt, wijzigen we de bootselect-byte in het bestand
Code:
cp backup-cmu.bin cmu-mod.bin
printf '\x00' | dd of=cmu-mod.bin bs=1 seek=65536 count=1 conv=notrunc
Nu is het tijd om het gewijzigde bestand naar de flash te schrijven:
Code:
./flashrom -w cmu-mod.bin -c "MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E/MX25L6473F" -V -p linux_spi:dev=/dev/spidev0.0,spispeed=8000
Lees de flash terug om te controleren of het is gelukt
Code:
./flashrom -r cmu.bin -c "MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E/MX25L6473F" -V -p linux_spi:dev=/dev/spidev0.0,spispeed=8000
Controleer of het bestand overeenkomt door de checksum te controleren
Code:
sha1sum cmu.bin cmu-mod.bin
De checksum moet overeenkomen, zo ja, dan is de procedure voltooid. Het is tijd om alles los te koppelen en de CMU terug in de auto te plaatsen. De CMU moet opstarten in het failsafe-herstel systeem en je vragen om een USB-stick met het herinstallatiepakket.
Succes en veel plezier met hacken!