A GUIDE TO USING LATEBLOOM
Q. What is LATEBLOOM?
A. Latebloom is a experimental software workaround for the race condition encountered when booting MacPro 4,1 and MacPro 5,1 computers using macOS 11.3+. The software workaround is supplied as latebloom.kext. The term kext is shorthand for kernel extension. Kexts are used by developers to load code directly into the macOS kernel. Kernel extensions can be injected to the OS in the pre-boot environment by a boot loader such as OpenCore.
Q. Who developed latebloom?
A. MacRumors user
@Syncretic created latebloom.kext and posted it to MacRumors for beta testing in the MP 1,1-5,1 forum thread
Latebloom - An experimental workaround for the 11.3+ race condition. The author described latebloom.kext as follows, "This kext hooks the IOPCIFamily PCI Bus Probe routine and adds delays as specified by its arguments.”
Q. Who can use this software?
A. Latebloom is experimental software currently undergoing beta testing by MacRumors MacPro forum users and available to users accessing the forums.
Q. Who should use this software?
A. The latebloom kext is designed as a workaround to a booting issue for MacPro 4,1 and MacPro 5,1 users unable to boot Big Sur 11.3+ and Monterey beta versions that cannot reliably boot due to an unknown root cause. This kext has been designed around the presumption that the issue involves PCIe bus enumeration.
Q. How is the kext incorporated into macOS 11.3+?
A. The kext can be injected into the operating system prior to macOS booting by two methods. The method described in the forum thread uses the OpenCore boot loader to install, run and update macOS Big Sur and Monterey. The OpenCore config.plist is used to inject the kext into macOS. Note that latebloom.kext is not needed for macOS Catalina. Latebloom.kext is only required in Big Sur versions 11.3+. If OpenCore is not used to inject latebloom, in can be incorporated by direct kernel linking; however, Syncretic has not tested this method at this time.
Q. Who should NOT use latebloom.kext?
A. One should have familiarity with using the Mac terminal, OpenCore documentation, creating and modifying an EFI, creating and modifying the OpenCore config.plist, verifying, validating and loading config.plist, installing OpenCore debug version, blessing disks. To learn more about OpenCore see the MacRumors forum MP1,1-5,1 thread
OpenCore on the Mac Pro.
Q. I am psyched to try latebloom, where do I begin?
A. 1. Have a working backup of your Mac and its data.
2. Have a backup bootable OS on a disk you are not experimenting with.
Q. Why did you suggest installing OpenCore debug version?
A. The debug version of OpenCore will allow you to examine its log for errors which may be reported. Many testers of latebloom are using the debug version and as a race condition may be affected by the software used, using the debug version may provide one less variable in latebloom testing.
GETTING STARTED
1. You have OpenCore debug version ready to be installed and understand the parameters necessary to configure it so that it can generate error logs and/or outputs you need. See the OpenCore Reference Manual for documentation on debugging with OpenCore.
2. Install OpenCore debug version following the instructions found in the Wiki post,
Post #1 of the MacRumors forum MP 1,1-5,1 thread
OpenCore on the Mac Pro. You will need to complete and understand the instructions in PART I, PART II, PART III and PART IV.
WORKING WITH LATEBLOOM
1. Download the latest version of latebloom.kext from the Wiki post,
Post #1 of MacRumors MP 1,1-5,1 forum thread
Latebloom - An experimental workaround for the 11.3+ race condition. The kext is an attachment to
Post #1.
2. Mount the EFI on the disk of the macOS that you will be testing with latebloom. Copy latebloom.kext into the kext folder.
/Volumes/EFI/EFI/OC/Kexts
. This is the folder where you will also find Lilu.kext and WhateverGreen.kext used by OpenCore.
3. Make a copy of your tested, working config.plist used with a macOS less than version 11.3.
4. Use your favorite config.plist editor/configurator to add the code for latebloom to the Kernel | Add section of config.plist. Latebloom's code must follow the Add sections for Lilu.kext and WhateverGreen.kext in this order. Note that the value for MinKernel is set to 20.4.0 so that latebloom.kext is only loaded for macOS versions 11.3+. In other words you cannot expect to see the latebloom kext loaded for Catalina or Big Sur versions earlier than 11.3+. The following code was provided by
@Syncretic.
Code:
<dict>
<key>Arch</key>
<string>x86_64</string>
<key>BundlePath</key>
<string>latebloom.kext</string>
<key>Comment</key>
<string>PCI delay for BS/Monterey</string>
<key>Enabled</key>
<true/>
<key>ExecutablePath</key>
<string>Contents/MacOS/latebloom</string>
<key>MaxKernel</key>
<string></string>
<key>MinKernel</key>
<string>20.4.0</string>
<key>PlistPath</key>
<string>Contents/Info.plist</string>
</dict>
5. Edit config.plist
NVRAM | Add | 7C436110-AB2A-4BBB-A880-FE41995C9F82 | boot-args | string value
You will add to the existing string value the 3 parameters latebloom.kext uses for configuration.
The values for these parameters and their defaults are described in Syncretic's Wiki post,
Post #1.
The parameters are:
latebloom
lb_range
lb_debug
Sample starting values can be: latebloom=100 lb_range=20 lb_debug=1
You may also wish to boot OpenCore in verbose mode in order to be able to see the boot loading process.
To implement verbose mode add -v anywhere in the boot-args string value.
6. Read over the
User-reported Results for latebloom tests in Latebloom
Post #2 to help you determine starting values for your latebloom parameters. If a system is similar to yours and good results were obtained, try starting with those parameters.
7. Verify, validate and load your config.plist following these instructions by
@cdf from the MacRumors MP 1,1-5,1 forum thread
OpenCore on the Mac Pro:
To verify, validate, and load the configuration:
Place config.plist in your home folder
In Terminal, enter:
plutil -convert xml1 config.plist && plutil config.plist
You should see "config.plist: OK". If not, recheck your edits.
Copy
OpenCore/Utilities/ocvalidate/ocvalidate
to your home folder
(After the validation, you can delete ocvalidate.)
In Terminal, enter:
xattr -c ocvalidate && ./ocvalidate config.plist
You should see "Completed validating config.plist in x ms. No issues found.". If not recheck your edits.
Copy config.plist back to
/Volumes/EFI/EFI/OC
8. Make certain that the disk containing the macOS you are testing is blessed or the only disk containing a working version of OpenCore in your system. During the boot loading process if OpenCore can find another version of OpenCore in your system it may boot using an unintended version of OpenCore and its' config.plist depending on the boot order of the disks in your system.
9. If your macOS boots successfully verify the version of OpenCore is correct using terminal command:
nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:opencore-version
10. If your macOS boot successfully verify that latebloom.kext has been loaded and hooked using terminal. Code provided by
@startergo.
log show --predicate 'sender == "latebloom" and message contains "Hook placed successfully"' --start $(date "+%Y-%m-%d") --debug
11. Record the the parameters you obtained the best results with. Record your MacPro hardware configuration. Please post your results to User-reported results
Post #2 for analysis. Note that
Post #2 cannot be edited by thread users; thread users need to post their results to the thread and
@Syncretic will update
Post #2 as time permits.)