[Experimental] NVMe Option ROM

OPROM from Samsung 950 PRO just had the ability to boot in an environment without UEFI. For each bios I edit ven dev NVMe and checksum.
@Sierra
You can make a mod from the Experimental NVMe mod, but I don’t think anything will change.
Which PCIe version is used on GA-P55A-UD4 and ASUS P7P55 LX?

AFAIK the Option ROM modules (incl. the NVMe one) are not used at all while booting or running the OS in UEFI mode. They are only needed while booting in LEGACY mode.
Users of a Samsung 950 Pro SSD can boot their NVMe SSD in LEGACY mode (due to the NVMe Option ROM within the SSD’s Chip), but to be able to boot in UEFI mode, they need an NVMe EFI module within their mainboard BIOS.

Thats it Fernando, you recall me, i was wrong, so my point was to prove in this case and correct if im wrong, users don’t need modding Legacy bios, if they get a 950 PRO?
But do need the mod for disk outside this one or both in editing the ID just like Dagal stated?

No, they don’t need and should not do that.

Only the NVMe Option ROM needs the HardwareIDs of the NVMe Controller. The NVMe EFI modules do support all NVMe Controllers (the manufacturer/model of the SSD doesn’t matter).

1 Like

hello @Sierra
Actually, the ROMs we both mentioned are the same size, the 17.5 KB visible in your cbro and the 18 KB visible in my windows explorer. I apologize if there was any mistake about this.

There are examples in the cbrom image shared by Fernando in section 5.

Hello everyone

Thank you

AFAIK it’s PCIe Gen 2 for both



I did some tinkering:

I’ve got my hands on an old 950pro 512GB drive, which is supposed to work without modding the BIOS due to it’s onboard OpRom.

I gave it a try. It’s working perfectly fine with (unmodded) AMI BIOS, but when I installed it to my Gigabyte board somehow I wasn’t even able to get into BIOS menu.
After POST screen it leaves me with a blank screen and a blinking curser in the top left corner.
Very strange behavior

(BIOS was original / not modded when I tried the 950pro on the Gigabyte board)

But however, with this drive in my hands I was able to recreate the route @Dagal went

First I dumped the ROM of the SSD to a bin file using a Linux system.
After that I opened the RomDump in HxD Hexeditor.

There seem to be two OpRoms in that file. Maybe one for Legacy and one for UEFI ???

I’ve noticed that the Checksum-8 of this file is 3F
I assume it should be 00 ?? Maybe that’s the reason why the Gigabyte board freezes with this drive installed? But then, why does it work with the ASUS board / AMI BIOS ??

First attempt:
I’ve changed Vendor / Device ID to match my Micron drive manually and corrected the bit at offset 0x45FF to match the original checksum of 3F

Trying the Micron SSD with this file patched to BIOS gave me the same result as the 950pro (blank screen / blinking curser)

Second attempt:
For the second try I’ve removed all the code behind 0x45FF, which I assume is the second “OpRom” stored in this file.
Doing so resulted in Checksum-8 = 00
Comparing to extracted NVMe.bin from the BIOS file provided by @Dagal proved me that I’ve created a perfect clone of Dagal’s file.

Patched second 950pro mod to my BIOS and violá:

Micron NVMe is recognized in BIOS and is bootable.

But, however, still with very slow boot time comparable to an ancient IDE hardrive.
That’s frustrating! Why is it that slow ??


My original dump of the 950pro rom has a file size of 32kb
Removing “unnecessary” code as mentioned above reduces the file size to exact 17,5kb

So I guess the files you are referring to were created the same way

In fact, not all NVMe works well on older boards. You mentioned that you have a samsung 950 pro or another NVMe (not Micron), prepare a mod for it and see the result.

Hello, I have an Asus P6T and I would like it to boot with my nvme…
I have updated the bios of my motherboard with this rom
2022/ASUS P6T NVMe SSD BIOS MOD (TEST OK)
but I think I am missing insert this : PCI\VEN_1E4B&DEV_1202&CC_0108

my ssd nvme is this : DiskNVMe__Acer_SSD_FA100_256GB

can you help me ?

do in have to pay something for this work ??
let me know !
Thanks

@c3rb3r0 Welcome to the Win-Raid Forum!
To be able to help you we need to do a look into

  • a) the latest original BIOS for your mainboard and
  • b) the modded BIOS you have recently flashed (your posted link doesn’t work for me).

Please attach both BIOS files or give us links to them.

The HardwareIDs of the in-use NVMe SSD Disk doesn’t matter, but the HardwareIDs of the NVMe Controller has to be within the NVMe Option ROM before you are going to modify and flash the BIOS.

No, but you can give a donation to the person who may do the work for you.
Good luck!
Dieter (alias Fernando)

this is the last bios version of my mainboard:
http://www.tecnicobenidorm.com/site/P6T-ASUS-1408.zip

And this is the link of the bios i recented flashed but doesnt work:
http://www.tecnicobenidorm.com/site/2022_ASUS-P6T-1409-NVME_M.2_SSD_BIOS_MOD.rar
password rar : ismailTPC_Hastanesi

Thanks a lot !! i will give a donation to the person who do this work.

Hello @c3rb3r0

If you want you can try if this works for you

ASUS-P6T-1408_NVMe.zip (985.4 KB)

BIOS modding and flashing always contains some risks.
I am not responsible if something goes wrong.

With best regards
Sierra

I think this mod won’t work. Please tell me why nvme mod is installed in the BIOS for the disk with VEN_144D&DEV_A802 and not for VEN_1E4B&DEV_1202.
And why is the checksum “3F” and not “00”.

esta es la última versión del BIOS de mi placa base:
http://www.tecnicobenidorm.com/site/P6T-ASUS-1408.zip

Y este es el enlace de la BIOS que actualicé pero no funciona:
http://www.tecnicobenidorm.com/site/2022_ASUS-P6T-1409-NVME_M.2_SSD_BIOS_MOD.rar
contraseña rar: ismailTPC_Hastanesi

Is that bios modified with the instructions I need for my disk to appear in the boot bios?

seems by accident I ticked wrong file in MMtool to insert
(original 950pro oprom instead of NvmeOpRom.bin)

here’s a corrected BIOS file, utilizing NvmeOpRom.bin for 1E4B/1202

ASUS-P6T_NVMe_02.zip (964.9 KB)

============

But for the first file in the MMtool insert section Textboxes Offset/VID and Seg./DID
I entered correct values 1E4B/1202
and after inserting MMtool did report correctly it’s running on 1E4B/1202

So I guess this should work, too ?

MMtool

No.

Yes, the NVMe drive should appear in BIOS in Boot section under Hard Disk Drives if you use the second BIOS file I’ve posted. According to @Dagal the first one might not work properly

wow tomorro i will try it … and i tell u whats happening thanks alot !!!

@c3rb3r0
Thanks for the BIOS files.
The latest BIOS file for your mainboard is an AMI non-UEFI one.

Here is a short guide about how to get the customized NvmeOpRom.bin file properly inserted into an AMI non-UEFI BIOS:

A. Customization of the NVMe Option ROM module

As first step the original (untouched) NVMe Option ROM, which is offered by Ethaniel within the start post of this thread, has to be customized by adding the matching HardwareIDs of the related NVMe Controller.
This can be done by running the “Command Prompt” as Admin, navigating to the content of Ethaniel’s Option ROM package, typing “OpRomCfg” and pressing the “Enter” button. Then you will see the required extended command (as example, the *.bin file will stay untouched).
As final step you can execute the customization of the NnvmeOpRom by typing a command like this and pressing the “Enter” button:
(Note: The HardwareIDs of the NVMe Controller are only valid for c3rb3r0’s in-use Acer SSD!):
OpRomCfg Command

To make it easier for you and the future visitors of this thread, I have already done the required modification of the NvmeOpRom.bin for the Forum member c3rb3r0 (for all others only as an example). It is attached to this post.

The following picture verifies, that the matching HardwareIDs of the specific NVMe Controller really have been written into the hex code of the module (don’t worry about the order of the Bytes, it is “Little Endian”):
Customized NvmeOpRom

B. Modification of an AMI non-UEFI BIOS

Please follow the related Guide, which is within the start post of >this< thread.
Unfortunately I forgot to write a detailed tutorial about how to insert a natively not present Option ROM module into the BIOS.
I will do it as soon as possible. Edit: It has been done by me on 2nd of March.

Good luck!

NvmeOpRom.rar (3.5 KB)

Thank you @Fernando for providing that Guide.

Now I’ve finally understood why the Bytes of Vendor/Device ID are in a different order



You’re welcome and good luck !