EDID를 만드는 방법

EDID를 만드는 방법

나는 읽었다여기에 게시하세요게시물의 내용을 바탕으로 이해하려고 노력하지만 여전히 몇 가지 질문이 있습니다.

  1. /lib/firmware예를 들어, 어디에 위치해 있나요 ? /usr/src/linux/lib/firmware아니면 /usr/lib/firmware다른 곳에 있나요?
  2. 게시물에 나와있는 주소에서 미리 구축된 EDID를 사용하고 Gvim과 같은 편집기를 사용하여 조정한 후 아래 정보를 사용하여 커널에 전달할 수 있나요? 설정하려는 해상도는 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

    그렇다면 edid.bin파일은 어디서 구할 수 있나요?

  3. 아니면 처음부터 EDID 파일을 만들어야 하나요? 그렇다면 EDID 파일을 어떻게 만드나요?

답변1

/lib/firmware는 어디에 있나요?

EDID 모드 펌웨어의 최종 위치는 에 있어야 합니다 /lib/firmware/edid. 그러나 많은 Linux 배포판에서는 샘플 EDID 모드 설정 펌웨어 소스와 Makefile을 Linux 커널 문서 디렉터리에 배치합니다. Fedora의 경우 이는 kernel-doc패키지에서 제공 되며 /usr/share/doc/kernel-doc-3.11.4/Documentation/EDID모니터용 펌웨어를 컴파일한 후 부팅 시 grub이 액세스할 수 있는 모든 위치에 edid 바이너리를 배치할 수 있지만 규칙은 입니다 /lib/firmware/edid/.

내 모니터 해상도에 맞게 기존 edid.bin 파일의 크기를 조정할 수 있습니까?

이러한 edid.bin파일은 바이너리 형식이므로 올바른 조정 방법이 직관적이지 않습니다.

EDID 파일을 처음부터 만드는 방법은 무엇입니까?

귀하가 제공한 게시물은 사용자 정의 edid 파일을 구축하기 위한 공식 커널 문서에 대한 링크를 제공합니다. HOWTO.txt위에서 참조한 커널 문서 디렉터리의 파일에도 동일한 지침이 제공됩니다. 예를 들어 기본적으로 샘플 펌웨어 파일 중 하나를 편집하여 1024x768.S모니터에 대한 매개변수를 제공합니다. 그런 다음 제공된 것을 사용하여 컴파일 Makefile하고 새 펌웨어를 사용하도록 grub을 구성하십시오.

나에게는 이 작업을 수행하는 데 두 가지 까다로운 점이 있습니다. 첫 번째는 컴파일해야 하는 edid 소스 파일을 찾는 위치입니다. Fedora는 이미 위의 질문에 답변했습니다.

1024x768.S두 번째 까다로운 점은 모니터에 적합한 값을 찾는 것입니다. 이는 cvt필요한 모델 행을 생성하는 실행을 실행한 다음 몇 가지 수학을 수행하여 달성됩니다. 1600x900의 해상도, 60Hz 새로 고침 빈도 및 감소된 블랭킹(LCD에 권장)의 경우 다음과 같은 이점이 있습니다.

[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

이 출력의 마지막 줄을 다음 지침과 일치시킬 수 있습니다 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))

출력 마지막 줄의 숫자 2 - 5 cvt( ) 1600 1648 1680 1760는 4개의 "HTimings" 매개변수( hdisp hsyncstart hsyncend htotal)이고, 숫자 6 - 9( 900 903 908 926)는 4개의 "VTimings" 매개변수( vdisp vsyncstart vsyncend vtotal)입니다.

마지막으로 마지막 줄에 올바른 CRC 값이 설정되도록 펌웨어를 다시 컴파일해야 합니다( HOWTO.txt자세한 내용은 참고자료 참조).

답변2

저는 올바른 체크섬을 사용하여 Xorg 모델라인 형식에서 EDID 바이너리를 쉽게 생성할 수 있는 도우미 프로그램을 작성했습니다.

https://github.com/akatrevorjay/edid-generator

이를 사용하여 새로운 저장소를 쉽게 생성할 수 있습니다. 저는 이를 사용하여 모니터를 60hz로 설정하고 Apple Thunderbolt 모니터의 EDID 문제를 해결합니다.

이 링크에 지침이 있습니다!

관련 정보