====== 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**. \\
[[http://dn.odroid.com/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