[Discussion] Booting off an NVMe SSD in LEGACY mode (using MBR)


This is not true for all cases. I can boot from an Samsung SM951-nVME M.2 SSD (without any option-ROM) in Legacy-Mode.
Model: Laptop Schenker/MYSN/“Bestware” S506 Slim Laptop (Skylake-U) with AMI Aptio V Firmware.

I’ve found at least three nVME named modules/GUIDs in Original firmware (UN-modified)
[Edit]looking in UEFI-Tool, if I’ve seen correctly there’ are multiple of those eith different GUIDs:

My SM951-nVME is currently installed with GPT+UEFI though. But I had tested with MBR+Legacy, and installin Windows via normal/standard Win-P during legacy-mode, and booting from it in Firmware-Legacy mode via MBR-formatting works here, at least! :slight_smile:

I hope attached pictures below and/or above are proof enough.
attached jpg below: a group of 4 images placed together: with Legacy mode:
see also picture with Fast-Bootmenu (F7):, SM951-nVME (no SSD-option-ROM),but detected, selectable to boot from it, but only one entry bootable from one place (MBR) per device.
attached jpg below:
a group of 4 images placed together: with UEFI mode:
see picture with Fast-Bootmenu (F7): SM951-nVME detected UEFI-mode , multiple Boot entries selectable bootable per device (SM951-NVME: GRUB Bootmanager (own build), Windows Bootmanager, debian-GRUB-Bootmanager)

If you’d need further proof I’d have to repartition my SM-951-nVME with MBR-style and reinstall Windows and Linux, and I’d attach pictures here from Windows disc management/diskpart or s.th. more suitable :wink: :slight_smile:

Maybe it could be of interest for s.o. who wants to use aN nVME SSD (without option ROM in Legacy-mode), in case a developer/good experienced person might find s.th. outn why nVME (without SSD-option ROM) is bootable in legacy-mode on my Laptop
what AMI/Aptio-module to extract and to insert on another type of model’s firmware with AMI Aptio:

Firmware “SCHENKER_S406_S506_BIOS_1.05.14a.zip” is currently unavailable on Schenker/Bestware download site afaik, as their site has moved, and I cannot attach bigger file than 6MB, (SCHENKER_S406_S506_BIOS_1.05.14a.zip" is about 11MB). grmpf :slight_smile:
If s.o. might be interested why it’s working I could attach (N24JU5M.14 =5120 KibiBytes = BIOS region only?)
instead of N24JU8M.14 (=8192 KibiBytes=entire firmware inlcuding ME?)
(there are two images provided in SCHENKER_S406_S506_BIOS_1.05.14a.zip:
(N24JU5M.14 =5120 KibiBytes) and (N24JU8M.14 =8192 KibiBytes)
(moving/copying/extracting the first/last 5120 KiBytes with “dd” from N24JU8M.14 (8-MiByte image to a new file (5 MebiBytes or 5120 KibiBytes), result has identical checksum to N24JU5M.14 - 5 MebiBytes version)-

The only explanation I have, that my Laptop has the SSD option-ROMs of various SSD-models included in its Laptop-firmware, that’s why SM951-nVME without an own option ROM might be bootable in legacy mode on my Laptop,
(so several newer nVME-SSD released later, might not be bootable with my S506 Laptop in Legacy-mode perhaps).

EDIT by Fernando: To save space within the very voluminous thread, I have removed some parts of the quoted text and unneeded blank lines and reorganized the unneeded pictures showing the various NVMe BIOS modules.

@Vincent12 - I think you have Samsung 950 is why, but yours is OEM 951 (Same/same), to avoid confusion on that maybe @Fernando could add 951 model to that comment on page one too
Or, actually, this is why >> This works for you OK because your BIOS is already NVME compatible from the get-go with stock BIOS. So, this guide doesn’t really apply to you, but I still do wonder about the OEM 951 if it’s same as 950 on a non-NVME capable BIOS.

@Vincent12 :
Thank you for your interesting contribution.
Here are my comments:

  1. This thread is about systems without native NVMe support. As you have realized yourself, your laptop Schenker has a modern AMI UEFI V BIOS, which contains all NVMe EFI modules and doesn’t require any BIOS modification.
  2. Unfortunately you obviously haven’t tried to get any OS installed onto the SM951 in LEGACY mode using the MBR partition scheme.
    The fact, that the NVMe SSD is shown within the BIOS as “bootable device”, is not a proof, that it is really bootable in “pure” LEGACY mode (without loading any EFI (DXE Driver) modules of the BIOS).
    Example: After the insertion of the natively missing NVMe EFI module the related BIOS shows the attached NVMe SSD named “PATA” or “PATA SS” as “bootable device”, but nevertheless it is impossible to boot off this device in LEGACY mode.
  3. It is rather unlikely, that the Company Samsung has supplied some OEMs (here: Schenker) with SM951 SSDs, whose NVMe Controller Chip natively contains an NVMe Option ROM.
    According to my knowledge only the Samsung 950 Pro (and maybe 970 Pro) SSDs contain an NVMe Option ROM, which allows to boot off the SSD in LEGACY mode (using the MBR partition scheme).
    Until now I haven’t yet seen any AMI UEFI mainboard BIOS with an NVMe Option ROM. To verify, whether your Schenker BIOS should be the first one with such NVMe module, I would like to have a look into it.

Please attach the 5MB sized BIOS file as *.ZIP archive.
Thanks in advance!

@Fernando :
There’s a way to test it without reformatting whole SSD, by adding e.g. the 3rd primary partition with “gdisk” where I installed Win10, into Hybrid-MBR, making a Hybrid-MBR by the existing GPT-table (expert command “x”; r “recovery transformation options”; “h” Make hybrid MBR (without data loss) using protective MBR as MBR table (up to 3 primary partitions effectively, missing 4th one reserved as protective primary partition).
(can be undone quite easily without data loss -(expert-command “x” ; “n” create new protective MBR)),
I’ll reinstall Win10 into that primary-partition, (entered into MBR-table side from the GPT-table) (Hybrid-MBR), I don’t have important data on that one partition, as using Linux for time being, via Setup while in Legacy-mode.

To be clear, also had already tested successfully installing Windows on Samsung SM951-nVME (without option-ROM) with MBR only in Legacy-mode .
I had no issues with that, I just converted to GPT, to try out new GPT and UEFI mode (was new to me).

Installing Windows in Hybrid-MBR works (effectively using MBR-mode then), (as Windows prefers using the MBR-table), tested successfully recently on another computer, BIOS-Only (no UEFI supported there) recently.
I’ll add proof pictures soon, reediting this post.
Below attachment N24JU8M.zip, whole firmware after all below 6MB as zip-file.
Might it be that s.o. had added somehow an option ROM into SM951-nVME firmware, if that was possible? (Because got it by 2nd-hand (from ebay).

@Lost_N_BIOS :
It’s definitely a SM951-nvme, see picture of post before 4-er group image from the boot manager, “MZVPV256HDGL-000H1” listed,


and see here:
256GB Samsung SM951-NVMe M.2 2280 PCIe 3.0 x4 32Gb/s MLC Toggle (MZVPV256HDGL-00000)

[Edit] There’s a small difference, mine is listed with “000H1” in behind instead of “00000”, but it looks entirely as the SM951-nVME, green, and there is no cooling body on it, and on the sticker (the 950pro would have instead?).
I’ll have to open up Laptop to recheck, but on the ebay-link (picture of MZVPV256HDGL-000H1, on the sticker there is “SM951 nvme” printed next to “MZVPV256HDGL-000H1”), you could reverify, search on ebay [ebay-banner link removed by Vincent12]


OK “MZVPV256HDGL-00000” is without nVME according to this pciture, see sticker.

MZVPV256HDGL-000L1 is with AHCI instead of nVME.

And MZVPV256HDGL-000H1 is with nVME.

My aunt has exactly same SSD, MZVPV256HDGL-000H1, but an Acer E5-774G-37ZB. Her Laptop only allows to boot from “MZVPV256HDGL-000H1” in UEFI-mode, but not legacy. But my Laptp really allows it for Legacy as well (MZVPV256HDGL-000H1).

EDIT by Fernando: Unneeded quoted posts removed (to save space)

N24JU8M.zip (3.73 MB)

@Vincent12 :
Thanks for having uploaded the BIOS file.
Meanwhile I have done a look into it and didn’t find an NVMe Option ROM.
As you can see within the below left picture, there are 5 Option ROM modules within the BIOS:

No NVMe Option ROM.png

Intel GopDriver.png

Since none of the 2 Realtek (VEN_10EC) and 2 Intel (VEN_8086) modules can be the sought-after Samsung NVMe Option ROM, I extracted the 5th module (VendorID and DeviceID N/A) and opened it with an Hex Editor.
Result: As you can see within the above right picture, it is an Intel GopDriver and no Samsung NVMe Option ROM.

My conclusion:
If you really were able to boot off the Samsung SM951 NVMe SSD in LEGACY mode, there must be an NVMe Option ROM within the Firmware of the NVMe Controller.
I seriously doubt, that the injection has been done by Samsung.

Yes I had same issue on Asrock Z77 Pro4 BIOS. I couldn’t insert NvmExpressDxe_4 (too big) into DXE volume (csmcore) with MMTool, just inserting the small NvmExpressDxe_Small.ffs worked with MMTool.

However using UEFI-Tool 0.26 more manual method, e.g didn’t complain at all about inserting that NvmExpressDxe_4 int o Z77 Pro4 firmware volume, done exactly as Fernando described, after the last GUID of the found DXE volume
(UEFI Tool: ->File ->Open image file, small bar - select (All files (*)), klick on firmware file and klick open, expand double-clcking on “Intel Image”, then double-click on BIOS region:
text-search for “DXE” - clicking on ->File ->Search (STRG + F), select bar ->text ->text field ,type in “DXE” (while “Unicode” checkbox enabled),
then on the listed result-search-output at the UEFI_Tool-bottom-bar-window, double click on anyone selected result
then on GUID-group-tree result, scroll down to last XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX of the found DXE volume-hirarchy group, klick on that last of within that tree group, see here in one of the few last screenshots of adding nVME module on UEFI Tool method description from Fernando) then ->Action ->Insert after, navighate the NvmExpressDxe_4, open)
Keep in mind I’m not 100% sure if that gets an OK, functional modded BIOS, wheh MMTool rejects doing it, not tested in use yet, (see take caution counter measures I can do if firmware gets bricked, see below!! (Please see below)

Coparing modded Asrock Z77 Pro4 2.00 firmware with original firmware, I couldn’t notice any bad modding so far (firmware containing also no pad files/padding afaik), as Fernando recommended to compare original and modded BIOS file, that there’s no existing GUID/module/etc got missing from adding an .ffs module.

Firmware chip is DIL/DIP socketed (removable) and I have I hardware programmer to recover it in case s.th. goes wrong, orifginal Backup BIOS image already made with TL866 external programmer, as (Flash descriptor is locked, (Intel FPT Tool wouldn’t allow dump it “The CPU doesn’'t have access to …please modify the flash descriptor setting…”- which would need Realtek Audio chip Pin mod to unlock flash descriptor for EEPROM SPI access)

@Fernando :
Thx for info. Afaik it looks to me the nVME GOP driver is within the 8192-firmware, because when opening N24JU8M.14 with UBU (ubu.bat), it lists nVME GOP GUID when opening that 8 MebiByte firmware.

EDIT by Fernando: Unneeded parts of the fully quoted post removed (to save space)

What did the UBU tool find within the bigger sized BIOS?
Since an “NVMe GopDriver” doesn’t exist, the UBU tool wouldn’t be able to detect it.
A GopDriver is an UEFI module for the graphics adapter and has nothing to do with the NVMe or any other Storage Controller.

@Fernando :
Hm OK. Maybe I misunderstood you saying, that it was an Intel GOP instead of an NVMe option ROM. And you say, the nVME driver for boot-support, must be in the nVME controller firmware, or in southbride-chip and/CPU/else? I can’t judge, but thx for info :).
Anyway here’s UBU -Output, rechecked, sry you’re right was no GOP driver,
there’s listed instead "AMI NVMe GUID 634E8DB5-C432-43BE-A653-9CA2922CC458"
in UBU-cmd-window of "N24JU8M.14 8 MebiByte image"
at 3rd line of [EFI Drivers - Find and extract]
- see screenshot


Al least there’s some kind of nVME in the firmware image, see also UEFI-Tool-screenshots from post #5152, with several nvme-specific text listed (type “PEI module”: with nvme in name,
(PEI Module = an nvme module, for Windows Pre installation Environment ??)

Asking my father, he doubts that an/several nVME option-rom for the SSD and several SSD-mdoels were integrated in the firmwware for legacy mode, he concludes that nVME-support was integrated in an EFI module in the firmware, which would also supports nVME in legacy mode, or an via an extra nVME-UEFI-module which also provides nVME-driver for CSM, and CSM emulated via UEFI-firmware.
E.g. in your guide with MMtool method the nvme*.ffs e.g. is inserted in the CSMcore (CSMcore =Compatibilty support core module, correct? =e.g. used/also for BIOS-mode?), where also other DXE UEFI modules are.

But he +me, we’re only speculating.

So you saying “AMI NVMe GUID 634E8DB5-C432-43BE-A653-9CA2922CC458” was restricted supporting nVME-booting to UEFI-mode only?

I can’t judge, maybe you’d find out if that includes CSM/BIOS/Legacy -nVME-boot-support. I’m not so much experienced :).
Maybe helpful for others/ or as an addition this guide, to extract that “AMI NVMe GUID 634E8DB5-C432-43BE-A653-9CA2922CC458” from firmware image.
It could be useful to get nVME support also via Legacy mode (without SSD option ROM), on a firmware which just allowd it by UEFI-mode standardly.
So in my case you’re 100% sure there’s nothing to achieve to find an specific kind of area from the S506 firmware image, to allow that, to extract from S506 firmware, which could be integrated into other AMI Aptio firmwares?

EDIT by Fernando: Unneeded fully quoted post replaced by directly addressing to the author (to save space)

@Vincent12 :
What the UBU tool has detected was the UEFI mode "normal" AMI NVMe BIOS module named "nvme", which is within all BIOSes with natively full NVMe support.
You had posted its BIOS location within your first contribution to this topic.

You can do EFI booting from MBR, if your MB supports booting from your drive, you create a EFI partition for boot (with proper system/boot files on it), and you have OS that supports EFI booting (so Windows 7 or later).

@Vincent12 @Lost_N_BIOS @agentx007
Since this discussion has not much to do with the topic of >this< thread, I have moved all your contributions into this freshly created thread and tried to give it a meaningful name.
I hope, that this is ok for you.

Moving topicto other thread, no issue.

AH OK, if could/would extract that “AMI NVMe GUID 634E8DB5-C432-43BE-A653-9CA2922CC458” into an AMI Aptio firmware,
which hasn’t nVME support by standard,
would it work to make nVME bootable, e.g. in UEFI mode? [Edit] maybe only for native nVME support where maybe other needed nvme-parts are included together.[EDIT]
That was next question, why not taking that GUID instead of either one of those nvme*.ffs files, probably with that PATA stuff, but I didn’t understand so much described along about that anyway, and in which context, looked to me would make nVME bootable support at least for UEFI,
perhaps “maybe not ideal” modding method, if there was, if at all a “cleaner” “solution”.

I don’t know.
Anyhow, here’s “Asrock_Z77_Pro4_P2.00_(Upd.)Original-FW_EEPROM-Backup_TL866II_Plus_gut_ausgelesenmod-nvme-UEFI_Tool.zip”.
I added the bigger NvmExpressDxe_4.ffs module using UEFI Tool method, according your guide, without issues :slight_smile:
(Using MMTool method, MMTool complained it being too big to add it to CSMCore.)

Is this modded correctly? Anyway so far not seen any GUID missing, but admit to not have checked entirely all through.

(temporarily, will be removed later to save win-raid.com server space)
Firmware-Backup (Modded)

Firmware-Backup (Original):

Anyway I have a hardware programmer and those backups. So I can reflash, so I just could flash it and try it out. What stopped me to do it that I want to do everything perfect to get that legacy NvME boot support for SSDs without option ROM (cheaper)

Anyway thanks for any efforts and the help before. I’ll donate a least a bit for great forum. The guides helped. And that Realtek-Audio-chip pinmod worked liked a charm backuping firmware from aunt’s Acer laptop, (with normally locked flash descriptor by standard).

Asrock_Z77_Pro4_P2.00_(Upd.)_Original-FW_EEPROM-Backup_TL866II_Plus_gut_ausgelesen_mod-nvme-UEFI_Tool.zip (4.25 MB)

Asrock_Z77_Pro4_P2.00_(Upd.)_Original-FW_EEPROM-Backup_TL866II_Plus_gut_ausgelesen.zip (4.24 MB)

@Vincent12 :
Here are my answers to your questions:

  1. It is possible to extract the “normal” AMI NVMe UEFI (DXE Driver) module with the GUID 634E8DB5-C432-43BE-A653-9CA2922CC458 as file named Nvme.ffs from the BIOS of a similar mainboard and to insert it into the BIOS of a mainboard without native NVMe support, but I am not sure whether it will give your system full NVMe support.
    a) Although the “body” (PE32 image section) of the AMI NVMe UEFI module named “Nvme” may be identical, the GUID header, the “DXE dependency section” and the “User interface section” of the module may not match.
    b) It has not yet been tested, whether it is enough to insert the complete module named “Nvme” (file name: Nvme.ffs). Maybe the other 2 Nvme modules (named “NvmeInt13” and NvmeSmm) have to be inserted as complete FFS files as well. This would require much more available space within the “DXE Driver Volume” of the BIOS.
  2. Yes, the NvmExpressDxe_4.ffs file has been inserted correctly.

By the way: The archive named N24JU8M.zip, which you had attached to your post #4, doesn’t contain any “extracted ORom.bin” file. It is neither an Option Rom module (only active in Legacy mode) nor a “bin” file. In reality is a “pure” Nvme.efi UEFI file (without header).
Question: Which file did you extract from which BIOS?

[Edit] I have a few other mainboards, I could test: Gigabyte Z77X-UD5H, Asrock Z77-Pro4, MSI ZHA77-G43, Foxconn H61-M, Intel S1200BTL.

I didn’t extract anything yet from anywhere (nowhere), as I don’t have much knowledge how to do it properly.
I opened “N24JU8M.14” in UEFI-Tool and did a text search for “nvme” in UEFI-Tool.
At the bottom bar, thje result is, that it lists many lines with different offsets.

I’ve double clicked each resulting lines.
If I’ve looked through correctly all result lines from the UEFI-Tool bottom bar, there’d be 4 lines with “nvme” in name, afaik under 4 different GUIDs.

When I open the “N24JU8M.14” in UEFI-BIOS-Updater (UBU) by UBU.bat, it lists “AMI NVMe GUID 634E8DB5-C432-43BE-A653-9CA2922CC458” (as told), that GUID is also listed in one result of UEFI-Tool from the text-seach for “nvme” (see above).

The other found GUIDs from result from text search for “nvme” from UEFI-Tool are not listed by UBU.

See screenshot.

If that has anything important to mean, I cannot determine, and UBU makes use of UEFI-Tool anyway (?) (afaik) already when starting UBU (?), so if yes it should already see all those different GUIDs with “nvme” in name,
one in UEFI-Tool saw was ; 1st GUID “PEI-module” (NvmeRecovery) (not listed by UBU); 2nd GUID “SMM Module” (NvmeSmm) (not displayed by UBU); 3rd GUID “DXE Driver” (Nvme) (listed by UBU); 4th GUID “DXE driver” (NvmeInt13) (not shown by UBU).

There are also more resulting lines in the UEFI-Tool bottom bar from text search for “nvme”, when double klicking those they don’t contain “nvme” in name, but also those lines are found in the resulting bar from text search.

If all that has anything to mean I don’t know. Maybe this helps, but I doubt that I’m very helpful, really complicated stuff all that, I suppose.

[Edit] Anyway I hope not to misunderstand, as if you would not have written about those module, as you described in ealier post. Just saw that UBU doesn’t list the other UUIDs “nvme”. So those and the not named found in the text field could be dependencies?

And there could be other dependecies inside, that are not named for “nvme”, and it is probably difficult to find out which all those are needed for extraction?
I could test extracting, and insert it into Z77 Pro4 firmware, which afaik wouldn’t have an nvme option ROM by standard, and see if nvme legacy boot wotks, at least UBU didn’t list a GUID with “nvme” in comparison to my S506 BIOS.
I don’t have an nvme SSD to test, hate to open up my Laptop (some plastic got break off, but still also hold by 16 screws, so should be OK), anyway till my father would buy a spare SSD for backup, I could test it,
but I wouldn’t find out without guidance how to extract the correct areas of the image to test on Asrock Z77 Pro4.
[Edit] I’m Sry for bad expressing.

So you’ve not found any Option Rom-ROM in the firmware? So either nvme-legacy-boot somewhere hidden in the firmware within firmware code, maybe not marked? And/or couldm be hidden it’s NVME-Controller in the southbridge CPU/controller?
Or I’d have another variant of SM951-nnme, which could have an option ROM?

My father thinks it could be an UEFI-module, which also delivers drivers in CSM-mode.
But that is probably couldn’t be, if the standard “AMI NVMe UEFI (DXE Driver) module with the GUID 634E8DB5-C432-43BE-A653-9CA2922CC458” you said most firmwares would have, which would not make nvme in legacy mode anyway. Except we oversaw another EFI module which would deliver nvme functions in BIOS/CSM/legacy-mode. The argumentation mfrom my father would be, that the firmware would UEFI anyway, and the legacy-mode would be provided by some kind of EFI-firmware-sub-code or how to call it, which provides drivers’ so that in legacy mode devices are detected as well, so that it could be even embedded together with single EFI driver, or an extra one (for legacy), which could be still be/appear as an EFI driver.
But I don’t know.

Is CSM/BIOS/legacy mode drivers provided by UEFI-modules? If yes, for everything, or does the legacy mode have its own modules, not used by UEFI-modules (or how to call it) ?

Yes. Afaik the mainboard still needs UEFI, but in any case very useful if you don’t want to repartition with GPT and while able to boot from nvme, if MB only supports that for UEFI mode.

I found a guide, you can even partition a drive with GPT and boot WIndows from that in legacy mode, e.g. useful for legacy PCs (which don’t have UEFI), useful if you want to use a HDD over 2 TebiByte for BIOS-PCs.
Windows has still to be installed in MBR mode. (But you can use e.g. Hybrid-MBR with GPT for that, enter any GPT partition (needs to be in first 2TebiByte area) into a Hybrid-MBR temporarily, building Hybrid-MBR from GPT-table, (position protected MBR/MBR =sector 0).
You still need a 2nd storage drive, e.g. USB flash drive where the Windows boot files are stored.
After Windows installation I remove the Hybrid-MBR from (GPT+Hybrid-MBR) so that it is back pure GPT alone (with changing back protected (fake) partition table over whole storage area). Then copy the boot files from drive C: to USB flash drive Boot partition.
With Hybrid-MBR+GPT, Windows will list partitions which go over the 2TiByte area, or those fully in behind, but incorrectly (=but as nonsense splitted untilto 2TebiByte mark, and 2nd part then after). Making back GPT (without any reformatting necessary) by alone resolves this. Probably the Windows BCD has to be repaired, then it boots with pure GPT from legacy mode via WIndows-bootmanager chainloading from USB flash drive, booting then into Windows-C: from GPT-strorage :slight_smile:
All those guides in internet use more comlicated way via MBR table only, installing WIndows and converting to GPT, I find GPT+Hybrid-MBR as in the first place-method easier. :slight_smile:
OK WIn C: limited to 2TebiByte area, but I anyway don’t need so big C: drive, and I can use now data partitions behind 2 TebiB, once Windows is booted. Maybe a Grub-AHCI module driver in GRUB instead using BIOS-fucntions makes work to boot even behind 2 TebiByte in legacy mode.


Yes, the UEFI BIOS Updater (=UBU) uses even 2 different UEFITool versions.

The UBU tool doesn’t look for modules with the word “nvme” in it, but just for the presence of an EFI module (= DXE Driver), which is required to boot off an NVMe SSD. This is either the “standard” AMI NVMe module named “Nvme”, which usually has been put into the BIOS by the manufacturer of the mainboard, or another NVMe module with a similar function (like the “NvmExpressDxe_4” one). The BIOS EFI modules named “NvmeRecovery”, “NvmeSmm” and “NvmeInt13” have other tasks and are not essential for the option “Boot off an NVMe SSD”.

Samsung 950 Pro, 960 Pro/EVO, 970 Pro/EVO boot Legacy + MBR


Do you succeed to boot XP SP3 in legacy mode via MBR from a 960 Pro


Never tried installing XP on an NVMe drive. Only Win 7, 8.1, 10