Xbox 360 support kernel extensions for Mac OS X as part of OSX360. This is an early attempt at running Mac OS X on the Xbox 360. There will be functions that do not work, and the system may lock up unexpectedly.
The Xbox 360 is a PowerPC-based "Xenon" console released in 2005. The Xenon processor is unique to the console, being a three core Cell-based design without AltiVec and instead having VMX128. VMX128 is not completely compatible with AltiVec, and Cell is different in behavior from the G5 used in various Mac models. Currently the processor is spoofed to appear as a G3 to prevent AltiVec usage, and any software requiring AltiVec or a G5 will not run at this time. Some 32-bit software that runs unmodified on a G5 may not function on this platform.
Xenon does not support some of the hardware features present in the G5, i.e. the register that controls dcbz behavior. While most of XNU will use the proper dcbz128 instruction, some portions do not and some userspace libraries such as CoreGraphics do not. The platform expert as part of this driver project will attempt to patch those to be invalid and trigger XNU's built-in instruction emulator. See this page for more background.
AltiVec is not supported on Xenon in favor of VMX128 which drops some AltiVec instructions. In theory these could be trapped/emulated to enable AltiVec software to run, but this has yet to be explored.
Configure the USB for BadUpdate / ABadAvatar if needed. Place openbios-xbox360.elf and Xbox360.mkext from this repo's releases onto the root of the drive. Configure kboot.conf for XeLL as desired, an example configuration can be found here.
Start XeLL and launch OpenBIOS. OpenBIOS should drop into the shell.
boot cd:,\\:tbxi.boot hd:,\\:tbxi.boot ud:X,\\:tbxi where X is the installer partition.setenv boot-args -v prior to booting Mac OS X.setenv boot-args -s prior to booting Mac OS X.Mac OS X may require modifications to IOAudioFamily and IONetworkingFamily for audio and ethernet to work. You'll need to edit both to ensure they are loaded at bootup.
sudo vi /System/Library/Extensions/IOAudioFamily.kext/Contents/Info.plist
sudo vi /System/Library/Extensions/IONetworkingFamily.kext/Contents/Info.plist
For both files, type i to enter insert mode and append the following after the last key, but before the closing plist:
<key>OSBundleRequired</key>
<string>Root</string>
Save and quit with :wq.
After both edits are made, run sudo touch /System/Library/Extensions to force a kext cache rebuild and reboot. The next bootup may take several minutes as the system will boot without a kext cache. Once booted, audio and networking should be fully functional.
| Version | Supported |
|---|---|
| 10.0 Cheetah | No, released prior to 64-bit support |
| 10.1 Puma | No, released prior to 64-bit support |
| 10.2 Jaguar | Partial, only boots to single user mode. The G5 version of 10.2.7 must be used. |
| 10.3 Panther | Partial, only boots to single user mode. |
| 10.4 Tiger | Mostly functional, freezes may occur either during boot or sometime after. |
| 10.5 Leopard | No, requires AltiVec |
| 10.6 Snow Leopard (beta/unofficial PowerPC builds) | No, requires AltiVec |
| Hardware | Supported |
|---|---|
| Interrupt controller | Yes |
| PCI root bridge | Yes |
| USB 1.1 (OHCI) controllers | Yes |
| USB 2.0 (EHCI) controllers | Yes |
| WiFi via USB | No |
| Audio interface (rear A/V) | Yes, not all media may work |
| Xenos graphics interface | Basic framebuffer only, no resolution changes |
| System management controller (SMC) | Yes, shutdown/restart, CD drive, RTC read |
| Ethernet controller | Partially, receiving packets may stop working |
| SATA DVD-ROM | Yes, some drives require a tray cycle |
| SATA Hard Drive | Yes, some drives may not function |
40 commits
Hacker News (1)
C++
55.0%
C
42.4%
Makefile
1.4%
Xbox 360 support kernel extensions for Mac OS X as part of OSX360. This is an early attempt at running Mac OS X on the Xbox 360. There will be functions that do not work, and the system may lock up unexpectedly.
The Xbox 360 is a PowerPC-based "Xenon" console released in 2005. The Xenon processor is unique to the console, being a three core Cell-based design without AltiVec and instead having VMX128. VMX128 is not completely compatible with AltiVec, and Cell is different in behavior from the G5 used in various Mac models. Currently the processor is spoofed to appear as a G3 to prevent AltiVec usage, and any software requiring AltiVec or a G5 will not run at this time. Some 32-bit software that runs unmodified on a G5 may not function on this platform.
Xenon does not support some of the hardware features present in the G5, i.e. the register that controls dcbz behavior. While most of XNU will use the proper dcbz128 instruction, some portions do not and some userspace libraries such as CoreGraphics do not. The platform expert as part of this driver project will attempt to patch those to be invalid and trigger XNU's built-in instruction emulator. See this page for more background.
AltiVec is not supported on Xenon in favor of VMX128 which drops some AltiVec instructions. In theory these could be trapped/emulated to enable AltiVec software to run, but this has yet to be explored.
Configure the USB for BadUpdate / ABadAvatar if needed. Place openbios-xbox360.elf and Xbox360.mkext from this repo's releases onto the root of the drive. Configure kboot.conf for XeLL as desired, an example configuration can be found here.
Start XeLL and launch OpenBIOS. OpenBIOS should drop into the shell.
boot cd:,\\:tbxi.boot hd:,\\:tbxi.boot ud:X,\\:tbxi where X is the installer partition.setenv boot-args -v prior to booting Mac OS X.setenv boot-args -s prior to booting Mac OS X.Mac OS X may require modifications to IOAudioFamily and IONetworkingFamily for audio and ethernet to work. You'll need to edit both to ensure they are loaded at bootup.
sudo vi /System/Library/Extensions/IOAudioFamily.kext/Contents/Info.plist
sudo vi /System/Library/Extensions/IONetworkingFamily.kext/Contents/Info.plist
For both files, type i to enter insert mode and append the following after the last key, but before the closing plist:
<key>OSBundleRequired</key>
<string>Root</string>
Save and quit with :wq.
After both edits are made, run sudo touch /System/Library/Extensions to force a kext cache rebuild and reboot. The next bootup may take several minutes as the system will boot without a kext cache. Once booted, audio and networking should be fully functional.
| Version | Supported |
|---|---|
| 10.0 Cheetah | No, released prior to 64-bit support |
| 10.1 Puma | No, released prior to 64-bit support |
| 10.2 Jaguar | Partial, only boots to single user mode. The G5 version of 10.2.7 must be used. |
| 10.3 Panther | Partial, only boots to single user mode. |
| 10.4 Tiger | Mostly functional, freezes may occur either during boot or sometime after. |
| 10.5 Leopard | No, requires AltiVec |
| 10.6 Snow Leopard (beta/unofficial PowerPC builds) | No, requires AltiVec |
| Hardware | Supported |
|---|---|
| Interrupt controller | Yes |
| PCI root bridge | Yes |
| USB 1.1 (OHCI) controllers | Yes |
| USB 2.0 (EHCI) controllers | Yes |
| WiFi via USB | No |
| Audio interface (rear A/V) | Yes, not all media may work |
| Xenos graphics interface | Basic framebuffer only, no resolution changes |
| System management controller (SMC) | Yes, shutdown/restart, CD drive, RTC read |
| Ethernet controller | Partially, receiving packets may stop working |
| SATA DVD-ROM | Yes, some drives require a tray cycle |
| SATA Hard Drive | Yes, some drives may not function |
Hacker News (1)
40 commits
C++
55.0%
C
42.4%
Makefile
1.4%