StikDebug Not Working? Every Common Error and Its Fix

StikDebug is the app that turns JIT on for emulators like DolphiniOS without a computer attached — when it works. When it does not, it shows you an error that reads like a network stack trace: heartbeat (-9), os error 61, Connection reset by peer. They look alike and they are not: each points at a different link in a short chain.
This page is the troubleshooting half. If you are setting StikDebug up for the first time, start with how to enable JIT on iPhone, which walks through what the pairing file, the VPN and the debugger each do. Come back here when one of them complains.
First, the four checks that fix most errors
Almost every StikDebug error traces back to one of four things. Run through them before reading any further:
- The loopback VPN is connected. StikDebug no longer has a VPN built in, so LocalDevVPN (or a similar loopback VPN) must be switched on. Its default target is
10.7.0.1. - You are on Wi-Fi, not mobile data. JIT does not work over cellular — one of the maintainers puts it simply: Apple does not allow it.
- The pairing file is fresh. It expires after an iOS update or a device reset, and sometimes for no visible reason at all.
- Developer Mode has been toggled off and on, followed by a restart. This is the maintainers’ standard first answer in the issue tracker, and it clears more than you would expect.
Also make sure you are on a current build. StikDebug is at version 3.1.13 (September 28, 2026) and is no longer on the App Store — it installs from its own AltSource or from the GitHub releases page. Support runs from iOS 17.4 to 18.x fully; on iOS 26 and later it works, but only with apps whose developers have added support for the new JIT method, and the maintainers report it working on the latest iOS 27 betas.
”Heartbeat” errors
The most common error by far, and the README’s own advice for it is the checklist above: make sure the VPN is on and you are on Wi-Fi — and if both are fine, suspect the pairing file. The number in brackets tells you which:
- Heartbeat (-9) — your device is rejecting the pairing file. You need a new one; nothing else will fix it.
- Heartbeat (-1) — usually means you are on mobile data. Switch to Wi-Fi.
- Heartbeat … BrokenPipe (code 32) — the iOS 26.4 breakage. Apple changed how pairing works in that release, which broke the old flow for everyone. It was fixed by moving to the newer RPPairing protocol: update StikDebug and make a fresh pairing file with an updated pairing tool.
”Invalid pairing file” — or the file vanishing
The in-app alert says the pairing file “may be invalid or expired.” Make a new one with the iPhone unlocked and set to trust the computer, then import it again (how, below).
If the file seems to delete itself right after you import it, that was a bug on iOS 26.5.2, fixed in StikDebug 3.1.8 and 3.1.9. Update, then import again.
Error 54 — “Connection reset by peer”
The connection got as far as your device and was cut. The fix is the full reset in order: replace the pairing file, restart the phone, confirm LocalDevVPN is connected on 10.7.0.1 and you are on Wi-Fi, and toggle Developer Mode if it still persists.
Error 61 — “Connection refused”, including “DDI Mount Failed” on iOS 27
Nothing answered on the other end. Restart, then check the VPN and Wi-Fi again. Two less obvious causes:
- Custom IP addresses. If you ever changed the device IP in StikDebug or LocalDevVPN while following an old workaround, set both back to their defaults.
- A stale stored pairing. If you made your file with iloader, use its “delete stored pairing” option and create the file from scratch rather than re-exporting the old one.
”Device not mounted” or “error mounting the DDI”
On first launch StikDebug downloads Apple’s Developer Disk Image and mounts it — which needs a working internet connection over Wi-Fi. If the mount fails, look at what sits between you and the internet: a DNS ad-blocker, a firewall, a proxy, or a school or office network can all block the download. Turn them off or switch networks for that first launch.
”Address already in use” (code 48)
Another app is already holding the connection. Close any other JIT, VPN or proxy apps, reconnect LocalDevVPN and restart the phone if it lingers.
Your app is not in StikDebug’s list
This one is not a connection problem at all. StikDebug can only attach to apps signed with a development certificate — one that carries the get-task-allow entitlement. Apps signed with a distribution certificate do not have it and will never show up, no matter how healthy everything else is. Install the app through SideStore, which signs with a development certificate, or ask whoever provides your certificate whether it is a development one.

How to make a fresh pairing file
Half the fixes above end in “make a new pairing file,” so here is the current way. You need a computer for this step — once — and the phone connected by cable or on the same Wi-Fi.
With iloader (the method in StikDebug’s official guide):
- Install iloader on your computer. On Windows it needs iTunes installed; on Linux,
usbmuxd. - Connect the iPhone and tap Trust on it.
- Click Manage Pairing File, then Place next to StikDebug.
- Wait for the green “Pairing file placed successfully!”
With idevice_pair (the tool the maintainers often suggest when iloader misbehaves):
- Connect by USB and tap Trust.
- Choose Remote pairing (RPPairing, iOS 17.4 and later) or Lockdown.
- Click Create, then either save the file or click StikDebug’s name to write it straight into the app.
- Use Validate to check the file works before you leave the computer.
On iOS 27, idevice_pair can pair over Wi-Fi without a cable: choose “Pair over Wi-Fi” and type the code shown on the phone.
If you already use SideStore, you can also reuse its file: in the Files app it lives under On My iPhone → SideStore → ALTPairingFile.mobiledevicepairing.
On iOS 26 and 27: JIT is “on” but nothing changes
On iOS 26 and newer, enabling JIT is no longer generic — each app needs its own support, delivered through a script that StikDebug runs. StikDebug assigns the right one automatically for the apps it knows: a universal script for MeloNX, Manic EMU, Amethyst and others, a legacy one for UTM, DolphiniOS, Flycast and ARMSX2. On newer devices — those with Apple’s TXM security layer — also turn on Silent Audio and Always Run Scripts in StikDebug’s settings.
If your app is not on that list, the honest answer is often that it does not support JIT on iOS 26+ yet — and no setting in StikDebug will change that. The maintainers have said as much about crashes in specific emulators on the iOS 27 beta: not a StikDebug issue.
The part StikDebug does not fix
Once JIT works, there is still the other half of the setup to live with: apps from free signing tools expire every seven days and need refreshing, and a refresh at the wrong moment means redoing the pairing dance. That is a separate chore with its own fix.
It is also the half builds.io removes: apps install from Safari and stay signed for as long as your subscription runs, with no weekly refresh. JIT itself stays a narrow concern for a few demanding emulators — and most of the catalogue never needed it in the first place. For the tunnel side in more depth, see LocalDevVPN and how SideStore does JIT without a PC.