Come ripristinare l'EDID in uno schermo LCD brickato (Alienware and Clevo)

19 Febbraio 2016

Questa è stata tosta. Un bel giorno accendo il mio Alienware 18 e comincia a beepare: un beep, due beep, tre beep...dannazione, 8 beep. Secondo il manuale utente, 8 beep indicano problemi sulla scheda madre, VGA oppure monitor; un pò troppo vago, in ogni caso è un segnale non buono. Prima cosa ho tolto la scheda video, provata in un altro Alienware e verificato il funzionamento: tutto ok. Che sia la scheda madre? Speravo proprio di no. Ho quindi collegato l'Alienware ad uno schermo esterno tramite un cavo HDMI; sopresa, niente beep, il PC si è acceso e tutto funziona. Questo esclude la scheda madre, il problema è sicuramente il monitor. Capita mi sono detto, non fa nulla se il giorno prima funzionava: le cose si rompono senza preavviso e...di solito prima funzionano. Rassegnato all'idea di cambiare monitor ho voluto comunque raccontare quanto successo sul forum di hwupgrade.it ed è stato lì che un utente mi ha insinuato il dubbio. Mi ha domandato se avevo mai usato programmi tipo EVGA Precision X o simili, se avevo Windows 10 e se erano installati gli ultimi driver. La domanda aveva un fine: capire se anche io avevo riscontrato uno strano bug che affligge gli utenti Alienware e Clevo che hanno installato Windows 10 e che utilizzano EVGA Precision X o simili. Tutto ben documentato e testimoniato in questo topic: http://forum.notebookreview.com/threads/evga-precision-x-and-windows-7-8-8-1-and-especially-10-bricking-systems.781467/page-22#post-10169789. Mi permetto di scrivere un articolo a riguardo, in quanto la procedura indicato è estremamente difficile e lunga, fortunatamente ho fatto da cavia, funziona ma la notizia davvero positiva è che si può risolvere il problema in molti meno passaggi di quelli indicati.

Dove nasce il problema?

Gli indiziati principali sono 3: EVGA Precision X, Windows 10 e gli ultimi driver Nvidia. Nel mio caso non avevo installato Windows 10 e non avevo nemmeno gli ultimi drivier Nvidia. Mi sento quindi di dire che il responsabile sia proprio EVGA Precision X; anche MSI Afterburner sembra possa creare questo problema.
Sembra che, non so in che modo, Precision X abbia accesso ad un livello hardware bassissimo, tanto da riuscire a modificare una memoria EEPROM di alcuni display che contengono l'EDID (Extended Display Identification Data) una sorta di protocollo che trasmette le informazioni del monitor alla scheda video. Se questi dati vengono alterati, il sistema non riconosce più il monitor e segnala che c'è un problema, come se fosse rotto. Quello che bisogna fare è ripristinare il contenuto originale di questa memoria EEPROM. E che ci vuole?

Procedura di ripristino

La procedura per ripristinare l'EDID viene svolta interamente da una sessione live di Linux; un utente ha creato un'immagine che già contiene tutto il necessario per ripristinare l'EDID. Scaricala da qui: MEGA.
Masterizza o crea una chiavetta USB avviabile usando il file ISO che hai appena scaricato. Consiglio di creare la chiavetta USB avviabile che è più veloce, per farlo usa questo semplice strumento: USB Image Tool.
Una volta avviata la sessione live, la prima cosa da fare è scoprire che modello è il pannello LCD. Se l'EDID è corrotto non c'è modo di capire che modello sia da windows, perchè programmi tipo HWinfo, o SoftMCCS non saranno in grado di individuarlo.
Aprire il terminale: Ctrl+Alt+T
Entrare nella cartella EDID con il comando:
cd /home/it/EDID/edid-rw
Attenzione alle maiuscole, la shell è case sensitive. Rendere eseguibile lo script edid-rw con il comando:
sudo chmod a+x edid-rw
Lanciare lo script con i seguenti parametri:
sudo ./edid-rw 0 | edid-decode
e analizzare l'output. Se queste voci sono tutte a 0 Manufacturer: 0 Serial Number 0 il parametro è sbagliato e dovrai provare altro: 1, 2, 3 ecc ecc...insomma lancia sudo ./edid-rw 0 | edid-decode, sudo ./edid-rw 1 | edid-decode, sudo ./edid-rw 2 | edid-decode finchè non trovi un riscontro. Io ho trovato il modello del pannello con il parametro 1 e questo è l'output che ho ricevuto: Manufacturer: SDC SDC4C48 Serial Number 0.
Una volta individuato il modello del pannello (nel mio caso SDC4C48) andare nella cartella archive. La cartella archive contiene alcuni EDID di vari pannelli raccolti dagli utenti. Sulla base di quanto scoperto nel passaggio precedente, individuare il file .bin corretto e copiarlo nella cartella write-edid. E' facile individuarlo perchè ogni file è chiamato con il nome del pannello.bin (SDC4C48.bin, nel mio caso).
Entra nella cartella write-edid da terminale con il comando:
cd /home/it/EDID/write-edid

Rendere eseguibile lo script write-edid.sh con il comando:
sudo chmod a+x write-edid.sh

Flashare il .bin selezionato in precedenza nella EEPROM:
sudo ./write-edid.sh 1 NOMEFILE.bin

OCCHIO, ma veramente occhio al numerino EDID che andrai a flashare; se per sbaglio non lo specifichi, o peggio ne indichi uno non corretto, andrai a flashare chissà quale dispositivo, sputtanandolo.


X
THE END