Preferences


Hi, author here. I’m here to answer any questions but also I want to advertise the fact that it would be really really awesome if interested devs can join the project. Currently it’s just me doing this on my spare time for the past year. Specifically I’m a complete newbie at UI/UX stuff and the project could use a real designer/front end developer.

Also for more info and a few videos demonstrating capabilities and performance check out the website: https://getutm.app/

lazerl0rd
Thanks for the amazing work, I thought about this a while back when I saw WINE Hangover for Android but this is even better (in some ways, at least). Sadly, the iPadOS/iOS 13.3.1 issue is a headache and the certain jailbreak tools which usually get around IPA signing aren't working either.

Whilst most people are saying it's a bug on Apple's side I'm worried it's more than that. The removal of signed iPadOS/iOS 13.3 from their servers, along with the returned ability of flashing static lib'ed packages after all being blocked for a while seems more "on purpose" from Apple rather than "by accident". We gotta just wait and see, I guess.

I think the jailbreak IPA signing isn’t working because it needs the `get-task-allow` entitlement which idk if every tool is aware of. This entitlement is only given out in development profiles and not any distribution profiles so I can’t upload to TestFlight either. If Apple locks down what you can do with `get-task-allow` in the future then a jailbreak would be required to run this.
asveikau
Curious what you use that for. My previous exposure for "get task" on Darwin/XNU is it's useful for reading or writing the memory of another process and suspending or resuming its threads, as in writing a debugger.
saagarjha
The app pretends to debug itself, which tricks the kernel into allowing it to flip the permissions of pages between write and execute. To do this it needs the get_task_allow entitlement.
lazerl0rd
Would you by any chance consider TestFlight to distribute UTM? iSH (a usermode Linux "terminal" emulator) has been for quite some time, and I can't see why you shouldn't be able to.
> This entitlement is only given out in development profiles and not any distribution profiles so I can’t upload to TestFlight either.
jsjohnst
iSH works differently. It’s not running “Linux” and it isn’t virtualizing hardware either. Anything you run has to be compiled already and the syscalls are emulated, there is no Linux kernel in iSH.
VvR-Ox
Thank you very much for sharing this with us. I am about to test it. I have already installed it successfully and it opens without crashing (iPad Air 2, iOS 13.3, unc0ver jailbreak) - so far so good ;-)

I will report back when I tried to install Win XP/7 (I desperately want to play Age of Empires 1 while on vacation since I saw this awesome app :D).

VvR-Ox
So here is my journey with UTM:

1. Install UTM

- harder than I thought now because of Apple enforcing very strict app signing rules etc. (why can't they just let us run our own code without paying or hacking? Ò.ó)

- jailbreak with checkra1n -> install AppCake -> trust certificates with help of "Apple Configurator" (device management was not in the iOS general settings until I accessed profile settings with the configurator) -> sign UTM with AppCake (Filza -> Open IPA with AppCake)

2. Setup VM with Windows XP

- copied ISO (WinXP SP3) to iPad with VLC "Sharing via WiFi" (awesome tool!)

- created a VM with a 5GB hdd and a CD/DVD with path set to the ISO

- could boot from the ISO and start installation but it crashed after the reboot. I tried again and again by opening UTM again, opening the VM settings (not doing so would instantly crash UTM when I tried to start the VM again)

- finally I realized assigning 1GB of RAM to the VM (iPad Air 2 has only 2GB total) was too much and I changed it to 512MB (default setting) which let me finish the installation of Win XP! :-D

No I will try to install Age of Empires 1 and when I get hands on adapter + keyboard + mouse I will try those with UTM as well.

VvR-Ox
Installing AoE worked but I am afraid I could not start it :-/

It demands graphics with directdraw and will not start.

How did you get Halflife running?

jsjohnst
First of all, huge TY! I used iBochs on a first gen iPad and successfully ran Linux, Windows 95, and DOS on it. I’ve tried a few times to modernize that code for current iOS releases, but was unsuccessful. I did spend a bunch of time back in the day building a nice UI for iBochs so would be game to help do that for UTM. My contact info is in my profile if you are still looking for folks!
Thanks! If you’re interested please fork the project on github and make a PR when you’re ready. I want this project eventually to be community run so I’m not going to be “in charge” of anything.
nottorp
Question then: why are you investing time in something that Apple will never allow in the app store? Isn't it better to spend your effort on a more open platform?

Note: i use an iPhone and iPads. I do my hacking/customizing elsewhere.

Because it’s fun to do and it’s cool to play with. I want to run a Linux development machine on my iPad. I couldn’t care less about making money or growth hacking or starting a side hussle or one of the dozen other reasons why people here believe they must do to have their free time be seen as “optimal”. I just want to have fun with it.
masterjefferson
HOW DARE YOU
busymom0
Another reason is that even though right now they don’t allow it, what if they do start allowing it in the future? Pythonista app is a perfect example of this. It was originally not allowed but they eventually changed their rules to start allowing it back in ios 11 I believe. Maybe the same would happen with this if this becomes decently useful. IPad is already going in a more mainstream direction.
nottorp
Yes, it's okay if you think along the "i bought the hardware, i do whatever i want with it" line.

There's that nagging feeling you're giving Apple too much mind share though.

_-___________-_
Because it's useful even if it's not allowed in the App Store? There's tons of useful open-source software for iOS which will never make it to the App Store.
anticensor
This includes the real Firefox.
theshadowknows
Please explain...
AnyTimeTraveler
I have a 4th generation iPad. Would it work on that as well? Since Apple dropped support for it, it's stuck with iOS 10 and effectively useless. I would love to run Linux on it...
saagarjha
Unfortunately UTM requires iOS 11. Perhaps someone might be able to backport it?
saagarjha
How long did it take you to make this?
Most of the development was done on my free time in a span of three months. Then I got bored and didn’t touch it for half a year and decided to polish it up a little last week and release it.
Not being in the apple world I wondered if this submission meant anything had changed regarding running stuff like this on iOS, but no:

>Why isn't this in the AppStore?

Apple does not permit any apps that has interpreted or generated code therefore it is unlikely that UTM will ever be allowed. However, there are various ways people on the internet have come up to side load apps without requiring a jailbreak. We do not condone or support any of these methods.

rgovostes
> 2.5.2 Apps [may not] download, install, or execute code which introduces or changes features or functionality of the app, including other apps.

The rule changed, I think around the time that Swift Playgrounds came out, to add:

> Educational apps designed to teach, develop, or allow students to test executable code may, in limited circumstances, download code provided that such code is not used for other purposes. Such apps must make the source code provided by the Application completely viewable and editable by the user.

There are probably plenty of apps that do interpret downloaded code (the Frotz app to play old text adventures comes to mind) and fly under the radar. But Apple would surely be on the lookout for any kind of emulator, due to the legal risk.

dwheeler
There's no legal risk. Microsoft allows people to install emulators on their OS without issue.

The issue is that Apple wants a big profit cut on each app. If you were allowed to download & run applications on your own computer, then Apple wouldn't get its cut.

rgovostes
That may be one factor, but it certainly isn't the only one. There are plenty of remote desktop apps on the App Store. But Steam Link was held up in review because Apple did not want people being able to buy games without getting a cut.

Microsoft "allows" people to install emulators in the same sense that Apple "allows" it on macOS, but a quick search confirms that Microsoft does not allow emulators on their app store, nor does Google. (These policies may specifically be for video game emulation, which is mostly what the legal grey area covers.)

rlyshw
You can run seemingly unrestricted python code on your iOS devices with Pythonista [0]. I'm using it right now to proxy my hotspot connection through my iPhone.

Not sure how they're allowed to exist on the app store, but it's been solid for me for a while now.

[0] https://apps.apple.com/us/app/pythonista-3/id1085978097

tech234a
Pythonista has been featured by Apple several times. As others have pointed out, only pure-Python modules can be used unless they are precompiled and included with the app.
ericlewis
it is categorized as a learning application, but I am quite curious how you made a proxy with it.
I guess he made an app that open a port to let user to connect to it and proxy-ing the request
rhodysurf
Interpreted code is fine for most cases, but compiling is a big no no. Which is unfortunate and limiting
This is just not true. There are many emulators in AppStore, from i48 (which runs HP 48's native Saturn ROM), to ZORK, which runs PDP-11 binary of said game underneath, along with emulated RT-11 (or was it RSX-11?).
tluyben2
Maybe it is emulators that generate code internally and these do not? I know that was why MSX emulators were forbidden while they cannot really hurt Apple sales...

Anyway; I don't know if these emulators maybe do not generate code or are written with Core JS (for the most part) which apparently is allowed.

anonsivalley652
Apple's control-freaking and exploitation of customers has reached peak unreasonableness. I don't think SJ would've been so focused on making trillions when some billions could be had with cooler, repairable, lasting products. Personally, I have one foot out of the door (hackintosh) regarding the Apple ecosystem. I'm going to let the iPhone 6S, iPad Pro 10.5 and Apple Watch 4 run however long they can, but that's probably it for me, I'll stick to repairable devices like my ThinkPad T480.
dreamcompiler
It's ironic that Woz especially wanted to bring computing to the masses, not lock it down. Apple is the antithesis of its own founders' vision.

Apple deserves to be disrupted.

dhosek
I'd imagine most of those who would have need/interest in running this would probably have a developer account and could just compile and install it themselves.
busymom0
Now a days you don’t even need a developer account for testing on your device if I remember right.
saber6
You can pay for a developer account ($99/yr) which allows you to get your builds signed by Apple for the purposes of you running either dev-builds locally or internal-only apps for an organization.

That's what they mean by "no jailbreak required". Flipside is you gotta pay for a dev account to get your stuff signed to allow it to run.

dahfizz
You need to pay a subscription to run your own code on your own device? Why anyone puts up with Apple's anticonsumerism is beyond me.
thebruce87m
Security. Privacy. Long term support of hardware (environment). No carrier crapware.
heavyset_go
> Security

This is arguable. The amount of CVEs is pretty high for a closed-source platform. Several of those CVEs were exploited in the wild for years before being fixed.

You don't even need a (paid) developer account. Anyone with an apple id can sign ios apps with a validity of 7 days.
Not dynamically loaded libraries after 13.3.1, however.
jscheel
General consensus is that this is a bug though. Apple has not come out with any announced change.
josteink
> You can pay for a developer account ($99/yr) which allows you to get your builds signed by Apple

So to test this on my iPhone, I need 1. to buy a Mac and 2. pay for an annual Apple development permission subscription.

You really can’t make a platform worse than this, and I say that as an iPhone owner. It’s so frustrating!

Can’t they publish this as a “test-flight” beta like for instance iSH does?

busymom0
No they are incorrect. That used to be the case but now you don’t need to pay a developer for testing on your own device. Only when you want to publish the app to App Store or need some specific developer feature like iCloud is when you need to pay.
LeoPanthera
> "Since iOS 13.3.1, it appears Apple has stopped allowing free developer profiles to sign dylibs."

A terrible decision. Users should always be allowed, at the very least, to build and sideload their own code.

Wowfunhappy
> Users should always be allowed, at the very least, to build and sideload their own code.

You barely can anyway. Unless you pay $99/yr for a developer account, any self-compiled apps you install will expire after seven days. If you want your app to keep working, you need to plug your phone into a computer and recompile every single week. That's just not realistically usable for anything other than simple testing.

Yes, it should be allowed. But it's not. It's been this way for the entire history of iOS and it's awful.

tasogare
Yes, this restriction is a huge PAIN. Back in my Windows Phone days, I ran development builds in addition to the store versions of my apps as dog fooding, or even just prototypes I never finished. Now I have this kind of apps on a secondary Android phone, but no iOS apps despite using macOS and having iPhone a main phone. Apple is really shitting on developers and hobbyists.
sigjuice
Do apps from a $99/yr account last for a year or is there some other sort of time limit?
anta40
Only last for a year. After that, renew it. Unlike Google dev account which is $25 for lifetime, single payment only.
saagarjha
They last a year.
ur-whale
Many people still seem to believe that when they buy a phone (be it Apple or Android) they actually "own" the device.

You don't really:

    . can't open it to access h/w, change battery, etc...
    . can't choose what you run on it
    . can't actually access all of the data that's stored on it
    . most of the things you do with it are recorded by a remote entity.
    . "for your own protection", here's a very long list of things we will not let you do with your device.

Gives a whole new meaning to the word "ownership".
I can't fully agree with your first point:

> can't open it to access h/w, change battery, etc...

We're necessarily moving closer and closer to monolithic ASICs that cover all functions of a phone, most likely encased in epoxy for complete waterproofing. Some guy with a screwdriver and multimeter will never be able to keep up with advancements in manufacturing/technology.

Silicon is one thing, but the comment you’re replying to specifically mentioned batteries. Non-replaceable batteries offer a modest reduction in size, at the cost of reducing the device’s service life to 3-5 years. I personally don’t find that to be an impressive advancement in technology. The design’s lack of respect for user-serviceability reinforces the other user-hostile features of the iOS ecosystem identified by the grandparent. (Sent from my iPad.)
throwaway55554
I use and enjoy Apple products, but behavior like this is so annoying. My devices are mine and this should not be a restriction.
dreamcompiler
IOS devices have never been your own. Apple justified this in the early days on the grounds that they were protecting mobile phone networks from hackers, but that argument fell through when the iPod touch (an iPhone without phone functionality) was equally locked down. The only thing Apple is protecting with this policy is their revenue stream.
jsjohnst
> Apple justified this in the early days on the grounds that they were protecting mobile phone networks from hackers

Substantial claims require proof, please show even one example where Apple stated this ever.

kccqzy
I'm not very familiar with iOS but is this restriction a fundamental limitation or just a paper-cut style limitation that's just one more hurdle for developers to jump through?

It appears to me that developers who are previously using dynamic libraries now have to invest in the effort to make them static libraries and link them to the main executable. So it seems like it can be overcome, but just more hassle. Am I correct?

earenndil
It is completely arbitrary, yes.
DavideNL
I agree, and it's probably just a matter of time until Apple finds a way to kill this project too.

Stifling peoples creativity for commercial reasons. It feels like instead of my own government, Apple/Google now dictate the new rules (for which there are no laws yet, and won't ever be since new laws are always 10 years behind the newest innovation.)

frabert
> "Fast native graphics through para-virtualization thanks to SPICE"

I'm assuming the SPICE referred to here is not the SPICE I know, unless they've gone the full video circuit emulation route, which I don't imagine being fast at all :)

hamiltonkibbe
Hah, having parameters like --vga-cable-length --ambient-temperature --psrr would be fun though
anticensor
And you would have to specify all those parameters in imperial units, but according to most idiosyncratic measurement methods possible, like that: cable length includes the connector, but only one end counts.
josteink
> "Fast native graphics through para-virtualization thanks to SPICE"

Isn’t that what’s the “regular” QEMU setup always uses anyway?

anonsivalley652
A different kind of "circuit." ;)
terminaljunkid
On Android, there is termux terminal emulator, which allows to run native Linux binaries and already has many packages. Arguably there were other ways also before termux existed: GNURoot Debian was an app that ran a minimal Debian chroot in fake root (`proot`), Before that there was KBox. In termux also I run a full Debian chroot using proot. None of this requires root.

Even without that, static binaries could run till some recent version. I have poked with dynamic loading and LD_PRELOAD to set up my own environment which could run most Debian packages using libfakechroot && libfakeroot.

People like to shit on Android. But in terms of power user freedom, apple doesn't even come near.

> Apple does not permit any apps that has interpreted or generated code

An interesting exception to this is Expo, an app that lets you load React Native apps built by other developers over the internet. Expo gets around this on Apple by forcing you to sign into that developer's account before downloading their app, so that it's plausibly "yours". I've used to distribute early builds of a React Native app really easily.

All of this to say, I wonder to what degree Apple's policy applies when it's "your" app, or you are the developer, or whatever. I suspect Expo, as a venture backed startup, has some kind of a working relationship with Apple that affords them a tiny amount more leeway than the average Github user.

This could actually be an incredibly useful application that many people pay lots of money for if were ever allowed on the market -- think of the combination of iPad + keyboard + Windows Remote Desktop. Really sad that Apple makes their platform so restrictive. (Yes, security issues, but still, seems like a good enough sandbox could overcome the danger of remote execution.)

rhodysurf
Expo is also completely different and within the rules. They arent installing apps, they are simply loading JS and running it like any RN app could do. They just make it easy by pre-bundling deps so that they can be loaded on the fly. Its literally just downloading JS and assets from a server and then executing the JS with JSC on ios.

They also get around the limitation of having half the screen showing the executed code by not letting users modify the code through their app.

Right, but the QEMU project is also simply loading X86 (or other) assembly code and interpreting it in a virtual machine... unless I misunderstand this project and it does something more sophisticated.

> the limitation of having half the screen showing the executed code

I'm not aware of this limitation, could the QEMU port use this to show the ASM that's being executed to get around this?

rhodysurf
IDK about virtual machines and why this isnt allowed. But related is how this app works that is a c compiler for iOS and is in the app store: https://www.reddit.com/r/iOSProgramming/comments/dr5bxi/app_...

It basically does the same thing Swift Playgrounds does where is compiles to LLVM machine code and runs it will LLVM compiled for iOS. And it is on the app store so IDK the rules at all apparently and why QEMU wouldnt be allowed.

The rules apparently (since last year or so) are that you can interpret arbitrary code as long as the code in question not only legally but in practice meets the definition of the zeroth FSF's rule (notice that the “executables” on the FS image distributed with SeeLess are LLVM IR assembly text files, which is probably the reason why the thing is so damn huge)
saagarjha
Swift Playgrounds compiles to native code and loads it with Apple-private entitlements.
ericlewis
the largest difference is that Expo uses JavaScriptCore, a framework provided by apple for use by any application that wishes to execute javascript code. Since it is their own interpreter it is fine.
Apple's really loose with the interpreted code policy. Not going to mention some of the apps I use that do so if nothing else because HN has dozens of Apple employees.
saagarjha
> Not going to mention some of the apps I use that do so if nothing else because HN has dozens of Apple employees.

Believe me, the engineers at Apple are well aware of them already.

jsjohnst
> iPad + keyboard + Windows Remote Desktop

Why not just install the free Microsoft RDP client for iOS? Seems like extreme overkill to use an x86 emulator with a full OS installed to do something that’s available for free in the AppStore.

ben174
Because remote desktop needs a connection and a remote PC to connect to.
jsjohnst
Why would you RDP into a Windows machine running on an iPad in a VM rather than just directly interact with the UI? That doesn’t make sense.
anonsivalley652
That's not much different than TestFlight (acquired by Apple) or MS AppCenter (acquired as HockeyApp).

PS: I'm using an iPad Pro 10.5 over LTE right now with an original Apple Wireless Keyboard 1 with proper arrow keys. I use Vim on it and can save to shared services. Heck, you can even fire-up the embedded python with :!python3<enter> It also redirects phone calls from my vintage unlimited data plan, so I don't need a phone... but it looks goofy talking into my iPad John Oliver-style. ;)

The important difference is the turn around time -- with Expo I can make a change locally and see it with my testers in less than a minute, whereas with TestFlight everything has to be manually reviewed for 2-3 days after a heavy-handed submission process.
jsjohnst
I routinely do TestFlight builds without manual review and fast turnaround from build -> running on beta user devices.
How? Genuine question. I am trying to distribute an app right now and it always takes at least 2 days from submission time to TestFlight approval.
rcarmo
I have been using iSH for many months to have a moderately sane CLI environment on my iPad, and bemoaning the App Store restrictions that prevent it from being better integrated and more popular.

I fear this will also never reach its full potential... but it is great to see.

machello13
serious question as someone who has an iPhone + iPad but isn't very familiar with emulation. What could you do with this? How feasible is it to run Windows and then install Steam or something like that?
jsjohnst
I ran Linux and Windows 95 on a first gen iPad using Bochs. Boot time was utterly terrible, but it was kinda useable after. Given the performance improvements in recent iPads, I’m hoping this will be better, but I’ll let you know once I get home and try it.
bibyte
If you want this on Android it is available in the Termux repository. If you have a flagship device it should be fast enough to be usable.
tluyben2
What Android tablet is comparable to a modern iPad pro in performance, screen and battery life? I really like the iPad pro but I hate the artificial restrictions... All the Android tablets I tried out, flag ship ones, just fell down compared. I have a Surface Go for when I need Windows, but that is probably one of the worst buys of my life.

I currently use iPad Pro with Remotix to access OS X + Windows which works really well. If there was a Remotix for Linux, I would use Linux only, but there is no comparable VNC client for Linux. Compared the ones under Linux are unusable (and I did try them all).

bibyte
What about the Samsung Galaxy Tab S6? It seems to be comparable to the iPad Pro in terms of performance and screen. I tried out an Android tablet a few months ago and it seemed pretty fine.

If your want to do portable programming I would recommend a light 2 in 1 laptop. You can dual boot Windows and Linux on it (Windows for media consumption and Linux for programming). But it is bigger then a tablet.

Of course if you use a server you can use anything you want to do programming. But personally the latency is a dealbreaker for me.

tluyben2
I will try the S6; it seems good but someone told me there are no really solid keyboards for it? I never checked it because I already had an iPad.

> But personally the latency is a dealbreaker for me.

I had that issue too :) However that changed when remotemac (no affiliation) introduced me to Remotix; I live in the mountains and my internet is bad, and yet it has no latency with 4k screen transferring. Anything on Linux is just horrible compared. I develop apps on my iPad and it works really well like that.

My ‘dream’ (bit extreem but lets say preferred way of working) is to use my x220 with Linux to do that; then I can do all dev on that machine while doing iOS dev remotely. Now I still have to carry an Android tab, Windows laptop (I can do that on the x220 but I really do not like to dual boot) or iPad with me.

If you don’t mind moving away from the VNC protocol, the NX protocol (via NoMachine¹) is a fantastic alternative. Faster than VNC and can forward audio from the server to the client as well.

――――――

¹ — https://en.wikipedia.org/wiki/NX_technology

NamPNQ
The title lets me think about ios emulator run in qemu
jasoneckert
Has anyone used this? What is the performance like?
saagarjha
It took about a minute to boot Alpine Linux on a debug build. It's currently about half an hour into booting elementary and it's just started the display server.
saagarjha
Update: about an hour in it got stuck trying to start the login service.
hedora
I’ve had elogind deadlock on physical machines (on many distros and machines, including elementary). I have an nfs server, so it’s probably timing related.

Try a non-systemd distro (e.g., MX linux, Devuan, slackware).

OrgNet
I'm surprised that Apple allows apps like QEMU... it's not like them. Gives me hope...
saagarjha
This hasn’t been approved by Apple.
OrgNet
but it says "No jailbreak required!"... I thought that meant only appstore apps where allowed on your device...
evanjd
You can sign and deploy apps to your own device with Xcode. This is all explained immediately after the “no jailbreak required” dot point in the README.
neilsimp1
This is cool, but I can't help but think that running a VM on an iPad or iPhone would be horrendously slow.
akhilcacharya
The iPad Pro is very impressive, here a video of one playing Half Life 1 in XP using UTM [0]

[0] https://www.youtube.com/watch?v=O19dNVTBCAs&feature=youtu.be

hinkley
Have you played Civ VI on an iPad? Except for being slightly harder to click on things (and no keyboard shortcuts) it plays the same as the desktop version. Same UI and graphics.
anonsivalley652
Nice.

Printed on electrons from a cheap(er), used iPad Pro 10.5" over 4G LTE

throwaway55554
Why would you think that? Apple's processors are very powerful.
saagarjha
Because it is fairly slow :)
ViViDboarder
Emulation is slow.
cable2600
Emulation is slow because it is emulating a CISC processor with a RISC processor. You are better off running QEMU on your Mac than on your iPad.

Does to hard drive limitations in space might not be able to run Windows 10 on an iPad or Macbook Pro.

hedora
Under the hood, intel processors emulate a CISC processor with a RISC processor, so there’s nothing fundamentally slow about that.

Staying with the same instruction set (e.g. x86 -> x86) does help with performance though.

There’s a discussion of this here: https://stackoverflow.com/questions/5806589/why-does-intel-h...

saagarjha
> Emulation is slow because it is emulating a CISC processor with a RISC processor.

It’s slow because it’s emulating, period. CISC/RISC has little to do with it.

Sure but if it's to emulate a computer from 1985 with half a meg of RAM, it might not be so bad :)

Edit: my bad, somehow I thought this was UAE the amiga emulator.

This item has no comments currently.