2 पॉइंट द्वारा GN⁺ 2025-06-16 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • HDMI डमी प्लग के EDID को Raspberry Pi की मदद से आसानी से बदलने का तरीका परिचित कराया गया है
  • डमी प्लग का उपयोग किसी वास्तविक आउटपुट डिवाइस के बिना भी सिस्टम को यह महसूस कराने के लिए होता है कि उससे मॉनिटर जुड़ा हुआ है
  • EDID जानकारी को 1080p capture device वाली जानकारी के समान कॉपी करके प्लग को 4K मॉनिटर के रूप में दिखने से रोका जा सकता है
  • Raspberry Pi के I2C controller और standard Linux tools की मदद से प्लग के EEPROM को पढ़ा और लिखा जा सकता है
  • पूरी प्रक्रिया में डिवाइस को नुकसान से बचाने के लिए सही I2C bus चुनना और backup लेना ज़रूरी है

डमी प्लग और EDID का अवलोकन

  • डमी प्लग एक छोटा dongle जैसा डिवाइस होता है, जिसे HDMI या DVI पोर्ट में लगाने पर वास्तविक वीडियो प्रोसेसिंग नहीं होती, लेकिन न्यूनतम सर्किट की मदद से सिस्टम को मॉनिटर कनेक्टेड होने का पता चल जाता है
  • इसमें मॉनिटर के EDID (Extended Display Identification Data) की नकल करने वाली EEPROM chip और +5V से जुड़े pull-up resistor जैसे सर्किट मौजूद होते हैं
  • यह headless server, unattended devices आदि में operating system (OS) को डिस्प्ले मौजूद होने का आभास देने के लिए उपयोगी है

उद्देश्य और तरीका

  • लेख में एक मौजूदा 4K resolution सपोर्ट करने वाले HDMI डमी प्लग को साधारण 1080p डिवाइस के रूप में पहचान कराने के लिए EDID बदलने का अनुभव साझा किया गया है
  • लक्ष्य था कि डमी प्लग के अंदर का EDID, HDMI capture device (1080p समर्थित) के EDID डेटा जैसा बना दिया जाए
  • यह निश्चित नहीं था कि डमी प्लग की EEPROM पर लिखा जा सकेगा या नहीं, लेकिन इसे आज़माना उचित लगा
  • Raspberry Pi Zero का HDMI पोर्ट I2C controller से जुड़ा होने के कारण उस तक पहुँचना आसान था

सुरक्षा सावधानियाँ और प्रक्रिया की शुरुआत

  • यदि यह प्रक्रिया किसी वास्तविक मॉनिटर के जुड़े होने पर की जाए, तो EDID protection न होने वाले मॉनिटर को नुकसान पहुँचने का जोखिम हो सकता है
  • इसलिए काम केवल डमी प्लग जैसे ऐसे डिवाइस पर ही करना चाहिए, जिसके खराब होने का जोखिम स्वीकार्य हो
  • साथ ही सही I2C bus का उपयोग करना, और write करने से पहले EDID को पढ़कर उसकी जाँच करना अनिवार्य है

environment setup और तैयारी

  • Raspberry Pi OS Lite इंस्टॉल करने के बाद sudo raspi-config से सेटिंग्स समायोजित की जाती हैं
  • sudo apt install i2c-tools से I2C tools इंस्टॉल किए जाते हैं (Pi Zero के लिए नेटवर्क चाहिए; USB-Ethernet adapter या SD card chroot से इसका विकल्प निकाला जा सकता है)
  • HDMI-to-Mini-HDMI adapter की आवश्यकता होती है

EDID EEPROM की पहचान और backup

  • Raspberry Pi Zero में I2C bus 2 का उपयोग किया जाता है (दूसरे Pi मॉडल में bus नंबर अलग हो सकता है)
  • i2cdetect कमांड से 0x50 address पर डिवाइस की पहचान की पुष्टि की जाती है, जो EDID EEPROM का standard address है
  • दिलचस्प रूप से 0x51~0x57 address भी response देते हैं, यानी EDID कई प्रतियों में स्टोर है
  • get-edid से डमी प्लग के मूल EDID का backup लिया जाता है, और दो बार पढ़कर मिलान करके उसकी consistency जाँची जाती है
  • od -v -An -txC से EDID को hexadecimal array के रूप में प्रिंट किया जाता है, और edidreader.com से validity जाँची जाती है

capture device का EDID निकालना और प्लग में लिखना

  • डमी प्लग हटाने के बाद HDMI capture device को Pi से जोड़ा जाता है
  • उसी तरीके से capture device का EDID निकाला जाता है और उसकी validity फिर से जाँची जाती है
  • फिर डमी प्लग दोबारा जोड़कर capture device का EDID EEPROM में लिखा जाता है
  • हर byte को i2cset कमांड से लिखा जाता है, और यह standard Linux tools तथा bash से किया जा सकता है

अंतिम सत्यापन और परिणाम

  • काम पूरा होने के बाद डमी प्लग का EDID फिर से निकालकर मूल फ़ाइल से diff द्वारा तुलना की जाती है और सामग्री के मेल की पुष्टि होती है
  • test computer से जोड़ने पर यह पहले वाले 4K मॉनिटर की जगह HDMI capture device के रूप में पहचाना जाता है
  • इस तरह डमी प्लग का EDID सफलतापूर्वक बदल दिया गया

समापन और उपयोग संबंधी सलाह

  • इसी प्रक्रिया से पुराने 1080p डमी प्लग को 4K समर्थित डिवाइस में भी बदला जा सकता है
  • I2C write का काम केवल Raspberry Pi पर ही करने की सलाह दी गई है; सामान्य PC पर सीधे करने से hardware damage का जोखिम हो सकता है
  • यदि इस तरह की functionality की ज़रूरत हो, तो यह प्रक्रिया उपयोगी साबित हो सकती है

1 टिप्पणियां

 
GN⁺ 2025-06-16
Hacker News राय
  • जो लोग इसे घर पर आज़माना चाहते हैं, उनके लिए एक छोटा सा टिप साझा करना चाहता हूँ: सस्ते dummy plug में आमतौर पर केवल 256-byte EEPROM होता है, इसलिए high-resolution और high-refresh-rate के लिए ज़रूरी EDID extension blocks को पूरा स्टोर करने की जगह नहीं होती। वे केवल 1080p60 तक ही simulate कर सकते हैं; उदाहरण के लिए 4k240 monitor की नकल करना संभव नहीं है। और कुछ उत्पादों में write-protect line पहले से जुड़ी होती है, इसलिए data लिखने के लिए सीधे soldering जैसी physical छेड़छाड़ करनी पड़ती है
  • इन dummy plug की कमी यह है कि ये HDCP handle नहीं करते। Headless machine पर resolution को force करके output दिलाने के लिए ये बेहतरीन हैं, लेकिन HDCP की ज़रूरत वाले streaming service test में इनका उपयोग नहीं किया जा सकता। क्या किसी को ऐसा HDMI dummy plug solution पता है जो HDCP negotiation भी कर सके? हर बार TV को test equipment की तरह इस्तेमाल करना झंझट भरा है। मुझे जो एक समाधान मिला, वह HDMI multiviewer है, जो हर port पर अलग-अलग HDCP negotiate करता है
    • मैं HDMI splitter इस्तेमाल कर रहा हूँ। इसमें pre-programmed EDID सेट किया जा सकता है, या HDMI output 1 से जुड़े monitor से EDID सीखा जा सकता है, और अगर splitter को सिर्फ power मिल रही हो तो यह बिना असली monitor जुड़े भी connected जैसा व्यवहार करता है। Splitter, PC या console के साथ HDCP negotiate कर लेने के बाद, असली monitor की तरफ signal को बिना HDCP के पास कर देता है। amazon.com देखें
    • Aliexpress पर ऐसे device बेचने के बहुत से दावे दिखते हैं जो HDCP को terminate करके HDMI को passthrough करते हैं, इसलिए खरीदने से पहले सावधान रहें
    • HDCP हटाना आसान नहीं है; तरीका यह है कि इसे HDCP 1.4 तक downgrade किया जाए और 1.4 spec को support करने वाले किसी ‘compliant’ device को जोड़कर उसे dummy monitor की तरह इस्तेमाल किया जाए। अगर HDCP 1.4 से ऊपर चाहिए, तो यह लगभग असंभव है
    • मेरे पास एक embedded system है जिसमें HDMI output है, और मैं boot screen को किसी दूसरे HDMI stream से बदलना चाहता हूँ, static image भी चलेगी। Embedded system वाली तरफ बिल्कुल छेड़छाड़ नहीं की जा सकती। मुझे HDMI signal को ही सस्ते और robust तरीके से बदलने का उपाय चाहिए
    • Amazon पर जो HDMI splitter असल में “HDCP stripper” की तरह advertise किए जाते हैं, उन्हें आज़माने की सिफारिश करूँगा
  • क्या कहीं EDID binary files का कोई collection मिलता है, या उन्हें आसानी से बनाने वाला कोई program है? मैं programmable EDID emulator plug इस्तेमाल करता हूँ, लेकिन किसी खास resolution या detailed feature (जैसे DSC शामिल 8K resolution) को खुद सेट करना मुश्किल या असंभव होता है। github.com/bsdhw/EDID में नए monitor का data कम है। मैंने खुद AnalogWay EDID Editor से बनाने की कोशिश की, लेकिन supported modes के सूक्ष्म अंतर, priority तय करना वगैरह जैसी बारीक settings आसान नहीं हैं
    • मैंने भी ऐसा ही झंझट झेला है। मैंने Dolby TrueHD तक support करने वाला एक सस्ता 5.1ch soundbar खरीदा, लेकिन HDMI connection केवल eArc support करने वाले device (नए TV) पर ही काम करता है। PC जोड़ने पर मुझे SPIDF या aux ही इस्तेमाल करना पड़ता है, जिससे sound quality गिर जाती है। Audio extractor/splitter की जगह मैं PC के EDID value को इस तरह बदलने की कोशिश कर रहा हूँ कि soundbar उसे eArc device माने, लेकिन लगता है कि अभी इसके लिए कोई सख्त guideline नहीं है
  • Passthrough feature वाले dummy plug भी खरीदे जा सकते हैं, जो पुराने system में high-resolution monitor compatibility issue होने पर उपयोगी हैं। उदाहरण के लिए, मेरे 2011 AMD FX8350 system में 4K output की समस्या है, इसलिए जब मैं 1080p force करने के लिए plug को inline लगाता हूँ, तो monitor अपने-आप 2x upscale करके साफ 4K में दिखाता है
    • मेरे पास कुछ passthrough device भी हैं; इस विकल्प का लेख में ज़िक्र होना चाहिए था। मेरा product थोड़ा दिलचस्प है: यह monitor का EDID पढ़कर उसे store कर सकता है, फिर दूसरे monitor पर override के रूप में लागू कर सकता है। एक और रोचक बात यह है कि यह monitor को हमेशा connected मानने के लिए force कर सकता है। मेरे एक monitor में power off करते ही virtual unplug की स्थिति बन जाती है और समस्या होती है, जिसे passthrough device पूरी तरह ठीक कर देता है। मैं THWT का HD-EWB इस्तेमाल करता हूँ
  • सामान्य monitor या laptop screen में stored EDID information को भी इस तरीके से बदला जा सकता है। TCON की कई settings को भी दूसरे i2c address पर write करके बदला जा सकता है। Raspberry Pi भी ज़रूरी नहीं है; कोई भी computer इस्तेमाल किया जा सकता है
    • लेख का लेखक Pi की सिफारिश करता है, लेकिन यह अनिवार्य नहीं है। अगर आप सीधे PC पर यह प्रक्रिया करें, तो EDID की जगह गलती से hardware के किसी और EEPROM, जैसे RAM module के SPD EEPROM, को flash कर सकते हैं
    • Flash chip में write enable/disable pin अलग होती है, और ज़्यादातर monitor या TV में EDID write को block करने के लिए wiring की जाती है। मेरा अनुमान है कि केवल low-end models में इसे यूँ ही छोड़ दिया जाता है। अगर यह असुरक्षित हो, तो सिर्फ read के दौरान voltage noise से भी write operation trigger हो सकता है और flash खराब हो सकती है
    • अगर अधिकांश monitor में EDID बदला जा सकता है, तो यह hardware vendors की चूक दिखाता है। आम तौर पर pre-programmed EEPROM लेकर उसकी write pin को high पर न रखने की प्रथा होती है। इसे writable हालत में ship करना सामान्य design नहीं है, लेकिन वास्तविक दुनिया में अप्रत्याशित मामले अक्सर मिल जाते हैं
  • यह जानना चाहता हूँ कि dummy plug की ज़रूरत क्यों पड़ती है? क्या ऐसी कोई चीज़ है जिसे software से हल नहीं किया जा सकता? मैं तो software से 18 virtual display बिना किसी समस्या के इस्तेमाल कर रहा हूँ
    • एक उदाहरण मेरे PC पर Looking Glass software के साथ Windows virtual machine चलाने का है। मेरे पास दो GPU (AMD और NVidia) हैं, और NVidia को Windows VM में passthrough किया गया है। Looking Glass, NVidia GPU के output को desktop window में दिखाता है, जिससे VM के अंदर के Windows programs को performance loss के बिना इस्तेमाल किया जा सकता है (Windows 7 के बाद GPU acceleration के बिना उपयोग करना मुश्किल हो गया)। लेकिन NVidia GPU तभी काम करता है जब असली display जुड़ा हो। Quadro GPU में monitor की EDID file dump करके उसे हमेशा connected जैसा दिखाया जा सकता है, लेकिन सामान्य consumer GPU में यह feature नहीं होता। ऐसे में dummy plug ही एकमात्र विकल्प है
    • OS / GPU / driver के combination के हिसाब से virtual display setup की आज़ादी बहुत बदलती है। OBS, Steam/Parsec game streaming के लिए display जोड़ने में dummy plug कहीं ज़्यादा आसान है। Linux+Xorg+open source driver या Windows+Nvidia में कभी-कभी यह हो जाता है, लेकिन MacOS या Windows+AMD/Intel GPU में लगभग काम नहीं करता
    • मैं Chromebox को mod करके Windows/Linux चलाता हूँ, और अगर HDMI port पर video device न हो तो यह boot ही नहीं होता। Dummy plug के बिना यह पूरी तरह अटक जाता है
    • Dummy plug आम लोगों के लिए बहुत आसान और सुविधाजनक है। केवल software से remote game streaming के लिए 4K virtual monitor सेट करना सोच से कहीं ज़्यादा जटिल है। 4k-sunshine configurator देखें
    • Raspberry Pi remote desktop में desktop तभी render होता है जब physical monitor जुड़ा हो; कम budget और समय वाले graduate student के लिए dummy plug सबसे अच्छा उपाय है
  • जानना चाहता हूँ कि KVM और Linux environment की समस्या सुलझाने के लिए कोई काम का, सस्ता DisplayPort EDID emulator है या नहीं। HDMI version की तुलना में ये इतने महंगे हैं कि नया KVM खरीदना ही बेहतर लगे
    • DisplayPort में साधारण I2C bus के EEPROM का उपयोग नहीं होता, बल्कि DisplayPort-specific AUX bus का उपयोग होता है, जिसकी संरचना कहीं ज़्यादा जटिल है। सार्वजनिक दस्तावेज़ भी मुश्किल से मिलते हैं, और ठीक-ठाक reference पाने के लिए VESA membership और NDA signing प्रक्रिया चाहिए होती है
  • USB ibus2 plug का hex dump output EDID से जुड़ता है