blazinsmokey Posted November 18, 2020 Share Posted November 18, 2020 (edited) I've written some detailed guide in my time but I'm going to keep this one shorter. I want to accomplish 2 things with this write up.1. Address the native nvram problem, this is huge for people with similar hardware moving forward with Big Sur.2. Help others get installed and booted with a very clean setup. Hardware and OverviewASUS Maximus VII Hero Z97, 4790K, Sapphire Nitro+ RX 580 8GB, HDMI to 43" 4K screen. Modifying the BIOS to get native nvram fix for Big Sur is also confirmed working for these boards ASUS Z97 ROG Maximus VII Hero ASUS Z97-A, requires manual modifying of BIOS file ASUS Z97-P ASUS Z97 ROG Maximus VII Gene ASUS Z97 ROG Maximus VII Ranger ASUS Z97 ROG Maximus VII Impact ASUS Z97 ROG Maximus VII Formula ASUS H97M-E ASUS Z97-PRO(Wi-Fi ac) Asus TUF Sabertooth Z97 Mark S ASUS TUF Sabertooth Z97 Mark 2 ASUS Z97-Pro (Wi-Fi AC)/USB 3.1 ASUS Z97-K ASUS Z97-AR This included setup was used to upgrade directly to from Catalina to Big Sur but installation should be fine as well.Using OpenCore 0.6.3 and latest kexts. Using SMBIOS iMacPro1,1 even tho it may be frowned upon but it worked for DRM at least in Catalina, not willing to change it now. You can however do as you please.Everything pretty much works. FaceTime, Messages, AppStore etc. Waking the computer from sleep though requires pressing the PWR button.There is no options in OpenCore or Clover, drivers or magic to get native nvram working. You have to modify the BIOS or flash an old one that doesn't have the white list as discussed below. So if you can't go through with fixing the NVRAM, you will have to use the transplant method.NVRAM Problem Big Sur installer fails after about 20% progress in the Apple logo, fails shortly after disk#: device is write locked ending with apfs_vfsop_unmount. Verbose output below just before restart. I imagine a new install the same problem occurs because after the first state information on the drive and whatever is stored in the native nvram and the installer can't access something that is not there because it wasn't saved in the first place. BackgroundReddit post here starts to question it as Haswell in general but seemed more an issue with ASUS Z97 boards. A comment in that thread led me to Vit9696 saying fix your NVRAM. All other paths led to devs are aware and it's an macOS bug or giving up and transplanting the installation by using another machine. Well I ain't having none of that, Vit9696 said fix nvram, so I fixed it.WhyVit9696 actually solved this for us years ago here. The key take away is the whitelist part and replacing NvramSmi driver. Described here: http://www.insanelymac.com/forum/topic/317802-efi-variable-store-on-aptio-v-haswell-e-and-up/page-6?do=findComment&comment=2535040 After the disassembling it was discovered that several APTIO IV drivers including the presented one implement a variable whitelist, and disallow writing anything but the variables from the list. It is unclear whether it was intentional or just an logical mistake, but a most reasonable solution will be to just replace the NvramSmi driver with the working one from a previous firmware and reflash. FixAs stated above we can extract the NvramSmi driver from an older BIOS and the replace it in the latest one. I believe most our boards from this era are no longer being supported but the latest firmwares do have microcode to patch vulnerabilities like Spectre, meltdown, etc. It would be ideal to go this route and it's not that hard and working nvram is great!I'm guessing another way would be to flash back to old BIOS where native nvram is working and upgrade/install Big Sur and then flash the latest after. You could save your BIOS profile if available that way you won't have to set everything back up. If this is also the case for incremental updates, sounds like a nightmare.How (I chose to fix)DISCLAIMER: Replacing the NvramSmi driver made the most sense and it was relatively easy. I am no expert and you know the responsibility I take in anyone trying this **** and failing, ZERO. DISCLAIMER!!! Modding your UEFI can have weird things happen. So far we have 3 but all fixable. There are also multiple different ways to mod and flash if you look around you'll see. I cannot be responsible for all the methods and figuring out every issue that could arise. READ ALL THE BULLETS BELOW BEFORE ATTEMPTING ANYTHING Loss of ability to change RAM speeds either manually or with XMP This method of modding and flashing will fix the XMP issue link here Loss of Mac address note your mac address before continuation or find it on the sticker on your mobo, it is easy to flash back Stanwell Park left a link to a youtube video link here the video is unnecessarily 20 minutes long, here's a quick shortcut if you're witty Create a free dos bootable usb with rufus(tools folder), take the files from the youtube link Copy over the batch files from the Copy All Files to USB folder to root of usb, no folder Copy over the eeupdate.exe from the correct NIC folder to the root of usb, no folder Enable CSM just for this boot the USB at the command prompt, you'll enter "eeupdate /nic=1 /mac=xxxxxxxxxxxx" reboot, reenable CSM, MAC address is flashed Mechanical drives not working mentioned by raceyiii download CtlnaAHCIPort.kext link here To find a BIOS version before the whitelist was added to the NvramSmi driver I used the dates from the link in Vit9696's quotes. User 314TeR said his ASUS Maximus VII Impact nvram broke after 0412 which was released 2014/10/17 and worked with 0217 released 2017/07/28. To me anything after 2014/10/17 will have added the whitelist.So with my board I downloaded version 1104. THE BELOW METHOD HAS AN ISSUE WITH XMP and RAM SPEED. No matter what you set in BIOS, ram speed will remain default, likely 1333Mhz. I updated the steps and linked above to fix that but it does require Windows. If you don't have any other issues then this method would still be fine. Spoiler Download UEFITool 0.26.0 as the latest versions won't let you rebuild/replace.Download latest BIOS and one without whitelist.Load older BIOS in UEFI tool, my case 1104. Search with text nvramsmi and extract as is, the file section. Like below. Save the ffs, name it whatever and close out we are done here.Load the latest BIOS now, 3503 in my case and search nvramsmi again. This time replace as is and select the ffs you just named and saved. You can't flash the modified BIOS as usual, they are contained in a way with write security. I just used my board's USB Flashback Utility. Named the modified BIOS to M7H.CAP, each board will have it's own naming method. Copied to a fat32 usb, stuck it in the correct USB port in the back and pressed the button for 3 seconds. 2 minutes later and I was booting my modified BIOS and restarted the upgrade process again from within macOS. That last bit is IMPORTANT, if you were trying to upgrade from Catalina and have the bootable option to install MacOS it still won't work after you fixed your nvram. You MUST restart the process again from within Catalina. If you don't have USB Flashback Utility, take a look here for alternative ways.After BIOS modified flash test your nvram, mine worked right away. Then I tried the upgrade and that worked fine. I believe it was 4 phases total and 3 reboots. Took about 25 minutes on SSD.My modified BIOS 3503 is attached, don't be stupid with it and try to install on a different board. Rename it accordingly if you want to use it. Some BIOS SettingsAHCI - EnabledVTD - DisabledPrimary Display - AutoCPU Graphics Multi Monitor - DisabledLegacy USB - EnabledxHCI - EnabledEHCI handoff - EnabledFast Boot - DisabledSecure Boot - Other OSCSM - DisabledOpenCore Configuration Basic Understanding ACPI SSDT-EC.aml - fix for EC on Catalina and above SSDT-GPRW.aml - fixes immediate wake from sleep, paired with rename patch in plist SSDT-LPCB.aml - allows AppleLPC to be loaded, helps with power management SSDT-PLUG.aml - necessary for CPU identification and power management SSDT-SBUS-MCHC.aml - allows AppleSMBusPCI/Family/Controller SSDT-USBX.aml - USB power config Drivers AudioDxe.efi - boot chime HfsPlus.efi - reading Hfs partitions OpenCanopy.efi - GUI boot picker OpenRuntime.efi - NVRAM, memory management, etc Kexts AppleALC.kext - audio IntelMausiEthernet.kext - nic Lilu - various fixes and system enhancements USBPorts.kext - USB Mapping (you can edit this details in USB section) VirtuaSMC.kext - Apple SMC emulator WhateverGreen.kext - various fixes for graphics and system devices Resources download from binary resources, removed all audio except boot chime Tools OpenShell.efi - shell cli config.plist Highly suggest looking at the Dortania Guide Haswell section if you are want to know why x is set the way it is, I don't have time for that and that information is readily available USB PortsIf all accessible ports are enabled in our system it is going to break the 15 port limit so a single sacrifice needs to be made. Instead of wiping out a whole port, I personally removed USB 2.0 ability on one of the USB 3 ports.The included USBPorts.kext includes all 16 ports, so the last USB 3.0 port SSP6 port(furthest from ethernet) will not function at 3.0 speeds if you use this kext as is. Customizing is simple with the kext. Open the plist inside the kext and you can remove the one port/functionality you don't need. Included are pictures labeling what is what HSXX and SSPX. There's also a SSDT included to help identify.Shout out to @YoshiMac for posting images of the USB ports mapped out. I included some of his work so you have quick access when deciding but his post is great as well. Hopefully I can return the favor a bit with this guide.OpenCore Config Customize While I added a SMBIOS just to get you going, you need to get your own SMBIOS - > https://dortania.github.io/OpenCore-Install-Guide/config.plist/haswell.html#platforminfo I'm using UIScale 2 for HiDPI, where as you may need to change to 1 Boot args currently uses verbose, you can remove that if all is well after I'm sure I'm forgetting to mention stuff, just let me know if I should warn about some other stuff here. Files AttachedThe included EFI is OpenCore 0.6.3 with updated kexts as of 11/18/2020USB Folder includes pics of the mapping and original USBPorts.kext with 16 ports for back up. There is also .dsl file which maps the ports if you need some clarification textually, do not use it.Modified 3503 bios for Maximus VII Hero with replaced NvramSmi from 1104.Well that wraps it up I think. If you need any extra advice or questions shoot away. Asus Maximus VII Hero OC 0.6.3 Share.zip BIOS in next post due to size limit Modified 3503 bios for Maximus VII Hero with replaced NvramSmi from 1104. 3503modifiedM7H.CAP Edited January 16, 2021 by blazinsmokey 7 Link to comment Share on other sites More sharing options...
biborn Posted November 18, 2020 Share Posted November 18, 2020 This is amazing. Thanks for taking the time to make this guide. I will try to follow the steps and see if I can get it to work from my side. Link to comment Share on other sites More sharing options...
petsasj Posted November 18, 2020 Share Posted November 18, 2020 Thank you for doing this write-up. Link to comment Share on other sites More sharing options...
Stanwell Park Posted November 19, 2020 Share Posted November 19, 2020 Thanks for providing a solution for those are still using Asus Z97 motherboard. For those who experienced onboard NIC MAC address changed to 88:88:88:88:87:88 after flashing modded BIOS, you may want to flash back MAC address to original one. Check this video how to flash back. 2 Link to comment Share on other sites More sharing options...
blazinsmokey Posted December 1, 2020 Author Share Posted December 1, 2020 So u/stiligFox informed that XMP was broken with modified bios. I confirmed my board had the same issue. Even properly set in BIOS, RAM speeds were showing up default 1333. I found the solution and confirmed it working here's the link for the work around https://hamac.pl/topic/14107-natywny-zapis-do-nvram-modyfikacje-bios/?do=findComment&comment=136471, they also discuss in the thread to replacing bytes but I don't believe that'll work for every board due to variations, so not recommended. YOU DO THIS AT YOUR OWN RISK and I AM NOT RESPONSIBLE FOR ANYTHING Tools used(newer versions may not work correctly): UEFITool 0.28.0 MMTool Aptio 4.50.0.23 AFUWIN64 tool v3.05.04 can be downloaded from the guide linked below Open the older BIOS that has the working nvram driver. In my case version 1104. Search by text and enter nvramsmi, in the messages section at the bottom you can click where it says found in PE32 to go right there. Select the PE32 image section that is under NvramSMI/Compressed section and Extract body, save the bin file. Take note of the GUID 842A45A.... we will need this later. You can keep this open for reference and open another window. Now open the latest BIOS in UEFITool in another window, in my case 3503. Same as earlier search by text and enter nvramsmi. This time we will replace body. Select the PE32 image section that is under NvramSMI/Compressed section and replace body with the bin you just saved. After replacing it should look like below. Now save the new image. Open up MMTool, Load Image and select your modified BIOS you just saved. Like I said this sounds redundant but just do it. Go to the extract tab and scroll down to find the nvramsmi driver, the filename will be missing so using the GUID from UEFI tool you can confirm you selected the correct one. They will also be in the same order as shown in UEFITool, so you can see NvramSMI is between NTFS and OpalSecurity. Match the GUID to be sure. After you find and select the nvramsmi driver, click the browse and make a name like mmNvramsmi, then press extract, file will be saved Now using MMTool load your *unmodified* latest bios file. This time go to the Replace tab. Find the Nvramsmi driver again and select it. Click browse and select the above mmNvramsmi, and then replace. Save Image As, and name it how you like. I named mine mod.rom and then use AFUWIN to flash from Windows. USB Flashback won't work since we are saving the rom without the capsule headers. You can find those instructions to use AFUWIN here Forum - [Guide] How to flash a modded AMI UEFI BIOS (win-raid.com) 2 Link to comment Share on other sites More sharing options...
blazinsmokey Posted December 8, 2020 Author Share Posted December 8, 2020 On 11/18/2020 at 1:32 AM, blazinsmokey said: READ ALL THE BULLETS BELOW BEFORE ATTEMPTING ANYTHING Loss of ability to change RAM speeds either manually or with XMP This method of modding and flashing will fix the XMP issue link here Loss of Mac address note your mac address before continuation or find it on the sticker on your mobo, it is easy to flash back Stanwell Park left a link to a youtube video link here the video is unnecessarily 20 minutes long, here's a quick shortcut if you're witty Create a free dos bootable usb with rufus(tools folder), take the files from the youtube link Copy over the batch files from the Copy All Files to USB folder to root of usb, no folder Copy over the eeupdate.exe from the correct NIC folder to the root of usb, no folder Enable CSM just for this boot the USB at the command prompt, you'll enter "eeupdate /nic=1 /mac=xxxxxxxxxxxx" reboot, reenable CSM, MAC address is flashed Mechanical drives not working mentioned by raceyiii download CtlnaAHCIPort.kext link here Guide updated, we found 3 problems and all 3 fixable, I really hope this is it. 1 Link to comment Share on other sites More sharing options...
flames Posted December 9, 2020 Share Posted December 9, 2020 (edited) Thank You for this guide! It worked perfectly on Asus Z97-AR, safe to add it to the list. Since there were no BIOS file for this board with working NVRAM (oldest v2205 from 2016/02/02), i just took the PE32 image from Your modified .cap I had to reflash the MAC address, went also perfectly. Edited December 10, 2020 by flames Link to comment Share on other sites More sharing options...
LoLL Posted February 23, 2021 Share Posted February 23, 2021 Hi, Thanks for the guide. I will like to try as i met the BigSur installer boot loop with my Asus Z97-A USB3.1. I'm flashed for several years with 3503. I looked for oldest one from ASUS site (2401) and the problem persisted with this version. It seems that i need to find more older release, isn't it ? I searched, in vain... Also I extracted binary file (Section_PE32_image_NvramSmi_NvramSmi_body.efi) from 2 bios to check if differed and md5 differ :-( I guess if the binary file from your 1104 bios should be used on my mobo ? Regards Link to comment Share on other sites More sharing options...
gsxb Posted November 26, 2023 Share Posted November 26, 2023 My board is a. Z97M Plus I modded the bios as described by blazin monkey then flashed with afudos exe from a dos usb stick the nvram is now working Link to comment Share on other sites More sharing options...
Recommended Posts