- What is this?
- Does this require a jailbreak?
- How do I sideload an app?
- How does UTM work?
- What are the limitations?
- How can I contribute?
- Where do I get support?
What is this?
UTM is an app for running other operating systems on your iPhone or iPad. It is not for running iOS on other systems. This allows you, among other things, to run Windows or Linux on your iOS device at a usable speed.
Does this require a jailbreak?
UTM is supported on iOS 11, 12, and 13 for non-jailbroken devices through sideloading. UTM requires a jailbreak to use on iOS 14.
How do I sideload an app?
Sideloading allows you to load unofficial apps on your iOS device. If you have a free Apple account, you must re-sign the app every 7 days. If you have a paid ($99/year) Apple developer account, you must re-sign the app every year. For more information checkout the install page.
How does UTM work?
The majority of the work is done by qemu. Because iOS devices lack hardware virtualization support, we cannot use the KVM accelerator and instead use the TCG accelerator which does dynamic code translation and JIT compilation. UTM also includes a SPICE client written for Metal. This connects with the SPICE server in qemu and allows for some para-virtualization as the QXL graphics driver running on the guest OS can send low-level draw commands directly to Metal APIs.
For more in-depth information on the changes made to qemu for JIT to work on iOS, check out this document.
What are the limitations?
The lack of hardware virtualization on Apple A-chips means that even for ARM code we must re-compile it with JIT. Therefore performance would never reach the levels possible with KVM. There is also no support for GPU virtualization so that means no DirectX or OpenGL. This makes most modern games non-playable.
How can I contribute?
We need all the help we can get! We need both people to work on improving/optimizing the qemu backend as well as people working on the UI and front-end. You can check out our Github and join our Discord.
Where do I get support?
Check out https://docs.getutm.app