bulletmark / edid-rw

A utility to read and write a display EDID value.
168 stars 22 forks source link

edid-rw not writing edid nor providing error message #12

Open lkong opened 4 years ago

lkong commented 4 years ago

origin EDID:

lkong@odroidn2:workspace/edid-rw ‹master*›$ sudo ./edid-rw 0 | parse-edid Checksum Correct

Section "Monitor" Identifier "AAA" ModelName "AAA" VendorName "ROW"

Monitor Manufactured week 1 of 2016

    # EDID version 1.3
    # Digital Display
    # Display Physical Size not given. Normal for projectors.
    Gamma 1.00
    Option "DPMS" "false"
    Horizsync 30-80
    VertRefresh 50-76
    # Maximum pixel clock is 160MHz
    #Not giving standard mode: 1280x720, 60Hz

    #Extension block found. Parsing...
    Modeline        "Mode 17" +hsync +vsync
    Modeline        "Mode 0" -hsync -vsync
    Modeline        "Mode 1" -hsync +vsync
    Modeline        "Mode 2" 148.500 1920 2008 2052 2200 1080 1084 1089 1125 +hsync +vsync
    Modeline        "Mode 3" 148.500 1920 2448 2492 2640 1080 1084 1089 1125 +hsync +vsync
    Modeline        "Mode 4" 74.250 1920 2448 2492 2640 1080 1082 1089 1125 +hsync +vsync interlace
    Modeline        "Mode 5" 74.250 1920 2008 2052 2200 1080 1082 1087 1125 +hsync +vsync interlace
    Modeline        "Mode 6" 74.250 1280 1390 1420 1650 720 725 730 750 +hsync +vsync
    Modeline        "Mode 7" 74.250 1280 1720 1760 1980 720 725 730 750 +hsync +vsync
    Modeline        "Mode 8" 27.000 720 732 796 864 576 581 586 625 -hsync -vsync
    Modeline        "Mode 9" 27.000 1440 1464 1590 1728 576 578 581 625 -hsync -vsync interlace
    Modeline        "Mode 10" 27.000 720 732 796 864 576 581 586 625 -hsync -vsync
    Modeline        "Mode 11" 27.000 1440 1464 1590 1728 576 578 581 625 -hsync -vsync interlace
    Modeline        "Mode 12" 27.027 720 736 798 858 480 489 495 525 -hsync -vsync
    Modeline        "Mode 13" 27.027 1440 1478 1602 1716 480 484 487 525 -hsync -vsync interlace
    Modeline        "Mode 14" 27.027 720 736 798 858 480 489 495 525 -hsync -vsync
    Modeline        "Mode 15" 27.027 1440 1478 1602 1716 480 484 487 525 -hsync -vsync interlace
    Modeline        "Mode 16" 25.200 640 656 752 800 480 490 492 525 -hsync -vsync
    Modeline        "Mode 18" +hsync +vsync interlace
    Modeline        "Mode 19" -hsync -vsync
    Modeline        "Mode 20" -hsync -vsync
    Option "PreferredMode" "Mode 17"

EndSection

new EDID to write:

lkong@odroidn2:workspace/edid-rw ‹master*›$ parse-edid < qi.bin Checksum Correct

Section "Monitor" Identifier "" ModelName "" VendorName "PQI"

Monitor Manufactured week 10 of 2006

    # EDID version 1.3
    # Digital Display
    DisplaySize 150 90
    Gamma 2.20
    Option "DPMS" "false"
    Modeline        "Mode 0" -hsync -vsync
    Modeline        "Mode 1" -hsync -vsync
    Modeline        "Mode 2" -hsync -vsync

EndSection

Write and check:

lkong@odroidn2:workspace/edid-rw ‹master›$ sudo ./edid-rw -w 0 < qi.bin lkong@odroidn2:workspace/edid-rw ‹master›$ sudo ./edid-rw 0 | parse-edid Checksum Correct

Section "Monitor" Identifier "AAA" ModelName "AAA" VendorName "ROW"

Monitor Manufactured week 1 of 2016

    # EDID version 1.3
    # Digital Display
    # Display Physical Size not given. Normal for projectors.
    Gamma 1.00
    Option "DPMS" "false"
    Horizsync 30-80
    VertRefresh 50-76
    # Maximum pixel clock is 160MHz
    #Not giving standard mode: 1280x720, 60Hz

    #Extension block found. Parsing...
    Modeline        "Mode 17" +hsync +vsync
    Modeline        "Mode 0" -hsync -vsync
    Modeline        "Mode 1" -hsync +vsync
    Modeline        "Mode 2" 148.500 1920 2008 2052 2200 1080 1084 1089 1125 +hsync +vsync
    Modeline        "Mode 3" 148.500 1920 2448 2492 2640 1080 1084 1089 1125 +hsync +vsync
    Modeline        "Mode 4" 74.250 1920 2448 2492 2640 1080 1082 1089 1125 +hsync +vsync interlace
    Modeline        "Mode 5" 74.250 1920 2008 2052 2200 1080 1082 1087 1125 +hsync +vsync interlace
    Modeline        "Mode 6" 74.250 1280 1390 1420 1650 720 725 730 750 +hsync +vsync
    Modeline        "Mode 7" 74.250 1280 1720 1760 1980 720 725 730 750 +hsync +vsync
    Modeline        "Mode 8" 27.000 720 732 796 864 576 581 586 625 -hsync -vsync
    Modeline        "Mode 9" 27.000 1440 1464 1590 1728 576 578 581 625 -hsync -vsync interlace
    Modeline        "Mode 10" 27.000 720 732 796 864 576 581 586 625 -hsync -vsync
    Modeline        "Mode 11" 27.000 1440 1464 1590 1728 576 578 581 625 -hsync -vsync interlace
    Modeline        "Mode 12" 27.027 720 736 798 858 480 489 495 525 -hsync -vsync
    Modeline        "Mode 13" 27.027 1440 1478 1602 1716 480 484 487 525 -hsync -vsync interlace
    Modeline        "Mode 14" 27.027 720 736 798 858 480 489 495 525 -hsync -vsync
    Modeline        "Mode 15" 27.027 1440 1478 1602 1716 480 484 487 525 -hsync -vsync interlace
    Modeline        "Mode 16" 25.200 640 656 752 800 480 490 492 525 -hsync -vsync
    Modeline        "Mode 18" +hsync +vsync interlace
    Modeline        "Mode 19" -hsync -vsync
    Modeline        "Mode 20" -hsync -vsync
    Option "PreferredMode" "Mode 17"

EndSection

EDID stays unchanged, with no error message from ebid-rw

natumbri commented 3 years ago

Me too.

Read existing edid:

$ sudo ./edid-rw 3 | edid-decode
edid-decode (hex):

00 ff ff ff ff ff ff 00 24 94 0f 00 00 00 00 00 
00 00 01 03 80 1e 17 78 0a cd 75 91 55 4f 8b 26 
21 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01 
01 01 01 01 01 01 30 2a 78 80 50 1a 0c 40 30 70 
13 00 31 e4 10 00 00 1e 00 00 00 0f 00 08 fa 1a 
ff 01 3e 06 7d ff ff ff ff 00 00 00 00 fe 00 49 
44 54 0a 20 20 20 20 20 20 20 20 20 00 00 00 fe 
00 4e 31 35 30 50 33 0a 20 20 20 20 20 20 00 e9 

----------------

EDID version: 1.3
Manufacturer: IDT Model 15 Serial Number 0
Made in year 1990
[...]
Checksum: 0xe9

Check new edid:

$ cat newedid.bin | edid-decode 
edid-decode (hex):

00 ff ff ff ff ff ff 00 4c 2d 73 03 32 32 59 4d 
2c 12 01 03 80 2c 1e 78 2a 78 f1 a6 55 48 9b 26 
12 50 54 bf ef 80 b3 00 81 80 81 40 71 4f 01 01 
01 01 01 01 01 01 7c 2e 90 a0 60 1a 1e 40 30 20 
36 00 cb 28 11 00 00 1a 00 00 00 fd 00 38 4b 1e 
51 0e 00 0a 20 20 20 20 20 20 00 00 00 fc 00 53 
79 6e 63 4d 61 73 74 65 72 0a 20 20 00 00 00 ff 
00 48 39 58 51 41 31 38 39 38 34 0a 20 20 00 a3 

----------------

EDID version: 1.3
Manufacturer: SAM Model 883 Serial Number 1297691186
Made in week 44 of 2008
[...]
Checksum: 0xa3

Write new edid data to EDID:

$ sudo ./edid-rw -w 3 <newedid.bin

Recheck EDID and see no change from original:

$ sudo ./edid-rw 3 | edid-decode
edid-decode (hex):

00 ff ff ff ff ff ff 00 24 94 0f 00 00 00 00 00 
00 00 01 03 80 1e 17 78 0a cd 75 91 55 4f 8b 26 
21 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01 
01 01 01 01 01 01 30 2a 78 80 50 1a 0c 40 30 70 
13 00 31 e4 10 00 00 1e 00 00 00 0f 00 08 fa 1a 
ff 01 3e 06 7d ff ff ff ff 00 00 00 00 fe 00 49 
44 54 0a 20 20 20 20 20 20 20 20 20 00 00 00 fe 
00 4e 31 35 30 50 33 0a 20 20 20 20 20 20 00 e9 

----------------

EDID version: 1.3
Manufacturer: IDT Model 15 Serial Number 0
Made in year 1990
[...]
Checksum: 0xe9

Cheers, Nik

galkinvv commented 2 weeks ago

This is caused by write-protected EEPROMS. They just silently ignore write commands.

I've developed a fork of this utility that provides better ok/error messages for this case https://github.com/galkinvv/edid-checked-writer

Ok output:

Provided file is valid EDID, checking original EDID in a EEPROM...
Writing new EDID to EEPROM...
OK: New EDID written and verified

Fail output:

Provided file is valid EDID, checking original EDID in a EEPROM...
Writing new EDID to EEPROM...
ERROR: Failed writing new EDID, maybe device is write-protected.
Nothing changed, existing device EDID kept unmodified