Làm thế nào để có được EDID cho một màn hình?


20

Trong khi chờ câu trả lời cho xrandr sẽ phát hiện bộ khuếch đại vì theo dõi một cách giải quyết có thể là các thiết bị trong danh sách đen với các EDID cụ thể . Thật không may, xrandr --verbosein mọi thứ ở định dạng khó phân tích và không hỗ trợ truy vấn các thiết bị đơn lẻ, và get-edidđầu ra dường như không dễ ánh xạ tới xrandrID màn hình (ví dụ DVI-1).

Có một số cách để có được một cách dễ dàng parseable EDID cho một đơn màn hình?


Tôi sẽ đi xrandrphân tích cú pháp. Nó cồng kềnh, nhưng bạn chỉ cần viết kịch bản của bạn một lần và mãi mãi, sau đó nó sẽ hoạt động ở mọi nơi.
Gilles 'SO- ngừng trở nên xấu xa'

Câu trả lời:


18

Dẫn # 1: màn hình edid

Tôi không dùng EDID và màn hình nhưng tôi đã tìm thấy công cụ này, monitor-edidcó thể được sử dụng cho bạn ở đây.

Hãy tha thứ cho tôi nếu nó không có cơ sở, tôi cũng đang cố gắng tìm hiểu thêm về không gian này, với nhiều câu hỏi bạn hỏi về chủ đề này.

$ 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

Dẫn # 2: ddcontrol

Có một công cụ khác mà tôi đã gọi qua ddccontrol, có thể hữu ích trong việc lấy thông tin mà bạn theo dõi.

Dẫn # 3: / sys

Cuối cùng khi chọc qua /systôi nhận thấy rằng có các nút lá treo trên các giao diện video khác nhau.

$ 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

Tuy nhiên, trên máy tính xách tay Lenovo của tôi, các "tệp" này trống, có lẽ chúng khác với hệ thống của bạn. Tôi tìm thấy chủ đề diễn đàn này cho thấy đầu ra mẫu từ 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.       ..

Nguồn: Trích xuất số sê-ri / Ngày sản xuất bằng EDID? .

Tài liệu tham khảo


@ l0b0 - có phải chỉ có 2? Có vẻ như nhiều hơn. Tôi có thể nhầm lẫn danh mục của Q này với chỉ bạn hỏi họ. Tôi sẽ xóa bit vi phạm 8-)
slm

# 3 / sys / ... công trình đối với tôi, tôi có Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09)với i915tài xế, Kubuntu 15.04
user.dz

# 3 / sys / ... và xrandr --verbosecả hai trả về dữ liệu EDID cho màn hình HDMI của tôi, nhưng không trả lại dữ liệu EDID cho màn hình DVI của tôi.
noobninja

Liên kết màn hình edid đã chết và archive.org không có bất kỳ bản sao lưu nào. Bất cứ ai biết nơi tôi có thể có được công cụ đó?
Peter W.

@PeterW. - có sự thay thế, cảm ơn vì đã chú ý đến điều này. Ngoài ra các công cụ là trong hầu hết các repos chính. Tôi đã tìm thấy nó trong Fedora 24, ví dụ và cả CentOS. Vì vậy, bạn có thể cài đặt công cụ dưới dạng nhị phân có lẽ là một tùy chọn dễ dàng hơn nhiều.
slm

11

Đầu ra xrandr --propschứa các chuỗi EDID hex cho mỗi màn hình được kết nối theo cách ít dài dòng hơn. Đây là một tập lệnh Python đơn giản khai thác điều này để lấy EDID cho một màn hình được kết nối cụ thể.

Tôi chưa tìm thấy bất kỳ công cụ CLI đóng gói phân phối nào khác hoạt động để trích xuất EDID trên hệ thống dựa trên NVidia của tôi, nhưng hầu hết các công cụ để phân tích EDID nhị phân dường như hoạt động tốt.


8

Nếu bạn tình cờ sử dụng vòm x86 hoặc powerpc, bạn có thể sử dụng read-edid. Trên debian này có sẵn ở đây .

Cách sử dụng chỉ đơn giản (bạn cần phải root):

$ sudo get-edid > /tmp/edid

và sau đó phân tích cấu trúc:

$ 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

Thường thì điều này được kết hợp thành:

$ sudo get-edid | parse-edid

Xem thêm ở đây về cách chuyển tệp edid tùy chỉnh này vào thẻ đồ họa của bạn bằng cách sử dụng:

  • CustomEDID hoặc,
  • drm_kms_helper.edid_firmare

3
Chỉ cần làm rõ rằng get-edid không hoạt động với tôi cho đến khi tôi thực hiện "modprobe i2c-dev". Và Modeline "parse-edid" được sản xuất đã không được Xorg chấp nhận. Vì vậy, tôi đã sử dụng phần này trong phần thiết bị: Tùy chọn "CustomEDID" "CRT-0: /etc/X11/edid-StarLight-170418_gb-nv-gf-650-GTX-VGA.bin" Tôi cần cung cấp EDID theo cách thủ công vì nó không thể được đọc chính xác trên cáp VGA dài 10m. Đặt "DisplaySize" cũng hữu ích cho tôi.
Delian Krustev

3

Một phiên bản gần đây của một công cụ có tên là edid-decode có thể phân tích thông tin EDID và nó có thể đọc và ghi văn bản và các tệp EDID nhị phân. Nó hoạt động tốt trên đầu ra của xrandr --verbose. Ví dụ: Nó có thể được sử dụng để lưu EDID trong tệp nhị phân:

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

Phiên bản edid-decode đi kèm với Fedora 27 (gói: xorg-x11-utils) quá cũ và nó không hoạt động hoàn hảo. Tôi đã sử dụng phiên bản gần đây nhất .


2

Ở dạng nhị phân EDID có sẵn tại /sys/class/drm/card%d-%s/edid, trong đó %dđại diện cho chỉ số thiết bị DRM (có thể là chỉ số GPU) và %slà ID kết nối mà bạn thấy ở xrandrđầu ra.

Để liệt kê tất cả có sẵn, chạy ls -1 /sys/class/drm/*/edid

Nếu trình điều khiển GPU của bạn không hỗ trợ DRM, bạn sẽ không thể nhận EDID theo cách này.

Để xem ở dạng hex, chạy hexdumptrên nó.

Nếu bạn muốn hình thức có thể đọc được của con người, hãy chuyển nó tới edid-decode, ví dụ:

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

(bạn có thể cần cài đặt nó bằng trình quản lý gói của mình sudo apt install edid-decodecho Ubuntu)


Làm thế nào để bạn vượt qua nó để edid-decode? Cũng lưu ý rằng có các thư mục con cho màn hình bị ngắt kết nối quá.
WinEunuuchs2Unix

@ WinEunuuchs2Unix, tôi đã thêm một ví dụ.
người dùng
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.