The Notebook Review forums were hosted by TechTarget, who shut down them down on January 31, 2022. This static read-only archive was pulled by NBR forum users between January 20 and January 31, 2022, in an effort to make sure that the valuable technical information that had been posted on the forums is preserved. For current discussions, many NBR forum users moved over to NotebookTalk.net after the shutdown.
Problems? See this thread at archive.org.
← Previous pageNext page →

    w550s/t550 LCD screen replacement - brightness set at max.

    Discussion in 'Lenovo' started by giggidy, Apr 5, 2015.

  1. drrossum

    drrossum Notebook Enthusiast

    Reputations:
    0
    Messages:
    12
    Likes Received:
    2
    Trophy Points:
    6
    in a hex editor that looks like this:
    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
    
    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!
     
  2. t456

    t456 1977-09-05, 12:56:00 UTC

    Reputations:
    1,959
    Messages:
    2,588
    Likes Received:
    2,048
    Trophy Points:
    181
    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:

    [​IMG]

    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.
  3. damnation333

    damnation333 Notebook Enthusiast

    Reputations:
    0
    Messages:
    10
    Likes Received:
    1
    Trophy Points:
    6
    Thanks so much. just tried to flash the recommended .bin.
    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
     
  4. t456

    t456 1977-09-05, 12:56:00 UTC

    Reputations:
    1,959
    Messages:
    2,588
    Likes Received:
    2,048
    Trophy Points:
    181
    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.
  5. damnation333

    damnation333 Notebook Enthusiast

    Reputations:
    0
    Messages:
    10
    Likes Received:
    1
    Trophy Points:
    6
    Thanks, now it did something. I'm just using a Ubuntu 15.10 live image. where can I find your live image though for the future? I doubt this is the output I should get though??
    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
    
     
  6. t456

    t456 1977-09-05, 12:56:00 UTC

    Reputations:
    1,959
    Messages:
    2,588
    Likes Received:
    2,048
    Trophy Points:
    181
    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.
  7. damnation333

    damnation333 Notebook Enthusiast

    Reputations:
    0
    Messages:
    10
    Likes Received:
    1
    Trophy Points:
    6
    thanks for the link and amazing you put this Lubuntu live image together. saves a lot of work!
    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.
    
    And using sudo get-edid > edidbackup.bin
    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.
     
  8. drrossum

    drrossum Notebook Enthusiast

    Reputations:
    0
    Messages:
    12
    Likes Received:
    2
    Trophy Points:
    6
    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.
  9. damnation333

    damnation333 Notebook Enthusiast

    Reputations:
    0
    Messages:
    10
    Likes Received:
    1
    Trophy Points:
    6
    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:

  10. t456

    t456 1977-09-05, 12:56:00 UTC

    Reputations:
    1,959
    Messages:
    2,588
    Likes Received:
    2,048
    Trophy Points:
    181
    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.
  11. damnation333

    damnation333 Notebook Enthusiast

    Reputations:
    0
    Messages:
    10
    Likes Received:
    1
    Trophy Points:
    6
    Hey,
    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!
     
  12. drrossum

    drrossum Notebook Enthusiast

    Reputations:
    0
    Messages:
    12
    Likes Received:
    2
    Trophy Points:
    6
    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. ..
    
     
  13. t456

    t456 1977-09-05, 12:56:00 UTC

    Reputations:
    1,959
    Messages:
    2,588
    Likes Received:
    2,048
    Trophy Points:
    181
    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:

    [​IMG]

    [​IMG]

    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.
  14. drrossum

    drrossum Notebook Enthusiast

    Reputations:
    0
    Messages:
    12
    Likes Received:
    2
    Trophy Points:
    6
    Thanks for the info, t456! But do you think the EDID may work in windows?

    The reponse time is impressive!
     
  15. t456

    t456 1977-09-05, 12:56:00 UTC

    Reputations:
    1,959
    Messages:
    2,588
    Likes Received:
    2,048
    Trophy Points:
    181
    Sure, but likely still without brightness control. There's not a Lenovo equivalent, either, at least not one that is a good enough match.
     
  16. pyunny

    pyunny Newbie

    Reputations:
    0
    Messages:
    5
    Likes Received:
    0
    Trophy Points:
    5
    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!
     
  17. siulkilulki

    siulkilulki Newbie

    Reputations:
    0
    Messages:
    1
    Likes Received:
    0
    Trophy Points:
    5
    Can someone explain why on Linux changing brightness work and on windows not? EDID is still the same, right?! so why?
     
  18. t456

    t456 1977-09-05, 12:56:00 UTC

    Reputations:
    1,959
    Messages:
    2,588
    Likes Received:
    2,048
    Trophy Points:
    181
    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 :vbconfused: . 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 ... :oops: . 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;

    [​IMG]
     
  19. arvest

    arvest Notebook Enthusiast

    Reputations:
    5
    Messages:
    16
    Likes Received:
    7
    Trophy Points:
    6
    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
  20. t456

    t456 1977-09-05, 12:56:00 UTC

    Reputations:
    1,959
    Messages:
    2,588
    Likes Received:
    2,048
    Trophy Points:
    181
    Exactly.

    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.
     
  21. arvest

    arvest Notebook Enthusiast

    Reputations:
    5
    Messages:
    16
    Likes Received:
    7
    Trophy Points:
    6
    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).

    [​IMG]

    [​IMG]

    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.
  22. arvest

    arvest Notebook Enthusiast

    Reputations:
    5
    Messages:
    16
    Likes Received:
    7
    Trophy Points:
    6
    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.
     
  23. arvest

    arvest Notebook Enthusiast

    Reputations:
    5
    Messages:
    16
    Likes Received:
    7
    Trophy Points:
    6
    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):
    [​IMG]

    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.
  24. t456

    t456 1977-09-05, 12:56:00 UTC

    Reputations:
    1,959
    Messages:
    2,588
    Likes Received:
    2,048
    Trophy Points:
    181
    Hah, excellent :vbthumbsup: :vbthumbsup: :vbthumbsup: !

    And bastards, they are ... white-listing it is o_O .
    The display's own firmware, the programming that runs the controller chip, but that can also be stored on a different eeprom. Would guess mainly native resolution scaling? Did the same thing; make a backup, then hexedit the only the edid and write that back. Still have the backup, could run it through a decompiler and see if it makes any sense ...
    It could be a software wp-byte, but have you verified 0V on the wp-pin?
    After de-soldering the chip? Yes, sure, that would work.
    Yes, that' fine. The glare or anti-glare is a glue-on sheet which is applied to the same lcd after production, so it has no effect otherwise. Removed a few anti-glare layers (prefer better colours) and they're quite strong.

    edit: neat!
     
  25. arvest

    arvest Notebook Enthusiast

    Reputations:
    5
    Messages:
    16
    Likes Received:
    7
    Trophy Points:
    6
    I didn't compare the wp-pin to any reference ground away of the chip, but I shorted it to the chip's GND alright. The datasheet of the EEPROM does not mention anything about software write protect.

    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
  26. t456

    t456 1977-09-05, 12:56:00 UTC

    Reputations:
    1,959
    Messages:
    2,588
    Likes Received:
    2,048
    Trophy Points:
    181
    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.
     
  27. arvest

    arvest Notebook Enthusiast

    Reputations:
    5
    Messages:
    16
    Likes Received:
    7
    Trophy Points:
    6
    i hooked it up with some clips to the break out pads I found on the back side, which are directly connected to the EEPROM pins. Only VCC measured some weird resitance to the chip, so I soldered a wire to a cap (easier to solder) connected directly to the Vcc pin, and put 2.5V on it. The SDA and SCL I connected directly to the arduino, even though it outputs 5V.
     
  28. DodoBenz

    DodoBenz Newbie

    Reputations:
    0
    Messages:
    8
    Likes Received:
    2
    Trophy Points:
    6
    Hi t456, i have a Thinkpad t450 on Bios 1.19 and am seeking help with removing or modding the whitelist to accept a generic B140HAN01.2 I have a CH341 programmer and have made backups of my Bios here https://www.sendspace.com/filegroup/U3uzUmJCxYIsqpXWxEtHDg
    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
  29. grosmar

    grosmar Notebook Enthusiast

    Reputations:
    0
    Messages:
    31
    Likes Received:
    1
    Trophy Points:
    16
    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 :D

    Thanks a lot!
     
  30. wackedchewbacca

    wackedchewbacca Newbie

    Reputations:
    0
    Messages:
    3
    Likes Received:
    0
    Trophy Points:
    5
    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
     
  31. t456

    t456 1977-09-05, 12:56:00 UTC

    Reputations:
    1,959
    Messages:
    2,588
    Likes Received:
    2,048
    Trophy Points:
    181
    Sure thing, see here: ThinkPad T450, T450s bios v1.19 for AUO123D - B140HAN01.2

    Three caveats;
    1. Your 'bios backup verify.bin' and 'bios backup.bin' weren't identical, this was expected? Have used the 'bios backup.bin', to be sure.
    2. 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?
    3. 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

    There's two, both contain the same 15 white-listed edids:
    • 81334616-86CE-49C2-B6F9-1804E61C73F6 (LenovolgdCustomize)
    • CC71B046-CF07-4DAE-AEAD-7046845BCD8A (LenovoVideoInitDxe)
    Btw, it's rather curious; 16MB is gargantuan for a laptop bios, but indeed the bios file contains several eeprom options, all of them 128Mbit (16 * 8). Stranger still is that this is over twice as large as the pre-flash bios files, at ~7MB each. Most everything after ~40% of the data is empty, too. Haven't the foggiest as to why they'd do this ...
     
  32. JRW550s

    JRW550s Newbie

    Reputations:
    0
    Messages:
    4
    Likes Received:
    0
    Trophy Points:
    5

    AWESOME!!

    Could you please document the process or at least share your arduino code for the rest of us?

    That would be much appreciated.
     
  33. arvest

    arvest Notebook Enthusiast

    Reputations:
    5
    Messages:
    16
    Likes Received:
    7
    Trophy Points:
    6
    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
     
  34. t456

    t456 1977-09-05, 12:56:00 UTC

    Reputations:
    1,959
    Messages:
    2,588
    Likes Received:
    2,048
    Trophy Points:
    181
    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:
    1. AUO103D - B140HANxx.x (60) <- 'xx' = unknown
    2. AUO113D - B140HAN01.1 (A5)
    3. AUO123D - B140HAN01.2 (85)
    4. CMN14B1 - N140HCE-EAA (A2)
    5. LGD0446 - LP140WF3-SPL1 (A8)
    6. SDC4C48 - LTN140HL02-201 (BA)
    So can fit four more in one bios, but there's roughly 124 models that would be more-or-less compatible, so ... Apart from extracting the edid from an installed panel it's also possible to google ' panel nr. + pdf' and use the panel's specification sheet to pen over the edid;

    [​IMG]

    The T550 and W550s have 9 edid white-list options and have only 2 non-Lenovo edids atm:
    1. AUO12ED - B156HAN01.2 (22)
    2. LGD044F - LP156WF4-SPL1 (13)
    3. LGD046F - LP156WF6-SPxx (92) <- 'xx' = unknown
    Similar to the 14"s; around 104 compatible lcds. Take care; haven't narrowed these down one-by-one, so do not sail on that list blindly if searching for a replacement panel.
     
    Last edited: May 8, 2016
  35. wackedchewbacca

    wackedchewbacca Newbie

    Reputations:
    0
    Messages:
    3
    Likes Received:
    0
    Trophy Points:
    5
    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
     
  36. JRW550s

    JRW550s Newbie

    Reputations:
    0
    Messages:
    4
    Likes Received:
    0
    Trophy Points:
    5
  37. t456

    t456 1977-09-05, 12:56:00 UTC

    Reputations:
    1,959
    Messages:
    2,588
    Likes Received:
    2,048
    Trophy Points:
    181
    Probably, but not necessarily so; edids have revisions same as other firmware, just like the (v)bios etc. We need to match it byte-for-byte, otherwise it'll do no good. Easiest to see if it's identical is to check the checksum, which is the last byte of the edid. Forgot to include this in the list, but will append them in brackets after each pnp id - panel nr.
    No need, but perhaps certain dead/redundant hardware components might be nice (for projects).
    That is perfect :vbsmile: ! 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.
     
  38. wackedchewbacca

    wackedchewbacca Newbie

    Reputations:
    0
    Messages:
    3
    Likes Received:
    0
    Trophy Points:
    5
    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
     
  39. JRW550s

    JRW550s Newbie

    Reputations:
    0
    Messages:
    4
    Likes Received:
    0
    Trophy Points:
    5
    Good. My bios is 1.09 right now, so I do not have to worry about downgrading. It does not matter to me what bios version you choose to mod. I am guessing that I will need to flash your modded bios from DOS?
    Thanks again for doing this.
     
  40. t456

    t456 1977-09-05, 12:56:00 UTC

    Reputations:
    1,959
    Messages:
    2,588
    Likes Received:
    2,048
    Trophy Points:
    181
    Dude ... :vbbiggrin: . Let me think of a good test-bed purpose.
    Ok, will add the 1.20, 121 and 1.22 then, too.
    Nah, will post a quick guide with screenshots if we get this working. Just want to be sure it works first. There is a risk of bricking, you know, which is tantamount to flashing any modded bios. Would be less of an issue if you had experience with a soldering iron and programmer (like @arvest and @DodoBenz ), just in case ... Can unbrick it again, but then I'd need access to the motherboard.
    No, supposedly the doctored Windows-based flash tool ought to work.
    No problem; a good excuse to learn something new. Plus, it's to chip away at customer-unfriendly practices, which is never a bad thing.
     
  41. Pintu

    Pintu Notebook Consultant

    Reputations:
    3
    Messages:
    262
    Likes Received:
    5
    Trophy Points:
    31
    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.
     
  42. JRW550s

    JRW550s Newbie

    Reputations:
    0
    Messages:
    4
    Likes Received:
    0
    Trophy Points:
    5
    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?
     
  43. t456

    t456 1977-09-05, 12:56:00 UTC

    Reputations:
    1,959
    Messages:
    2,588
    Likes Received:
    2,048
    Trophy Points:
    181
    Probably the same result then, unless you disable TPM and/or Secure Boot. Might change the checksum, if necessary, but let's try a beeping version first.
    Certainly; T550 and W550S - bios v1.09 and v1.10 stock edids.7z.
    The 'LEN40B4 - N156HGE-EA2' is the best match. The 'LEN40B4 - B156HTN03.5' would work, too, but colours will probably appear more 'off' than the EA2's.

    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?
    Yes, but sadly that wouldn't work; since the edid is so puny they've opted for 1:1 firmware compare, hence you need all 128 bytes to be identical. Also, it doesn't really matter; only a few parameters are important and most compatible screens will have a good match with one the embedded edids.
     
  44. DodoBenz

    DodoBenz Newbie

    Reputations:
    0
    Messages:
    8
    Likes Received:
    2
    Trophy Points:
    6
    Thanks t456, my screen eventually showed up after some shenanigans with the post. Unfortunately it is a AUO133D I have extracted the edid with mon info and injected it in one of the edid slots (overwritten) in both the modules above. Doing only this did not fix brightness control. I also tried replacing different edids in the list but same result. Did u change anything in the modules except overwriting the EDID ? Btw for your question, the bios files distributed by lenovo in fl1 format are compressed, and apparently they contain an install block that runs on the chip after upload to complete the update process that's why t450 mostly now need a clip on programmer. Thanks for your help
     
  45. t456

    t456 1977-09-05, 12:56:00 UTC

    Reputations:
    1,959
    Messages:
    2,588
    Likes Received:
    2,048
    Trophy Points:
    181
    That is quite a bummer :vbfrown: ... 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?
     
  46. DodoBenz

    DodoBenz Newbie

    Reputations:
    0
    Messages:
    8
    Likes Received:
    2
    Trophy Points:
    6
    The programmer verifies everything it has written after finishing and reading the back the eppromm shows the actual edited modules. I don't think the modules are disabled by TPM/SB since i have a bios advanced menu edit in one module and the menu actually shows up without any problems. The lenovo sticker for the screen is too much pita so only possibility to re-rest again with the original screen would happen when i buy a new front screen bezel sticker. I'll add my edid below https://www.sendspace.com/file/v104la There might be a function in the module that could be skipping the edid table entirely, that's what i am thinking but not skilled enough to go down that route and investigate.
     
  47. t456

    t456 1977-09-05, 12:56:00 UTC

    Reputations:
    1,959
    Messages:
    2,588
    Likes Received:
    2,048
    Trophy Points:
    181
    Last resort; cmos reset? And thanks for the edid :vbsmile: , even if it won't help much if we can't get this to work ...
     
  48. Scy|la

    Scy|la Newbie

    Reputations:
    0
    Messages:
    4
    Likes Received:
    0
    Trophy Points:
    5
    @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?
     
  49. arvest

    arvest Notebook Enthusiast

    Reputations:
    5
    Messages:
    16
    Likes Received:
    7
    Trophy Points:
    6
    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:

    Gaudi, t456 and Scy|la like this.
  50. Scy|la

    Scy|la Newbie

    Reputations:
    0
    Messages:
    4
    Likes Received:
    0
    Trophy Points:
    5
    Awesome dude, some nice hacking you did there
    I might buy a T450s with TN screen just for a fun little project
     
← Previous pageNext page →