macOS on the Microsoft Surface Laptop 3 thanks to Acidanthera's OpenCore bootloader.
Software | Version |
---|---|
Target OS | Apple macOS 15 Sequoia, 14 Sonoma and 13 Ventura |
OpenCore | MOD-OC v1.0.3 |
SMBIOS | MacBookPro16,2 |
SSD format | APFS file system, GPT partition table |
With its nice display, large and smooth trackpad, comfortable keyboard and its quite decent speakers, the Surface Laptop 3
series is an excellent Hackintosh laptop. Moreover, the M.2 2230 SSD can be swapped easily for a larger one.
Apart from ACPI S3 Sleep which is broken, everything on the Intel 13.5-Inch and 15-Inch Surface Laptop 3
is working perfectly like on a real Mac. ACPI S4 Hibernate works great, though, and resuming from Hibernation takes around ten to fifteen seconds. The advantage Hibernate has over Sleep is that the device doesn't draw any power while in a hibernated state.
The battery runtime is around five hours.
Tip
I recommend installing macOS 13 Ventura
rather than the newer macOS 14 Sonoma
or macOS 15 Sequoia
. The builtin Intel Wireless chip works almost perfectly with Apple's iServices and Continuity features on Ventura while those features are partially broken at the moment on newer versions of macOS.
Important
For macOS to be able to boot on the Surface Laptop 3, the Secure Boot
option must be disabled in the UEFI. The boot screen will then display a large red bar with a padlock symbol at the top of the display when Secure Boot is disabled.
Important
The keyboard and trackpad are now working in the installer as well as in the installed OS, but the trackpad will be lagging/skipping every few seconds. Furthermore, the keyboard and trackpad will be unresponsive after resuming from hibernation. To fix those issues, you MUST downgrade the firmware of your Surface Laptop 3
. To do so, follow these instructions.
Then, you MUST also replace BigSurface.kext
and its dependencies with BigSurfaceSLB3.kext
and its dependencies in your config.plist
file by following these instructions.
Caution
At the moment, it is not possible to have Windows installed at the same time as macOS, as the SL3 will immediately update to the latest firmware again when you reboot into Windows, even if you turn off your WiFi or disable automatic Windows Updates. I haven't found a way to prevent this behaviour yet. Any kind of Linux distribution is fine, though.
This repository is neither a howto nor an installation manual. Using these files requires at least basic knowledge of Acidanthera's OpenCore bootloader, ACPI, UEFI and the art of hackintoshing in general. I recommend reading the excellent Dortania's OpenCore Install Guide, as well as all its linked resources. For those who wish to improve their hackintoshing knowledge, 5T33Z0's OC-Little-Translated repository is the most comprehensive resource I've found on the subject.
I recommend completely erasing the device's SSD by creating a new GPT partition table before attempting to install macOS, as it makes the installation process much easier. You may use any Linux live ISO with a partitioning tool such as GParted
or KPartition
to erase the SSD.
Please be aware that all PlatformInfo
and SMBIOS
information was removed from the OpenCore config.plist
file. Users will therefore need to generate their own PlatformInfo
with CorpNewt's GenSMBIOS tool before attempting to boot a Surface Laptop 3 with this repository's EFI folder.
BigSurfaceSLB3.kext
is required to enable the trackpad, the keyboard, the touchscreen, the battery status, the power and volume buttons and the ambient light sensor. Updating this kext
with the official one from Xiashangning's BigSurface repo will most certainly break something! BigSurfaceSLB3.kext
is a modified version of BigSurface
v6.5 which fixes the skipping/lagging trackpad and hibernate mode 25.
An UEFI firmware released by Micro$oft in August 2023 broke the Surface Laptop 3's trackpad in macOS in several ways. Downgrading the UEFI firmware to the last known working version 13.101.140.0
is required to fix the trackpad and hibernate mode 25 on macOS. See the detailed instructions below to easily downgrade the UEFI firmware. This needs to be done before installing any version of macOS or you won't have a working trackpad and/or keyboard during installation.
AirportItlwm-Ventura.kext
, AirportItlwm-Sonoma140.kext
and AirportItlwm-Sonoma144.kext
from the OpenIntelWireless repo are required to enable the Wifi chip. This EFI will dynamically load the appropriate kext for macOS Ventura or Sonoma depending on the running kernel. No need to manually replace the kext file when updating your version of macOS. As the Intel Wifi chip does not yet work with the AirportItlwm.kext
in macOS Sequoia, you'll need to use the Itlwm.kext
and its companion app HeliPort to connect to a Wifi network. You'll find the latest stable HeliPort.dmg
in the Tools folder of this repo. This EFI will dynamically load the Itlwm.kext
instead of AirportItlwm.kext
when you boot into macOS Sequoia.
This repository uses the unofficial OpenCore_NO_ACPI_Build fork of OpenCore by btwise, wich is not endorsed by Acidanthera (the dev team behind OpenCore). The main (and only) difference between this fork and the official OpenCore version is that it allows to prevent ACPI injection (e.g. patches, tables, boot parameters) into other OSes besides macOS.
Windows and Linux should be detected automagically by the OpenCore boot loader even when installed after macOS.
Computer Specifications
Device | Hardware |
---|---|
CPU | Intel Core i7-1065G7 or Intel Core i5-1035G7 |
iGPU | Intel Iris Plus Graphics |
Audio | Realtek ALC274 |
RAM | 8 or 16 GB RAM |
Wifi + Bluetooth | Wifi6 AX200, Bluetooth 5.0 |
Storage | Kioxia/Toshiba/SK Hynix PCIe NVMe 2230 SSD |
USB Type-C 3.1 Gen 1 | Supports Power Delivery and DisplayPort |
Camera | 720p |
IR camera | Intel(R) AVStream Camera 2500, ISP Interface |
Keyboard / Trackpad | |
Display | 13.50 inch 3:2, 2256 x 1504 pixel or 15 inch 3:2, 2496 x 1664 pixel 201 PPI |
Touchscreen | 10-point capacitive |
Battery | |
Ambient light sensor |
What works
- CPU power management
- CPU SpeedStep
- iGPU with full acceleration
- SSD drive
- USB-C port
- USB-A port
- WLAN
- Bluetooth
- 720p camera
- Internal speakers, microphone and Combojack
- Power, volume up and volume down buttons
- Keyboard with working brightness, volume and mute keys, working caps lock light
- Trackpad with native multi-touch gestures
- Touchscreen
- Surface Pen
- Ambient light sensor
- Battery percentage and cycle count
- Hibernation (hibernatemode 25) - the device successfully wakes up from hibernation mode
- USB Type-C to HDMI
- USB Type-C to USB3 & USB2
- USB Type-C Power Delivery
What needs some more work
- Sleep (hibernatemode 3) - the device only turns off the display without sleeping
- On macOS Sequoia, the user needs to close and open the lid again to wake up the display after hibernation
UEFI Settings
To enter the UEFI Settings, power on your Surface Laptop 3 and hold the Volume Up Button
as soon as the Surface Logo is displayed on the screen.
The Secure Boot
setting must be disabled to boot macOS. I also recommend moving USB Storage
to the top of the boot configuration list, which makes booting from an USB stick much easier.
Security | |
---|---|
Secure Boot | Disabled |
Boot configuration | |
---|---|
USB Storage | Move the item to the top of the list |
Downgrading the UEFI firmware
In order to fix the skipping/lagging trackpad in macOS and make the trackpad and keyboard work after hibernation, you must downgrade your UEFI firmware to the last known working version 13.101.140.0
.
- Boot with a Linux Live USB stick, preferably a Debian, Arch or Fedora based distribution (I use the Arch-based Manjaro).
- Download and unzip the compressed firmware archive SurfaceLaptop3_FW_13.101.140.0.zip from this repository.
- Add the line
OnlyTrusted=false
to the/etc/fwupd/daemon.conf
config file. On some Linux distros such as Arch, endeavourOS and Manjaro, the config file to change is/etc/fwupd/fwupd.conf
:
sudo nano /etc/fwupd/daemon.conf
or
sudo nano /etc/fwupd/fwupd.conf
- Open a terminal and navigate to the folder where you extracted the firmware files.
- Connect your Surface device to a power supply.
- Copy the following lines and paste them into the terminal:
for f in *; do
sudo fwupdmgr install --allow-older --allow-reinstall --no-reboot-check "$f"
done
- Close the terminal and reboot the computer.
For some firmware files, the fwupdmgr
tool may complain that it is unable to find a matching device. This is normal, as not all Surface Laptop 3 models use the exact same hardware, thus the compressed firmware archive contains all the required files for all models.
The Surface Laptop 3 will reboot and downgrade all UEFI firmwares at once, which takes around 10 minutes. You'll see progress bars with different colours depending on which type of firmware is being flashed. Once the process is done, your laptop will restart a few times and seem to hang on the Surface logo for 20 or 30 seconds each time, this is normal. Then it will restart for good to your OpenCore picker.
Now restart while holding the F4/Volume Up key to check the firmware version in the UEFI. In the Firmware section, System UEFI
should now show 13.101.140
.
Reboot and you're done.
If you are using Windows on the laptop, you'll have to find a way to prevent Windows Update from automatically updating the firmware to the latest firmware version again on the next reboot into Windows! I haven't found a way to prevent this yet. Any kind of Linux distribution is fine, though.
Replacing BigSurface.kext with BigSurfaceSLB3.kext
Additionally, to fix the skipping/lagging trackpad in macOS and make the trackpad and keyboard work after hibernation, you also have to replace the official BigSurface.kext
with the BigSurfaceSLB3.kext
.
In the Kernel
-> Add
section of your config.plist
file, disable or delete the following kexts:
BigSurface.kext/Contents/PlugIns/VoodooGPIO.kext
BigSurface.kext/Contents/PlugIns/VoodooSerial.kext
BigSurface.kext/Contents/PlugIns/VoodooInput.kext
BigSurface.kext
BigSurface.kext/Contents/PlugIns/BigSurfaceHIDDriver.kext
Then enable the following kexts:
BigSurfaceSLB3.kext/Contents/PlugIns/VoodooGPIO.kext
BigSurfaceSLB3.kext/Contents/PlugIns/VoodooSerial.kext
BigSurfaceSLB3.kext/Contents/PlugIns/VoodooInput.kext
BigSurfaceSLB3.kext
BigSurfaceSLB3.kext/Contents/PlugIns/BigSurfaceHIDDriver.kext
Save your config.plist
file and reboot. Your trackpad should now be buttery smooth before and after resuming from hibernation. The keyboard will now also work after resuming from hibernation.
Disabling Sleep and enabling Hibernate
As we still haven't found a solution for the Sleep/Wake issues on the Surface Laptop 3, disable Sleep altogether and use Hibernate for now. Open the Terminal
and enter the following commands, then reboot for the changes to take effect:
sudo pmset restoredefaults
sudo pmset -a hibernatemode 25
If for whatever reason Hibernate is not working on your system, you should reset the Power Management
settings and rebuild the sleepimage
file. To do so, open the Terminal
and enter the following commands, then reboot for the changes to take effect:
sudo rm /Library/Preferences/com.apple.PowerManagement*
sudo rm /var/vm/sleepimage
sudo pmset hibernatefile /var/vm/sleepimage
Once you are back in macOS, disable Sleep and enable Hibernate again, then reboot:
sudo pmset restoredefaults
sudo pmset -a hibernatemode 25
Fix broken Bluetooth on Wake from Hibernation
After the device wakes up from Hibernation, Bluetooth may be broken / unable to connect.
A very simple fix for this issue is to download and install Bluesnooze. Launch the app, enable Launch at login
and you're done!
Enabling native HiDPI display settings in macOS
On the installed macOS system, the default display resolution is less than ideal. To enable native HiDPI settings in the Display Preferences of macOS, download and run the one-key-hidpi script and select the option (7) Manual input resolution
, then copy and paste the resolutions below into the terminal, press Enter and reboot for the changes to take effect. This will give you five sane preset resolutions for your Surface Laptop 3.
For the 13.5-Inch Surface Laptop 3:
2254x1504 1920x1280 1600x1066 1344x896 1280x854 1128x752
For the 15-Inch Surface Laptop 3:
2496x1664 2250x1500 2048x1366 1920x1280 1600x1066 1344x896 1280x854 1248x832
You may also download and install BetterDisplay to change and manage the display resolutions on the Surface Laptop 3.
Installing the IPTSDaemon to enable the touchscreen
The IPTSDaemon is a tool made by the author of BigSurface Xiashangning. It enables the touchscreen on Surface devices running macOS.
- Download the IPTSDaemon
- Unzip the downloaded file
- Open a
Terminal
and navigate to theIPTSDaemon
folder:
cd /Downloads/IPTSDaemon/IPTSDaemon
- Run the
install_daemon.sh
file:
sudo bash install_daemon.sh
- Enter your password to install the daemon
Now you'll see a nasty popup window:
This is actually macOS's way of telling you that Apple considers that the software is from an untrusted source because it is unsigned. But it's actually very easy to tell it to open the file anyway.
Click on the "Show in Finder" button of this popup window, then right-click on the libinih.0.dylib
file and select the first option, "Open". Nothing will happen, but the annoying popup window will not show anymore for this file. Now repeat the same procedure for the libfmt.9.dylib
file and you're done.
Perhaps you'll need to repeat this a few times, as the popup window appearing for one file will block the "Open" popup window for the other file and vice versa. Basically, once there's no warning popup appearing anymore, both files were registered and started.
You may now verify that the multitouch gestures are working on your touchscreen by playing around with the standard macOS multitouch gestures you're used to on your trackpad, but the same gestures now work on the touchscreen as well :-)
These instructions are confirmed working on SL3 and SB3 running macOS Ventura and Sonoma. On macOS Sequoia, the procedure is pretty much similar, but there won't be a "Show in Finder" button in the popup window. To open the dylib files, you'll have to go to the System Settings
-> Privacy and Security
-> Security
section and open the files from there.
Fixing broken Apple Messages and FaceTime
To fix issues with Apple Messages and FaceTime related to the Intel Wireless driver on macOS Sonoma, disable all AirportItlwm-***.kext
entries under Kernel -> Add
in your config.plist
file and use the itlwm_v2.3.0_stable.kext.zip and its companion app HeliPort instead.
The latest version 2.3.0 of itlwm.kext is already included in the Kext folder and config.plist
file.