Samsung NVMe legacy BOOT ROM present on 950 Pro

Hello everyone!

The samsung 950 Pro is a rare example of an NVMe SSD which has option rom, allowing it to boot on legacy bios platforms.
Did anyone attempt to extract it, and try to use it to boot similar sm951/pm951 SSDs? (via injecting into bios, loading the rom via plop…)
I searched for that and couldn’t find anything. If anyone could provide it, I’d be happy to test it on mentioned OEM drives.

And last but not least - thanks for everyone in community for contributing! Thank you Fernando!


Edit by Fernando: Thread title specified/customized

@Flaky :
Welcome to the Win-RAID Forum!

Even if it would be possible to extract the NVMe Option ROM from the Samsung 850 Pro Firmware and to get any other NVMe SSD booting in LEGACY mode by injecting the ROM module into its Firmware, it doesn’t make sense for me:
1. Option ROM modules are the past (=LEGACY). The users and the modern PC systems want/need EFI modules.
2. It is not a real problem to get full NVMe support in UEFI mode with old systems, which natively do not fully support NVMe.

Regards
Dieter (alias Fernando)

Yes, I am perfectly aware of the fact that practical aspect of that is rather limited.
Still, there might be a certain group of people who might benefit from that.
I also consider it rather a “for science!” thing, but… why not try? :slight_smile:

Unfortunately I do not own a 950 Pro, or know anyone having one.
It should be possible to extract already loaded option rom from system ram, using rweverything.
Or, from the firmware binary itself - but I haven’t yet managed to dig it out from firmware update iso.

@Flaky ,

This is what you’ve got to do to get your sm951 option-rom lacking ssd possibly working on an older legacy machine. Haven’t tested this out yet so can’t say if its going to work but here goes. First you need the VMWare NVME rom driver modded to match the device id of your SM951 and inserted into your bios. Your also going to need Plop boot manager configured as a Network Lan loader rom because your bios will not see your Nvme drive so you’ll need plop to load Windows from the ssd.

In the next couple days I’m going to try this out and see if it works or not. All I can say so far is that the Vmware Nvme rom driver has made it so my system doesnt lock up when I had an Intel 750 in there so I think it will work. I know there are a lot of guys out there that don’t have that problem but my old X58 board had that problem.

The other issue your going to have with this technique is lack of option rom space. I’ve already prepared my bios and got Plop booting from Lan but had difficulty getting it to work with the Intel Raid Rom at the same time. The system just didn’t have enough option rom space for both but got it going eventually.

Anyhow if this works I think it would be pretty amazing. I just ordered a SM961 to test this idea out. I know I should really put that old X58 out to pasture but having fun fwiw. Also playing around with Plop is kind of fun. Curious how it will perform.

Later.

Props to Ethaniel for finding the Vmware Nvme rom driver.

@davidm71 , @100PIER , @chinobino , @Fernando :
Does any of you happen to have a Samsung 950 Pro or an Intel 750 NVMe SSD with legacy Option ROM capable of booting in legacy BIOS mode on a motherboard with no built-in support for NVMe an could help us out with providing a copy of the Option ROM?

I would like to experiment with the Option ROMs and see whether either one of these is capable of booting other NVMe SSDs in legacy BIOS mode.

I can provide instructions on extracting the Option ROM using a Linux boot CD/USB or I can create a simple UEFI driver or application to extract it if that works better for you.

Thank you.

I downloaded the 2B0QBXX7 firmware for the 950 Pro from this page under the firmware section.

I extracted the 2B0QBXX7.iso and found a file 2B0QBXX7.enc (1 MB).

I have no idea if this file has what you are looking for but it might.

@chinobino :
Thank you for following up this quickly.
I expect 2B0QBXX7.enc to also contain the Option ROM, but unfortunately it is obfuscated. I’ve found deobfuscators for older Samsung firmware but unfortunately those are not compatible with newer firmware, like this one.
There are repeating patterns in the obfuscated firmware, so I’m sure that it is not encrypted and could be figured out, but extracting the Option ROM from the hardware using the same standard method that the UEFI/BIOS is using is probably easier.

I have both of them, but AFAIK the Intel 750 NVMe SSD doesn’t contain an NVMe Option ROM. Are you sure, that it has such in-box module?

I had a quick look around and could not find a tool to read/dump the firmware in Windows (although Linux looks like a better candidate based on the iso).

Do you know of such a tool?

@Fernando :
Unfortunately I have no experience with either one of these SSDs, my speculation is based on what I’ve read from others, so you most likely are correct that Intel 750 has no such Option ROM.

@chinobino :
Unfortunately I am unaware of such a tool for Windows. You should however be able to extract the Option ROM using a Linux live USB.


Guide for crating a Ubuntu live USB: https://tutorials.ubuntu.com/tutorial/tu…tick-on-windows

Open up a terminal.

Become root, list PCI devices:

sudo su
lspci


Look for the ID of the SSD (something like this):
01:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd Device a802 (rev 01)


Go to the devices, and list them:
cd /sys/bus/pci/devices/
ls


Look for a matching ID (something like this):
0000:01:00.0


Extract the Option ROM using the ID found previously:
cd 0000:01:00.0/
echo 1 > rom
cat rom > /tmp/image.rom
echo 0 > rom


Save /tmp/image.rom to the USB drive or somewhere else accessible after reboot.

These should result in image.rom containing the Option ROM, unfortunately however I have no SSD with an Option ROM.

Well I have an image.rom from the PCI Device ID the SSD was listed under:

image.zip

@chinobino :
Thank you very much for extracting the Option ROM.

Seems to be legitimate to me. Has a legacy Option ROM and a UEFI driver. Vendor ID, Device ID and checksum are all correct.

I will provide an update once I had a chance to experiment with.

I did some testing using my Samsung 960 Pro and the Samsung 950 Pro Option ROM.

I’ve modifyed the Vendor ID, Device ID and checksum values and inserted the Option ROM into my UEFI BIOS. I’ve also removed all three AMI NVMe modules from the BIOS.

Although the Option ROM enabled the BIOS to recognize the SSD and even the partition table, reading the directory structure resulted in random garbage. It did not cause any data corruption, but note that I haven’t tried to write anything to the SSD.

Unfortunately I believe that this Option ROM has no support for any NVMe SSDs other than the Samsung 950 Pro.

Note that in the article How To Boot an NVME SSD from a Legacy BIOS (non UEFI) w/ Intel 750 Series SSD I’ve found that even though the Intel 750 has an Option ROM, it only contains an UEFI driver, no legacy Option ROM.

@davidm71

Can you please describe step by step, how you manage to get the Plop to work, when you integrate it into Bios via Option Rom.
I try with the Option Rom "Vmware Nvme rom driver",
but after 1 second the message of Plop bootmanager appeared, it hangs with blinking cursor, so I never see the Plop boot menu
Dietmar



Honestly I don’t remember. Kind of a blur. Sorry but I think ultimately I was unsuccessful. Other guys on this forum may have had success with alternative methods. Good luck.

Guys, I managed with the help of oprom from the Samsung 950 Pro to make it boot as a system from m.2 to Award BIOS. If anyone is interested I can help with it.

Yes, brother, tell me please! And how to modify legacy bios to boot nvme with asus p5k?

@Gman777
I posted the guide here. [Guide] Award/Phoenix BIOS Modding (8)
But you do not have an Award BIOS, but an AMI BIOS, so you need to use another way to add the module to the BIOS.
For Award - cbrom. For AMI - MMTOOL.

P.S. ASUS P5K has an Intel P35 chipset, so the first slot works in PCI Express x16 1.1 mode, the author’s slot works in PCI Express x4 1.1 mode.
Is it worth doing this.

Do you have an nvme driver file that needs to modify AMI bios in MMTool???

@Flaky @Ethaniel @chinobino @Dagal @davidm71 @Uruguayo @eierhals
A Guide about how to get an NVMe SSD bootable on systems with a Legacy BIOS by using an NVMe Option ROM is not easy to find within this Forum and I doubt, that any newbie will search for it within the “BIOS Modules” Sub-Forum.
Since there seems to be a strong demand for it, an easy to understand AIO Step-by-step Guide for PCs with a non-UEFI BIOS would be much appreciated by the Forum visitors. The best solution would be a new thread with the topic “[HowTo] Get full NVMe support for Systems with a non-UEFI BIOS” (or similar) within >this< Sub-Forum.
Who is willing to do that?
Once it will be done, all the matching, but currently scattered contributions/requests can be merged into the new thread.

1 Like