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)
8
  • 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... Mar 9, 2017 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, 2017 at 20:44
  • 4
    A quick search returns these: 1, 2 - let me know if these are not useful so as to delete my comments here. Mar 9, 2017 at 21:20
  • 1
    @don_crissti that's just what I needed, thanks. Mar 9, 2017 at 22:04
  • 1
    @don_crissti Please consider writing an answer! What you have found look very relevant. Mar 10, 2017 at 12:10

0

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.