From 4dc246140fb2313e8e378c23a168d9cc0f8b57fa Mon Sep 17 00:00:00 2001 From: valnoxy <53713528+valnoxy@users.noreply.github.com> Date: Thu, 3 Jun 2021 22:40:23 +0200 Subject: [PATCH] Version: 1.2.1 - Fix Headphones buzzing noise --- ALCPlugFix/ALCPlugFix | Bin 0 -> 37856 bytes ALCPlugFix/good.win.ALCPlugFix.plist | 21 + ALCPlugFix/hda-verb | Bin 0 -> 14844 bytes ALCPlugFix/install.sh | 41 ++ ALCPlugFix/uninstall.sh | 12 + EFI/OC/Config.plist | 16 + .../CodecCommander.kext/Contents/Info.plist | 470 ++++++++++++++++++ .../Contents/MacOS/CodecCommander | Bin 0 -> 98040 bytes .../Contents/Resources/SSDT-ALC1220.dsl | 38 ++ .../Resources/SSDT-ALC256-insanelydeepak.dsl | 46 ++ .../Resources/SSDT-ALC256-vbourachot.dsl | 54 ++ .../Contents/Resources/SSDT-AppleALC.dsl | 23 + .../Contents/Resources/SSDT-CX20752.dsl | 43 ++ README.md | 30 +- 14 files changed, 786 insertions(+), 8 deletions(-) create mode 100644 ALCPlugFix/ALCPlugFix create mode 100644 ALCPlugFix/good.win.ALCPlugFix.plist create mode 100644 ALCPlugFix/hda-verb create mode 100644 ALCPlugFix/install.sh create mode 100644 ALCPlugFix/uninstall.sh create mode 100644 EFI/OC/Kexts/CodecCommander.kext/Contents/Info.plist create mode 100644 EFI/OC/Kexts/CodecCommander.kext/Contents/MacOS/CodecCommander create mode 100644 EFI/OC/Kexts/CodecCommander.kext/Contents/Resources/SSDT-ALC1220.dsl create mode 100644 EFI/OC/Kexts/CodecCommander.kext/Contents/Resources/SSDT-ALC256-insanelydeepak.dsl create mode 100644 EFI/OC/Kexts/CodecCommander.kext/Contents/Resources/SSDT-ALC256-vbourachot.dsl create mode 100644 EFI/OC/Kexts/CodecCommander.kext/Contents/Resources/SSDT-AppleALC.dsl create mode 100644 EFI/OC/Kexts/CodecCommander.kext/Contents/Resources/SSDT-CX20752.dsl diff --git a/ALCPlugFix/ALCPlugFix b/ALCPlugFix/ALCPlugFix new file mode 100644 index 0000000000000000000000000000000000000000..549956fb87ee07ff6c8bf0a058c559aca1cb1b89 GIT binary patch literal 37856 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 literal 0 HcmV?d00001 diff --git a/ALCPlugFix/good.win.ALCPlugFix.plist b/ALCPlugFix/good.win.ALCPlugFix.plist new file mode 100644 index 0000000..47928b5 --- /dev/null +++ b/ALCPlugFix/good.win.ALCPlugFix.plist @@ -0,0 +1,21 @@ + + + + + KeepAlive + + Label + good.win.ALCPlugFix + ProgramArguments + + /usr/local/bin/ALCPlugFix + + RunAtLoad + + ServiceIPC + + + WorkingDirectory + /usr/local/bin/ + + diff --git a/ALCPlugFix/hda-verb b/ALCPlugFix/hda-verb new file mode 100644 index 0000000000000000000000000000000000000000..20012929f67d42eb27f26bdc7e4649e7f7490b16 GIT binary patch literal 14844 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 af&g56`QQjrQ+~7nvK+vlYz7w{(*FQiYYqVb literal 0 HcmV?d00001 diff --git a/ALCPlugFix/install.sh b/ALCPlugFix/install.sh new file mode 100644 index 0000000..41a72eb --- /dev/null +++ b/ALCPlugFix/install.sh @@ -0,0 +1,41 @@ +#!/bin/bash + +DAEMON_PATH=/Library/LaunchDaemons/ +BIN_PATH=/usr/local/bin/ +DAEMON_FILE=good.win.ALCPlugFix.plist +VERB_FILE=hda-verb +FIX_FILE=ALCPlugFix + +echo "Installing ALCPlugFix v1.7" + +# check if the directory "usr/local/bin" exist, if not then create the directory + +if [ ! -d "$BIN_PATH" ] ; then +mkdir "$BIN_PATH" ; +fi + +# stop the daemon if it's already running +if sudo launchctl list | grep --quiet ALCPlugFix; then + echo "Stopping existing ALCPlugFix daemon." + sudo launchctl unload $DAEMON_PATH$DAEMON_FILE +fi + +# copy over the files to their respective locations (overwrite automatically if files exist) + +sudo cp -f ALCPlugFix $BIN_PATH +sudo cp -f hda-verb $BIN_PATH +sudo cp -f good.win.ALCPlugFix.plist $DAEMON_PATH + +# set permissions and ownership +sudo chmod 755 $BIN_PATH$FIX_FILE +sudo chown $USER:admin $BIN_PATH$FIX_FILE +sudo chmod 755 $BIN_PATH$VERB_FILE +sudo chown $USER:admin $BIN_PATH$VERB_FILE +sudo chmod 644 $DAEMON_PATH$DAEMON_FILE +sudo chown root:wheel $DAEMON_PATH$DAEMON_FILE + +# load and start the daemon +sudo launchctl load -w $DAEMON_PATH$DAEMON_FILE + +echo "Done!" +exit 0 diff --git a/ALCPlugFix/uninstall.sh b/ALCPlugFix/uninstall.sh new file mode 100644 index 0000000..1150069 --- /dev/null +++ b/ALCPlugFix/uninstall.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +echo "Uninstalling ALCPlugFix. Root user is required." + +sudo rm /usr/local/bin/ALCPlugFix +sudo rm /usr/local/bin/hda-verb +sudo launchctl unload -w /Library/LaunchDaemons/good.win.ALCPlugFix.plist +sudo launchctl remove good.win.ALCPlugFix +sudo rm /Library/LaunchDaemons/good.win.ALCPlugFix.plist + +echo "Done!" +exit 0 diff --git a/EFI/OC/Config.plist b/EFI/OC/Config.plist index 661f9ad..fe87114 100644 --- a/EFI/OC/Config.plist +++ b/EFI/OC/Config.plist @@ -1240,6 +1240,22 @@ PlistPath Contents/Info.plist + + BundlePath + CodecCommander.kext + Comment + Codec Commander + Enabled + + ExecutablePath + Contents/MacOS/CodecCommander + MaxKernel + + MinKernel + + PlistPath + Contents/Info.plist + Block diff --git a/EFI/OC/Kexts/CodecCommander.kext/Contents/Info.plist b/EFI/OC/Kexts/CodecCommander.kext/Contents/Info.plist new file mode 100644 index 0000000..61211a3 --- /dev/null +++ b/EFI/OC/Kexts/CodecCommander.kext/Contents/Info.plist @@ -0,0 +1,470 @@ + + + + + BuildMachineOSBuild + 18A391 + CFBundleDevelopmentRegion + English + CFBundleExecutable + CodecCommander + CFBundleGetInfoString + 2.7.1, Copyright © 2013-2014 TimeWalker. All rights reserved. + CFBundleIdentifier + org.tw.CodecCommander + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + CodecCommander + CFBundlePackageType + KEXT + CFBundleShortVersionString + 2.7.1 + CFBundleSignature + ???? + CFBundleSupportedPlatforms + + MacOSX + + CFBundleVersion + 2.7.1 + DTCompiler + com.apple.compilers.llvm.clang.1_0 + DTPlatformBuild + 9F2000 + DTPlatformVersion + GM + DTSDKBuild + 10M2518 + DTSDKName + macosx10.6 + DTXcode + 0941 + DTXcodeBuild + 9F2000 + IOKitPersonalities + + CodecCommander + + CFBundleIdentifier + org.tw.CodecCommander + Codec Profile + + 1002 + Disabled HDMI + 10de + Disabled HDMI + 10ec_0233 + Realtek ALC283,etc + 10ec_0235 + Realtek ALC283,etc + 10ec_0236 + Realtek ALC283,etc + 10ec_0255 + Realtek ALC283,etc + 10ec_0269 + Realtek ALC269 + 10ec_0269_HDA_1028_04d9 + Realtek ALC269VB + 10ec_0269_HDA_1458_fa50 + Realtek ALC269 BRIX + 10ec_0282 + Realtek ALC283,etc + 10ec_0283 + Realtek ALC283,etc + 10ec_0292 + Realtek ALC292 + 10ec_0668 + Realtek ALC668 + 10ec_0892_HDA_1458 + Realtek ALC892 desktop + 10ec_0892_HDA_8086 + Realtek ALC892 desktop + 10ec_0900 + Realtek ALC1150 + 8086 + Disabled HDMI + Default + + Check Infinitely + + Check Interval + 3000 + Custom Commands + + Perform Reset on EAPD Fail + + Send Delay + 300 + Sleep Nodes + + Update Nodes + + + Disabled HDMI + + Check Infinitely + + Disable + + Sleep Nodes + + Update Nodes + + + Realtek ALC1150 + + Custom Commands + + + Command + + AgUABw== + + Comment + 0x20 SET_COEF_INDEX 0x07 + On Init + + On Sleep + + On Wake + + + + Command + + AgR8sA== + + Comment + 0x20 SET_PROC_COEF 0x7CB0 + On Init + + On Sleep + + On Wake + + + + Send Delay + 100 + Sleep Nodes + + Update Nodes + + + Realtek ALC269 + + Custom Commands + + + Command + + AVcIgw== + + Comment + 0x15 SET_UNSOLICITED_ENABLE 0x83 + On Init + + On Sleep + + On Wake + + + + + Realtek ALC269 BRIX + + Custom Commands + + + Command + + AVcIgw== + + Comment + 0x15 SET_UNSOLICITED_ENABLE 0x83 + On Init + + On Sleep + + On Wake + + + + + Realtek ALC269VB + + Custom Commands + + + Command + + AhcIgw== + + Comment + 0x21 SET_UNSOLICITED_ENABLE 0x83 + On Init + + On Sleep + + On Wake + + + + Send Delay + 20 + Sleep Nodes + + + Realtek ALC283,etc + + Custom Commands + + + Command + + AZcHJQ== + + Comment + 0x19 SET_PIN_WIDGET_CONTROL 0x25 + On Init + + On Sleep + + On Wake + + + + Command + + AhcIgw== + + Comment + 0x21 SET_UNSOLICITED_ENABLE 0x83 + On Init + + On Sleep + + On Wake + + + + Perform Reset + + Send Delay + 10 + Sleep Nodes + + + Realtek ALC292 + + Custom Commands + + + Command + 0x01a70724 + Comment + Node 0x1a - Pin Control (In Enable / VRefEn) + On Init + + On Sleep + + On Wake + + + + Command + + AVcIgw== + + Comment + 0x15 SET_UNSOLICITED_ENABLE 0x83 + On Init + + On Sleep + + On Wake + + + + Perform Reset + + + Realtek ALC668 + + Custom Commands + + + Command + + AVcIgw== + + Comment + 0x15 SET_UNSOLICITED_ENABLE 0x83 + On Init + + On Sleep + + On Wake + + + + Command + + AbcHIA== + + Comment + Node 0x1b - Pin Control (In Enable) + On Init + + On Sleep + + On Wake + + + + Perform Reset + + + Realtek ALC892 desktop + + Sleep Nodes + + Update Nodes + + + + IOClass + CodecCommander + IOMatchCategory + CodecCommander + IOProviderClass + IOHDACodecFunction + IOUserClientClass + CodecCommanderClient + + CodecCommanderPowerHook + + CFBundleIdentifier + org.tw.CodecCommander + Codec Profile + + 1002 + Disabled HDMI + 10de + Disabled HDMI + 8086 + Disabled HDMI + Disabled HDMI + + Disable + + + + IOClass + CodecCommanderPowerHook + IOMatchCategory + CodecCommanderPowerHook + IOProviderClass + AppleHDADriver + + CodecCommanderProbeInit + + CFBundleIdentifier + org.tw.CodecCommander + Codec Profile + + Default + + Custom Commands + + + + IOClass + CodecCommanderProbeInit + IOProbeScore + 5000 + IOProviderClass + IOHDACodecDevice + + CodecCommanderResidency + + CFBundleIdentifier + org.tw.CodecCommander + IOClass + CodecCommanderResidency + IOMatchCategory + CodecCommanderResidency + IOProviderClass + IOResources + + CodecCommanderVoodooHDA + + CFBundleIdentifier + org.tw.CodecCommander + Codec Profile + + 1002 + Disabled HDMI + 10de + Disabled HDMI + 8086 + Disabled HDMI + Default + + Check Infinitely + + Perform Reset + + Perform Reset on EAPD Fail + + Perform Reset on External Wake + + Sleep Nodes + + Update Nodes + + + Disabled HDMI + + Check Infinitely + + Disable + + Sleep Nodes + + Update Nodes + + + + IOClass + CodecCommander + IOMatchCategory + CodecCommander + IOProviderClass + VoodooHDADevice + IOUserClientClass + CodecCommanderClient + + + NSHumanReadableCopyright + Copyright © 2013-2014 TimeWalker/RehabMan. All rights reserved. + OSBundleLibraries + + com.apple.iokit.IOACPIFamily + 1.0d1 + com.apple.iokit.IOAudioFamily + 1.1 + com.apple.iokit.IOPCIFamily + 1.0.0b1 + com.apple.kpi.bsd + 9.0.0 + com.apple.kpi.iokit + 9.0.0 + com.apple.kpi.libkern + 9.0.0 + + Source Code + https://github.com/RehabMan/EAPD-Codec-Commander + + diff --git a/EFI/OC/Kexts/CodecCommander.kext/Contents/MacOS/CodecCommander b/EFI/OC/Kexts/CodecCommander.kext/Contents/MacOS/CodecCommander new file mode 100644 index 0000000000000000000000000000000000000000..c2574a25d23814f6692bb6c33c44a8031e6b2597 GIT binary patch literal 98040 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 z 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 b9e{SjDG0xy_b-Pm(Ydw`#OUA7{J(zyOQ^G3 literal 0 HcmV?d00001 diff --git a/EFI/OC/Kexts/CodecCommander.kext/Contents/Resources/SSDT-ALC1220.dsl b/EFI/OC/Kexts/CodecCommander.kext/Contents/Resources/SSDT-ALC1220.dsl new file mode 100644 index 0000000..c1ff964 --- /dev/null +++ b/EFI/OC/Kexts/CodecCommander.kext/Contents/Resources/SSDT-ALC1220.dsl @@ -0,0 +1,38 @@ +// CodecCommander configuration for ALC1220 +// provided by daliansky @github + +DefinitionBlock ("", "SSDT", 1, "hack", "ALC1220", 0) +{ + External(_SB.PCI0.HDEF, DeviceObj) + Name(_SB.PCI0.HDEF.RMCF, Package() + { + "CodecCommander", Package() + { + "Custom Commands", Package() + { + Package(){}, // signifies Array instead of Dictionary + Package() + { + // 0x19 SET_PIN_WIDGET_CONTROL 0x24 + "Command", Buffer() { 0x01, 0x97, 0x07, 0x24 }, + "On Init", ">y", + "On Sleep", ">n", + "On Wake", ">y", + }, + Package() + { + // 0x1B SET_UNSOLICITED_ENABLE 0x83 + "Command", Buffer() { 0x01, 0xB7, 0x08, 0x83 }, + "On Init", ">y", + "On Sleep", ">n", + "On Wake", ">y", + }, + }, + "Perform Reset", ">y", + //"Perform Reset on External Wake", ">n", // enable if using AppleALC + "Send Delay", 10, + "Sleep Nodes", ">n", + }, + }) +} +//EOF diff --git a/EFI/OC/Kexts/CodecCommander.kext/Contents/Resources/SSDT-ALC256-insanelydeepak.dsl b/EFI/OC/Kexts/CodecCommander.kext/Contents/Resources/SSDT-ALC256-insanelydeepak.dsl new file mode 100644 index 0000000..94ef581 --- /dev/null +++ b/EFI/OC/Kexts/CodecCommander.kext/Contents/Resources/SSDT-ALC256-insanelydeepak.dsl @@ -0,0 +1,46 @@ +// CodecCommander configuration for ALC256 to fix various issue +// repo: https://github.com/insanelydeepak/cloverHDA-for-Mac-OS-Sierra-10.12 + +DefinitionBlock ("", "SSDT", 1, "hack", "ALC256", 0) +{ + External(_SB.PCI0.HDEF, DeviceObj) + Name(_SB.PCI0.HDEF.RMCF, Package() + { + "CodecCommander", Package() + { + "Custom Commands", Package() + { + Package(){}, // signifies Array instead of Dictionary + Package() + { + // 0x19 SET_PIN_WIDGET_CONTROL 0x24 + "Command", Buffer() { 0x01, 0x97, 0x07, 0x24 }, + "On Init", ">y", + "On Sleep", ">n", + "On Wake", ">y", + }, + Package() + { + // 0x1A SET_PIN_WIDGET_CONTROL 0x20 + "Command", Buffer() { 0x01, 0xA7, 0x07, 0x20 }, + "On Init", ">y", + "On Sleep", ">n", + "On Wake", ">y", + }, + Package() + { + // 0x21 SET_UNSOLICITED_ENABLE 0x83 + "Command", Buffer() { 0x02, 0x17, 0x08, 0x83 }, + "On Init", ">y", + "On Sleep", ">n", + "On Wake", ">y", + } + }, + "Perform Reset", ">n", + //"Perform Reset on External Wake", ">n", // enable if using AppleALC + "Send Delay", 10, + "Sleep Nodes", ">n", + }, + }) +} +//EOF \ No newline at end of file diff --git a/EFI/OC/Kexts/CodecCommander.kext/Contents/Resources/SSDT-ALC256-vbourachot.dsl b/EFI/OC/Kexts/CodecCommander.kext/Contents/Resources/SSDT-ALC256-vbourachot.dsl new file mode 100644 index 0000000..e129f29 --- /dev/null +++ b/EFI/OC/Kexts/CodecCommander.kext/Contents/Resources/SSDT-ALC256-vbourachot.dsl @@ -0,0 +1,54 @@ +// CodecCommander configuration for ALC256 +// From: https://github.com/vbourachot/XPS13-9350-OSX/blob/master/ssdt/SSDT-ALC256.dsl + +DefinitionBlock ("", "SSDT", 1, "hack", "ALC256", 0x00003000) +{ + External(_SB.PCI0.HDEF, DeviceObj) + Name(_SB.PCI0.HDEF.RMCF, Package() + { + "CodecCommander", Package() + { + "Custom Commands", Package() + { + Package(){}, // signifies Array instead of Dictionary + Package() + { + // 0x19 SET_PIN_WIDGET_CONTROL 0x25 + "Command", Buffer() { 0x01, 0x97, 0x07, 0x25 }, + "On Init", ">y", + "On Sleep", ">n", + "On Wake", ">y", + }, + Package() + { + // 0x21 SET_UNSOLICITED_ENABLE 0x83 + "Command", Buffer() { 0x02, 0x17, 0x08, 0x83 }, + "On Init", ">y", + "On Sleep", ">n", + "On Wake", ">y", + }, + Package() + { + // 0x20 SET_COEF_INDEX 0x36 + "Command", Buffer() { 0x02, 0x05, 0x00, 0x36 }, + "On Init", ">y", + "On Sleep", ">n", + "On Wake", ">y", + }, + Package() + { + // 0x20 SET_PROC_COEF 0x1737 + "Command", Buffer() { 0x02, 0x04, 0x17, 0x37 }, + "On Init", ">y", + "On Sleep", ">n", + "On Wake", ">y", + }, + }, + "Perform Reset", ">n", + //"Perform Reset on External Wake", ">n", // enable if using AppleALC + "Send Delay", 10, + "Sleep Nodes", ">n", + }, + }) +} +//EOF diff --git a/EFI/OC/Kexts/CodecCommander.kext/Contents/Resources/SSDT-AppleALC.dsl b/EFI/OC/Kexts/CodecCommander.kext/Contents/Resources/SSDT-AppleALC.dsl new file mode 100644 index 0000000..38745b5 --- /dev/null +++ b/EFI/OC/Kexts/CodecCommander.kext/Contents/Resources/SSDT-AppleALC.dsl @@ -0,0 +1,23 @@ +// This SSDT demonstrates a custom configuration with certain features +// disabled when using AppleALC.kext. +// AppleALC.kext has some extra patches for AppleHDA that interfere with these +// features breaking audio after wake from sleep. +// +// Customize to suit your needs. +// +// As of CodecCommander v2.7.1, CodecCommander detects AppleALC for setting the default +// of these two options false. + +DefinitionBlock ("", "SSDT", 1, "hack", "CC-ALC", 0) +{ + External(_SB.PCI0.HDEF, DeviceObj) + Name(_SB.PCI0.HDEF.RMCF, Package() + { + "CodecCommander", Package() + { + "Perform Reset", ">n", + "Perform Reset on External Wake", ">n", + }, + }) +} +//EOF diff --git a/EFI/OC/Kexts/CodecCommander.kext/Contents/Resources/SSDT-CX20752.dsl b/EFI/OC/Kexts/CodecCommander.kext/Contents/Resources/SSDT-CX20752.dsl new file mode 100644 index 0000000..ca951eb --- /dev/null +++ b/EFI/OC/Kexts/CodecCommander.kext/Contents/Resources/SSDT-CX20752.dsl @@ -0,0 +1,43 @@ +// SSDT to correct some problems headphone/mic on CX20752. +// +// Note: For use with the Anti-pop patches (seee RehabMan NUC repo) +// +// created by nayeweiyang/XuWang + +DefinitionBlock ("", "SSDT", 1, "hack", "CX20752", 0) +{ + External(_SB.PCI0.HDEF, DeviceObj) + + Name(_SB.PCI0.HDEF.RMCF, Package() + { + "CodecCommander", Package() + { + "Custom Commands", Package() + { + Package(){}, // signifies Array instead of Dictionary + Package() + { + // 0x19 SET_PIN_WIDGET_CONTROL 0x24 + "Command", Buffer() { 0x01, 0x97, 0x07, 0x24 }, + "On Init", ">y", + "On Sleep", ">n", + "On Wake", ">y", + }, + Package() + { + // 0x1a SET_PIN_WIDGET_CONTROL 0x24 + "Command", Buffer() { 0x01, 0xa7, 0x07, 0x24 }, + "On Init", ">y", + "On Sleep", ">n", + "On Wake", ">y", + }, + + }, + "Perform Reset", ">n", + "Perform Reset on External Wake", ">n", + }, + }) +} +//EOF + + diff --git a/README.md b/README.md index f46e028..5fa125d 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,9 @@ I am NOT responsible for any harm you cause to your device. This guide is provid - VGA ## Changelog +### Version 1.2.1 (03.06.2021) +- Fix Headphones buzzing noise + ### Version 1.2.0 (02.06.2021) - Add UltrabayHDD support - Add Intel Bluetooth kext @@ -50,13 +53,12 @@ I am NOT responsible for any harm you cause to your device. This guide is provid - Initial Release. # Download -Latest Release: [v.1.2.0](https://github.com/valnoxy/t440p-oc/releases/tag/v1.2.0) +Latest Release: [v.1.2.1](https://github.com/valnoxy/t440p-oc/releases/tag/v1.2.1) # Installation Guide ## Requirements You must have the following stuff: - Lenovo ThinkPad T440p (Obviously 😁). - - Access to a working Windows machine with Python installed. - A 16 GB pendrive (Keep in mind, during the preperation we will format the disk to create the install media). - an Internet connection via Ethernet. @@ -178,9 +180,23 @@ Now you can go through the install. > **Note:** Your PC will restart multiple times. Just boot from USB and select your disk inside of OpenCore. (named macOS Installer or the disk name). 5. Once you see the `Region selection` screen, you are good to proceed. 6. Create your user accound and everything else. -7. After you've booted, press `ALT + SPACE` and open terminal. Type `sudo diskutil mountDisk disk0s1` (where disk0s1 corresponds to the EFI partition of the main disk) -8. Open Finder and copy the EFI folder of your USB device to the main disk's EFI partition. -9. Unplug the USB device and reboot your laptop. Now you can enjoy your working installation. + +## Post-Install +### Install EFI +1. Press `ALT + SPACE` and open terminal. Type `sudo diskutil mountDisk disk0s1` (where disk0s1 corresponds to the EFI partition of the main disk) +2. Open Finder and copy the EFI folder of your USB device to the main disk's EFI partition. +3. Unplug the USB device and reboot your laptop. Now you can boot macOS without your USB device. + +### Fix Audio Jack noise +1. Copy `ALCPlugFix` to your desktop. +2. Press `ALT + SPACE` and open terminal. Type the following commands: +```bash +sudo spctl --master-disable +sudo mkdir /usr/local/bin/ +cd Desktop/ALCPlugFix +./install.sh +``` +3. After that, type `hda-verb 0x1a SET_PIN_WIDGET_CONTROL 0x24`. ## (Optional) Creating a offline install media In case of reinstalling macOS, a offline install media can save some time. You also don't need an Ethernet connection for the installation. @@ -202,6 +218,4 @@ Catalina: After creating the install media, copy your EFI folder to the EFI partition of your USB device. ## Feedback -Did you find any bugs or just have some questions? Feel free to provide your feedback using the Issues tab on GitHub or send me a mail to `hey@exploitox.de`. - -**Note:** Currently, I cannot provide any support due to upcoming exams. \ No newline at end of file +Did you find any bugs or just have some questions? Feel free to provide your feedback using the Issues tab on GitHub or send me a mail to `hey@exploitox.de`. \ No newline at end of file