एकल मॉनिटर के लिए EDID कैसे प्राप्त करें?


20

एक्सरैंडर के जवाब का जवाब देना एम्पलीफायर का पता लगाता है क्योंकि मॉनिटर संभव ईडीआईडी ​​के साथ उपकरणों को ब्लैकलिस्ट करने के लिए है । दुर्भाग्य से xrandr --verboseएक प्रारूप में सब कुछ प्रिंट करता है जो पार्स करने के लिए बोझिल है और एकल उपकरणों को क्वेरी करने का समर्थन नहीं करता है, और get-edidआउटपुट को xrandrआईडी के मॉनिटर आईडी (उदाहरण के लिए DVI-1) पर मैप करना आसान नहीं लगता है ।

क्या एक मॉनीटर के लिए आसानी से पार्स करने योग्य EDID प्राप्त करने का कोई तरीका है ?


मैं xrandrपार्स करने गया था। यह बोझिल है, लेकिन आप बस एक बार और सभी के लिए अपनी स्क्रिप्ट लिखें, और फिर यह हर जगह काम करेगा।
गिल्स एसओ- बुराई को रोकना '

जवाबों:


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

हालांकि मेरे लेनोवो लैपटॉप पर ये "फाइलें" खाली थीं, शायद वे आपके सिस्टम पर अलग हैं। मुझे यह फोरम थ्रेड मिला जिसमें वीजीए ईडीआईडी ​​से नमूना आउटपुट दिखाया गया था।

$ 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 w की श्रेणी को भ्रमित कर सकता हूं / बस आप उनसे पूछ रहे हैं। मैं नाराज़ सा 8-) निकाल देंगे
SLM

# 3 / sys / ... मेरे लिए काम करता है, मेरे पास ड्राइवर के Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09)साथ है i915,
कुबंटु

# 3 / sys / ... और xrandr --verboseदोनों मेरे HDMI मॉनिटर के लिए EDID डेटा लौटाते हैं, लेकिन न ही मेरे DVI मॉनिटर के लिए EDID डेटा लौटाते हैं।
नोबिनजा

मॉनिटर-एडिड लिंक मृत है और आर्काइव.ऑर्ग के पास कोई बैकअप नहीं है। किसी को भी पता है कि मुझे वह उपकरण कहां मिल सकता है?
पीटर डब्ल्यू।

@PeterW। - विकल्प है, इसे मेरे ध्यान में लाने के लिए धन्यवाद। इसके अलावा उपकरण अधिकांश प्रमुख रिपोज में है। मैंने इसे फेडोरा 24 में पाया, उदाहरण के लिए और सेंटोस भी। तो आप टूल को एक बाइनरी के रूप में स्थापित कर सकते हैं जो संभवतः बहुत आसान विकल्प है।
SLM

11

आउटपुट में xrandr --propsकम कनेक्टेड तरीके से प्रत्येक जुड़े डिस्प्ले के लिए हेक्स ईडीआईडी ​​स्ट्रिंग्स शामिल हैं। यहाँ एक साधारण पायथन लिपि है जो किसी विशिष्ट कनेक्टेड मॉनिटर के लिए EDID हड़पने के लिए इसका शोषण करती है।

मुझे कोई अन्य डिस्ट्रो-पैकेज्ड सीएलआई टूल नहीं मिला है जो मेरे एनवीडिया-आधारित सिस्टम पर ईडीआईडी ​​निष्कर्षण के लिए काम करता है, लेकिन बाइनरी ईडीआईडी ​​को पार्स करने के लिए अधिकांश उपकरण ठीक काम करने लगते हैं।


8

यदि आप x86 या पावरपैक आर्क का उपयोग करते हैं, तो आप उपयोग कर सकते हैं 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
बस स्पष्ट करने के लिए कि गेट-एडिड ने मेरे लिए तब तक काम नहीं किया जब तक कि मैंने "modprobe i2c-dev" नहीं किया। और "पार्स-एडिड" निर्मित मोडलाइन को एक्सगोर द्वारा स्वीकार नहीं किया गया था। इसलिए मैंने इसका उपयोग डिवाइस सेक्शन में किया है: विकल्प "CustomEDID" "CRT-0: /etc/X11/edid-StarLight-170418_gb-nv-gf-650-GTX-VGA.bin" मुझे मैन्युअल रूप से EDID प्रदान करने की आवश्यकता है चूँकि इसे 10 मीटर लंबी वीजीए केबल पर सही ढंग से नहीं पढ़ा जा सकता है। "डिस्प्लेसाइज़" सेट करना मेरे लिए भी उपयोगी था।
डेलियन क्रस्टेव

3

एडिड-डिकोड नामक टूल का हाल का संस्करण EDID जानकारी को पार्स कर सकता है, और यह पाठ और बाइनरी ईडीआईडी ​​फ़ाइलों को पढ़ और लिख सकता है। यह के आउटपुट पर अच्छी तरह से काम करता है xrandr --verbose। उदाहरण के लिए, इसका उपयोग EDID को बाइनरी फ़ाइल में सहेजने के लिए किया जा सकता है:

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

एडिड-डिकोड का संस्करण जो फेडोरा 27 के साथ आता है (पैकेज: xorg-x11-utils) बहुत पुराना है और यह पूरी तरह से काम नहीं करता है। मैंने सबसे हाल के संस्करण का उपयोग किया ।


2

बाइनरी फॉर्म में EDID उपलब्ध है /sys/class/drm/card%d-%s/edid, जहां %dDRM डिवाइस इंडेक्स (शायद GPU इंडेक्स) का प्रतिनिधित्व करता है और %sएक कनेक्टर आईडी है जिसे आप xrandrआउटपुट में देखते हैं ।

सभी उपलब्ध सूची के लिए, चलाएं ls -1 /sys/class/drm/*/edid

यदि आपका GPU ड्राइवर DRM का समर्थन नहीं करता है, तो आप इस तरह EDID प्राप्त नहीं कर पाएंगे।

हेक्स रूप में देखने के लिए, hexdumpउस पर चलाएँ ।

यदि आप मानव-पठनीय रूप चाहते हैं, तो इसे पास करें edid-decode, जैसे:

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

(आपको sudo apt install edid-decodeउबंटू के लिए अपने पैकेज मैनेजर का उपयोग करके इसे स्थापित करने की आवश्यकता हो सकती है )


आप इसे कैसे पास करते हैं edid-decode? यह भी ध्यान दें कि डिस्कनेक्ट किए गए मॉनिटर के लिए उप-निर्देशिकाएं भी हैं।
विनयुनुच्स 2 यूनिक्स

@ WinEunuuchs2Unix, मैंने एक उदाहरण जोड़ा है।
उपयोगकर्ता
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.