in a hex editor that looks like this:
Comparing your dump with the LP140WF1-SPK1 EDID using the edid-decode tool shows that these are almost identical. I would think that they are interchangeable, but I havn't tried it myself so no guarantee!Code:00000000: 00ff ffff ffff ff00 30e4 1302 0000 0000 ........0....... 00000010: 0017 0104 951f 1178 ead5 55a3 5853 a127 .......x..U.XS.' 00000020: 0850 5400 0000 0101 0101 0101 0101 0101 .PT............. 00000030: 0101 0101 0101 2e36 80a0 7038 1f40 3020 .......6..p8.@0 00000040: 3500 35af 1000 0019 0000 0000 0000 0000 5.5............. 00000050: 0000 0000 0000 0000 0000 0000 00fe 004c ...............L 00000060: 4720 4469 7370 6c61 790a 2020 0000 00fe G Display. .... 00000070: 004c 5031 3430 5746 312d 5350 5531 005d .LP140WF1-SPU1.] 00000080: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000090: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000000a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000000b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000000c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000000d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000000e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000000f0: 0000 0000 0000 0000 0000 0000 0000 0034 ...............4
-
Yes, it's ok, but the ID is still LG (LGD0213) and not a LEN****, like those present in the bios whitelist (LEN = Lenovo, even though they make zero screens). The ' LEN40A3 - B140HAN01.3.bin' should work; it's compatible with the SPU1 and it's whitelisted. Provided you manage to flash it, of course. The SPK1 may work as well, but this edid sets hsync polarity, something the SPU1 edid claims not to be supported.
There's something odd with that export, btw:
The penultimate bytes say '00', indicating there's no additional edid data beyond the standard 128 bytes (it'd say '01' or '02' etc. otherwise). Yet there's a '34' at the end that was read as well. That is not part of the edid, but could be vcom, which designates the precise voltage output to the screen. This value is adjusted on a panel-by-panel basis in order to minimise display flicker. Best is to leave it alone, so take care not to flash a 256 byte edid as that would overwrite the '34' with a random value.damnation333 and drrossum like this. -
This is what happened:
ubuntu@ubuntu:~$ sudo '/home/ubuntu/write-edid/write-edid.sh' 4 '/home/ubuntu/write-edid/good.bin'
Writing byte 0x00 to bus 4, chip-adress 0x50, data-adress 0x00
/home/ubuntu/write-edid/write-edid.sh: line 94: i2cset: command not found
Writing done, here is the output of i2cdump -y 4 0x50:
/home/ubuntu/write-edid/write-edid.sh: line 106: i2cdump: command not found -
Did you use the live image I've provided or is this from a different install? If so, then make sure to install i2c-tools, as this is what's actually writing to the eeprom. You also need to be root user in order to access and run the i2c-tools, so make sure not to omit ' sudo bash' before running write-edid.
damnation333 likes this. -
Code:sudo bash '/home/ubuntu/write-edid/write-edid.sh' 4 '/home/ubuntu/write-edid/good.bin' Writing byte 0x00 to bus 4, chip-adress 0x50, data-adress 0x00 Error: Write failed Writing done, here is the output of i2cdump -y 4 0x50: No size specified (using byte-data access) 0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef 00: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX 10: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX 20: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX 30: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX 40: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX 50: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX 60: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX 70: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX 80: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX 90: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX a0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX b0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX c0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX d0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX e0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX f0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
-
Well ... no, that can't be right. Better use my image then (see here) and make sure to follow the included instructions; either the bus or address are wrong. The bus can change after reboot and while address 0x50 is pretty standard, it is not mandatory.
damnation333 likes this. -
Code:Do you want to probe the I2C/SMBus adapters now? (YES/no): y Found unknown SMBus adapter 8086:9ca2 at 0000:00:1f.3. Sorry, no supported PCI bus adapters found.
I get this:
root@lubuntu:~# sudo get-edid > edidbackup.bin
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 2
No EDID on bus 3
No EDID on bus 4
No EDID on bus 5
No EDID on bus 6
No EDID on bus 7
No EDID on bus 8
Looks like no busses have an EDID. Sorry!
Attempting to use the classical VBE interface
Performing real mode VBE call
Interrupt 0x10 ax=0x4f00 bx=0x0 cx=0x0
Function supported
Call successful
VBE version 300
VBE string at 0xc9a24 "Intel(R) HSW Mobile/Desktop Graphics Chipset Accelerated VGA BIOS"
VBE/DDC service about to be called
Report DDC capabilities
Performing real mode VBE call
Interrupt 0x10 ax=0x4f15 bx=0x0 cx=0x0
Function supported
Call successful
Monitor and video card combination does not support DDC1 transfers
Monitor and video card combination supports DDC2 transfers
0 seconds per 128 byte EDID block transfer
Screen is not blanked during DDC transfer
Reading next EDID block
VBE/DDC service about to be called
Read EDID
Performing real mode VBE call
Interrupt 0x10 ax=0x4f15 bx=0x1 cx=0x0
Function supported
Call successful
Looks like VBE was successful. Have a good day. -
Do you have the necessary modules loaded? I think I needed i2c-dev and perhaps another i2c module specific to your model.
damnation333 likes this. -
I have finally made some progress and followed the guide on the live USB. Everything was like in the guide. Great! At then end when writing the .bin I had some write errors though!
root@lubuntu:~/EDID/write-edid# sudo bash ./write-edid.sh 6 good.bin
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x00
Writing byte 0xFF to bus 6, chip-adress 0x50, data-adress 0x01
Writing byte 0xFF to bus 6, chip-adress 0x50, data-adress 0x02
Error: Write failed
Writing byte 0xFF to bus 6, chip-adress 0x50, data-adress 0x03
Writing byte 0xFF to bus 6, chip-adress 0x50, data-adress 0x04
Writing byte 0xFF to bus 6, chip-adress 0x50, data-adress 0x05
Writing byte 0xFF to bus 6, chip-adress 0x50, data-adress 0x06
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x07
Writing byte 0x30 to bus 6, chip-adress 0x50, data-adress 0x08
Writing byte 0xAE to bus 6, chip-adress 0x50, data-adress 0x09
Writing byte 0xA3 to bus 6, chip-adress 0x50, data-adress 0x0a
Writing byte 0x40 to bus 6, chip-adress 0x50, data-adress 0x0b
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x0c
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x0d
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x0e
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x0f
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x10
Writing byte 0x17 to bus 6, chip-adress 0x50, data-adress 0x11
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x12
Writing byte 0x04 to bus 6, chip-adress 0x50, data-adress 0x13
Writing byte 0x95 to bus 6, chip-adress 0x50, data-adress 0x14
Writing byte 0x1F to bus 6, chip-adress 0x50, data-adress 0x15
Error: Write failed
Writing byte 0x11 to bus 6, chip-adress 0x50, data-adress 0x16
Writing byte 0x78 to bus 6, chip-adress 0x50, data-adress 0x17
Writing byte 0xEA to bus 6, chip-adress 0x50, data-adress 0x18
Writing byte 0xFB to bus 6, chip-adress 0x50, data-adress 0x19
Writing byte 0x05 to bus 6, chip-adress 0x50, data-adress 0x1a
Writing byte 0xA4 to bus 6, chip-adress 0x50, data-adress 0x1b
Writing byte 0x55 to bus 6, chip-adress 0x50, data-adress 0x1c
Writing byte 0x50 to bus 6, chip-adress 0x50, data-adress 0x1d
Writing byte 0xA0 to bus 6, chip-adress 0x50, data-adress 0x1e
Writing byte 0x28 to bus 6, chip-adress 0x50, data-adress 0x1f
Writing byte 0x0F to bus 6, chip-adress 0x50, data-adress 0x20
Writing byte 0x50 to bus 6, chip-adress 0x50, data-adress 0x21
Writing byte 0x54 to bus 6, chip-adress 0x50, data-adress 0x22
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x23
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x24
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x25
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x26
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x27
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x28
Error: Write failed
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x29
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x2a
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x2b
Error: Write failed
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x2c
Error: Write failed
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x2d
Error: Write failed
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x2e
Error: Write failed
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x2f
Error: Write failed
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x30
Error: Write failed
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x31
Error: Write failed
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x32
Error: Write failed
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x33
Error: Write failed
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x34
Error: Write failed
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x35
Error: Write failed
Writing byte 0x14 to bus 6, chip-adress 0x50, data-adress 0x36
Error: Write failed
Writing byte 0x37 to bus 6, chip-adress 0x50, data-adress 0x37
Error: Write failed
Writing byte 0x80 to bus 6, chip-adress 0x50, data-adress 0x38
Error: Write failed
Writing byte 0xB8 to bus 6, chip-adress 0x50, data-adress 0x39
Error: Write failed
Writing byte 0x70 to bus 6, chip-adress 0x50, data-adress 0x3a
Error: Write failed
Writing byte 0x38 to bus 6, chip-adress 0x50, data-adress 0x3b
Error: Write failed
Writing byte 0x24 to bus 6, chip-adress 0x50, data-adress 0x3c
Error: Write failed
Writing byte 0x40 to bus 6, chip-adress 0x50, data-adress 0x3d
Error: Write failed
Writing byte 0x10 to bus 6, chip-adress 0x50, data-adress 0x3e
Error: Write failed
Writing byte 0x10 to bus 6, chip-adress 0x50, data-adress 0x3f
Error: Write failed
Writing byte 0x3E to bus 6, chip-adress 0x50, data-adress 0x40
Error: Write failed
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x41
Error: Write failed
Writing byte 0x35 to bus 6, chip-adress 0x50, data-adress 0x42
Error: Write failed
Writing byte 0xB0 to bus 6, chip-adress 0x50, data-adress 0x43
Error: Write failed
Writing byte 0x10 to bus 6, chip-adress 0x50, data-adress 0x44
Error: Write failed
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x45
Error: Write failed
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x46
Error: Write failed
Writing byte 0x18 to bus 6, chip-adress 0x50, data-adress 0x47
Error: Write failed
Writing byte 0x14 to bus 6, chip-adress 0x50, data-adress 0x48
Error: Write failed
Writing byte 0x37 to bus 6, chip-adress 0x50, data-adress 0x49
Error: Write failed
Writing byte 0x80 to bus 6, chip-adress 0x50, data-adress 0x4a
Error: Write failed
Writing byte 0xB8 to bus 6, chip-adress 0x50, data-adress 0x4b
Error: Write failed
Writing byte 0x70 to bus 6, chip-adress 0x50, data-adress 0x4c
Error: Write failed
Writing byte 0x38 to bus 6, chip-adress 0x50, data-adress 0x4d
Error: Write failed
Writing byte 0x24 to bus 6, chip-adress 0x50, data-adress 0x4e
Error: Write failed
Writing byte 0x40 to bus 6, chip-adress 0x50, data-adress 0x4f
Error: Write failed
Writing byte 0x10 to bus 6, chip-adress 0x50, data-adress 0x50
Error: Write failed
Writing byte 0x10 to bus 6, chip-adress 0x50, data-adress 0x51
Error: Write failed
Writing byte 0x3E to bus 6, chip-adress 0x50, data-adress 0x52
Error: Write failed
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x53
Error: Write failed
Writing byte 0x35 to bus 6, chip-adress 0x50, data-adress 0x54
Error: Write failed
Writing byte 0xB0 to bus 6, chip-adress 0x50, data-adress 0x55
Error: Write failed
Writing byte 0x10 to bus 6, chip-adress 0x50, data-adress 0x56
Error: Write failed
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x57
Error: Write failed
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x58
Error: Write failed
Writing byte 0x18 to bus 6, chip-adress 0x50, data-adress 0x59
Error: Write failed
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x5a
Error: Write failed
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x5b
Error: Write failed
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x5c
Error: Write failed
Writing byte 0x0F to bus 6, chip-adress 0x50, data-adress 0x5d
Error: Write failed
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x5e
Error: Write failed
Writing byte 0xD1 to bus 6, chip-adress 0x50, data-adress 0x5f
Error: Write failed
Writing byte 0x09 to bus 6, chip-adress 0x50, data-adress 0x60
Error: Write failed
Writing byte 0x3B to bus 6, chip-adress 0x50, data-adress 0x61
Error: Write failed
Writing byte 0xD1 to bus 6, chip-adress 0x50, data-adress 0x62
Error: Write failed
Writing byte 0x09 to bus 6, chip-adress 0x50, data-adress 0x63
Error: Write failed
Writing byte 0x3B to bus 6, chip-adress 0x50, data-adress 0x64
Error: Write failed
Writing byte 0x1E to bus 6, chip-adress 0x50, data-adress 0x65
Error: Write failed
Writing byte 0x0A to bus 6, chip-adress 0x50, data-adress 0x66
Error: Write failed
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x67
Error: Write failed
Writing byte 0x06 to bus 6, chip-adress 0x50, data-adress 0x68
Error: Write failed
Writing byte 0xAF to bus 6, chip-adress 0x50, data-adress 0x69
Error: Write failed
Writing byte 0x3D to bus 6, chip-adress 0x50, data-adress 0x6a
Error: Write failed
Writing byte 0x13 to bus 6, chip-adress 0x50, data-adress 0x6b
Error: Write failed
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x6c
Error: Write failed
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x6d
Error: Write failed
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x6e
Error: Write failed
Writing byte 0xFE to bus 6, chip-adress 0x50, data-adress 0x6f
Error: Write failed
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x70
Error: Write failed
Writing byte 0x42 to bus 6, chip-adress 0x50, data-adress 0x71
Error: Write failed
Writing byte 0x31 to bus 6, chip-adress 0x50, data-adress 0x72
Error: Write failed
Writing byte 0x34 to bus 6, chip-adress 0x50, data-adress 0x73
Error: Write failed
Writing byte 0x30 to bus 6, chip-adress 0x50, data-adress 0x74
Error: Write failed
Writing byte 0x48 to bus 6, chip-adress 0x50, data-adress 0x75
Error: Write failed
Writing byte 0x41 to bus 6, chip-adress 0x50, data-adress 0x76
Error: Write failed
Writing byte 0x4E to bus 6, chip-adress 0x50, data-adress 0x77
Error: Write failed
Writing byte 0x30 to bus 6, chip-adress 0x50, data-adress 0x78
Error: Write failed
Writing byte 0x31 to bus 6, chip-adress 0x50, data-adress 0x79
Error: Write failed
Writing byte 0x2E to bus 6, chip-adress 0x50, data-adress 0x7a
Error: Write failed
Writing byte 0x33 to bus 6, chip-adress 0x50, data-adress 0x7b
Error: Write failed
Writing byte 0x20 to bus 6, chip-adress 0x50, data-adress 0x7c
Error: Write failed
Writing byte 0x0A to bus 6, chip-adress 0x50, data-adress 0x7d
Error: Write failed
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x7e
Error: Write failed
Writing byte 0x3C to bus 6, chip-adress 0x50, data-adress 0x7f
Error: Write failed
Writing done, here is the output of i2cdump -y 6 0x50:
No size specified (using byte-data access)
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
10: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
20: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
30: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
40: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
50: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
60: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
70: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
80: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
90: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
a0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
b0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
c0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
d0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
e0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
f0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
And now when using sudo i2cdump like before, I only get XX and not the proper EDID anymore:
root@lubuntu:~/EDID/write-edid# sudo bash ./write-edid.sh 6 good.bin
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x00
Writing byte 0xFF to bus 6, chip-adress 0x50, data-adress 0x01
Writing byte 0xFF to bus 6, chip-adress 0x50, data-adress 0x02
Error: Write failed
Writing byte 0xFF to bus 6, chip-adress 0x50, data-adress 0x03
Writing byte 0xFF to bus 6, chip-adress 0x50, data-adress 0x04
Writing byte 0xFF to bus 6, chip-adress 0x50, data-adress 0x05
Writing byte 0xFF to bus 6, chip-adress 0x50, data-adress 0x06
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x07
Writing byte 0x30 to bus 6, chip-adress 0x50, data-adress 0x08
Writing byte 0xAE to bus 6, chip-adress 0x50, data-adress 0x09
Writing byte 0xA3 to bus 6, chip-adress 0x50, data-adress 0x0a
Writing byte 0x40 to bus 6, chip-adress 0x50, data-adress 0x0b
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x0c
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x0d
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x0e
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x0f
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x10
Writing byte 0x17 to bus 6, chip-adress 0x50, data-adress 0x11
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x12
Writing byte 0x04 to bus 6, chip-adress 0x50, data-adress 0x13
Writing byte 0x95 to bus 6, chip-adress 0x50, data-adress 0x14
Writing byte 0x1F to bus 6, chip-adress 0x50, data-adress 0x15
Error: Write failed
Writing byte 0x11 to bus 6, chip-adress 0x50, data-adress 0x16
Writing byte 0x78 to bus 6, chip-adress 0x50, data-adress 0x17
Writing byte 0xEA to bus 6, chip-adress 0x50, data-adress 0x18
Writing byte 0xFB to bus 6, chip-adress 0x50, data-adress 0x19
Writing byte 0x05 to bus 6, chip-adress 0x50, data-adress 0x1a
Writing byte 0xA4 to bus 6, chip-adress 0x50, data-adress 0x1b
Writing byte 0x55 to bus 6, chip-adress 0x50, data-adress 0x1c
Writing byte 0x50 to bus 6, chip-adress 0x50, data-adress 0x1d
Writing byte 0xA0 to bus 6, chip-adress 0x50, data-adress 0x1e
Writing byte 0x28 to bus 6, chip-adress 0x50, data-adress 0x1f
Writing byte 0x0F to bus 6, chip-adress 0x50, data-adress 0x20
Writing byte 0x50 to bus 6, chip-adress 0x50, data-adress 0x21
Writing byte 0x54 to bus 6, chip-adress 0x50, data-adress 0x22
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x23
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x24
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x25
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x26
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x27
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x28
Error: Write failed
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x29
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x2a
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x2b
Error: Write failed
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x2c
Error: Write failed
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x2d
Error: Write failed
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x2e
Error: Write failed
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x2f
Error: Write failed
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x30
Error: Write failed
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x31
Error: Write failed
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x32
Error: Write failed
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x33
Error: Write failed
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x34
Error: Write failed
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x35
Error: Write failed
Writing byte 0x14 to bus 6, chip-adress 0x50, data-adress 0x36
Error: Write failed
Writing byte 0x37 to bus 6, chip-adress 0x50, data-adress 0x37
Error: Write failed
Writing byte 0x80 to bus 6, chip-adress 0x50, data-adress 0x38
Error: Write failed
Writing byte 0xB8 to bus 6, chip-adress 0x50, data-adress 0x39
Error: Write failed
Writing byte 0x70 to bus 6, chip-adress 0x50, data-adress 0x3a
Error: Write failed
Writing byte 0x38 to bus 6, chip-adress 0x50, data-adress 0x3b
Error: Write failed
Writing byte 0x24 to bus 6, chip-adress 0x50, data-adress 0x3c
Error: Write failed
Writing byte 0x40 to bus 6, chip-adress 0x50, data-adress 0x3d
Error: Write failed
Writing byte 0x10 to bus 6, chip-adress 0x50, data-adress 0x3e
Error: Write failed
Writing byte 0x10 to bus 6, chip-adress 0x50, data-adress 0x3f
Error: Write failed
Writing byte 0x3E to bus 6, chip-adress 0x50, data-adress 0x40
Error: Write failed
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x41
Error: Write failed
Writing byte 0x35 to bus 6, chip-adress 0x50, data-adress 0x42
Error: Write failed
Writing byte 0xB0 to bus 6, chip-adress 0x50, data-adress 0x43
Error: Write failed
Writing byte 0x10 to bus 6, chip-adress 0x50, data-adress 0x44
Error: Write failed
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x45
Error: Write failed
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x46
Error: Write failed
Writing byte 0x18 to bus 6, chip-adress 0x50, data-adress 0x47
Error: Write failed
Writing byte 0x14 to bus 6, chip-adress 0x50, data-adress 0x48
Error: Write failed
Writing byte 0x37 to bus 6, chip-adress 0x50, data-adress 0x49
Error: Write failed
Writing byte 0x80 to bus 6, chip-adress 0x50, data-adress 0x4a
Error: Write failed
Writing byte 0xB8 to bus 6, chip-adress 0x50, data-adress 0x4b
Error: Write failed
Writing byte 0x70 to bus 6, chip-adress 0x50, data-adress 0x4c
Error: Write failed
Writing byte 0x38 to bus 6, chip-adress 0x50, data-adress 0x4d
Error: Write failed
Writing byte 0x24 to bus 6, chip-adress 0x50, data-adress 0x4e
Error: Write failed
Writing byte 0x40 to bus 6, chip-adress 0x50, data-adress 0x4f
Error: Write failed
Writing byte 0x10 to bus 6, chip-adress 0x50, data-adress 0x50
Error: Write failed
Writing byte 0x10 to bus 6, chip-adress 0x50, data-adress 0x51
Error: Write failed
Writing byte 0x3E to bus 6, chip-adress 0x50, data-adress 0x52
Error: Write failed
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x53
Error: Write failed
Writing byte 0x35 to bus 6, chip-adress 0x50, data-adress 0x54
Error: Write failed
Writing byte 0xB0 to bus 6, chip-adress 0x50, data-adress 0x55
Error: Write failed
Writing byte 0x10 to bus 6, chip-adress 0x50, data-adress 0x56
Error: Write failed
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x57
Error: Write failed
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x58
Error: Write failed
Writing byte 0x18 to bus 6, chip-adress 0x50, data-adress 0x59
Error: Write failed
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x5a
Error: Write failed
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x5b
Error: Write failed
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x5c
Error: Write failed
Writing byte 0x0F to bus 6, chip-adress 0x50, data-adress 0x5d
Error: Write failed
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x5e
Error: Write failed
Writing byte 0xD1 to bus 6, chip-adress 0x50, data-adress 0x5f
Error: Write failed
Writing byte 0x09 to bus 6, chip-adress 0x50, data-adress 0x60
Error: Write failed
Writing byte 0x3B to bus 6, chip-adress 0x50, data-adress 0x61
Error: Write failed
Writing byte 0xD1 to bus 6, chip-adress 0x50, data-adress 0x62
Error: Write failed
Writing byte 0x09 to bus 6, chip-adress 0x50, data-adress 0x63
Error: Write failed
Writing byte 0x3B to bus 6, chip-adress 0x50, data-adress 0x64
Error: Write failed
Writing byte 0x1E to bus 6, chip-adress 0x50, data-adress 0x65
Error: Write failed
Writing byte 0x0A to bus 6, chip-adress 0x50, data-adress 0x66
Error: Write failed
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x67
Error: Write failed
Writing byte 0x06 to bus 6, chip-adress 0x50, data-adress 0x68
Error: Write failed
Writing byte 0xAF to bus 6, chip-adress 0x50, data-adress 0x69
Error: Write failed
Writing byte 0x3D to bus 6, chip-adress 0x50, data-adress 0x6a
Error: Write failed
Writing byte 0x13 to bus 6, chip-adress 0x50, data-adress 0x6b
Error: Write failed
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x6c
Error: Write failed
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x6d
Error: Write failed
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x6e
Error: Write failed
Writing byte 0xFE to bus 6, chip-adress 0x50, data-adress 0x6f
Error: Write failed
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x70
Error: Write failed
Writing byte 0x42 to bus 6, chip-adress 0x50, data-adress 0x71
Error: Write failed
Writing byte 0x31 to bus 6, chip-adress 0x50, data-adress 0x72
Error: Write failed
Writing byte 0x34 to bus 6, chip-adress 0x50, data-adress 0x73
Error: Write failed
Writing byte 0x30 to bus 6, chip-adress 0x50, data-adress 0x74
Error: Write failed
Writing byte 0x48 to bus 6, chip-adress 0x50, data-adress 0x75
Error: Write failed
Writing byte 0x41 to bus 6, chip-adress 0x50, data-adress 0x76
Error: Write failed
Writing byte 0x4E to bus 6, chip-adress 0x50, data-adress 0x77
Error: Write failed
Writing byte 0x30 to bus 6, chip-adress 0x50, data-adress 0x78
Error: Write failed
Writing byte 0x31 to bus 6, chip-adress 0x50, data-adress 0x79
Error: Write failed
Writing byte 0x2E to bus 6, chip-adress 0x50, data-adress 0x7a
Error: Write failed
Writing byte 0x33 to bus 6, chip-adress 0x50, data-adress 0x7b
Error: Write failed
Writing byte 0x20 to bus 6, chip-adress 0x50, data-adress 0x7c
Error: Write failed
Writing byte 0x0A to bus 6, chip-adress 0x50, data-adress 0x7d
Error: Write failed
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x7e
Error: Write failed
Writing byte 0x3C to bus 6, chip-adress 0x50, data-adress 0x7f
Error: Write failed
Writing done, here is the output of i2cdump -y 6 0x50:
No size specified (using byte-data access)
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
10: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
20: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
30: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
40: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
50: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
60: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
70: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
80: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
90: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
a0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
b0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
c0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
d0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
e0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
f0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XXXXXXXXXXXXXXXX
I've attached my export. it all seemed fine.
Thanks for helping me out!Attached Files:
-
-
The pattern seems to indicate it's writing too fast, so the eeprom can't keep up. There's a 'busy' bit that's activated upon a write operation, during which no further operations are accepted. Not even a simple 'read', which could explain the returned X's.
Don't have the 'write-edid.sh' at hand, but recall there's a timing parameter you can change. An even better check is using i2cset directly; write a single byte and see if that sticks. Don't write to within the first 128 bytes though, otherwise the checksum won't match and the edid will be corrupted. Of course you could immediately write back the old value, but still ...damnation333 likes this. -
I can finally now write the EDID without any errors popping up. But then when I dump the EDID again it gives back my old one.
root@lubuntu:~/EDID/write-edid# sudo bash ./write-edid.sh 6 thisone.bin
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x00
Writing byte 0xFF to bus 6, chip-adress 0x50, data-adress 0x01
Writing byte 0xFF to bus 6, chip-adress 0x50, data-adress 0x02
Writing byte 0xFF to bus 6, chip-adress 0x50, data-adress 0x03
Writing byte 0xFF to bus 6, chip-adress 0x50, data-adress 0x04
Writing byte 0xFF to bus 6, chip-adress 0x50, data-adress 0x05
Writing byte 0xFF to bus 6, chip-adress 0x50, data-adress 0x06
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x07
Writing byte 0x30 to bus 6, chip-adress 0x50, data-adress 0x08
Writing byte 0xAE to bus 6, chip-adress 0x50, data-adress 0x09
Writing byte 0xA3 to bus 6, chip-adress 0x50, data-adress 0x0a
Writing byte 0x40 to bus 6, chip-adress 0x50, data-adress 0x0b
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x0c
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x0d
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x0e
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x0f
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x10
Writing byte 0x17 to bus 6, chip-adress 0x50, data-adress 0x11
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x12
Writing byte 0x04 to bus 6, chip-adress 0x50, data-adress 0x13
Writing byte 0x95 to bus 6, chip-adress 0x50, data-adress 0x14
Writing byte 0x1F to bus 6, chip-adress 0x50, data-adress 0x15
Writing byte 0x11 to bus 6, chip-adress 0x50, data-adress 0x16
Writing byte 0x78 to bus 6, chip-adress 0x50, data-adress 0x17
Writing byte 0xEA to bus 6, chip-adress 0x50, data-adress 0x18
Writing byte 0xFB to bus 6, chip-adress 0x50, data-adress 0x19
Writing byte 0x05 to bus 6, chip-adress 0x50, data-adress 0x1a
Writing byte 0xA4 to bus 6, chip-adress 0x50, data-adress 0x1b
Writing byte 0x55 to bus 6, chip-adress 0x50, data-adress 0x1c
Writing byte 0x50 to bus 6, chip-adress 0x50, data-adress 0x1d
Writing byte 0xA0 to bus 6, chip-adress 0x50, data-adress 0x1e
Writing byte 0x28 to bus 6, chip-adress 0x50, data-adress 0x1f
Writing byte 0x0F to bus 6, chip-adress 0x50, data-adress 0x20
Writing byte 0x50 to bus 6, chip-adress 0x50, data-adress 0x21
Writing byte 0x54 to bus 6, chip-adress 0x50, data-adress 0x22
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x23
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x24
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x25
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x26
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x27
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x28
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x29
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x2a
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x2b
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x2c
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x2d
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x2e
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x2f
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x30
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x31
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x32
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x33
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x34
Writing byte 0x01 to bus 6, chip-adress 0x50, data-adress 0x35
Writing byte 0x14 to bus 6, chip-adress 0x50, data-adress 0x36
Writing byte 0x37 to bus 6, chip-adress 0x50, data-adress 0x37
Writing byte 0x80 to bus 6, chip-adress 0x50, data-adress 0x38
Writing byte 0xB8 to bus 6, chip-adress 0x50, data-adress 0x39
Writing byte 0x70 to bus 6, chip-adress 0x50, data-adress 0x3a
Writing byte 0x38 to bus 6, chip-adress 0x50, data-adress 0x3b
Writing byte 0x24 to bus 6, chip-adress 0x50, data-adress 0x3c
Writing byte 0x40 to bus 6, chip-adress 0x50, data-adress 0x3d
Writing byte 0x10 to bus 6, chip-adress 0x50, data-adress 0x3e
Writing byte 0x10 to bus 6, chip-adress 0x50, data-adress 0x3f
Writing byte 0x3E to bus 6, chip-adress 0x50, data-adress 0x40
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x41
Writing byte 0x35 to bus 6, chip-adress 0x50, data-adress 0x42
Writing byte 0xB0 to bus 6, chip-adress 0x50, data-adress 0x43
Writing byte 0x10 to bus 6, chip-adress 0x50, data-adress 0x44
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x45
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x46
Writing byte 0x18 to bus 6, chip-adress 0x50, data-adress 0x47
Writing byte 0x14 to bus 6, chip-adress 0x50, data-adress 0x48
Writing byte 0x37 to bus 6, chip-adress 0x50, data-adress 0x49
Writing byte 0x80 to bus 6, chip-adress 0x50, data-adress 0x4a
Writing byte 0xB8 to bus 6, chip-adress 0x50, data-adress 0x4b
Writing byte 0x70 to bus 6, chip-adress 0x50, data-adress 0x4c
Writing byte 0x38 to bus 6, chip-adress 0x50, data-adress 0x4d
Writing byte 0x24 to bus 6, chip-adress 0x50, data-adress 0x4e
Writing byte 0x40 to bus 6, chip-adress 0x50, data-adress 0x4f
Writing byte 0x10 to bus 6, chip-adress 0x50, data-adress 0x50
Writing byte 0x10 to bus 6, chip-adress 0x50, data-adress 0x51
Writing byte 0x3E to bus 6, chip-adress 0x50, data-adress 0x52
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x53
Writing byte 0x35 to bus 6, chip-adress 0x50, data-adress 0x54
Writing byte 0xB0 to bus 6, chip-adress 0x50, data-adress 0x55
Writing byte 0x10 to bus 6, chip-adress 0x50, data-adress 0x56
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x57
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x58
Writing byte 0x18 to bus 6, chip-adress 0x50, data-adress 0x59
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x5a
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x5b
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x5c
Writing byte 0x0F to bus 6, chip-adress 0x50, data-adress 0x5d
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x5e
Writing byte 0xD1 to bus 6, chip-adress 0x50, data-adress 0x5f
Writing byte 0x09 to bus 6, chip-adress 0x50, data-adress 0x60
Writing byte 0x3B to bus 6, chip-adress 0x50, data-adress 0x61
Writing byte 0xD1 to bus 6, chip-adress 0x50, data-adress 0x62
Writing byte 0x09 to bus 6, chip-adress 0x50, data-adress 0x63
Writing byte 0x3B to bus 6, chip-adress 0x50, data-adress 0x64
Writing byte 0x1E to bus 6, chip-adress 0x50, data-adress 0x65
Writing byte 0x0A to bus 6, chip-adress 0x50, data-adress 0x66
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x67
Writing byte 0x06 to bus 6, chip-adress 0x50, data-adress 0x68
Writing byte 0xAF to bus 6, chip-adress 0x50, data-adress 0x69
Writing byte 0x3D to bus 6, chip-adress 0x50, data-adress 0x6a
Writing byte 0x13 to bus 6, chip-adress 0x50, data-adress 0x6b
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x6c
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x6d
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x6e
Writing byte 0xFE to bus 6, chip-adress 0x50, data-adress 0x6f
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x70
Writing byte 0x42 to bus 6, chip-adress 0x50, data-adress 0x71
Writing byte 0x31 to bus 6, chip-adress 0x50, data-adress 0x72
Writing byte 0x34 to bus 6, chip-adress 0x50, data-adress 0x73
Writing byte 0x30 to bus 6, chip-adress 0x50, data-adress 0x74
Writing byte 0x48 to bus 6, chip-adress 0x50, data-adress 0x75
Writing byte 0x41 to bus 6, chip-adress 0x50, data-adress 0x76
Writing byte 0x4E to bus 6, chip-adress 0x50, data-adress 0x77
Writing byte 0x30 to bus 6, chip-adress 0x50, data-adress 0x78
Writing byte 0x31 to bus 6, chip-adress 0x50, data-adress 0x79
Writing byte 0x2E to bus 6, chip-adress 0x50, data-adress 0x7a
Writing byte 0x33 to bus 6, chip-adress 0x50, data-adress 0x7b
Writing byte 0x20 to bus 6, chip-adress 0x50, data-adress 0x7c
Writing byte 0x0A to bus 6, chip-adress 0x50, data-adress 0x7d
Writing byte 0x00 to bus 6, chip-adress 0x50, data-adress 0x7e
Writing byte 0x3C to bus 6, chip-adress 0x50, data-adress 0x7f
Writing done, here is the output of i2cdump -y 6 0x50:
No size specified (using byte-data access)
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00: 00 ff ff ff ff ff ff 00 30 e4 ff 03 00 00 00 00 ........0?.?....
10: 00 17 01 04 95 1f 11 78 ea d5 55 a3 58 53 a1 27 .??????x??U?XS?'
20: 08 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01 ?PT...??????????
30: 01 01 01 01 01 01 2e 36 80 a0 70 38 1f 40 30 20 ??????.6??p8?@0
40: 35 00 35 af 10 00 00 19 00 00 00 00 00 00 00 00 5.5??..?........
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 fe 00 4c .............?.L
60: 47 20 44 69 73 70 6c 61 79 0a 20 20 00 00 00 fe G Display? ...?
70: 00 4c 50 31 34 30 57 46 31 2d 53 50 55 31 00 70 .LP140WF1-SPU1.p
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 34 ...............4
root@lubuntu:~/EDID/edid-rw# sudo ./edid-rw 6 | edid-decode
Extracted contents:
header: 00 ff ff ff ff ff ff 00
serial number: 30 e4 ff 03 00 00 00 00 00 17
version: 01 04
basic params: 95 1f 11 78 ea
chroma info: d5 55 a3 58 53 a1 27 08 50 54
established: 00 00 00
standard: 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01
descriptor 1: 2e 36 80 a0 70 38 1f 40 30 20 35 00 35 af 10 00 00 19
descriptor 2: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
descriptor 3: 00 00 00 fe 00 4c 47 20 44 69 73 70 6c 61 79 0a 20 20
descriptor 4: 00 00 00 fe 00 4c 50 31 34 30 57 46 31 2d 53 50 55 31
extensions: 00
checksum: 70
Manufacturer: LGD Model 3ff Serial Number 0
Made week 0 of 2013
EDID version: 1.4
Digital display
6 bits per primary color channel
DisplayPort interface
Maximum image size: 31 cm x 17 cm
Gamma: 2.20
DPMS levels: Standby Suspend Off
Supported color formats: RGB 4:4:4, YCrCb 4:2:2
First detailed timing is preferred timing
Established timings supported:
Standard timings supported:
Detailed mode: Clock 138.700 MHz, 309 mm x 175 mm
1920 1968 2000 2080 hborder 0
1080 1083 1088 1111 vborder 0
-hsync -vsync
Manufacturer-specified data, tag 0
ASCII string: LG Display
ASCII string: LP140WF1-SPU1Checksum: 0x70
EDID block does NOT conform to EDID 1.3!
Missing name descriptor
Missing monitor ranges
root@lubuntu:~/EDID/edid-rw#
What are we missing here now?
thanks for your help! -
Question for t456:
I got a new panel for my T450s. The edid is below, for anyone interested. The edid reads "Manufacturer: CMN" and "ASCII string: N140HCE-EAA". I checked the list of white listed edids that T456 provided, but none of the edids in that list seem to match this panel. It is a lenovo panel.
Do you guys (and in particular t456, you are the pro) think there a chance that this panel may work in my T450s?
Code:00000000: 00ff ffff ffff ff00 0dae b114 0000 0000 ................ 00000010: 0c19 0104 951f 1178 02ff 3592 5552 9529 .......x..5.UR.) 00000020: 2550 5400 0000 0101 0101 0101 0101 0101 %PT............. 00000030: 0101 0101 0101 b43b 804a 7138 3440 503c .......;.Jq84@P< 00000040: 6800 34ad 1000 0018 0000 00fe 004e 3134 h.4..........N14 00000050: 3048 4345 2d45 4141 0a20 0000 00fe 0043 0HCE-EAA. .....C 00000060: 4d4e 0a20 2020 2020 2020 2020 0000 00fe MN. .... 00000070: 004e 3134 3048 4345 2d45 4141 0a20 00a2 .N140HCE-EAA. ..
-
Yes, it will run fine:
B140HAN01.2, B140HAN01.3 and N140HCE-EAA
Same interface (2-lane eDP), input voltage, connector and connector location (Panelook is misleading; they're all bottom-right). Not sure you'll like the image, though; it's a 6-bit panel, whereas the AUOs have 8-bit colour depth:
On the plus side, it uses 25% less power (battery time) and has a faster response rate, so you could overclock it further (in theory) than the AUOs. Curious to hear your impressions on this panel, perhaps it's not as bad as it looks on paper.drrossum likes this. -
Thanks for the info, t456! But do you think the EDID may work in windows?
The reponse time is impressive! -
Sure, but likely still without brightness control. There's not a Lenovo equivalent, either, at least not one that is a good enough match.
-
thanks for the helpful thread guys. I recently bought a t450s with the HD+ screen and it seems like upgrading the screen while keeping brightness settings isn't realistic.
Would I be able to upgrade using an official screen purchased from their website? Or a new lenovo screen from a 3rd party seller (ie. http://www.itpartsdepot.com/products/ibm-00ht622-14-lcd-screen-only.html). Even if I have the current HD+, I'm hoping that since the new screens may be lenovo branded they will be on the whitelist?
Thanks! -
Can someone explain why on Linux changing brightness work and on windows not? EDID is still the same, right?! so why?
-
Good question.
The edid is only there for the gpu to identify the display and know which refresh rate, bit-depth etc. are required to drive the panel. The driver would normally use the vbios to query the display for the edid, but that is not a necessity. Perhaps the difference is that the Linux driver 'pings' the display and leaves it at that, while the Windows driver uses the vbios, which can do a whitelist check in the system bios.
Mind that this remains a theory until someone manages to change the panel's edid or flash a white-list modded bios. Yet, if this were not the reason then that begs the question why there's edids inside the bios in the first place. Except for Lenovo to annoy their customers that is, same as they do with the wlan cards ...
Anyway, with the data gathered so far it is possible to make that bios and flash it, but haven't gotten around to that .... Thing is, it's a lot of steps and there's several bios versions + edids, so at least four different versions are necessary. Also; don't own one of these system, so can't easily test a modded bios myself. Information and tools to diy is here, though, so start reading several pages back and you should be able to make that mod yourself.
A hardware bypass is also a possibility; desolder the edid's eeprom and flash it with a Lenovo whitelist version. Did the same thing a few weeks ago, but this is quite a bit harder than a regular (v)bios due to the eeprom's puny-ness;
-
Thank all of you for the in-depth information, I have read the thread with much interest.
I have recently ordered a replacement IPS screen for my Lenovo T450s. I actually have no idea if it is one of the screens by AOU I saw passing by here, I have ordered this one:
http://www.ebay.com/itm/Replacement...een-eDP-LED-LCD-FHD-IPS-Display-/401051116846
I wonder now, how common is it of a LCD screen to have the EEPROM write enabled, or that it is possible to enable it? It seems that would save a lot of effort.
If my screen turns out to be non-programmable either, I am willing to take the steps and program it my self. As far as I know, it is a matter of reading out the EDID, change it to be similar to a Lenovo-screen (the full 128bit, as Lenovo whitelists the full EDID, correct?), reprogram the EEPROM, and solder it back. Seems like doable on a saturday afternoon.
Never directly programmed a EEPROM before though..Last edited: Apr 22, 2016 -
Although you don't really need to read out the existing edid prior to flashing the new one (except as a backup). Do make sure to read the eeprom right after flashing the whitelisted version; want to make sure it's 100% identical.
As for the write-protect; it's also possible the tools are incompatible with these newer systems (or the specific eeprom). The i2c software is a little dated by now, not having seen an update for several years. -
i opened up the screen, and found a nice 464F EEPROM under the plastic tape. There is a write-protect (WP) pin on there, which was pulled high to 2.5 volts with a 4.5k resistor to Vcc. On the other side I discovered some handy breakout pads for WP, VCC, SCL, SDA and GND, directly connected to the EEPROM chip (except for VCC).
I shorted WP to ground to pull it low to accept writing as per its datasheet. But.... no cigar... With WP connected to GND I booted up linux and ran the write-edid.sh script, but it couldn't write. Write Failed, Write Failed, Write Failed. Something else is preventing me from writing this chip. Any ideas? Would it be different if I make a programmer out of an arduino and try to program the EEPROM directly?
btw, my screen is a LG 14 inch, the LP140WF1-SPJ1, which comes very close to the LEN40A3 - LP140WF1-SPK1. The only different is glare/anti-glare finishing (according to panelook.com), so I used that EDID for flashing.t456 and damnation333 like this. -
what else is there on the EEPROM besides the EDID? I saw some document referening to TCON, but it didn't state what that was, other than the name for the controller that manages all the settings/configuration of a eDS screen. I want to make a backup of the contents of the EEPROM so in the worst case I can revert it, or even replace it if necessary.
-
YES!
i hooked up my rusty arduino to the screen, wrote some I2C code to read and write the EEPROM, and after pulling the write protect pin low, it allowed me to write. I flashed the Lenovo EDID, and voila!! full brightness control under windows!!! It is full recognized as a original Lenovo screen.
You can see the screen recognized as Lenovo, and the brightness control is working (top left):
It was not very easy to do, but I can say it is doable. Just shorting the write protect to ground and try to reprogram it through linux didn't work, but by accessing the EEPROM directly, i did manage to write a new EDID. So I either did something wrong the first time, or there is something else preventing write operations arriving at the EEPROM...damnation333 and t456 like this. -
Hah, excellent
!
And bastards, they are ... white-listing it is.
edit: neat! -
edit: i realise now that the I2C address of the EEPROM moved from 0x50 when accessed from the laptop, to 0x54 when accessed from the arduino. I didn't not change any of the address pins on the eeprom. Can it be there is another chip on the LCD panel that acts as a passthrough, which is visible on the 0x50, and passes on information to the EEPROM on a different I2C bus as long they are not write commands? would they go through such lengths protecting the EEPROM?Last edited: Apr 26, 2016 -
Noticed the same thing on a system I was working on ... master/slave linking is a standard feature of I2C, so it isn't too surprising. How did you hook up the arduino, then? Soldered to the break-out pads?
Regarding the write-protect, that also saves it from bricking:
*** Windows 10 + NVIDIA WHQL Drivers are Killing Alienware and Clevo LCD Panels ***
Really, the fault lies with Lenovo purposely hindering or even blocking their customers from making very valid upgrades or repairs. It'd be like a car manufacturer forcing you to buy tire brand xy, but then only if that tire has a sticker slapped on by the car manufacturer; neither the display or even the functional part of the edid is any different, except for the edid's ascii id field. -
-
Have a look and see if you can help me, i'll be hugely grateful Thanks
Edit -> If you are busy at the moment, you can just post the names of the modules that you modified in your bios and i can just use those from a dump folder i just got.Last edited: May 1, 2016 -
Hey @arvest !
You are amazing!
You are the first one who succeeded! Can you write a tutorial for those geeks like me who have no clue about IC and other stuffs, just software, how to make the modding, step by step?
I would invite you for a beer
Thanks a lot! -
I've been following this thread since the start, regularly checking up to see the progress.
I'm absolutely amazed that this community has managed to solve this. Proper impressed!
Unfortunately programming something up with an Arduino is a little past my ability!
As far as I can see, just shorting the WP pin to GND will remove the write protect on the EEPROM, simply done with your clips and a bit of wire. But how did you connect the necessary pins to the EEPROM and what code did you use/what did you actually write onto the EEPROM. Did you read the EEPROM and search for the EDID as a string, then simply overwrite it?
I'd be more than happy to make donations for writing a tutorial! Genuinely excited to get this working. Been suffering with a bright screen for too long now!
Thanks in advance.
Ben -
Three caveats;
- Your 'bios backup verify.bin' and 'bios backup.bin' weren't identical, this was expected? Have used the 'bios backup.bin', to be sure.
- I've made one mod with UEFITool and the other using MMTool v5, their result differ a little bit. Not sure which works better in this case, could you try both and make certain they're both ok?
- Even if an lcd is 100% identical, that does not have to mean their edid is as well. There can be multiple revisions within the same series and to fool the bios it has to match exactly to the screen's edid. I've used this version, check if yours has the exact same edid. Fastest is simply to look at the checksum; this is the last byte of the entire string, '85' in this instance:
Code:00 FF FF FF FF FF FF 00 06 AF 3D 12 00 00 00 00 00 16 01 04 95 1F 11 78 02 84 E5 A4 56 50 A0 26 0D 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 14 37 80 B8 70 38 24 40 10 10 3E 00 35 AD 10 00 00 18 B8 24 80 B8 70 38 24 40 10 10 3E 00 35 AD 10 00 00 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 11 39 F9 0A 3C 96 11 1E 24 96 20 20 20 00 85
- 81334616-86CE-49C2-B6F9-1804E61C73F6 (LenovolgdCustomize)
- CC71B046-CF07-4DAE-AEAD-7046845BCD8A (LenovoVideoInitDxe)
-
AWESOME!!
Could you please document the process or at least share your arduino code for the rest of us?
That would be much appreciated. -
Yes, I will make a document describing the steps I took. I don't have the Arduino code anymore, but I will write something again. I am in the middle of moving right now, so it will take a few days.
cheers -
With the theory proven I don't mind making a few simple white-list override bioses. However, I don't have a great many original edids for these systems, so it would help if everyone could copy/paste their non-Lenovo edid, also mentioning the part nr. on the sticker, if possible.
The T450 and T450s has room for 15 edid overrides. Currently already have these non-Lenovo edids:
- AUO103D - B140HANxx.x (60) <- 'xx' = unknown
- AUO113D - B140HAN01.1 (A5)
- AUO123D - B140HAN01.2 (85)
- CMN14B1 - N140HCE-EAA (A2)
- LGD0446 - LP140WF3-SPL1 (A8)
- SDC4C48 - LTN140HL02-201 (BA)
The T550 and W550s have 9 edid white-list options and have only 2 non-Lenovo edids atm:
- AUO12ED - B156HAN01.2 (22)
- LGD044F - LP156WF4-SPL1 (13)
- LGD046F - LP156WF6-SPxx (92) <- 'xx' = unknown
Last edited: May 8, 2016 -
Hi there T456,
It would seem like the EDIDs you already have are by far the most common. I personally have the AUO123D so I presume the EDID you have will be identical and work for the whitelist override?
If I can get this working on my laptop, there's some beers in it for you, for sure.
Thanks -
Hi t456,
I have a W550s with the LP156WF4-SPL1 panel. This is the edid dump of that non-lenovo panel:
https://mega.nz/#!b90QQZIA!x08vAP1jybb4NMaxSk-umzSD1TzsLWlcpfCWPfe8Bas
Thanks -
! Will add it to the list.
Something else; which bios versions would be desirable? Have the 1.19 for the T450 and T450s and 1.09+1.10 for the T550 and W550s. Do know that brands like Lenovo, HP and Dell tend to lock down features with more recent bioses or block downgrades, but don't know how this applies to these specific systems. -
Funnily enough, depending on your area, I could donate around 8 - 10 brand new Lenovo LCD screens. Got them just laying around. PM me your rough location and I'll get a price for postage.
My checksum for the B140HAN01.2 is 85, so I'm back to patiently waiting
I think my current BIOS is at version 1.22, but frankly I couldn't care less about downgrading if this fixes the brightness issue.
Would this mean that I would have to come to you for any further BIOS upgrades to keep the whitelisting correct?
Thanks again.
Ben -
Thanks again for doing this. -
. Let me think of a good test-bed purpose.
-
Do you know the impact of a modified BIOS on today's security features, specifically TPM 2.0 and SecureBoot? I know that with older Thinkpads (e.g. T410) a modified BIOS causes the Laptop to beep franatically because the hash sums didn't match, but everything worked fine.
-
Hey @t456,
Do you have a list of white-list edids for the w550s?
I want to try to flash the eeprom for the panel directly so I can bypass the write-protect like @arvest did, but I need to know which edid is good to flash on my LGD044F - LP156WF4-SPL1.
Could you make me a hybrid edid? Or tell me how to do it? Do I just replace the ID with LENxxxx? -
Something peculiar, btw; compared all the white-listed edid to find that match and noticed the embedded VVX16T028J00 is a 2880×1620 panel ... Was that ever an option on these systems?
-
-
That is quite a bummer
... and no, haven't changed anything else. Have you verified the programmer-written bios by reading the eeprom again? Want to make certain the AUO133D edid is really there, no? Of course, it's possible that these modules have been disabled by TPM/SB due to the mismatching checksum. If that theory is correct then not even an original Lenovo-id'ed would have brightness control when using a modded edid-whitelist module. This is something that'd be very useful to have verified one way or the other.
Ah, and can you upload or copy/paste that AUO133D? -
-
Last resort; cmos reset? And thanks for the edid
, even if it won't help much if we can't get this to work ...
-
@arvest How is the move going? Were you able to start writing on the tutorial yet?
I want to follow your method but I'm afraid of screwing up my panel, I don't have that much experience with soldering and none with writing to eeprom and arduino
Also @t456 has the custom bios method worked before or not? -
Finally got a change to write something down. I was changing countries, and continents for that matter, so things took a while. The bad part is that I have left all my electronics and old laptop behind, so I had to redo some things from memory, and I could not test the code. It should be ok, but use at your own discretion.
Please find the PDF attached here. Good luck, and let me know if you have questions or get stuck anywhere...Attached Files:
-
-
Awesome dude, some nice hacking you did there
I might buy a T450s with TN screen just for a fun little project
w550s/t550 LCD screen replacement - brightness set at max.
Discussion in 'Lenovo' started by giggidy, Apr 5, 2015.