Hey @Fernando and @MeatWar, I am attempting to automate the process to automatically add the NVMe driver to any ASUS BIOS. At the moment, I can see how I can write the script in Python to do all this, and there is a better way for part of it that I’d like to ask help on if you all, or anyone else, would like to put your two cents in!
Process (Python script [GUI]):
Programmatically detect the current motherboard on a system or provide the option to allow users to search for the motherboard if using a different system at the time. Since the revision must be entered as well, I’ve got to investigate and see if there is a way to get the revision of the BIOS from a running OS programmatically without needing user interaction. Worst comes to worst the user enters in the revision too and we cross-reference the selected motherboard on ASUS’s website using their API to validate the revision number is correct.
Automate the download of the BIOS with correct revision number. It’s not that hard when you can see ASUS’s standardized support helpdesk link, query the motherboard with their API and see the ‘BIOS & Firmware’ section of the webpage which will have structured data containing each BIOS revision and then seeing the corresponding download link.
a) This project will come packaged with the NVMe drivers, ASUS renaming tool, and UEFITool. As of right now, I can perform GUI automation in Python without user intervention to open up the BIOS in UEFITool, search for DXE drivers, gather where most of the DXE drivers are, correlate it with the CSMCORE module if applicable, and then perform an insert of the NVMe driver into the BIOS where needed and finally saving the modded BIOS with the correct name using the ASUS renaming tool.
b) I found a Python project which implements FMMT in Python developed by Microsoft that allows you to view, modify, and save BIOS files programmatically with no GUI needed, which is a big plus here. I was able to perform the NVMe driver addition to the correct Firmware Volume (for me it was listed as FV2), but noticed that the difference between the successful modded BIOS file I had created myself following this post versus the modified BIOS file that was created using this tool does the same seems to show that the only difference is the ‘State’ property of the driver is different when I viewed the two CAP files in UEFITool, but everything else seemed to be the same. I’ll dive into this in my own time, and if I y’all can give advice on this part or point me in the right direction at the very least, maybe it would make troubleshooting the code easier for me so this prototype can get off the ground! For now though, I know 100% I can perform GUI automation and control the UEFITool application programmatically in Python in order to achieve getting a successfully modded BIOS with the NVMe driver added, but this is definitely just a workaround for the time being.
I would like to keep diving into this and learning how to make this a robust solution so we can take the human error element out of it if we can. Literally we could release this tool to perform automated modification of any ASUS BIOS programmatically (sure, we may have to find the way to achieve the modification by hand but then programming this to be done thereafter could be a breeze)!
The behaviour of the tools/versions used, UEFI tool and “leaked” old AMI MMtool is not consistent in their final results across all bios structures and motherboards models, when producing/saving the work. I think it will work on some bioses but not on all.
Why stating this? Read all the notes and verification methods/warnings/tips on Fernando’s guide, specially the cases in witch original/new pad files are removed/generated.
My POV only, good luck.
I was using modded bios on Asus P8Z77-M PRO succesfully.
But few days ago after windows update I am no longer able to boot from NVME drive.
Booting just gets stuck and reboot is needed.
Initially I thought that windows NVME driver got corrupted (windows repair options does not look to see the NVME drive, same from windows reinstaller using USB created with rufus - NVME not seen).
But then I got into the windows 10 login screen from n th reboot - which crashed with blue screen, and I was not able to get to windows login screen anymore (boot gets stuck).
Bios was not reconfigured prior this issue, bios shows PATA SS and Windows Boot Manager (Samsung SSD 970 Evo Plus) boot options. The NVME drive is accesible and I was able to copy it’s data from same machine using other OS - so IMO NVME is not dead.
Windows 10 enterprise (was always it when it worked).
I do not recall how I installed it originally, but likely following the guide with Rufus. I do not recall adding any optional NVME drivers to installation media, as I can not find them in my backups where I have all files related to that matter.
P.S. I’ve checked windows logs from that NVME drive - nothing after the last boot with successful login leading to bluescreen - as if boot process is not reaching logger initialisation state or NVME media access issue.
P.P.S. The bluescreen also has shown smth like “Gathering crash data: 0%” without ever proceeding further - again potentially indicating issues to NVME media access.
I am mostly confused why my attempt to reinstall the same OS (and any other Win 10) does not see the NVME media.
@Lari
You must not forget, that your mainboard natively doesn’t support booting off an NVMe SSD at all. My advice: Take a backup of your important data and retry a clean installation of the OS according “Step 4” of my Guide.
Update:
I have just decided to try unpluging all SATA drives (had 5). It booted normaly, I was able to install latest updates without issues onto Win 10 on NVME - looks stable so far. I assume one of my older SATA drives started misbehaving somehow which affected the boot from NVME.
@Lari:
Thanks for your update, which verifies, that the “Windows Boot Manager” of your NVMe was not the reason for your problem.
So you will be able to solve your boot problem by finding out and removing the faulty SATA drive.
Can anyone help me with modded bios for Supermicro X10DRi-T to boot from NVMe? I saw a lot of links and HowTo but it is very confusing for me, as I am old. I have the latest 3.4a bios for this motherboard. Thanks in advance.
@servernoob
Seems correctly inserted in the right volume and original pad-files are in place as the original one.
Using IPMI to flash i can’t answer that, as i don’t have/had such boards to test its feature regarding mod files and flash them. You may wait for a SuperMicro board user.
Before flashing attempts, please consider making backups using any methods avaiable to you. Good luck.
Thought I would try and flash the unmodded bios first, ended up bricking the system. VGA now not picking up anything, it was restarting every few seconds, I reset CMOS and it powers on but does not have VGA or boot to anything.
The official SuperMicro 3.4a bios file? By USB DOS/EFI should be the correct method.
Read the board documents for proper jumper/recover methods.
Appendix C: UEFI BIOS Recovery
C-3 To Recover the Main BIOS Block Using a USB Attached Device
EDIT: Kinda strange behaviour on an official bios update…not even you had the chance to try the mod file…tell me, you didn’t read any instructions and you tried the update also by IPMI instead of regular bios update method?
I can’t help you more on this “official” recover, must be a current SuperMicro board user
Final resource…an SPI IC programmer.
Thanks for the reply. I checked it out and I am not able to get video to work, so I can’t read anything on the screen. All I have access to is the IPMI to connect to the server from another computer, but still will give me errors when I try to load the bios that way, and only firmware is able to safely upgrade from IPMI.
Manufacturer Mode Select
Close pins 2 and 3 of Jumper JPME2 to
bypass SPI flash security and force the
system to operate in the Manufacturer
mode, ***which will allow the user to flash
the system firmware from a host server
for system setting modifications***.
curious if anyone has a link to a modded bios for added nvme boot support for a Gigabyte Z87M-D3H? if not i will try the method above but as its my first time attempting a bios mod it would be a daunting task lol
Thank you in advance!
Specs:
Gigabyte Z87M-D3H
i7 4790k
ripjaws 32gb 1600mhz
evga GTX 1070ti
thermaltake 700w PSU
500gb Kingston Sata SSD
1TB Fikwot Pcie 3.0 Nvme
@jeik
Welcome to the Win-Raid Forum!
This is an English language Forum. Please translate you post.
Thanks!
@ScumLord
This thread has been designed for users, who want to do the required BIOS modification themselves.
If you want want to get an already NVMe modded BIOS for your specific mainboard, you should use the Forum’s search box or start a new “BIOS Modding Requests” thread.
unfortunately almost every link i find pertaining to the Gigabyte Z87M-D3H has either expired or doesnt exist anymore. as it is my first time modding any bios ill begin with reading over the whole process you have explained above in the first series of posts to the thread and take it step by step! ill reach out if i have any issues.