Skip to content

Satellite passes

An Iridium satellite is overhead for a few minutes at a time. The pass scheduler predicts when, and moves the bridge through four modes so that power and airtime are spent inside a window rather than against a closed sky.

The state machine is described on the pass scheduler page. This page is how to configure and read it.

Tell it where you are

Predictions need a ground position. Register one or more locations:

GET    /api/iridium/locations
POST   /api/iridium/locations
DELETE /api/iridium/locations/{id}

Without a location the scheduler stays idle and the gateway falls back to fixed intervals. This is the single most common reason the scheduler reports nothing useful.

Tell it where the satellites are

Orbital elements come from Celestrak's Iridium NEXT set and are refreshed daily. They are cached in the bridge's database, so a bridge that loses internet keeps predicting from the last set it has. Predictions degrade slowly as elements age rather than failing.

GET  /api/iridium/passes           upcoming passes
POST /api/iridium/passes/refresh   fetch new elements now

Each pass reports its satellite, acquisition and loss of signal times, duration, peak elevation and azimuth.

The four modes and what changes

GET /api/iridium/scheduler reports the current mode, the next transition and the upcoming passes.

ModeWhenMT pollDead letter retry
Idleno pass within the pre-wake window900 s5 min
Pre-wakea pass starts within the window60 s60 s
Activebetween acquisition and loss of signal20 s30 s
Post-passgrace period after loss of signal30 s30 s

Pre-wake exists because a cold modem takes time to acquire. Waking at the moment the satellite arrives means missing the start of a window that may only last a few minutes.

Post-pass exists because loss of signal is predicted, not observed. The grace period covers a pass that runs slightly longer than the prediction rather than cutting a send off mid-message.

The knobs

SettingDefaultWhat it does
pre_wake_minutes5how early to warm the modem
post_pass_grace_sec120how long to keep going after predicted loss of signal
min_elev_deg5passes below this are ignored
idle_poll_sec900mobile terminated poll interval between passes
active_poll_sec20poll interval while a satellite is overhead

Raising min_elev_deg gives you fewer, better passes. Lowering it gives you more attempts at worse geometry, which on a paid bearer usually costs more than it delivers.

Not every pass is worth the same

Passes are scored, and the score is visible in the scheduler response along with a high, medium or low priority. Three things go into it:

InputWeight
peak elevation50%
historical success at similar elevations40%
duration10%

The historical component is what makes this local rather than theoretical. The bridge groups its own past attempts into 15 degree elevation bands and uses what actually worked from your site, with its terrain and its antenna. A new installation starts from an elevation based prior and gets more accurate as it accumulates history.

This is scheduling, not queueing

The scheduler decides when the window is. It does not decide what goes into it. What is sent, in what order, and what happens when a send fails, is the dead letter queue, and the burst queue is what packs several small messages into one frame when a window opens.

Made by MeshSat