- Logger started
- Not yet
- Work hours
- 8am–6pm, weekdays
- Thresholds version
- 2026-10-05
- Data license
- CC BY 4.0
The setup
| Item | Value |
|---|---|
| Connection | Not set yet |
| Region | Not set yet |
| Logger hardware | Not set yet (planned: a Raspberry Pi or mini PC on Ethernet) |
| Probe targets | Planned: three neutral anycast DNS resolvers |
| Connected by | Ethernet, so home Wi-Fi problems don’t count against the satellite link |
What each minute records
- Latency: the median round trip of about 20 pings per target, sent in a short burst at the start of the minute.
- Jitter: the average change between consecutive pings to the same target.
- Loss: the share of pings in the burst that never came back.
- Outage seconds: a separate check every second; a second counts as down when none of the targets answers. Gaps of 2 seconds or more go into a separate outages file with start and end times.
- Dish statistics (when available): the dish’s own ping latency, drop rate and obstructed share, read through its local interface. The Starlink app shows similar statistics (The Starlink app's Statistics page shows speed, uptime, latency, outages and alerts (when on the Starlink router).).
- Speed: once an hour, an upload and download test to a server we control.
IT For your IT person: file format
Minute file columns: ts, latency_ms, jitter_ms, loss_pct, outage_s, dish_latency_ms, dish_drop_pct, obstructed_pct, down_mbps, up_mbps, test. ts is ISO 8601 local time with UTC offset. Outage file: start, end, seconds. Percentiles are nearest-rank. A workday counts only if at least 80% of its work-hour minutes were logged; a month is indexed only with 20+ counted workdays.
How we grade
These cut-offs are ours. We based the call thresholds on Microsoft’s Teams network test, which passes latency under 100 ms, jitter under 30 ms and loss under 1%. For voice, the ITU’s G.114 guidance keeps one-way delay under 150 ms.
| Verdict | Rule |
|---|---|
| Video calls | A work-hour minute counts as call-ready when every probe target answered, round-trip latency was at most 100 ms, jitter at most 30 ms and loss at most 1%. OK = at least 99% of work-hour minutes call-ready; Degraded = 95–99%; Would drop = under 95%. A minute counts as a freeze or drop when it had 2+ seconds of outage or 10%+ loss. |
| VPN sessions | VPN sessions usually survive a few seconds of loss but not a minute. OK = an outage longer than 60 s on at most 1 workday in 10; Degraded = up to 1 every 2 workdays; Would drop = more. |
| Uploads | Graded on the slowest 10% of work-hour upload tests (p10), because a call needs the floor, not the average. OK = p10 at least 10 Mbps; Degraded = 4–10 Mbps; Would drop = under 4 Mbps. |
| Gaming | Graded on evening (6–11pm) p95 latency. OK = at most 60 ms; Degraded = 60–100 ms; Would drop = over 100 ms. Competitive shooters want less than any satellite link gives; see the gaming guide. |
The report also shows a call-quality estimate (MOS) per hour, on the 1–5 scale defined in ITU-T P.800 (5 score is “excellent”). We compute it from latency, jitter and loss with a simplified E-model. It is an estimate for comparing hours, not a recording of real calls.
What it can’t tell you
- Your area. One dish under one patch of sky. Satellite latency also shifts every 15 s as satellites hand over (APNIC measurement), so short windows vary even on one dish.
- Real call quality. We estimate it from network numbers; we don’t record calls.
- Wi-Fi in your house, other plans (Mini, Roam, Priority) or other providers.
- The cause of every outage. Weather, obstructions, maintenance and network events look the same to a ping. Where the dish reports obstruction, we show it.
Publishing and corrections
Each month’s CSV is published as logged. We never edit a published file; if something was wrong (a logger bug, a mislabeled day), we publish a corrected file next to it and log the change on the corrections page. Days the owner wasn’t working, or the logger was being changed, are excluded and listed.
Run the same logger
- Use any always-on Linux box (a Raspberry Pi is fine) on Ethernet to your router, with the time zone set to your home’s.
- Download the logger (one Python file, standard library only) and its service file, and run its self-test, then one minute:
python3 workday_logger.py --self-testthen--once. - Run it as a service. Optional:
pip install starlink-grpc-toolsfor dish statistics, and an iperf3 server you control for hourly speed tests. - After a month you have the same two CSV files we publish. Our report code is the same for everyone’s data.
Questions people ask
Is this data from a rural home?
The owner hasn’t stated it yet; until they do, the report won’t call it rural.
Why not just run speed tests?
A speed test measures a few seconds of throughput. Calls and VPNs fail on short outages, jitter and loss between tests. The logger checks every minute and runs a speed test once an hour on top.
Can I run the same logger?
Yes. It’s a single Python file using standard tools (ping, and optionally iperf3 and the open-source starlink-grpc-tools). It only reads; it never changes your dish or router settings and sends nothing anywhere. Setup notes are below.
Sources
- Microsoft Learn – Microsoft 365 network connectivity test tool, checked Oct 5, 2026
- ITU-T G.114 (05/2003) One-way transmission time, checked Oct 5, 2026
- ITU-T P.800 (08/96) Methods for subjective determination of transmission quality, checked Oct 5, 2026
- How can I monitor my Starlink's performance? (Starlink support), checked Oct 5, 2026
- Geoff Huston (APNIC), ISP Column: A Transport Protocol's View of Starlink (May 2024) (secondary), checked Oct 5, 2026