This software is not supported on your system
These are the instructions to brick your Mac Mini from Mid 2011. I am writing this as an example. You are entirely responsible for what you will do with it. There is room for things to go wrong and they surely will. The idea behind this short article is to show how to bypass some check contraints and restrictions contained in an Apple installer package
Let’s suppose I download the latest EFI Update for my Mac Mini and that I get the following message
At this point I already downloaded the Macmini2011EFIUpdate.dmg image and double clicked on it. So that’s mounted. Next step is to unpack the pkg. Open a terminal windows and run:
pkgutil --expand /Volumes/Mac mini EFI Updater/Macmini2011EFIUpdate.pkg ~/Desktop/Macmini2011EFIUpdate.unpkg
What this does is to expand the downloaded PKG from the Volumes mount point to a folder on my home directory Desktop. At this point I navigate with Finder to my Desktop and see the Macmini2011EFIUpdate.unpkg folder in there
Click on it and within the folder I find a file called Distribution. Right click on it, select Open With and then Other. From the Enable listbox select All Application and then TextEdit. The content of that file is as follows
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<installer-gui-script minSpecVersion="1">
<options type="firmware" customize="never" hostArchitectures="i386" rootVolumeOnly="true"/>
<title>SU_TITLE</title>
<script>
</script>
<volume-check script="VolumeCheck()"/>
<installation-check script="InstallationCheck()"/>
<script>
function InstallationCheck(prefix) {
var models = ['Macmini5,1','Macmini5,2','Macmini5,3',];
var model = system.sysctl('hw.model’);
if (models.indexOf(model) == -1) {
my.result.message = system.localizedString('ERROR_1’);
my.result.type = 'Fatal’;
return false;
}
var versions = ['MM51.88Z.0075.B00.1106271442','MM51.88Z.0077.B0A.1109091226','MM51.88Z.0077.B0E.1110141154','MM51.88Z.0077.B0F.1110201309',];
var rom = system.ioregistry.fromPath('IODeviceTree:/rom@0’);
if (!rom || !(rom.version) || versions.indexOf(rom.version) == -1) {
my.result.message = system.localizedString('ERROR_1’);
my.result.type = 'Fatal’;
return false;
}
if (system.compareVersions(system.version.ProductVersion, '10.7.3') < 0) {
my.result.message = system.localizedStringWithFormat('ERROR_0', '10.7.3’);
my.result.type = 'Fatal’;
return false;
}
return true;
}
function VolumeCheck(prefix) {
if (system.env.OS_INSTALL == 1) return true;
var hasOS = system.files.fileExistsAtPath(my.target.mountpoint + "/System/Library/CoreServices/SystemVersion.plist”);
if (!hasOS || system.compareVersions(my.target.systemVersion.ProductVersion, '10.7.3') < 0) {
my.result.message = system.localizedStringWithFormat('ERROR_0', '10.7.3’);
my.result.type = 'Fatal’;
return false;
}
return true;
}
</script>
<license file="License.rtf"/>
<readme file="ReadMe.html"/>
<choices-outline>
<line choice="manual"/>
</choices-outline>
<choice id="manual" title="SU_TITLE">
<pkg-ref id="MacMini" auth="Root" onConclusion="RequireRestart">#Macmini2011EFIUpdate.pkg</pkg-ref>
</choice>
<pkg-ref id='MacMini' installKBytes='5435' version='1.6.0.0.1.1330561108'/>
<pkg-ref id='MacMini' installKBytes='5435' version='1.6.0.0.1.1330561108'/>
</installer-gui-script>
And I changed all that with
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<installer-gui-script minSpecVersion="1">
<options type="firmware" customize="never" hostArchitectures="i386" rootVolumeOnly="true"/>
<title>SU_TITLE</title>
<script>
</script>
<license file="License.rtf"/>
<readme file="ReadMe.html"/>
<choices-outline>
<line choice="manual"/>
</choices-outline>
<choice id="manual" title="SU_TITLE">
<pkg-ref id="MacMini" auth="Root" onConclusion="RequireRestart">#Macmini2011EFIUpdate.pkg</pkg-ref>
</choice>
<pkg-ref id='MacMini' installKBytes='5435' version='1.6.0.0.1.1330561108'/>
<pkg-ref id='MacMini' installKBytes='5435' version='1.6.0.0.1.1330561108'/>
</installer-gui-script>
So I removed all the checks, making the script extremely dangerous and likely to brick my Mac Mini
I can now repackage the directory with
pkgutil --flatten ~/Desktop/Macmini2011EFIUpdate.unpkg ~/Desktop/Macmini2011EFIUpdate.pkg
Now I am able to run the file. However, additional errors might appear as I try to actually install the Firmware. This file in particular should run under High Sierra, so I might need to update or downgrade your macOS. Possible error message: “This package is incompatible with this version of macOS. The package is trying to install content to the system volume. Contact the software manufacturer for assistance.”
In my case this was probably caused by the fact that starting with macOS Catalina, the macOS system volume was made read-only for security reasons. I am not sure there is an easy way around it. I just downgraded the OS to High Sierra
The reason why I was looking into this was related to macOS Catalina. I own a Mac Mini Mid 2011 with 16GB of RAM, dual SSD drive and a 2.3 Ghz Dual-Core Intel Core i5. For some reasons Apple decided that the latest macOS for this particular model is High Sierra. I thought I needed to upgrade its EFI for some reasons related to booting from the new APFS read-only system volume and eventually install macOS Catalina on it. If you are after doing something similar I would start by installing High Sierra and update everything to the latest and greatest. If that doesn’t work, I would try with the supplied installer of APFS BootROM Support (under “Important Info”) and only when all of that had failed move on to other more risky attempts. Installing this EFI update is not what you need, if the EFI installer says you don’t need it. I did all this only because I was researching the problem and ended up looking into this as well. I was somehow lucky eventually. I am actually writing this on my Mac Mini Mid 2011 and, yes, on macOS Catalina. Works great
I had issues after installing macOS Catalina, when I tried to activate FileVault. I eventually decided to start the Mac Mini with an High Sierra image, format the System drive as Encrypted since the very beginning and install Catalina later. By doing that I now have a “Disk Password” user at login, and the current user I am using has been set as able to auto-open the encrypted disk. That solved the problem