[Problem] AMIBCP unable to change settings of Lenovo RD450X BIOS

Greetings! I’ve purchased a decommissioned Lenovo RD450X for use as a home NAS server. I wanted to install 4 NVMe drives into one PCIe x16 slot so I bought a break-out card without a PLX chip.

But the PCIe Bifurcation settings (as well as the entire IntelRCSetup section) are hidden in the BIOS. I was able to obtain a BIOS update package from the Lenovo website with a .BIN BIOS file in it. I turned the .BIN to a .ROM (I forgot how I did that lol) and opened it up in AMIBCP (I just realised that AMIBCP can edit .BIN as well).

I first tried to unhide the settings with AMIBCP by changing Access/Use to USER from Default, but I couldn’t get then to show up.

So I tried to change the setting I wanted to modify directly and see if it’ll work:

[IntelRCSetup > IIO > IIO 0] “IOU0 (IIO PCIe Port 2)” = “x4x4x4x4 [Default x16]”;
[IntelRCSetup > IIO > IIO 0] “IOU1 (IIO PCIe Port 3)” = “x4x4x4x4 [Default x16]”,

saved the ROM and flashed it with the tool provided with the BIOS Update package:

spsFPTW64.exe -F [Modified.ROM]

Rebooted the system and it seemed that the BIOS flash was successful because a lot of the setting reverted back to factory default. But the bifurcation setting didn’t work as the one NVMe drive that I plugged into slot-2 of the break-out card was not recognised.

I’m pretty sure that IIO 0 is what I needed to modify because both of the PCIe x16 slots on the motherboard are wired to CPU1.

I also tried to use UEFITool and IFRExtract following this t3323f16-Guide-How-to-Bifurcate-a-PCI-E-slot (Sorry I couldn’t post a link yet), but I quickly lost track hehe. I can find out that I need to change address 0x531 and 0x535 to value 0x0 to make the bifurcation work, but I couldn’t follow along afterwards.

Is there a way to edit the values in the BIOS file directly so that I can flash it without testing? I know it’s risky but I would like to try. I can always use IPMI to flash back the BIOS if necessary.

Also, does it make a difference when I make modifications based on factory-provided .BIN vs a BIOS dump? And in general, have I done anything wrong in this process?

I’d really appreciate it if anyone could offer me some help.

Many thanks!

bootup to efi shell and use amisetupwriter to change the value that is listed from your ifr setup extracted and you must know which one to change, and which value that you will use. sometimes 4x4x4x4 just wont work. best bet is x4x4

Thank you very much for your reply! I managed to boot to efi shell and run amisetupwriter, but I’ve encountered a problem:

amisetupwriter_error_20220128_1950.png



It told me that the Offset value is greater than variable size.

Here is the IFRExtract section that contains IOU strings:

IFRExtractor_Address_20220128_1950.png



I don’t know if 0x531 is actually the right Offset value to use, do you have any suggestions?

Thanks again!