Manual setup (advanced)
1. Install Mirrage on your iPhone
Section titled “1. Install Mirrage on your iPhone”Mirrage isn’t on the App Store, so it’s installed (“sideloaded”) with your Apple ID.
- Download the Mirrage
.ipafrom the download page. - Install it with the sideloading tool you prefer - Sideloadly, AltStore or SideStore all work. Sign in with your Apple ID when the tool asks.
- On the iPhone, open Settings → General → VPN & Device Management, tap your Apple ID under Developer App and tap Trust.
2. Turn on Developer Mode
Section titled “2. Turn on Developer Mode”- Open Settings → Privacy & Security, scroll to the bottom and tap Developer Mode.
- Switch it on and tap Restart.
- After the restart, unlock your iPhone and tap Turn On.
Can’t see it? It only appears once a developer-signed app (step 1) is installed - see Developer Mode is missing.
3. Make the pairing file
Section titled “3. Make the pairing file”Mirrage needs a remote pairing file - a small .plist with three keys: identifier,
public_key and private_key. It must be made on a computer with the iPhone plugged in.
With Python 3.10+:
pip install pymobiledevice3Save this as make_pairing_file.py, plug in and unlock your iPhone, and run it:
import asyncio, plistlibfrom pathlib import Pathfrom pymobiledevice3.exceptions import RemotePairingCompletedErrorfrom pymobiledevice3.lockdown import create_using_usbmuxfrom pymobiledevice3.pair_records import generate_host_id, get_home_folderfrom pymobiledevice3.remote.tunnel_service import RemotePairingLockdownService
async def main(): lockdown = await create_using_usbmux() udid = await lockdown.get_value(key="UniqueDeviceID")
service = await RemotePairingLockdownService.create(lockdown) try: try: await service.connect(autopair=True) except RemotePairingCompletedError: # The phone drops the connection the moment pairing completes. await service.close() service = await RemotePairingLockdownService.create(lockdown) await service.connect(autopair=False) finally: await service.close()
record = plistlib.loads(Path(get_home_folder(), f"remote_{udid}.plist").read_bytes()) Path("pairingFile.plist").write_bytes(plistlib.dumps({ "public_key": record["public_key"], "private_key": record["private_key"], "identifier": generate_host_id(), })) print("Saved pairingFile.plist")
asyncio.run(main())python make_pairing_file.py4. Add it to Mirrage
Section titled “4. Add it to Mirrage”Send pairingFile.plist to your iPhone (AirDrop, or save it in Files), then in Mirrage open
Settings → Connection → Replace setup file and pick it. Mirrage confirms with
“Setup file added”.
5. Switch on LocalDevVPN
Section titled “5. Switch on LocalDevVPN”Install LocalDevVPN from the App Store (free), open it and tap Connect. Mirrage uses it to reach your iPhone’s location settings - keep it on while you use Mirrage.
6. Activate your licence
Section titled “6. Activate your licence”In Mirrage, start a teleport - the subscription sheet appears. Paste your key, or point your iPhone camera at the QR code on your purchase page. Done.