Bryan Keller wanted to see a Mac desktop on a Nintendo Wii. Not a screenshot. Not a mockup. The real thing — Apple’s Mac OS X, compiled and booting on a $250 game console from 2006 that was never designed to run anything but Wii Sports and Mario Kart.
He pulled it off.
In a detailed technical write-up published on his personal site, Keller documents what might be one of the most audacious hobbyist porting projects in recent memory: getting Apple’s Darwin kernel — the open-source foundation of Mac OS X — to boot on the Wii’s Broadway processor, a PowerPC 750-class chip manufactured by IBM. The project didn’t happen overnight. It required years of painstaking reverse engineering, kernel modification, custom bootloader development, and the kind of obsessive persistence that separates weekend tinkerers from people who actually ship impossible things.
The Wii, for those who’ve forgotten, was Nintendo’s wildly successful follow-up to the GameCube. It sold over 100 million units worldwide. Under its white plastic shell sat a relatively modest piece of hardware: a 729 MHz IBM Broadway CPU based on the PowerPC 750CL architecture, 88 MB of total memory (24 MB of fast MEM1 and 64 MB of slower MEM2), and an ATI-derived Hollywood GPU. By 2006 standards, it was already underpowered compared to the Xbox 360 and PlayStation 3. By modern standards, it’s a relic.
But Keller saw something others didn’t. The Broadway chip is a direct descendant of the PowerPC 750 family — the same lineage that powered early iMacs and PowerBooks. Apple shipped Mac OS X on PowerPC hardware for years before the Intel transition in 2006. Darwin, the kernel at the heart of OS X, was open-sourced by Apple and had solid PowerPC support. The theoretical compatibility was there. The practical reality was a different story entirely.
The first challenge was getting code to execute at all. The Wii’s boot process is locked down by Nintendo’s security architecture, but the homebrew community had long since cracked that open. Keller built on years of work by the Wii homebrew scene, using established exploit chains to gain code execution. That gave him a starting point — but only barely. Running a custom game or emulator is one thing. Booting an entire desktop operating system kernel is something else.
Keller had to write a custom bootloader that could initialize the Wii’s hardware into a state that Darwin expected. This meant configuring memory maps, setting up the MMU (memory management unit), initializing interrupt controllers, and presenting the hardware in a way that wouldn’t immediately cause a kernel panic. The Wii’s memory architecture is unusual — that split between MEM1 and MEM2, with different latency characteristics and address ranges — and Darwin’s virtual memory subsystem needed significant modification to cope with it.
Then came the driver problem. Darwin’s existing PowerPC code assumed it was running on Apple hardware with an Open Firmware boot environment and well-documented device trees. The Wii has none of that. Its GPU is a custom ATI design (codenamed Hollywood) with no public documentation and no existing Darwin drivers. The USB controller, the Bluetooth module for Wiimotes, the disc drive, the SD card slot — all of these required either custom drivers or careful adaptation of existing ones.
Keller’s approach was methodical. Get the kernel booting to a console. Then get basic memory management working. Then framebuffer output. Then input. Each step required weeks or months of debugging, often with minimal diagnostic tools. When your target hardware has no serial port and no standard debug interface, you’re sometimes reduced to blinking an LED in patterns to figure out where your code crashed.
And crash it did. Repeatedly.
One of the more fascinating technical details in Keller’s write-up involves the Wii’s IOS — not Apple’s iOS, but Nintendo’s internal operating system that runs on a separate ARM processor embedded in the Hollywood chip. This ARM co-processor handles all I/O on the Wii: disc access, USB, networking, Bluetooth. The PowerPC side — where Darwin runs — has to communicate with IOS through an inter-processor communication (IPC) protocol to access any of these peripherals. Keller had to reverse-engineer this IPC mechanism and write Darwin-side drivers that could speak Nintendo’s proprietary protocol to get even basic hardware access.
The result, after years of work, is a system that actually boots Mac OS X’s Darwin kernel on a retail Nintendo Wii. It initializes the processor, sets up virtual memory, mounts a root filesystem from an SD card, and presents a basic userland environment. It’s not running Aqua — Apple’s full graphical interface with its translucent window chrome and dock — but the underlying Unix system is functional. Shell access. Command-line tools. The bones of Mac OS X, running on a game console.
This isn’t the first time someone has run an unexpected operating system on the Wii. Linux has been available for the console since the late 2000s, thanks to projects like Wii-Linux that adapted existing PowerPC Linux distributions. But Darwin is a fundamentally different beast. Its kernel (XNU) is a hybrid microkernel/monolithic design with Mach at its core, and it has far less community support for non-Apple hardware than Linux does. The number of people in the world who understand XNU’s PowerPC internals well enough to port it to alien hardware can probably fit in a small conference room.
Keller is clearly one of them.
The project raises an obvious question: why? There’s no practical reason to run Mac OS X on a Wii. The hardware is too limited for any real productivity use. The answer, of course, is that practicality isn’t the point. Projects like this exist at the intersection of deep technical knowledge and pure curiosity. They push the boundaries of what’s understood about both the target hardware and the ported software. Keller’s work contributes genuine knowledge about XNU’s portability, the Wii’s hardware architecture, and the practical challenges of bare-metal OS development on constrained platforms.
The homebrew and retro computing communities have a long tradition of this kind of work. People have ported Linux to the iPod, run Windows on a calculator, and gotten Doom to execute on everything from a pregnancy test to a tractor’s dashboard display. But those projects often involve minimal kernels or clever tricks. Getting Darwin — a full, production operating system kernel — running on hardware Apple never intended it for requires a qualitatively different level of effort.
Keller’s write-up is notable for its technical depth. He doesn’t gloss over the hard parts. He discusses specific memory map conflicts, details about how he patched XNU’s platform expert layer to recognize the Wii’s hardware, and the debugging strategies he used when things went wrong. For kernel developers and systems programmers, it’s a masterclass in low-level porting work. For everyone else, it’s a reminder that the line between “impossible” and “done” is often just one sufficiently stubborn engineer.
The project also serves as an inadvertent tribute to Apple’s decision to open-source Darwin in the early 2000s. While Apple has at times been inconsistent about maintaining the open-source releases — and the code hasn’t always been easy to build outside of Apple’s own infrastructure — the fact that it’s available at all made Keller’s project possible. Without access to XNU’s source code, porting Mac OS X to non-Apple hardware would require full reverse engineering of the kernel itself, an exponentially harder task.
So what’s next? Keller hints at continued work on driver support, particularly for the Wii’s framebuffer and input devices. Getting a basic graphical environment running — even something as simple as an X11 session — would be a significant milestone. Full Aqua support is almost certainly out of reach given the Wii’s 88 MB of RAM and limited GPU capabilities, but a lightweight window manager might be feasible.
Whether or not that happens, the project already stands as a remarkable piece of engineering. A decade-old game console, a kernel Apple abandoned when it moved to Intel, and one developer with enough skill and stubbornness to make them work together. The Wii was designed to play games. Now it runs Mac OS X. Not well. Not fast. But it runs.
Sometimes that’s enough.


WebProNews is an iEntry Publication