Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Preliminary support for macOS Sonoma #1077

Merged
merged 89 commits into from
Oct 1, 2023
Merged

Preliminary support for macOS Sonoma #1077

merged 89 commits into from
Oct 1, 2023

Conversation

khronokernel
Copy link
Member

@khronokernel khronokernel commented Jun 11, 2023

This PR is primarily for tracking development of patch sets and changes implemented in code base. Please note that these builds are highly unstable and will require frequent re-installs throughout testing as new patches are developed.


Changes implemented

Switch to dynamic VMM spoof approach

  • Commit: 218507b
  • Utilizes new branch in RestrictEvents: force-vmm-install
  • Drops reliance of asset argument for RestrictEvents
  • Resolves bluetoothd support, which introduced a new VMM check:
bluetoothd: [com.apple.bluetooth:Server.Core] Bluetooth is running inside a Virtual Machine, so skipping chip initialization

Adjusted CaseyJ's original IOPCIFamily patch (IOPCIIsHotplugPort())

Add newly dropped Mac models

MacBook10,1:       MacBook (Retina, 12-inch, 2017)
MacBookPro14,1:    MacBook Pro (13-inch, 2017, Two Thunderbolt 3 ports)
MacBookPro14,2:    MacBook Pro (13-inch, 2017, Four Thunderbolt 3 Ports) 
MacBookPro14,3:    MacBook Pro (15-inch, 2017)
iMac18,1:          iMac (21.5-inch, 2017)
iMac18,2:          iMac (Retina 4K, 21.5-inch, 2017)
iMac18,3:          iMac (Retina 5K, 27-inch, 2017)

Add new OpenCanopy icons for Sonoma

Implement experimental IO80211FamilyLegacy patch set

  • Commit: c9fae32, a762d7e, etc
  • Targeted at restoring AirPortBrcmNIC support, as well as unit that are spoofed into support (ie. AirPortBrcm4360)
  • Patch set is highly unstable due to the methodology used, borrowed from our research on Legacy Wireless patches:
    • Relies on root patching, meaning recoveryOS and clean install Wireless is unsupported
      • For systems relying on KDKs, this is critical as units cannot fetch the latest KDK during patching
    • Additionally many Continuity features are unstable or unsupported
    • Hope to find a more reliable patch set, however currently this is mainly for internal development
  • Applicable Wireless models:
# https://github.com/dortania/OpenCore-Legacy-Patcher/blob/0.6.7/data/pci_data.py#L1100-L1111
    AirPortBrcmNIC = [
        0x43BA,  # BCM43602
        0x43A3,  # BCM4350
        0x43A0,  # BCM4360
    ]

    AirPortBrcm4360 = [
        0x4331,  # BCM94331
        0x4353,  # BCM943224
    ]

Implement basic 3802 and 31001 Metal Graphics Support

  • Relies on downgrading IOSurface due to ABI changes
    • ~~Resolves UI corruption with Wallpaper and Menubar ~~
    • Resolved with 36f69c4
  • Additionally for Intel iGPUs, requires IOAccelerator2Family.kext downgrade due to ABI changes
    • Resolves kernel panic on frame buffer initialization
    • Resolved with 36f69c4
  • With above patches, looks to be at feature parity with Ventura
    • However for iGPUs, KDK-less approach is not possible. More research needed into removing IOSurface/IOAccel downgrades.
    • KDK-less restored with 36f69c4

Implement experimental non-Metal Graphics Support

Sync OpenCore and Lilu-based Kexts to Release versions

  • Updated bins:
    • OpenCorePkg 0.9.3
    • Lilu 1.6.6
    • WhateverGreen 1.6.5
    • FeatureUnlock 1.1.4
    • DebugEnhancer 1.0.8
    • CPUFriend 1.2.7
    • BlueToolFixup (BrcmPatchRAM) 2.6.7
    • AutoPkgInstaller 1.0.3
    • CryptexFixup 1.0.2
  • Kexts lacking Sonoma Constants:
    • AppleALC: Cannot update due to regression with 1.6.4
    • NVMeFix: Cannot due to changes in NVMe stack on Sonoma
    • AirPortBrcmFixup: Can be once IO80211FamilyLegacy patches are finalized
  • Additional notes:
    • RestrictEvents is based off the force-vmm-install branch, need to create a PR and merge into mainline

Restore S1X/S3X NVMe Drive Support

  • Commit: c3e0765
  • Native support dropped in 14.0 Beta 2
  • Adds patched IONVMeFamily (IOS3XeFamily) that should be usable along side the stock IONVMeFamily
  • Models that shipped with S1X/S3X drives by default:
    • MacBook8,1, MacBook9,1, MacBook10,1
    • MacBookPro13,1, MacBookPro14,1
  • Drive Models include:
    • S1X PCI IDs: 106b:2001 (APPLE SSD AP0128H, AP0256H, etc)
    • S3X PCI IDs: 106b:2003 (APPLE SSD AP0128J, AP0256J, etc)

Restore PCIe-based Camera support

  • Commit: 7691184
  • Native support dropped in 14.0 Beta 3
  • Re-adds AppleCameraInterface.kext, AppleCamera.plugin and com.apple.cmio.AppleCameraAssistant.plist
    • Adjusted to sit in Data volume, avoid additional root volume patching
  • Models with PCIe-based Cameras
    • Haswell through Kaby Lake laptops
  • Associated PCI ID: 14E4:1570 (FaceTime HD Camera)

@khronokernel khronokernel marked this pull request as draft June 11, 2023 18:31
@khronokernel
Copy link
Member Author

khronokernel commented Sep 24, 2023

macOS Sonoma release planning

As development continues, we're mostly comfortable with releasing basic Sonoma support with OpenCore Legacy Patcher. There are still a fair number of challenges we need to resolve, however we feel for the majority of models we support the issues are mostly minor.

The main challenges we still face with macOS Sonoma:

  • T1 support (ie. Touch ID)
    • MacBookPro13,2, 13,3, 14,2 and 14,3
  • Widget support on Intel 3802-based GPUs
    • Intel Ivy Bridge and Haswell
    • Nvidia Kepler excluded

For release planning, we're aiming for October 2nd. Due to logistical challenges with receiving hardware for some of our developers, we don't want to rush a release to meet Sonoma. Instead we want to hold out and let them work at a less stressed pace. We originally planned for an aligned Sonoma release in October, however Apple has set release a month early compared to the past few releases.


Finally for versioning, we'll be switching to a proper major, minor and bug fix system (Semantic Versioning). This means the coming release will be version 1.0.0, and future releases plan to follow this scheme:

  • First digit: Major changes, including new OS support, API changes, and significant patch set changes, etc
  • Second digit: Minor changes, including incoming OS update fixes, minor patch set changes, etc
  • Third digit: Bug fixes, primarily hot fixes either due to a regression in prior release or resolving issues in already released OS updates

Otherwise we hope everyone is excited for the coming release. This is a community-driven project, and as such we ask users to keep expectations in check and be respectful to both our development team and the many community members that help keep this project going.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants