Problematic Lenovo B560 laptop bios

Hi guys,
Today I’m working on old Lenovo B560 laptop but I’m not able to do anything with its bios. That is the specification:



What I want to do:
1) update cpu microcode
2) update Intel ME
3) maybe update some other modules (ahci?, vga?)
4) unlock any potential options in bios

As I said I wasn’t able to find any version of bios online. So I try to use fpt. No luck. Only dump i’ve got was made with old Universal BIOS Backup Toolkit 2.0. Here it is. First I try to use UBU but it shows nothing (no modules only microcode). I thing because UBU cannot identify type of bios (it is Phoenix bios btw). ME Analyzer said File does not contain Intel Engine firmware but there is ME firmware because I see Intel MEI under Control Panel in Windows.

Maybe I’m wrong but I think that ME firmware is Intel ME 6 Ignition IBX so I try to dump bios with Intel ME System Tools v6 IBX r2 under Windows and pure DOS - no luck (under dos Error 26: The host CPU does not have access to the target flash area.).
I don’t want to use SPI programmer (for now). Maybe we can do something with it using only software.

Your flash descriptor is locked, therefore your BIOS dump will be incomplete (ME Region is not in the dump).

You might want to add a link to the BIOS you want modded so others can help you (i.e BIOS 39CN16WW).

@chinobino As I said before - there is no official bios available to download (or I can’t find it). So I’m trying to use FPT - still I cannot dump bios.

OK, I see what you mean about no official Lenovo BIOS links, I have scoured Lenovo’s servers and come up empty.

Looking around the web for any B560 BIOS has resulted in 6 complete BIOS dumps and 2 incomplete dumps, with 3 having SLIC 2.0 (Vista OEM activation) and 3 having SLIC 2.1 (Windows 7 OEM activation) and 1 having no SLIC marker (39CN21WW incomplete dump).

The only complete BIOS I have found are 39CN15WW and 39CN16WW, I assume you will only need 39CN16WW with SLIC 2.1 for Windows 7.

There are 3 variations of 39CN16WW, two look to be unmodified dumps (but have different hashes so may have come from different machines) and the third has been modified to have no Wireless card whitelist.

All BIOS have the same 9 microcodes. For your Pentium P6200 (CPUID 20655) there is microcode version 2 from 2010 (the latest is version 7 from 2018 which I presume you want to update to).

All complete BIOS dumps have the 1.5MB SKU Intel ME Firmware v6.0.3.1195 (which can be updated to v6.2.50.1062).

I can see 3 option ROM’s but none for the Intel SATA controller (does the PCH even support RAID?);

1. Intel(R)Ironlake Mobile PCI Accelerated SVGA BIOS Build Number: ilm20092.a56 (5/14/2010)
2. Nvidia GT218 E696 N11M SKU 0199 B01 VGA BIOS Version 70.18.71.00.07 (07/16/10)
3. Atheros Boot Agent For Atheros PCIE Ethernet Controller v2.0.1.7 (11/23/09) (build 083)

Before you attempt to mod or flash anything make sure you have recorded the motherboard serial number and UUID.

You can use the BIOS dumps I have added to this post by replacing the motherboard serial number and UUID with your own and then doing any other modifications you need.

The BIOS numbered 3 is probably the best to use as it has had the wireless card whitelist removed.

39CN16WW.rar (4.72 MB)

@chinobino Thank you. I found only one dump online (with slic 2.1). When I used Phoenix Tool with my incomplete dump I’ve got this info:

slic_info.jpg



I think it is not possible to update Intel ME Firmware to v6.2.50.1062 because latest IBX version is Intel ME 6 Ignition IBX Firmware v6.0.30.1199.

Can you tell me what should I use to open this bios? I tried cbrom (no luck), mmtool (no luck), even H2OUVE and H2OEZE gives me nothing.

It depends what you want to do.

I opened the bios in UBU to see which microcodes are stored at which volume, your CPU (CPUID 20655) is at volume 10;

lenovo_b560_39CN16WW_ubu_mc.png



Looking at the CPU microcode in UEFITool_NE_A55_win32 you can see that the 10th microcode inserted is at offset 26A350h and its size without the header is 2,000 bytes;

micrcode_offset.png



If you open the BIOS with a hex editor you can go to offset 26A350h and attempt to cut and paste a newer microcode in its place, although the latest microcode (version 7 2018-04-23) is twice the size which may cause problems.

From this thread you can see an example of an Acer laptop with HM55 chipset having microcode and ME updated, maybe @Lost_N_BIOS and @MiesMosel could lend a hand at this point?

@chinobino Phoenix bioses are tricky. I tried to figure it out by myself (for example here) but with no results. When I put microcode with different size is it necessary to change FIT table? I think so (but I don’t know how - this option is grayed out in UEFITool).

Having read the thread you linked I think you know more about this than I do.

These early Phoenix EFI bios are difficult as you say, PhoenixTool2.73 can at least dump all the modules, but without having a tool like EzH2O or UEFITool to manipulate the modules it is hard to know what will work and what will break the image an result in a brick.

As for the FIT, I don’t know if simply swapping a microcode would cause it to not load - using a flash programmer would be one way to test it.

Hopefully some others will be able to help you further.


Small correction: At MC Extractor, the numbering on the left is simply sequential and has nothing to do with BIOS Volumes.

@maks - You can see there is two microcode volumes, one that holds 4 microcodes and one that holds 6 I hate when this is done, lazy! Same 106E3 is in both, so only 9 microcodes total.
First microcode is inside a 3000h block, at least first one is padded to be 3000h, second is 3000h, third is 2800h followed by no padding, fourth one inside 1000h padded block.
Due to how file is constructed I would not add/increase first microcode volume overall sizes, but you could test removing some or adding the one you want and removing others etc, or leave it as is and only address the microcodes in the second volume.

If you drop in phoenixtool, bb.bin contains the 6 microcodes, didn’t find the other one since it’s probably best to leave that one as it is.
Some microcodes here are padded, some are not, I didn’t check it all but appears to probably follow alignment rules and each at 800h multiple as it should be. (0, 1800, 2800, 4000, 5800, 7800)
Microcode block inside BB is 8000h / 32kb and there is data directly after it, so if you need to add larger microcodes, I would remove some other, rebuild the entire block outside of BB, then replace, then rebuild with phoenixtool.
Or, this entire block can be found directly via hex search on entire BIOS, so it’s not compressed and likely can be edited in place instead of with phoenixtool. Same applies to extracted BIOS region, ucodes can be edited there if you wanted too
I don’t see checksum before the block, so may not have one, or could be in some other location, hard to say on that one. If you edit, then take back into phoenixtool it will tell you if checksum is incorrect, but finding it after that if bad will be a task

There is no FIT table, at least none I see. The reason you don’t see it in UEFITool is because UEFITool is not properly parsing this BIOS (doesn’t parse BIOS region into volumes), so even if there was FIT table it wouldn’t be shown
Image #3, you’ll have to remove the padding/flash info before it would fit on chip if chip is only 4MB (remove everything after 0x400000h)
ME Can be updated/replaced via UEFITool and FITc w/ cleanup guide, I didn’t check which version is latest, but if FITc wont open BIOS extract ME region and update that only then reinsert
Option roms can be found and updated at phoenixtool dump folder.
BIOS settings, I don’t know how to edit any of those since this wont open in PBE, tried many different ways.
I’m sure there is some manually way to edit, or certain file to import to PBE from phoenixtool dump, but I don’t know it.

Since you have programmer, before you do anything, make sure you get a verified backup, and then make sure it’s valid (check in hex to ensure not all FF or 00, make sure looks same/similar in all other BIOS tools compared to the other dumps @chinobino provided)
Then you can play around safely