HDMI35 Display supports DDC/CI communication, and users can adjust various parameters of the display via HDMI I2C (DDC Channel) port.
1) Specification
– DDC/CI Standard
Monitor Command and Control Set (MCCS) Version 2.2
– Supported Functions
Commands
0x03 : Set VCP Feature
0x01 : Get VCP Feature
0xF3 : Capabilities Request
0x0C : Save current settings
VCP Features
0x04 : Restore factory defaults, WriteOnly
0x10 : Adjust Brightness, ReadWrite
0x12 : Adjust Contrast, ReadWrite
0x16 : Adjust Red Gain, ReadWrite
0x18 : Adjust Green Gain, ReadWrite
0x1A : Adjust Blue Gain, ReadWrite
0xB6 : Get Display type, ReadOnly
0xD6 : Set Power mode (Power On/Off), ReadWrite
0xDF : Get VCP Version, ReadOnly
0xE1, 0xE2, 0xE3 : Custom features
2) System Requirements
– Any kind of OS (Win7/10/11, Debian, Ubuntu, RaspberryOS…) which is capable drive HDMI port’s I2C bus.
– DDC/CI control can be implemented using specific tool (like as ddcutil), or manual programming.
– DDC/CI control is able when the display is in sleep/suspend mode, so can be used for power status control.
3) Usage
There are many of DDC/CI control apps, for example, ddcutil is very covenient and popular tool for Linux users.
For install, config, usage of ddcutil, please reference the documents.
https://www.ddcutil.com/raspberry/
– Detect display
ddcutil detect
– Get capabilities
ddcutil capabilities
– Adjust brightness
ddcutil setvcp 10 70 (set brightness to 70, the value range is 1~100)
ddcutil getvcp 10 (get current brightness)
– Adjust contrast
ddcutil setvcp 12 80 (set contrast to 80, the value range is 1~100)
ddcutil getvcp 12 (get current contrast)
– Adjust colors
Red
ddcutil setvcp 16 128 (set Red gain to 128, the value range is 1~255)
ddcutil getvcp 16 (get Red gain)
Green
ddcutil setvcp 18 128 (set Green gain to 128, the value range is 1~255)
ddcutil getvcp 18 (get Green gain)
Blue
ddcutil setvcp 1A 128 (set Blue gain to 128, the value range is 1~255)
ddcutil getvcp 1A (get Blue gain)
– Save current settings
ddcutil scs (save settings to eeprom)
Modified contrast, color… values (except brightness) are not saved directly, and this command stores the values to the display’s non-volatile storage.
– Restore factory defaults
ddcutil setvcp 04 01 (discard all of changes, back to factory default status)
This command is ignored if the value is 00
– Power status control
ddcutil setvcp D6 01 (power on display)
ddcutil setvcp D6 03 (power off/suspend display)
ddcutil getvcp D6 (get current power status)
01: normal status
02: standby status (when no input signal, readonly value)
03: suspend status (minimum power consumption)
– Custom commands
ddcutil setvcp E1 1 (enable logo, default 1)
ddcutil setvcp E1 0 (disable logo)
ddcutil setvcp E2 1 (enable hdmi note, default 1)
ddcutil setvcp E2 0 (disable hdmi note)
ddcutil setvcp E3 1 (enable sleep when no signal, default 0)
ddcutil setvcp E3 0 (disable sleep, always shows )
For more detailed data transaction protocols, packet structures, please reference
https://www.ddcutil.com/bibliography/
DDC/CI – RaspberryPi Issue
HDMI port’s I2C bus is enabled by default in latest RaspberryPi OS KMS driver mode. For using the I2C in FKMS driver mode, it needs extra configuration, like as adding [dtparam=i2c2_iknowwhatimdoing] to config.txt,
But it does not work in Raspberry4, Bullseye, 64bit… and KMS mode is almost essential for running DDC/CI applications.
The specific, non-standard resolutions(like as 480×240) require FKMS mode, so DDC-CI control is unavailable when using 480×320 resolution in many cases.
Windows Tools
https://github.com/blackholeearth/Win10_BrightnessSlider
https://github.com/emoacht/Monitorian
There are also many of C, Python… DDC/CI libraries, resources, and users can develop customized ddc/ci display control app using appropriate libraries.
DownLoad Url osoyoo.com