Skip to content

Releases: barrykn/big-sur-micropatcher

v0.3.0

01 Oct 02:29
Compare
Choose a tag to compare

The biggest change in this release is that patch-kexts.sh and unpatch-kexts.sh now modify the filesystem with enough precision to satisfy the filesystem verification in Apple's delta updaters. For example, one can now:

  • Do a fresh installation of beta 6
  • Use patch-kexts.sh to fix WiFi, etc.
  • Later use unpatch-kexts.sh, then use jackluke's USBopencore to spoof the model ID and update to beta 9
  • And finally use patch-kexts.sh again to fix WiFi again

With previous patcher releases, you would either have to avoid patch-kexts.sh between beta 6 and beta 9, or you would have to reinstall beta 6 before updating to beta 9. With this patcher release, unpatch-kexts.sh is now sufficient, as long as patch-kexts.sh from micropatcher v0.2.1 or earlier has not been used since the last full install. (patch-kexts.sh from v0.2.1 and earlier causes filesystem changes which realistically require a full reinstall in order to reverse; v0.3.0 corrects this.)

patch-kexts.sh command line option processing has been overhauled. This fixes some minor bugs and lays a foundation for future improvements. This change removes some undocumented command line options, but a documented --no-wifi option has also been added, so there is effectively no loss of functionality.

patch-kexts.sh now has --create-snapshot and --no-create-snapshot command line options. Thanks to MachInit for the feature suggestion. This resolves pull request #40

patch-kexts.sh and unpatch-kexts.sh now determine the Volume Name of the volume that is being (un)patched and supply this name to the bless command. This works around the Big Sur bug that generally makes all Big Sur installations show up in the Startup Selector as "EFI Boot", thereby fixing issue #27.

patch-kexts.sh also had bugs in its SIP and authenticated-root checks which caused it to sometimes falsely conclude that SIP was enabled when it was, in fact, disabled. (This was particularly likely to happen for OpenCore users.) I have made corrections to this code.

The Hax.dylib used to patch the Installer now leaves the APFS ROM check enabled. (This resolves issue #49.) Variants of Hax.dylib which disable the APFS ROM check are still compiled and included with the patcher, but they are not yet used in this patcher release.

Finally, there are other bug fixes and code refactoring and improvements which will facilitate future patcher improvements.

v0.2.1

27 Sep 04:14
Compare
Choose a tag to compare

The big change is that there's a new WiFi patch. It's basically the IO80211Family.kext from Mojave (Security Update 2020-005), plus AirPortAtheros40.kext from High Sierra (Security Update 2020-005), plus MachInit's change to AirPortAtheros40.kext that adds support for more models of Atheros cards. Tester feedback seems to be that it restores AirDrop and Handoff support on 2012/2013 Macs, and generally improves stability, but it still has some problems. (If it won't connect to networks for you or complains that it can't find networks, try turning WiFi off and back on.) WiFi was broken completely on 2011 iMacs during v0.2.1pre development, but this should be fixed now.

If you need either of the older WiFi patches for any reason, then open patch-kexts.sh in a text editor, go down to line 250 or so, and read the comments for further instructions. You will need to comment out 4 lines of code and uncomment 1 line of code. (It is possible that future patcher releases will add command line options to do this.)

A bug in the new installer trampoline code introduced in v0.2.0 was causing the Installer app to lose its icon. Thanks to iPixelGalaxy for reporting this bug.

A fix was made to patch-kexts.sh and unpatch-kexts.sh to reduce the number of filesystem changes and (eventually) cooperate better with Apple's delta updaters. At least one more fix of a similar nature is needed, but that has been postponed for a future patcher release (probably v0.2.2) because, in my judgment, it was too risky to do at the same time as the WiFi changes.

All of the kexts taken from High Sierra were updated to their Security Update 2020-005 versions (previously they were the 2020-004 versions), and the BCM5701 Ethernet kext taken from Catalina has been updated to the 10.15.7 version (previously it was the 10.15.6 version).

Finally, there have been several small fixes to the README. Thanks to buckrock, n0rt0nthecat, and amaze1499 on the MacRumors Forums for their feedback.

v0.2.0

23 Sep 00:46
14548cc
Compare
Choose a tag to compare

This release has a few major changes:

set-vars.sh had some reliability problems from the very beginning, especially on systems where a macOS installation (any macOS installation!) was encrypted with FileVault. However, Big Sur beta 5 added new restrictions on the nvram command that took those reliability problems to a new level (issue #24 in the project's issue tracker on GitHub). After considerable testing and experimentation, I concluded that the best way around this was to modify the nvram variables through direct calls to the EFI firmware API. So, this version of the patcher now adds another program to the EFI partition of a GUID Partition Map-formatted USB stick, "setvars", which runs directly on the EFI firmware without an operating system. You boot into setvars, let it do its thing and power the Mac down (this can take several seconds, but it usually takes less than 1 second), then turn the Mac back on and boot from the patched installer USB as normal. (setvars can also be installed onto a separate USB stick, but this is less elegant so is not described in the README at this time.) Thanks to Travis Parker for suggesting the idea of using the EFI partition on a GPT-formatted USB stick, thereby avoiding the need for a more difficult partitioning setup or a second USB stick.

Now that set-vars.sh has a reliable replacement. I was finally able to integrate the "trampoline" from the ParrotGeek patcher. (Thanks, ParrotGeek!) Now there is no need to run a Terminal command after booting the installer USB but before actually running the installer -- you just start the Installer and go on your way, just like on a supported Mac.

There are also new scripts in the misc-scripts directory for enabling and disabling animations. The script for disabling animations, in particular, makes Big Sur run much faster on Macs without Metal GPUs. Thanks to johncaling40 for these scripts!

Finally, the README has been thoroughly revised. Note that the steps have different numbers now. In particular, the famous "step 9" for installing the kext patches is now step 15.

v0.1.0

11 Aug 16:17
Compare
Choose a tag to compare

So, so many improvements. I could justify the version number bump to v0.1 on many different grounds, but the most succinct is that this is the first version of my patcher that is stable enough for me to consider using my MacBookPro8,1 as my daily driver. Other users will find that this is the first version with stable WiFi, or the first version that is usable or stable for them for a variety of other reasons.

Any user who has had WiFi problems, or who has had installation attempts fail with mystery errors, or who has tried to boot the patched USB only to have it fail immediately with a prohibited/no-entry sign, or who has had kernel panics on a 2011 Mac, should try again with this release.

In more detail:

  • The highvoltage12v WiFi patch has been updated. Stability is massively improved. If your Mac has not been upgraded to an 802.11ac WiFi card, then you should download the new patcher release, run unpatch.sh followed by micropatcher.sh on your USB stick, and repeat step 9 of the instructions; this will apply the WiFi patch update.
  • There is a new shell script, remount-sysvol.sh, to allow the System volume to be easily modified, for tasks like installing your own kexts. There is a new section in the README which explains this process in more detail. There is some room for improvement -- for instance, there is at least one minor bug that needs fixing, and the rebuild-kc.sh helper script handles kernel/kext collections but not prelinkedkernels yet. However, for users who want to install their own kexts under Big Sur just as they could under previous releases, hopefully this will be helpful. (For users who have been seeking a solution to mount error 66, this might be it.)
  • Under certain specific circumstances, previously the patcher could completely fail to apply any patches to the installer USB when running under macOS Catalina. The patcher now reliably detects these conditions and attemps to correct them. (Ultimately the user must grant Terminal permission, but the patcher no longer silently malfunctions and now forces macOS Catalina to ask the user for permission.) If your installer USB was immediately showing a prohibited/no-entry sign even though you used the patcher, you were almost certainly a victim of this bug, and you should try again with this release.
  • I have forked Hax3, in order to disable the patch to the installer's disk space check (that particular patch was doing more harm than good) while still allowing the installer to be run with or without sealing. I have also provided a shell script that builds the Hax dylibs from source. (Two dylibs are compiled from one source code file by using two sets of compiler flags, which is unusual. Otherwise I would have used a Makefile instead of a shell script.)
  • Some of the Intel HD 3000 graphics driver kexts, related to hardware-accelerated video decoding, have been removed. Accelerated video decoding wasn't working anyway, but these kexts were causing some kernel panics. The rest of the (unaccelerated) Intel HD 3000 framebuffer still works. Ironically, removing these kexts made Big Sur on my MacBookPro8,1 usable for rudimentary video editing using QuickTime Player.
  • There is a new misc-scripts directory, for shell scripts that are not used by the patcher but which may be useful to some patcher users. In particular, kc-list-kext-paths.sh can list every kext inside a .kc file (either Xcode command line tools or binutils on Linux required).
  • Some extraneous boot options have been removed from com.apple.Boot.plist. This may prevent kernel panics when booting the patched installer USB on some Macs.
  • patch-kexts.sh has a small change in parameters for kmutil so it no longer shows "No variant specified, falling back to release". The message was harmless, but people often asked questions about it.
  • various other minor bug fixes and documentation updates

v0.0.20

07 Aug 11:52
Compare
Choose a tag to compare

There used to be a bug in the patcher that would erroneously display messages saying that you had to restart the Mac, even though restarting it would actually cause the installer to fail. I fixed that bug in v0.0.11, but a change in Big Sur developer beta 4 and the public beta brought that patcher bug back from the dead, and I missed it when testing v0.0.19 with developer beta 4. This is a quick release to fix the bug again.

If you have successfully installed developer beta 4 or the public beta using a previous patcher release, there is no need to download or use this version of the patcher (unless you need to reinstall).

v0.0.19

05 Aug 15:00
Compare
Choose a tag to compare

Just a couple of quick fixes:

  • The Ethernet fix for 2011 Macs now works on beta 4 as well as beta 3 (and will hopefully keep working in the future).
  • set-vars.sh no longer sets amfi_get_out_of_my_way=1; this appears to fix camera and microphone permissions problems. Thanks to Ronald Steven for troubleshooting efforts which led to the discovery of this fix.

If you used a previous version of this patcher, you may want to change your boot-args in nvram. A simple sudo nvram boot-args="-no_compat_check" in Terminal might do the trick. Or nvram boot-args="-no_compat_check" from any macOS installer or Recovery (version doesn't matter). Or you can download this version of the patcher, run unpatch.sh then micropatcher.sh, boot from the patched USB stick, and repeat step 6. Or, if everything is working for you, you can just let the patcher handle it the next time you're updating to a newer Big Sur beta.

v0.0.18

04 Aug 17:05
Compare
Choose a tag to compare
  • patch-kexts.sh works from within a running Big Sur installation, finally! Rebooting from the patched installer USB should no longer be necessary (but will still work and has still been tested more thoroughly). For now, unpatch-kexts.sh still requires booting from the installer USB.
  • micropatcher.sh is now a little more robust; under some circumstances, if it runs into permissions problems, it will restart the patching process with sudo.
  • Many updates to the README. In particular, compatibility information is more up-to-date.

v0.0.17

28 Jul 09:38
Compare
Choose a tag to compare

The highlight of this release: If Big Sur developer beta 3 made Ethernet stop working on your Mac, then patch your USB stick with this version of the patcher, repeat step 9, and Ethernet should work again.

Changes in more detail:

  • Many typos and errors in the README have been corrected. The biggest corrections are to instructions for installing and patching for 2009-2010 Macs (such as Late 2009/Mid 2010 white MacBooks). For these Macs, you still have to install on a newer Mac then move the (internal or external) hard drive/SSD to the older Mac, but now the instructions are sufficiently complete that they should actually work.
  • Many 2011 and older Macs with Big Sur developer beta 3 have nonfunctioning Ethernet, so on these machines, AppleBCM5701Ethernet.kext will now be replaced with the version from macOS Catalina 10.15.6. (If you forget to use the --2011 option to patch-kexts.sh on 2011 Macs, this fix will not work.) This fixed the Ethernet problems on my MacBookPro8,1, so I think it should fix the problems on other unsupported Macs. I'm not yet sure if this is a temporary bug or a compatibility break that will require patching over the long term, so right now the patch is only applied to Big Sur developer beta 3. If you have a Mac that lost Ethernet after upgrading to Big Sur developer beta 3, and this version of the patcher does not fix it for you, please let me know.
  • The --all option in patch-kexts.sh now installs the GeForce 9400M/320M driver kexts. This should fix sleep and display brightness control on the 2009 13" MacBook Pro (APFS ROM patch required), 2010 13" MacBook Pro, and Late 2009/Mid 2010 white MacBooks (tested on a Late 2009 white MacBook). Thanks to ASentientBot for the NVDAResmanTesla.kext patch which makes this possible.

v0.0.16

24 Jul 08:28
Compare
Choose a tag to compare

For most users, the updates to the README, noting compatibility with Big Sur developer beta 3, may actually be the most important aspect of this release.

There is just one actual code change: The boot option "cs_debug=1" is no longer patched into the installer USB, so verbose boot when booting from the installer USB is far less verbose (and possibly a little faster). This change makes no difference to the behavior of verbose boot during the actual installation or when booting the installed system. If you don't use verbose boot, then there is no difference versus v0.0.15.

v0.0.15

24 Jul 01:20
Compare
Choose a tag to compare

The important change in this release is that patch-kexts.sh now checks for errors after each kmutil invocation. If anything goes wrong with kmutil, this makes the resulting output far easier to read for troubleshooting purposes. I have not yet tested this release against Big Sur developer beta 3, but this bug fix will make it easier for me to properly test with beta 3.

There's also a new feature: If you have renamed the installer USB or it is otherwise not at the usual location in /Volumes for some reason, you can specify the path to the installer USB on the command line for micropatcher.sh or unpatch.sh. (You can add that path to the command line by dragging and dropping the installer USB from Finder into Terminal. You must drag the installer USB from the Computer view in the Finder -- dragging and dropping the installer USB from the Finder sidebar will not work, nor will dragging and dropping the Install application that is on the USB drive.)