現在利用中のモニターLCD-MF221XBRが購入後13年経過し、そろそろ劣化故障すると困るので買い替えた。
■ 現在利用中の機種
IO DATA 製 LCD-MF221XBR
TFT(TN ?) 21.5 inch 液晶 , 1920 x 1080 , 60 Hz Max
5 ms (GTG)
バックライト 冷陰極管(CCFL), 通常消費電力 33.5 W
HDMI * 1 , RGB * 1 , DVI-D * 1 , Audio in/out
17,380円 2009/08/14購入 @ Amazon
■ 今回購入した機種
IO DATA 製 EX-LDGC241SDB
TFT(ADS) 23.8 inch 液晶 , 1920 x 1080 , 75 Hz Max
5 ms (GTG) , 2 ms (GTG) @ Overdrive Level 3
バックライト LED (フリッカーレス調光), 通常消費電力 13.5 W
HDMI * 2 , Display Port * 1 , RGB , Audio in/out
18,800円 2022/11/18購入 @ Amazon
LEDバックライトになり消費電力が半減し、Display Port接続もできるようになったのが違いかな...
今回のPCモニターの選定条件のひとつは、背面のVESAマウントに超小型PCが取り付けられるかどうか。(スタンドを取り外さずに取り付けられるか)
IO-DATA製以外のモニターは、スタンドを取り外さないとVESAマウントが使えないものが多いので、おのずから選択肢となる製品は少ない。
モニター 交換前後の設置状況
新しいモニターは、少し大きく感じる程度で違和感はない。
32inch TVと、新旧のモニターを並べてみた (左より 32inch , 23.8 inch , 21.5 inch)
Ubuntu 22.04よりddcutilコマンドを使いDDC/CIで制御
ddcutilの公式ヘルプは https://www.ddcutil.com/ に書かれている
■ 接続状態の調査
交換前 : LCD-MF221XBR
$ sudo ddcutil detect Display 1 I2C bus: /dev/i2c-2 EDID synopsis: Mfg id: IOD Model: LCD-MF221X Product code: 5638 Serial number: G1T60030217Z Binary serial number: 16843009 (0x01010101) Manufacture year: 2009, Week: 20 VCP version: 2.1
交換後 : EX-LDGC241SDB
$ sudo ddcutil detect Display 1 I2C bus: /dev/i2c-2 EDID synopsis: Mfg id: IOD Model: EX-LDGC241SD Product code: 17339 Serial number: 142Z002130OM Binary serial number: 2130 (0x00000852) Manufacture year: 2022, Week: 7 VCP version: 2.1
■ すべてのDDC/CIで取得・設定できる値を表示
sudo ddcutil probe
ですべてのfeature-code(0x00 〜 0xff)を総当りで表示することもできるが、当該デバイスがサポートしている feature-code のみを表示するなら sudo ddcutil getvcp all
のほうが簡潔に表示できる。 値を表示せずに、どの feature-code がサポートされているかだけなら sudo ddcutil capabilities
を実行すれば良い。
交換前 : LCD-MF221XBR
$ sudo ddcutil getvcp all VCP code 0x02 (New control value ): One or more new control values have been saved (0x02) VCP code 0x0e (Clock ): current value = 0, max value = 100 VCP code 0x10 (Brightness ): current value = 1, max value = 50 VCP code 0x12 (Contrast ): current value = 95, max value = 200 VCP code 0x14 (Select color preset ): 6500 K (sl=0x05) VCP code 0x16 (Video gain: Red ): current value = 100, max value = 100 VCP code 0x18 (Video gain: Green ): current value = 100, max value = 100 VCP code 0x1a (Video gain: Blue ): current value = 100, max value = 100 VCP code 0x1e (Auto setup ): Auto setup not active (sl=0x00) VCP code 0x20 (Horizontal Position (Phase) ): current value = 0, max value = 100 VCP code 0x30 (Vertical Position (Phase) ): current value = 0, max value = 100 VCP code 0x3e (Clock phase ): current value = 0, max value = 100 VCP code 0x52 (Active control ): Value: 0x02 VCP code 0x60 (Input Source ): DVI-2 (sl=0x04) VCP code 0x62 (Audio speaker volume ): current value = 24, max value = 30 VCP code 0xac (Horizontal frequency ): 6750 hz VCP code 0xae (Vertical frequency ): 60.00 hz VCP code 0xb6 (Display technology type ): LCD (active matrix) (sl=0x03) VCP code 0xc8 (Display controller type ): Mfg: Novatek (sl=0x12), controller number: mh=0xff, ml=0xff, sh=0x00 VCP code 0xca (OSD ): OSD Enabled (sl=0x02) VCP code 0xcc (OSD Language ): Japanese (sl=0x06) VCP code 0xdf (VCP Version ): 2.1
交換後 : EX-LDGC241SDB
$ sudo ddcutil getvcp all VCP code 0x02 (New control value ): One or more new control values have been saved (0x02) VCP code 0x10 (Brightness ): current value = 4, max value = 100 VCP code 0x12 (Contrast ): current value = 50, max value = 100 VCP code 0x14 (Select color preset ): 6500 K (sl=0x05) VCP code 0x16 (Video gain: Red ): current value = 96, max value = 100 VCP code 0x18 (Video gain: Green ): current value = 88, max value = 100 VCP code 0x1a (Video gain: Blue ): current value = 84, max value = 100 VCP code 0x52 (Active control ): Value: 0x10 VCP code 0x60 (Input Source ): HDMI-1 (sl=0x11) VCP code 0x62 (Audio speaker volume ): current value = 20, max value = 30 VCP code 0xac (Horizontal frequency ): 8370 hz VCP code 0xae (Vertical frequency ): 74.80 hz VCP code 0xb6 (Display technology type ): LCD (active matrix) (sl=0x03) VCP code 0xcc (OSD Language ): Japanese (sl=0x06) VCP code 0xdf (VCP Version ): 2.1
■ 輝度(Brightness)の読み出しと設定
交換前 : LCD-MF221XBR
$ sudo ddcutil getvcp 10 VCP code 0x10 (Brightness ): current value = 1, max value = 50 $ sudo ddcutil setvcp 10 2 $
交換後 : EX-LDGC241SDB
$ sudo ddcutil getvcp 10 VCP code 0x10 (Brightness ): current value = 4, max value = 100 $ sudo ddcutil setvcp 10 4 Setting value failed for feature 10, rc=DDCRC_RETRIES(-3007): maximum retries exceeded Try errors: DDCRC_RETRIES
交換後はエラーが表示されるので原因をトレースすると、DDC control 0x00 (Degauss)の読み出しに失敗して1つ目のエラー。0xdf (VCP VErsion)の読み出しは成功。そして 0x10 (Brightness)の設定も成功。その後 0x10 (Brightness)の値を読み出そうとして「maximum retries exceeded」エラー。というような結果に。
$ sudo ddcutil setvcp 10 4 --trace ddc (main ) Starting ddcutil execution, Sun Nov 20 19:28:31 2022 (ddc_get_vcp_value ) Starting Reading feature 0x00, dh=Display_Handle[i2c: fd=3, busno=2 @0x555913264020], dh->fd=3 (ddc_get_nontable_vcp_value ) Starting dh=Display_Handle[i2c: fd=3, busno=2 @0x555913264020], Reading feature 0x00 (ddc_get_nontable_vcp_value ) Done Error reading feature x00. Returning exception: Error_Info[DDCRC_REPORTED_UNSUPPORTED in ddc_get_nontable_vcp_value] (ddc_get_vcp_value ) Done ddc_excp = Error_Info[DDCRC_REPORTED_UNSUPPORTED in ddc_get_nontable_vcp_value] (ddc_get_vcp_value ) Starting Reading feature 0xdf, dh=Display_Handle[i2c: fd=3, busno=2 @0x555913264020], dh->fd=3 (ddc_get_nontable_vcp_value ) Starting dh=Display_Handle[i2c: fd=3, busno=2 @0x555913264020], Reading feature 0xdf (ddc_get_nontable_vcp_value ) Done Success reading feature xdf. *ppinterpreted_code=0x55591326ff20 (ddc_get_nontable_vcp_value ) mh=0x00, ml=0x00, sh=0x02, sl=0x01, max value=0, cur value=513 (ddc_get_vcp_value ) Done Returning: NULL, *valrec -> Single_Vcp_Value at 0x55591326a2b0: Opcode: 0xdf Value type: DDCA_NON_TABLE_VCP_VALUE (0x01) max_val: 0 - 0x0000 cur_val: 513 - 0x0201 mh: 0x00 ml: 0x00 sh: 0x02 sl: 0x01 (ddc_set_nontable_vcp_value ) Starting Writing feature 0x10 , new value = 4, dh=Display_Handle[i2c: fd=3, busno=2 @0x555913266820] (ddc_set_nontable_vcp_value ) Done Returning NULL (ddc_get_vcp_value ) Starting Reading feature 0x10, dh=Display_Handle[i2c: fd=3, busno=2 @0x555913266820], dh->fd=3 (ddc_get_nontable_vcp_value ) Starting dh=Display_Handle[i2c: fd=3, busno=2 @0x555913266820], Reading feature 0x10 (ddc_get_nontable_vcp_value ) ddc_write_read_with_retry() returned DDCRC_RETRIES(-3007): maximum retries exceeded, reponse_packet_ptr=(nil) (ddc_get_nontable_vcp_value ) Done Error reading feature x10. Returning exception: Error_Info[DDCRC_RETRIES in ddc_write_read_with_retry, causes: DDCRC_DDC_DATA(10)] (ddc_get_vcp_value ) Done ddc_excp = Error_Info[DDCRC_RETRIES in ddc_write_read_with_retry, causes: DDCRC_DDC_DATA(10)] Setting value failed for feature 10, rc=DDCRC_RETRIES(-3007): maximum retries exceeded Try errors: DDCRC_RETRIES (main ) ddcutil execution complete, Sun Nov 20 19:28:32 2022
つまり、Brightness(feature-code 0x10)の設定(setvcp)後に、値を再度読み出す(getvcp)ベリファイ操作をしなければよいだけなので、次のように--noverifyスイッチを付けとけば良い。
$ sudo ddcutil setvcp 10 5 --noverify
■ 特定のfeature-codeが何なのか調べる
たとえば、feature-code = 0x10 を調べる場合は
$ sudo ddcutil vcpinfo 10 VCP code 10: Brightness Increase/decrease the brightness of the image. MCCS versions: 2.0, 2.1, 3.0, 2.2 ddcutil feature subsets: PROFILE, COLOR Attributes: Read Write, Continuous (normal)
COLORサブセット内のすべてのfeature-codeについて表示したい場合は...
$ sudo ddcutil vcpinfo COLOR