Enable NVMe support on old motherboards using Asus P9X79 WS as an example

Hi Habr! A thought popped into my head and I thought about it. And he came up with. It's all about the terrible injustice of the manufacturer, who had absolutely nothing to add modules to UEFI Bios to support booting from NVMe through adapters on motherboards without an m.2 slot (which, by the way, was implemented by the Chinese on HuananZhi motherboards without question). Is it really not possible - I thought and began to dig. I dug up a bunch of non-working tips, a couple of times I messed up the motherboard, but I got my way. IN this article I got the lion's share of useful information. But even here there are a lot of pitfalls. For example, it is not at all clear in which index to write modules. So, let's start modifying our BIOS. Attention! This material is applicable ONLY to AMI Aptio Bios and not to any other, so if you do not have it, feel free to pass by.

For a start download tools. After unpacking into a convenient folder, download the BIOS from the nearest model with NVMe support (For P9X79, this is Sabertooth X99) and the original BIOS for our motherboard. We put the downloaded bios in the tools folder, run MMTool and open the bios with NVMe support:

Enable NVMe support on old motherboards using Asus P9X79 WS as an example

Then we go to the Extract tab, find and extract the modules we need (NvmeInt13, Nvme, NvmeSmm), we type identical names with the .ffs extension and click Extract, we leave the options β€œAs is”:

Enable NVMe support on old motherboards using Asus P9X79 WS as an example

When all the modules are extracted, open the command prompt as an administrator and go to the tools folderAFUWINx64

We take a dump there:

afuwinx64.exe Extracted.rom /O

Go to MMtool and open our dump.

Enable NVMe support on old motherboards using Asus P9X79 WS as an example
Go to the Insert tab and MUST click on the index 02 in the field (indexes may differ for different motherboards, look at the index in which the NVMe modules were originally located and compare the contents with the target Bios).

Enable NVMe support on old motherboards using Asus P9X79 WS as an example

Next, click Browse and find our extracted modules:

Enable NVMe support on old motherboards using Asus P9X79 WS as an example

Press Insert (β€œAs is” option) and repeat the action for the remaining modules, following the order, as in a BIOS with NVMe support (I have NvmeInt13, Nvme, NvmeSmm). Then we find our new modules in the list to make sure they are all there and in the correct order:

Enable NVMe support on old motherboards using Asus P9X79 WS as an example

Click Save Image As and save the modified BIOS to the AFUWINx64 folder. In the same folder we place the original BIOS of our motherboard and proceed to the firmware. First, we sew the original BIOS in order to bypass the protection:

afuwinx64.exe P9X79-WS-ASUS-4901.CAP

Then we sew our modified one:

afuwinx64.exe P9X79-WS-ASUS-4901-NVME.rom /GAN

Accordingly, we substitute our own file names. After a reboot, our BIOS will be able to boot from NVMe.

ALL ACTIONS YOU DO AT YOUR OWN RISK, THE AUTHOR OF THE MATERIAL
NO RESPONSIBILITY!

HERE you can download a working bios I have compiled for Asus P9X79 WS version 4901 with NVMe support.

Source: habr.com