Jump to content

Search the Community

Showing results for tags 'macintosh'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • 🤴 Donators Room
    • DSDT Patch Requests
  • 🇬🇧 English
    • NEWS Releases & Updates
    • All About Hackintosh - Database
    • macOS Full Installer Database from Apple
    • Olarila Vanilla Images
    • Guides and Tutorials
    • Hackintosh EFI Folder Collection
    • macOS
    • Olarila Apps
    • Hardware
    • Olarila Buyer's Guide
    • DSDT & Patch Requests
    • Olarila Hackintosh Machines
    • Mods & Overclocking
    • Hackintosh Photos, Screenshots and Benchmarks
    • Buying Thoughts, Reviews, and Recommendations
    • Themes & Wallpapers
    • Apple World
    • 👉 Donate
  • 🇧🇷 Português
    • Novos Lançamentos & Atualizações
    • Aplicativos & Apps Úteis
    • Guias & Tutoriais Hackintosh
    • DSDT & Pedidos de Patch
    • macOS BR
    • Hardware BR
    • Discussão geral


  • Files
  • Bootloader
  • DSDT
  • Utils & Software
  • Clover Folders

Find results in...

Find results that contain...

Date Created

  • Start


Last Updated

  • Start


Filter by number of...


  • Start



About Me
















Found 22 results

  1. Easy way to edit boot-args with OpenCore bootloder. On Windows use this tool https://github.com/ic005k/OCAuxiliaryTools/releases 1- Open config.plist with one editor. I like OpenCore Configurator, just use last App version with last OpenCore version. 2- Go to NVRAM / Add / boot-args tab and add.
  2. Hyper-V integration services for macOS. Requires a Generation 2 virtual machine on Windows Server 2012 R2 / Windows 8.1 or higher. Windows Server 2016 is currently unsupported. Link HERE Supported Hyper-V devices and services Heartbeat Guest shutdown (with daemon) Time synchronization (with daemon) Host to guest file copy (with daemon) PCI passthrough (partial support) Synthetic graphics (partial support) Synthetic keyboard Synthetic mouse Synthetic network controller Synthetic SCSI controller Binaries MacHyperVSupport.kext: Core Hyper-V support kext for macOS 10.4 to 11.0. MacHyperVSupportMonterey.kext: Core Hyper-V support kext for macOS 12.0 and newer. hvfilecopyd: File copy userspace daemon. hvshutdownd: Shutdown userspace daemon. hvtimesyncd: Time synchronization userspace daemon. OpenCore configuration ACPI SSDT-HV-VMBUS: Enables correct Startup Disk operation, ensure patches described within are also configured. SSDT-HV-DEV: Required on Windows Server 2019 / Windows 10 and newer, provides proper processor objects and disables incompatible virtual devices under macOS. SSDT-HV-DEV-WS2022: Required on Windows Server 2022 / Windows 11 and newer, disables addiitonal incompatible virtual devices under macOS. SSDT-HV-PLUG: Ensures VMPlatformPlugin loads on Big Sur and above, avoids freezes with the default PlatformPlugin. Ensure all patches described in above SSDTs are present in ACPI->Patch. Booter quirks AllowRelocationBlock - required for macOS 10.7 and older AvoidRuntimeDefrag - required ForceExitBootServices - required for macOS 10.7 and older ProvideCustomSlide - required RebuildAppleMemoryMap - required for macOS 10.6 and older Kernel Quirks ProvideCurrentCpuInfo - required for proper TSC/FSB values and CPU topology values. The following additional kernel extensions are required: Lilu - patching and library functions VirtualSMC - SMC emulator Blockcom.apple.driver.AppleEFIRuntime Required for 32-bit versions of macOS (10.4 and 10.5, and 10.6 in 32-bit mode). EFI runtime services and NVRAM are unavailable in those versions due to incompatiblities with the Hyper-V UEFI. Force On older versions of macOS, the following kernel extensions may need to be Force injected. Refer to the OpenCore Configuration manual for details. IONetworkingFamily (com.apple.iokit.IONetworkingFamily) IOSCSIParallelFamily (com.apple.iokit.IOSCSIParallelFamily) PatchDisable _hpet_init Arch = i386 Base = _hpet_init Comment = Disables _hpet_init due to no HPET hardware present Count = 1 Identifier = kernel MaxKernel = 9.5.99 Replace = C3 Disable IOHIDDeviceShim::newTransportString() Arch = i386 Base = __ZNK15IOHIDDeviceShim18newTransportStringEv Comment = Fix crash in IOHIDDeviceShim::newTransportString() caused by NULL _deviceType Count = 1 Identifier = com.apple.iokit.IOHIDFamily MaxKernel = 9.6.99 MinKernel = 9.5.0 Replace = 31C0C3 Disable scaling factor for X/Y mouse movement Arch = i386 Base = __ZN16IOHIDEventDriver21handleInterruptReportE12UnsignedWideP18IOMemoryDescriptor15IOHIDReportTypem Comment = Workaround for absence of AbsoluteAxisBoundsRemovalPercentage in 10.4 Identifier = com.apple.iokit.IOHIDFamily Find = BA1F85EB51 MaxKernel = 8.11.99 MinKernel = 8.0.0 Replace = BA00000000 Emulate DummyPowerManagement and CPU spoofing may be required depending on the host CPU for older versions of macOS. NVRAM Boot arguments -legacy is required for running 32-bit versions of macOS (10.4 - 10.5, 10.6 if running in 32-bit mode). 64-bit applications and NVRAM support are unavailable in those versions. UEFI Quirks DisableSecurityPolicy - required on Windows Server 2019 / Windows 10 and newer Installer image creation Installer images can either be passed in from USB hard disks, or converted from a DMG to a VHDX image using qemu-img: DMGs need to be in a read/write format first. qemu-img convert -f raw -O vhdx Installer.dmg Installer.vhdx Boot arguments See the module list for boot arguments for each module. Credits Apple for macOS Goldfish64 for this software vit9696 for Lilu.kext and providing assistance flagers for file copy implementation and providing assistance Microsoft Hypervisor Top-Level Functional Specification Linux and FreeBSD Hyper-V integration services
  3. Dosdude1 MacOS Patcher is an all-new, easy-to-use tool that allows anyone to install macOS on unsupported Macs. Link HERE
  4. Automatic handling of brightness keys based on ACPI Specification. Link HERE Boot arguments -brkeysdbg to enable debug printing (available in DEBUG binaries). Special cases Typically no DSDT patches are required. Please remove old _Qxx to XQxx ones. On some models, may be required add ACPI patch _OSI to XOSI and SSDT-XOSI. Spoiler: On some old ThinkPad models, additional handling may be required. Credits Apple for macOS usr-sse2 for separating this driver from VoodooPS2 vit9696 for DeviceInfo API from Lilu zhen-zen for implementation
  5. An open source kernel extension providing a way to emulate some offsets in CMOS (RTC) memory. It can help you to avoid some conflicts between macOS AppleRTC and firmware/BIOS of your PC. It can also help you to find out at which offsets you have a conflict. In most cases it is enough to boot with some offsets in boot-args, perform sleep, wake and reboot. If you don't see any CMOS errors or some unexpected reboots, it means you have managed to exclude conflicted CMOS offsets. Offsets in boot-args rtcfx_exclude can have value from 00 to FF (wihout prefix 0x). Be careful: Offsets from 0 to 0D usually are more or less 'compatible' and should not cause any conflicts. Offsets from 0x80 to 0xAB are used to store some hibernation information (IOHibernateRTCVariables). If any offset in this range causes a conflict, you can exclude it, but hibernation won't work. In my case it was only the one offset: B2. B0 - B4 offsets are used for PowerManagement features, but they don't work on hacks anyway) Link HERE Compilation This kext is not Lilu-plugin, but it still relies on some useful methods from Lilu libraries, so you have to put Lilu.kext into project folder. Boot-args rtcfx_exclude=offset1,offset2,start_offset-end_offset... - list of offsets or ranges of offsets where writing is not allowed -rtcfxdbg turns on debugging output Credits Apple for macOS vit9696 for Lilu.kext and great help in implementing some features lvs1974 for writing the software and maintaining it
  6. Intel onboard LAN driver for macOS. Courtesy of Laura Müller. This copy includes alterations that are of concern in Acidanthera as well as kernel debugging support initially provided by aerror2 in IntelMausiEthernetWithKernelDebugger repository. Do use the original version when uncertain. No support or troubleshooting provided. Wake on LAN functionality should work out of the box. On misconfigured hardware one may try to force-enable it by injecting mausi-force-wol device property (with any value, recommended), or -mausiwol boot argument (for testing purposes). Link HERE A few days before Christmas I started my latest project, a new driver for recent Intel onboard LAN controllers. My intention was not to replace hnak's AppleIntelE1000e.kext completely but to deliver best performance and stability on recent hardware. That's why I dropped support for a number of older NICs. Currently the driver supports: 5 Series 82578LM 82578LC 82578DM 82578DC 6 and 7 Series 82579LM 82579V 8 and 9 Series I217LM I217V I218LM I218V I218LM2 I218V2 I218LM3 100 Series I219V I219LM I219V2 I219LM2 I219LM3 200 Series I219LM I219V 300 Series I219LM I219V Key Features of the Driver Support for multisegment packets relieving the network stack of unnecessary copy operations when assembling packets for transmission. No-copy receive and transmit. Only small packets are copied on reception because creating a copy is more efficient than allocating a new buffer. TCP, UDP and IPv4 checksum offload (receive and transmit). Support for TCP/IPv6 and UDP/IPv6 checksum offload. Makes use of the chip's TCP Segmentation Offload (TSO) feature with IPv4 and IPv6 in order to reduce CPU load while sending large amounts of data (disabled due to hardware bugs). Fully optimized for Mavericks or newer (64-bit architecture). Support for Energy Efficient Ethernet (EEE). VLAN support is implemented but untested as I have no need for it. The driver is published under GPLv2.
  7. An open source kernel extension providing a set of patches required for non-native Airport Broadcom Wi-Fi cards. Link HERE Notes This repository should be compiled with Lilu v1.2.4 or greater, otherwise the compilation will fail! Currently requires macOS 10.10 or newer. Note: Debug version of Lilu.kext should be put in the same folder as BrcmWLFixup! And they should be also used together! Features Supports AirPort_Brcm4360, AirPort_BrcmNIC and AirPort_BrcmNIC_MFG Implements patch for chip identificator checking (0xaa52), in <=10.12 it's required for successful driver starting Implements patch for "Failed PCIe configuration patch", required for some cards Implements patch for "Third Party Device" (returns vendor name "Apple") Implements patch for removing of white-list check Implements 5Ghz and country code patch (US by default) Implements WOWL (WoWLAN) disabler (turned on by default) - no low speed after wake Implements patch to disable LPO panic in AirPortBrcmNIC Installation types Clover Airport Fix + AirportBrcmFixup Clover Airport Fix + AddProperties(fake device-id) + AirportBrcmFixup (preferable) Clover Airport Fix + AirportBrcmFixup + FakePCIID + FakePCIID_Broadcom_WiFi.kext AirportBrcmFixup + FakePCIID + FakePCIID_Broadcom_WiFi.kext Boot-args -brcmfxdbg turns on debugging output -brcmfxbeta enables loading on unsupported osx -brcmfxoff disables kext loading -brcmfxwowl enables WOWL (WoWLAN) - it is disabled by default -brcmfx-alldrv allows patching for all supported drivers, disregarding current system version (see Matching device-id and kext name in different macOS versions) Specific boot-args and ioreg properties brcmfx-country=XX changes the country code to XX (US, CN, #a, ...), also can be injected via DSDT or Properties → DeviceProperties in bootloader brcmfx-aspm overrides value used for pci-aspm-default brcmfx-wowl enables/disables WoWLAN patch brcmfx-delay delays start of native broadcom driver for specified amount of milliseconds. It can solve panics or missing wi-fi device in Monterey. You can start with 15 seconds (brcmfx-delay=15000) and successively reduce this value until you notice instability in boot. brcmfx-alldrv allows patching for all supported drivers, disregarding current system version (see Matching device-id and kext name in different macOS versions) brcmfx-driver=0|1|2|3 enables only one kext for loading, 0 - AirPortBrcmNIC-MFG, 1 - AirPortBrcm4360, 2 - AirPortBrcmNIC, 3 - AirPortBrcm4331, also can be injected via DSDT or Properties → DeviceProperties in bootloader Possible values for brcmfx-aspm (and pci-aspm-default): 0 disables ASPM kIOPCIExpressASPML0s = 0x00000001, kIOPCIExpressASPML1 = 0x00000002, kIOPCIExpressCommonClk = 0x00000040, kIOPCIExpressClkReq = 0x00000100 Credits Apple for macOS vit9696 for Lilu.kext and great help in implementing some features PMheart for the initial idea and implementation darkvoid & RehabMan for FakePCIID implementation (partly used in AirportBrcmFixup) al3xtjames for disabling LPO panic in AirPortBrcmNIC lvs1974 for writing the software and maintaining it Matching device-id and kext name in different macOS versions [10.8] AirPortBrcm4360: 43a0, IOProbeScore = 641 AirPortBrcm4331: 4331, 4353, 432b, IOProbeScore = 615 [10.9] AirPortBrcm4360: 43a0, IOProbeScore = 842 AirPortBrcm4331: 4331, 4353, 432b, IOProbeScore = 700 [10.10] AirPortBrcm4360: 43ba, 43a3, 43a0, 4331, 4353, IOProbeScore = 930 AirPortBrcm4331: 4331, 4353, 432b, IOProbeScore = 900 [10.11] AirPortBrcm4360: 43ba, 43a3, 43a0, 4331, 4353, IOProbeScore = 1040 AirPortBrcm4331: 4331, 4353, 432b, IOProbeScore = 800 [10.12] AirPortBrcm4360: 43ba, 43a3, 43a0, 4331, 4353, IOProbeScore = 1152 AirPortBrcm4331: 4331, 4353, 432b, IOProbeScore = 800 [10.13] AirPortBrcm4360: 4331, 4353, IOProbeScore = 1240 AirPortBrcm4331: 4331, 4353, 432b, IOProbeScore = 800 AirPortBrcmNIC: 43ba, 43a3, 43a0, IOProbeScore = 1241 AirPortBrcmNIC-MFG: 43ba, 43a3, 43a0, IOProbeScore = -1000 [10.14] AirPortBrcm4360: 4331, 4353, IOProbeScore = 1400 AirPortBrcm4331: 4331, 4353, 432b, IOProbeScore = 800 AirPortBrcmNIC: 43ba, 43a3, 43a0, IOProbeScore = 1400 AirPortBrcmNIC-MFG: 43ba, 43a3, 43a0, IOProbeScore = -1000 [10.15] AirPortBrcm4360: 4331, 4353, IOProbeScore = 1400 AirPortBrcm4331: removed AirPortBrcmNIC: 43ba, 43a3, 43a0, IOProbeScore = 1400 AirPortBrcmNIC-MFG: removed [11] AirPortBrcm4360: removed AirPortBrcm4331: removed AirPortBrcmNIC: 43ba, 43a3, 43a0, IOProbeScore = 1400 AirPortBrcmNIC-MFG: removed [12] AirPortBrcm4360: removed AirPortBrcm4331: removed AirPortBrcmNIC: 43ba, 43a3, 43a0, IOProbeScore = 1400, kext is moved to the new location - IO80211FamilyLegacy.kext/Contents/PlugIns AirPortBrcmNIC-MFG: removed [13] AirPortBrcm4360: removed AirPortBrcm4331: removed AirPortBrcmNIC: 43ba, 43a3, 43a0, IOProbeScore = 1400, kext is moved to the new location - IO80211FamilyLegacy.kext/Contents/PlugIns AirPortBrcmNIC-MFG: removed Until version [10.13] there were only two kexts and for the most cases FakeID = 43a0 was enough to get working Wi-Fi. In [10.13] (and later) one family was separated into AirPortBrcm4360 (probably will be removed in 10.15), AirPortBrcmNIC and AirPortBrcmNIC-MFG. A proper fake-id has to be considered to load appropriate kext. Some device-id have limitations in one kext (like 5 Ghz range), but do not have it another. Please pay attention In 11+ class AirPortBrcm4360 has been completely removed. Using of injector kext with such class name and matched vendor-id:device-id blocks loading of original airport kext. To address this issue and keep compatibility with older systems injectors for AirPortBrcm4360 and AirPortBrcmNIC were removed from main Info.plist file. Instead, the two new kext injectors are deployed in PlugIns folder: AirPortBrcm4360_Injector.kext and AirPortBrcmNIC_Injector.kext. You have to block (or remove) AirPortBrcm4360_Injector.kext in 11+. In OpenCore you can specify MaxKernel 19.9.9 for AirPortBrcm4360_Injector.kext. In Clover you can have two different AirportBrcmFixup.kext, but in kext folder with version name 11 and 12 and 13 AirportBrcmFixup.kext must not contain AirPortBrcm4360_Injector.kext. You don't need these injectors at all if your vendor-id:device-id is natively supported by AirPortBrcmNIC or AirPortBrcm4360 (your device-id is included into Info.plist in these kexts).
  8. It is a Lilu plugin, combining functionality of VoodooTSCSync and disabling xcpm_urgency if TSC is not in sync. It should solve some kernel panics after wake. WARNING: CPUs without MSR_IA32_TSC_ADJUST (03Bh) are currently unsupported on macOS 12 and newer. WARNING: if you still get kernel panic like "Non-monotonic time: invoke at 0xxxxxxxxxxx, runnable....", you can try to add TSC_sync_margin=0 into your boot-args. Link HERE Boot-args -cputsdbg turns on debugging output -cputsbeta enables loading on unsupported osx -cputsoff disables kext loading -cputsclock forces using of method clock_get_calendar_microtime to sync TSC (the same method is used when boot-arg TSC_sync_margin is specified) Credits Apple for macOS vit9696 for Lilu.kext Voodoo Projects Team for initial idea and implementation RehabMan for improved implementation lvs1974 for writing the software and maintaining it
  9. A Lilu plugin intended to enable debug output in the macOS kernel, the original idea belongs to Piker-Alpha, see https://github.com/Piker-Alpha/debugMachKernel.sh for more details. Link HERE Boot-args -dbgenhdbg turns on debugging output -dbgenhbeta enables loading on unsupported osx -dbgenhoff disables kext loading -dbgenhiolog redirect IOLog output to kernel vprintf (the same as for kdb_printf and kprintf)
  10. A Lilu plug-in for dynamic power management data injection. Link HERE Notes This repository must be compiled with latest Lilu and MacKernelSDK, otherwise the compilation will fail! Note: Debug version of Lilu.kext and MacKernelSDK project folder should be put in the same folder as CPUFriend! And debug versions of Lilu and CPUFriend should also be used together when debugging! Configuration This kext is most likely not required when the CPU is natively supported by XNU (macOS kernel). In case of necessity, please see Instructions for configuration. Credits Apple for macOS vit9696 for Lilu.kext and various helps PMheart for writing the software and maintaining it
  11. Lilu Kernel extension for blocking unwanted processes causing compatibility issues on different hardware and unlocking the support for certain features restricted to other hardware. The list of blocks currently includes: /System/Library/CoreServices/ExpansionSlotNotification /System/Library/CoreServices/MemorySlotNotification The list of patches currently includes: Disabled MacBookAir model memory replacement UI (comes in pair with SystemMemoryStatus = Upgradable quirk). Disabled MacPro7,1 PCI Expansion view and RAM view. CPU brand string patch for non-Intel CPUs (can be forced for Intel with revcpu=1). Disabled uninitialized disk UI Note: Apple CPU identifier must be 0x0F01 for 8 core CPUs or higher and 0x0601 for 1, 2, 4, or 6 cores. This is the default in OpenCore for non-natively supported CPUs. Link HERE Boot arguments -revoff (or -liluoff) to disable -revdbg (or -liludbgall) to enable verbose logging (in DEBUG builds) -revbeta (or -lilubetaall) to enable on macOS older than 10.8 or newer than 13 -revproc to enable verbose process logging (in DEBUG builds) revpatch=value to enable patching as comma separated options. Default value is auto. memtab - enable memory tab in System Information on MacBookAir and MacBookPro10,x platforms pci - prevent PCI configuration warnings in System Settings on MacPro7,1 platforms cpuname - custom CPU name in System Information diskread - disables uninitialized disk warning in Finder asset - allows Content Caching when sysctl kern.hv_vmm_present returns 1 on macOS 11.3 or newer sbvmm - forces VMM SB model, allowing OTA updates for unsupported models on macOS 11.3 or newer none - disable all patching auto - same as memtab,pci,cpuname, without memtab and pci patches being applied on real Macs revcpu=value to enable (1, non-Intel default)/disable (0, Intel default) CPU brand string patching. revcpuname=value custom CPU brand string (max 48 characters, 20 or less recommended, taken from CPUID otherwise) revblock=value to block processes as comma separated options. Default value is auto. pci - prevent PCI and RAM configuration notifications on MacPro7,1 platforms gmux - block displaypolicyd on Big Sur+ (for genuine MacBookPro9,1/10,1) media - block mediaanalysisd on Ventura+ (for Metal 1 GPUs) none - disable all blocking auto - same as pci Note: 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:revpatch, 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:revcpu, 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:revcpuname and 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:revblock NVRAM variables work the same as the boot arguments, but have lower priority. Credits Apple for macOS vit9696 for Lilu.kext and great help in implementing some features
  12. NVMeFix is a set of patches for the Apple NVMe storage driver, IONVMeFamily. Its goal is to improve compatibility with non-Apple SSDs. It may be used both on Apple and non-Apple computers. Link HERE The following features are implemented: Autonomous Power State Transition to reduce idle power consumption of the controller. Host-driver active power state management. Workaround for timeout panics on certain controllers (VMware, Samsung PM981). Other incompatibilities with third-party SSDs may be addressed provided enough information is submitted to our bugtracker. Unfortunately, some issues cannot be fixed purely by a kernel-side driver. For example, MacBookPro 11,1 EFI includes an old version of NVMHCI DXE driver that causes a hang when resuming from hibernaton with full disk encryption on. Installation NVMeFix requires at least Lilu 1.4.1 and at least 10.14 system version. It may be compatible with older systems, but has not been tested. It may be installed to /Library/Extensions on 10.15 and earlier, or injected by the bootloader on all versions. Configuration -nvmefdbg enables detailed logging for DEBUG build. -nvmefoff disables the kext. -nvmefaspm forces ASPM L1 on all the devices. This argument is recommended exclusively for testing purposes, as for daily usage one could inject pci-aspm-default device property with <02 00 00 00> value into the SSD devices and bridge devices they are connected to onboard. Updated values will be visible as pci-aspm-custom in the affected devices. Some SSDs misbehave when APST is on. NVMeFix attempts to detect broken motherboard and SSD combinations and work around them. Motherboard is detected via IORegistry keys injected by Clover, or NVRAM variables provided by OpenCore. APST table entries specify minimum idle latency for the transition to occur. Maximum acceptable latency is 100000 microseconds, and may be overriden via little-endian 8-byte property ps-max-latency-us of parent PCI device (e.g. IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/RP06@1C,5/IOPP/SSD0@0). If set to 0, APST will be disabled completely. Diagnostics RELEASE build will only log high-level information about failures. DEBUG build will additionally log used power states, detailed error messages, and attempt to fetch APST status and table from the controller. APST enable status is posted to the IONVMeController IORegistry entry apst key. If active power management initialisation is successful, an NVMePMProxy entry will be created in the IOPower IORegistry plane with IOPowerManagement dictionary. Information about power states supported by the controller may be obtained e.g. using smartmontools. For example, in the following output the controller reports 5 states, where the former three high-power states will be used by NVMeFix for active power management, and the latter two may be used for APST depending on ps-max-latency-us. Supported Power States St Op Max Active Idle RL RT WL WT Ent_Lat Ex_Lat 0 + 9.00W - - 0 0 0 0 0 0 1 + 4.60W - - 1 1 1 1 0 0 2 + 3.80W - - 2 2 2 2 0 0 3 - 0.0450W - - 3 3 3 3 2000 2000 4 - 0.0040W - - 4 4 4 4 6000 8000 IONVMeFamily supports the following debug flag bitfield, which are passed either via nvme bootarg or debug.NVMe sysctl: 1: Log some events via kprintf 2: Detailed event trace via kernel_debug with 0x61500xx debugid 4: PRP-related event trace via kernel_debug with 0x61540xx debugid 8: Force disable LPSR for Apple controllers 16: Perform only PCI initialisation of NVMe controller 32: Ignore initialisation errors 128: Disable LPSR for Apple controllers 512: Disable Unmap feature for IONVMeBlockStorageDevice IONVMeFamily supports the following additional bootargs: nand-io-timeoutms: Timeout for NVMe requests in ms, 35 s by default enable-IO-log: Issue CORE_DEBUG_ENABLE_IOLOG ASP command (for Apple controllers)
  13. An open source kernel extension bringing a platform for arbitrary kext, library, and program patching throughout the system for macOS. Link HERE Features Generic kext patcher Generic process patcher (64-bit with basic 32-bit functionality) Generic framework/library patcher (64-bit with basic 32-bit functionality) Provides a unified plugin API Installation You should install this kext along with the plugin kexts depending on it. The prebuilt binaries are available on releases page. Several existing plugins possibly with code samples are available on known plugins page. To compile a plugin copy the debug version of Lilu.kext into its directory. Configuration Add -liludbg to enable debug printing (available in DEBUG binaries). Add -liludbgall to enable debug printing in Lilu and all loaded plugins (available in DEBUG binaries). Add -liluoff to disable Lilu. Add -liluuseroff to disable Lilu user patcher (for e.g. dyld_shared_cache manipulations). Add -liluslow to enable legacy user patcher. Add -lilulowmem to disable kernel unpack (disables Lilu in recovery mode). Add -lilubeta to enable Lilu on unsupported OS versions (macOS 13 and below are enabled by default). Add -lilubetaall to enable Lilu and all loaded plugins on unsupported os versions (use very carefully). Add -liluforce to enable Lilu regardless of the mode, OS, installer, or recovery. Add liludelay=1000 to enable 1 second delay after each print for troubleshooting. Add lilucpu=N to let Lilu and plugins assume Nth CPUInfo::CpuGeneration. Add liludump=N to let Lilu DEBUG version dump log to /var/log/Lilu_VERSION_KERN_MAJOR.KERN_MINOR.txt after N seconds Peculiarities Most of the plugins cease to function in safe (-x) mode. By default Lilu itself does not function in single-user (-s) mode, unless -liluforce is present. Contribution For the contributors with programming skills the headers are filled with AppleDOC comments. Earlier code changes could be tracked in AppleALC project. Writing and supporting code is fun but it takes time. Please provide most descriptive bugreports or pull requests. Credits Apple for macOS and lzvn decompression Brad Conte for SHA-256 implementation fG! for Onyx The Black Cat used as a base of the kernel patcher Nguyen Anh Quynh for capstone disassembler module Pike R. Alpha for original lzvn decompression Ralph Hempel for umm_malloc static pool allocator Vyacheslav Patkov for hde64 simple disassembler module 07151129 for some code parts and suggestions vit9696 for writing the software and maintaining it
  14. Lilu Kernel extension for installing Rosetta Cryptex in macOS Ventura. Applicable for both OS installation and updates. Link HERE With macOS Ventura, Apple finally dropped the last Mac that lacked the AVX2.0 CPU instruction, the 2013 Trash Can Mac Pro (MacPro6,1). With this, systems lacking AVX2.0 can no longer boot Ventura natively as Apple has stripped the legacy non-AVX2.0 dyld shared caches from the OS. However due to compatibility issues with Rosetta 2, Apple is forced to retain a pre-AVX2.0 dyld shared cache on Apple Silicon systems. Thus to support older machines, this kext will force the macOS installer/updater to install the Apple Silicon Cryptex (OS.dmg) instead of the stock Intel variant. More information can be found under macOS Ventura and OpenCore Legacy Patcher Support: Issue 998. Additionally this kext will disable Cryptex hash verification in APFS.kext. Additional notes: Delta Updates will not be supported with patched Cryptexes, Full Updates will be requested instead. Delta: 1-3GB~ Full Update: 12GB Rapid Secuirty Response Updates are currently not supported at this time. macOS only distributes x86_64h-based deltas on x86 machines, which are incompatible with the Rosetta Cryptex. If CryptexFixup determines your system already supports AVX2.0, it will not do anything (unless explicitly requested).Systems supporting AVX2.0 natively: Intel Haswell and newer AMD Excavator/Ryzen and newer Systems lacking AVX2.0: Intel Ivy Bridge and older AMD Bulldozer/Piledriver/Steamroller and older This kext does not drop the requirement for AVX2.0 in some of Ventura's Graphics Stack AMD Polaris, Vega and Navi Drivers in Ventura will not function without AVX2.0 support, end users will need to find alternative ways to achieve graphics acceleration Apple's Paravirtualized Graphics Stack still supports pre-AVX2.0 systems ex. VMware Fusion on Monterey host lacking AVX2.0, guest VM running Ventura Boot arguments -cryptoff (or -liluoff) to disable -cryptdbg (or -liludbgall) to enable verbose logging (in DEBUG builds) -cryptbeta (or -lilubetaall) to enable on macOS newer than 13 -crypt_allow_hash_validation to disable APFS.kext patching -crypt_force_avx to force install the Rosetta Cryptex on AVX2.0 systems Credits Apple for macOS vit9696 for Lilu.kext DhinakG for research and development khronokernel for research and development
  15. New VoodooPS2Trackpad uses VoodooInput's Magic Trackpad II emulation in order to use macOS native driver instead of handling all gestures itself. Link HERE This enables the use of any from one to four finger gestures defined by Apple including: Look up & data detectors Secondary click (with two fingers, in bottom left corner*, in bottom right corner*) Tap to click Scrolling Zoom in or out Smart zoom Rotate Swipe between pages Swipe between full-screen apps (with three or four fingers) Notification Centre Mission Control (with three or four fingers) App Exposé (with three or four fingers) Dragging with or without drag lock (configured in 'Accessibility'/'Universal Access' prefpane) Three finger drag (configured in 'Accessibility'/'Universal Access' prefpane, may work unreliably**) Launchpad (may work unreliably) Show Desktop (may work unreliably) Screen zoom (configured in 'Accessibility'/'Universal Access' -> Zoom -> Advanced -> Controls -> Use trackpad gesture to zoom) It also supports BetterTouchTool. In addition this kext supports Force Touch emulation (configured in Info.plist): Mode 0 – Force Touch emulation is disabled (you can also disable it in System Preferences without setting the mode). Mode 1 – Force Touch emulation using a physical button: on ClickPads (touchpads which have the whole surface clickable (the physical button is inside the laptop under the bottom of touchpad)), the physical button can be remapped to Force Touch. In such mode a tap is a regular click, if Tap to click gesture is enabled in System Preferences, and a click is a Force Touch. This mode is convenient for people who usually tap on the touchpad, not click. Mode 2 – 'wide tap': for Force Touch one needs to increase the area of a finger touching the touchpad***. The necessary width can be set in Info.plist. Mode 3 – pressure value is passed to the system as is; this mode shouldn't be used. Mode 4 (by @Tarik02) – pressure is passed to the system using the following formula: The parameters in the formula are configured using ForceTouchCustomUpThreshold, ForceTouchCustomDownThreshold and ForceTouchCustomPower keys in Info.plist or configuration SSDT. Note that ForceTouchCustomDownThreshold is the upper limit on the pressure value and vice versa, because it corresponds to the touchpad being fully pressed down. For Elan touchpad, only mode 0 and mode 1 are supported. For ALPS touchpads, V1, V2 and V6 do not support Force Touch. V3, V4 and V5 only support mode 0, 2, 3 and 4. V7 only supports mode 0 and 1. V8 supports all modes. Installation and compilation For VoodooPS2Trackpad.kext to work multitouch interface engine, named VoodooInput.kext, is required. For released binaries a compatible version of VoodooInput.kext is already included in the PlugIns directory. For custom compiled versions VoodooInput.kext bootstrapping is required prior to compilation. By default Xcode project will do this automatically. If you prefer to have your own control over the process execute the following command in the project directory to have VoodooInput bootstrapped: src=$(/usr/bin/curl -Lfs https://raw.githubusercontent.com/acidanthera/VoodooInput/master/VoodooInput/Scripts/bootstrap.sh) && eval "$src" || exit 1 Touchpad and Keyboard Input Toggle This kext supports disabling touch input by pressing the Printscreen key on your keyboard, or the touchpad disable key on many laptops. Simply press the key to toggle touchpad input off and again to toggle it back on. In addition, for 2-in-1 systems that do not support disabling the keyboard in hardware while in tablet mode you may toggle keyboard input off and on by holding option(Windows) and pressing the Printscreen key. Repeat the keypress to re-enable keyboard input. These settings are runtime only and do not persist across a reboot. Credits: VoodooPS2Controller etc. – turbo, mackerintel, @RehabMan, nhand42, phb, Chunnan, jape, bumby (see RehabMan's repository). Magic Trackpad 2 reverse engineering and implementation – https://github.com/alexandred/VoodooI2C project team. VoodooPS2Trackpad integration – @kprinssu. Force Touch emulation and finger renumbering algorithm** – @usr-sse2. Elan touchpad driver – linux kernel contributors, @kprinssu, @BAndysc and @hieplpvip * On my touchpad this gesture was practically impossible to perform with the old VoodooPS2Trackpad. Now it works well. ** Due to the limitations of PS/2 bus, Synaptics touchpad reports only the number of fingers and coordinates of two of them to the computer. When there are two fingers on the touchpad and third finger is added, a 'jump' may happen, because the coordinates of one of the fingers are replaced with the coordinates of the added finger. Finger renumbering algorithm estimates the distance from old coordinates to new ones in order to hide this 'jump' from the OS and to calculate approximate position of the 'hidden' finger, in assumption that fingers move together in parallel to each other. Now third and fourth fingers are reported at the same position as one of the first two fingers. It allows Launchpad/Show desktop gesture to work more reliably. *** The touchpad reports both finger width (ranged from 4 to 15) and pressure (ranged from 0 to 255), but in practice the measured width is almost always 4, and the reported pressure depends more on actual touch width than on actual pressure.
  16. Most Broadcom USB Bluetooth devices make use of a system called RAMUSB. RAMUSB allows the firmware for the device to be updated on-the-fly, however any updates previously applied are lost when shutting down the machine. The Broadcom Windows driver will upload firmware into the Broadcom Bluetooth device on every startup, however for macOS this functionality is not supported out of the box. BrcmPatchRAM kext is a macOS driver which applies PatchRAM updates for Broadcom RAMUSB based devices. It will apply the firmware update to your Broadcom Bluetooth device on every startup / wakeup, identical to the Windows drivers. The firmware applied is extracted from the Windows drivers and the functionality should be equal to Windows. Note that the original Apple Broadcom bluetooth devices are not RAMUSB devices, and thus do not have the same firmware mechanism. Link HERE Installation Note if you have an Apple MacBook/iMac/Mac Pro etc, follow the Mac instructions Install one of BrcmPatchRAM.kext or BrcmPatchRAM2.kext or BrcmPatchRAM3.kext depending on macOS version, never both. BrcmPatchRAM.kext: for 10.10 or earlier. BrcmPatchRAM2.kext: for 10.11 - 10.14. BrcmPatchRAM3.kext: for 10.15 or later. Also, install one firmware kext BrcmFirmwareData.kext or BrcmFirmwareRepo.kext, depending on installation location, never both. BrcmFirmwareData.kext: Most appropriate for bootloader injection. This is the preferred configuration. BrcmFirmwareRepo.kext: Install to /System/Library/Extensions (/Library/Extensions on 10.11 and later). This kext is slightly more memory efficient than BrcmFirmwareData.kext, but cannot be injected by a bootloader. Advanced users: For custom firmware injectors, install the injector plus BrcmFirmwareRepo.kext. This works from either /S/L/E or through bootloader injection. Optionally, you may remove all the firmwares from BrcmFirmwareRepo.kext/Contents/Resources. If you're using the injector through the bootloader, the IOProviderClass in the Info.plist for BrcmFirmwareRepo.kext must be changed from "disabled_IOResources" to "IOResources". Keep in mind that BrcmPatchRAM3.kext also requires BrcmBluetoothInjector.kext to be installed. Starting with macOS 10.15, this is the only supported configuration because due to framework changes BrcmPatchRAM.kext and BrcmPatchRAM2.kext are incompatible with macOS 10.15. In case you forget to install BrcmBluetoothInjector.kext, Bluetooth will appear to be available but it won't work at all. Also, if you have a non-PatchRAM device (or you're not sure), install one of BrcmNonPatchRAM.kext or BrcmNonPatchRAM2.kext, depending on macOS version, never both. Although these kexts do not install any firmware (these devices have firmware built-in), they still depend on BrcmPatchRAM/BrcmPatchRAM2.kext. BrcmNonPatchRAM.kext: for 10.10 or earlier BrcmNonPatchRAM2.kext: for 10.11 or later. BrcmBluetoothInjector.kext To be used for macOS 10.11-11. Use BrcmBluetoothInjectorLegacy.kext for older systems. Using BrcmPatchRAM3.kext also requires BrcmBluetoothInjector.kext as changes in macOS Catalina (10.15) requires the use of a separate injector kext. This is due to the removal of the following IOCatalogue methods: IOCatalogue::addDrivers, IOCatalogue::removeDrivers and IOCatalogue::startMatching Consequently to have the native BT driver load for the device (BroadcomBluetoothHostControllerUSBTransport) we inject using a plist with a slightly lower IOProbeScore than BrcmPatchRAM3 so it doesn't probe before the firmware upload. The BrcmBluetoothInjector.kext is a codeless kernel extension which injects the BT hardware data using a plist; it does not contain a firmware uploader. You might also want to try this kext if you wish to see if your device will work without a firmware uploader. Do not use BrcmPatchRAM or BrcmPatchRAM2 with this kext. BrcmBluetoothInjector supported devices: [0489:e030] BCM2070 - BCM943224HMB, BCM943225HMB Combo [0489:e032] 20702 E032 Combo [0489:e042] 20702A1 Lenovo China standalone [0489:e046] 20702A1 Acer 43228+20702 combo card [0489:e04f] 20702A1 Lenovo China 43227 WLAN + 20702A1 Combo card [0489:e052] 20702 non-UHE Generic [0489:e055] 43142A0 Acer combo [0489:e059] Acer 43228 + 20702A1 combo [0489:e079] Lenovo China 43162 NGFF [0489:e07a] Lenovo China 4352+20702 NGFF [0489:e087] Acer 43228 NGFF combo module [0489:e096] BCM43142A0 [0489:e097] Acer Foxconn BCM4356A2 NGFF [0489:e0a1] 20703A1 Lenovo 43602 NGFF combo [04b4:f901] Laird BT851 Bluetooth 5.0 USB dongle [04ca:2003] 20702A1 Lenovo China standalone [04ca:2004] LiteOn 43228+20702 combo [04ca:2005] LiteOn 43228+20702 combo [04ca:2006] LiteOn 43142 combo [04ca:2009] LiteOn 43142 combo [04ca:200a] LiteOn 4352 combo [04ca:200b] LiteOn 4352 combo [04ca:200c] LiteOn 4352 combo [04ca:200e] Liteon 43228 NGFF combo [04ca:200f] Acer_LiteOn BCM20702A1_4352 [04ca:2012] Acer BCM943142Y NGFF [04ca:2013] Acer LiteOn BCM4356A2 NGFF [04ca:2014] Asus LiteOn BCM4356A2 NGFF [04ca:2016] Lenovo 43162 NGFF combo module [04f2:b4a1] ASUS Chicony BCM43142A0 NGFF [04f2:b4a2] BCM4356A2 [050d:065a] 20702 standalone [0930:021e] 20702A1 Toshiba standalone [0930:021f] Toshiba 43142 [0930:0221] 20702A1 Toshiba 4352 [0930:0223] 20702A1 Toshiba 4352 [0930:0225] Toshiba 43142 combo NGFF [0930:0226] Toshiba 43142 combo NGFF [0930:0229] 43162 combo NGFF [0a5c:2168] BRCM Generic 43162Z [0a5c:2169] BRCM Generic 43228z [0a5c:216a] Dell DW1708 43142Y combo [0a5c:216b] HP Rapture 4352z ngff combo [0a5c:216c] HP Harrier 43142 [0a5c:216d] HP Hornet 43142Y ngff combo [0a5c:216e] HP Blackbird 43162 NGFF [0a5c:216f] Dell DW1560 4352+20702 M.2 [0a5c:217d] BCM2070 - BCM943224HMB, BCM943225HMB Combo [0a5c:21d7] BRCM Generic 43142A0 RAMUSB [0a5c:21de] 4352+20702A1 combo [0a5c:21e1] 20702A1 non-UHE HP SoftSailing [0a5c:21e3] 20702A1 non-UHE 4313 combo HP Valentine [0a5c:21e6] 20702 non-UHE Lenovo Japan [0a5c:21e8] 20702A1 dongles [0a5c:21ec] 20702A1 REF6 OTP module standalone [0a5c:21f1] 43228 combo [0a5c:21f3] Lenovo Edge 43228 + 20702A1 combo [0a5c:21f4] Lenovo Edge 4313 + 20702A1 combo [0a5c:21fb] HP Supra 4352 20702A1 combo [0a5c:21fd] BRCM Generic 4352z RAMUSB [0a5c:640a] BRCM Generic Reference 4356 [0a5c:640b] HP Luffy 43228 + 20702 M.2 [0a5c:640e] Lenovo 4356 NGFF combo [0a5c:6410] 20703A1 RAM download - DW1830 43602 [0a5c:6412] Dell 4350C5 [0a5c:6413] Broadcom Generic 4350C5 [0a5c:6414] Lenovo 4350C5 [0a5c:6417] Zebra 4352 [0a5c:6418] HP Brook 2x2ac [0a5c:7460] 20703A1 RAM download [0a5c:828d] Fenvi BCM94352Z [0b05:178a] BCM2070 - BCM943224HMB, BCM943225HMB Combo [0b05:17b5] Asus 43228+20702A1 combo [0b05:17cb] 20702 standalone [0b05:17cf] Asus 4352_20702A1 combo [0b05:180a] Azurewave 4360+20702 combo [0b05:181d] Asus AZUREWAVE MB BCM4356A2 [0bb4:0306] 20703A1 HTC runtime RAM dongle [105b:e065] LenovoChina 43142A0 combo [105b:e066] LenovoChina 43228+20702 combo [13d3:3384] 20702A1 Azurewave standalone [13d3:3388] BRCM Generic 43142A0 RAMUSB [13d3:3389] BRCM Generic 43142A0 RAMUSB [13d3:3392] Azurewave 43228+20702 [13d3:3404] 4352HMB Azurewave Module [13d3:3411] Dell Alienware 4352 20702A1 combo [13d3:3413] Azurewave 4360+20702 combo [13d3:3418] Azurewave 4352+20702 combo module [13d3:3427] Toshiba 43142 combo NGFF [13d3:3435] AZUREWAVE BCM20702A1_4352 [13d3:3456] AZUREWAVE BCM20702A1_4352 [13d3:3473] Asus AZUREWAVE BCM4356A2 NGFF [13d3:3482] AZUREWAVE BCM43142A0 NGFF [13d3:3484] Acer AZUREWAVE BCM43142A0 NGFF [13d3:3485] Asus AZUREWAVE BCM4356A2 NB 2217NF [13d3:3488] Asus AZUREWAVE BCM4356A2 NB 2210 [13d3:3492] Asus AZUREWAVE BCM4356A2 NGFF [13d3:3504] AW CM217NF BCM4371C2 [13d3:3508] AW ASUS CM217NF BCM4371C2 [13d3:3517] AW CE160H BCM20702 [145f:01a3] 20702A1 Asus Trust standalone [2b54:5600] Emdoor AP6356SD BCM4356A2 [2b54:5601] Asus AP6356SDP1A BCM4356A2 [2b54:5602] AMPAK AP6356SDP2A BCM4356A2 [33ba:03e8] TOULINEUA BCM94360Z4 4360+20702 combo [33ba:03e9] TOULINEUA BCM94360Z3 4360+20702 combo [413c:8143] DW1550 4352+20702 combo [413c:8197] Dell DW380 Nancy Blakes standalone If yours is not present, edit the Info.plist as needed. BlueToolFixup.kext Required for macOS 12 or newer, as in macOS 12 Apple has changed parts of the Bluetooth stack from kernel-space to user-space as detailed in here and here. Requires Lilu 1.5.4+ Do not use it with BrcmBluetoothInjector for macOS 12 or newer. Supported Devices BrcmPatchRAM supports any Broadcom USB bluetooth device based on the BCM20702 chipset (possibly other chipsets are supported also, but this has not been tested). The following devices are supported at the moment: Devices marked with * are tested successfully Non-PatchRAM devices (BrcmPatchRAM used to speed up recovery after sleep): [03f0:231d] HP 231d (ProBook BT built-in firmware) [13d3:3295] Azurewave BCM943225 (20702A bult-in firmware) Tested PatchRAM devices: [0489:e032] 20702 Combo USB [0489:e042] 20702A1 Lenovo China * [0489:e079] Lenovo China 43162 NGFF [0489:e07a] Lenovo NGFF (4352 / 20702) [04ca:2003] 20702A1 Lenovo China [04ca:200a] LiteOn (4352 Combo) [04ca:200b] LiteOn (4352 Combo) * [04ca:200c] LiteOn (4352 Combo) [04ca:200f] Acer / LiteOn (4352 Combo) [050d:065a] Belkin (20702) [0930:0221] Toshiba (4352 / 20702) [0930:0223] Toshiba NGFF (4352 / 20702) * [0a5c:216b] HP Rapture 4352Z NGFF Combo [0a5c:216e] HP Blackbird 43162 NGFF [0a5c:216f] Dell DW1560 (4352/20702) [0a5c:21de] 4352/20702A1 combo [0a5c:21e1] HP Softsailing (20702A1) [0a5c:21e6] non-UHE Lenovo Bluetooth (20702) [0a5c:21e8] Bluetooth USB Dongle (20702A1) * [0a5c:21ec] Inateck Bluetooth (20702A1) [0a5c:21fb] HP Supra 4352 (20702A1 Combo) [0a5c:21fd] Broadcom 4352Z [0a5c:22be] Broadcom BCM20702 Bluetooth 4.0 USB Device [0a5c:6410] Dell Wireless 1830 Bluetooth 4.1 LE [0a5c:6412] Dell Wireless 1820 Bluetooth 4.1 LE [0a5c:828d] Fenvi BCM94352Z [0b05:17cb] Asus BT-400 (20702 stand-alone) * [0b05:17cf] Asus (4352/20702A1 combo) * [0b05:180a] Azurewave (4360/20702 combo) [13d3:3404] Azurewave (4352HMB) * [13d3:3411] Dell Alienware (4352/20702A1 combo) * [13d3:3413] Azurewave (4360/20702 combo) [13d3:3418] Azurewave (4352/20702 combo) [13d3:3435] Azurewave (4352/20702 combo) [13d3:3456] Azurewave (4352/20702 combo) [413c:8143] Dell DW1550 (4352/20702 combo) All of the firmwares from the Windows package are present in the kext and automatically associated with their vendor/device-ids. They are expected to work, but have not been confirmed. If you can confirm a working device not listed above, please notify via the "issues" database on github. The firmwares have been updated to version More Installation Details BrcmPatchRAM.kext, BrcmPatchRAM2.kext and BrcmPatchRAM3.kext can be installed either through bootloader kext injection or placed in /System/Library/Extensions (/Library/Extensions on 10.11 and later). Make sure to install only one of them, depending on system version. BrcmFirmwareRepo.kext does not work with bootloader kext injection, unless using a device specific firmware injector. BrcmFirmwareData.kext can work with bootloader kext injection. You can also use a device specific firmware injector (in conjunction with BrcmFirmwareRepo.kext). In this scenario, BrcmFirmwareRepo.kext does work from bootloader kexts. You will find device specfic injectors in the 'firmwares' directory of the git repository. They are not included in the distribution ZIP. Configuration There are a number of delays which can be changed with the following kernel boot arguments. You might change these values if you find BrcmPatchRAM is hanging during firmware load. Refer to the source for futher details on these delays. bpr_initialdelay: Changes mInitialDelay, the delay in ms before any communication happens with the device. Default value is 100. bpr_handshake: Overrides mSupportsHandshake, firmware uploaded handshake support status. 0 means wait bpr_preresetdelay ms after uploading firmware, and then reset the device. 1 means wait for a specific response from the device and then reset the device. Default value depends on the device identifier. bpr_preresetdelay: Changes mPreResetDelay, the delay in ms assumed to be needed for the device to accept the firmware. The value is unused when bpr_handshake is 1 (passed manually or applied automatically based on the device identifier). Default value is 250. bpr_postresetdelay: Changes mPostResetDelay, the delay in ms assumed to be needed for the firmware to initialise after reseting the device upon firmware upload. Default value is 100. bpr_probedelay: Changes mProbeDelay (removed in BrcmPatchRAM3), the delay in ms before probing the device. Default value is 0. For example, to change mPostResetDelay to 400 ms, use the kernel boot argument: bpr_postresetdelay=400. Note: Some with the typical "wake from sleep" problems are reporting success with: bpr_probedelay=100 bpr_initialdelay=300 bpr_postresetdelay=300. Or slightly longer delays: bpr_probedelay=200 bpr_initialdelay=400 bpr_postresetdelay=400. On macOS 12.4 and newer versions, a new address check has been introduced in bluetoothd, thus an error will be triggered if two Bluetooth devices have the same address. However, this check can be circumvented by adding the boot argument -btlfxallowanyaddr. Details BrcmPatchRAM consists of 2 parts: BrcmPatchRAM itself communicates with supported Broadcom Bluetooth USB devices (as configured in the Info.plist), and detects if they require a firmware update. If a firmware update is required, the matching firmware data will be uploaded to the device and the device will be reset. BrcmFirmwareStore (implemented by either BrcmFirmwareData.kext or BrcmFirmwareRepo.kext) is a shared resource which holds all the configured firmwares for different Broadcom Bluetooth USB devices. Some devices require device specific firmware, while others can use the newest version available in the Windows drivers without issue. New firmwares are added/configured on a regular basis to support devices, so be sure to follow release updates, or log an issue if you find your device is not supported. Firmwares can be stored using zlib compression in order to keep the configuration size manageable. After the device firmware is uploaded, the device control is handed over to Apple's BroadcomBluetoothHostControllerUSBTransport. This means that for all intents and purposes your device will be native on macOS and support all functionalities fully. It is possible to use the Continuity Activation Patch in combination with BrcmPatchRAM through BT4LEContinuityFixup, or through dokterdok's script Continuity-Activation-Tool, or through OpenCore quirk ExtendBTFeatureFlags. Troubleshooting After installing BrcmPatchRAM, even though your Bluetooth icon may show up, it could be that the firmware has not been properly updated. Verify the firmware is updated by going to System Information and check the Bluetooth firmware version number under the Bluetooth information panel. If the version number is "4096", this means no firmware was updated for your device and it will not work properly. Verify any errors in the system log by running the following command in the terminal: # For 10.12 and newer: log show --last boot | grep -i brcm[fp] # For older macOS versions: cat /var/log/system.log | grep -i brcm[fp] Ensure you check only the latest boot messages, as the system.log might go back several days. If the firmware upload failed with an error, try installing the debug version of BrcmPatchRAM in order to get more detailed information in the log. In order to report an error log an issue on github with the following information: Device product ID Device vendor ID BrcmPatchRAM version used Dump of BrcmPatchRAM debug output from /var/log/system.log showing the firmware upload failure Firmware Compatibility Some USB devices are very firmware specific and trying to upload any other firmware for the same chipset into them will fail. This usually displays in the system log as: BrcmPatchRAM: Version 0.5 starting. BrcmPatchRAM: USB [0a5c:21e8 5CF3706267E9 v274] "BCM20702A0" by "Broadcom Corp" BrcmPatchRAM: Retrieved firmware for firmware key "BCM20702A1_001.002.014.1443.1612_v5708". BrcmPatchRAM: Decompressed firmware (29714 bytes --> 70016 bytes). BrcmPatchRAM: device request failed (0xe000404f). BrcmPatchRAM: Failed to reset the device (0xe00002d5). BrcmPatchRAM: Unable to get device status (0xe000404f). BrcmPatchRAM: Firmware upgrade completed successfully. The errors in between mean the firmware was not uploaded successfully, and the device will most likely need a specific firmware configured. For other devices the newest firmware available (even though not specified specifically in the Windows drivers) works fine. New devices In order to support a new device, the firmware for the device needs to be extracted from existing Windows drivers. A copy of the (current) latest Broadcom USB bluetooth drivers can be found here: http://drivers.softpedia.com/get/BLUETOOTH/Broadcom/ASUS-X99-DELUXE-Broadcom-Bluetooth-Driver-6515800-12009860.shtml#download For an automatic update you can unpack the Broadcom USB bluetooth files and run firmware_update.tool. Should you come across newer drivers than, please let me know. In order to get the device specific firmware for your device take the following steps: Look up your USB device vendor and product ID, in this example we will be using the BCM94352Z PCI NGFF WiFi/BT combo card, for which the vendor is 0930 and product ID 0233. Extract the Windows Bluetooth driver package and open the bcbtums-win8x64-brcm.inf file. Find your vendor / device ID combination in the .inf file %BRCM20702.DeviceDesc%=BlueRAMUSB0223, USB\VID_0930&PID_0223 ; 20702A1 Toshiba 4352 Locate the mentioned "RAMUSB0223" device in the .inf file: ;;;;;;;;;;;;;RAMUSB0223;;;;;;;;;;;;;;;;; [RAMUSB0223.CopyList] bcbtums.sys btwampfl.sys BCM20702A1_001.002.014.1443.1457.hex Copy the firmware hex file matching your device from the Windows package, in this case "BCM20702A1_001.002.014.1443.1457.hex" The firmware file can now optionally be compressed using the included zlib.pl script: zlib.pl deflate BCM20702A1_001.002.014.1443.1457.hex > BCM20702A1_001.002.014.1443.1457.zhx After this a hex dump can be created for pasting into a plist editor: xxd -ps BCM20702A1_001.002.014.1443.1457.zhx|tr '\n' ' ' > BCM20702A1_001.002.014.1443.1457.dmp Using a plist editor create a new firmware key under the BcmFirmwareStore/Firmwares dictionary. Note that the version number displayed in macOS is the last number in the file name (1457 in our sample) + 4096. So in this case the firmware version in macOS would be: "c14 v5553". After configuring a key under BcmFirmwareStore/Firmwares, add your device ID as a new device for BrcmPatchRAM. Firmwares can also be loaded directly from BrcmFirmwareRepo.kext/Contents/Resources, either by firmware key name (see above), or by naming the file with just the vendor and device-id. For example, 0930_0223.hex (uncompressed) or 0930_0223.zhx (compressed). Copying an existing IOKit personality and modifying its properties is the easiest way to do this. Configure the earlier firmware using its unique firmware key.
  17. An open source kernel extension providing a sync between RTC variables and NVRAM. By design the mach kernel encrypts hibernate sleepimage and writes the encryption key to variable "IOHibernateRTCVariables" in the system registry (PMRootDomain). Somehow this value has to be written into RTC (or SMC) in order the boot.efi could read it. But in case if you have to limit your RTC memory to 1 bank (128 bytes), it doesn't work: there are no any variables in SMC/NVRAM/RTC (actually FakeSMC). Fortunately, boot.efi can read key "IOHibernateRTCVariables" from NVRAM! This kext detects entering into "hibernate" power state, reads variable IOHibernateRTCVariables from the system registry and writes it to NVRAM. Link HERE Features Enables 'native' hibernation on PC's with hardware NVRAM on 10.10.5 and later. 'Native' means hibernation with encryption (standard hibernate modes 3 & 25) Enables dumping NVRAM to file /nvram.plist before hibernation or panic Boot-args -hbfx-dump-nvram saves NVRAM to a file nvram.plist before hibernation and after kernel panic (with panic info) -hbfx-disable-patch-pci disables patching of IOPCIFamily (this patch helps to avoid hang & black screen after resume (restoreMachineState won't be called for all devices) hbfx-patch-pci=XHC,IMEI,IGPU allows to specify explicit device list (and restoreMachineState won't be called only for these devices). Also supports values none, false, off. -hbfxdbg turns on debugging output -hbfxbeta enables loading on unsupported osx -hbfxoff disables kext loading hbfx-ahbm=abhm_value controls auto-hibernation feature, where abhm_value is an arithmetic sum of respective values below: EnableAutoHibernation = 1: If this flag is set, system will hibernate instead of regular sleep (flags below can be used to limit this behavior) WhenLidIsClosed = 2: Auto hibernation can happen when lid is closed (if bit is not set - no matter which status lid has) WhenExternalPowerIsDisconnected = 4: Auto hibernation can happen when external power is disconnected (if bit is not set - no matter whether it is connected) WhenBatteryIsNotCharging = 8: Auto hibernation can happen when battery is not charging (if bit is not set - no matter whether it is charging) WhenBatteryIsAtWarnLevel = 16: Auto hibernation can happen when battery is at warning level (macOS and battery kext are responsible for this level) WhenBatteryAtCriticalLevel = 32: Auto hibernation can happen when battery is at critical level (macOS and battery kext are responsible for this level) DoNotOverrideWakeUpTime = 64: Do not alter next wake up time, macOS is fully responsible for sleep maintenance dark wakes DisableStimulusDarkWakeActivityTickle = 128: Disable power event kStimulusDarkWakeActivityTickle in kernel, so this event cannot trigger a switching from dark wake to full wake When when IOPMPowerSource cannot detect warning or critical battery level (it happens on hackintosh), next 4 bits can be used to specify minimal capacity percent remaining value when hibernation will be forced: RemainCapacityBit1 = 256 (1) RemainCapacityBit2 = 512 (2) RemainCapacityBit3 = 1024 (4) RemainCapacityBit4 = 2048 (8) Specified minimal capacity will be also used to put macOS into sleep/hibernate state (when the remaining capacity is less than it). 4 bits can be used to specify the battery levels from 1 to 15. Bits RemainCapacityBit1-RemainCapacityBit4 are 1,2,4,8 in percentage, so for example if you want to have 10 percent level to be the point where the laptop goes into sleep/hibernation, you would add Bits RemainCapacityBit4 and RemainCapacityBit2 which would be 2048+512=2560 (8+2=10 percent) in hbfx-ahbm. Bit EnableAutoHibernation defines a final state (sleep or hibernate). NVRAM options The following options can be stored in NVRAM (GUID = E09B9297-7928-4440-9AAB-D1F8536FBF0A), they can be used instead of respective boot-args hbfx-dump-nvram - type Boolean hbfx-disable-patch-pci - type Boolean hbfx-patch-pci=XHC,IMEI,IGPU,none,false,off - type String hbfx-ahbm - type Number Dependencies Lilu Credits Apple for macOS vit9696 for Lilu.kext and great help in implementing some features lvs1974 for writing the software and maintaining it
  18. Lilu Kernel extension for enabling Sidecar, NightShift, AirPlay and Universal Control. Link HERE Additional Notes NightShift (macOS 10.12.4+) AirPlay to Mac (macOS 12.0+) Universal Control (macOS 12.3+) Requires minimum of Wifi N and Bluetooth 4.0 for wireless, wired is supported between iPad and Mac as an alternative Note all parties check each other for compatibility, thus requiring FeatureUnlock on all models in the chain Seen as Ineligible Device Found Md MacBookPro11,4, SV 340.17.2 in Console under UniversalControl: com.apple.universalcontrol Recommend using a different SMBIOS if possible, otherwise use -force_uc_unlock for machines that are not blacklisted but are connecting with a blacklisted model. Due to the nature of requiring FeatureUnlock for both models, Apple Silicon and iPads will not work Sidecar (macOS 10.15.0+) Requires minimum of Wifi N and Bluetooth 4.0 for wireless, wired is supported between iPad and Mac as an alternative Requires a machine with an Intel iGPU active for reliable usage, most dGPU-only machines will experience difficulties. An H.265 capable iGPU is recommended for best streaming quality. AMD dGPU-only machines may work if using an iMac19,x or iMac20,x SMBIOS with gvaForceAMDKE setting applied: defaults write com.apple.AppleGVA gvaForceAMDKE -boolean yes Boot arguments -caroff (or -liluoff) to disable -cardbg (or -liludbgall) to enable verbose logging (in DEBUG builds) -carbeta (or -lilubetaall) to enable on macOS newer than 13 -allow_sidecar_ipad enables Sidecar support for unsupported iPads -disable_sidecar_mac disables Sidecar/AirPlay/Universal Control patches -disable_nightshift disables NightShift patches -force_uni_control forces Universal Control patching even when model doesn't require Credits Apple for macOS vit9696 for Lilu.kext khronokernel for developing AirPlay to Mac and Universal Control patch sets and maintaining Sidecar patch set Osy and DhinakG for Polaris22Fixup base Ben-z for original SidecarCore patch set Pike R. Alpha and cdf for NightShift patch set
  19. Lilu plugin providing patches to select GPUs on macOS. Link HERE Features Fixes boot to black screen on AMD and NVIDIA Fixes sleep wake to black screen on AMD Fixes boot screen distortion in certain cases Fixes transmitter/encoder in autodetected connectors for multimonitor support (-raddvi) Fixes HD 7730/7750/7770/R7 250/R7 250X initialisation (radpg=15) Allows tuning of aty_config, aty_properties, cail_properties via ACPI Allows enforcing 24-bit mode on unsupported displays (-rad24) Allows booting without video acceleration (-radvesa) Allows automatically setting GPU model name or providing it manually for RadeonFramebuffer Allows specifying custom connectors via device properties for RadeonFramebuffer Allows tuning autodetected connector priority via device properties (HD 7xxx or newer) Fixes an issue in AppleGraphicsDevicePolicy.kext so that we could use a MacPro6,1 board-id/model combination, without the usual hang with a black screen. Patching AppleGraphicsDevicePolicy.kext Modifies macOS to recognize NVIDIA's web drivers as platform binaries. This resolves the issue with transparent windows without content, which appear for applications that use Metal and have Library Validation enabled. Common affected applications are iBooks and Little Snitch Network Monitor, though this patch is universal and fixes them all. NVWebDriverLibValFix Injects IOVARendererID into GPU properties (required for Shiki-based solution for non-freezing Intel and/or any discrete GPU) For Intel HD digital audio HDMI, DP, Digital DVI (Patches connector-type DP -> HDMI) Fixes NVIDIA GPU interface stuttering on 10.13 (official and web drivers) Fixes the kernel panic caused by an invalid link rate reported by DPCD on some laptops with Intel IGPU. Fixes the infinite loop on establishing Intel HDMI connections with a higher pixel clock rate on Skylake, Kaby Lake and Coffee Lake platforms. Implements the driver support for onboard LSPCON chips to enable DisplayPort to HDMI 2.0 output on some platforms with Intel IGPU. Enforces complete modeset on non-built-in displays on Kaby Lake and newer to fix booting to black screen. Allows non-supported cards to use HW video encoder (-radcodec) Fixes choppy video playback on Intel Kaby Lake and newer. Fixes black screen on Intel HD since 10.15.5. Adds workaround for rare force wake timeout panics on Intel KBL and CFL. Supports all valid Core Display Clock (CDCLK) freqencies on Intel ICL platforms. Fixes the kernel panic caused by an incorrectly calculated amount of DVMT pre-allocated memory on Intel ICL platforms. Makes brightness transitions smoother on Intel IVB+ platforms. Fixes the short period garbled screen issue after the system boots on Intel ICL platforms. Fixes the PWM backlight control of the built-in display that is directly wired to AMD Radeon RX 5000 series graphic cards. Fixes the freeze during iGPU initialization that may occur on certain laptops such as Chromebooks on macOS 10.15 and later.
  20. How to mount EFI partition on MacOS or Windows Tutorial HERE
  21. An open source kernel extension enabling native macOS HD audio for not officially supported codecs without any filesystem modifications. AppleALCU can be used for systems with digital-only audio. Download AppleAlc HERE Features Digital and analog audio support starting from the OS installation Recovery HD/macOS Installer audio support Automated codec detection Unsupported audio controller enabling (internal and external) Arbitrary kext patching Custom platform/layout injection Works with SIP / El Capitan+ Currently compatible with 10.4-13 Credits Apple for macOS Onyx The Black Cat by fG! for the base of the kernel patcher capstone by Nguyen Anh Quynh for the disassembler module toleda, Mirone and certain others for audio patches and layouts Pike R. Alpha for lzvn decompression and certain HDMI patches 07151129 for some code parts and suggestions roddy20 for training and research dumps to a patching of codecs vit9696 for writing the software and maintaining it Andrey1970AppleLife, vandroiy2013 for maintaining the codec database
  22. Z690 Chipset Motherboards and Alder Lake CPU compatibility thread! All Olarila DSDT patches for serie 600 is done. Request your DSDT in link bellow. https://www.olarila.com/forum/84-dsdt-patch-requests/ EFI Folder AlderLake Download https://www.olarila.com/topic/5676-hackintosh-efi-folders-for-all-chipsets-clover-and-opencore/
  • Create New...

Hey! Welcome to Olarila.com  Please Disable Your ADBlocker!


Support Olarila Vanilla Hackintosh by making a donation HERE

The popup will be closed in 15 seconds...