Blackwire

FLEX over Iridium — Test Report

Performance characterization of FLEX tactical video over the Iridium L-band SATCOM link using NAL Certus 100 modems (Skybridge, Quicksilver).

[[UNCLASSIFIED // BLACKWIRE LLC PROPRIETARY]]  ·  Distribution: [[NAL Research / internal]]
Report ID
[[BW-TR-IRID-001]]
Revision
[[A — draft]]
Date
[[2026-06-19]]
Author
John Dames / CTO
Product
FLEX (BW-FLEX-001)
FLEX build
v1.0.0 BETA
Network
Iridium Certus 100
Status
In progress

01 · Summary

Findings to date

The headline result: FLEX delivered usable video across the Iridium link in every run despite terrible network conditions — packet loss around ~87% and goodput at the very bottom of the Iridium envelope. The link, not the encoder, was the limiting factor; FLEX's error-resilient AV1 kept the stream up and recovering rather than freezing, so usable video came through where the link alone would say it shouldn't.

Bottom line (Skybridge): measured packet loss ~87%, with delivered goodput only ~3 kbps at the 24 kbps operating rate — well short of the 20–25 kbps target. The link, not the encoder, is the limit. Stream stayed up and recovered rather than freezing — consistent with FLEX's error-resilient AV1 behavior. See Network performance for the link issues.
RunModem ResultStatus
001NAL Skybridge Stayed up through ~87% loss; goodput only ~3 kbps Video pass
002NAL Skybridge [[link-tuning retest — TBD]] Captured
003NAL Skybridge [[result — TBD]] Captured

02 · Test setup

Configuration & topology

[ Camera / source ] ──▶ [ FLEX encoder ] (AV1, ~20 kbps) ──▶ [ NAL Certus 100 modem ] ──▶ Iridium L-band ──▶ [ NAL modem ] ──▶ [ FLEX / player ]
// edit to match the actual TX/RX path, transport (UDP/RTP), and any relay

FLEX encoder baseline

FLEX Manager · encodingJSON
codec: av1
bitrate: [[15 and 20]] kbps (CBR)
width × height: [[640 × 360]]
fps: [[15]] · quality: [[6]]
auto frame skip: [[on]]

Documented tuning band is 10–25 kbps. Replace with the exact settings used per run.

Encoder mechanism (for the record)

FLEX uses AV1 with error-resilient coding and golden-frame anchoring on a 1-second cadence: key-int-max=30 (keyframe per second at 30 fps), gfi=30 (golden-frame anchor), keyframe/golden bitrate boosts, no B-frames, and strict VBV. On packet loss the decoder conceals and recovers at the next keyframe or golden anchor — bounded sub-second recovery rather than the multi-second freeze legacy H.264 produces on the same loss.

03 · Network performance

Iridium link issues

The Iridium link was the limiting factor throughout testing. Loss was high and strongly variable, and usable throughput sat at the bottom of the Iridium envelope. This section consolidates link behavior across multiple test runs.

Packet loss ~87% 76–100%, bursty
Usable throughput ~3 kbps goodput (24 offered)
Latency (RTT) ~3.2 s 2.7–4.6 s, rises under load
Link stability 47 drops in 3-min run · longest ~13 s

Observed issues

  • Packet loss measured around ~87% (10-second bins ranged ~76–100%), swinging over short, bursty windows.
  • Usable throughput sat at the rock bottom of the Iridium envelope. A constant-rate 24 kbps UDP probe overran the uplink: ~87% loss, almost entirely upstream, with delivered goodput only ~3 kbps — nowhere near the 20–25 kbps target, and pointing to the terminal transmit (uplink) path as the binding constraint.
  • Frequent dropouts — a ~3-min probe logged 47 distinct loss bursts, the longest ~13 s, with the link recovering and traffic resuming after each. RTT climbed from ~2.7 s to ~4.6 s as the uplink buffered under load.

Loss / throughput over time

Drop a loss / throughput graph here
net/iridium-loss.png
Fig 1. Packet loss (red) and delivered throughput (teal) over a ~3-min Skybridge capture — constant-rate 24 kbps UDP probe (irtt → cloud endpoint). Loss held ~80–100% with goodput pinned at ~2–6 kbps, i.e. the link saturated at the offered rate.

04 · Test runs

Per-run results

RUN 001

NAL Skybridge — initial characterization

June 18, 2026
FLEX · encoder as runconfig
codecav1
bitrate[[20]] kbps CBR
error-resilienton
resolution[[432×240]]
fps / quality[[10 / 8]]
frame skip[[auto]]
Drop the capture here
clips/run001-skybridge.mp4

Observations

  • Live video from USB camera.
  • Stream stayed up through loss bursts and recovered rather than freezing, consistent with FLEX's error-resilient AV1 behavior.
  • Best network performance so far.
RUN 002

NAL Skybridge — link-performance tuning

June 18, 2026
FLEX · encoder as runconfig
codecav1
bitrate[[20]] kbps CBR
error-resilienton
resolution[[640×480]]
fps / quality[[15 / 8]]
frame skip[[auto]]
Drop the capture here
clips/run002-skybridge.mp4

Observations

  • Source — video file of ISR source (no camera).
  • Network performance was spottier than the previous run, but video was usable.
RUN 003

NAL Skybridge — run 3

June 16, 2026
FLEX · encoder as runconfig
codecav1
bitrate[[15]] kbps CBR
error-resilienton
resolution[[320×240]]
fps / quality[[15 / 8]]
frame skip[[auto]]
Drop the capture here
clips/run003-skybridge.mp4

Observations

  • Original run using a live USB camera on a moving vehicle.
  • Extremely bad network performance, necessitating lower resolution.