Salta la barra di navigazione [1] - Vai alla barra di navigazione [3] - Scrivimi una mail [4]

EDID

Sommario - Novità - Tutorial - Taccuino - Progetti - Risorse - Non solo elettronica

L'esistenza della memoria EDID è sconosciuta ai più. E' una EEPROM che si trova nel monitor e contiene i dati necessari alla corretta impostazione dello stesso. In pratica serve per determinare la corretta risoluzione e gli altri parametri di funzionamento. Con google si trovano un po' di informazioni. Quello che meglio si adatta in caso di problemi l'ho trovato alla pagina sites.google.com/site/chrisbecke/home/edid-reprograming; qualcosa anche su en.wikipedia.org/wiki/Display_Data_Channel

Il problema sorge nel momento in cui questa memoria contiene informazioni errate: il monitor, pur perfettamente funzionante, non viene riconosciuto neppure dal BIOS e quindi appare rigorosamente spento, senza mostrare neppure il logo della scheda madre.

Personalmente ho avuto due volte questa "brutta" esperienza con il mio portatile. Semplicemente il display rimaneva completamente nero; al contrario, il monitor esterno era perfettamente funzionante.

Premessa: quello che scrivo è testato solo sul mio portatile (e non ho intenzione di fare esperimenti con altri PC, per ovvie ragioni). Il rischio di far danni permanenti lo potrei definire "moderato" se vengono fatte solo letture della memoria, "alto" se provo a scrivere. Quindi chi vuole fare esperimenti è avvisato!

Il sistema che uso è Debian testing AMD64. La scheda grafica è una VGA ATI HD3400 con driver free. Occorre però sottolineare che il problema è indipendente dal sistema operativo usato e dalla scheda video: in teoria spostare il monitor su un altro PC avrebbe confermato il mancato funzionamento (operazione non verificata visto che si tratta del monitor di un portatile...)

Monitor funzionante

Se l'LCD funziona normalmente, l'uso del comando seguente, come root, permette di leggere il contenuto della memoria EDID:

root@vv-studio15:/home/vv# get-edid | parse-edid

Va usato prima di avere problemi. Il primo comando legge la EEPROM dell'LCD (128 byte); è l'ideale per creare un file da conservare a futura memoria.

root@vv-studio15:/home/vv# get-edid > myedid.bin

Il comando parse-edid "decodifica" il file binario appena generato, altrimenti decisamente criptico. Nel mio caso ottengo (in estratto) cose del tipo:

| parse-edid: EDID checksum passed.

| Mode "1440x900" # vfreq 60.002Hz, hfreq 54.721kHz
| DotClock 108.020000
| HTimings 1440 1504 1536 1974
| VTimings 900 903 906 912
| Flags "-HSync" "+VSync"
| EndMode

Quest'ultimo blocco richiama le "Modeline" che un tempo si mettevano a mano nella configurazione di X (e che comunque ora si può leggere nel log di Xorg). Ovviamente i numeri cambiano a seconda del monitor, il mio è un pannello LCD AUO:7743 1440x900.

Monitor guasto

Se il BIOS non vede l'LCD (come mi è successo) il comando sopra descritto non funziona. Gli strumenti diagnostici del produttore, ovviamente usati col monitor esterno, semplicemente mostrano un laconico:

Unable to access EDID EEPROM (error code 2000-0321)

A questo punto occorre leggere direttamente dal bus i2C, secondo i seguenti passi:

  1. Se necessario:
    root@vv-studio15:/home/vv# aptitude install read-edid i2c-tools
  2. Caricare il modulo per accedere al bus fisico i2c
    root@vv-studio15:/home/vv# modprobe i2c-dev
  3. Cercare quanti bus I2C sono presenti
    root@vv-studio15:/home/vv# i2cdetect -l

Il mio portatile ha sei bus i2c, penso una coppia (!?) per ciascun monitor potenziale (VGA, HDMI, LDVS).

  1. Cercare il bus corretto, scandendo ciascuno di quelli trovati con il comando
    root@vv-studio15:/home/vv# i2cdetect X (dove X varia da 0 al numero di bus trovati).

La ricerca ha successo se si trova una tabella con un 50, come quella che segue, in estratto:

|40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|50: 50 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

  1. A questo punto si legge la memoria trovata con
    root@vv-studio15:/home/vv# i2cdump X 0x50 (X definito come sopra)

Il risultato è una tabella in cui i primi 8 byte devono essere quelli mostrati qui sotto:

|00: 00 ff ff ff ff ff ff 00 06 af 77 43 00 00 00 00

Se così non è, la memoria EDID contiene informazioni errate. Nel mio caso la lettura dava, come secondo ed terzo byte, 0x7f. Quindi il BIOS disattivava il monitor del portatile in quanto non riconosceva l'header EDID.

Li ho "corretti" a mano con (ATTENZIONE: pericoloso! Se sbagliate "perdete" il monitor)

root@vv-studio15:/home/vv# i2cset -y 0 0x50 0x01 0xFF
root@vv-studio15:/home/vv# i2cset -y 0 0x50 0x02 0xFF

Al reboot tutto ha funzionato!

Parole chiave: Debian wheezy – Dell studio 15 - Dell 1537 - EDID - VGA ATI HD3400


EN - Pagina principale - Sommario - Accessibilità - Note legali e privacy policy - Posta elettronica

XHTML 1.0 Strict - CSS 3