2 puan yazan GN⁺ 2025-06-16 | 1 yorum | WhatsApp'ta paylaş
  • HDMI dummy plug'ın EDID'sini Raspberry Pi kullanarak kolayca değiştirmenin bir yolu tanıtılıyor
  • Dummy plug, gerçek bir çıkış aygıtı olmadan cihaza bir monitör bağlıymış gibi algılatmak için kullanılır
  • EDID bilgisi, 1080p yakalama aygıtınınkiyle aynı olacak şekilde kopyalanarak plug'ın 4K monitör olarak görünmesi engellenebilir
  • Raspberry Pi'nin I2C denetleyicisi ve standart Linux araçlarıyla plug'ın EEPROM'u okunup yazılabilir
  • Tüm süreç boyunca cihaz hasarını önlemek için doğru I2C veriyolunu seçmek ve yedek almak şarttır

Dummy plug ve EDID'ye genel bakış

  • Dummy plug, HDMI veya DVI portuna takıldığında gerçek görüntü işleme yapmayan, yalnızca asgari devre ile cihazın monitör bağlı olduğunu algılamasını sağlayan küçük bir dongle türü aygıttır
  • Monitörün EDID(Extended Display Identification Data) bilgisini taklit eden bir EEPROM yongası ve +5V'a bağlı pull-up dirençler gibi devreler bulunur
  • Headless sunucular, insansız aygıtlar gibi ortamlarda işletim sisteminin (OS) bir ekranın var olduğunu düşünmesini sağlamak için kullanışlıdır

Amaç ve yaklaşım

  • Mevcut 4K çözünürlüğü destekleyen bir HDMI dummy plug'ı basit bir 1080p aygıt olarak algılanacak şekilde EDID'sini değiştirme deneyimi paylaşılıyor
  • Amaç, dummy plug içindeki EDID'yi bir HDMI yakalama aygıtının (1080p destekli) EDID bilgisiyle aynı olacak şekilde değiştirmek
  • Dummy plug'ın EEPROM'una yazmanın mümkün olup olmadığı kesin değildi, ancak denemeye değerdi
  • Raspberry Pi Zero'nun HDMI portu I2C denetleyicisine bağlı olduğundan erişim kolaydı

Güvenlik uyarıları ve sürecin başlangıcı

  • Gerçek bir monitör bağlıyken bu işlemler yapılırsa, EDID koruması olmayan monitörlerde hasar riski vardır
  • Bu yüzden işlemler yalnızca dummy plug gibi bozulsa da sorun olmayacak aygıtlarda yapılmalıdır
  • Ayrıca doğru I2C veriyolunu kullanmak ve yazmadan önce EDID'yi mutlaka okuyup doğrulamak gerekir

Ortam kurulumu ve hazırlık

  • Raspberry Pi OS Lite kurulduktan sonra sudo raspi-config ile ayarlar düzenlenir
  • sudo apt install i2c-tools ile I2C araçları kurulur (Pi Zero'da ağ gerekir; USB-Ethernet adaptörü veya SD kart üzerinde chroot ile aşılabilir)
  • HDMI-to-Mini-HDMI adaptörü gerekir

EDID EEPROM'unu algılama ve yedekleme

  • Raspberry Pi Zero için I2C veriyolu 2 kullanılır (diğer Pi modellerinde numara farklı olabilir)
  • i2cdetect komutuyla 0x50 adresinde aygıtın görüldüğü doğrulanır; bu, EDID EEPROM'unun standart adresidir
  • İlginç biçimde 0x51~0x57 adresleri de yanıt verir; yani EDID birden fazla blok halinde depolanmış durumdadır
  • get-edid ile mevcut dummy plug'ın orijinal EDID yedeği alınır, iki kez okunup karşılaştırılarak tutarlılık doğrulanır
  • od -v -An -txC ile EDID hex çıktısı alınır ve edidreader.com ile geçerliliği kontrol edilir

Yakalama aygıtının EDID'sini çıkarma ve plug'a yazma

  • Dummy plug çıkarıldıktan sonra HDMI yakalama aygıtı Pi'ye bağlanır
  • Aynı yöntemle yakalama aygıtının EDID'si çıkarılır ve geçerliliği yeniden doğrulanır
  • Ardından dummy plug tekrar bağlanır ve yakalama aygıtının EDID'si EEPROM'a yazılır
  • Her bayt için i2cset komutuyla yazma yapılır; bu işlem yalnızca standart Linux araçları ve bash ile mümkündür

Son doğrulama ve sonuç

  • İşlem bittikten sonra dummy plug'ın EDID'si yeniden çıkarılır ve orijinal dosyayla diff karşılaştırması yapılarak içeriğin eşleştiği doğrulanır
  • Test bilgisayarına bağlandığında artık orijinal 4K monitör olarak değil, HDMI yakalama aygıtı olarak tanınır
  • Böylece dummy plug'ın EDID'si başarıyla değiştirilmiş olur

Kapanış ve kullanım önerileri

  • Aynı yöntemle eski bir 1080p dummy plug da 4K destekli bir aygıta dönüştürülebilir
  • I2C yazma işlemlerinin yalnızca Raspberry Pi üzerinde yapılması önerilir; sıradan bir PC'de doğrudan denemek donanım hasarı riski taşır
  • Bu tür bir işleve ihtiyaç varsa, bu prosedür faydalı olabilir

1 yorum

 
GN⁺ 2025-06-16
Hacker News yorumu
  • Evde denemek isteyenler için küçük bir ipucu paylaşmak istiyorum: ucuz dummy plug'ların çoğunda yalnızca 256 bayt EEPROM var; bu da yüksek çözünürlük ve yüksek yenileme hızı için gereken EDID genişletme bloklarının tamamını depolamaya yetmiyor. Bu yüzden en fazla 1080p60 simüle edebiliyorlar; örneğin 4k240 bir monitörü taklit etmek mümkün değil. Ayrıca bazı ürünlerde write-protect hattı zaten bağlı oluyor, bu yüzden veri yazabilmek için lehimleme gibi fiziksel müdahale gerekebiliyor
  • Bu dummy plug'ların bir dezavantajı da HDCP işlemesini desteklememeleri. Headless makinelerde çözünürlüğü zorla çıktı vermek için harikalar, ancak HDCP gerektiren streaming servislerini test etmek için kullanılamıyorlar. HDCP ile de anlaşma yapabilen bir HDMI dummy plug çözümü bilen var mı? Her seferinde TV'yi test ekipmanı olarak kullanmak yorucu. Benim bulduğum bir çözüm HDMI multiviewer; her port için HDCP'yi ayrı ayrı müzakere ediyor
    • Ben bir HDMI splitter kullanıyorum; önceden programlanmış EDID ayarlanabiliyor ya da HDMI output 1'e bağlı monitörden EDID öğrenebiliyor. Splitter yalnızca güce bağlı olsa bile, gerçekten monitör bağlı değilken de bağlıymış gibi davranıyor. Splitter, PC veya konsolla HDCP'yi müzakere ettikten sonra gerçek monitöre sinyali HDCP olmadan iletiyor. amazon.com bakılabilir
    • Aliexpress'te HDCP'yi sonlandırıp HDMI'ı passthrough eden cihazlar sattığını söyleyen birçok ilan da var; satın almadan önce dikkatli olmak lazım
    • HDCP'yi kaldırmak kolay değil; yöntem, HDCP 1.4'e downgrade edip 1.4 standardını destekleyen “compliant” bir cihazı dummy monitor olarak bağlamak. HDCP 1.4'ten fazlası gerekiyorsa neredeyse imkansız
    • HDMI çıkışlı bir embedded sistemim var; açılış ekranını başka bir HDMI akışıyla (statik bir görüntü de olabilir) değiştirmek istiyorum ve embedded sistem tarafına kesinlikle dokunamam. Ucuz ve sağlam şekilde yalnızca HDMI sinyalini değiştirecek bir yöntem lazım
    • Amazon'da fiilen “HDCP stripper” olarak pazarlanan HDMI splitter'ları denemeni öneririm
  • EDID binary dosyaları koleksiyonu sunan bir yer ya da rahat oluşturmayı sağlayan bir program olup olmadığını merak ediyorum. Ben programlanabilir bir EDID emulator plug kullanıyorum ama belirli çözünürlükleri veya ayrıntılı özellikleri (örneğin DSC içeren 8K çözünürlük gibi) elle ayarlamak zor ya da imkansız. github.com/bsdhw/EDID içinde yeni monitör verisi az. Ben de AnalogWay EDID Editor ile kendim oluşturmayı denedim ama desteklenen modlardaki ince farklar veya önceliklendirme gibi detaylı ayarlar kolay değil
    • Benzer bir sorun yaşadım. Dolby TrueHD destekleyen ucuz bir 5.1ch soundbar aldım ama HDMI bağlantısı yalnızca eArc destekli cihazlarda (yeni TV'ler) çalışıyor. PC bağlayınca sadece SPIDF veya aux kullanabiliyorum, bu da ses kalitesini düşürüyor. Audio extractor/splitter yerine, PC'nin edid değerlerini soundbar'ın onu bir eArc cihazı olarak görmesini sağlayacak şekilde değiştirmeyi deniyorum; sanırım bunun için henüz net kurallar yok
  • Passthrough özelliği olan dummy plug'lar da satın alınabiliyor; eski sistemlerde yüksek çözünürlüklü monitörlerle uyumluluk sorunu olduğunda işe yarıyorlar. Örneğin benim 2011 AMD FX8350 sistemimde 4K çıkış sorunu var; bunu 1080p'ye zorlamak için plug'ı araya taktığımda monitör otomatik olarak 2x upscale edip temiz bir 4K görüntü gösteriyor
    • Bende de birkaç passthrough cihaz var, yazıda bu seçeneğe de değinmeliydim. Benim ürünüm biraz ilginç; monitörün EDID'sini okuyup kaydedebiliyor, sonra bunu başka bir monitöre override olarak uygulayabiliyor. Bir başka ilginç yanı da monitör her zaman bağlıymış gibi zorlayabilmesi. Monitörlerimden biri gücü kapatıldığında sanal olarak fişi çekilmiş gibi görünüp sorun çıkarıyor; passthrough cihaz bunu kusursuz çözüyor. Kullandığım ürün THWT'nin HD-EWB modeli
  • Normal monitörlerin ya da dizüstü ekranlarının kayıtlı edid bilgisi de bu yöntemle değiştirilebilir. TCON'un çeşitli ayarları da diğer i2c adreslerine yazarak değiştirilebilir. Raspberry Pi de şart değil; herhangi bir bilgisayar kullanılabilir
    • Yazının yazarı Pi'yi öneriyor ama şart değil; ancak PC'de doğrudan uygularsan, EDID yerine yanlışlıkla RAM modülünün SPD EEPROM'u gibi başka donanımları flash'layabilirsin
    • Flash çiplerde ayrı write enable/disable pinleri bulunur ve çoğu monitör ya da TV'de edid yazımını engelleyecek şekilde kablolama yapılmıştır; muhtemelen yalnızca ucuz modellerde bu korunmamış bırakılıyor. Koruma yoksa, okuma sırasında oluşan voltaj gürültüsü bile yazma işlemi tetikleyip flash'ı bozabilir
    • Çoğu monitörde edid değiştirilebiliyorsa bu, donanım üreticisinin bir açığı olduğu anlamına gelir. Normalde önceden programlanmış EEPROM alınır ve write pini hiç high yapılmaz. Yazılabilir şekilde sevk etmek alışıldık bir tasarım değildir ama sahada beklenmedik örnekler de çıkabiliyor
  • Neden dummy plug gerektiğini merak ediyorum. Yazılımla çözülemeyen bir şey mi var? Ben yazılımla 18 sanal ekranı sorunsuz kullanıyorum
    • Bir örnek: PC'mde Looking Glass adlı yazılımla bir Windows sanal makinesini kullanıyorum. İki GPU var (AMD ve NVidia) ve NVidia, Windows VM'e passthrough ediliyor. Looking Glass ile NVidia GPU çıkışını masaüstü penceresinde gösteriyorum; böylece VM içindeki Windows programlarını performans kaybı olmadan kullanabiliyorum (Windows 7'den sonra GPU hızlandırması olmadan kullanmak zorlaştı). Ama NVidia GPU'nun çalışması için fiziksel bir ekranın bağlı olması gerekiyor. Quadro GPU'lar monitörün EDID dosyasını dump edip her zaman bağlıymış gibi kullanabiliyor ama normal tüketici GPU'larında bu özellik yok. Böyle durumlarda tek seçenek dummy plug oluyor
    • OS / GPU / driver kombinasyonuna göre sanal ekran kurulumundaki esneklik çok değişiyor. OBS, Steam/Parsec oyun streaming'i için ekran eklemede dummy plug çok daha pratik. Linux+Xorg+open-source driver veya Windows+Nvidia'da bazen oluyor ama MacOS ya da Windows+AMD/Intel GPU'larda neredeyse hiç çalışmıyor
    • Windows/Linux modlu bir Chromebox kullanıyorum; HDMI portunda video cihazı yoksa hiç boot etmiyor. Dummy plug olmadan kaçınılmaz olarak tıkanıyorum
    • Dummy plug, sıradan kullanıcı için çok daha kolay ve pratik. Sadece yazılımla uzak oyun streaming'i için 4K sanal monitör kurmak sanıldığından çok daha karmaşık. 4k-sunshine configurator bakılabilir
    • Raspberry Pi uzak masaüstünde masaüstünün render edilmesi için fiziksel olarak bir monitörün bağlı olması gerekiyor; bütçesi ve zamanı kısıtlı lisansüstü öğrenciler için dummy plug en iyi çözüm
  • KVM ve Linux ortamında sorun çözmek için işe yarayacak ucuz bir DisplayPort EDID emulator olup olmadığını merak ediyorum. HDMI sürümlerine göre çok daha pahalılar; neredeyse yeni bir KVM almak daha mantıklı
    • DisplayPort'ta olay, basitçe I2C veri yolundaki EEPROM'u yazmak değil; DisplayPort'a özel AUX veri yolu kullanılıyor ve bu çok daha karmaşık. Açık doküman bulmak da zor; düzgün referanslara ulaşmak için VESA üyeliği ve NDA imzalama süreci gerekiyor
  • USB ibus2 plug'ın hex dump çıktısı EDID ile birleşik durumda