Skip to content

Releases: MakrSas/Inferno-iOS

Inferno for iPhone 0.3

Choose a tag to compare

@MakrSas MakrSas released this 13 Sep 12:07

A package manager and an app catalogue, Cydia that works, the phone's battery and network in the guest — and an agent that keeps all of it off the console.

Unofficial — not affiliated with or endorsed by ChefKiss. Inferno is by Visual Ehrmanntraut and the Inferno team.

What's new

A package manager on the phone. Menu → Patches → Package manager. Cydia repositories — bingner's, BigBoss, Chariz, Havoc and Filza's own to start with — are read, searched and downloaded on the phone, where the network is real and nothing times out; only the finished .deb goes into the guest. It knows what is installed, and can reinstall or remove it. A .deb you already have installs from the same menu, and Restart SpringBoard is what Cydia calls a respring.

Cydia works. Every operation used to end in cydo returned an error code (2), because a restored image breaks it three ways at once: the root is read-only, dpkg looks for its database where there is none, and nothing in the guest can be setuid, so cydo never becomes root. The app now gives Cydia a root helper in cydo's place and repairs what a guest reboot undoes on every start. Repair the package manager does the slow half, once per image.

An app catalogue. Menu → Patches → App catalogue: DolphiniOS, Taurine, iSH and Provenance to start with, and any AltStore source you add, installed the same way as an .ipa. App Store apps are not there and cannot be: their binaries are encrypted with FairPlay, which only the device that bought them can undo.

The phone's battery in the guest. Settings → The guest's battery: the charge — in steps of five, which is all iOS tells an app — and the bolt while it charges, or a figure of your own. The guest's SMC answers with it, so its status bar, Settings and apps all agree.

A network in the guest's status bar. Settings → The guest's status bar: Wi-Fi or cellular as the phone has it, or whatever you set. Only a picture — the machine has no modem and no Wi-Fi, and the guest's apps still see none.

The phone's time zone in the guest. The guest's clock was always right, but the image comes with a zone of its own — US/Pacific on images built by the guide — so its screen was hours away from the phone's. The app now gives the guest the phone's zone as soon as it can reach it, and follows the phone when that changes. Settings → The phone's time zone turns it off, if you would rather pick a zone in the guest's own Settings.

An agent in the guest. Everything automatic used to share the one console the bootstrap's bash sits on, and one command that never came back stalled the lot. The first time the machine starts, the app now installs a small agent into the guest and adds it to launchd, so it starts on every boot; the app reaches it over the NVMe namespace instead of the console. If it cannot be installed, everything goes through the console as before.

The shell waits for the guest. The shell opens over the console as the machine starts and waits for the bootstrap's bash, instead of giving up on a guest that is minutes from one.

Credits. Settings → Credits: whose work this stands on, and what each of them did. Opening it fetches the avatars from GitHub; nothing else leaves the phone.

Fixed

  • Starting the machine no longer crashes on anything older than iOS 27: the emulator called pipe2, which iOS only has from 27.
  • A machine whose NVRAM was left at auto-boot=false no longer heads for recovery and quits with RAM Disk required for recovery.
  • A folder or an empty file where a disk image belongs no longer takes the app down at Start. The reason is in the log, and emulator.prev.log keeps the run before, for when you restarted the app to find out.
  • Settings the guest cannot boot on are gone: TCG always runs multi-threaded, and there are at least 4 cores. A saved 2 or 3 becomes 4.
  • The emulator log is in English when the interface is.
  • The console pane shows the guest's output as it arrives.
  • In full screen, the first edge swipe goes to the guest and the second to the phone.
  • The app reports its own version. Every earlier build said 0.1.

Sound is still experimental. With the switch on, the guest now sees the sound hardware and builds its speaker, but the output route never comes up, so nothing plays yet. With it off, the machine carries none of those drivers.

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.

On a Mac

Inferno-macOS.dmg is the same app for a Mac with Apple silicon, built from the same sources. The guest runs under Hypervisor.framework, straight on the Mac's cores, so there is no JIT to arrange. The window is laid out like iPhone Mirroring: at rest it is only the guest's screen, and at its top edge a blurred frame comes up with the window buttons, the menu and the settings.

  • macOS 15 or later, on Apple silicon.
  • Open the disk image and drag Inferno into Applications.
  • The app is signed ad hoc, not notarized, so macOS will not open it the first time. Try once, then System Settings → Privacy & Security → Open Anyway.
  • The same guest image as on the phone: put InfernoData and AppleSEPROM-Cebu-B1 into Documents → Inferno, and let the app use Documents when macOS asks.

Source

Inferno.ipa SHA-256: a031949f46693979661e7421293fb436c5caed58755c0d32ea7f181cb57db90d

Inferno-macOS.dmg SHA-256: 3b585a999a5ace8780930f8724d37c2dbb8ab86d0e05ee69835f0cdefa74a48b

Found a problem, or have an idea?

Open an issue, in English or Russian.

Inferno for iPhone 0.2

Choose a tag to compare

@MakrSas MakrSas released this 11 Sep 20:45

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

Inferno.ipa SHA-256: bebe23918118c4f1cd4b4656378767ec1bceb001e16761f5d8b25d545e343c9f

Found a problem, or have an idea?

Open an issue, in English or Russian.

Inferno for iPhone 0.1

Choose a tag to compare

@MakrSas MakrSas released this 10 Sep 16:54

The first public build: an emulated iPhone 11 running iOS 14, as an app on a real iPhone.

Unofficial — not affiliated with or endorsed by ChefKiss. Inferno is by Visual Ehrmanntraut and the Inferno team.

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

Inferno.ipa SHA-256: 5e8db83e4ca9568a72a5931329ed551e4f645703e166fc3f5c72b1e3573bd90a

Found a problem, or have an idea?

Open an issue, in English or Russian.