The NTATV Project: Bringing Windows NT (Windows XP, Windows 2003, ReactOS) to the original Apple TV. Created by DistroHopper39B (YouTube: @DistrosProjects, Mastodon: @distrohopper39b) with help from several ReactOS devs (see Credits)
Want to run this on your Apple TV? Read the Guide!
Want to learn how I did this? Read the Write-Up!
Windows XP and 2003 are officially bootable on the original Apple TV! After 2 years of work, enough drivers are working to get both OSes to the desktop. However, due to HAL issues, ReactOS is not usable yet. You can get to the desktop, but there is no PCI or USB functionality.
| Operating System | Kernel | PCI | USB | Basic Video | Accelerated Video | Ethernet | WiFi | RCA Audio | Optical Audio | HDMI Audio | Remote | Reboot/Shutdown |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Windows XP | Working | Working | Working | Working | Broken | Working | Working | Partially Working** | Working | Broken | Broken | Broken |
| Windows Server 2003 | Working | Working | Working | Working | Broken | Working | Untested | Untested | Untested | Broken | Untested | Broken |
| ReactOS | Working | Broken | Broken* | Working | Broken* | Broken* | Broken* | Broken* | Broken* | Broken* | Broken* | Broken |
* Non-working PCI prevents all of these from working.
** Audio plays, but at an extremely low volume.
- The FreeLoader IDE driver is buggy on the Apple TV; it was designed for the original Xbox, and it seems to have issues on drives larger than 128GB, drives made before about 2004, or SSDs. I'd recommend replacing the drive with a different one for the time being.
- There seem to be various USB issues, although I don't know if that's related to a hardware fault on my TV or Windows. See Guide#Troubleshooting
- The boot screen is corrupted when the display is running at certain resolutions. This issue will be fixed soon.
Ever since I saw The 8-Bit Guy's video "Hacking the Apple TV 1st Generation" back in 2018 or 2019, I have been fascinated with the original Apple TV. I always wondered if it was possible for it to run Windows XP, but my efforts to actually get it working were kickstarted by this Michael MJD video. Pretty quickly afterwards, I got started on hacking my Apple TV, and after over 700 days of on-and-off work, Windows XP finally runs!
While the Apple TV uses a standard x86 CPU and even an IDE hard drive, its firmware is not compatible with standard Windows XP. Windows XP requires legacy BIOS firmware, while the Apple TV is EFI-only. Not only that, the Apple TV's EFI implementation is weird - it can only boot one EFI executable, that being the Apple-official boot.efi. However, hackers very quickly realized that the Apple TV does zero verification on the next stage up in the boot process, that being the Mac OS X kernel file. Within three weeks of the Apple TV shipping, Linux was booted through a custom loader that embeds a Linux kernel into a statically linked Mach-O executable, the same type used by the Linux kernel. Using this concept, we can boot, well, anything on the hardware!
However, Windows is much harder to get running on non-standard hardware than Linux. For one, it's proprietary - when the first Linux support for the Apple TV was developed in 2007, installing Linux used to require numerous kernel patches due to Linux's at-the-time minimal EFI support. Booting Windows is also much more complicated than booting Linux; while Linux bootloaders can comprise of just a few files totalling less than 5000 lines of code, booting Windows involves parsing the registry and loading dozens of drivers individually. Thankfully, I don't have to do that. By creating an Apple TV version of ReactOS' extremely portable bootloader, FreeLoader, I was able to get the kernels of ReactOS and Windows to start successfully.
Moving any further than that involved getting video drivers to work. Thanks to some alpha-stage UEFI video drivers for ReactOS, I was able to get to the desktop on that OS; Windows took quite a bit more effort, but I detail that in my write-up.
The source code for my custom FreeLoader port and graphics drivers is located here. I hope to have this upstreamed into ReactOS eventually.
- Justin Miller (The_DarkFire_) and Hermès Bélusca-Maïto for ReactOS UEFI video and bootloader support (and being immensely helpful with this project)
- Edgar (gimli) Hucek, James McKenzie of MythicBeasts, Scott Davilla, and Dmitri (loop333) for work on Apple TV Linux.
If I used code or ideas from you and you want credit please open an issue.
v0.1 - Initial release!
