Display Auto Detection using EDID

There are a variety of issues related to setting display mode with various monitors
and the available display modes that are provided on ODROID-C2 are limited to support all of them.
This wiki page introduces 'Display auto detection functionality using EDID of monitors'.

  • Ubuntu : Version 3.14.79-108 (Feb 27, 2017) or higher version is available.
  • Android : Android 5.1.1 (v3.3) / 6.0.1 (v2.2) or higher version is available.

If you want to configure the resolution manually,
Change the display_autodetect option to “false” in boot.ini file.

For 8-inch touch display VU8C users,
if there is an issue of clipped-image on the right side with the VU8C, please refer to the following link:
vu8c_edid_issue

In the following boot.ini, the variable “display_autodetect” is added.
When you want to use display auto detection logic, change the value to “true”.

With the official version including display auto detection, default mode is set as “display_autodetect is true”.
If you want to use the existing manual setting mode, modify display_autodetect to false
and uncomment the mode to be set.

# 1. to use display auto detection mode
setenv display_autodetect “true”

or

# 2. to use existing manual display mode
setenv m “1080p60hz”
setenv display_autodetect “false”

# Auto Detection of Monitor settings based on your Screen information
# See: http://odroid.com/dokuwiki/doku.php?id=en:c2_auto_detect_display
setenv display_autodetect "true"
 
# 480 Lines (720x480)
# setenv m "480i60hz" # Interlaced 60Hz
# setenv m "480i_rpt" # Interlaced for Rear Projection Televisions 60Hz
# setenv m "480p60hz" # 480 Progressive 60Hz
# setenv m "480p_rpt" # 480 Progressive for Rear Projection Televisions 60Hz
 
# 576 Lines (720x576)
# setenv m "576i50hz" # Interlaced 50Hz
# setenv m "576i_rpt" # Interlaced for Rear Projection Televisions 50Hz
# setenv m "576p50hz" # Progressive 50Hz
# setenv m "576p_rpt" # Progressive for Rear Projection Televisions 50Hz
 
# 720 Lines (1280x720)
# setenv m "720p50hz" # 50Hz
# setenv m "720p60hz" # 60Hz
 
# 1080 Lines (1920x1080)
# setenv m "1080i60hz" # Interlaced 60Hz
setenv m "1080p60hz" # Progressive 60Hz
# setenv m "1080i50hz" # Interlaced 50Hz
# setenv m "1080p50hz" # Progressive 50Hz
# setenv m "1080p24hz" # Progressive 24Hz
 
# 4K (3840x2160)
# setenv m "2160p30hz"    # Progressive 30Hz
# setenv m "2160p25hz"    # Progressive 25Hz
# setenv m "2160p24hz"    # Progressive 24Hz
# setenv m "smpte24hz"    # Progressive 24Hz SMPTE
# setenv m "2160p50hz"    # Progressive 50Hz
# setenv m "2160p60hz"    # Progressive 60Hz
# setenv m "2160p50hz420" # Progressive 50Hz with YCbCr 4:2:0 (Requires TV/Monitor that supports it)
# setenv m "2160p60hz420" # Progressive 60Hz with YCbCr 4:2:0 (Requires TV/Monitor that supports it)
 
### VESA modes ###
# setenv m "640x480p60hz"
# setenv m "800x480p60hz"
# setenv m "480x320p60hz"
# setenv m "480x800p60hz"
# setenv m "800x600p60hz"
# setenv m "1024x600p60hz"
# setenv m "1024x768p60hz"  
# setenv m "1280x800p60hz"
# setenv m "1280x1024p60hz"
# setenv m "1360x768p60hz"
# setenv m "1440x900p60hz"
# setenv m "1600x900p60hz"
# setenv m "1680x1050p60hz"
# setenv m "1600x1200p60hz"
# setenv m "1920x1200p60hz"
# setenv m "2560x1080p60hz"
# setenv m "2560x1440p60hz"
# setenv m "2560x1600p60hz"
# setenv m "3440x1440p60hz"
 
# HDMI DVI/VGA modes
# By default its set to "HDMI", if needed change below.
# Uncomment only a single Line.
# setenv vout "dvi"
# setenv vout "vga"

Once the value is set as “true”, the command, “hdmitx edid” is working.
If you are using a multi-touch display, VU series (VU5, VU7/7+ and VU8C),
you need to add the command, “usb pwren” because usb power should be supplied to activate the display device via USB port.

###########################################
# Boot Arguments
if test "${display_autodetect}" = "true"; then usb pwren; hdmitx edid; fi
if test "${m}" = "custombuilt"; then setenv cmode "modeline=${modeline}"; fi

In case of N2/C4/HC4, you need to modify config.ini (ubuntu) or env.ini (android).

With the official version including display auto detection, default mode is set as “display_autodetect is true”.
If you want to use the existing manual setting mode, modify display_autodetect to false
and uncomment the mode to be set.

# 1. to use display auto detection mode
display_autodetect=true

or

# 2. to use existing manual display mode
display_autodetect=false
hdmimode=1080p60hz
voutmode=hdmi

; Auto Detection of Monitor settings based on your Screen information
display_autodetect=true

; HDMI Mode
; Resolution Configuration
;    Symbol             | Resolution
; ----------------------+-------------
;    "480x272p60hz"     | 480x272 Progressive 60Hz
;    "480x320p60hz"     | 480x320 Progressive 60Hz
;    "480p60hz"         | 720x480 Progressive 60Hz
;    "576p50hz"         | 720x576 Progressive 50Hz
;    "720p60hz"         | 1280x720 Progressive 60Hz
;    "720p50hz"         | 1280x720 Progressive 50Hz
;    "1080p60hz"        | 1920x1080 Progressive 60Hz
;    "1080p50hz"        | 1920x1080 Progressive 50Hz
;    "1080p30hz"        | 1920x1080 Progressive 30Hz
;    "1080p24hz"        | 1920x1080 Progressive 24Hz
;    "1080i60hz"        | 1920x1080 Interlaced 60Hz
;    "1080i50hz"        | 1920x1080 Interlaced 50Hz
;    "2160p60hz"        | 3840x2160 Progressive 60Hz
;    "2160p50hz"        | 3840x2160 Progressive 50Hz
;    "2160p30hz"        | 3840x2160 Progressive 30Hz
;    "2160p25hz"        | 3840x2160 Progressive 25Hz
;    "2160p24hz"        | 3840x2160 Progressive 24Hz
;    "smpte24hz"        | 3840x2160 Progressive 24Hz SMPTE
;    "2160p60hz420"     | 3840x2160 Progressive 60Hz YCbCr 4:2:0
;    "2160p50hz420"     | 3840x2160 Progressive 50Hz YCbCr 4:2:0
;    "640x480p60hz"     | 640x480 Progressive 60Hz
;    "800x480p60hz"     | 800x480 Progressive 60Hz
;    "800x600p60hz"     | 800x600 Progressive 60Hz
;    "1024x600p60hz"    | 1024x600 Progressive 60Hz
;    "1024x768p60hz"    | 1024x768 Progressive 60Hz
;    "1280x800p60hz"    | 1280x800 Progressive 60Hz
;    "1280x1024p60hz"   | 1280x1024 Progressive 60Hz
;    "1360x768p60hz"    | 1360x768 Progressive 60Hz
;    "1440x900p60hz"    | 1440x900 Progressive 60Hz
;    "1600x900p60hz"    | 1600x900 Progressive 60Hz
;    "1600x1200p60hz"   | 1600x1200 Progressive 60Hz
;    "1680x1050p60hz"   | 1680x1050 Progressive 60Hz
;    "1920x1200p60hz"   | 1920x1200 Progressive 60Hz
;    "2560x1080p60hz"   | 2560x1080 Progressive 60Hz
;    "2560x1440p60hz"   | 2560x1440 Progressive 60Hz
;    "2560x1600p60hz"   | 2560x1600 Progressive 60Hz
;    "3440x1440p60hz"   | 3440x1440 Progressive 60Hz
hdmimode=1080p60hz

; voutmode : hdmi or dvi
; hdmi / dvi
voutmode=hdmi

Once display auto detection is done, the following two binary files are generated in the FAT filesystem.
( Ubuntu : /media/boot , Android : /storage/internal/ )
They have edid data and detection logs so if display doesn't work normally, please share those files on the forum:
https://forum.odroid.com/viewtopic.php?f=135&t=25729

1. edid.bin

  • edid data in hex format

2. display.bin

  • Auto detection OK / FAIL
  • hdmi / dvi
  • display mode
  • modeline information

Here is a brief sequence diagram.

You can refer to the basic rules to choose the best display mode.

Timing Information Priority Order
(refer to E-EDID standard, Section 5)
1. Detailed Timings
2. Standard Timings
3. Established Timings

Extension block information
Extension block information will be excluded from candidates to find the best one.

The rules of DVI auto detect
1. extensions : 00h
2. IEEE registration identifier : 0x000c03h
(refer to E-EDID standard, Section 6.2)

On some VU8C monitors, the edid data has an unneeded resolution, 1152×768 except 1024×768,
so when using display auto detection mode, part of the right side display image can be clipped.

If you have the issue, please set the display mode as “Manual mode” and “1024x768p60hz” and the following,
to correct the display.

C2 case - boot.ini

# Display Auto Detection
# "false" or "true"
setenv display_autodetect "false"
...
...
# setenv m "1080p60hz" # Progressive 60Hz
setenv m "1024x768p60hz"

N2/C4/HC4 cases - config.ini/env.ini

; Auto Detection of Monitor settings based on your Screen information
display_autodetect=false

; HDMI Mode
; Resolution Configuration
hdmimode=1024x768p60hz

Or, if you want to update the edid data of your VU8C converter board, please see link below.
We are preparing to release a new edid data binary by adjust the detailed timing table to fix ODROID-C2 display auto detection issue.
Once we are done, the update status will be specified here.
update_edid