Recover SMBios data from a corrupted BIOS (Sony Vaio SVE14126PLB)

Discussion in 'BIOS Mods' started by cocus, Feb 22, 2021 at 19:35.

  1. cocus

    cocus MDL Novice

    Apr 28, 2011
    5
    0
    0
    Hi all!
    One of my friends was going to throw away this laptop, and I figured I wanted to fix it just to do something.

    It ended up being the bios completely screwed up (it would try to power up, then it will automatically power down; checked all rails, S-state signals, etc, no problems). I took a backup of the contents of the SPI chip, then proceeded to flash a random BIOS I found for a similar model. It booted straight up! However the data showing up there is not valid, i.e. it's a different model, and a different asset tag, etc.

    Now, even tho this is "good enough", I would like to restore the original values for these fields.
    I've tried (with no luck) the InsydeH20 SMBios editor, and it reports an error 0x82 (Not supported), which I saw it's expected for Sony Vaios.
    Now, having a look at the raw dump, I can see at least 2 instances where a string "$DMI" exists, followed by data and some strings (which I assume it's the raw DMI info for the Type1 or something like that). Since I don't know how's the expected layout of these things, how could I "transplant" these values into the new one?

    This comes from the original one (previously there were all 0xFFs):
    Code:
    00706000  24 44 4d 49 01 05 ff 10  00 53 56 45 31 34 31 32  |$DMI.....SVE1412|
    00706010  36 50 4c 42 0b 05 ff 10  00 31 30 38 33 39 37 33  |6PLB.....1083973|
    00706020  36 32 36 4c 0b 06 ff 11  00 46 4e 43 2d 50 45 53  |626L.....FNC-PES|
    00706030  50 45 58 54 42 0b 07 ff  37 00 42 4b 45 58 33 41  |PEXTB...7.BKEX3A|
    00706040  5f 77 55 64 49 7a 68 40  5f 77 54 42 40 52 34 6c  |_wUdIzh@_wTB@R4l|
    00706050  54 40 45 74 35 42 73 6c  40 64 66 71 6c 51 5f 6c  |T@Et5Bsl@dfqlQ_l|
    00706060  40 64 49 7a 6c 51 5f 77  54 42 49 7a 01 06 ff 0d  |@dIzlQ_wTBIz....|
    00706070  00 43 41 30 30 31 35 48  38 01 07 ff 15 00 32 37  |.CA0015H8.....27|
    00706080  35 35 36 32 38 32 2d 30  30 30 34 39 35 33 01 08  |556282-0004953..|
    00706090  ff 15 00 e0 a4 d5 ad d2  b3 e2 11 8c 0a 54 53 ed  |.............TS.|
    007060a0  d3 a5 7f ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
    007060b0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
    And this is from the random bios dump I got from the internet:
    Code:
    00704000  24 44 4d 49 01 07 ff 15  00 32 37 35 35 34 39 30  |$DMI.....2755490|
    00704010  32 2d 33 30 30 32 33 32  32 01 08 ff 15 00 d0 b7  |2-3002322.......|
    00704020  1f b0 c8 33 e1 11 bf 39  30 f9 ed ad 9b 6f 01 06  |...3...90....o..|
    00704030  ff 0d 00 43 31 30 37 43  39 53 53 01 05 ff 10 00  |...C107C9SS.....|
    00704040  53 56 45 31 34 31 31 34  46 58 42 0b 05 ff 10 00  |SVE14114FXB.....|
    00704050  31 30 37 34 32 37 32 39  36 34 41 0b 06 ff 0d 00  |1074272964A.....|
    00704060  46 4e 43 2d 45 58 54 42  0b 07 ff 37 00 41 59 30  |FNC-EXTB...7.AY0|
    00704070  54 33 42 4d 70 56 4f 4d  46 7a 77 35 72 44 77 70  |T3BMpVOMFzw5rDwp|
    00704080  36 6a 4d 37 6c 44 7a 68  56 4d 72 69 74 73 6a 78  |6jM7lDzhVMritsjx|
    00704090  56 4d 70 56 52 73 6a 7a  52 44 70 56 51 74 72 ff  |VMpVRsjzRDpVQtr.|
    007040a0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
    Is there any kind of specification for these? Do they contain checksum? Are these strings references by a table somewhere else? Can I just replace this section as-is and call it a day?

    More info: These two dumps come from a different bios version, The corrupted bios was R0170D5, the random one from internet is R0170E5 and now it's running R0220E5.

    Thanks!
     
  2. TigTex

    TigTex MDL Senior Member

    Oct 5, 2009
    256
    195
    10
    That's it. All you need is to copy the data after $DMI until you see the next $"SOMETEXT" from the old bios to the new bios. But if possible, try to use a clean bios instead of a dump because you might have issues with the intel management engine region (if it's an intel core laptop)
     
  3. cocus

    cocus MDL Novice

    Apr 28, 2011
    5
    0
    0
    Thanks for your reply TigTex.
    So, I'll replace the entire section from $DMI till the next $WHATEVER I find afterwards. If the size doesn't match I'll trim or add dummy 0xff bytes so I don't upset any offsets. That should do it, right?
    About the ME region, yes, this is from an Ivy Bridge laptop, running an i5-32somethingM. My old dump from the corrupted bios must have the ME region, but the dump I flashed (and updated later using Sony's tools) seems to be working. I'm not sure if after updating the bios using the tool the ME region got updated somehow or not. I have no clue either if the old dump from the bios has a proper ME region and/or firmware.

    Thanks again!