NVMe for 2013 - 2017 Windows PCs

signal processing, XR, sim racing, microscopes, STM32 and ESP32 projects


NVMe for 2013 - 2017 Windows PCs

updated 21 Feb 2022

Background

Hard drive data rate is a key performance limitation in PCs originally delivered with Windows 8.
Many of these PCs from 2013 have motherboards with PCIe slots for discrete GPUs,
but instead drive displays from CPU integrated graphics controllers.
While Windows performance in these PCs can be improved using SSD with SATA interface,
noticeably better performance is possible using SSD with NVMe interface,
which offers both higher I/O data rate and lower processing overhead.

However, NVMe wants 4 lanes of PCIe, which was available on most motherboards only by a single card slot nominally provided for a discrete graphics card.
Further, BIOS support for booting from NVMe was generally unavailable before 2017.
Meanwhile, many PCIe motherboards have single-channel PCIe card slots appropriate for M.2 SATA adapters.

Some (mostly older Samsung) NVMe SSDs incorporate ROM for BIOS (AKA CSM or OpROM) booting,
but Windows boots faster using UEFI.
While it is possible to modify some PC BIOS to add NVMe boot support,
that process is IMO tedious and risks bricking the PC.

The rest of this page is about using
CLOVER on a USB 3.0 thumb drive to boot Windows 10 from M.2 NVMe
in 2013-2017 desktop PCs with PCIe but without NVMe in BIOS.

Requirements

Perspective

CLOVER is among the more recent utilities used mainly for Hackintosh;
ability to boot Windows from NVMe is incidental.
Consequently, configuring NVMe boot support requires extra steps.
While this is much discussed in the Win-Raid Forum,
a succinct description using BDUtility was found in the Dell Optiplex Desktops community
Actual location for the essential NvmExpressDxe-64.efi driver seemingly varies considerably
and may require additional research, trial and error for other CLOVER versions.

Procedure

  • Update PC BIOS to the current version
    For Dell Inspiron 3847, that BIOS is A11 7/31/2019.
  • Install NVMe on PCIe adapter, then install it in the PC.
    Gold P31
  • Boot existing Windows 10 and confirm that NVMe drive is recognized.
    • Windows 10 has built-in NVMe support.
  • Using Disk Management, set GPT on it.
  • Download Windows 10 installation media tool and create installation media on a USB drive.
  • To avoid installation accidents, unplug the PC’s regular hard drives.
  • Boot that installation media USB drive and install Windows 10 on the NVMe drive
    • Booting to that thumb drive require USB boot priority in BIOS.
    • Windows 10 installation media does not use BIOS to access NVMe.
    • When selecting that NVMe drive during the Windows installation process,
      delete any displayed partitions, allowing installation to create its own partitions.
    • At some point, the installation procedure will attempt to reboot to the NVMe drive,
      which will fail, if this PC indeed lacks NVMe boot support.
      This is OK; NVMe Windows 10 installation will complete after a CLOVER thumb drive is created and installed.
  • Unplug the Windows installation thumb drive.
  • Reconnect the regular hard drives
  • Reboot to the original Windows drive.
  • Plug in the USB thumb drive, download and run BDUtility on it.
    BDUtility will install CLOVER to a USB flash drive
    and configure CLOVER for this system.
    • launch BDUtility.exe
    • highlight the flash drive
    • click [Format Disk]
      warning
    • this not only [re]formats the flash drive,
      but also downloads and installs CLOVER on it.
      That all takes awhile; wait for All done:
      BDU screen
  • Copy CLOVER’s NVMe driver to appropriate folders in that flash drive:
    • Using Windows Explorer, navigate on that flash drive
      Explorer window
      to EFI > CLOVER.
    • from EFI > CLOVER > drivers > off, copy NvmExpressDxe-64.efi
      copy
      to both:
      EFI > CLOVER > drivers > UEFI
      and
      EFI > CLOVER > drivers > BIOS
      UEFI
  • For the PC to boot from CLOVER USB flash,
    not only must USB drives have first boot priority,
    but BIOS must also have Secure Boot and CSM (Load Legacy OPROM) disabled:
    BIOS BOOT menu
  • F10 (on Dell) to save and exit BIOS,
    which should then boot to CLOVER,
    which will display a set of partitions, some of which may fail to boot
    (in which case, power off and try again)
    • one option should boot the the original Windows 10
    • another option should boot to the NVMe partition and complete Windows 10 installation
      • if the NVMe partition option is unshown, that means
        CLOVER did NOT load its NvmExpressDxe-64.efi driver,
        and that version of CLOVER searches elsewhere for drivers;
        check newer entries in the Win-Raid Forum
    • CLOVER records the most recent selection option and defaults to it subsequently.
  • Edit \EFI\CLOVER\config.plist, changing the Timeout value:
    <key>Timeout</key>
    <integer>5</integer>
    

    Reducing 5 to 1 or 2 will boot 3 or 4 seconds faster.

CLOVER references