NVME Boot BIOS Modding Guide for Z77 MSI MPower

I had a hard time finding a guide to mod in NVME support for an older UEFI motherboard that covered everything I needed to know, so I pieced together a few other guides to upgrade my Z77 MPower. It worked, so I retraced my steps and wrote it up hoping it might help somebody else.

This guide is only directly applicable to the Z77 MSI MPower with an ADATA SX8200 but may be applicable to other boards. You need to be much more cautious if your motherboard does not have dual BIOS, since you could brick your motherboard by flashing modified firmware. There are alternatives to BIOS modding such as using the NVME drive as a secondary drive, or by using a bootloader like GRUB on a SATA or USB device to boot from the NVME drive indirectly. You have safer but less convenient options, and thus have been warned. You may have to use UEFI booting for everything that boots from the NVME, but I’m not sure.

After performing the modifications described below, I switched the MPower back to the latest (unmodified) BIOS from MSI and found the NVME drive disappeared from my boot list while my SATA-based windows UEFI installs showed up. Due to this, I needed to modify the MPower BIOS to get it to boot from NVME, as expected. I’ve heard rumours that some Samsung NVME drives will boot on unsupported motherboards using AHCI as a fallback, but have not verified this, or whether my ADATA SX8200 has a similar compatibility feature. Regardless, it was necessary to modify the BIOS to get it bootable on my MPower.

You need to connect the NVME SSD to the motherboard. If it’s a PCIE drive you’re fine. If it’s an M.2 drive and your motherboard doesn’t have an M.2 slot, buy an M.2 to PCIE adapter like this:

This adapter has a second slot for SATA-based M.2 SSDs and a corresponding SATA data port. These are optional. What matters is that it’s a PCIE-x4 slot which won’t bottleneck my PCIE 3.0-x4 SX8200.

UEFI Firmware files are structured in a series of modules and other files. To read and boot NVME drives your BIOS requires one or more modules. To get the module files I needed, I used the Z97 MSI MPower’s latest BIOS because it is as similar to the Z77 MSI MPower as possible but has NVME boot support. I got the latest BIOS/UEFI firmware from MSI’s support website and extracted the zip files they provide. The readme indicates which files are the actual BIOS.

To get the NVME modules, I used UEFITool 0.21.5. There are more recent versions of UEFITool, but at the time of writing they don’t let you modify the firmware files for some reason. You can look for UEFITool 0.21.5 here:


https://overclocking.guide/download/uefitool-v0-21-5/

In UEFITool, open the newer motherboard’s BIOS file (Z97 MPower for me, E7915IMS.1B0). You should see a screen like this which has “Intel image” in the “Structure” box:

You may have error messages about a PE32 image with an invalid DOS signature. I don’t know what those mean and ignoring them didn’t have any apparent consequences. In File -> Search, open the Text tab and type “nvme” with “Unicode” checked and “case sensitive” unchecked. In the messages section, double click on the results to find them in the Structure section. You’re looking for items with Subtype “DXE Driver” and Text “Nvme”, “NvmeSmm”, and “NVMEINT13” in my case, shown here:

You may find other hits such as those in the “User interface section”. From what I can tell those are related to GUI options and help menu text which are not needed or necessarily compatible with other boards. For the 3 lines with subtype “DXE driver” and Type “File” with Text “Nvme”, “NvmeSmm”, and “NVMEINT13”, I right-clicked each Name (e.g. 634E8DB5…) and clicked “extract as-is”, saving them with “_Nvme”, “_NVMESmm” and “_NVMEINT13” in the filename to keep them straight. I don’t know if these modules are the same for other motherboards, but feel free to compare the MD5sums of what I extracted:

1237c599b3699b636746fcea9bfe4278 E7915IMS.1B0 (The Z97 MPower BIOS)
f568e0942be151bc16b2e7b616d17333 Nvme_dxe_driver_z97_mpower.ffs
d8c70c3d482a68371a9ca0ac4b6311ac NvmeSmm_dxe_driver_z97_mpower.ffs
776460f6aa1135f5b1b3a49475cb5b61 NVMEINT13_Z97_Mpower.ffs

Now open another instance of UEFITool and load the older (Z77 in my case, E7751IMS.HC0) motherboard. In File -> Search, open the Text tab and type “dxe” with “Unicode” checked and “case sensitive” unchecked. In the messages section, double click on the results to find them in the Structure section. Double click the last result and scroll up until you see the last entry with Subtype “DXE driver”. In my case, this was “MFLASH DXE” but yours should vary:

Note the “Pad-file” following the last DXE driver. This is blank space to ensure the firmware fills the entire BIOS chip. If you have enough space, you can add the NVME modules and get NVME support (see “Additional Reading” below if you have issues with running out of space in the BIOS). Right click the last DXE driver and click “insert after”, then add the first .ffs file you extracted from the new motherboard. Rinse and repeat for the other modules (2 in my case). It may be important to insert them in the same order you found them in the newer motherboard BIOS, so use the same order just in case. You should see 1 line added with Action “Insert” below the last DXE driver, like so:

Once all the modules are inserted, go to File -> Save Image and select the filename. Note that this option should say “Save Image As” because it won’t overwrite the original like “Save” normally would. I used an underscore in the modified BIOS filename and was unable to flash it in the UEFI Setup menu (MFlash for MSI), so I suggest changing as little as possible about the filename. I flashed a modified BIOS with the original filename, so if you’re having issues try using the same filename. MD5sums for the original and modified Z77 MPower BIOS are as follows:

9e4c8c453b1fb93a3070a7f8a933ff53 E7751IMS.HC0
d4c686b5e5e7a4996f8081952a142b7a E7751IMSnvme.HC0

The filesizes (neglecting compression) should be identical. At this point, the modified image you saved should have NVME support. Flash it to the motherboard however you like, I suggest using the UEFI setup menu as I’ve had issues with Windows-based tools for BIOS flashing in general. Again, you should have a backup plan in case the motherboard won’t POST after flashing. If you have a dual-bios motherboard, know what steps you need to take to switch and repair the bricked BIOS.

After doing all this, I didn’t see the NVME drive as a bootable legacy (non-UEFI) device, however I was able to install Windows and Linux directly to it, then it would show up as a UEFI HDD. I suggest doing a test OS install on the NVME drive after the BIOS mod with no USB or SATA devices plugged in besides what you need to install the OS to verify the NVME booting is working.

One quirk I noticed on my modified Z77 MPower is that when Intel SATA RAID is enabled, the NVME boot entries won’t show up in the BIOS. However, disabling Intel SATA RAID, saving and rebooting made the NVME boot entires show up. Once they show up I could re-enable Intel SATA RAID and boot from both NVME and SATA RAID devices like normal.

I also had with fast boot settings preventing booting some OS’ using GRUB. If you’re having issues, disable fast boot.

Hopefully this helps.

Additional Reading/Sources:
https://www.overclock.net/forum/6-intel-motherboards/1571271-tutorial-how-add-nvme-support-any-ami-uefi-bios-intel-chipset.html
https://www.win-raid.com/t871f50-Guide-How-to-get-full-NVMe-support-for-all-Systems-with-an-AMI-UEFI-BIOS.html
https://www.win-raid.com/t871f50-Guide-How-to-get-full-NVMe-support-for-all-Systems-with-an-AMI-UEFI-BIOS-107.html
^Look here if you don’t have enough room to fit the NVME modules

10 Likes

Thank you for this tutorial!

I can confirm that this works with a samsung 970 evo plus 500gb and a silverstone ecm-24 as adapter on my mpower z77.

2 Likes

Hello. I’ve also got Z77 MPower. Could I ask you to share your modified bios?

I have followed all your directions and my NVME will not show up anywhere in bios. I did an MD5sum on my modified bios and it matches yours. Could you please post a pictures of what the drive looks like in your bios? thanks

I don’t think mine did either, only after I installed a UEFI OS did it show up as a boot option. I don’t think there is a spot in the GUI that shows your PCIE devices, so there might not be a place to see it in the BIOS if the SSD does not have a UEFI bootloader configured. If you have a UEFI OS on it (and are absolutely sure it’s UEFI) then try enabling and disabling SATA RAID mode and rebooting in between. My ADATA did not show up as bootable until I disabled RAID (set to AHCI).

Try this https://send.firefox.com/download/2b8957296a0bc2fc/#FNzPTn8ktswGJmwS13A-bw

No warranty implied or actual, use at own risk, etc. Try to check the md5sum to make sure it matches the ones in the OP. You may have to remove the “nvme” from the file name for the mobo to flash it.

Thank you so much for this write up! I got it to work with my 960 pro. I was sure I was installing a UEFI Windows OS and I was not. I converted the drive to GUID and it was a cake walk after that. Thanks again for your help.

Thank you very much. Although I had gone through all your instructions here and all md5’s (started bios files, modules) matched with yours, md5 of the final modified bios was different and the system couldn’t start after flashing. With the bios file in the link, the system turns on well.

I’ll try to use nvme. Thank you again and sorry for my English.

Good day! I already tried to modify the BIOS on my MSI Z77-G43, but the system did not boot. I, like Fernando, used UefiTool 0.25.1. By your example, you did the same work, but used UefiTool 0.21.5 and my hash sum of the files of the modified BIOS did not match. I will try to flash the BIOS file created by the program of an earlier version. Your opinion?

What version of the program have you modified BIOS: 0.21.5 or 0.25.1 (0.26.0)?

I have 21.5 in my backups, so I expect that is what I used. Good luck

Good day! Modified the BIOS MSI Z77-G43 using the program UEFITool v.0.21.5, flashed the program FPT.EXE and the computer started. So the whole problem in the version of UEFITool. BIOS MSI is modified v.0.21.5, and BIOS ASUS, information from the forum Fernando, v.0.25.1. Now I will reinstall the PCI-e operating system on SSD. Many thanks to the specialist KEWIHA for their assistance. Good luck to you!

Hi kewiha, thanks a lot for your instructions. Could you send me a new link to your MSI Z77 Mpower Bios Version? I followed your steps, but I’m unable to flash the firmware.

you may have to remove the nvme from the filename. Make sure your other BIOS is working because if the flash fails you’ll need it

Hello,
Thx for guide, I followed it and it works.
The only problem is the speed.
This is the result from CrystalDiskMark 6
Annotation

I tried in different port, I removed GPU, but it is the same…

This SSD I tried in my notebook and results are much better. I expected the same.
cdm1

Does PCI-E slots MPower Z77 have some limitation?
Or maybe my CPU? I have 2600K i7.

Your CPU is only PCIE 2.0, so you are getting half the bandwidth. You will still be lightyears ahead of SATA, but that’s why your peak sequential speeds will be lower. Notice that the non sequential tests are much closer, and those are more representative of real world perf for an OS drive.

1 Like

ah… You are right. I check it now at intel ark.

MD5 of my bios file is the same like yours.
Do you have problem with PCI-E slots?
For example, Last bottom PCI-E 16x slot does not work.

And my Asus Xonar STX II does not works properly. I checked it in different ports but not success…

Unfortunately I would need to back everything, I need that Xonar card… Pity… because it is really noticeable difference in OS with this SSD.

Check the manual for how the slots are allocated for a Sandy Bridge CPU. For me, I have a 3570k (PCIE 3.0, same lane count) with a GPU in the stop x16 slot (runs in x8), a PCIE SSD in the bottom x16 slot (runs at x4), nothing in the 2nd x16 slot, and a wifi card in the top PCIE x1 slot. Try moving the SSD to the bottom x16 slot and see if you can get the Xonar running in any of the x1 slots, or an x16 slot.

Hi,

This has caused me massive headache and basically bricked my BIOS B
How can I restore this lol, your BIOS download wasn’t avaliable so I had to try do it myself.

When booting from BIOS B it just gets stuck in a boot loop and powers on for like 2-3 seconds

If I boot from BIOS A and then switch the button and then Flash BIOS B with a new legit BIOS from MSI the darn thing will still not boot.

Any ideas how I can completely reset BIOS B and start again? Like wipe the whole thing :confused:

Hi @kewiha
Bottom 16x slot does not work at all.
My GPU is in top 16x. 1050ti strix
My NVMe adapter with disk is in middle 16x slot.
And my Xonar STX is in bottom 1x slot. I tried in all others and does not work.

Windows see it, but there is no sound.
But now I noticed something strange :D.
I booted to old SSD disk with dual boot (Windows and Ubuntu). Tried from both and card works. So probably my issue is regarding some OS problem. I will try to reinstall it now.