Reparação de CMU bloqueado
Olá,
Na verdade, a sua CMU está bloqueada. Fiz exatamente a mesma coisa que você, onde o meu carro foi desligado logo após instalar o pacote de segurança. Felizmente, há uma maneira de recuperar, o que não é tão fácil de fazer, mas é bastante viável se você não tiver medo de desmontar a CMU, abri-la e conectar alguns fios.
Explicação completa:
Graças a este site:
http://www.2x4logic.com, poupa-me muito tempo para descobrir como o sistema funciona. O processo de atualização da CMU é realmente muito mal projetado, pois tem muitos pontos de falha, onde termina com um dispositivo bloqueado que não inicializará mais. A maneira mais fácil de fazer isso é desligar a CMU após a instalação do pacote de segurança. Basicamente, o que acontece é que um pequeno chip de flash que contém o programa de inicialização tem uma flag que decide em qual sistema ele deve inicializar. Pode ser o sistema Mazda normal ou o software «
failsafe». Quando você instala o pacote de atualização de segurança sem o 2º pacote de reinstalação, o modo de seleção de inicialização do chip flash é definido para inicializar na partição ibc1, que não corresponde ao sistema Mazda atual. Esta partição ibc1 é atualizada pelo pacote de reinstalação. Então, está bloqueado porque não pode mais inicializar.
A solução mais fácil aqui é alterar o valor de seleção de inicialização no chip flash para inicializar no ibc2 (o failsafe). Isso é normalmente feito pelo processo de atualização, após a verificação da integridade do pacote de reinstalação. Aqui, vamos fazê-lo forçando a inicialização. Ele iniciará o software de instalação «
failsafe», que nos dirá que a instalação falha e que podemos tentar novamente colocando uma chave USB no carro com um pacote de reinstalação correto. Então, a instalação continuará e terminará.
Tutorial:
Aqui está um tutorial passo a passo sobre como conseguir isso. Esteja ciente de que pode ser difícil fazer isso se você não entender o que está fazendo. Mas, caso sua CMU esteja bloqueada (tela preta após uma atualização falhada ou algo assim), você não tem nada a perder, certo? Levar o carro a um revendedor não ajudará, eles apenas cobrarão por uma substituição completa da CMU, e isso custa muito...
O chip flash é colocado na parte traseira da PCB da CMU. É um NOR SPI Flash. A ideia é conectar-se diretamente a este chip e usar um raspberry pi (que possui um barramento SPI) para reprogramar a memória.
Hardware necessário:
- Um raspberry pi
- Um Programmer Test Clip SOIC16 ou 6x IC Test clips (Eu usei clipes de teste)
- Uma placa de ensaio para fazer as conexões
No raspberry pi, você precisa instalar o Raspbian (a versão Lite é ok). A partir de uma nova instalação do Rasbian, configure o pi para ter o SPI habilitado executando:
Code:
sudo raspi-config
(habilitar SPI em Interfacing Options*)
sudo reboot
Instale algumas ferramentas necessárias:
Code:
sudo apt-get update
sudo apt-get install build-essential libusb-1.0-0-dev libusb-dev git wget curl libpci-dev
Obtenha uma versão mais recente do flashrom:
Code:
git clone [url]https://github.com/flashrom/flashrom[/url]
cd flashrom
make
sync
Desligue a energia do raspberry.
Agora o raspberry pi está pronto. Desmonte a CMU do seu carro (procure no youtube um vídeo sobre como fazê-lo, é fácil), desaperte a PCB da CMU e conecte os fios do raspberry ao chip flash como aqui (veja a foto em anexo) e
http://www.2x4logic.com/mcbot-annotated.jpg
Ligue o raspberry pi. E verifique se o flash é detectado:
Code:
cd flashrom
./flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=8000
Isso dirá se um chip é detectado ou não. Caso contrário, sua fiação não está ok. Quando algo é detectado, o flashrom pode dizer que vários chips diferentes são detectados. Isso ocorre porque alguns chips do mesmo fabricante podem ter o mesmo protocolo. Você precisa ler o modelo correto do dispositivo a partir do que está escrito no chip. Eu tinha um MX25L6445E. Eu sei que algumas outras CMUs podem ter um modelo de chip diferente. Também deve funcionar se o flashrom puder detectá-lo.
Em seguida, tente ler a memória e fazer um backup:
Code:
./flashrom -r backup-cmu.bin -c "MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E/MX25L6473F" -V -p linux_spi:dev=/dev/spidev0.0,spispeed=8000
Leia com atenção o que o flashrom está fazendo para verificar qualquer falha. Tive que usar a opção -c "MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E/MX25L6473F" para selecionar o modelo de chip correto no flashrom, pois foi escrito ao usar a opção -p (listar todos os dispositivos detectados)
Depois de ter o backup, modificamos o byte de seleção de inicialização dentro do arquivo
Code:
cp backup-cmu.bin cmu-mod.bin
printf '\x00' | dd of=cmu-mod.bin bs=1 seek=65536 count=1 conv=notrunc
Agora é hora de escrever o arquivo modificado no flash:
Code:
./flashrom -w cmu-mod.bin -c "MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E/MX25L6473F" -V -p linux_spi:dev=/dev/spidev0.0,spispeed=8000
Leia o flash novamente para verificar se funcionou
Code:
./flashrom -r cmu.bin -c "MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E/MX25L6473F" -V -p linux_spi:dev=/dev/spidev0.0,spispeed=8000
Verifique se o arquivo corresponde verificando a soma de verificação
Code:
sha1sum cmu.bin cmu-mod.bin
A soma de verificação deve corresponder, se corresponder, o procedimento está concluído. É hora de desconectar tudo e colocar a CMU de volta no carro. A CMU deve inicializar no sistema de recuperação de segurança e solicitar uma chave USB com o pacote de reinstalação.
Boa sorte e feliz hacking!