Where the numbers come from
AirLink's figures come from three sources, and each is labelled here:
- Computed from the wire format, exactly.
- Measured in one instrumented session on 5 September 2026: a MacBook Pro, an iPhone 12 Pro Max and an iPad Air (5th generation) in one room, all on one Wi-Fi network, with lab mode on for 21 minutes on all three and 10,143 events recorded.
- Simulated on a bench, for the echo canceller.
In the measured session the Wi-Fi transport carried almost everything. A Bluetooth link was up for about 5 percent of the session on two devices and never on the third. The figures describe the mesh running over a local network, not over Bluetooth alone.
Voice
| Figure | Value | Source |
|---|---|---|
| Opus payload per 20 ms frame | About 60 bytes at 24 kbit/s | Computed |
| Voice frame on the mesh | 121 bytes: 41 header, 4 sequence, 60 audio, 16 tag | Computed |
| On-air rate | 48.4 kbit/s at 50 frames per second | Computed |
| Same speech uncompressed | 384 kbit/s | Computed |
| Encoder cadence | 50.002 frames per second: 54,600 frames in 1,092 s over 11 calls | Measured |
| Frames received against sent | 53,193 of 54,797, a loss of 2.9 % in aggregate | Measured |
| Encoded frame size bound | Under 200 bytes per frame and under 8 kB per second | Unit test |
Per-direction loss is not reported: each device sampled its counters every two seconds on its own clock, which puts about a hundred frames of skew on any one pair. The instrument now records totals when each call ends.
Messages
| Figure | Value |
|---|---|
| Probes delivered to present devices | 1,000 of 1,000, each acknowledged exactly once |
| Pairs probed | Mac to iPad 200, Mac to iPhone 400, iPad to Mac 200, iPad to iPhone 200 |
| Probe rate | Bursts of 200 at four per second, sealed and receipted like text |
| Call signalling delivered | 72 of 95, losses clustered in the three failed calls |
The 1,000 probes were sent during the two calmest minutes of the session, with no link coming up or going down, and the iPhone's own transmit path was not probed. A further 400 probes went to a stale contact that was no longer any device in the room; none arrived, and they are excluded.
Latency
Sender to receiver, paired by message identifier on the collector's clock, 1,075 messages.
| Path | Samples | Median | 90th percentile | Maximum |
|---|---|---|---|---|
| One hop, no call running | 881 | 34 ms | 129 ms | 422 ms |
| Two hops, relay forced | 119 | 102 ms | 237 ms | |
| One hop, while another pair was on a call | 75 | 34 ms | 219 ms | 859 ms |
A relay roughly triples the median. Clocks were agreed with each device over a round trip of 35 to 42 ms, and re-measurements disagreed by up to 13 ms, which bounds the residual error at about that size.
The cost of flooding
With three devices, every message to a present recipient was relayed exactly once, by the one device that was neither sender nor recipient, in 1,000 of 1,000 cases. Every message to the absent contact was relayed twice, by both others, in 400 of 400. The 400 probes to one stale contact cost 1,200 sealed packets on the air, 37.5 percent of the session's probe traffic, for no delivery.
Of 3,066 relays recorded, 119 delivered a message before its direct copy did, landing a median of 3 ms earlier. A relay cannot know at the time whether its copy is redundant.
Calls
| Figure | Value |
|---|---|
| Calls placed and connected | 14 placed, 11 connected |
| Invite to ring | Median 22 ms, range 17 to 154 ms, in 11 of 15 ring events |
| Accept to connected at the caller | Median 360 ms, range 214 to 1,004 ms, 11 calls |
| Connected to first audio frame | Median 95 ms, 21 directions |
| Calls that started on the mesh before the direct road took over | 9 of 11, after 5 to 36 frames |
| Longest handover after first audio | 193 ms |
| Calls demoted back to the mesh | None |
| App launched into an active ring, to ring shown | 0.7 s |
Of the three calls that failed, two coincided with a burst of links coming up and going down, at 9.5 times the session's base rate. The third exposed a signalling defect, a late invite ringing an ended call, which is fixed in the current build.
Echo cancellation
The software canceller was run against a synthetic room impulse response with the benchmark in the test suite, over 400 blocks of 20 ms. It reached 30 dB of echo return loss enhancement after 4.48 seconds and 33.1 dB at the end of the run. This is a simulation, not a device recording, and it was recorded before the most recent change to the canceller's adaptation rule.
In the measured session the canceller ran on one Mac and removed nothing: its adaptation gate compared microphone power with far-end power as if they shared a gain, and never let the filter learn. The gate now judges each block by whether the filter's own model explains it. A device measurement of the corrected filter has not been made.
Tests
The package has 188 unit tests and one benchmark that runs only when AIRLINK_BENCH is set. They cover the packet format, reassembly, routing, the outbox, sealing, identity persistence, the call number, call keys, the replay window, the voice codec, the echo canceller, the chat store and the finder's signal maths. Multi-hop relaying is tested over an in-memory transport. The radio layers themselves are not covered by tests.
What has not been measured
- Bluetooth alone. No session has run with Wi-Fi off, which is the case the mesh was designed for.
- Range. No distance measurements for either radio.
- Scale. Nothing beyond three devices, so the hop limits of 8, 6 and 5 are argued, not validated.
- Energy. The session recorded two battery readings quantised to 5 percent, which is not a measurement.
- The corrected echo canceller on a device.
- Comparison with other systems. No baseline run against a comparable messenger.