I takes awhile to reboot, you just have to wait about a minute or so.Hi dosdude1 and firstly may I say a massive thanks for your tool, I'm having a slight problem that when I go to install the patch after install, the reboot button doesn't work, I have to power cycle my MacBook 5,2 to get it to start in sierra, it works fine but then when I reboot from the os I keep having to repatch, any ideas? Many thanks
Ah, okay. Yeah it seems harmless to also include that flag. The guy that discovered the flag (http://www.hardturm.ch/luz/2011/10/how-to-make-the-macbook-air-superdrive-work-with-any-mac/) says that it just enables the possibility of loading the SuperDrive driver, and that it changes some USB power management (but only for the USB SuperDrive, not any other ports), so it sounds totally harmless:
And as for nvidia? I see you made a commit on github 3 minutes ago that removed the nvidia driver flag. So now it just says "<string>-no_compat_check mbasd=1</string>". Seems good to me.
How do we know that system updates will never replace the Boot.plist file? Is it just that OS updates can't write to /Library but can only write to /System or what? Or is it just a history of them never touching /Library that "guarantees" it? Just asking, since we may still need a "post-install patch" recovery item in our installers (to re-do the Boot.plist patch), if Boot.plist ever changes.
Either way, wow, great progress! This is looking so slick now that I almost don't mind Apple dropping computer support!
@dosdude1: Check the conversation between me and parrotgeek1, and his Github. There's great news for your patcher. It'll be easier than ever after you implement these changes. It will add automatic post-install patching (no need to reboot and use the menu item you added). And we will never have to re-patch after OS updates. In fact the only reason to keep the "patch" menu item in the installer will be in case something changes Boot.plist, so after these changes people will almost guaranteed never have to touch that menu item, and will only need it for very rare rescue. Hell yes!This is awesome!
I could try that, but there's still the option of using another Mac to do the patching, then just boot the drive on the Mac Pro afterwards. I'll look into it, though, and see what I can do.@dosdude1: One worry is that people with non-EFI PC graphics cards won't be able to boot into the installer after every OS update, to run the "post-install patch".
What does the "post-install patch" option do? I assume that all it does is replaces "/System/Library/CoreServices/PlatformSupport.plist" with one containing the board-ID + model identifier of more Macs.
In that case, couldn't you instead write a /System/Library/LaunchDaemons script? Those scripts run at boot, before the GUI is even available. It could have a simple action in it like "cp /whatever/PlatformSupport.plist /System/Library/CoreServices/PlatformSupport.plist".
If that's possible, it would mean people can just reboot as usual after OS updates, without worrying about running the patcher each time.
But maybe they check the board-ID before the launchdaemons run... In that case, does anyone have any other ideas for automating the patching process?
EDIT: @parrotgeek1: That's really good stuff! It'll make the initial install even easier, with no need to manually run the post-install script. Do you have any ideas for automating the support-patching at every reboot, as mentioned above?
EDIT2: Idea... Would it be possible to add "no_compat_check" to the NVRAM Boot-Args, to make the system permanently bootable without any PlatformSupport.plist patching anymore? In that case, people would just have to patch the initial installer. Then run "sudo nvram boot-args="something..."", and then just reboot as usual after every update since the system has disabled the platform check. And if the nvram is ever cleared, they just need to boot the OS X installer, go to Terminal, and type "sudo nvram boot-args..." again. Sounds like a slick method IF the "com.apple.Boot.plist" no_compat_check flag can be put inside of nvram.
I will definitely implement those into a later build. Thanks for your work!@dosdude1 here are some random code snippets
https://github.com/parrotgeek1/macOS_Sierra_Patches
Highlights include
how to bypass compatibility check WITHOUT modifying platformsupport.plist
how to automatically run script after install by modifying osinstall.pkg
how to use lzvn command to get /System/Library/Kernels/kernel AUTOMATICALLY without needing to extract whole pkg
the modded usb ethernet driver
hdmi audio for all unsupported macs 9400m
trimforce for all macs as a kext [does not quite work yet]
The flag is not a "real" kernel boot argument, it is only interpreted by boot.efi, it does NOT work in NVRAMI could try that, but there's still the option of using another Mac to do the patching, then just boot the drive on the Mac Pro afterwards. I'll look into it, though, and see what I can do.
when the github page rolls around, I can make a GUI@dosdude1
Here are some suggested improvements:
- Please set up a GitHub page for the tool so that we can all collaborate and improve the code via pull requests, so that you don't have to work alone.
- Stop patching PlatformSupport.plist.
- Start patching com.apple.Boot.plist, since that patch is persistent after OS updates and is the best place to do the patch. Thanks parrotgeek1!
- Change the "Utilities : Post-install Patch" tool, to allow toggling various options, and a model selector. It'll be up to the community to contribute settings for each model.
Here is a mockup of an improved patch tool, launched via the Utilities menu of the macOS installer:
View attachment 636886
(Note that I forgot to add a mockup for selecting the target drive to patch).
Workflow:
- The user selects the target drive to patch from a dropdown.
- The user selects their model, and it automatically toggles the checkboxes below. (This could perhaps read the model identifier from the hardware to auto-select the model it thinks you have, when the dialog opens.)
- The user presses patch. They only do this once. From then on, all OS updates for that version of the OS can simply be installed normally. The only time they have to patch again is after a fresh OS install, or if they somehow accidentally remove the patch from their system.
Under the hood:
- Boot.plist Patch (Disable Platform Check): Edits /Library/Preferences/SystemConfiguration/com.apple.Boot.plist and puts "-no_compat_check" in the kernel flags.
- Boot.plist Patch (Add support for MBA SuperDrive): Edits /Library/Preferences/SystemConfiguration/com.apple.Boot.plist and puts "mbasd=1" in the kernel flags. If combined with the other patch, it would put "-no_compat_check mbasd=1" in the kernel flags.
- Legacy USB Support Injector: Only Macs that need the driver should check this box. If checked, it disables kext signing check via com.apple.Boot.plist (adds kext_dev_mode=1 to the list of kernel flags), and installs the LegacyUSBInjector.kext file. If not checked, kext signing check remains enabled and no legacy driver is installed.
The benefits of the method outlined above:
- Easy to install.
- Can install OS updates without worrying about patching ever again.
- Can clear their NVRAM boot-args, do NVRAM resets etc, without losing the patch, since the patch is stored permanently in the hardcoded boot-arguments in com.apple.Boot.plist.
If you need help, please open a GitHub so we can all contribute. It'll be the best and cleanest patching tool ever after these improvements, making it almost as easy as installing on a supported Mac.![]()
I should be able to implement that pretty easily. If someone could compile a list of all Mac models I need to include, as well as their recommended options (as you've outlined in your mock-up GUI), that would be greatly appreciated.@dosdude1
Here are some suggested improvements:
- Please set up a GitHub page for the tool so that we can all collaborate and improve the code via pull requests, so that you don't have to work alone.
- Stop patching PlatformSupport.plist.
- Start patching com.apple.Boot.plist, since that patch is persistent after OS updates and is the best place to do the patch. Thanks parrotgeek1!
- Change the "Utilities : Post-install Patch" tool, to allow toggling various options, and a model selector. It'll be up to the community to contribute settings for each model.
Here is a mockup of an improved patch tool, launched via the Utilities menu of the macOS installer:
View attachment 636886
(Note that I forgot to add a mockup for selecting the target drive to patch).
Workflow:
- The user selects the target drive to patch from a dropdown.
- The user selects their model, and it automatically toggles the checkboxes below. (This could perhaps read the model identifier from the hardware to auto-select the model it thinks you have, when the dialog opens.)
- The user presses patch. They only do this once. From then on, all OS updates for that version of the OS can simply be installed normally. The only time they have to patch again is after a fresh OS install, or if they somehow accidentally remove the patch from their system.
Under the hood:
- Boot.plist Patch (Disable Platform Check): Edits /Library/Preferences/SystemConfiguration/com.apple.Boot.plist and puts "-no_compat_check" in the kernel flags.
- Boot.plist Patch (Add support for MBA SuperDrive): Edits /Library/Preferences/SystemConfiguration/com.apple.Boot.plist and puts "mbasd=1" in the kernel flags. If combined with the other patch, it would put "-no_compat_check mbasd=1" in the kernel flags.
- Legacy USB Support Injector: Only Macs that need the driver should check this box. If checked, it disables kext signing check via com.apple.Boot.plist (adds kext_dev_mode=1 to the list of kernel flags), and installs the LegacyUSBInjector.kext file. If not checked, kext signing check remains enabled and no legacy driver is installed.
The benefits of the method outlined above:
- Easy to install.
- Can install OS updates without worrying about patching ever again.
- Can clear their NVRAM boot-args, do NVRAM resets etc, without losing the patch, since the patch is stored permanently in the hardcoded boot-arguments in com.apple.Boot.plist.
If you need help, please open a GitHub so we can all contribute. It'll be the best and cleanest patching tool ever after these improvements, making it almost as easy as installing on a supported Mac.![]()
That seems like more of a hardware issue than anything.Ok, I have Sierra running successfully on my MacBook Mid 2009. Gonna try next on my MacBook Pro 4,1. Quick question, do I have to remove and install on the hard drive inside? Is there just a way for me to modify the installer USB?
[doublepost=1466356541][/doublepost]
when the github page rolls around, I can make a GUI
[doublepost=1466356871][/doublepost]And, my Macbook has an odd issue. The shift key types a 3
So I just copy and paste that sucker into terminal and I'm good to go permanently?I added a launch daemon plist which always ensures no_compat_check is in boot.plist EVEN AFTER SOFTWARE UPDATES. Put it in /Library/LaunchDaemons and make sure it is owned by root:wheel, 0644.
https://github.com/parrotgeek1/macO...mons/com.parrotgeek.LegacyNoCompatCheck.plist
@dosdude1
@parrotgeek1 (or anyone else): If you could populate this plist with the correct options for each model, that would be greatly appreciated. Just add a "dict" entry for each model. The "modelID" key is what shows up in the drop down menu, so you can make that say whatever you'd like.
[doublepost=1466363287][/doublepost]Here's what it looks like so far:
<dict>
<key>disableplatformcheck</key>
<true/>
<key>legacyhdmiaudio</key>
<false/>
<key>legacyusb</key>
<false/>
<key>legacyusbethernet</key>
<false/>
<key>mbasdsupport</key>
<false/>
<key>modelID</key>
<string>MacPro4,1</string>
</dict>
I added a launch daemon plist which always ensures no_compat_check is in boot.plist EVEN AFTER SOFTWARE UPDATES. Put it in /Library/LaunchDaemons and make sure it is owned by root:wheel, 0644.
https://github.com/parrotgeek1/macO...mons/com.parrotgeek.LegacyNoCompatCheck.plist
Actually please remove (GeForce 9400M) from the description, it works on Radeon too and GT120. And just get rid of the word Legacy. I used it to be able to easily find the kexts so they were all together, back when I put them in S/L/E. Also, you should explain that the Ethernet option is for the 100mbps old Ethernet adapter and that HDMI audio option enables it on previously unsupported Macs.@parrotgeek1 (or anyone else): If you could populate this plist with the correct options for each model, that would be greatly appreciated. Just add a "dict" entry for each model. The "modelID" key is what shows up in the drop down menu, so you can make that say whatever you'd like.
[doublepost=1466363287][/doublepost]Here's what it looks like so far:
Actually please remove (GeForce 9400M) from the description, it works on Radeon too and GT120.
And just get rid of the word Legacy.
Also, you should explain that the Ethernet option is for the 100mbps old Ethernet adapter
and that HDMI audio option enables it on previously unsupported Macs.
Lastly, just get rid of the USB checkbox. Every unsupported Mac needs it. Mac pros can boot without it but won't charge high power devices like iPads
<?php
$lines = file_get_contents('Info.plist');
preg_match_all('/<key>model<\/key>\s+<string>(.+?)<\/string>/s', $lines, $matches);
$devices = array();
foreach($matches[1] as $device){
$devices[] = trim($device);
}
$devices = array_unique($devices);
sort($devices);
foreach($devices as $d){
echo $d.PHP_EOL;
}
See newer post below instead...
A reboot fixed it!!I should be able to implement that pretty easily. If someone could compile a list of all Mac models I need to include, as well as their recommended options (as you've outlined in your mock-up GUI), that would be greatly appreciated.
[doublepost=1466358021][/doublepost]
That seems like more of a hardware issue than anything.
I agree. Also you don't even need to edit ANY board ID because no_compat_check bypasses that checkA reboot fixed it!!
Also, why not just put all board ids inside, instead of selecting an individual mode.
@SteveJobzniak GT120 can support HDMI audio using minidp to HDMI adapter on this kext.
Also, why not just put all board ids inside, instead of selecting an individual mode.
Also, why not just put all board ids inside, instead of selecting an individual mode.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<dict>
<key>legacyhdmiaudio</key>
<true/>
<key>legacyusb</key>
<true/>
<key>modelIDs</key>
<array>
<string>Macmini3,1</string>
<string>MacBook5,1</string>
<string>MacBook5,2</string>
</array>
</dict>
<dict>
<key>legacyhdmiaudio</key>
<true/>
<key>legacyusb</key>
<false/>
<key>modelIDs</key>
<array>
<string>MacPro4,1</string>
</array>
</dict>
</array>
</plist>
Yes it is that Ethernet adapter. That adapter also works with the official SIGNED asix ax88772 driver, however they misspelled "Ethernet adapter" as "Etehrnet adaptor" on system preferences network section and I hex edited it. I also enabled netboot support
I don't think that asix will EVER update the kext. The last actual CODE update to it was in 2012. Then in 2014 they signed the existing binary per apples rules. Then a year ago they edited the pkg to work on 10.10 without changing the binary.Ahh, excellent. Then I'll set it to true for MacPro4,1.
Do you know what other cards are supported? I had a look at your plist and it seems to inject whole device classes, so maybe you don't know which cards are affected, but let's try to make a list since it can't be many cards. It pays to be clear in the option description so people aren't confused when they're setting up their machines. It sucks to have to go online to look up a setting, when we could just be clear in its naming.
Good idea, much easier maintenance that way. Lots of machines will have total overlap of the (few) remaining settings after my tweaks above. Let's rewrite the list again, to merge all machines that need identical settings:
Code:[QUOTE="128keaton, post: 23035923, member: 782985"]Also, why not just put all board ids inside, instead of selecting an individual mode.[/QUOTE] Good idea, much easier maintenance that way. Lots of machines will have total overlap of the (few) remaining settings after my tweaks above. @dosdude1 See my post above which explains what options were removed from per-machine settings (and why). And let's rewrite the plist again to make it very easy to manage: [code] <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <array> <dict> <key>legacyhdmiaudio</key> <true/> <key>legacyusb</key> <true/> <key>modelIDs</key> <array> <string>Macmini3,1</string> <string>MacBook5,1</string> <string>MacBook5,2</string> </array> </dict> <dict> <key>legacyhdmiaudio</key> <true/> <key>legacyusb</key> <false/> <key>modelIDs</key> <array> <string>MacPro4,1</string> </array> </dict> </array> </plist>
Oh, that's an unfortunate misspelling. Maybe they'll fix it before Sierra is released.
So @dosdude1 let's rename "Legacy USB Ethernet Injector" to "Apple USB Ethernet Adapter (10/100Mbit) Support" and default it to off for all machines, since it's only for that specific external USB ethernet adapter.
Total list of changes:
- Rename "Legacy USB Ethernet Injector" to "Apple USB Ethernet Adapter (10/100Mbit) Support", remove it from the per-model Plist since it's not needed there, and default it to false.
- Remove "Disable Platform Check" from the per-model Plist since it's not needed there, and default it to true (since it's needed on all machines).
- Rename "Boot.plist Patch (Add support for MBA SuperDrive)" to "Boot.plist Patch (Add Support for MacBook Air USB SuperDrive)" to avoid confusion, remove it from the per-model Plist since it's not needed there, and default it to false.
- Change the plist format to the easier-to-maintain format above, since we're going to end up with soooo many maaaaaachines over time, and most of them need the exact same settings.
- Rename "Legacy HDMI Audio Injector (GeForce 9400M)" to "Legacy HDMI Audio Injector (GeForce 9400M/GT120, Radeon HD 4870/5770/5870)"... The label may be so long that the list of supported cards should be on a separate line/text-label. Also, THIS ONE ISN'T FINALIZED YET. We need to determine the exact list of cards. It's only a handful, and by knowing the list of cards we'll avoid a thousand questions about the option.
What Apple mouse model, and what computerHey, guys!
@dosdude1, i has repaired my Apple Mouse via installing kexts IOBluetoothFamily and IOBluetoothHIDDriver. Mouse won't appear in sysprefs, but I able to adjust scrolling speed via MagicPrefs.