[HowTo] Get full NVMe Support for all Systems with an AMI UEFI BIOS

@aquarc
Thank you for your comment, but I do not agree with you and will not put your desired "key set of requirements" into the start post of this thread.
My guide has been written for users, who want to
a) go the easiest and safest way to get a modern Windows OS installed onto any NVMe SSD and
b) get the best possible performance by using an NVMe SSD as bootable system drive.
Users, who - contrary to my advices - prefer to clone their previously used system drive, are deliberately not supported by my guide, because such procedure is anyway a big mistake (much more error-proned and the result is never as good as it could be with a "clean install").

This is simply not true. You can use any NVMe, no matter with which partition scheme and how it has been previously formatted. All you have to do after having started the OS installation is to follow this part of my guide:

Next point:

Only BIOSes with full native NVMe support will list the name of the NVMe disk as "bootable device". All other BIOSes will only show the "Windows Boot Manager".

It’s very much and very simply true. Unlike some of the old NVMe disks, which had legacy oproms, the new ones don’t have legacy oproms so they can’t boot if it’s MBR, but only if UEFI. The nvme bios modules, at least the ones I’ve seen extracted from the likes of Z97 or X97 or X99 motherboards, simply don’t recognize the nvme disk if it’s not GPT with a FAT32 EFI (ESP) bootable partition. The Bios doesn’t show it as a bootable device unless those exist.

All guides, yours included, claim that you should see the disk in the bios among the bootable drives list. That’s not true unless you make it gpt + fat32 efi boot.

Whoever is reading this doesn’t have to take my word for it, you can try it yourselves: keep the disk GTP and delete the FAT32 partition, or make it MBR instead of GPT, and you’ll see that the Bios will not list the NVMe disk as a bootable device.

Your “let Win10 Setup create a new partition […]” advice is hiding those facts, because by default Win10 will init the disk as GPT and format it as UEFI, i.e. will create a FAT32 EFI partition, etc.

That’s fine, but not everyone wants to start from scratch by wiping all data and reinstall Windows. It’s perfectly possible to clone an existing MBR disk onto the NVMe and make it bootable (clone as is, then convert it from MBR to GPT without wiping data, then resize the first partition to make 100 MB room at the beginning of the drive, then create a FAT32 partition there, then add/repair the bootloader using bcdboot or other tools). The fact you call it “a mistake” says more about you than about the ones attempting a clone.

I’ve succeeded on my Gigabyte Z77X-UP5 (nvme modules extracted from a Gigabyte Z97X-UP7 mobo).

@aquarc while i agree with you with not everyone want to start from scratch, from what i’ve read from the first time this is a DWYOR project which means could causes system not to boot at the worst times.

It is pretty simple what the Gurus told here, it is better to start everything from scratch installing windows, for a better less issues.

“let Win10 Setup create a new partition” is the layman terms for making the drive to be formatted as gpt and stuff, while in extended reason, win10 actually follow the bootable drive formatting, if the win10 media created on MBR + Bios it would make the drive onto it, like what i did to some old C2D and C2Q builds which still does utilize mbr disks only for boot (except for some lga 775 that uses Uefi beta bios such as P5Q Deluxe EFI, and 3 MSi board that i forgor its name T_T ). These claim are not false as it is already been explained on why it is UEFI only recommended, since it only utilize the latest nvme disk rom (no legacy boot). So yeah, maybe the guide needs to be detailed a little bit but not at all since it’s already explained the “Installing Windows” section iirc, while cloning is still possible but not recommended.

Anyways, nice opinion :D!!

@aquarc
If you think, that very important messages/instructions are missing within the start post of this thread, feel free to start a new thread with a better/more complete guide. This may be a good idea anyway, because due to my age the time span to keep all my start posts up-to-date is meanwhile very limited.

To be able to understand why I called it a "mistake" what you have done, I recommend to do the following:
1. Optimize your current NVMe system drive C: and execute a benchmark test.
2. Take a backup of the complete content of your currently in-use NVMe SSD and store it outside of it.
3. Do a clean OS installation onto the NVMe SSD by following my guide.
4. Optimize the freshly created system drive C: and re-execute the benchmark test.
5. Compare both benchmark results. If there should be no noticeable difference, you can easily restore your cloned old system drive.

Why didn’t you follow the much easier and less DXE Volume space consuming method of my guide regarding this point?

Gigabyte GA-H61M-S1 (REV 3.0) successfully inserted the smaller patch and booted from the nvme drive at the x1 slot that is connected to the PCH. Thanks for the tutorial!

Hi,

Would like to thank you for your exceptional guide about how to get full NVMe support in AMI BIOS and just to report the following success:

Just yesterday, 3x Supermicro X10SL7-F motherboards were successfully flushed with the latest available and modded Supermicro v3.4 AMI BIOS.

The modding was accomplished with some trials, as the pad-files were removed by both tools after processing with the insertion of the NvmExpressDxe_Small.ffs.

Finally the result was achieved utilising AMI UEFI MMTool following the guide and firstly removing all network-related drivers from DpcDxe to Udp6Dxe (please refer to picture, the network boot is redundant in my configuration) to increase available memory and inserting full version of the NvmExpressDxe_5.ffs driver.

Checked with Supermicro AOC-SLG3-2M2 passive 2x ports NVMe M.2 expansion card on all three motherboards in x8 lanes @x16 PCIe 3.0 slot - all work and boot with PCIe setting in EFI mode just fine (tried Win10 and PfSence fresh installations).
This particular model Supermicro PCIe NVMe expansion card is switchless/passive and motherboard X10SL7-F lacks bifurcation, therefore, as the result, always the only one SSD NVMe drive recognised by BIOS @ x4 lanes. Also, or because some hardware or BIOS incompatibility, the Hynix 128GB NVMe SSD was not accepted, but HP (Samsung) 256GB NVMe SSD was successfully recognised and is working just as suppose to.

For the further testing the ASMedia ASM2812 chipset based PCIe to NVMe 2x ports card was recently ordered, so will report additionally regarding the compatibility of the hardware/BIOS modding after tests and if any success to utilise all PCIe x8 lanes in 2x SSD configuration with this active card on X10SL7-F motherboard.

1 Like

Could you try these? bios downloaded from your mobo website page, and added DXE5 and Samsung M2 DXE, without any removal of the other dxe (straight up stock just added nvmedxe5 and samsung m2 dxe).

x10sl71.rar (2.7 MB)

@Koekieezz
You should have mentioned the tool you have used to integrate the modules (without having touched/added any Pad-files).

Oh yeah sorry, i did use uefitool for it, and i see some pad files removed (due to uefitool nature) but the FIT table is fine (checked using uefitool NE), but it’s up to the user wether he wants to flash it and try it out if there is a problem at all, not recommending mine, but if op wants to i have it attached there :smiley:

i’ve done many uefitool instead of mmtool on chipset 8 and under it (some of them is the lga 1156 chipset that got uefi, intel oem board (full dump bios)). Many of them didn’t complain yet so yeah, it’s up to the user wether op want to try it XD

14 posts were split to a new topic: [Problem] Dell Latitude E5450 BIOS Mod

Hello! I followed this guide, and this one about flashing a modded BIOS (because I got “secure flash check fail”).

But the “UBU” tool from the second guide didn’t go through exactly the same steps for me. The filesize did reduce by a few kB like the guide said it should, but I’m not sure if I can safely flash the file that I got.

I have an ASRock Z87 Pro3.

(Won’t let me add attachment since I’m a new user, I guess I’ll add the BIOS files when I’m able to)

The latest beta bios to the Z87 Pro3 3.20 has already the AMI NVMe by default, no mod needed.

Thank you, I’ll try that instead! I looked at the description before and didn’t notice NVMe mentioned so I didn’t try it…

Hello.
Excuse me for requesting a support, I have a problem with a 1 pad file being removed by MMTool Aptio 4.50.0023 in an image from a root volume 00 while modifying a DXE child volume 01:00-00.
I’ve found this corruption while validating the change using a UEFITool.
Modified image was never flashed.
Please advise.

HP Compaq Elite 8300 SFF Intel Q77 Express
BIOS K01 v03.08
Source BIOS file K01_0308.BIN link for download
Original OEM installation package

Volume of the pad file:
ZeroVector:
46 4C 53 48 4B 30 31 30
33 2E 30 38 20 20 68 84
FileSystem GUID: 8C8CE578-8A3D-4F1C-9935-896185C32DD3
Full size: 3C0000h (3932160)
Header size: 48h (72)
Body size: 3BFFB8h (3932088)
Revision: 2
Attributes: 0003FEFFh
Erase polarity: 1

Pad file removed by MMTool:
File GUID: E4536585-7909-4A60-B5C6-ECDEA6EBFB54
Type: F0h
Attributes: 00h
Full size: 18h (24)
Header size: 18h (24)
Body size: 0h (0)
State: F8h
Header checksum: 86h
Data checksum: AAh

Screenshot of the pad file in the source image viewed from UEFITool:

Use the UEFI tool method instead of the AMI tool. Compare again the 2 images with UEFI tool.

Thanks for the suggestion.
I’ve just tried the UEFITool and it seems that it may corrupt the image because I’m unable to flash it due to an error while the original image file is flashing fine probably due to an unexpected discrepancy between an original one and a modified one by UEFITool.
Modification was performed using 0.28.0 release, result visually seems to be correct when comparing an original image with a modified one.
When comparing the differences using an UEFITool NE A59 release that doesn’t have a modification engine, root volume of a BIOS region receives a Text field value: UsedSpace. Original file doesn’t have any text.

Difference between Information area

Original:
Fixed: Yes
Base: AF0000h
Header address: FFAF0000h
Data address: FFAF0048h
Offset: 60000h
ZeroVector:
46 4C 53 48 4B 30 31 30
33 2E 30 38 40 40 1E 00
Signature: _FVH
FileSystem GUID: 8C8CE578-8A3D-4F1C-9935-896185C32DD3
Full size: 3C0000h (3932160)
Header size: 48h (72)
Body size: 3BFFB8h (3932088)
Revision: 2
Attributes: 0003FEFFh
Erase polarity: 1
Checksum: 5A81h, valid

Modified:
Fixed: Yes
Base: AF0000h
Header address: FFAF0000h
Data address: FFAF0048h
Offset: 60000h
ZeroVector:
46 4C 53 48 4B 30 31 30
33 2E 30 38 20 20 68 84
Signature: _FVH
FileSystem GUID: 8C8CE578-8A3D-4F1C-9935-896185C32DD3
Full size: 3C0000h (3932160)
Header size: 48h (72)
Body size: 3BFFB8h (3932088)
Revision: 2
Attributes: 0003FEFFh
Erase polarity: 1
Checksum: F657h, valid

I’m trying to flash it through a BIOS/UEFI Utility menu - there is an option to flash an image file.
Flasher starts to read the image and throws an error without any informative description.
Original image flashes fine.
Do I have to try to flash the modified image using the suggested tools like UBU or the resulting image is corrupted?

Edit:
I’ve corrected the ZeroVector and a Checksum of the root volume (file system), now it doesn’t have a UsedSpace text. However, the image still unable to be flashed.
Will try to flash it with UBU or something else.

@Thump
This is the thread about how to modify an AMI UEFI BIOS. Users, who want to know how to get a modded BIOS properly flashed, should read the start post of >this< thread and post their problem into the linked thread.

Sure, but can you please clarify if a modification of ZeroVector of the filesystem is OK?
It seems that UEFITool 0.28.0 always do this for my image file.

@Thump
If the UEFITool v0.28 is not able to insert the NVMe module without touching other BIOS modules, you should either change the in-use BIOS modding tool (e.g. by choosing one of the MMTool versions) or change the specific NVMe module (e.g. by inserting the “small” variant).
Please follow strictly the guide and don’t try to invent anything new.