2026-05-01 18:48:36 +02:00
2026-05-01 18:48:36 +02:00
2026-05-01 18:48:36 +02:00
2026-05-01 18:48:36 +02:00
2026-05-01 18:48:36 +02:00

iOS/iPadOS Screen Mirroring to Windows (AirPlay via WSL)

This project sets up UxPlay (open-source AirPlay receiver) inside WSL2 and launches it as a window using WSLg. Your iPhone/iPad can mirror to that window.

Requirements

  • Windows 11 with WSL.
  • iPhone/iPad and PC on the same Wi-Fi.

One-time setup

  1. Open PowerShell in this folder and run: scripts\setup-wsl-airplay.ps1
  2. If the script asks you to restart WSL, run: wsl --shutdown Then rerun the setup script.

Start mirroring

scripts\start-airplay.ps1

On the iPhone/iPad: Control Center -> Screen Mirroring -> select the server name.

Tips

  • If the device does not see the receiver, verify WSL mirrored networking was enabled and allow UDP 5353 in Windows Firewall.

  • If it appears but fails to connect, open UDP/TCP 35000-35002 in Windows Firewall (this is the default port range).

  • Default is low latency with hardware decoding.

  • If audio crackles or drifts, try: scripts\start-airplay.ps1 -UseVsync scripts\start-airplay.ps1 -UseVsync -SoftwareDecode

Opening the ports locally

Run in an elevated PowerShell:

New-NetFirewallRule -DisplayName "WSL AirPlay TCP" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 35000-35002 New-NetFirewallRule -DisplayName "WSL AirPlay UDP" -Direction Inbound -Action Allow -Protocol UDP -LocalPort 35000-35002 New-NetFirewallRule -DisplayName "WSL AirPlay mDNS" -Direction Inbound -Action Allow -Protocol UDP -LocalPort 5353

What gets installed in WSL

  • UxPlay
  • Avahi (mDNS/DNS-SD)
  • GStreamer plugins for audio/video
S
Description
No description provided
Readme 29 KiB
Languages
PowerShell 87.1%
Shell 12.9%