ディスプレイ制御プロトコル「DDC/CI」とは?仕組みをまとめておく

技術メモ

ディスプレイ制御プロトコルであるDDC/CIについてメモしておきます。

スポンサーリンク

DDC/CI(Display Data Channel Command Interface)とは?

DDC/CI(Display Data Channel Command Interfaceとは、DVIやD-Sub(VGA)、DisplayPortといった映像信号ケーブルを介して、ディスプレイの制御を行うことができるプロトコルです。VESA規格で既定されており、多くのPC用モニターが対応しています。ディスプレイに手を伸ばさずとも設定を変更することができるので、たいへん便利です。

スポンサーリンク

なぜ信号線で制御できるのか?

映像用の信号ケーブルでなぜディスプレイを制御できるのか。疑問でしたが、これは制御用の芯線がもともと信号線に組み込まれているためのようです。

例えば、D-Subケーブルの場合、12番ピンがI2C通信用に用意されています。このケーブルを使用し、I2C通信によりコンピューター側と通信することで、制御を行っているようです。

プロトコルはVESAの公式サイトで配布されています。

Display Industry Standards and Specifications

https://glenwing.github.io/docs/VESA-DDCCI-1.1.pdf

詳細なドキュメントも公開されています。

DDC/CIでディスプレイを制御するには?

ディスプレイメーカーが配布しているアプリケーションを使用すると、DDC/CIでディスプレイを制御することができます。

たとえば、EIZO製のモニターの場合、Screen Manager Proを使うと、DDC/CIよりディスプレイを制御できます。

ソフトウェア&ドライバ 検索結果 | EIZO株式会社
EIZO製品情報。コンピュータモニターなどの各種映像関連 機器紹介、ビジネスソリューション、ニュース、サポート、EIZO オンライン ショッピング、用語解説、会社情報など

他のメーカーについても多くは公式サイトで制御用アプリが公開されています。

明るさやコントラスト、ガンマなど、よく使うひと通りの設定については、ほとんどのディスプレイがDDC/CIからの制御に対応しています。

また、ControlMyMonitorというフリーソフトを使うと、ディスプレイが対応している制御項目について調べたり、ソフトウェアから設定を変更することができます。

GUIで液晶モニターの設定を管理・編集「ControlMyMonitor」 ~設定の保存・読み込みも/複数ベンダーを併用している場合や設定の編集ツールが提供されていない場合に役に立つ【レビュー】
「ControlMyMonitor」は、GUIでモニターの設定を管理・編集できるツール。Windows VistaからWindows 10までに対応する寄付歓迎のフリーソフトで、作者のWebサイトからダウンロードできる。

DDC/CIをつかったプログラム開発

DDC/CIを使用したプログラム開発手法についても調べてみました。

Windowsでは、Win32APIにDDC/CIコントロールを利用できるAPIが実装されています。

Using Monitor Configuration - Win32 apps
Using Monitor Configuration

Dxva2.libにAPIが実装されており、これを呼び出すことでディスプレイの輝度やコントラストをWindowsアプリケーションから制御することができます。輝度やコントラストなど基本的な設定項目についてはあらかじめAPIに実装されているメソッドを呼び出すだけでOKです。メーカー独自のパラメータ(画質モードなど)はI2Cのプロトコルがわかれば、低レベルAPIを使用して実装することもできます。

C#からも利用できますが、Visual C++(MFCアプリケーション)ですとAPIを直接呼び出せるので、C++に慣れている方なら簡単です。MFCで制作したサンプルアプリケーションを公開していますので、ご参考に。

ソースコードはGitHubに掲載しています。※コントラストはバグで動作しません!

GitHub - takabus/ddcci-mfc: Sample of Win32 DDC/CI controls
Sample of Win32 DDC/CI controls. Contribute to takabus/ddcci-mfc development by creating an account on GitHub.

Linuxの場合は、オープンソースのプロジェクトがいくつか公開されているので、これらを使うのがおすすめです。

GitHub - rockowitz/ddcutil: Control monitor settings using DDC/CI and USB
Control monitor settings using DDC/CI and USB. Contribute to rockowitz/ddcutil development by creating an account on Git...
ddcci-driver-linux / ddcci-driver-linux · GitLab
GitLab.com
Linux DDC/CI Tool page

デジタルサイネージのモニター制御などに活用できそうですね。

対応機種

海外メーカー(DELLやBenQなど)であれば、ほぼ100%対応しています。海外メーカーの方が積極的に対応しているようです。

国内メーカーでもほとんどが対応しています。EIZO、iiyama、NEC、Fujitsuなど、老舗ディスプレイメーカーであれば、ほとんどの製品がDDC/CIに対応しています。

国内メーカー大手でいうと、IO-DATAが非対応である点には注意が必要です。

プロジェクターでも一部メーカーは対応しているようですが、RS-232CやLANによる制御を用いるのが一般的かと思います。

その他いろいろなメモ

対応している接続方法は?

モニターとの接続によく使われるDisplayPort、DVI、D-subはDDC/CIに対応しています。

また、HDMIでも制御できました。もちろん、モニターやPCの仕様により異なります。

変換ケーブル・変換器を使用していても使える?

HDMI→DVIなどの変換ケーブルを使っていても、DDC/CIは使えるか。

愛用のLet’s Note RZ4に変換ケーブルを接続し、EIZO FlexScan EV2436につなげて実験してみましたところ、HDMI→DVI変換ケーブル使用下でも制御できました。

また、DisplayPortしかないPCに、Amazonで1000円くらいだったDP→HDMI変換器を接続し、HDMI→DVI変換ケーブルでEV2436に接続しても制御できました。

変換器や変換ケーブルにもよりますが、多くはDDC/CIを利用できるようです。ポート間の制御線が接続されており、正しい配列で変換されるものであれば、変換ケーブル・変換器使用時でもDDC/CIは利用できそうです。

コメント

  1. […] […]

タイトルとURLをコピーしました