2 poin oleh GN⁺ 2025-06-16 | 1 komentar | Bagikan ke WhatsApp
  • Memperkenalkan cara mudah mengubah EDID HDMI dummy plug dengan memanfaatkan Raspberry Pi
  • Dummy plug digunakan agar perangkat mengenali seolah-olah monitor terhubung meskipun tidak ada perangkat output yang sebenarnya
  • Dengan menyalin informasi EDID agar sama dengan milik perangkat capture 1080p, plug dapat diatur agar tidak ditampilkan sebagai monitor 4K
  • Hanya dengan pengendali I2C pada Raspberry Pi dan alat Linux standar, EEPROM pada plug dapat dibaca dan ditulis
  • Sepanjang proses, pemilihan bus I2C yang benar dan pencadangan wajib dilakukan untuk mencegah kerusakan perangkat

Gambaran dummy plug dan EDID

  • Dummy plug adalah perangkat kecil berbentuk dongle yang saat dihubungkan ke port HDMI atau DVI tidak melakukan pemrosesan video nyata, tetapi dengan rangkaian minimal membuat perangkat mendeteksi adanya monitor yang terhubung
  • Terdapat rangkaian seperti chip EEPROM yang meniru EDID (Extended Display Identification Data) monitor, serta resistor pull-up yang terhubung ke +5V
  • Ini berguna untuk server headless, perangkat tanpa operator, dan kasus lain agar sistem operasi (OS) menganggap ada layar yang terpasang

Tujuan dan pendekatan

  • Berbagi pengalaman ingin mengubah EDID dari HDMI dummy plug yang semula mendukung resolusi 4K agar dikenali sebagai perangkat 1080p biasa
  • Tujuannya adalah mengganti EDID di dalam dummy plug agar identik dengan informasi EDID milik perangkat capture HDMI yang mendukung 1080p
  • Belum ada kepastian apakah EEPROM pada dummy plug bisa ditulisi, tetapi layak untuk dicoba
  • Port HDMI pada Raspberry Pi Zero terhubung ke pengendali I2C, sehingga mudah diakses

Peringatan keselamatan dan awal prosedur

  • Jika proses seperti ini dilakukan saat monitor sungguhan terhubung, monitor yang tidak memiliki perlindungan EDID berisiko rusak
  • Pekerjaan ini harus dilakukan hanya pada perangkat seperti dummy plug yang tidak masalah jika sampai rusak
  • Selain itu, wajib menggunakan bus I2C yang benar, dan sebelum menulis harus membaca serta memverifikasi EDID terlebih dahulu

Pengaturan lingkungan dan persiapan

  • Setelah memasang Raspberry Pi OS Lite, sesuaikan pengaturan dengan sudo raspi-config
  • Pasang alat I2C dengan sudo apt install i2c-tools (untuk Pi Zero perlu jaringan; bisa diakali dengan adaptor USB-Ethernet atau chroot pada kartu SD)
  • Diperlukan penggunaan adaptor HDMI-to-Mini-HDMI

Pengenalan dan pencadangan EEPROM EDID

  • Untuk Raspberry Pi Zero digunakan bus I2C 2 (pada model Pi lain nomornya berbeda)
  • Dengan perintah i2cdetect, pastikan perangkat terdeteksi di alamat 0x50, yang merupakan alamat standar untuk EEPROM EDID
  • Menariknya, alamat 0x51~0x57 juga merespons, menunjukkan bentuk penyimpanan EDID yang berlipat
  • Lakukan pencadangan EDID asli dari dummy plug dengan get-edid, lalu baca dua kali dan bandingkan untuk memverifikasi konsistensi
  • Gunakan od -v -An -txC untuk menampilkan EDID dalam heksadesimal, lalu periksa validitasnya di edidreader.com

Mengekstrak EDID perangkat capture dan menuliskannya ke plug

  • Lepaskan dummy plug lalu hubungkan perangkat capture HDMI ke Pi
  • Ekstrak EDID perangkat capture dengan cara yang sama, lalu konfirmasi kembali validitasnya
  • Sambungkan lagi dummy plug, lalu tulis EDID perangkat capture ke EEPROM
  • Penulisan dilakukan per byte melalui perintah i2cset, sehingga dapat dikerjakan hanya dengan alat Linux standar dan bash

Verifikasi akhir dan hasil

  • Setelah selesai, ekstrak kembali EDID dari dummy plug dan bandingkan dengan file sumber menggunakan diff untuk memastikan isinya sama
  • Saat dihubungkan ke komputer uji, perangkat tidak lagi dikenali sebagai monitor 4K asli, melainkan sebagai perangkat capture HDMI
  • Penggantian EDID pada dummy plug berhasil dilakukan

Penutup dan saran pemanfaatan

  • Dengan prosedur yang sama, dummy plug 1080p lama juga bisa diubah menjadi perangkat yang mendukung 4K
  • Penulisan I2C disarankan dilakukan hanya dari Raspberry Pi; jika dilakukan langsung dari PC biasa ada risiko kerusakan perangkat keras
  • Jika membutuhkan fungsi terkait, prosedur ini dapat berguna

1 komentar

 
GN⁺ 2025-06-16
Komentar Hacker News
  • Ingin berbagi satu tips kecil untuk yang mau mencoba ini di rumah: kebanyakan dummy plug murah hanya punya EEPROM 256 byte, jadi kapasitasnya tidak cukup untuk menyimpan seluruh blok ekstensi EDID yang dibutuhkan untuk resolusi tinggi dan refresh rate tinggi. Paling jauh hanya bisa mensimulasikan 1080p60; misalnya tidak mungkin meniru monitor 4k240. Selain itu, beberapa produk sudah menghubungkan jalur write-protect, jadi agar bisa menulis data Anda harus memodifikasinya secara fisik, misalnya dengan menyolder
  • Kekurangan dummy plug ini adalah tidak mendukung HDCP. Sangat bagus untuk memaksa output resolusi pada mesin headless, tetapi tidak bisa dipakai untuk menguji layanan streaming yang memerlukan HDCP. Adakah yang tahu solusi HDMI dummy plug yang juga bisa bernegosiasi HDCP? Agak merepotkan kalau harus terus memakai TV sebagai alat uji. Satu solusi yang saya temukan adalah HDMI multiviewer, yang menegosiasikan HDCP secara terpisah untuk tiap port
    • Saya memakai HDMI splitter; kita bisa mengatur EDID yang sudah diprogram sebelumnya atau mempelajari EDID dari monitor yang terhubung ke HDMI output 1, dan selama splitter hanya terhubung ke daya, perangkat itu akan bertindak seolah-olah monitor benar-benar terhubung meski tidak ada monitor. Setelah splitter menegosiasikan HDCP dengan PC atau konsol, sinyal diteruskan ke monitor sebenarnya tanpa HDCP. Lihat amazon.com
    • Di Aliexpress juga banyak iklan perangkat yang mengakhiri HDCP dan meneruskan HDMI secara passthrough. Hati-hati sebelum membeli
    • Melepas HDCP tidak mudah; caranya adalah menurunkan ke HDCP 1.4 lalu menghubungkan perangkat ‘compliant’ yang mendukung spesifikasi 1.4 untuk dipakai sebagai dummy monitor. Jika membutuhkan HDCP 1.4 ke atas, itu nyaris tidak mungkin
    • Saya punya sistem embedded dengan output HDMI, dan ingin mengganti layar boot dengan stream HDMI lain, bahkan gambar statis pun tidak masalah. Sisi sistem embedded sama sekali tidak boleh disentuh. Saya butuh cara murah dan andal untuk hanya mengganti sinyal HDMI
    • Saya sarankan mencoba HDMI splitter di Amazon yang pada praktiknya dipasarkan sebagai “HDCP stripper”
  • Saya penasaran apakah ada tempat yang menyediakan kumpulan file biner EDID, atau program yang memudahkan pembuatannya. Saya memakai programmable EDID emulator plug, tetapi sulit atau tidak mungkin mengatur sendiri resolusi tertentu atau fitur detail tertentu (misalnya resolusi 8K yang mencakup DSC). github.com/bsdhw/EDID kurang memiliki data monitor model baru. Saya juga pernah membuatnya sendiri dengan AnalogWay EDID Editor, tetapi proses pengaturan detail seperti perbedaan halus pada mode yang didukung atau penentuan prioritas tidak mudah
    • Saya pernah menghadapi masalah serupa. Saya membeli soundbar 5.1ch murah yang bahkan mendukung Dolby TrueHD, tetapi koneksi HDMI hanya berfungsi pada perangkat yang mendukung eArc (TV terbaru). Jika menghubungkan PC, saya hanya bisa memakai SPIDF atau aux sehingga kualitas suara menurun. Alih-alih audio extractor/splitter, saya sedang mencoba memanipulasi nilai edid di PC agar soundbar mengenalinya sebagai perangkat eArc; tampaknya belum ada panduan yang benar-benar baku
  • Dummy plug dengan fungsi passthrough juga bisa dibeli, dan berguna saat sistem lama punya masalah kompatibilitas dengan monitor beresolusi tinggi. Misalnya, sistem AMD FX8350 saya dari 2011 bermasalah saat output 4K, jadi ketika saya mencolokkan plug secara inline untuk memaksa 1080p, monitor otomatis melakukan upscale 2x dan menampilkannya dengan rapi sebagai 4K
    • Saya juga punya beberapa perangkat passthrough; seharusnya saya menyebut opsi ini di artikel. Produk saya agak unik karena bisa membaca dan menyimpan EDID monitor lalu menerapkannya sebagai override ke monitor lain. Hal menarik lainnya, perangkat ini bisa memaksa sistem menganggap monitor selalu terhubung. Salah satu monitor saya menimbulkan masalah karena saat dayanya dimatikan, sistem menganggap colokannya tercabut secara virtual, dan perangkat passthrough menyelesaikannya dengan sempurna. Produk yang saya pakai adalah THWT HD-EWB
  • Informasi edid yang tersimpan di monitor biasa atau layar laptop juga bisa dimodifikasi dengan cara ini. Berbagai pengaturan TCON juga bisa diubah dengan menulis ke alamat i2c lain. Raspberry Pi juga tidak wajib; komputer apa pun bisa dipakai
    • Penulis artikel memang merekomendasikan Pi, tetapi itu tidak wajib. Jika Anda mengikuti langkahnya langsung di PC, Anda bisa saja tanpa sengaja mem-flash perangkat keras lain, misalnya SPD EEPROM pada modul RAM, bukan EDID
    • Chip flash punya pin terpisah untuk mengaktifkan/menonaktifkan penulisan, dan sebagian besar monitor atau TV dikabelkan untuk memblokir penulisan edid. Dugaan saya, hanya produk murah yang sering dibiarkan begitu saja. Jika tidak terlindungi, bahkan noise tegangan saat membaca bisa memicu operasi tulis dan merusak flash
    • Fakta bahwa EDID bisa dimodifikasi pada kebanyakan monitor menunjukkan adanya kelemahan dari produsen perangkat keras. Biasanya praktik yang lazim adalah menerima EEPROM yang sudah diprogram lalu tidak pernah menarik pin write ke high. Mengirim produk dalam keadaan writable bukan desain yang umum, tetapi di lapangan kadang memang ada kasus yang tak terduga
  • Kenapa dummy plug diperlukan? Saya penasaran apakah ada sesuatu yang tidak bisa diselesaikan lewat software, karena saya memakai 18 display virtual lewat software tanpa masalah apa pun
    • Salah satu contohnya adalah saat saya memakai software bernama Looking Glass di PC saya untuk mengoperasikan mesin virtual Windows. Saya punya dua GPU (AMD dan NVidia), dan NVidia dipassthrough ke Windows VM. Dengan Looking Glass, output GPU NVidia ditampilkan di jendela desktop sehingga saya bisa memakai program Windows di dalam VM tanpa penurunan performa (sejak Windows 7, praktis sulit digunakan tanpa akselerasi GPU). Namun GPU NVidia hanya berfungsi jika ada display fisik yang terhubung. GPU Quadro bisa men-dump file EDID monitor dan memakainya seolah selalu terhubung, tetapi GPU konsumen biasa tidak punya fitur itu. Dalam kasus seperti itu, dummy plug adalah satu-satunya alternatif
    • Tingkat kebebasan pengaturan display virtual sangat berbeda tergantung kombinasi OS / GPU / driver. Untuk menambahkan display bagi OBS atau game streaming Steam/Parsec, dummy plug jauh lebih mudah. Pada Linux+Xorg+driver open source atau Windows+Nvidia kadang bisa jalan, tetapi di MacOS atau Windows+GPU AMD/Intel hampir tidak berfungsi
    • Saya memod Chromebook untuk menjalankan Windows/Linux, dan jika tidak ada perangkat video di port HDMI, sistemnya bahkan tidak bisa boot. Tanpa dummy plug, benar-benar buntu
    • Dummy plug jauh lebih mudah dan praktis untuk orang umum. Menyiapkan monitor virtual 4K hanya dengan software untuk game streaming jarak jauh ternyata sangat rumit. Lihat konfigurator 4k-sunshine
    • Pada remote desktop Raspberry Pi, desktop hanya dirender jika monitor fisik benar-benar terhubung, jadi bagi mahasiswa pascasarjana yang kekurangan anggaran dan waktu, dummy plug adalah pilihan terbaik
  • Saya penasaran apakah ada DisplayPort EDID emulator murah yang layak dipakai untuk menyelesaikan masalah di lingkungan KVM dan Linux. Dibanding versi HDMI, harganya jauh lebih mahal sampai-sampai rasanya lebih baik beli KVM baru saja
    • DisplayPort tidak sekadar memakai EEPROM di bus I2C, melainkan menggunakan bus AUX khusus DisplayPort, yang strukturnya jauh lebih kompleks. Dokumentasi publik juga sulit ditemukan, dan untuk mendapatkan referensi yang layak biasanya perlu bergabung dengan VESA dan menandatangani NDA
  • Hasil hex dump dari USB ibus2 plug berlanjut ke EDID