Back to browse
GitHub Repository

Simulate real airplane WiFi on macOS — packet-level network conditioning calibrated from actual flights

3 starsSwift

AirplaneMode – Simulate realistic airplane WiFi on macOS

by jlreyes·Apr 1, 2026·5 points·4 comments

AI Analysis

●●●BangerBig BrainNiche GemWizardry

Log-normal jitter model beats Network Link Conditioner's fixed delay for realistic satellite WiFi.

Strengths
  • Log-normal jitter distribution matches actual flight measurements, not uniform noise.
  • MASQUE relay at UDP level means HTTP/3 and QUIC congestion control respond naturally.
  • No root required with .mobileconfig domain scoping leaves rest of network unaffected.
Weaknesses
  • macOS-only limits audience; Windows and Linux developers can't use it.
  • Very niche use case — only matters if you specifically test airplane connectivity.
Target Audience

macOS developers testing apps under poor network conditions

Similar To

Network Link Conditioner · comcast · Clumsy

Post Description

I needed to test how my app performed on airplane WiFi and found that existing tools (Network Link Conditioner, comcast, Chrome DevTools, etc) weren't sufficient.

AirplaneMode is a macOS CLI and menu bar app that uses a local MASQUE relay to provide:

1. Jitter. All of the mac os network simulators I tried apply a fixed constant delay with no jitter model. Real airplane satellite WiFi follows a log-normal distribution — most packets arrive near base RTT, but a few percent spike to 5-10x. AirplaneMode samples jitter from a log-normal distribution fit to real flight measurements.

2. Userspace, with domain scoping and UDP support. No root required. A .mobileconfig profile routes only matched domains through the relay — the rest of your network is unaffected. The relay operates at the UDP packet level via MASQUE, so HTTP/3 and QUIC congestion control respond naturally to simulated conditions.

3. Realistic Profiles. Airlines use performance-enhancing proxies that inflate speed test results. Presets are calibrated from real flights using TLS handshake timing, throughput, and traceroute data collected in the air.

Existing profiles (looking for help in calibrating more):

1. Turkish Airlines JFK→IST (Panasonic Ku-band GEO): ~870ms RTT, 86 KB/s, 2.3s jitter P99. 2. JetBlue domestic (Viasat Ka-band): ~593ms RTT, 3.3 Mbps. 3. American Airlines LGA→EYW (Intelsat GEO): ~715ms RTT, 4.2 Mbps.

If you’re on a flight with Wifi, the repo includes a script to grab traces and a GitHub issue template for submitting them. Just run `sudo ./scripts/flight-bench.sh` a few times during the flight and submit the JSON files. We'll fit a profile from your data.

Similar Projects