In questo articolo spiego come effettuare un flash – recovery Bios di una scheda madre Asus per PC Desktop, effettuando una conversione del file bios .CAP disponibile sul sito Asus in .BIN.
Ripristino | Recovery Bios scheda madre Asus
Come convertire bios formato .cap in .bios
Soluzione:
Conversione file .CAP in .BIN e reflash UEFI eeprom
Dettagli:
Un cliente mi ha portato un pc fisso (desktop) che non si avviava più. In particolare questa macchina era stata usata per un aggiornamento di una scheda video PCI per Mac Pro ma dopo questo intervento il pc ha smesso di funzionare.
La scheda madre di questo PC era una ASUS Z87-K e il chip eeprom che conteneva l’EFI bios era un classico Winbond a 8 piedini in formato estraibile.
All’avvio del pc le ventole partivano ma nessun altro segno di vita, neanche un minimo suono nello speaker neanche se staccavo le RAM: brutto segno…
Prima di puntare al Bios ho ovviamente fatto diversi test: ho disattivato tutte le periferiche, scollegato quasi tutti i connettori e poi provato a resettare il Bios e staccare la batteria CMOS; ho anche provato a sostituire RAM, scollegare la scheda video esterna e sostituire la CPU.
Nessun miglioramento: la macchina non si è mai accesa.
Ho quindi pensato a come procedere con il ripristino del bios, immaginando che la scheda potesse avere una procedura di recovery.
Questo modello di scheda purtroppo non aveva alcun bottone con la funzione apposita di recovery; il manuale citava una possibilità di recovery tramite copia del file di bios con suffisso .cap scaricato dal sito Asus su penna USB…. ma ho provato senza successo.
Analizzando meglio questa possibilità ho poi scoperto che per attivare questo tipo di ripristino Bios come previsto dall’Asus la macchina deve avere comunque un minimo di vitalità, cioè deve avviarsi comunque un minimo di funzionalità da parte dell’ UEFI.
Sono quindi passato al piano B cioè:
Scrittura diretta dell’EEPROM con bios con suffisso .cap
Il sito Asus mette a disposizione bios completi per tutte le schede madri per computer Desktop: tuttavia questi file – con suffisso .cap – non possono essere scritti direttamente nell’eeprom, perchè devono essere prima lavorati. La programmazione di una eeprom infatti prevede che il file sia puro, cioè privo di informazioni extra o comunque che non sia codificato.
Ecco un esempio di file che la Asus rende disponibi sul proprio sito:
La prima cosa che ho fatto è stato quello di scaricare l’ultima versione di bios; il file che ho scaricato in questo caso era nominato: Z87-K-ASUS-1402.CAP.
Poi ho scaricato ed installato alcuni tools opensource utilissimi per analizzare i file di bios. Vi invito a consultare il sito github.com da cui li ho scaricati per trovare versioni più recenti; ma nel frattempo potete scaricarli da qui:
UEFItool permette di ottenere informazioni dettagliate sull’immagine del file di bios, compreso le varie partizioni (ME region, bios, ecc.).
Dopo aver controllato il file ho provato a convertirlo in .BIN mediante selezione di “AMI aptio capsule” –> tasto destro –> extract as is.
Tuttavia mi ha generato un file identico 1:1 al precedente, quindi in pratica inutilizzabile per la scrittura sul chip.
Ho poi provato FD44Editor che permette di editare molte dei campi del bios:
Anche questo software tuttavia non è servito allo scopo.
Mi sono messo quindi messo alla ricerca di qualche modo per convertire il bios .CAP in .BIN e ho scoperto che il .CAP non è altro che un .BIN completo con l’aggiunta di un header.
Basta quindi tagliare questo header… e il gioco è fatto!!
Per farlo ho usato il mio MacBook ed il comando DD da terminale: si può usare anche una qualsiasi distribuzione Linux.
Ho copiato il file in una cartella ed eseguito i seguenti comandi:
cd <cartella dove ho copiato il file .cap> –> per spostarmi nel folder contenente il file;
dd bs=2048 skip=1 if=<nome file origine.cap> of=<bios.bin> –> per tagliare il file e generarne uno nuovo
Ecco un esempio:
Il comando dd permette di copiare | convertire | tagliare un file in input secondo alcuni parametri scelti in un file finale. L’opzione bs del comando dd permette di settare la grandezza dei blocchi in 2048 bytes; con skip=1 gli diciamo di generare un file privo del primo blocco e quindi senza l’header di 2048 bytes che è proprio quella parte in più che non serve.
Ora posso finalmente programmare la mia EEPROM con il programmatore:
Infine installo il chip sulla scheda e accendo il PC…
Risultato??