調子の悪いBenQのGL2460HMを引き取ったのですが、HDMIに何をつないでも「シグナルが検出されません!」と言われます。重症です。残念ながらDVI-D端子も同じような症状が出てます。
VGA(D-Sub)端子は大丈夫でしたが、こっちはHDCPが使えないし、PS4のような今どきの機器は繋げないしで何かと不便です。
パソコンのグラフィックボードのDVI-D端子に繋ぐと一応映りましたが、デバイスマネージャーでは「汎用非 PnP モニター」として認識され、解像度も1024x768以下しか選べないという状況です。
これは困りましたね!!
--- 🖥️ ---
目次[非表示]
試行錯誤
ゲーム機に接続して映るかどうか試してみました。
PS4やPS3では全くダメでしたが、Xbox 360 と Xbox One では映りました!
その上設定をいじるとちゃんと上の方の解像度も選べるようです。融通が利きますね
Xbox 360 の「テレビ自動検出機能」設定。
Xbox One の「画面とサウンド ビデオ再現度とオーバースキャン」設定。
ここの「画面」を「自動検出(推奨)」から「HDMI」に切り替えるとモニターのEDIDを無視して解像度を自分で選択できるようになる。
(写真はVGA解像度で出力されている状態なので画面が粗い)
いろいろな機器につないで試してるうちに判明したことは
- 映像が出ても低い解像度しか選べない
- HDMI音声分離機やHDMI分配器を噛ませると普通に映る
ということです。
これが音声分離機
これをつないでディスプレイの詳細設定を確認してみるとBenQ GL2460ではなく、分離機の名前で表示されていることがわかります
原因はEDID不良?
モニターには"EDID"という、モニター自身の名前や対応している解像度の情報などがEEPROMに書き込まれていて、その情報をもとに機器は適切な解像度やリフレッシュレートで映像を送るという仕組みになっています。
この分離機をつないでいる場合、機器側(Windows)では"EP-HDMI-RX"として扱われているので分離機のEDIDが使われるようです。
つまり、なんらかの別の機器で代わりのEDIDを機器側に送ればこの画面は使えるということです。
そしてつまり、モニターが映らないのはモニター側のEDIDがなんらかの理由で読み取れなくなっているからと考えられる、ということです!
GL2460HMのEDIDをなんとかして直せないかどうか調べてみました。
EDIDの破損というのは珍しいですが、なくはないようです。いくつか情報が見つかりました。
これが今回の件に一番近いものです。BenQのモニターだし
GL2460HMでは分解してライトプロテクトの解除が必要だったのでそれも加えて手順をまとめておきます。
EDIDの再書き込み
用意するもの
- Ubuntuとか適当なLinuxの環境
- 正常なEDIDデータ
- 必要に応じて以下のどれか
- HDMIケーブル
- DVIケーブル
- DVIをHDMIに変換するやつ
書き込むEDIDデータを調達する
正常なEDIDデータをどこから調達するかということですが、過去モニターが正常だったときにWindowsパソコンに繋いでいたことがあればレジストリに残っています。
MonitorInfoView を使えばレジストリにあるEDIDデータをバイナリ形式でEDIDを取り出せます。
MonitorInfoView - View Monitor Information (EDID)
目的のモニターを選択して、メニューバーから File → Export EDID To Binary File でEDIDをバイナリ形式でエクスポートできます。
レジストリに残ってなければ、EDID Repositoryから同じモニターのEDIDを見つけられるかも?
linuxhw/EDID: EDID repository for LCD monitors
ここにあるEDIDをシリアルナンバーや製造年週を自分の画面と合うように書き換えて使えればいい感じになると思います。(映ればいいだけなら別にそのまま使ってもいいと思います)
私の場合DVI側のEDIDはレジストリから見つかりましたが、HDMI側のがなかったので EDID Repository の BNQ78CE からHDMIポート側のEDIDバイナリを探して拡張ブロックの部分だけ切り出してDVI側のEDIDのバイナリにつなげて、アドレス7Eの部分(拡張ブロックの数)を01にしました。
HDMI側とDVI側のEDIDの差は拡張ブロックの有無だけのようです。
EDIDデータを用意できたら適当なUSBメモリにでも入れてください。後でUbuntu環境に持っていきます
EEPROMのライトプロテクトを解除する
最近のモニターはEDIDが記録されているEEPROMにライトプロテクトがかかっているそうなので、それを対処しないと書き込めないらしいです。
分解してハンダゴテでちょっと細工が必要です。
GL2460HMからスタンドを外し、ベゼルを引き剥がして後ろの3つあるネジを外すと、プラスチックのガワが外せるようになります。
お布団に画面を寝かせてやるといいと思います。
金属フレームと液晶パネルだけになったら、基盤とフレームを止めているネジ(3つ)、HDMIポートの上にあるネジ(1つ)、D-Sub端子とDVI端子の六角形のスペーサーみたいなやつ(4つ)をペンチかなんかで回して外していけば基盤がとれるようになります。
(この辺の写真は撮ってない)
液晶パネルをつないでいるフラットケーブルには気をつけながら行いましょう。抜ける線は先に抜いておいたほうがいいです。
基盤だけになった様子がこちらです
HDMIポート、DVIポート、D-Subポートそれぞれの近くに 24C02RP と書かれたEEPROMが乗っています。
Google検索するとデータシートがすぐ見つかります。
ST MICRO (M24C02-WBN6P) E-EPROM 2K (24C02)PDIP 08 .3
7番ピンが Write Control らしいです。
Hardware LightBoost Modification HOWTO | Blur Busters
このサイトに書いてあることによれば、7番ピンを浮かせればライトプロテクトを解除してEDIDを書き換えられるようになるらしいです。
7番ピンをハンダゴテで温めながら隙間にマイナスドライバーのような細くて頑丈な物を突っ込んで上方向に曲げればはんだ付けが外れると思います。
DVIポートのEEPROMも同様に行います。
これでEDIDを書き込めるようになったはずです!試してみましょう
EEPROMの読み書きについては電源を繋がなくてもこの基盤だけでいいみたいです。わざわざ組み立てる必要はありません。
Ubuntuに必要なパッケージをインストールする
Ubuntu環境のパソコンに問題のモニターを接続しておきます。とりあえずDVIポートの方から先にやることにします。HDMIケーブルにDVI変換アダプタを付けて接続しました。
ターミナルから apt install で git と python3-smbus と edid-decode をインストールします。スーパーユーザー権限で実行するのを忘れないように。
sudo apt install git python3-smbus edid-decode
gitはedid-rwをクローンするのに必要。
python3-smbusはedid-rwを使うのに必要。
edid-decodeはEDIDのバイナリを人間が読めるようにデコードしてくれます。
インストールできたらgitでedid-rwをクローンします。
git clone https://github.com/bulletmark/edid-rw
用意しておいた正常なEDIDデータはクローンされたedid-rwのディレクトリ(~/edid-rw/)に置いておきます。
EDIDを書き込む
ホームディレクトリにedid-rwをクローンできたら、edid-rwのディレクトリに移動して始めます
cd edid-rw
まず問題のモニターのEDIDを見るために繋がっているHDMIポートにI2Cでやりとりする必要があるのですが、
i2cdetect -l
でパソコンの I2C のデバイスをリストアップできます。
この中から問題のモニターが繋がっているHDMIポートのI2Cデバイスの番号を知る必要があります。
i915 とつくやつが Intel Graphics らしいので、その中のどれかがパソコンのオンボードグラフィックスのHDMIポートです。
グラフィックボードにモニターを接続している場合はわかんないですが、まあそれっぽいやつを試してみてだめなら、0から順番に総当りすればよいのです。
このノートパソコンのHDMIポートは i2c-3 でした。(i915 gmbus dpc って書いてあるやつ)
というわけで edid-rw 3 と実行します。
sudo ./edid-rw 3 | edid-decode
目当てのポートにedid-rwを実行すればこのようにモニターのEDIDが表示されます。
これが今回の問題の原因になっている破損したEDIDです。
EDIDのヘッダーは 00 FF FF FF FF FF FF 00 でなければならないはずなのに、初っ端からメチャクチャになってます!!これはひどい
この破損したEDIDをとりあえずバックアップしておきたいときは、
sudo ./edid-rw 3 > (適当なファイル名).bin
で今のディレクトリ(~/edid-rw/)へダンプできます。
先に用意しておいた正常なEDIDデータを書き込むには、
sudo ./edid-rw -w 3 < (書き込みたいEDIDデータ)
です。
書き込みが成功しても失敗しても特にメッセージは出ませんが、書き込み終わったような感じになったらもう一度
sudo ./edid-rw 3 | edid-decode
でEDIDがマトモになったか確認してみましょう。
WOW GREAT
ちゃんと書き込めたようです!あとはHDMIポートのEDIDも同じ要領で書き込めば完了です。
書き込めたらモニターを元通りに組み立てて、そのままUbuntuが動いているパソコンに繋いで試してみてもいいでしょう。
ちゃんと認識されるようになりました。
Windows 10 での認識。
PS4をつないでみました。普通に映りました。
0 件のコメント:
コメントを投稿