Snapintosh / Snapintosh
git clone https://github.com/Snapintosh/Snapintosh.git
EL2 hypervisor and toolchain that boots macOS on the ASUS A16 (Snapdragon X2 Elite), with an Adreno Metal/IOGPU stack
+514
stars, 24h · #49
+616
stars, 7 days · #357
+616
stars, 30 days · #1,342
616
★ total · +616% this week
37
forks · 4 open issues
Star history (as recorded here)
LanguagePython
License—
Created2026-10-22 (1d ago)
Last pushtoday
Watchers6
OwnerOrganization
Links
README excerpt
# Snapintosh Snapintosh boots Apple's macOS 27 (build 26A428) on an ASUS Zenbook A16 laptop with a Qualcomm Snapdragon X2 Elite (X2E-96-100). It is an EL2 monitor (hypervisor) and the toolchain around it. The monitor runs Apple's stock kernelcache (the J700/T8140 kernel) unmodified by default. It supplies the platform contracts that the kernel expects from Apple silicon: the SPTM and TXM monitor calls, translation of the kernel's 16 KiB page tables, and the Apple devices the kernel looks for. Graphics run on the laptop's own Adreno X2-90 GPU through a driver stack written for this project: - **AdrenoMetal.bundle**: a Metal driver plug-in. - **AdrenoX2**: an IOGPU kernel extension, with **AdrenoDisplay** driving the internal panel. - **air2ir3**: a shader compiler that translates Apple's AIR (Metal's IR) into Mesa's ir3 for the Adreno. There is no software, CPU or paravirtual rendering path. The project also includes an I2C-HID keyboard and touchpad driver (SnapI2CHID), native QCC2072 Wi-Fi work, and NVMe storage through an emulated Apple storage controller. Snapintosh is used together with q1n1, a UEFI EL2 proxy forked from Asahi Linux's m1n1. q1n1 takes the machine at EL2 after UEFI and serves m1n1's proxy protocol over USB-C to a Mac host, which drives Snapintosh from there. ## Status This is experimental software, written for one laptop model. | Area | State | | --- | --- | | macOS desktop on the A16 | Boots to the desktop with GPU acceleration. Rendering is correct: the pixel checks across the desktop test scenes pass. | | Smoothness | In progress. Interaction is usable but not yet smooth. The target is a steady ~60 Hz first and the panel's 120 Hz later. | | Input | The built-in keyboard and touchpad work, including trackpad gestures, Mission Control and app switching. | | Wi-Fi (QCC2072) | Scanning, a WPA2 connection, DHCP and ping work through a host-proxy harness driven from the Mac. Joining from the macOS Wi-Fi menu does not work yet. | | Storage | macOS is installed on, and boots from, the internal NVMe. | | Other hardware | Audio, cameras, Bluetooth, sleep and external displays are not supported. | docs/STATUS.md has the details, the known issues and the roadmap. ## Required hardware - An **ASUS Zenbook A16 with the Snapdragon X2 Elite X2E-96-100** (UX3607OA). Nothing else is supported. The monitor, device tables, clocks and register addresses are specific to this machine. - A **Mac host** running macOS 27, connected to the A16 over USB-C. q1n1 brings up a USB NCM network link on that cable, and every boot, upload and log capture goes over it. - AC power is strongly recommended. The tools refuse to boot or write the SSD below a battery threshold. ## Architecture in brief [code] [code] docs/ARCHITECTURE.md explains each layer. ## Repository layout | Path | Contents | | --- | --- | | `compat/` | the EL2 monitor: SPTM/TXM contracts, CPU, interrupt, timer and device emulation, the GPU ring and SMMU mediation, the NVMe backend | |