단일 모니터 용 EDID를 얻는 방법?


20

xrandr에 대한 답변을 보류하는 것은 가능한 EDID를 가진 장치를 블랙리스트에 올리는 것 입니다. 불행히도 xrandr --verbose파싱하기에 번거롭고 단일 장치 쿼리를 지원하지 않는 형식으로 모든 것을 인쇄하며, get-edid출력은 xrandr모니터 ID 에 매핑하기가 쉽지 않습니다 (예 :) DVI-1.

단일 모니터에 대해 쉽게 구문 분석 가능한 EDID 를 얻을 수있는 방법이 있습니까?


xrandr파싱 하러 갈거야 . 번거롭지 만 스크립트를 한 번에 작성하면 어디서나 작동합니다.
Gilles 'SO- 악마 그만해'

답변:


18

리드 # 1 : 모니터 에디션

나는 EDID와 모니터를 사용하지는 않지만이 도구를 찾았습니다.이 도구는 monitor-edid여기에서도 사용할 수 있습니다.

그것이 기본이 아닌 경우 용서하십시오, 나는 당신이 주제에 관해 질문하는 다양한 질문을 감안할 때이 공간에 대해 더 많이 배우려고합니다.

$ monitor-edid 
EISA ID: LEN4036
EDID version: 1.3
EDID extension blocks: 0
Screen size: 30.3 cm x 19.0 cm (14.08 inches, aspect ratio 16/10 = 1.59)
Gamma: 2.2
Digital signal

    # Monitor preferred modeline (60.0 Hz vsync, 55.8 kHz hsync, ratio 16/10, 120 dpi)
    ModeLine "1440x900" 114.06 1440 1488 1520 2044 900 903 909 930 -hsync -vsync

    # Monitor supported modeline (50.0 Hz vsync, 51.8 kHz hsync, ratio 16/10, 120 dpi)
    ModeLine "1440x900" 114.06 1440 1488 1520 2204 900 903 909 1035 -hsync -vsync

리드 # 2 : ddcontrol

내가 방문한 다른 도구가 있는데,이 도구를 사용 ddccontrol하면 정보를 얻는 데 도움이 될 수 있습니다.

리드 # 3 : / sys

마지막으로 /sys나는 여러 비디오 인터페이스에 매달려있는 리프 노드가 있음을 알았습니다.

$ sudo find . |grep -i edid
./devices/pci0000:00/0000:00:02.0/drm/card0/card0-HDMI-A-1/edid
./devices/pci0000:00/0000:00:02.0/drm/card0/card0-HDMI-A-2/edid
./devices/pci0000:00/0000:00:02.0/drm/card0/card0-HDMI-A-3/edid
./devices/pci0000:00/0000:00:02.0/drm/card0/card0-VGA-1/edid
./devices/pci0000:00/0000:00:02.0/drm/card0/card0-LVDS-1/edid
./devices/pci0000:00/0000:00:02.0/drm/card0/card0-DP-1/edid
./devices/pci0000:00/0000:00:02.0/drm/card0/card0-DP-2/edid
./devices/pci0000:00/0000:00:02.0/drm/card0/card0-DP-3/edid
./module/drm/parameters/edid_fixup
./module/drm_kms_helper/parameters/edid_firmware

그러나 내 Lenovo 노트북에서 이러한 "파일"은 비어 있었으며 시스템과 다를 수 있습니다. VGA EDID의 샘플 출력을 보여주는이 포럼 스레드를 찾았습니다.

$ lspci | grep VGA
01:00.0 VGA compatible controller: nVidia Corporation NV17 [GeForce4 440 Go 64M] (rev a3)
$ xxd  /sys/devices/pci0000:00/0000:00:0b.0/0000:01:00.0/drm/card0/card0-VGA-1/edid
0000000: 00ff ffff ffff ff00 5a63 0213 0101 0101  ........Zc......
0000010: 2b0a 0103 1c25 1bb0 eb00 b8a0 5749 9b26  +....%......WI.&
0000020: 1048 4cff ff80 8199 8159 714f 6159 4559  .HL......YqOaYEY
0000030: 3159 a94f 0101 863d 00c0 5100 3040 40a0  1Y.O...=..Q.0@@.
0000040: 1300 680e 1100 001e 0000 00ff 0033 3139  ..h..........319
0000050: 3030 3433 3030 3737 330a 0000 00fd 0032  004300773......2
0000060: a01e 6114 000a 2020 2020 2020 0000 00fc  ..a...      ....
0000070: 0047 3930 6d62 0a20 2020 2020 2020 00ba  .G90mb.       ..

출처 : EDID를 사용하여 모니터 일련 번호 / 제조 날짜 추출? .

참고 문헌


@ l0b0-단지 2입니까? 더처럼 보였다. 나는 당신이 묻는 것만 으로이 Q의 카테고리를 혼동 할 수 있습니다. 문제가되는 비트 8-)
slm

# 3 / sys / ... 나를 위해 일한다, 나는 드라이버 Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09)와 함께있다 i915, Kubuntu 15.04
user.dz

# 3 / sys / ... 그리고 xrandr --verbose둘 다 HDMI 모니터의 EDID 데이터를 반환하지만 DVI 모니터의 EDID 데이터는 반환하지 않습니다.
noobninja 2016 년

monitor-edid 링크가 작동하지 않으며 archive.org에 백업이 없습니다. 어디서 그 도구를 구할 수 있는지 아는 사람이 있습니까?
Peter W.

@PeterW. -대안이 있습니다. 이것을 주목 해 주셔서 감사합니다. 또한이 도구는 대부분의 주요 저장소에 있습니다. 예를 들어 Fedora 24와 CentOS에서도 발견되었습니다. 따라서 도구를 바이너리로 설치하면 훨씬 쉬운 옵션 일 수 있습니다.
slm

11

출력 xrandr --props에는 연결된 각 디스플레이에 대한 16 진 EDID 문자열이 덜 장황하게 포함되어 있습니다. 다음은 이를 연결하여 특정 연결된 모니터의 EDID를 가져 오는 간단한 Python 스크립트 입니다.

NVidia 기반 시스템에서 EDID 추출에 작동하는 다른 배포 패키지 CLI 도구를 찾지 못했지만 이진 EDID 구문 분석을위한 대부분의 도구는 제대로 작동하는 것 같습니다.


8

x86 또는 powerpc 아치를 사용하는 경우을 사용할 수 있습니다 read-edid. 데비안에서는 여기에서 사용할 수 있습니다 .

사용법은 간단합니다 (루트 여야 함).

$ sudo get-edid > /tmp/edid

그런 다음 구조를 구문 분석하십시오.

$ parse-edid < /tmp/edid
Checksum Correct

Section "Monitor"
    Identifier "HP v220"
    ModelName "HP v220"
    VendorName "HWP"
    # Monitor Manufactured week 13 of 2008
    # EDID version 1.3
    # Analog Display
    DisplaySize 470 300
    Gamma 2.20
    Option "DPMS" "true"
    Horizsync 30-81
    VertRefresh 56-76
    # Maximum pixel clock is 160MHz
    #Not giving standard mode: 1152x720, 60Hz
    #Not giving standard mode: 1280x960, 60Hz
    #Not giving standard mode: 1280x1024, 60Hz
    #Not giving standard mode: 1440x900, 60Hz
    #Not giving standard mode: 1600x1000, 60Hz
    #Not giving standard mode: 1680x1050, 60Hz
    Modeline    "Mode 0" -hsync +vsync 
EndSection

종종 이것은 다음과 같이 결합됩니다.

$ sudo get-edid | parse-edid

다음 중 하나를 사용하여이 사용자 정의 edid 파일을 그래픽 카드로 전달하는 방법에 대해서는 여기도 참조하십시오 .

  • CustomEDID 또는
  • drm_kms_helper.edid_firmare

3
get-edid가 "modprobe i2c-dev"를 수행 할 때까지 작동하지 않았다는 것을 명확히하기 위해서입니다. Xorg는 "parse-edid"로 만든 Modeline을 받아들이지 않았다. 따라서 장치 섹션에서 이것을 사용했습니다. 옵션 "CustomEDID" "CRT-0 : /etc/X11/edid-StarLight-170418_gb-nv-gf-650-GTX-VGA.bin"EDID를 수동으로 제공해야합니다. 10m 길이의 VGA 케이블을 올바르게 읽을 수 없기 때문입니다. "DisplaySize"설정도 도움이되었습니다.
Delian Krustev

3

edid-decode라는 최신 버전의 도구는 EDID 정보를 구문 분석하고 텍스트 및 이진 EDID 파일을 읽고 쓸 수 있습니다. 의 출력에서 ​​잘 작동합니다 xrandr --verbose. 예를 들어 EDID를 이진 파일로 저장하는 데 사용할 수 있습니다.

xrandr --verbose | edid-decode - /file/to/save

Fedora 27 (패키지 : xorg-x11-utils)과 함께 제공되는 edid-decode 버전이 너무 오래되어 완벽하게 작동하지 않습니다. 가장 최신 버전을 사용했습니다 .


2

이진 형식의 EDID는에서 사용할 수 있습니다 /sys/class/drm/card%d-%s/edid. 여기서 %dDRM 장치 인덱스 (아마도 GPU 인덱스)를 나타내며 출력에 %s표시되는 커넥터 ID입니다 xrandr.

사용 가능한 모든 것을 나열하려면 다음을 실행하십시오. ls -1 /sys/class/drm/*/edid

GPU 드라이버가 DRM을 지원하지 않으면이 방법으로 EDID를 얻을 수 없습니다.

16 진 형식으로 보려면 실행 hexdump하십시오.

사람이 읽을 수있는 양식을 원하는 경우 다음과 같이 전달하십시오 edid-decode.

cat /sys/class/drm/card0-eDP-1/edid | edid-decode

( sudo apt install edid-decode우분투 의 경우 패키지 관리자를 사용하여 설치해야 할 수도 있습니다 )


당신은 그것을 어떻게 전달 edid-decode합니까? 또한 연결이 끊어진 모니터에 대한 하위 디렉토리도 있습니다.
WinEunuuchs2Unix

@ WinEunuuchs2Unix, 예를 추가했습니다.
사용자
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.