0xCodez/iphone-mirror-windows
Productivity & UtilitiesWindows tool that receives iPhone AirPlay mirroring and optionally adds USB mouse and keyboard control.
Overview
iPhone Mirror makes a Windows 10/11 PC act as an AirPlay receiver, showing the iPhone in a frameless, rounded, always-on-top window that can rotate with the device and save screenshots. The phone needs no app or cable for mirroring. Optional USB control sends taps, swipes, typing, Home, App Switcher and volume commands through WebDriverAgent, Appium's XCUITest-based automation server, launched over USB with pymobiledevice3. It suits Windows users who want a macOS-style iPhone mirroring window and don't mind extra setup for input control.
Quick start
- Install Python 3.11 or newer and check "Add python.exe to PATH" during setup. Keep the iPhone and PC on the same Wi-Fi network.
- Download the repository as a ZIP or clone it to a permanent folder, then double-click
install.bat. It creates a private virtual environment under%LOCALAPPDATA%\iPhoneMirror\venv, installsrequirements.txt, and adds desktop and Start menu shortcuts. - Launch iPhone Mirror. The window shows "Waiting for iPhone" and the PC's addresses. Allow Python through Windows Defender Firewall on private networks, and make sure the Wi-Fi profile is set to Private.
- On the iPhone, open Control Center > Screen Mirroring and select the PC name. The window shows "Connecting..." and then the iPhone screen.
USB control is a separate process: connect and trust the iPhone, run control.bat reveal-dev-mode, enable Developer Mode on the phone and restart, run control.bat get-wda, sign and install WebDriverAgentRunner.ipa with Sideloadly, trust the developer profile, run control.bat doctor until checks pass, then press Ctrl + U or the hand button. See the USB control section for the full sequence.
Constraints
- Windows 10/11 only, with Python 3.11+ and the app running from its repository folder; moving the folder requires rerunning
install.bat. - DRM-protected video (Netflix, Apple TV and similar) appears black because the iPhone blocks it; the default stream is 1080 pixels high, adjustable in
settings.json. - Control needs a cable, Developer Mode, iTunes from apple.com for the USB driver, and a sideloaded WebDriverAgent. A free Apple ID signature expires after 7 days and must be reinstalled; iOS 17.0–17.3 control requires administrator rights.
- Control latency is roughly 100–200 ms, clicks wait about 0.2 s to distinguish double taps, and swipes are sent only on release, so there is no live drag.
- Licensed under GPL-3.0, with the FairPlay module ported from GPL-3.0 playfair code.
Settings and internals
The main settings (name, stream width/height, fps, audio, always_on_top) live in %LOCALAPPDATA%\iPhoneMirror\settings.json. Discovery uses mDNS advertisement of _airplay._tcp and _raop._tcp; an asyncio RTSP server on TCP 7000 handles pairing and FairPlay; H.264 video and AAC-ELD audio are decrypted and decoded with PyAV; the window is built with PySide6. For protocol work without a phone, python -m iphone_mirror --local plus python tools/fake_iphone.py 127.0.0.1 7100 runs a simulated session, and tests/test_fairplay.py and tests/test_wda.py cover the FairPlay and control clients.
HotRepo's take
iPhone Mirror is a substantive implementation rather than a wrapper: it documents its AirPlay pairing, FairPlay key unwrapping, video/audio pipeline, and the firmware-free simulated iPhone used in tests, with a layout that maps each protocol concern to a module. In HotRepo's only recorded snapshot, the repository entered the Python new-project list on 2026-11-09 with 101 stars and 17 forks gained since its 2026-11-08 creation. That single observation supports interest shortly after launch but not a trend; the project has no best GitHub daily rank recorded yet. The main adoption friction is the USB control setup chain, not the mirroring path.
Written by AI from the project's README, updated . The project's own docs are the source of truth.
You might also like
- lxe/phoneuseMirror an unmodified iPhone on Linux via AirPlay and control it with Bluetooth mouse and keyboard or a CLI.
- onehumanbeing/esp32-iphone-agentControl a real iPhone with a cheap ESP32 board acting as AirPlay receiver and USB HID input, driven by a vision model.
- zenvyzenshiro/zenlinkMirror iPhone, iPad and Android screens to Windows with hardware decoding, input control and OBS support.
- Genymobile/scrcpyMirror and control an Android device from a computer over USB or TCP/IP, with keyboard, mouse and audio, without root or an installed app.
- JosssphZhou/pokiLet Claude Code, Codex, or other MCP clients drive a real iPhone from a Mac, without jailbreak or extra hardware.