[Guide] NVMe-boot for systems with legacy BIOS and UEFI board (DUET-REFIND)


I got a intel s5520c motherboard and want to boot from nvme.
I found out it apparently is UEFI. and it uses Aptio.
so I tried modding the bios with MMtool but when I open my update or recovery file for the bios the CSMCORE file is not present anywhere,

any tips?

@sebaskitty :
What lets you think, that a visible entry "CSMCORE" within the BIOS is necessary for being able to boot off an NVMe SSD?

well all the guides for bios modding it tell about the CSMCORE and doesnt tell about any other ways.

i tried clover and refind and the nvme drive with a uefi windows install shows up but the entire system freezes booting the install (when trying to install windows installer freezes at copying files 0%)

DUET is not compatible with VMWARE since by itself VMWARE incorporate a DUET rework of sort for it’s own BIOS option management.
Other virtualization infrastructure might require the PS2 keyboard\mouse DXE found within the [ZIP]\DUET_EDK2020_REFIND\DUET\EFI\Drivers to be manually dropped in the [USB]\EFI\Boot\drivers

You need to do a clean install with untouched installation media and CLEAN USB drive, to migrate an previously know to work OS you need to convert to GPT.
Not all installation can be migrated without issue, it depend by the integrity of the core and recovery files and software used, driver, hives and other things can be broken or damaged behind repair or disallow the installer to write it’s files.

Your board can be modified but it’s a task which require comprehension of stuff.
Just follow either mode of the previous post from the beginning to the end and accomplish a clean install to understand the basic.
There nothing to gain by using an upgraded OS or by salvaging an broken MBR installation.

If the OS or the USB media freeze during the install it mean something is not as it should, damaged or corrupted or not compatible with the UEFI requirement.

Download the DUET (EDK2020) version and connect the Windows installation USB media made by Rufus.
• Start the USBSetup application and select the USB media made by Rufus.
• Remove all information, partitions and the MBR bootloader made by Rufus from the USB drive by clicking on: CLEAN
• Once done disconnect the USB, close the USBSetup application and follow just one of the text below.

[BIOS] UEFI boot option set to DISABLED:

Booting the NVME drive from non-UEFI legacy board - DUET with optional REFIND - with USBSetup:

1) Connect a USB flash drive and start the USBSetup application

2) Select the USB flash drive letter from the drop-down combo box

    The following step will completely remove all information and partitions on the selected USB flash drive

3) Remove all information and partitions from the drive by clicking on: CLEAN

4) Format the selected drive by clicking on: FORMAT

5) Make the selected drive bootable by clicking on: BOOT

6) Disconnect and plug back the USB flash drive.

7) Copy the required DUET files by clicking on: DUET

8) Copy the optional graphical boot manager REFIND by clicking on: REFIND

9) Connect the USB on the target system and set Boot from USB as the first option in your system BIOS Boot order

[BIOS] UEFI boot option set to ENABLED:

Booting the NVME drive from UEFI capable board - REFIND mass-storage without DUET - with USBSetup:

1) Connect a USB flash drive and start the USBSetup application

2) Select the USB flash drive letter from the drop-down combo box

    The following step will completely remove all information and partitions on the selected USB flash drive

3) Remove all information and partitions from the drive by clicking on: CLEAN

4) Optional format the selected drive by clicking on: FORMAT

5) Copy the graphical boot manager REFIND by clicking on: REFIND

6) Connect the USB on the target system and set Boot from USB as the first option in your system BIOS Boot order

How to CLEAN install WINDOWS 10
• Download the windows 10 media creation tool and make the WIN10 ESD-USB directly from the media creation tool.
• Boot the PC with the DUET USB connected and wait for it to reach the graphical boot manager.
• Connect the WINDOWS 10 ESD-USB and refresh the visual representation list by hitting the ESC keyboard KEY to make the “Boot Fallbcak boot loader from ESD-USB” option appear.
• Launch the EFI WINDOWS 10 installer from the WINDOWS 10 ESD-USB by selecting the “Boot Fallbcak boot loader from ESD-USB”.
• Select CUSTOM: Install Windows only (advanced) on the next screen delete all the partition till the NVME drive show as “Drive 0 Unallocated Space” and select NEXT, YES, NEXT.
• Once the Windows Setup screen end copying and installing Windows disconnect the WINDOWS 10 ESD-USB before it self-reboot. On some legacy board this is required.

@sebaskitty :
Those sound like questions that should be posted in the Clover or Refind threads, there those guys will be able to help you with that.
To modify Intel BIOS you need to dump it with flash programmer, then modified, then program back.

What board do you actually have anyway? Your title says s5520hc, then later you say s5520c, when I look up this board it also offers me s5520sc
So, before I can even look at your BIOS I need to know the model But, what I said above generally applies to 99% of Intel BIOS

CMSCore is only mentioned in NVME guide because that is an easy way for user to recognize they are editing/inserting into the correct BIOS volume (DXE)
But, not all BIOS have CMSCore module, and as Fernando said above CMSCore doesn’t have anything to do with NVME booting or not.
Setup or SetupUtility module would have been a better choice for the guide to help users locate correct DXE volume to do the NVME insert

@sebaskitty :
Due to the fact, that
a) you had written into 2 different threads the same questions and
b) your separate thread about the missing CSMCORE module didn’t make any sense (you obviously misunderstood the related part of >this< guide),
I have moved all posts of your separate thread into this one, where you posted first of all (and got already replies from noInk).
Here is an excerpt of the CSMCORE related part of my guide:


i’ll run over it again.
i’ve been at this for the past 2 days and i basically fell asleep last night while thinking about solutions
the stuff that complicates this is the fact the UEFI booting seems broken
this guy happens to have the same problems as me https://www.reddit.com/r/homelab/comment…fi_boot_issues/

@Lost_N_BIOS :

my motherboard is a INTEL S5520HC ( https://ark.intel.com/content/www/us/en/…rd-s5520hc.html )
it uses s55xx bios and uses .fv for bios files.
this system is running the latest 2018 bios after I noticed a newer bios had “fan control” (stil shit but ok)
it seems to have 2 downloads
BIOS update (EFI update)
and bios recovery (this motherboard allows flash back incase of corruption like modern gaming boards)

so for clarity. this motherboard does not install UEFI windows versions with original installation drives and it wil freeze during bootloader write it seems.
putting the board in EFI only mode breaks video out.

what I also have noticed is everything in the bios files are located on one volume to begin with. it only has vol index 00

hmm i tried just adding the module to the only volume and it flashed (it automatically detects the startup.nsh the flasher comes with) and it seemed to flash ok. copy. reboot. then flash. reboot. but nothing anywhere about the nvme afterwards

but to be honest would you recomend me returning the ssd. and buy 2 ssd’s to raid 0 them instead.? this board seems to have sata 2. and my sata 3 card is not shows during boot up but my sata 2 card does


It seems you are trying to do something without following the full process procedure.
Is that the same hardware machine of the reddit user?

RAID on 1366 can cause problem it depend by how the chipset was deployed, usually it does if the provided driver uses an unsupported message-signaled interrupts number.
A RAID EFI DXE can also cause issue if used with DUET, disable RAID or set the controller to AHCI to determine if the board uses an unsupported MessageNumberLimit.

Are you trying REFIND with the “UEFI boot” or DUET+REFIND without the “UEFI boot”?
Do as I wrote in the previous post.

If the OS isntaller USB MBR was previously modified with something, or it hold other unknown bootable information run the CLEAN command of DISKPART or use the CLEAN function of USBSetup.
Doesn’t matter if the USB is capable to install the OS on other system without freezing. Make again the USB directly from the windows 10 media creation tool.

If you got either DUET or REFIND to run take a screen of the INFO page and from the shell type;

dmem > dmem.txt
memmap > memmap.txt
smbiosview > smbiosview.txt
map > map.txt

and post a zip with the screen and the text result found on the USB root directory

I intend to upgrade my computer with NVMe SSD via the PCIe bus and I have used instructions in this thread. I have a UFD Sandisk Ultra USB 3.0 16GB that after many different attempts I finally managed to boot with. I have used “DUET_EDK2020_REFIND”.

My thoughts are to use a PCIe adapter for 2 M.2 SSD:s and run RAID 1, is it possible?

I haven’t bought NVMe - PCIe adapter yet or NVMe SSD, suggestions are gratefully received and why this recommendation.

Optimum would be UFEI boot (modified bios), I can always dream on.


DUET doesn’t provide direct RAID boot support.
An RAID|SATA DXE with such functionality must be provided and placed within the [USB]\EFI\Boot\drivers directory.
Usually on legacy (NON-UEFI) the same revision of the OROM would suffice to make the RAID mapped as bootable but it’s not guaranteed to work.
See on the first page RAID and TIPS OLD - TO BE DELETED on the last spoiler.

@noInk :
i tried both
UEFI boot and the non bootable UEFI according to the guide.

if i boot the installer from the non boot UEFI method it boots the installer when selecting it in efi mode.
it sees and boots the windows installer and it allows me to clean the nvme drive and click install on the selected drive.
but the installer freezes after 1 to 2 mins at 0% copying file (i opened command pompt and that also froze)

the other bootable method seems to be iffy in terms of bootability.

sometimes it wil load but most of the times it wil be stuck on a blinking cursor when trying to boot it in legacy mode (clover method gives me a 0ARTERROR when trying to boot in legacy. efi works fine but same results as above)

the sata controller is set in AHCI mode with AHCI Option ROM enabled

the windows install disk is made from a clean iso that came from microsoft directly (media creation tool) and then used rufus to make either a mbr installer or GPT installer (The GPT installer is the one that wil freeze. mbr installs fine on the nvme drive but cant boot the drive after first reboot)

i wil now recreate another usb drive to give you the required information

EDIT by Fernando: Unneeded fully quoted post replaced by directly addressing to the author and unneeded blank lines removed (to save space and for better readability)

uhh ok small update.

i grabbed a old usb drive i had laying around (i decided against using it before as the pcb is the only thing left of it)

and made a bootable usb and it showed my nvme drive. my keyboard stopped working again but my mouse worked so for the heck of it i selected the nvme drive (wich houses a vmware install of windows 10 UEFI) and it booted right away…

it did a few updates and i’m in windows on the native nvme.

so far the problem seems to be.

my 1440p screen is stuck at 640x480. and my rtx is not showing up (maybe driver reinstall?)

also since i do not have a keyboard in refind i cannot get the information you requested… i’ll make a 2nd usb drive real quick for UEFI booting to gather the information.


What about the “make the USB directly from the windows 10 media creation tool” is hard to understand?
Make the USB with the windows installation files directly from the windows 10 media creation tool.

You shouldn’t use any other application except for the windows 10 media creation tool to make the USB with the WIN10 media installation files on the USB, especially if custom bootloader are wrote on the USB like RUFUS does.
If the USB has been used with RUFUS or anything holding another kind of OS installer: a FORMAT would be USELESS if wrong stuff are wrote one time on it > use the CLEAN function of DISKPART.
Again, follow what has been already wrote. like 5 time directly at you.

RUFUS write it’s own bootloader on the USB and that’s it’s not definitely supported.

Anything going on after the OS is loaded it’s on you shoulder.
RTX doesn’t work? send it back to nvidia.

i got the gpu working by reinstalling gpu drivers and disabling the onboard gpu.

i do have something very weird though.

all the sata ports on the machine is now running at ATA speeds. with 150mb read and write max when booted from REFIND with the NVME drive as boot drive

the bios should still be set to AHCI mode (wil double check right now)

any tips?

This isnt as much of a problem for the 2 and 4tb hdds in the machine as they max themselves out between 150 and 200 anyways

but i do plan on using 1 or 2 500 gb ssd’s for faster storage for higher demand files…

i ran hd tune real quick and it reports the following on a 500gb ssd connected to sata

Standard ATA/ATAPI-0 - SATA II

Supported UDMA Mode 6 (Ultra ATA/133)


Active UDMA Mode 5 (Ultra ATA/100)

i wil run a ouple of driver updates to see if that changed anything. if nothing else i wil reinstall the os using media creation tool fully clean

@noInk ok i got the files.

after some testing i noticed a “dumb” usb keyboard does work in the refind window so i got my hands on the files needed

maybe that these files wil also help finding out why internal sata is running in ide mode right now (i checked the bios and indeed AHCI was stil on)

windows had no updates apart from a samsung nvme controller update it fails to install. also samsung magician crashes opun load. but those are not really needed for function as the drive already hits nearly the pcie 4x gen 2 speed limits

i’ll head to bed now as its nearly 1 am again… i’ve had enough of this for today :stuck_out_tongue:

Desktop.rar (290 KB)


That’s pretty much the SATA 2 speed of non-raid (single) mechanical disk on the ICH9/10.
If you put those disk in RAID you will saturate the available bandwidth around 195-220.
A good NVME should range from 900-2100 on that platform.
Do a clean OS install, nothing should crash.


I have read somewhere that if the use of an NVMe - PCI adapter with 2 (or more) NVMe SSD then bifurcation is needed, otherwise it only shows one disk in the system. Does your suggestion works anyway without bifurcation or is that needed in the drivers I should add in Drivers directory?

Which NVMe - PCI adapters should I avoid, because they don’t work for me or it’s possible the most work with right drivers I my system?

I have a Win10pro up and running for now on an Intel SSD SATA with ACHI mode but when I install a new clean Win10pro on some new NVMe SSD should I change BOIS settings from ACHI mode?

If a RAID solution will be a little tricky for me, then I can always try a single NVMe ssd.

I’m not an advanced user so If you can be a little more clear to me, “Point with the whole hand” I would appreciate that very much.

yeah i wil create a installer right now using the media creation tool. (should work fingers crossed)

before i ran on nvme all my hdds copy between 150 and 250 and my data ssd’s maxed out at roughly 300mbs (wich is the absolute max sata 2 can do)

now when booting from nvme. both my data ssd and mechanical drives are hitting the 150mb bottleneck

can refind cause the sata controller to go back to ATA speeds when its booting from gpt on nvme?

i do not plan on running any drives in raid (the raid 0 was a alternative option if i had to return the nvme drive)


If the bifurcation is available it allow to use more then one device on the same PCI lane.
Most of the X58 board should support bifurcation. Avoid cheap adapter with multiple function or with external power requirement.
Windows 10 should be able to change mode without requiring the user intervention.
NVME RAID is not supported by the ICH OROM.


I don’t know, to me it seems the right speed for an ICH9/10 in SATAII, power setting, EIST and pretty much any other CPU related settings might also affect the throughput on your board.
Shouldn’t really matter but you are running UEFI with different timer and generic platform and driver on top of your board specialized EFI.
Your better ready available option is to make the customized REFIND to work without DUET with the UEFI boot to ENABLE.