Top Page 101_EDID_emulatorを調べてみる
自作・実験工程のメモとして
10 Aug.2025


 以前からパソコン(以下、PC)は何台か保有していましたが、ディスプレーは置き場所の関係で27インチFHDタイプの1台だけで済ませていました。
そのため、10年ぐらい前からサンワサプライのKVM(エミュレーション有り)から始まり現在はHDMIタイプのKVMを使用しています。
HDMIタイプのKVMを使用する過程で未接続状態のディスプレーに切替えると、以前に開いていた画面の大きさや位置が縮小して左上に寄る現象が発生します。
その対応品として HDMI EDID emurator を購入して対応してきましたが、そのしくみが気になり、Net上の情報を頼りに調べてみることにしました。



以前から使っていたEDID emuratorと用意した主な治具類
1.左の基板は2枚購入して、ひとつはArduinoに接続するためと、もう一つはEEPROMに接続する用途で使用します。
2.ArduinoNANOは以前より時々使用している品で、I2CでROM情報を読み出すプログラミングができれば良く、こだわりは有りません。

EDID emurator

AmazonでPCが増えるごとに買い足していき、現在は3個持っています。

Edit by bluegriffon 3.1

1.回路図(想像上の回路で間違いが有ると思います)

 EDID emurator の商品ページに双方向と有ったのですが、向きを間違えて壊してはいけないと思い最初の設置場所以外では使ってきませんでした。
しかし、双方向と言うからにはすべての線が導通状態と思っていましたが、文頭の治具で両側(HDMIコネクターのオス・メス側)から挟み、テスターを当てるとSDA・SCLに相当する2本だけは導通が有りません。
それならと、同じく治具でオスが側・メス側を分けてデーターを読み出すと、同じ内容が読み出せました。
その事から両側にEDID用のROMが入っていると考え、下のような回路を起こしてみました。
まったくの想像上の回路で、間違いが有ると思われますので、ご了承ください。

■.EDID emurator の回路図

クリックで拡大版になります。(pdfファイル)


2.i2cEEPROM読み出し書き込み用のArduinoスケッチ

 Net上では、WindowsPC上からEDID情報を読み出すソフトが多く存在しており、その一部を試しに使ってみました。
しかし、自分ではそのやり方がわからずArduinoでEEPROMに対する読み出し・書き込みができるスケッチを書いてみることにしました。
そのためには、EDIDの仕様書のような物が入手できるかどうかに係ってきますがNet上で見つけることができました。(以下、仕様書
その情報をもとに我流で内容の解析もどきをしていますが、間違いが有ると思いますのでそのまま信用されないように、参考程度にご覧ください。


■.仕様書 標準リリース A2 (EDID 1.4)
1.「VESA-EEDID-A2」を入力して検索することで確認することが 可能と思います。GitHub
2.最近のGoogle翻訳は、ファイルを貼り付けるだけでpdfファイルも翻訳してくれるようで、完全ではありませんが意味が分かる程度の日本語版も用意しました。

■.立ち上げ画面(TERATERMを使用)
1.En  i2cEEPROMから、Arduino内部のEEPROM(以下、inEEPROM)の保管先(2か所)を選択します。(画像省略)
2.R    i2cEEPROMから読み出し、inEEPROM(上記Enで選択:以下同様に)に書き込みます。
3.D    inEEPROMメモリーの内容を256Byteダンプします。(上記Enで選択)
4.W   inEEPROMからi2cEEPROMに書き込みます。
5.X    inEEPROMの1Byteをアドレス,データを指定して書き換えます。
6.Sn  inEEPROMの128Byteについて、チェック・サムを計算します。
7.A    Analysis(解析)inEEPROMを解析します。(Basic領域の128Byteのみ)

■.R    i2cEEPROMから読み出し・・・・・・ (Dumpも同様)
1.i2cEEPROMから読み出し、inEEPROMに書き込みと同時に、内容をHexと文字で表します。
2.inEEPROMは、どちらを使用しているかをCMD=の前に表示するようにしています。
3.ROM内情報を一部マスクしておきます。

■.W   inEEPROMからi2cEEPROMに書き込み
書き込み中は、'.' 文字で16バイト毎に出力して進行状態を表示しています。

■.X    inEEPROMの1Byteをアドレス,データを指定して書き換え

1.例では、0x00番地を0x01に書き換えています。
2.書き換えの結果はDumpで確認できます。

■.Sn  inEEPROMの128Byteについて、チェック・サムを計算
1.前の X コマンドでデータ書き換えを行った後は、チェックサムを計算してそれぞれ0x7F・0xFF番地の書き換えが必要です。
2.本コマンドは、そのために用意しました。
3.ROM内情報を一部マスクしておきます。

■.A    Analysis(解析)inEEPROMを解析(Basic領域の128Byteのみ)
1.inEEPROM=1 にしている関係でアドレス部が3桁になっていますが、下2桁に読みかえてください。。
2.最初、0x23番地からの3バイトから1920x1080(FHD)の情報が見つからず、0x26からの2バイトを計算することが分かるまで苦労しました。
3.ROM内情報を一部マスクしておきます。

■.プログラム(ソース)
本プログラムzipファイル(8KB)
1.文頭の写真のような治具を揃えないと、Arduinoの内部EEPROMのダンプぐらいにしか使えません。
2.Net上で参考にした情報は、ソースファイルの先頭に記述しましたが、抜けが有るかも知れません。



3.I2C EEPROM 24C02 がおかしい???

 当初、EDIDのEEPROMは256Byteの24C02という情報を知っていました。
そこで、SOP-824C02を治具用PCB(コネクター付き)と一緒にAliEx.に注文したのですが、念のためI2Cアドレススキャナーをかけると、アドレスが多数ヒットしておかしいことに気づきました。
読み出し、書き込みはできているようなのですが、何度試しても同じです。
そこで、Amazonから基板付きのDIP-8品を購入して試してみると正常なようです。
実害が無いようなので、そのままとしておきます。


■.i2c_scanner 実行時の画面

1.上側がSOP-8の24C02で、本来3ビットのアドレスレスラインで選択する部分が効いていないような状況です。
2.下側の追加で購入したDIP-8品は、正常なアドレス検出をします。

■.I2CのEEPROM 24C02

1.最初に上左のSOP-8品を試して、追加で上右のSOP-8品も試しました。
2.下は、正規品のような気がするDIP-8の24C02です。


4.治具(HDMIコネクター付きPCB)の使い方

 最初は、治具(HDMIコネクター付きPCB)24C02を付ければ、EDID emurator が実現できると思っていましたが、実際は第一項の回路図のように少しの工夫が必要なことが分かりましてた。
現在、KVMも複数台有り、EDID emurator もPCの台数分は持っていることから、特に急いで現状を変更することもなく、EDIDの仕組みが少し理解できたところで良しとします。
最後に、治具(HDMIコネクター付きPCB)を使うバリエーションを掲載して、EDIDは終了したいと思います。



■.外付けの i2cEEPROM の読み出し

4本の線を繋げれば、外部 i2cEEPROM へデータ保管することもできます。

■.EDID emurator のメス側コネクターがPC側となる接続の EDID情報の確認

KVMのコネクター側に本 EDID emurator を挿す場合に有りそうな状況です。


■.EDID emurator のオス側コネクターがPC側となる接続の EDID情報の確認

1.こちらはPCのHDMIコネクターに本 EDID emurator を挿す場合に有りそうな状況です。
2.ディスプレーのEDID情報を確認したいときは、ディスプレーからのHDMIコネクターを治具のメス側に挿入して読み出せました。




9.その他気づいたこと

(1)その他




99.追記用

大幅な改定・追記用