How to use HDMI Custom EDID on XU4


Get the edid from your monitor

First, you need to check all of videoconfig in boot.ini are blocked with comment character “#“
and HPD env is TRUE.

# -----------------------------------------------
# 1920x1080 (1080P) without monitor data using generic information (1080p-noedid)
# setenv videoconfig "drm_kms_helper.edid_firmware=edid/1920x1080.bin"
# -----------------------------------------------
.....
.....
# -----------------------------------------------
# 480x320 without monitor data using generic information
# setenv videoconfig "drm_kms_helper.edid_firmware=edid/480x320.bin"
# -----------------------------------------------

#------------------------------------------------------------------------------
#
# HDMI Hot Plug detection
#
#------------------------------------------------------------------------------
setenv HPD "true"

Then, make sure to reboot your XU4.

$ sudo reboot

Now, you can read the monitor's EDID from the following node.

/sys/class/drm/card0/card0-HDMI-A-1/edid


Copy edid into /lib/firmware/

Copy the edid binary into /lib/firmware/ directory.

$ cat /sys/class/drm/card0/card0-HDMI-A-1/edid > /lib/firmware/custom_edid.bin

Or, if you have custom edid binary that you want to use, copy it into the same directory.

Add custom edid path in boot.ini

Add the edid binary name in boot.ini with drm_kms_helper_parameter.

setenv videoconfig "drm_kms_helper.edid_firmware=custom_edid.bin"

setenv HPD "false"

Then, reboot.

$ sudo reboot


Check if it works

Now the edid is running and you can check it with these nodes.

$ cat /sys/module/drm_kms_helper/parameters/edid_firmware 
custom_edid.bin

And the display mode list from the edid is shown here.

$ cat /sys/class/drm/card0-HDMI-A-1/modes