[Problem] Apple SSD doesn't work with Windows

Thanks for compiling this guide Fernando. I have been following the thread for a few months and recently received my CH341a to attempt this myself. I have an H61 chipset MS-7782 with a Winbond W25Q64FV.

I have followed the guide to the letter using AsProgrammer and UEFITool, flashing separate BIOSes to test with both the small and larger drivers respectively.

For both I am getting the message:

Copyright (C) 2000-2011 Broadcom Corporation
Copyright (C) 1997-2000 Intel Corporation
All rights reserved.
PXE-E61: Media test failure, check cable
PXE-M0F: Exiting Broadcom PXE ROM.

ERROR: No boot disk has been detected or the disk has failed.

I have been able to freshly install Ubuntu to the drive from a LiveCD, so the drive is operational. Might I have missed something?

I have uploaded my original and modded BIOSes here if useful.

Thank you.

@Lorenzo
Did you dumped the new flashed bios and confirmed the NVMe module in it?
You may missed the part of the guide related to: Step 4 - Installation of the OS onto the NVMe SSD

Small variant mod seems bad, the 5 variant seems OK, pad and DXE insertion.

By the way, since you have a programmer, why not using a mod on the latest 8.15 (18 de set de 2014) bios revision, your backup is 8.13 (23 de out de 2013)

@Lorenzo:
Welcome to the Win-RAID Forum!
MeatWar’s last post has obviously been addressed to you.
Happy New Year!
Dieter (alias Fernando)

@MeatWar:
Please mention to whom you reply. Thanks!

@MeatWar
Thank you, dumped and double checked - DXE 5 driver is present.

For Step 4 Windows installer shows NVMe drive. I deleted existing partitions from here, freshly installed Windows, but after removing Rufus USB and rebooting I get the same PXE-E61 and PXE-M0F errors as before. ‘Windows Boot Manager’ is top of Boot Order in ‘UEFI Boot Sources’.

I should note, that in Part A of Step 4 I don’t have a “PATA” or “PATA_SS” listed. For ‘Legacy Boot Sources’ I have ‘Hard Drive’ and ‘Network Controller’ only.

Thanks for advice on BIOS revision. I have updated to v8.15, modded, reflashed and dumped to double check. DXE 5 driver is present, but still getting those PXE errors as above. Original and modded v8.15 BIOSes here if useful.

@Fernando
Thank you - long time lurker, first time poster :slight_smile: Happy new year!

@Lorenzo:
As MeatWar already has posted your modded BIODS named new_bios_dxe_5.bin seems to be fine (I checked it myself and agree with him). So you should definitively be able to get Win10 or Win11 installed onto the NVMe SSD after having successfully flashed the modded BIOS.

Are you sure, that the OS has been installed before you removed the Rufus USB stick? This procedure at least needs 1 reboot.

If a “PATA” drive should not be listed wthin the BIOS as bootable device after having enabled CSM, the flashing of the modded BIOS hasn’t been successful.

@Fernando
Thanks for checking - with AsProgrammer I erased IC, verified blank check, reflashed checked new_bios_dxe_5.bin BIOS back and verified, reinstalled Windows, removed Rufus USB, rebooted twice and still getting the same PXE errors.

What should I try next with no “PATA” drive listed? I’ve attached image Boot Order in BIOS:

I can’t see a CSM option in the BIOS screen but Legacy Support is enabled in the Secure Boot Configuration screen:

I may try erasing and reflashing with SkyGz’s CH341a Programmer shortly just to rule out any potential issue flashing with AsProgrammer. The BIOS loads though, so I assume flashing was successful? EDIT: same result using ‘CH341a Programmer’.

Thank you

You can check the success/failure of your recent BIOS flash by doing a complete backup of your HP mainboard’s chip BIOS Region or SPI content. The BIOS Region should contain the NvmExpressDxe_5 module.
Furthermore you should check

  • the connection of the NVMe SSD (is it currently shown within the “Disks” section of the Device Manager?),
  • the quality of the HP device’s Power Supply Unit (powering-on the PC with several connected disk drives needs more power),
  • the required BIOS settings and
  • the “Step 4” advices of my Guide (first post), that means: disconnection of the previously used system drive while tryingto get the OS installed onto the NVMe SSD.

That HP has enough power, now as Fernando and i already mentioned, verify the current flashed mod bios.
Further bla bla is irrelevant till then.
If indeed the module is present, Disable secure boot, clear HP keys (loaded back again after 3rd boot) and disable Legacy Support, if the OS iso is correctly done in the USB, install will be successful.

@Fernando
Ok great - the flash was definitely successful and BIOS dump contains the NvmExpressDxe_5 module:

The NVMe SSD is connected and working properly:

The PSU is 300w, tested with 1 x spinning rust and 1 x SSD with no issues.

Disconnected rust drive to install Windows to SSD, Windows installer run through installation all fine.

@MeatWar
Thanks - just saw your reply pop up. Will try this next.

According to your attached last picture your NVMe SSD is an Apple one. That may be the reason for your troubles to get it detected while booting.
Please do a look into >this< thread.

@Fernando
This is very interesting, thank you - as it is a Sandisk drive (12+16 pin, Marvell controller) following the other poster’s link I believe it is Gen 3, so AHCI. So the NVMe BIOS mod is not required at all? Strange why it isn’t booting, in that case.

Following that linked thread and Ethaniel’s advice, UEFI Shell shows the NvmExpressDxe_5 driver loaded (at part FC) but if I understand correctly the map command is not showing the SSD; FS0 and FS1 appear to be the Rufus USB and blank USB for text output file storage respectively.
uefi_shell_pre_biosblackiodxe_unload.zip (14.3 KB)

BIOSBLKIO (at 119) is shown, but the description is <null string>. The command unload 119 returns Result Unsupported.

Livebooting Ubuntu and running sudo lspci I believe shows the PCI card at 02:00.0 and lsblk shows the SSD at sda:


Running connect -r returns Connect - Handle [130] Result Success.

However running devices I can’t find PciRoot(0x1)/Pci(0x0,0x0) per Ethaniel’s advice on the other thread.
devices.txt.zip (772 Bytes)
— Just read further down the thread, could PciRoot(0x0)/Pci(0x1c,0x0) be it? —

lspci -PP and lspci -t return the following:


I’m not sure what to try next as it looks like Ethaniel’s debugging efi’s may have been specific to ducks_utki’s Samsung drive. I can reply on the other thread if this is best continued there.

@Lorenzo
To find out the reason why your “Apple SSD” resp. its Storage Controller hasn’t been detected by the OS Setup I recommend to do the following:

  1. Connect the SSD to any PC, which is able to boot Win10 or Win11.
  2. Run the Device Manager of the PC and expand the “Storage Controllers” section (if applicable).
  3. Check and post the HardwareIDs if all listed “Unknown Devices” and “Controllers”
    (Right-click onto them > “Properties” > “Details” > “Property” > “HardwareIDs”)

The only Storage Controller listed is Microsoft Storage Spaces Controller

The HardwareID is Root\Spaceport

@Lorenzo
Thanks for your quick reply, which confirms, that your “Apple SSD” is not an NVMe one (doesn’t use the NVMe data transfer protocol).
Please look into the “IDE ATA/ATAPI Controllers” section and check the HardwareIDs of the listed AHCI Controllers.

Fernando sorry for steeping in.

@Lorenzo
Now that you told us, finally what hardware you have, nothing else to do besides doing a fresh OS install in the Apple SSD (not NVMe and no MOD needed), now is it still Apple APFS/HFS file system or already GPT/NTFS?

In windows environment an SSD with Apple file system disk will only be visible, as you presented, in the device manager, but not visible as normal disk in windows explorer.
Free partition apps around can manage/convert to windows disks.
As Apple file system it will not be visible in bios boot manager, or as a storage disk only.

Upon the windows setup (as UEFI) you can also manage this (cant deal with some OEM hidden partitions), by deleting Apple partitions and proceed to Windows OS installation, if indeed the OS setup can identify the SSD in the mounted pcie m.2 adaptor, for troubleshooting disconnect other disks during setup, besides the USB OS setup drive.

In windows drivers, the SSD will be using standard AHCI OOBE from Microsoft or Intel RST12/13 drivers if later installed.

What more doubts do you have now?

@Lorenzo @MeatWar
Since it turned out, that Lorenzo’s help request has nothing to do with the topic of >this< thread, I have moved the related discussion into a separate thread.

@Lorenzo
As I already told you, you should check the HardwareIDs of the AHCI Controller, which is within the SSD.
If it should be a Samsung AHCI Controller, you may have to insert the SAMSUNG_M2_DXE module into the mainboard BIOS to get the SSD bootable. You can find the related guide >here<.

@Fernando @MeatWar
Thanks both.

At “IDE ATA/ATAPI Controllers” section of Device Manager the HardwareIDs of the AHCI Controllers are:


BIOS flashed back to v8.15, original and unmodded. Disconnected rust drive, only SSD and USB stick connected. Rufus Win10 stick GPT, UEFI. In Win10 installer deleted existing partitions on Apple SSD (back to Drive 0 Unallocated Space) and reinstalled Win10, all defaults to NTFS. Rebooted twice, still getting error messages

PXE-E61: Media test failure, check cable
PXE-M0F: Exiting Broadcom PXE ROM.

ERROR: No boot disk has been detected or the disk has failed.

From Win10 rust drive boot, Apple SSD shows in Explorer. Able to read/write to disk.


In Device Manager → APPLE SSD → Properties → Driver, Driver Provider is Microsoft.

In Device Manager → IDE ATA/ATAPI Controllers → Standard SATA AHCI Controller Properties → Driver, the Driver Provider for both is Microsoft.

@Fernando
Thanks for link to [Guide] How to get M.2/PCIe connected Samsung AHCI SSDs bootable?, will try this next.

Thank you

The Controller with the HardwareIDs VEN_8086%DEV_1C02 is the mainboard’s on-board “Intel(R) Desktop/Workstation/Server Express Chipset SATA AHCI Controller”. Any HDD/SSD, which is connected to one of the Intel SATA ports, is bootable. Since your Apple SATA SSD has the M.2 format, you can only connect it to a PCIe slot via adapter.
The other Controller with the HardwareIDs VEN_1B4B&DEV_9183 is a Marvell 88SE9220 PCIe SSD AHCI Controller. I don’t know whether you will get the Apple SSD bootable by inserting the SAMSUNG_M2_DXE module into the mainboard BIOS. What you may need is a MARVELL_M2_DXE module. Ask Apple for it.

@Fernando @MeatWar

Thank you both for all your help. The Apple SSD now boots!

I added the Samsung DXE Module to my v8.15 BIOS following Fernando’s guide as previously.

So can confirm the Sandisk drive SD0128F from an A1466 is compatible with the Samsung driver. I understand from DavidXanatos’s link from another thread all Generation 3 drives share the same controller, so perhaps all may be compatible with this module.

2 Likes

Just to update, as the mod to the HP BIOS was successful I thought I’d try the same on my Dell Optiplex 3020 machine, but unfortunately this was unsuccessful. I followed the same steps as Fernando’s guide, and also tried this guide (however with the SAMSUNG_M2_DXE module) but could not get the Optiplex to boot. Same SD0128F drive and adapter as previously.

The Dell BIOS is recognising the SSD in the second PCIe slot, however lists it as a ‘Mass Storage device’:

The original unmodded and modded BIOSes I’ve tried can be found here. The only other thing I thought I could perhaps try is inserting before the Freeform GUID and after the last DXE module ‘DummyImageDxe’, but any advice is appreciated.

My thinking is my issue is probably unlikely due to the SAMSUNG_M2_DXE module itself, as it worked correctly in my HP BIOS?

But Fernando’s post #18 re finding a specific Marvell M2 DXE module got me thinking, so I took a backup of the Macbook’s Macronix EFI chip in case I may be able to extract this from source.


UEFITool A65 has been helpful parsing human-readable GUIDs, but I’m not entirely sure what I should be searching for. There are a few entries for searches of ‘M2’ and ‘AHCI’, if I’m on the right track?

Thank you