OrbitDeck can record a pass, decode SSTV, and work full-duplex FT4 on a linear transponder — all from the received audio of a USB audio interface or, experimentally, an Icom network-audio radio.
The recording, SSTV and FT4 cards appear on Home when audio is available: a class-compliant USB audio interface (via USB-C or the camera adapter), or an Icom network-audio radio (RS-BA1) that is configured and connected. Connect your radio's receive audio to the interface's input; for FT4, connect the interface's output to the radio's audio-in.
In Settings → Audio features each of the three cards (Pass recording, SSTV, FT4) has an independent setting:
The SSTV and FT4 cards show a live input-level meter with a gain slider (and FT4 adds an output/TX level). Set the input so the meter rides in the green — too low buries the signal in noise, too high (red) clips and hurts decoding. The SSTV level control lives in Setup & calibration and is available before you start decoding. Your gain settings are saved and restored across launches for each feature.
Recording, SSTV, FT4, CAT and the rotator are all app-wide — they keep running when you navigate to other screens, and audio modes keep decoding/recording with the screen locked or the app backgrounded during a pass. If a connection drops while you're away (iOS reclaims Bluetooth and network sockets when an app is suspended), OrbitDeck re-establishes it when you return.
The Home Pass recording card streams the received audio to a compressed AAC .m4a file tagged with the satellite and UTC time — roughly a fifteenth the size of uncompressed WAV, so a full pass is a few MB. Recordings are listed on the Log screen with playback and share.
The Home SSTV card decodes the video subcarrier live, auto-detecting the mode from the VIS header (or you can force a mode). Supported modes include Robot 36/72, Scottie S1/S2/DX, Martin M1/M2, Wraase SC2-180 and the full PD series (PD 50/90/120/160/180/240/290). The decoder locks onto the horizontal sync pulse on every line so the picture stays aligned across long modes.
Doppler-aware decoding. A fast LEO on 70 cm shifts the whole audio band during the pass, which slants the picture and casts its colors. OrbitDeck's Auto-tune (on by default) reads each line's sync pulse to measure that offset and correct it continuously, so the image stays straight and true-colored as the satellite moves. When you also have rig control connected, the app feeds its live Doppler tuning forward into the decoder so the dial steps it makes mid-image don't tear the picture (important for the long PD modes) — with no rig connected the decoder is unaffected.
Live calibration controls let you clean up a picture as it builds — slant (clock correction), tuning (receiver-offset), H-shift (horizontal position), and contrast/saturation. Each adjustment re-renders the current image instantly. Decoded images are saved to the dedicated SSTV Images screen (Operating Tools), where you can view them full-screen, share, delete (single or multi-select), or export to your iOS photo library.
Fixing an image after the pass. Every saved image can be cleaned up from its viewer. Fix image straightens a leftover slant and adjusts brightness/contrast/saturation on the picture itself. Re-decode from recording goes further: OrbitDeck keeps the pass audio for each decode, so it can rebuild the image from scratch with different slant and Auto-tune settings — recovering geometry and the Doppler color cast that a picture-only edit can't. Both save a new copy and leave the original untouched.
On a linear transponder you can hear your own downlink while transmitting, so OrbitDeck runs FT4 full duplex: it decodes the downlink and transmits the uplink at the same time, on alternating 7.5-second slots. The card shows a live spectrum waterfall (with a TX-frequency marker), a scrolling WSJT-X-style decode panel (your own transmissions and any decode of your own signal are color-coded), and a countdown to the next slot. Tap Call CQ to start calling, or tap a decoded station to answer it — the auto-sequencer runs the exchange and logs the QSO. Set your TX audio frequency to drop your signal into a clear spot on the waterfall. A live Doppler-corrected RX/TX frequency readout under the pass line shows exactly where to set the radio, so you can operate FT4 by hand even without CAT. Signal reports (SNR) are calibrated to read close to WSJT-X. FT4/FT8 encode and decode use the open-source, MIT-licensed ft8_lib.
IC-9700 owners: there's a step-by-step guide to working FT4 on the 9700 entirely over its network connection (CAT and audio, no PC or USB interface) — see FT4 on the IC-9700 over the network.
The downlink Doppler drift is common to every signal on a linear transponder, so OrbitDeck flattens it in the audio domain. Two toggles under the FT4 card's setup — Doppler-correct RX audio and Doppler-correct TX audio — are on by default. RX de-chirps each received 7.5-second slot before decoding; TX pre-compensates your transmitted burst so the signal the satellite hears stays on one frequency. Both need a configured transponder.
While FT4 is running with a connected CAT radio, OrbitDeck holds the dial steady and only re-tunes at slot boundaries (between the receive and transmit slots) rather than chasing Doppler continuously — a mid-slot re-tune would shift the whole coherent burst and break the decode. Because the dial is frozen for the slot, the audio-domain correction isn't optional polish: it's what removes the within-slot drift. For exactly how this works — and why the transmit correction depends on your transponder's inversion — see the deep dive below.
On a properly-netted linear transponder your own signal comes back at about the audio frequency you transmit. So while you work FT4 full duplex, OrbitDeck can measure where your own decoded signal actually lands and fold the difference into this satellite's saved calibration, refining it a little on every decode of your own signal — so both your receive and everyone else's line up better as the pass goes on. It's opt-in (Settings → Audio features → Auto-calibrate transponder from FT4), applies to linear transponders only, and is damped and clamped so a single stray decode can't throw the calibration off. You can review or clear the result on the Calibrations screen.
OrbitDeck can upload the FT4 stations it decodes to PSKReporter so they show on its public map. This is opt-in — turn on Settings → PSKReporter → Upload FT4 reception reports (your callsign and grid must be set). The reported frequency is the absolute downlink RF — the Doppler-corrected downlink dial from CAT when connected, otherwise the transponder's downlink center — plus the decode's audio offset. Nothing is sent unless you enable it; see the privacy policy.
How OrbitDeck keeps a coherent FT4 burst readable through the fast Doppler of a low-earth-orbit pass. This section is for the curious; you don't need any of it to operate.
An FT4 transmission is a continuous-phase 4-GFSK burst: 105 symbols at a 0.048 s symbol period (≈4.48–5 s on the air), with the four tones spaced 20.83 Hz apart. The decoder recovers each symbol by finding which tone bin holds the energy, coherently, across the whole burst. If the signal's frequency slides during the burst, each tone smears across bins and the decode collapses.
On a LEO pass the Doppler shift is largest and changing fastest near closest approach (TCA). On 70 cm the total shift swings several kHz across a pass; the rate near TCA can be well over 10 Hz/s. Over a single ≈5 s burst that's tens of Hz of drift — several tone spacings. Left uncorrected, nobody decodes you (and you can't decode the bird).
Both come straight from the ephemeris. With range rate ṙ (positive = receding) and carrier f, the shift is −f·ṙ/c. OrbitDeck samples this from the same SGP4 propagator that drives the rest of the app.
Two reasons. A CAT dial over CI-V/BLE can't be nudged smoothly or often enough to track a 10 Hz/s slope. More fundamentally, any re-tune during the burst shifts the entire coherent signal — the very thing the decoder can't tolerate. So OrbitDeck splits the labor:
Over one ≈5 s burst the drift is very nearly linear, so a straight-line (constant-slope) correction is more than good enough. OrbitDeck samples the ephemeris shift at the slot start and one burst-length later and uses the slope between them.
Because the downlink drift is common to the whole passband, one correction fixes every signal at once. OrbitDeck takes the recorded 7.5 s slot, forms its analytic (complex) signal with a Hilbert transform, and multiplies by a complex exponential whose frequency ramps at the negative of the downlink slope — a de-chirp — then hands the flattened audio to the decoder. The effect is dramatic near TCA: toggling Doppler-correct RX audio off there visibly thins out the decodes.
The goal on transmit is that the frequency the satellite receives holds still, so you sit on one spot in the passband for everyone listening. With the dial frozen for the slot, that has to be done in the transmitted audio. The sign of the correction depends on which sideband the uplink uses:
+ audio. To cancel a rising uplink Doppler the audio must fall — offset = −slope · t.− audio, so the audio→RF mapping flips and the sign of the correction flips with it — offset = +slope · t.FT4's signal occupies only ≈5 s of the 7.5 s slot, leaving dead air at the end. OrbitDeck uses that tail: on a transmit slot it steps the dial and keys PTT before the boundary, so the burst begins right on time instead of after the CAT round-trips. Receiving stations see this as your dT — the offset of your signal from the slot start — and it should sit well under a few tenths of a second. (Earlier builds could start ≈0.8 s late, which both hurt your decodes and ate into the decode window.)
On a connected CAT radio, one FT4 cycle looks like this: at the slot boundary the dial steps to the new coarse Doppler and then holds; on receive slots the recorded audio is de-chirped and decoded; on transmit slots PTT is pre-armed in the previous slot's dead air and the burst is synthesized with a sideband-correct pre-chirp so the satellite hears a steady tone. The dial handles the big, slow, between-slot motion; the audio handles the small, smooth, within-slot motion. Neither double-corrects the other, because the dial never moves inside a slot.
When a CAT radio is connected, OrbitDeck keys transmit over CAT automatically — CI-V, Yaesu, Kenwood, rigctld, and Icom network. If your radio has no CAT PTT, use VOX or key manually: the FT4 card shows a prominent TRANSMIT NOW indicator at the start of each of your slots so you key in time.
These features are new in 0.9.14. SSTV and FT4 decode from a USB audio interface have been validated on-air; the SSTV calibration controls help with marginal or slanted pictures. The Icom network-audio path is experimental and best validated on your own radio — it now re-establishes automatically if the RS-BA1 link drops and reconnects mid-pass, rather than going silent for the rest of the pass. Feedback from on-air use is welcome.
Audio is captured only while you record or decode, and stays on your device (SSTV images are saved to the app; you choose when to export to Photos). See the privacy policy.