나는 읽었다여기에 게시하세요게시물의 내용을 바탕으로 이해하려고 노력하지만 여전히 몇 가지 질문이 있습니다.
/lib/firmware
예를 들어, 어디에 위치해 있나요 ?/usr/src/linux/lib/firmware
아니면/usr/lib/firmware
다른 곳에 있나요?게시물에 나와있는 주소에서 미리 구축된 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
파일은 어디서 구할 수 있나요?아니면 처음부터 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 문제를 해결합니다.
이 링크에 지침이 있습니다!