I cannot get the Xserve EFI Firmware Update 1.2 (firmware XS31.0081.B06) to successfully update on my 2009 XServe. Current firmware is XS31.0081.B04 and current OS is 10.6.8.
I've tried every trick I can find but no luck. I don't think it's relevant but I'll mention that the Xserve RAID Card has a dead battery.
The boot drive is the internal RAID volume shown above. Here's the disk layout:
/dev/disk0
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *16.0 GB disk0
1: EFI 209.7 MB disk0s1
2: Apple_HFS RAID1 15.7 GB disk0s2
The Xserve EFI Firmware Update utility is installed in Applications > Utilities. When run from the GUI, the Shutdown window is displayed as expected.
Clicking shutdown causes the machine to restart and then one of two things happens - it comes up with the flashing question mark folder icon or it goes through the motions of updating the firmware but it doesn't actually update it.
Let's run through the process...
First I'm going to completely clear nvram to ensure no residual data will cause an issue.
nvram -c
Next I'll open System Preferences > Startup Disk and set the startup disk so it is stored in nvram
nvram -p now shows
efi-boot-device <array><dict><key>IOMatch</key><dict><key>IOProviderClass</key><string>IOMedia</string><key>IOPropertyMatch</key><dict><key>UUID</key><string>B37F83E7-5E12-490F-80F7-D4B6B1E7A47C</string></dict></dict><key>BLLastBSDName</key><string>disk0s2</string></dict></array>
efi-boot-device-data %02%01%0c%00%d0A%03%0a%00%00%00%00%01%01%06%00%00%01%01%01%06%00%00%00%03%0a,%00%b4%dd%87%d4%8b%00%d9%11%af%dc%00%10%83%ff%caM%00%00%00%00%bd^#%00%07%00%08P%01%00%00%00%00%00%00%00%00%00%01%00%04%01*%00%02%00%00%00(@%06%00%00%00%00%00%b0%8f%d2%01%00%00%00%00%e7%83%7f%b3%12^%0fI%80%f7%d4%b6%b1%e7%a4|%02%02%7f%ff%04%00
prev-lang:kbd en:0
Next I'll run The Xserve EFI Firmware Update utility and select Shutdown when prompted. One more dialog box to enter admin credentials and click OK. The machine shuts down/restarts as expected. This time the firmware update progress bar appears after about 30 seconds of a blank gray screen but the progress indicator doesn't do anything.
It's on screen for about 10 seconds then the machine restarts again and boots to the desktop. The Xserve EFI Firmware Update utility is automatically launched. Note that I can run it again and again and get the same behavior.
Let's see what the nvram looks like now:
efi-boot-device <array><dict><key>IOMatch</key><dict><key>IOProviderClass</key><string>IOMedia</string><key>IOPropertyMatch</key><dict><key>UUID</key><string>B37F83E7-5E12-490F-80F7-D4B6B1E7A47C</string></dict></dict><key>BLLastBSDName</key><string>disk0s2</string></dict></array>%00
efi-boot-device-data %02%01%0c%00%d0A%03%0a%00%00%00%00%01%01%06%00%00%01%01%01%06%00%00%00%03%0a,%00%b4%dd%87%d4%8b%00%d9%11%af%dc%00%10%83%ff%caM%00%00%00%00%bd^#%00%07%00%08P%01%00%00%00%00%00%00%00%00%00%01%00%04%01*%00%02%00%00%00(@%06%00%00%00%00%00%b0%8f%d2%01%00%00%00%00%e7%83%7f%b3%12^%0fI%80%f7%d4%b6%b1%e7%a4|%02%02%7f%ff%04%00
efi-apple-payload0 <array><dict><key>IOMatch</key><dict><key>IOProviderClass</key><string>IOMedia</string><key>IOPropertyMatch</key><dict><key>UUID</key><string>3FE85BEE-F5BD-4D4C-8437-32F9A442E0CB</string></dict></dict><key>BLLastBSDName</key><string>disk0s1</string></dict><dict><key>IOEFIDevicePathType</key><string>MediaFilePath</string><key>Path</key><string>\EFI\APPLE\FIRMWARE\XS31_0081_06B_LOCKED.fd</string></dict></array>%00
EFIUpdaterApp_Result %02%06%84%00
prev-lang:kbd en:0
efi-apple-payload0-data %02%01%0c%00%d0A%03%0a%00%00%00%00%01%01%06%00%00%01%01%01%06%00%00%00%03%0a,%00%b4%dd%87%d4%8b%00%d9%11%af%dc%00%10%83%ff%caM%00%00%00%00%bd^#%00%07%00%08P%01%00%00%00%00%00%00%00%00%00%01%00%04%01*%00%01%00%00%00(%00%00%00%00%00%00%00%00@%06%00%00%00%00%00%ee[%e8?%bd%f5LM%8472%f9%a4B%e0%cb%02%02%04%04\%00\%00E%00F%00I%00\%00A%00P%00P%00L%00E%00\%00F%00I%00R%00M%00W%00A%00R%00E%00\%00X%00S%003%001%00_%000%000%008%001%00_%000%006%00B%00_%00L%00O%00C%00K%00E%00D%00.%00f%00d%00%00%00%7f%ff%04%00
From what I know, it appears everything is getting added correctly. Of note is the EFIUpdaterApp_Result code. Anyone know what that value means?
I've also verified that the EfiUpdaterApp2.efi and XS31_0081_06B_LOCKED.fd files reside on the EFI partition at the correct path.
Now let's try doing the remote install originally outlined in this Apple KB article - http://support.apple.com/kb/HT3962 - Xserve (Early 2009): Applying EFI firmware update to a "headless" Xserve. It's long gone but can be found on Web Archive. Again I'll clear nvram to start fresh and reset the startup disk so we have a basic nvram profile. Now let's run the RemoteEFIUpdater
cd /Applications/Utilities/Xserve\ EFI\ Firmware\ Update.app/
sudo ./Contents/Resources/RemoteEFIUpdater
The tool launches and prompts for input as expected:
Your firmware needs to be updated.
Your computer will need to be shut down,
but will automatically power on and complete the update process.
Instructions will be provided.
Run this program with option '-h' for help.
Enter 'y' to confirm you want to update your firmware.
Press Y, enter
2020-01-07 13:37:29.171 RemoteEFIUpdater[204:903] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'launch path not accessible'
*** Call stack at first throw:
(
0 CoreFoundation 0x95ec96ca __raiseError + 410
1 libobjc.A.dylib 0x9698e5a9 objc_exception_throw + 56
2 CoreFoundation 0x95ec93f8 +[NSException raise:format:arguments:] + 136
3 CoreFoundation 0x95ec936a +[NSException raise:format:] + 58
4 Foundation 0x98e27809 -[NSConcreteTask launchWithDictionary:] + 487
5 Foundation 0x98e655f5 +[NSTask launchedTaskWithLaunchPath:arguments:] + 251
6 RemoteEFIUpdater 0x0000307c 0x0 + 12412
7 RemoteEFIUpdater 0x0000339a 0x0 + 13210
8 RemoteEFIUpdater 0x00003541 0x0 + 13633
9 RemoteEFIUpdater 0x000022ee 0x0 + 8942
)
Trace/BPT trap
And it terminates with an error. I found 1 post online referencing this error but no resolution. If we check nvram however, the utility did make some changes:
efi-boot-device <array><dict><key>IOMatch</key><dict><key>IOProviderClass</key><string>IOMedia</string><key>IOPropertyMatch</key><dict><key>UUID</key><string>B37F83E7-5E12-490F-80F7-D4B6B1E7A47C</string></dict></dict><key>BLLastBSDName</key><string>disk0s2</string></dict></array>
prev-lang:kbd en:0
efi-boot-next <array><dict><key>IOMatch</key><dict><key>IOProviderClass</key><string>IOMedia</string><key>IOPropertyMatch</key><dict><key>UUID</key><string>3FE85BEE-F5BD-4D4C-8437-32F9A442E0CB</string></dict></dict><key>BLLastBSDName</key><string>disk0s1</string></dict><dict><key>IOEFIDevicePathType</key><string>MediaFilePath</string><key>Path</key><string>\EFI\APPLE\FIRMWARE\EfiUpdaterApp2.efi</string></dict><dict><key>IOEFIBootOption</key><string>"-x efi-apple-payload0-data"</string></dict></array>
efi-apple-payload0 <array><dict><key>IOMatch</key><dict><key>IOProviderClass</key><string>IOMedia</string><key>IOPropertyMatch</key><dict><key>UUID</key><string>3FE85BEE-F5BD-4D4C-8437-32F9A442E0CB</string></dict></dict><key>BLLastBSDName</key><string>disk0s1</string></dict><dict><key>IOEFIDevicePathType</key><string>MediaFilePath</string><key>Path</key><string>\EFI\APPLE\FIRMWARE\XS31_0081_06B_LOCKED.fd</string></dict></array>
efi-boot-device-data %02%01%0c%00%d0A%03%0a%00%00%00%00%01%01%06%00%00%01%01%01%06%00%00%00%03%0a,%00%b4%dd%87%d4%8b%00%d9%11%af%dc%00%10%83%ff%caM%00%00%00%00%bd^#%00%07%00%08P%01%00%00%00%00%00%00%00%00%00%01%00%04%01*%00%02%00%00%00(@%06%00%00%00%00%00%b0%8f%d2%01%00%00%00%00%e7%83%7f%b3%12^%0fI%80%f7%d4%b6%b1%e7%a4|%02%02%7f%ff%04%00
efi-apple-payload0-data %02%01%0c%00%d0A%03%0a%00%00%00%00%01%01%06%00%00%01%01%01%06%00%00%00%03%0a,%00%b4%dd%87%d4%8b%00%d9%11%af%dc%00%10%83%ff%caM%00%00%00%00%bd^#%00%07%00%08P%01%00%00%00%00%00%00%00%00%00%01%00%04%01*%00%01%00%00%00(%00%00%00%00%00%00%00%00@%06%00%00%00%00%00%ee[%e8?%bd%f5LM%8472%f9%a4B%e0%cb%02%02%04%04\%00\%00E%00F%00I%00\%00A%00P%00P%00L%00E%00\%00F%00I%00R%00M%00W%00A%00R%00E%00\%00X%00S%003%001%00_%000%000%008%001%00_%000%006%00B%00_%00L%00O%00C%00K%00E%00D%00.%00f%00d%00%00%00%7f%ff%04%00
efi-boot-next-data %02%01%0c%00%d0A%03%0a%00%00%00%00%01%01%06%00%00%01%01%01%06%00%00%00%03%0a,%00%b4%dd%87%d4%8b%00%d9%11%af%dc%00%10%83%ff%caM%00%00%00%00%bd^#%00%07%00%08P%01%00%00%00%00%00%00%00%00%00%01%00%04%01*%00%01%00%00%00(%00%00%00%00%00%00%00%00@%06%00%00%00%00%00%ee[%e8?%bd%f5LM%8472%f9%a4B%e0%cb%02%02%04%04R%00\%00E%00F%00I%00\%00A%00P%00P%00L%00E%00\%00F%00I%00R%00M%00W%00A%00R%00E%00\%00E%00f%00i%00U%00p%00d%00a%00t%00e%00r%00A%00p%00p%002%00.%00e%00f%00i%00%00%00%7f%ff%04%00
Note that the efi-boot-next and efi-boot-next-data parameters are present now when they weren't with the GUI tool. That's because we're seeing the data pre-boot this time. Other than that it's writing the same data to nvram. Let's go ahead and restart to see what happens.
shutdown -r now
Same thing this time around, the firmware update progress bar appears for a short while then it restarts and boots to the desktop with no firmware update taking place. Still at XS31.0081.B04.
Prior to all of this I went as far as trying to manually invoke the update using the following command after copying the EfiUpdaterApp2.efi and XS31_0081_06B_LOCKED.fd files to /System/Library/CoreServices/Firmware\ Updates/
bless -mount / -firmware /System/Library/CoreServices/Firmware\ Updates/EfiUpdaterApp2.efi -payload /System/Library/CoreServices/Firmware\ Updates/XS31_0081_06B_LOCKED.fd -options "-x efi-apple-payload0-data" --verbose
Output was:
EFI found at IODeviceTree:/efi
GPT detected
No auxiliary booter partition required
System partition found
Returning booter information dictionary:
<CFBasicHash 0x100201630 [0x7fff702c6ee0]>{type = mutable dict, count = 3,
entries =>
0 : <CFString 0x100019a60 [0x7fff702c6ee0]>{contents = "System Partitions"} = <CFArray 0x100201560 [0x7fff702c6ee0]>{type = immutable, count = 1, values = (
0 : <CFString 0x1002015f0 [0x7fff702c6ee0]>{contents = "disk0s1"}
)}
1 : <CFString 0x10001a2a0 [0x7fff702c6ee0]>{contents = "Data Partitions"} = <CFArray 0x100201a30 [0x7fff702c6ee0]>{type = immutable, count = 1, values = (
0 : <CFString 0x7fff702ab9b0 [0x7fff702c6ee0]>{contents = "disk0s2"}
)}
2 : <CFString 0x100019a20 [0x7fff702c6ee0]>{contents = "Auxiliary Partitions"} = <CFArray 0x100201200 [0x7fff702c6ee0]>{type = immutable, count = 0, values = ()}
}
Substituting ESP disk0s1
Mounting at /Volumes/bless.c9ah
Executing "/sbin/mount"
Returned 0
Creating /Volumes/bless.c9ah//EFI/APPLE/FIRMWARE if needed
Deleting previous contents of /Volumes/bless.c9ah//EFI/APPLE/FIRMWARE
Opened dest at /Volumes/bless.c9ah//EFI/APPLE/FIRMWARE//EfiUpdaterApp2.efi for writing
preallocation not supported on this filesystem for /Volumes/bless.c9ah//EFI/APPLE/FIRMWARE//EfiUpdaterApp2.efi
Type/creator set to / for /Volumes/bless.c9ah//EFI/APPLE/FIRMWARE//EfiUpdaterApp2.efi
/Volumes/bless.c9ah//EFI/APPLE/FIRMWARE//EfiUpdaterApp2.efi created successfully
Relative path of /Volumes/bless.c9ah//EFI/APPLE/FIRMWARE//EfiUpdaterApp2.efi is \EFI\APPLE\FIRMWARE\EfiUpdaterApp2.efi
IOMedia disk0s1 has UUID 3FE85BEE-F5BD-4D4C-8437-32F9A442E0CB
Opened dest at /Volumes/bless.c9ah//EFI/APPLE/FIRMWARE//XS31_0081_06B_LOCKED.fd for writing
preallocation not supported on this filesystem for /Volumes/bless.c9ah//EFI/APPLE/FIRMWARE//XS31_0081_06B_LOCKED.fd
Type/creator set to / for /Volumes/bless.c9ah//EFI/APPLE/FIRMWARE//XS31_0081_06B_LOCKED.fd
/Volumes/bless.c9ah//EFI/APPLE/FIRMWARE//XS31_0081_06B_LOCKED.fd created successfully
Relative path of /Volumes/bless.c9ah//EFI/APPLE/FIRMWARE//XS31_0081_06B_LOCKED.fd is \EFI\APPLE\FIRMWARE\XS31_0081_06B_LOCKED.fd
IOMedia disk0s1 has UUID 3FE85BEE-F5BD-4D4C-8437-32F9A442E0CB
Setting EFI NVRAM:
<CFBasicHash 0x1005015f0 [0x7fff702c6ee0]>{type = mutable dict, count = 2,
entries =>
1 : <CFString 0x100019a80 [0x7fff702c6ee0]>{contents = "efi-boot-next"} = <CFString 0x100502030 [0x7fff702c6ee0]>{contents = "<array><dict><key>IOMatch</key><dict><key>IOProviderClass</key><string>IOMedia</string><key>IOPropertyMatch</key><dict><key>UUID</key><string>3FE85BEE-F5BD-4D4C-8437-32F9A442E0CB</string></dict></dict><key>BLLastBSDName</key><string>disk0s1</string></dict><dict><key>IOEFIDevicePathType</key><string>MediaFilePath</string><key>Path</key><string>\EFI\APPLE\FIRMWARE\EfiUpdaterApp2.efi</string></dict><dict><key>IOEFIBootOption</key><string>-x efi-apple-payload0-data</string></dict></array>"}
2 : <CFString 0x100501de0 [0x7fff702c6ee0]>{contents = "efi-apple-payload0"} = <CFString 0x1002019a0 [0x7fff702c6ee0]>{contents = "<array><dict><key>IOMatch</key><dict><key>IOProviderClass</key><string>IOMedia</string><key>IOPropertyMatch</key><dict><key>UUID</key><string>3FE85BEE-F5BD-4D4C-8437-32F9A442E0CB</string></dict></dict><key>BLLastBSDName</key><string>disk0s1</string></dict><dict><key>IOEFIDevicePathType</key><string>MediaFilePath</string><key>Path</key><string>\EFI\APPLE\FIRMWARE\XS31_0081_06B_LOCKED.fd</string></dict></array>"}
}
Executing "/sbin/umount"
Returned 0
Again, it appeared to set all of the correct values in nvram but the firmware did not update.
I'm open to any suggestions at this point.
I've tried every trick I can find but no luck. I don't think it's relevant but I'll mention that the Xserve RAID Card has a dead battery.
The boot drive is the internal RAID volume shown above. Here's the disk layout:
/dev/disk0
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *16.0 GB disk0
1: EFI 209.7 MB disk0s1
2: Apple_HFS RAID1 15.7 GB disk0s2
The Xserve EFI Firmware Update utility is installed in Applications > Utilities. When run from the GUI, the Shutdown window is displayed as expected.
Clicking shutdown causes the machine to restart and then one of two things happens - it comes up with the flashing question mark folder icon or it goes through the motions of updating the firmware but it doesn't actually update it.
Let's run through the process...
First I'm going to completely clear nvram to ensure no residual data will cause an issue.
nvram -c
Next I'll open System Preferences > Startup Disk and set the startup disk so it is stored in nvram
nvram -p now shows
efi-boot-device <array><dict><key>IOMatch</key><dict><key>IOProviderClass</key><string>IOMedia</string><key>IOPropertyMatch</key><dict><key>UUID</key><string>B37F83E7-5E12-490F-80F7-D4B6B1E7A47C</string></dict></dict><key>BLLastBSDName</key><string>disk0s2</string></dict></array>
efi-boot-device-data %02%01%0c%00%d0A%03%0a%00%00%00%00%01%01%06%00%00%01%01%01%06%00%00%00%03%0a,%00%b4%dd%87%d4%8b%00%d9%11%af%dc%00%10%83%ff%caM%00%00%00%00%bd^#%00%07%00%08P%01%00%00%00%00%00%00%00%00%00%01%00%04%01*%00%02%00%00%00(@%06%00%00%00%00%00%b0%8f%d2%01%00%00%00%00%e7%83%7f%b3%12^%0fI%80%f7%d4%b6%b1%e7%a4|%02%02%7f%ff%04%00
prev-lang:kbd en:0
Next I'll run The Xserve EFI Firmware Update utility and select Shutdown when prompted. One more dialog box to enter admin credentials and click OK. The machine shuts down/restarts as expected. This time the firmware update progress bar appears after about 30 seconds of a blank gray screen but the progress indicator doesn't do anything.
It's on screen for about 10 seconds then the machine restarts again and boots to the desktop. The Xserve EFI Firmware Update utility is automatically launched. Note that I can run it again and again and get the same behavior.
Let's see what the nvram looks like now:
efi-boot-device <array><dict><key>IOMatch</key><dict><key>IOProviderClass</key><string>IOMedia</string><key>IOPropertyMatch</key><dict><key>UUID</key><string>B37F83E7-5E12-490F-80F7-D4B6B1E7A47C</string></dict></dict><key>BLLastBSDName</key><string>disk0s2</string></dict></array>%00
efi-boot-device-data %02%01%0c%00%d0A%03%0a%00%00%00%00%01%01%06%00%00%01%01%01%06%00%00%00%03%0a,%00%b4%dd%87%d4%8b%00%d9%11%af%dc%00%10%83%ff%caM%00%00%00%00%bd^#%00%07%00%08P%01%00%00%00%00%00%00%00%00%00%01%00%04%01*%00%02%00%00%00(@%06%00%00%00%00%00%b0%8f%d2%01%00%00%00%00%e7%83%7f%b3%12^%0fI%80%f7%d4%b6%b1%e7%a4|%02%02%7f%ff%04%00
efi-apple-payload0 <array><dict><key>IOMatch</key><dict><key>IOProviderClass</key><string>IOMedia</string><key>IOPropertyMatch</key><dict><key>UUID</key><string>3FE85BEE-F5BD-4D4C-8437-32F9A442E0CB</string></dict></dict><key>BLLastBSDName</key><string>disk0s1</string></dict><dict><key>IOEFIDevicePathType</key><string>MediaFilePath</string><key>Path</key><string>\EFI\APPLE\FIRMWARE\XS31_0081_06B_LOCKED.fd</string></dict></array>%00
EFIUpdaterApp_Result %02%06%84%00
prev-lang:kbd en:0
efi-apple-payload0-data %02%01%0c%00%d0A%03%0a%00%00%00%00%01%01%06%00%00%01%01%01%06%00%00%00%03%0a,%00%b4%dd%87%d4%8b%00%d9%11%af%dc%00%10%83%ff%caM%00%00%00%00%bd^#%00%07%00%08P%01%00%00%00%00%00%00%00%00%00%01%00%04%01*%00%01%00%00%00(%00%00%00%00%00%00%00%00@%06%00%00%00%00%00%ee[%e8?%bd%f5LM%8472%f9%a4B%e0%cb%02%02%04%04\%00\%00E%00F%00I%00\%00A%00P%00P%00L%00E%00\%00F%00I%00R%00M%00W%00A%00R%00E%00\%00X%00S%003%001%00_%000%000%008%001%00_%000%006%00B%00_%00L%00O%00C%00K%00E%00D%00.%00f%00d%00%00%00%7f%ff%04%00
From what I know, it appears everything is getting added correctly. Of note is the EFIUpdaterApp_Result code. Anyone know what that value means?
I've also verified that the EfiUpdaterApp2.efi and XS31_0081_06B_LOCKED.fd files reside on the EFI partition at the correct path.
Now let's try doing the remote install originally outlined in this Apple KB article - http://support.apple.com/kb/HT3962 - Xserve (Early 2009): Applying EFI firmware update to a "headless" Xserve. It's long gone but can be found on Web Archive. Again I'll clear nvram to start fresh and reset the startup disk so we have a basic nvram profile. Now let's run the RemoteEFIUpdater
cd /Applications/Utilities/Xserve\ EFI\ Firmware\ Update.app/
sudo ./Contents/Resources/RemoteEFIUpdater
The tool launches and prompts for input as expected:
Your firmware needs to be updated.
Your computer will need to be shut down,
but will automatically power on and complete the update process.
Instructions will be provided.
Run this program with option '-h' for help.
Enter 'y' to confirm you want to update your firmware.
Press Y, enter
2020-01-07 13:37:29.171 RemoteEFIUpdater[204:903] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'launch path not accessible'
*** Call stack at first throw:
(
0 CoreFoundation 0x95ec96ca __raiseError + 410
1 libobjc.A.dylib 0x9698e5a9 objc_exception_throw + 56
2 CoreFoundation 0x95ec93f8 +[NSException raise:format:arguments:] + 136
3 CoreFoundation 0x95ec936a +[NSException raise:format:] + 58
4 Foundation 0x98e27809 -[NSConcreteTask launchWithDictionary:] + 487
5 Foundation 0x98e655f5 +[NSTask launchedTaskWithLaunchPath:arguments:] + 251
6 RemoteEFIUpdater 0x0000307c 0x0 + 12412
7 RemoteEFIUpdater 0x0000339a 0x0 + 13210
8 RemoteEFIUpdater 0x00003541 0x0 + 13633
9 RemoteEFIUpdater 0x000022ee 0x0 + 8942
)
Trace/BPT trap
And it terminates with an error. I found 1 post online referencing this error but no resolution. If we check nvram however, the utility did make some changes:
efi-boot-device <array><dict><key>IOMatch</key><dict><key>IOProviderClass</key><string>IOMedia</string><key>IOPropertyMatch</key><dict><key>UUID</key><string>B37F83E7-5E12-490F-80F7-D4B6B1E7A47C</string></dict></dict><key>BLLastBSDName</key><string>disk0s2</string></dict></array>
prev-lang:kbd en:0
efi-boot-next <array><dict><key>IOMatch</key><dict><key>IOProviderClass</key><string>IOMedia</string><key>IOPropertyMatch</key><dict><key>UUID</key><string>3FE85BEE-F5BD-4D4C-8437-32F9A442E0CB</string></dict></dict><key>BLLastBSDName</key><string>disk0s1</string></dict><dict><key>IOEFIDevicePathType</key><string>MediaFilePath</string><key>Path</key><string>\EFI\APPLE\FIRMWARE\EfiUpdaterApp2.efi</string></dict><dict><key>IOEFIBootOption</key><string>"-x efi-apple-payload0-data"</string></dict></array>
efi-apple-payload0 <array><dict><key>IOMatch</key><dict><key>IOProviderClass</key><string>IOMedia</string><key>IOPropertyMatch</key><dict><key>UUID</key><string>3FE85BEE-F5BD-4D4C-8437-32F9A442E0CB</string></dict></dict><key>BLLastBSDName</key><string>disk0s1</string></dict><dict><key>IOEFIDevicePathType</key><string>MediaFilePath</string><key>Path</key><string>\EFI\APPLE\FIRMWARE\XS31_0081_06B_LOCKED.fd</string></dict></array>
efi-boot-device-data %02%01%0c%00%d0A%03%0a%00%00%00%00%01%01%06%00%00%01%01%01%06%00%00%00%03%0a,%00%b4%dd%87%d4%8b%00%d9%11%af%dc%00%10%83%ff%caM%00%00%00%00%bd^#%00%07%00%08P%01%00%00%00%00%00%00%00%00%00%01%00%04%01*%00%02%00%00%00(@%06%00%00%00%00%00%b0%8f%d2%01%00%00%00%00%e7%83%7f%b3%12^%0fI%80%f7%d4%b6%b1%e7%a4|%02%02%7f%ff%04%00
efi-apple-payload0-data %02%01%0c%00%d0A%03%0a%00%00%00%00%01%01%06%00%00%01%01%01%06%00%00%00%03%0a,%00%b4%dd%87%d4%8b%00%d9%11%af%dc%00%10%83%ff%caM%00%00%00%00%bd^#%00%07%00%08P%01%00%00%00%00%00%00%00%00%00%01%00%04%01*%00%01%00%00%00(%00%00%00%00%00%00%00%00@%06%00%00%00%00%00%ee[%e8?%bd%f5LM%8472%f9%a4B%e0%cb%02%02%04%04\%00\%00E%00F%00I%00\%00A%00P%00P%00L%00E%00\%00F%00I%00R%00M%00W%00A%00R%00E%00\%00X%00S%003%001%00_%000%000%008%001%00_%000%006%00B%00_%00L%00O%00C%00K%00E%00D%00.%00f%00d%00%00%00%7f%ff%04%00
efi-boot-next-data %02%01%0c%00%d0A%03%0a%00%00%00%00%01%01%06%00%00%01%01%01%06%00%00%00%03%0a,%00%b4%dd%87%d4%8b%00%d9%11%af%dc%00%10%83%ff%caM%00%00%00%00%bd^#%00%07%00%08P%01%00%00%00%00%00%00%00%00%00%01%00%04%01*%00%01%00%00%00(%00%00%00%00%00%00%00%00@%06%00%00%00%00%00%ee[%e8?%bd%f5LM%8472%f9%a4B%e0%cb%02%02%04%04R%00\%00E%00F%00I%00\%00A%00P%00P%00L%00E%00\%00F%00I%00R%00M%00W%00A%00R%00E%00\%00E%00f%00i%00U%00p%00d%00a%00t%00e%00r%00A%00p%00p%002%00.%00e%00f%00i%00%00%00%7f%ff%04%00
Note that the efi-boot-next and efi-boot-next-data parameters are present now when they weren't with the GUI tool. That's because we're seeing the data pre-boot this time. Other than that it's writing the same data to nvram. Let's go ahead and restart to see what happens.
shutdown -r now
Same thing this time around, the firmware update progress bar appears for a short while then it restarts and boots to the desktop with no firmware update taking place. Still at XS31.0081.B04.
Prior to all of this I went as far as trying to manually invoke the update using the following command after copying the EfiUpdaterApp2.efi and XS31_0081_06B_LOCKED.fd files to /System/Library/CoreServices/Firmware\ Updates/
bless -mount / -firmware /System/Library/CoreServices/Firmware\ Updates/EfiUpdaterApp2.efi -payload /System/Library/CoreServices/Firmware\ Updates/XS31_0081_06B_LOCKED.fd -options "-x efi-apple-payload0-data" --verbose
Output was:
EFI found at IODeviceTree:/efi
GPT detected
No auxiliary booter partition required
System partition found
Returning booter information dictionary:
<CFBasicHash 0x100201630 [0x7fff702c6ee0]>{type = mutable dict, count = 3,
entries =>
0 : <CFString 0x100019a60 [0x7fff702c6ee0]>{contents = "System Partitions"} = <CFArray 0x100201560 [0x7fff702c6ee0]>{type = immutable, count = 1, values = (
0 : <CFString 0x1002015f0 [0x7fff702c6ee0]>{contents = "disk0s1"}
)}
1 : <CFString 0x10001a2a0 [0x7fff702c6ee0]>{contents = "Data Partitions"} = <CFArray 0x100201a30 [0x7fff702c6ee0]>{type = immutable, count = 1, values = (
0 : <CFString 0x7fff702ab9b0 [0x7fff702c6ee0]>{contents = "disk0s2"}
)}
2 : <CFString 0x100019a20 [0x7fff702c6ee0]>{contents = "Auxiliary Partitions"} = <CFArray 0x100201200 [0x7fff702c6ee0]>{type = immutable, count = 0, values = ()}
}
Substituting ESP disk0s1
Mounting at /Volumes/bless.c9ah
Executing "/sbin/mount"
Returned 0
Creating /Volumes/bless.c9ah//EFI/APPLE/FIRMWARE if needed
Deleting previous contents of /Volumes/bless.c9ah//EFI/APPLE/FIRMWARE
Opened dest at /Volumes/bless.c9ah//EFI/APPLE/FIRMWARE//EfiUpdaterApp2.efi for writing
preallocation not supported on this filesystem for /Volumes/bless.c9ah//EFI/APPLE/FIRMWARE//EfiUpdaterApp2.efi
Type/creator set to / for /Volumes/bless.c9ah//EFI/APPLE/FIRMWARE//EfiUpdaterApp2.efi
/Volumes/bless.c9ah//EFI/APPLE/FIRMWARE//EfiUpdaterApp2.efi created successfully
Relative path of /Volumes/bless.c9ah//EFI/APPLE/FIRMWARE//EfiUpdaterApp2.efi is \EFI\APPLE\FIRMWARE\EfiUpdaterApp2.efi
IOMedia disk0s1 has UUID 3FE85BEE-F5BD-4D4C-8437-32F9A442E0CB
Opened dest at /Volumes/bless.c9ah//EFI/APPLE/FIRMWARE//XS31_0081_06B_LOCKED.fd for writing
preallocation not supported on this filesystem for /Volumes/bless.c9ah//EFI/APPLE/FIRMWARE//XS31_0081_06B_LOCKED.fd
Type/creator set to / for /Volumes/bless.c9ah//EFI/APPLE/FIRMWARE//XS31_0081_06B_LOCKED.fd
/Volumes/bless.c9ah//EFI/APPLE/FIRMWARE//XS31_0081_06B_LOCKED.fd created successfully
Relative path of /Volumes/bless.c9ah//EFI/APPLE/FIRMWARE//XS31_0081_06B_LOCKED.fd is \EFI\APPLE\FIRMWARE\XS31_0081_06B_LOCKED.fd
IOMedia disk0s1 has UUID 3FE85BEE-F5BD-4D4C-8437-32F9A442E0CB
Setting EFI NVRAM:
<CFBasicHash 0x1005015f0 [0x7fff702c6ee0]>{type = mutable dict, count = 2,
entries =>
1 : <CFString 0x100019a80 [0x7fff702c6ee0]>{contents = "efi-boot-next"} = <CFString 0x100502030 [0x7fff702c6ee0]>{contents = "<array><dict><key>IOMatch</key><dict><key>IOProviderClass</key><string>IOMedia</string><key>IOPropertyMatch</key><dict><key>UUID</key><string>3FE85BEE-F5BD-4D4C-8437-32F9A442E0CB</string></dict></dict><key>BLLastBSDName</key><string>disk0s1</string></dict><dict><key>IOEFIDevicePathType</key><string>MediaFilePath</string><key>Path</key><string>\EFI\APPLE\FIRMWARE\EfiUpdaterApp2.efi</string></dict><dict><key>IOEFIBootOption</key><string>-x efi-apple-payload0-data</string></dict></array>"}
2 : <CFString 0x100501de0 [0x7fff702c6ee0]>{contents = "efi-apple-payload0"} = <CFString 0x1002019a0 [0x7fff702c6ee0]>{contents = "<array><dict><key>IOMatch</key><dict><key>IOProviderClass</key><string>IOMedia</string><key>IOPropertyMatch</key><dict><key>UUID</key><string>3FE85BEE-F5BD-4D4C-8437-32F9A442E0CB</string></dict></dict><key>BLLastBSDName</key><string>disk0s1</string></dict><dict><key>IOEFIDevicePathType</key><string>MediaFilePath</string><key>Path</key><string>\EFI\APPLE\FIRMWARE\XS31_0081_06B_LOCKED.fd</string></dict></array>"}
}
Executing "/sbin/umount"
Returned 0
Again, it appeared to set all of the correct values in nvram but the firmware did not update.
I'm open to any suggestions at this point.
Last edited: