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).