- Tegra X1+Four Cortex-A57 cores, a Maxwell GPU and 4 GB of RAM.
- hekateStarts the boot with switchroot’s ARM Trusted Firmware and U-Boot.
- The loaderPuts the kernel in memory with an Apple device tree written for the Switch.
- XNUApple’s kernel, built from source, with about forty drivers for the Switch.
- iPadOS 26 and 27Apple’s own system, with its arm64e code translated for the A57.
The hardware
The Switch OLED runs on NVIDIA’s Tegra X1+, a chip from 2019 with four ARM Cortex-A57 cores, a Maxwell GPU and 4 GB of RAM, driving a 7-inch 1280×720 OLED panel. iPadOS is told it’s running on a 9th-generation iPad, the oldest iPad that runs iPadOS 27.Booting
hekate starts the boot the way it starts Linux or Android, using the firmware switchroot made for Linux on the Switch (ARM Trusted Firmware and U-Boot). From there, this project’s own loader puts the kernel in memory along with an Apple device tree, the hardware description XNU expects to find, written for the Switch. Then it jumps into the kernel. The Apple logo appears in hekate and stays in exactly the same place, pixel for pixel, through the loader and the kernel until iPadOS takes over the screen.The kernel
The kernel is XNU, built from the source Apple publishes, with this project’s changes on top. iPadOS 26 and 27 both run on xnu-12377, iPadOS 26’s kernel, because Apple hasn’t published 27’s kernel source yet. About forty drivers handle the Switch’s hardware: the SD card, display, touchscreen, Joy-Con, Wi-Fi, Bluetooth, audio, battery and charging, USB, sensors, the GPU and the video engines. They’re IOKit drivers like Apple’s, and they’re linked into the kernel. Apple’s own kernel extensions come from the iPadOS download and are linked in next to them, so iPadOS sees the same kernel interfaces it would on an iPad. There’s no Secure Enclave on the Switch. A stand-in answers iPadOS’s key store, and the Tegra’s own security engine does the AES and SHA work. Every driver runs on hardware interrupts and moves data with DMA, which leaves the CPU free for apps.Running arm64e code on older cores
iPadOS 26 and 27 are built for arm64e, the instruction set of Apple’s A12 and newer. It uses pointer authentication and newer atomic instructions, and the Cortex-A57 has neither. This project translates that code into instructions the A57 has:- Apple’s kernel extensions are rewritten once, when the kernel is built.
- The shared library cache that every app loads is planned once per iPadOS release, on the Mac, and each page is rewritten as the kernel reads it in.
- Every other program is translated as it loads.