Table of Contents

How to Check and Write VU8C EDID

  • This wiki is a guide only for the uses who want to use ODROID-VU8C with OTHER products except ODROID-C1+/C2.
  • On our production line, EDID data is already written on VU8C eeprom, so normally, you don't need to update EDID data by force.
  • If it seems VU8C is not detected normally from the host, first check the EDID status as described in the following section, 'How to check EDID status', then try the update steps.
  • Before the update process, please make sure which display path is connected to VU8C via HDMI.

Update Guide - Linux Host PC

Setup and Install Utilities

I2C driver module

Start I2C bus driver using i2c-dev module to setup interface for writing the EDID binary via HDMI DDC.
The I2C driver module can be different for Host PC specification.

$ sudo modprobe i2c-dev
Utilities

Then, install some utilities.

# sudo apt-get install i2c-tools
# sudo apt-get install python-smbus
# sudo apt-get install edid-decode
Check I2C

Using i2cdetect and i2c device nodes, all the i2c busses can be found.

$ ls /dev/i2c*
/dev/i2c-0  /dev/i2c-10  /dev/i2c-12  /dev/i2c-14  /dev/i2c-16  /dev/i2c-18  /dev/i2c-3  /dev/i2c-5  /dev/i2c-7  /dev/i2c-9
/dev/i2c-1  /dev/i2c-11  /dev/i2c-13  /dev/i2c-15  /dev/i2c-17  /dev/i2c-2   /dev/i2c-4  /dev/i2c-6  /dev/i2c-8

$ i2cdetect -l
i2c-0        unknown           i915 gmbus ssc                          N/A
i2c-1        unknown           i915 gmbus vga                          N/A
i2c-2        unknown           i915 gmbus panel                        N/A
i2c-3        unknown           i915 gmbus dpc                          N/A
i2c-4        unknown           i915 gmbus dpb                          N/A
i2c-5        unknown           i915 gmbus dpd                          N/A
i2c-6        unknown           DPDDC-B                                 N/A
....
....
i2c-18        unknown           nouveau-0000:01:00.0-29                 N/A

In my case, bus#4 is assigned to HDMI channel that is connected to VU8C.

Scan EDID bus

The command, get-edid scans potential buses that handle EDID.
The below example shows bus#2 (Main monitor) and bus#4 (Connected to VU8C).

$ sudo get-edid
This is read-edid version 3.0.1. Prepare for some fun.
Attempting to use i2c interface
No EDID on bus 0
No EDID on bus 1
No EDID on bus 3
No EDID on bus 5
...
...
No EDID on bus 18
2 potential busses found: 2 4
Will scan through until the first EDID is found.
Pass a bus number as an option to this program to go only for that one.
128-byte EDID successfully retrieved from i2c bus 2
������0��#x
՞YP�&PT6��p8@0 5Y�6��p8@0 5Y��C088T�156WF1

Looks like i2c was successful. Have a good day.
Install 'edid-rw' program

To write EDID binary and read-back it, we use the utility edid-rw and edid-decode.
https://github.com/bulletmark/edid-rw

Please download source codes from the github and build it.

# sudo apt-get install git
# git clone https://github.com/bulletmark/edid-rw
# cd edid-rw
# make

How to check EDID status

You can check if the EDID data works normally using edid-rw.
edid-rw loads the raw data of EDID and edid-decode parses it based on EDID specification.

$ edid-rw  [bus no.]  | edid-decode

Here is an example.
If it works normally, you can the information as below.
If not so, all of data patterns are shown as 0's sequence
and no timing and clock description is listed.

$ sudo ./edid-rw 4 | edid-decode
Extracted contents:
header:          00 ff ff ff ff ff ff 00
serial number:   21 6c 00 00 00 00 00 00 0c 1b
version:         01 03
basic params:    6d 23 1a 78 ea
chroma info:     5e c0 a4 59 4a 98 25 20 50 54
established:     00 08 00
standard:        61 40 01 01 01 01 01 01 01 01 01 01 01 01 01 01
descriptor 1:    64 19 00 40 41 00 26 30 08 90 36 00 63 0a 11 00 00 18
descriptor 2:    00 00 00 ff 00 4c 69 6e 75 78 20 23 30 0a 20 20 20 20
descriptor 3:    00 00 00 fd 00 3b 3d 2f 31 07 00 0a 20 20 20 20 20 20
descriptor 4:    00 00 00 fc 00 48 4b 5f 56 55 38 43 0a 20 20 20 20 20
extensions:      00
checksum:        7d

Manufacturer: HKL Model 0 Serial Number 0
Made week 12 of 2017
EDID version: 1.3
Analog display, Input voltage level: 0.7/0.7 V
Sync: Separate Composite Serration 
Maximum image size: 35 cm x 26 cm
Gamma: 2.20
DPMS levels: Standby Suspend Off
RGB color display
First detailed timing is preferred timing
Established timings supported:
  1024x768@60Hz
Standard timings supported:
  1024x768@60Hz
Detailed mode: Clock 65.000 MHz, 355 mm x 266 mm
               1024 1032 1176 1344 hborder 0
                768  771  777  806 vborder 0
               -hsync -vsync
Serial number: Linux #0
    Monitor ranges: 59-61HZ vertical, 47-49kHz horizontal, max dotclock 70MHz
Monitor name: HK_VU8C
     Checksum: 0x7d

Write EDID binary

Download EDID binary for VU8C

Please refer to the following to download edid_vu8c.bin.
Download edid_vu8c.bin
or

wget http://dn.odroid.com/edid_vu8c.bin

We're preparing to release a new edid data binary by adjusting detailed timing to fix ODROID-C2 display auto detection issue.

Write EDID binary and Check result

Before writing EDID binary, please make sure the I2C device node.

This process can destroy your display or other connected hardware if run incorrectly.


The usage of edid-rw is as following.

$ edid-rw  -w  [bus no.]  < [edid binary]

In my case, the bus node to VU8C is bus#4.

$ sudo ./edid-rw -w 4 < edid_vu8c.bin 

Then, using the following commands, you can check if it's completely done.

$ sudo ./edid-rw 4 | edid-decode

Also, you can confirm it using xrandr.

$ xrandr 
Screen 0: minimum 8 x 8, current 1920 x 1080, maximum 32767 x 32767
LVDS1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 345mm x 194mm
   1920x1080      59.9*+
...
...
   800x600        60.3     56.2  
   640x480        59.9  
DP1 disconnected (normal left inverted right x axis y axis)
HDMI1 connected (normal left inverted right x axis y axis)
   1024x768       61.4 +   60.0  
   1440x900       59.9  
   1152x768i     111.9  
   800x600        60.3  
   640x480        60.0  
VGA1 disconnected (normal left inverted right x axis y axis)
VIRTUAL1 disconnected (normal left inverted right x axis y axis