- HDMIダミープラグのEDIDをRaspberry Piを使って簡単に変更する方法を紹介
- ダミープラグは、実際の出力機器がなくても、機器にモニターが接続されているように認識させるためのもの
- EDID情報を1080pキャプチャデバイスのものと同じにコピーし、プラグが4Kモニターとして表示されないように設定可能
- Raspberry PiのI2Cコントローラーと標準のLinuxツールだけで、プラグのEEPROMを読み書きできる
- すべての工程で、機器損傷の防止のために正しいI2Cバスの選択とバックアップが必須
ダミープラグとEDIDの概要
- ダミープラグとは、HDMIまたはDVIポートに接続したとき、実際の映像処理は行わず、最小限の回路だけで機器にモニター接続を検知させる小型ドングル状のデバイス
- モニターのEDID (Extended Display Identification Data) を模倣したEEPROMチップと、+5Vに接続されたプルアップ抵抗などの回路がある
- ヘッドレスサーバーや無人機器などで、OSがディスプレイの存在を認識するようにする用途に便利
目的とアプローチ
- 既存の4K解像度をサポートするHDMIダミープラグを、単純な1080pデバイスとして認識されるようEDIDを書き換えた経験を共有
- 目的は、ダミープラグ内部のEDIDをHDMIキャプチャデバイス(1080p対応)のEDID情報と同一になるよう置き換えること
- ダミープラグのEEPROMに書き込み可能かは確実ではなかったが、試す価値はあった
- Raspberry Pi ZeroのHDMIポートがI2Cコントローラーに接続されているため、アクセスしやすい
安全上の注意と手順の開始
- 実際のモニターが接続された状態でこの作業を行うと、EDID保護のないモニターでは損傷リスクがある
- 必ずダミープラグのような、壊れても問題ないデバイスに対してのみ作業を行う必要がある
- また、正しいI2Cバスを使うこと、書き込み前に必ずEDIDを事前に読み出して検証することが重要
環境設定と準備作業
- Raspberry Pi OS Liteをインストール後、
sudo raspi-configで設定を調整
sudo apt install i2c-toolsでI2Cツールを導入(Pi Zeroではネットワークが必要。USB-イーサネットアダプターやSDカードのchrootで回避可能)
- HDMI-to-Mini-HDMIアダプターが必要
EDID EEPROMの認識とバックアップ
- Raspberry Pi ZeroではI2Cバス2を使用(他のPiモデルでは番号が異なる)
i2cdetectコマンドで0x50アドレスにデバイスが見えることを確認。これはEDID EEPROMの標準アドレス
- 興味深いことに、0x51〜0x57アドレスにも応答し、EDIDの複数コピーが保存されている形になっている
get-edidで既存ダミープラグの元のEDIDをバックアップし、2回読み出して一致するか確認
od -v -An -txCでEDIDを16進数配列として出力し、edidreader.comで妥当性を検証
キャプチャデバイスのEDID抽出とプラグへの書き込み
- ダミープラグを外した後、HDMIキャプチャデバイスをPiに接続
- 同じ方法でキャプチャデバイスのEDIDを抽出し、再度有効性を確認
- 再びダミープラグを接続し、キャプチャデバイスのEDIDをEEPROMに書き込む
- 各バイトごとに
i2csetコマンドで書き込みを実行。これは標準のLinuxツールとbashだけで可能
最終検証と結果
- 作業完了後、ダミープラグのEDIDを再抽出し、元ファイルとdiffで比較して内容の一致を確認
- テスト用コンピューターに接続すると、元の4KモニターではなくHDMIキャプチャデバイスとして認識された
- ダミープラグのEDID置き換えに成功
まとめと活用のアドバイス
- 同じ手順で、古い1080pダミープラグを4K対応デバイスに変更することも可能
- I2C書き込み作業はRaspberry Pi上でのみ行うことを推奨。一般的なPCで直接行うとハードウェア損傷の危険がある
- 関連する機能が必要な場合、この手順は役立つ可能性がある
1件のコメント
Hacker Newsのコメント