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

laid out

But you expect help nevertheless?

[[File:NVMe + SSD Samsung 960 PRO - IRST v16 - Win10.PNG|left|auto]]Fernando, Thank you very much for "NvmExpressDxe_Small" Driver!

It works exellent on my mobo Z77+Samsung 960 PRO 512 Gb+AIC (Add-in-Card) PCIE 3.0 X16 PEX16-M2M 5.3, Win10 LTSB [x64]
The speeds are even higher than described in the manufacturer Data Sheet.

My best wishes to great EDK2 Team, davidm71 and Ethaniel for their considerable contribution.

NVMe + SSD Samsung 960 PRO - IRST v16 - Win10.PNG

@Fernando ,

1) Does the “small” NVme ExpressDxe version improve performance when booting W10 only ? and as well after W10 is up and running ?

2) If we decide to use the “small” version do we have first to remove the “old” NvmExpressDxe versions ?
(for instance the original from ASUS for a X99 bios, or the v2 I had inserted (2 years ago and working) for a Z77 Bios machine)

If several NVMe ExpressDxe modules are inserted into a Bios I don’t understand what modules will be used effectiveley (criterias).

@100PIER :
Here are my answers:

  1. According to my test results the “small” NvmExpressDxe module shortens the boot time in a remarkable way. Reason: The code of a 6 KB sized “clean” module can be much faster read than a 27 KB sized one with a lot of unusable garbage in it.
  2. Once the required DXE module (here: NVMe) is successfully loaded, the OS and the related storage driver overtakes the management of the related device (here: NVMe Controller). That is why I doubt, that the sort of used NVMe module has any effect on the system’s performance while working.
  3. In my eyes it really makes sense to replace the formerly inserted “old” NvmeExpressDxe modules by the new “small” one (benefit: the OS will boot faster). There is no need to do in in 2 steps (removal the old > insertion the new). You can simply replace the complete module (even if the old one has another GUID).
    What I do not recommend is
    a) the additional insertion of the “small” NVMe module and
    b) the replacement of any NVMe module, which had been compiled by the mainboard manufacturer.

100PIER I’m totally agreed with Fernando

BIOS professionals highly don’t recommend a replacement of manufacturer NVMe module in the BIOS to other (3-rd party).

[MODDED NVMe]: Insertion/Replacement (to any other) -> YES
[FACTORY NVMe]: Replacement -> NO

GUID is matter only if you replace the (*.efi) body inside the persistent module to the “same” series/type mod (e.g. newer/older version). This is petty rare situation.

@100PIER :
Although I don’t recommend loading multiple UEFI drivers for the same hardware, I have specifically tested loading multiple instances of NvmExpressDxe as well as loading NvmExpressDxe before and after the AMI NVMe driver.
My tests showed that all of these cases resulted in a working configuration with the driver loaded first being connected to the device.

@all:
Update of the start post
Changelog:

  • re-optimized: uncompressed and pre-compressed “NvmExpressDxe_Small” modules (now final variant dated 04/01/2018)
    These modules have been compiled by our Forum member Ethaniel and successfully tested by me (look >here<)

A big thankyou goes to Ethaniel for his brilliant work!

Enjoy it!
Dieter (alias Fernando)

@Ethaniel , @Fernando , @iWARR
Many thanks for your recommendations.
So, on my old ASUS P8Z77-V Deluxe I will replace the “old” NVMe module into the modded BIOS with the new one “small” offered today NVMe module and let you know the results by the next week.
A contrario on my ASUS X99 and ASUS Z370 I don’t replace the native NVMe modules into the BIOS, nor add the “small” version.

@Ethaniel , @Fernando , @iWARR

I have tried to replace the "Clover Team NVMe" module of my current (working fine) modded BIOS for ASUS P8Z77-V Deluxe, but I observe a strange thing.
1) Before I do any modification of the current modded BIOS I have run UBU Tool, and you can observe UBU does detect properly the "Clover team NVMe" module:

UBU_does_detect_Clover_Team_NVMe_module.PNG



2) Then I have REPLACED this NVMe module with the "small" version:
The "replace option" does automatically a "remove" plus "replace" operation:

Replacement_01april18.PNG



3) Then I have checked the replacement:

Replace_is_done_01april18.PNG



4) Then I have submitted the new modded BIOS (properly renamed) to UBU Tool and surprise the "small" NVMe module is not detected by UBU Tool !!!

UBU_dont_detect_small_NVMe_module.PNG



Is it normal ? Do I have missed something or not done correctly the ‘remove-replace’ operation ?

Does the new BIOS is correct and OK to be flashed ?

@100PIER :
UBU is using binary patterns for recognizing known drivers and has no signature for NvmExpressDxe_Small yet.
UEFITool screenshot looks good.

@100PIER :
I agree with Ethaniel.
Your modded BIOS containing the “small” NVMe module is ok and can be flashed.
It will take a while until the UBU tool will detect the “small” NVMe module, but I am sure, that SoniX is already working on it.

@Fernando
I have flashed the modded BIOS with the “small” NVMe module for my ASUS P8Z77-V Deluxe platform.
All is working fine.

However, I don’t observed any significant boot time improvment with the “small” NVMe module.
Are you sure you tested with strictly the same conditions (for instance M-Spectre Protection disabled/enabled) ?

On my side Meltdown-Spectre Protection Disabled does offer 36s booting time, vs 46s booting time when Protection is enabled !

Yes, I am sure, that all tests were done under the exactly same conditions (Meltdown-Spectre vulnerability fixed by CPU Microcode update, the only different BIOS module has been the NVMe one).
Note: I did not measure the boot time, but I am rather sure, that it was the shortest after having inserted the currently latest “small” NVMe module.

@100PIER :
In my experience once you are on NVMe, boot time is significantly dependent on other, slower components. Even discrete graphics card initialization takes longer than NVMe initialization, although both are connected directly to the PCIe bus.
Note that the goal for NvmExpressDxe_Small was size reduction that also resulted in slight performance improvements. I however don’t expect significant boot time performance improvement in most cases.

Hi Fernando
Ok so the 960 pro arrived today, that took forever long story.

I tried using Samsung magician to clone the uefi win 10 copy onto it but it is not being detected as a boot device.
I am going to see if The Z820 will detect it via USB uefi win 10 stick.
I did update to v3.93 bios then I inserted your nvme module.
I have disabled fast boot and secure boot in my bios.
I may have to re do this bios hack and upload a zip for you to check if I inserted it correctly.

Will post a link in next 24 hours if you can help I really appreciate it
Thank you

Ok so I have inserted uefi USB win 10 and when I get to hdd it can see 960 pro 476gb . So I have selected it and it is loading …
Fingers crossed the bios sees it when it restarts

No go …
So when I insert a USB stick with win 10 UEFI , and then select a disk to install on the 960 pro is there .
But as soon as it installs to the 960 pro and re boots it can’t see the 960 pro ?
Does this ring any bells at your end ?

https://ufile.io/zd88z

Hi Fernando
Here is a copy of the modded z820 bios using v3.92A.
Would you mind checking that i inserted it correctly .
I re did the hack with the small nvme and still the bios wont pick up the 960 pro.

I have a laptop Asus G501JW with 4x Intel generation processor.
My preinstalled SSD got some errors and became superslow(like 10 years old hdd) so I bough without any doubt Samsung 960 EVO.
And now I am here.

My motherboard doesn’t work with NVMe, so I followed the guide to make my own modded bios. Everything was looking great till the moment of flashing it. My Flash utility on motherboard seems to care which version of BIOS I am going to install and not allow modded one, because value of date is unknown, as well as other 3 field in preview of flash utility (manufacturer, version). Exact error sounds ‘The BIOS file is older than the current version’.
I couldn’t find anywhere on forum any helpful information. Maybe I need to use another editor or choose different format to modify those fields? Choose another bios update utility?
This topicl describes different version of BIOS then I have (I have more earlier version, white screen with dark letters), so I am not sure I can use any information provided.