Apple Watch 22

Nick Lee is a legend among the developer community. Back in 2010, he tricked Apple into believing his creation was just another flashlight application like a hundred others. When it fact, the app contained a hidden code that allowed users to use their iPhone as a 3G modem. Unfortunately, the app was pulled down from iTunes store soon as news of its true nature appeared on the internet. A great story with a sad ending, the kind of story that Nick might someday tell his kids. In fact, it is one of the many great stories he might tell his kids someday.

This time, developer Nick Lee has managed to install a fully functional version of Windows 95 on Apple Watch.

After developer Nick Lee realized that with 520 MHz processors, 512 MB of RAM and 8 GB of internal storage, the Apple Watch packed more computing power than many desktops running Windows 95 in the 90s. He felt confident that he could hack Apple WatchKit app to load an arbitrary code, dodging Apple’s security net. And, he managed to get Windows 95 running on the Apple Watch.

Install Windows 95 on Apple Watch

There’s one big catch here: Nick says it takes up to an hour to boot Windows 95 on Apple Watch.

The code is up on GitHub. Although you’ll need to source the files that show up in red, as they aren’t redistributable.

In his Medium post, Nick Lee explains how he managed to install Windows 95 on Apple Watch:

Copy symbols and headers from Xcode’s iphoneOS and iphoneSimulator platforms to the watchOS and watchSimulator platforms, respectively.

Build your “normal” UIKit-based iOS app inside a framework, rather than in your WatchKit extension.

Use install_name_tool to point your WatchKit app’s _WatchKitStub/WK binary to your framework instead of SockPuppetGizmo. SockPuppetGizmo is the framework that (to my knowledge) runs WatchKit and interacts with normal WatchKit extensions that developers write.

Jury-rig the iOS port of the Bochs x86 emulator into your framework. “Easy!” “How hard can it be?” read: Pretty hard. In my case, Xcode crashed whenever I tried to use lldb. Your mileage may vary.

Copy a Windows 95 disk image in to your app’s bundle, write the config file, and boot ‘er up.

*Optional: hot glue a motor to the watch’s crown to keep it from falling asleep.

Look and see for yourself: