Skip to content

Instantly share code, notes, and snippets.

@startergo
Last active November 6, 2025 04:55
Show Gist options
  • Select an option

  • Save startergo/18e7fc4f2b1125e80b677181cc6c77e7 to your computer and use it in GitHub Desktop.

Select an option

Save startergo/18e7fc4f2b1125e80b677181cc6c77e7 to your computer and use it in GitHub Desktop.
Extract Firmware from OS X installer
  • Download the full installer:
softwareupdate --list-full-installers
Finding available software
Software Update found the following full installers:
* Title: macOS Ventura, Version: 13.1, Size: 11931164KiB, Build: 22C65
* Title: macOS Ventura, Version: 13.0.1, Size: 11866460KiB, Build: 22A400
* Title: macOS Ventura, Version: 13.0, Size: 11866804KiB, Build: 22A380
* Title: macOS Monterey, Version: 12.6.2, Size: 12104568KiB, Build: 21G320
* Title: macOS Monterey, Version: 12.6.1, Size: 12108491KiB, Build: 21G217
* Title: macOS Monterey, Version: 12.6, Size: 12104042KiB, Build: 21G115
* Title: macOS Big Sur, Version: 11.7.2, Size: 12119307KiB, Build: 20G1020
* Title: macOS Big Sur, Version: 11.7.1, Size: 12119247KiB, Build: 20G918
* Title: macOS Big Sur, Version: 11.7, Size: 12118755KiB, Build: 20G817
* Title: macOS Big Sur, Version: 11.6.6, Size: 12121263KiB, Build: 20G624
* Title: macOS Big Sur, Version: 11.6.5, Size: 12121404KiB, Build: 20G527
* Title: macOS Big Sur, Version: 11.6.4, Size: 12147782KiB, Build: 20G417
* Title: macOS Big Sur, Version: 11.6.3, Size: 12143674KiB, Build: 20G415
* Title: macOS Big Sur, Version: 11.6.2, Size: 12141944KiB, Build: 20G314
* Title: macOS Big Sur, Version: 11.6.1, Size: 12137180KiB, Build: 20G224
* Title: macOS Big Sur, Version: 11.5.2, Size: 12149332KiB, Build: 20G95
* Title: macOS Catalina, Version: 10.15.7, Size: 8055650KiB, Build: 19H15
* Title: macOS Catalina, Version: 10.15.7, Size: 8055522KiB, Build: 19H2
* Title: macOS Catalina, Version: 10.15.6, Size: 8055450KiB, Build: 19G2021
* Title: macOS Mojave, Version: 10.14.6, Size: 5896894KiB, Build: 18G103
* Title: macOS High Sierra, Version: 10.13.6, Size: 5099306KiB, Build: 17G66

softwareupdate --fetch-full-installer --full-installer-version 12.6.2
softwareupdate --fetch-full-installer --full-installer-version 10.14.6
cp /Applications/Install\ macOS\ Mojave.app/Contents/Resources/Firmware/MP51.fd  ~/Desktop

For older systems officially supporting:

Apple security updates

pkgutil --expand [Double click the dmg file and drop file here] /destination/path/

pkgutil --expand /Volumes/macOS\ Catalina\ Security\ Update\ 2021-008/SecUpd2021-008Catalina.pkg ~/Desktop/Expanded
cp ~/Desktop/Expanded/FirmwareUpdate.pkg/Scripts/Tools/EFIPayloads/MM61.scap ~/Desktop/MM61.scap

Please check here for the latest firmware version and the latest full installer version or latest security update.

  • Mounting Big Sur SharedSupport disk image:
/usr/bin/hdiutil mount /Applications/Install\ macOS\ Big\ Sur*.app/Contents/SharedSupport/SharedSupport.dmg
  • 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/*"
  • In Terminal.app, first verify your EFI version using the following command:
/usr/libexec/firmwarecheckers/eficheck/eficheck --integrity-check | grep "EFI Version"
  • Note: macOS Sonoma no longer prifides the eficheck utility. That has been removed from Sonoma. All T2 and Apple silicon models automatically check the integrity of their firmware in the early part of the boot process anyway.

  • locate the firmware file and store the exact file path into the variable FIRMWARE_FILE:

FIRMWARE_FILE=<firmware file path here>
  • An example command would be:
FIRMWARE_FILE=AssetData/boot/EFI/EFIPayloads/MBP112.scap
  • Extract the firmware file ( "-j" means don't create directory structure and "-d" designates that output directory):
unzip -j "$ZIP_FILE" $FIRMWARE_FILE -d ~/Desktop/
  • Set your MacBook to upgrade the firmware on the next bootup (SIP must be disabled). Fill in the file name of your specific firmware file:
sudo /usr/sbin/bless -firmware ~/Desktop/<firmware file name here> --verbose --recovery
  • 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.
@maverick85
Copy link

If they are not, how should I get it?
I'm figuring the .fd file isn't it.

Should I download versions before that 12.7.4 until I find one with the .scap file?

I had installed OpenCore Legacy Patcher on my Mac and didn't like it at all. I reverted back to Monterey but I believe my EFI is altered but signaled as OK because of OCLP. I am really looking for a way to reinstall the native Apple firmware.

@startergo
Copy link
Author

If they are not, how should I get it? I'm figuring the .fd file isn't it.

Should I download versions before that 12.7.4 until I find one with the .scap file?

I had installed OpenCore Legacy Patcher on my Mac and didn't like it at all. I reverted back to Monterey but I believe my EFI is altered but signaled as OK because of OCLP. I am really looking for a way to reinstall the native Apple firmware.

Firmware has nothing to do with the EFI and it cannot be altered by OCLP especially on the MBP11,4 or 11,5. I have 11.4. Using SilentKnight 2:
image
This is what is within my EFI folder:
image
So I guess .fd file is what you need now.

@startergo
Copy link
Author

After the update:

/usr/bin/hdiutil mount /Applications/Install\ macOS\ Monterey*.app/Contents/SharedSupport/SharedSupport.dmg
ZIP_FILE=`ls /Volumes/Shared\ Support/com_apple_MobileAsset_MacSoftwareUpdate/*.zip`  
unzip -l-qq "$ZIP_FILE" "AssetData/boot/EFI/EFIPayloads/*"
FIRMWARE_FILE=AssetData/boot/EFI/EFIPayloads/MBP114.fd
unzip -j "$ZIP_FILE" $FIRMWARE_FILE -d ~/Desktop/  
sudo /usr/sbin/bless -firmware ~/Desktop/MBP114.fd --verbose --recovery
image

@maverick85
Copy link

maverick85 commented May 3, 2024

First let me thank you for your time and effort in putting these answers here. I really appreciate it and I'm sure others will too.

Screenshot 2024-05-03 at 14 56 38

Firmware has nothing to do with the EFI and it cannot be altered by OCLP especially on the MBP11,4 or 11,5. I have 11.4.

Immediately after installing OCLP one issue that arised on my Mac was that the boot Chime was distorted. This persisted after removing OCLP and doing a clean install of Monterey.

After reading about the problem there was some discussion on the Apple forums mentioning it could be a firmware problem on how the sound was being processed, which let me into this.
But if OCLP has nothing to do with firmware, how can I make sure my EFI partition doesn't have any leftovers from OCLP?

@startergo
Copy link
Author

Chime sound volume can be set through NVRAM. That is how OC sets it. Just do an NVRAM reset. Or better yet set the desired volume level through the NVRAM variable in the configuration file for OC.

@maverick85
Copy link

maverick85 commented May 3, 2024

It's not really about volume, rather a distortion. I have reset the NVRAM plenty since and did not resolve. (when I removed ventura and did a clean install, reset both nvram and smc)
what is the configuration file for OC?

Anyway, I haven't reinstalled the firmware using the bless command yet, I will do it in a bit after work. I am thinking when updating the firmware you're supposed to use the command bless, rather than just copying the file over to EFI/APPLE/FIRMWARE. So I was really hoping the process would trigger something that would fix my problem.

@startergo
Copy link
Author

No you should not copy anything just follow the instructions above. I just performed firmware update.

@maverick85
Copy link

I performed the firmware update as well but didn't resolve anything. Ah well, thanks for all the help!!

@storkinsj
Copy link

@startergo this is potentially life saving information. I do need to flash a specific firmware version that's older to my mac pro 2019.

If I specify an older firmware file, will it indeed flash it anyway after blessing it?

Also, I'm curious why all the use of variables above. It makes sense if you're using a specific tool that looks for those environment variables but I don't see any 3rd party tools being used in the steps to change the firmware. Also for example :

unzip -j "$ZIP_FILE" $FIRMWARE_FILE -d ~/Desktop/

Is a command line that uses the variable but then

sudo /usr/sbin/bless -firmware ~/Desktop/ --verbose --recovery

doesn't use it. BTW if you just want to keep using the first variable you could have used

basename($FIRMWARE_FILE)
instead of

Anyway, are you using some sort of tool that's requiring these variables?

@startergo
Copy link
Author

If I specify an older firmware file, will it indeed flash it anyway after blessing it?

Not sure you will have to try this.

Also, I'm curious why all the use of variables above.

Try without assigning them and see if it will list the firmware within.

@storkinsj
Copy link

I don't see any "listing" being done above after the $FIRMWARE_FILE variable is set; however, the "bless" apple command is executed. Indeed it may check the variable.

Regardless, thanks for your help. I will report back here my results.

@startergo
Copy link
Author

If you follow the commands as shown skip this:

ZIP_FILE=`ls /Volumes/Shared\ Support/com_apple_MobileAsset_MacSoftwareUpdate/*.zip`

And try the unzip command.

@msikma
Copy link

msikma commented Sep 1, 2025

Hi there! Thank you for these instructions. I have third party storage and can't install macOS 12 for that reason.

I've been trying to force a firmware update on a MacBookPro12,1 which has an OWC Aura Pro X2. But I can't quite figure it out, and I'm not sure what I'm doing wrong.

My EFI version is: MBP121.88Z.0177.B00.1806051659

I managed to extract MBP121.fd from the macOS 11 installer. When blessing it I get the following output:

$ sudo /usr/sbin/bless -firmware ~/Desktop/firmware/MBP121.fd --verbose --recovery

EFI found at IODeviceTree:/efi
Will need to copy 8388608 bytes to EFI system partition
No auxiliary booter partition required
System partition found
Preferred system partition found: disk0s1
Returning booter information dictionary:
{
    "Auxiliary Partitions" =     (
    );
    "Data Partitions" =     (
        disk1s5s1
    );
    "Preboot Volumes" =     (
        disk1s2
    );
    "System Partitions" =     (
        disk0s1
    );
}
Mounting at /Volumes/bless.bKpK
Executing "/sbin/mount"
Returned 0
Creating /Volumes/bless.bKpK/EFI/APPLE/FIRMWARE if needed
Deleting previous contents of /Volumes/bless.bKpK/EFI/APPLE/FIRMWARE
Deleting /Volumes/bless.bKpK/EFI/APPLE/FIRMWARE/MBP121.fd (8388608 bytes)
Opened dest at /Volumes/bless.bKpK/EFI/APPLE/FIRMWARE/MBP121.fd for writing
preallocation not supported on this filesystem for /Volumes/bless.bKpK/EFI/APPLE/FIRMWARE/MBP121.fd

/Volumes/bless.bKpK/EFI/APPLE/FIRMWARE/MBP121.fd created successfully
No auxiliary booter partition required
System partition found
Preferred system partition found: disk0s1
Returning booter information dictionary:
{
    "Auxiliary Partitions" =     (
    );
    "Data Partitions" =     (
        disk1s1
    );
    "Preboot Volumes" =     (
        disk1s2
    );
    "System Partitions" =     (
        disk0s1
    );
}
Bad path for boot item: /Users/dada/Desktop/firmware/MBP121.fd
Relative path of /Volumes/bless.bKpK/EFI/APPLE/FIRMWARE/MBP121.fd is \EFI\APPLE\FIRMWARE\MBP121.fd
IOMedia disk0s1 has UUID BCCC0725-7D0F-448A-B78F-CDCBF216B6E4
Executing "/sbin/umount"
Returned 0
Write to RTC: 0
Setting EFI NVRAM:
{
    "efi-apple-recovery" = "<array><dict><key>IOMatch</key><dict><key>IOProviderClass</key><string>IOMedia</string><key>IOPropertyMatch</key><dict><key>UUID</key><string>BCCC0725-7D0F-448A-B78F-CDCBF216B6E4</string></dict></dict><key>BLLastBSDName</key><string>disk0s1</string></dict><dict><key>IOEFIDevicePathType</key><string>MediaFilePath</string><key>Path</key><string>\\EFI\\APPLE\\FIRMWARE\\MBP121.fd</string></dict></array>";
}

I can confirm that the file is on the EFI partition after that.

As I understand it, I should then be able to shut down, and power up by holding down the power button - eventually I should hear a beep and it should apply the firmware update, and then boot with the update applied. However, that just doesn't happen. When I hold down the power button it takes about 15 seconds and then it just boots up normally. Nothing seems to happen. I don't know if there's supposed to be some way to tell that it's doing the firmware update.

I've tried with the macOS 11 and 12 MBP121.fd files (they have a different md5sum), neither of them work.

Install macOS Big Sur
  8388608  09-04-2023 07:00   AssetData/boot/EFI/EFIPayloads/MBP121.fd
Install macOS Monterey
  8388608  12-21-2023 15:27   AssetData/boot/EFI/EFIPayloads/MBP121.fd

81bac94c0f7541ee8ff19868ccb5c1c8  MBP121_11.fd
77e83cd9c42c18c9f9e74a95ee081d6f  MBP121_12.fd

I'm stumped, do you have any idea what I did wrong? I would appreciate any thoughts!

edit: SilentKnight output:

Screenshot 2025-09-01 at 12 48 11

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment