Como fazer o EDID

3

Eu li o post aqui e tentei lidar com o que entendi do post, mas aqui estão algumas perguntas:

  1. Onde está o /lib/firmware localizado, por exemplo, em /usr/src/linux/lib/firmware ou /usr/lib/firmware ou em outro lugar?
  2. Eu poderia usar um EDID pré-compilação no endereço que o post forneceu e ajustá-lo com um editor como o Gvim e passá-lo ao kernel usando as informações abaixo? A resolução que estou tentando definir é 1600x900 @ 60:

      1: [H PIXELS RND]  :  1600.000000
      2: [V LINES RND]  :  450.000000
      3: [V FIELD RATE RQD]  :  120.000000
      4: [TOP MARGIN (LINES)]  :  8.000000
      5: [BOT MARGIN (LINES)]  :  8.000000
      6: [INTERLACE]  :  0.500000
      7: [H PERIOD EST]  :  16.648841
      8: [V SYNC+BP]  :  33.000000
      9: [V BACK PORCH]  :  30.000000
      10: [TOTAL V LINES]  :  500.500000
      11: [V FIELD RATE EST]  :  120.008471
      12: [H PERIOD]  :  16.650017
      13: [V FIELD RATE]  :  120.000000
      14: [V FRAME RATE]  :  60.000000
      15: [LEFT MARGIN (PIXELS)]  :  32.000000
      16: [RIGHT MARGIN (PIXELS)]  :  32.000000
      17: [TOTAL ACTIVE PIXELS]  :  1664.000000
      18: [IDEAL DUTY CYCLE]  :  25.004995
      19: [H BLANK (PIXELS)]  :  560.000000
      20: [TOTAL PIXELS]  :  2224.000000
      21: [PIXEL FREQ]  :  133.573440
      22: [H FREQ]  :  60.060000
      17: [H SYNC (PIXELS)]  :  176.000000
      18: [H FRONT PORCH (PIXELS)]  :  104.000000
      36: [V ODD FRONT PORCH(LINES)]  :  1.500000

    Se sim, onde posso obter um arquivo edid.bin ?

  3. Ou eu deveria criar um arquivo EDID do zero; se sim como eu poderia fazer um arquivo EDID?

por r004 21.10.2013 / 21:15

2 respostas

5

Onde está / lib / firmware?

O local de descanso final para o firmware do modo EDID deve estar em /lib/firmware/edid . No entanto, muitas distribuições Linux colocam o exemplo de fonte de firmware de configuração de modo EDID e o Makefile sob o diretório para a documentação do kernel do Linux. Para o Fedora, isso é fornecido pelo pacote kernel-doc e reside em /usr/share/doc/kernel-doc-3.11.4/Documentation/EDID . Depois de compilar o firmware para o seu monitor, você pode colocar o binário edid em qualquer lugar que possa ser acessado no grub na inicialização, mas a convenção é /lib/firmware/edid/ .

Posso ajustar um arquivo edid.bin existente para corresponder à resolução do meu monitor?

Os arquivos edid.bin estão em formato binário, então a maneira correta de ajustá-los não seria intuitiva.

Como posso criar um arquivo EDID do zero?

A postagem fornecida fornece links para a documentação oficial do kernel para criar seu arquivo edid personalizado. As mesmas instruções também são fornecidas no arquivo HOWTO.txt no diretório de documentação do kernel mencionado acima. Essencialmente, você edita um dos arquivos de firmware de exemplo, digamos 1024x768.S , fornecendo os parâmetros para o seu monitor. Em seguida, compile-o com o Makefile fornecido e configure o grub para usar o novo firmware.

Para mim, havia dois bits complicados para realizar isso. A primeira é onde encontrar o arquivo de origem edid que precisa ser compilado. Isto foi respondido pelo Fedora acima.

O segundo bit complicado é encontrar os valores corretos para colocar em 1024x768.S para o seu monitor. Isto é conseguido executando cvt para gerar a modelina desejada e depois fazendo um pouco de aritmética. Para uma resolução de 1600x900 com taxa de atualização de 60 Hz e redução de blanking (recomendado para LCDs), você teria:

[user@host ~]$ cvt 1600 900 60 -r
# 1600x900 59.82 Hz (CVT 1.44M9-R) hsync: 55.40 kHz; pclk: 97.50 MHz
Modeline "1600x900R"   97.50  1600 1648 1680 1760  900 903 908 926 +hsync -vsync

Você pode combinar a última linha dessa saída com as instruções em HOWTO.txt :

Please note that the EDID data structure expects the timing
values in a different way as compared to the standard X11 format.

X11:
HTimings:  hdisp hsyncstart hsyncend htotal
VTimings:  vdisp vsyncstart vsyncend vtotal

EDID:
#define XPIX hdisp
#define XBLANK htotal-hdisp
#define XOFFSET hsyncstart-hdisp
#define XPULSE hsyncend-hsyncstart

#define YPIX vdisp
#define YBLANK vtotal-vdisp
#define YOFFSET (63+(vsyncstart-vdisp))
#define YPULSE (63+(vsyncend-vsyncstart))

Os números de 2 a 5 na última linha da saída cvt ( 1600 1648 1680 1760 ) são os quatro parâmetros "HTimings" ( hdisp hsyncstart hsyncend htotal ) e os números 6 - 9 ( 900 903 908 926 ) são os quatro " Parâmetros "VTimings" ( vdisp vsyncstart vsyncend vtotal ).

Por último, você precisará compilar o firmware uma segunda vez para definir o valor de CRC correto na última linha (veja o HOWTO.txt para detalhes).

    
por 22.10.2013 / 22:01
4

Eu escrevi um ajudante para gerar facilmente arquivos binários EDID, com soma de verificação adequada, a partir do formato modeline do Xorg:

link

Você pode usar isso para gerar facilmente algumas caixas novas. Eu uso para obter 60hz no meu monitor, bem como lidar com problemas de EDID do visor da Thunderbolt da Apple.

Existem instruções para usá-lo nesse link!

    
por 29.06.2016 / 06:31