3

I have a television that I am using as a monitor, but it has some issues resulting from incorrect EDID information on the monitor - physical dimensions are being reported in inches and tenths of inches rather than centimeters and millimeters as required by the EDID specification. I also want to swap the order of its standard timing blocks in order to change the preferred timing to one that matches the physical panel (and as a result avoid monitor scaling artifacts).

I am aware that I can configure my computer to just ignore the EDID, but I want to be able to use the device with multiple computers and operating systems without needing to configure each one.

I have the tools and knowledge to be able to generate the EDID binary I want to overwrite the current EDID with. The real question is, how do I write the EDID data to the monitor?


For reference, I've included an EDID dump from the monitor. The display's screen is actually 16 inches by 9 inches, and the resolution is 1360x768.

$ sudo i2cdump -y 3 0x50 b | tail -n+2 | xxd -r | edid-decode
Extracted contents:
header:          00 ff ff ff ff ff ff 00
serial number:   3e 4e 07 12 00 00 00 00 00 14
version:         01 03
basic params:    80 10 09 78 0a
chroma info:     0d c9 a0 57 47 98 27 12 48 4c
established:     af ce 00
standard:        01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
descriptor 1:    01 1d 00 72 51 d0 1e 20 6e 28 55 00 a0 5a 00 00 00 1e
descriptor 2:    66 21 50 b0 51 00 1b 30 40 70 36 00 a0 5a 00 00 00 1e
descriptor 3:    00 00 00 fc 00 4f 52 49 4f 4e 0a 20 20 20 20 20 20 20
descriptor 4:    00 00 00 fd 00 36 4c 0f 44 0f 00 0a 20 20 20 20 20 20
extensions:      01
checksum:        fc

Manufacturer: ORN Model 1207 Serial Number 0
Made week 0 of 2010
EDID version: 1.3
Digital display
Maximum image size: 16 cm x 9 cm
Gamma: 2.20
Supported color formats: RGB 4:4:4, YCrCb 4:2:2
First detailed timing is preferred timing
Established timings supported:
  720x400@70Hz
  640x480@60Hz
  640x480@72Hz
  640x480@75Hz
  800x600@56Hz
  800x600@60Hz
  800x600@72Hz
  800x600@75Hz
  1024x768@60Hz
  1024x768@70Hz
  1024x768@75Hz
Standard timings supported:
Detailed mode: Clock 74.250 MHz, 160 mm x 90 mm
               1280 1390 1430 1650 hborder 0
                720  725  730  750 vborder 0
               +hsync +vsync 
Detailed mode: Clock 85.500 MHz, 160 mm x 90 mm
               1360 1424 1536 1792 hborder 0
                768  771  777  795 vborder 0
               +hsync +vsync 
Monitor name: ORION
Monitor ranges (GTF): 54-76Hz V, 15-68kHz H, max dotclock 150MHz
Has 1 extension blocks
Checksum: 0xfc (valid)

CEA extension block
Extension version: 3
26 bytes of CEA data
  Video data block
    VIC 04 1280x720@60Hz (native)
    VIC 16 1920x1080@60Hz 
    VIC 05 1920x1080i@60Hz 
    VIC 03 720x480@60Hz 
    VIC 02 720x480@60Hz 
    VIC 01 640x480@60Hz 
    VIC 07 1440x480i@60Hz 
    VIC 06 1440x480i@60Hz 
  Audio data block
    Linear PCM, max channels 1
    Supported sample rates (kHz): 48 44.1 32
    Supported sample sizes (bits): 24 20 16
  Speaker allocation data block
  Vendor-specific data block, OUI 000c03 (HDMI)
    Source physical address 1.0.0.0
    Supports_AI
    Maximum TMDS clock: 150MHz
Basic audio support
Supports YCbCr 4:4:4
Supports YCbCr 4:2:2
1 native detailed modes
Detailed mode: Clock 148.500 MHz, 160 mm x 90 mm
               1920 2008 2052 2200 hborder 0
               1080 1084 1089 1125 vborder 0
               +hsync +vsync 
Detailed mode: Clock 74.250 MHz, 160 mm x 90 mm
               1920 2008 2052 2200 hborder 0
                540  542  547  562 vborder 0
               +hsync +vsync interlaced 
Detailed mode: Clock 27.000 MHz, 160 mm x 90 mm
                720  736  798  858 hborder 0
                480  489  495  525 vborder 0
               -hsync -vsync 
Detailed mode: Clock 27.000 MHz, 160 mm x 90 mm
               1440 1478 1602 1716 hborder 0
                240  244  247  262 vborder 0
               -hsync -vsync interlaced 
Detailed mode: Clock 79.500 MHz, 160 mm x 90 mm
               1280 1344 1472 1664 hborder 0
                768  771  778  798 vborder 0
               -hsync +vsync 
Checksum: 0x7c (valid)
  • 1
    @don_crissti This question is about how to write an image to a device attached to a *nix via i2c/SMBus, and the *nix utilities associated with that. Like, could I attach the EEPROM as a block device and do it that way, is there some utility for writing EEPROM images, etc... – AJMansfield Mar 9 '17 at 20:31
  • 1
    @AJMansfield What don_crissti is suggesting is that you need an i2c EEPROM programmer's expertise to answer your question, and that the people and Unix/Linux SE will not be familiar with what you need to do. – Centimane Mar 9 '17 at 20:44
  • AJMansfield - ok, I think I might have misread the Q... You know how to customize the EDID and you want to know how to reflash the EEPROM from linux ? I know there's a tool called edid-rw but I've never used it, let's see if there's any guide on the interweb... – don_crissti Mar 9 '17 at 21:15
  • 3
    A quick search returns these: 1, 2 - let me know if these are not useful so as to delete my comments here. – don_crissti Mar 9 '17 at 21:20
  • 1
    @DmitryGrigoryev - I'd rather kindly ask AJMansfield to post an answer later on and document the procedure - that way we can upvote it and we know it comes from someone who has actually done it successfully and all the information will be contained in the post instead of relying on external links – don_crissti Mar 10 '17 at 12:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.