Faster file transfer, one-tap .ipa install, a screen size to choose — and a translation buffer that no longer holds the guest back.
Unofficial — not affiliated with or endorsed by ChefKiss. Inferno is by Visual Ehrmanntraut and the Inferno team.
What's new
The translation buffer is no longer the ceiling. Everything iOS runs has to fit in it as translated code; when it does not, the buffer is thrown away whole and the cores translate it all again instead of running it. At 64 MB that was happening constantly. Raising it to 256 MB took one measured run from 8–11 frames a second to 21–25, on a larger panel at that — though the frame rate swings with whatever the guest is busy with, so treat that as the size mattering rather than as a number you will always see. Settings → Translator now goes up to 512 MB. The default stays at 128 MB, because the buffer shares the process's three gigabytes with the guest's own memory — raise it, restart the machine, and watch the frame counter.
Files reach the guest quickly. They now ride a dedicated NVMe namespace instead of the console: 7.8 MB/s on the test rig, against a few kilobytes a second before. The USB network path is about seven times faster as well. And sending a file no longer fails with "the guest's shell is not answering" — the folder is prepared one command at a time, waiting for each, instead of firing them blind.
One-tap .ipa install. Pick an .ipa and it is unpacked into the guest and left on its home screen.
A screen size to choose. Settings → Screen: iPhone 11 (828×1792), iPhone 8 (752×1336) or SE (640×1136). The scale stays at two everywhere, so the picture is drawn just as sharply — there are simply fewer pixels for the emulated cores to fill.
The guest does notice the smaller panel, though, and it is cosmetic rather than subtle: below the iPhone 11 size the app icons lose their rounded corners and come out square, and on the SE size the home screen puts the labels underneath the icons instead of beside them. Nothing stops working; it just looks like a different phone than the one the artwork was drawn for.
The frame counter says more. Beside the frame rate it now shows how much the guest is pouring into the console, and the log carries a line a second: how many frames the machine showed, how many reached the screen, and how often QEMU's main loop got round to asking for a redraw. That line is what found the translation buffer.
guest-console.log no longer eats the phone. It grew to nearly four gigabytes in a single run; it is trimmed now.
Experimental: sound output on the phone. Settings → Machine → Sound. There is nothing to hear yet — the emulated machine is still missing the audio coprocessor iOS drives the speaker through — so the switch is here to test the phone's half while the machine's half is built.
Before you install
- You need a jailbroken guest image, built by ChefKiss's guide with the jailbreak bootstrap. None is included.
- The app needs JIT: always launch it through StikDebug. Before launching, long-press Inferno in StikDebug, choose Assign Script and pick
legacy.js. - About 9 GB free for the guest image.
Step by step: Installing. What does and does not work: README.
Source
- App: this repository at
v0.2 - Emulator: MakrSas/Inferno at bbda988069, branch
ios
Inferno.ipa SHA-256: bebe23918118c4f1cd4b4656378767ec1bceb001e16761f5d8b25d545e343c9f
Found a problem, or have an idea?
Open an issue, in English or Russian.