Upgrading Boot ROM Version without upgrading to Big Sur
(These steps are based on or an elaboration of the work done by @Cmd+Q et al.)
The steps below were successfully performed on a
MacBook Pro (Retina, 15-inch, Mid 2014) running
macOS High Sierra 10.13.6 (17G14042) with the OEM Apple SSD (SM0512F) to upgrade to
429.0.0.0.0.
#1. Download Big Sur
First download Big Sur. In High Sierra, this is done via the
App Store.app. After the download is finished, the disk image should mount automatically.
#2. Extract the firmware
In
Terminal.app, first verify your EFI version using the following command:
Bash:
/usr/libexec/firmwarecheckers/eficheck/eficheck --integrity-check | grep "EFI Version"
An example output would be:
Bash:
EFI Version: MBP112.88Z.F000.B00.2012022043
Note the first part of the EFI version (i.e. MBP112), as you'll use it below to identify the firmware file.
Next, locate the ZIP file that contains amongst other things the firmware file.
Bash:
# Store ZIP file path to variable (handle unpredictable file name)
ZIP_FILE=`ls /Volumes/Shared\ Support/com_apple_MobileAsset_MacSoftwareUpdate/*.zip`
# List firmware files in ZIP file
unzip -l-qq "$ZIP_FILE" AssetData/boot/EFI/EFIPayloads/*
An example output would be:
Bash:
Length Date Time Name
--------- ---------- ----- ----
0 12-08-2020 02:17 AssetData/boot/EFI/EFIPayloads/
8388608 12-08-2020 02:17 AssetData/boot/EFI/EFIPayloads/MBA71.fd
8388608 12-08-2020 02:17 AssetData/boot/EFI/EFIPayloads/MB81.fd
8520304 12-08-2020 02:17 AssetData/boot/EFI/EFIPayloads/MBA61.scap
8520304 12-08-2020 02:17 AssetData/boot/EFI/EFIPayloads/MBP111.scap
8388608 12-08-2020 02:17 AssetData/boot/EFI/EFIPayloads/MB91.fd
8388608 12-08-2020 02:17 AssetData/boot/EFI/EFIPayloads/MBP131.fd
8520304 12-08-2020 02:17 AssetData/boot/EFI/EFIPayloads/IM151.scap
8388608 12-08-2020 02:17 AssetData/boot/EFI/EFIPayloads/MBP121.fd
8388608 12-08-2020 02:17 AssetData/boot/EFI/EFIPayloads/IM183.fd
8388608 12-08-2020 02:17 AssetData/boot/EFI/EFIPayloads/IM161.fd
8520304 12-08-2020 02:17 AssetData/boot/EFI/EFIPayloads/MM71.scap
8388608 12-08-2020 02:17 AssetData/boot/EFI/EFIPayloads/IM171.fd
8388608 12-08-2020 02:17 AssetData/boot/EFI/EFIPayloads/MBP141.fd
8388608 12-08-2020 02:17 AssetData/boot/EFI/EFIPayloads/MBP114.fd
8388608 12-08-2020 02:17 AssetData/boot/EFI/EFIPayloads/IM162.fd
16777216 12-08-2020 02:17 AssetData/boot/EFI/EFIPayloads/IM191.fd
8388608 12-08-2020 02:17 AssetData/boot/EFI/EFIPayloads/IM181.fd
8388608 12-08-2020 02:17 AssetData/boot/EFI/EFIPayloads/MBP142.fd
8388608 12-08-2020 02:17 AssetData/boot/EFI/EFIPayloads/MBP133.fd
8388608 12-08-2020 02:17 AssetData/boot/EFI/EFIPayloads/MB101.fd
8388608 12-08-2020 02:17 AssetData/boot/EFI/EFIPayloads/MBP132.fd
8520304 12-08-2020 02:17 AssetData/boot/EFI/EFIPayloads/IM144.scap
8388608 12-08-2020 02:17 AssetData/boot/EFI/EFIPayloads/MBP143.fd
8520304 12-08-2020 02:17 AssetData/boot/EFI/EFIPayloads/MP61.scap
8520304 12-08-2020 02:17 AssetData/boot/EFI/EFIPayloads/MBP112.scap
--------- -------
219025680 26 files
Now, locate the firmware file that matches the prefix of the EFI version from above and store the exact file path into the variable FIRMWARE_FILE below.
Bash:
FIRMWARE_FILE=<firmware file path here>
An example command would be:
Bash:
FIRMWARE_FILE=AssetData/boot/EFI/EFIPayloads/MBP112.scap
Next, we're finally ready to extract the firmware file with the command below.
Bash:
unzip -j "$ZIP_FILE" $FIRMWARE_FILE -d ~/Desktop/
( "-j" means don't create directory structure and "-d" designates that output directory)
You should now see the firmware file on your desktop.
#3. Set firmware file for upgrade
Now it's time to set your MacBook to upgrade the firmware on the next bootup. Fill in the file name of your specific firmware file.
Bash:
sudo /usr/sbin/bless -firmware ~/Desktop/<firmware file name here> --verbose --recovery
An example command would be:
Bash:
sudo /usr/sbin/bless -firmware ~/Desktop/MBP112.scap --verbose --recovery
Password: *****
EFI found at IODeviceTree:/efi
Will need to copy 8523776 bytes to EFI system partition
No auxiliary booter partition required
System partition found
Preferred system partition found: disk0s1
Returning booter information dictionary:
<CFBasicHash 0x7fd05f600550 [0x7fff83dc3c30]>{type = mutable dict, count = 4,
entries =>
0 : <CFString 0x10aba83c0 [0x7fff83dc3c30]>{contents = "Data Partitions"} = (
disk1s1
)
1 : <CFString 0x10aba79a0 [0x7fff83dc3c30]>{contents = "Preboot Volumes"} = (
disk1s2
)
2 : <CFString 0x10aba83e0 [0x7fff83dc3c30]>{contents = "Auxiliary Partitions"} = (
)
3 : <CFString 0x10aba7be0 [0x7fff83dc3c30]>{contents = "System Partitions"} = (
disk0s1
)
}
Mounting at /Volumes/bless.5nQf
Executing "/sbin/mount"
Returned 0
Creating /Volumes/bless.5nQf/EFI/APPLE/FIRMWARE if needed
Deleting previous contents of /Volumes/bless.5nQf/EFI/APPLE/FIRMWARE
Deleting /Volumes/bless.5nQf/EFI/APPLE/FIRMWARE/MBP112.scap (8520304 bytes)
Opened dest at /Volumes/bless.5nQf/EFI/APPLE/FIRMWARE/MBP112.scap for writing
preallocation not supported on this filesystem for /Volumes/bless.5nQf/EFI/APPLE/FIRMWARE/MBP112.scap
/Volumes/bless.5nQf/EFI/APPLE/FIRMWARE/MBP112.scap created successfully
Relative path of /Volumes/bless.5nQf/EFI/APPLE/FIRMWARE/MBP112.scap is \EFI\APPLE\FIRMWARE\MBP112.scap
IOMedia disk0s1 has UUID E0D1A18E-BE5A-4756-A31A-EA2CA48410AF
Executing "/sbin/umount"
Returned 0
Write to RTC: 0
Setting EFI NVRAM:
<CFBasicHash 0x7fd05f600dc0 [0x7fff83dc3c30]>{type = mutable dict, count = 1,
entries =>
2 : <CFString 0x10aba7c20 [0x7fff83dc3c30]>{contents = "efi-apple-recovery"} = <CFString 0x7fd05f502d60 [0x7fff83dc3c30]>{contents = "<array><dict><key>IOMatch</key><dict><key>IOProviderClass</key><string>IOMedia</string><key>IOPropertyMatch</key><dict><key>UUID</key><string>E0D1A18E-BE5A-4756-A31A-EA2CA48410AF</string></dict></dict><key>BLLastBSDName</key><string>disk0s1</string></dict><dict><key>IOEFIDevicePathType</key><string>MediaFilePath</string><key>Path</key><string>\EFI\APPLE\FIRMWARE\MBP112.scap</string></dict></array>"}
}
#4. Trigger firmware upgrade
Shut down your computer. (
Do not choose the restart option!) After the MacBook is powered off, power it back on by pressing the power button. Next be patient, and if everything goes well your firmware will be updated.
---
@maxthackray - Thanks for all the work you've done. Would you kindly link to this post from the post number one to make it easier to find.