Historical UKHAS balloon practice
8-bit RTTY
The UKHAS guide describes the implementation as RTTY at various baud rates and notes that better transports may be preferable.
Packet image format
Slow Scan Digital Video is a packetised digital image format used around high-altitude balloon and amateur-satellite experiments. It belongs beside the SSTV reference library, but it is not an analog SSTV mode: the picture is JPEG-derived data carried in packets, not a line-by-line audio tone raster.
Normal SSDV packets are 256 bytes: a 15-byte header, 205 payload bytes, 4 CRC32 bytes, and 32 Reed-Solomon parity bytes.
| Layout | Type | Header | Payload | CRC | FEC | Typical use |
|---|---|---|---|---|---|---|
| Normal FEC | 0x66 | 15 bytes | 205 bytes | 4 bytes at 220-223 | 32 bytes at 224-255 | Unreliable RF links where byte errors are expected but framing can usually be recovered. |
| No-FEC | 0x67 | 15 bytes | 237 bytes | 4 bytes at 252-255 | none | Links with their own robust FEC layer, or controlled fixtures where packet overhead matters. |
This table follows the public UKHAS and Habhub packet map for the normal 0x66 layout. The no-FEC 0x67 layout keeps the same 15-byte header but expands payload to 237 bytes and moves CRC32 to bytes 252-255.
| Offset | Size | Name | Value | Meaning |
|---|---|---|---|---|
| 0 | 1 | Sync byte | 0x55 | Packet marker. A stream may contain extra sync bytes before a packet. |
| 1 | 1 | Packet type | 0x66 or 0x67 | 0x66 identifies a normal packet with Reed-Solomon parity; 0x67 identifies the no-FEC layout. |
| 2 | 4 | Callsign | Base-40 | Base-40 encoded callsign, normally derived from an alphanumeric callsign up to six characters. |
| 6 | 1 | Image ID | 0-255 | Sender-selected image identifier. Receivers use it with the callsign to separate one image from the next. |
| 7 | 2 | Packet ID | big-endian | Packet sequence number for the current image, beginning at 0. |
| 9 | 1 | Width | pixels / 16 | Image width in MCU block units. A zero value is invalid. |
| 10 | 1 | Height | pixels / 16 | Image height in MCU block units. A zero value is invalid. |
| 11 | 1 | Flags | 00qqqexx | Quality, end-of-image, and chroma subsampling flags. |
| 12 | 1 | MCU offset | 0-204 or 0xFF | Byte offset inside the payload where the first complete MCU begins, or 0xFF when no complete MCU starts in this packet. |
| 13 | 2 | MCU index | big-endian or 0xFFFF | Index of the MCU pointed to by MCU offset, or 0xFFFF when no complete MCU starts in this packet. |
| 15 | 205 | Payload | JPEG scan data | Normal-mode payload bytes. No-FEC packets extend the payload to byte 251. |
| 220 | 4 | CRC32 checksum | big-endian | CRC over the packet type through the end of the payload in the active layout. |
| 224 | 32 | Reed-Solomon parity | normal mode only | Parity bytes for normal packets. Not present in no-FEC packets. |
| Bits | Name | Meaning |
|---|---|---|
| 7-6 | Reserved | Reserved bits, normally zero. |
| 5-3 | JPEG quality | Three-bit quality field stored as quality XOR 4, representing levels 0-7. |
| 2 | EOI | End-of-image flag, set only on the last packet for the image. |
| 1-0 | Subsampling mode | Published mode values identify 2x2, 1x2, 2x1, or 1x1 MCU/chroma layouts. |
The transport reference covers the app's AFSK/AX.25, G3RUH 9600, GFSK, AO-40 BPSK, IL2P, Slow FSK and I/Q search profiles. It separates complete SSDV image examples from telemetry and framing fixtures.
Download complete FEC and no-FEC images, playable audio, packet files and reconstructed JPEGs.
Historical UKHAS balloon practice
The UKHAS guide describes the implementation as RTTY at various baud rates and notes that better transports may be preferable.
Amateur packet-radio carriage
SSDV packets can be placed inside packet-radio frames when the modem/framing layer supplies reliable packet boundaries.
Audio-path packet experiments
Useful for sound-card tests and simple amateur packet links, usually with AX.25 framing around the SSDV bytes.
Satellite-style packet downlinks
Higher symbol rate paths need tighter frequency control and more careful demodulator recovery than basic AFSK audio.
Satellite payload-specific streams
Some spacecraft wrap image packets in AO-40/FUNcube-style, IL2P, or other mission-specific telemetry/FEC framing before the SSDV layer is visible.
Packet offsets, JPEG constraints, Reed-Solomon notes, lost-packet behaviour, and historical update notes.
Reference command-line encoder/decoder and README. The GitHub copy is archived and points to Codeberg as the continuing home.
Packet-size constants, header length, CRC length, Reed-Solomon length, callsign limit, packet types, and JPEG processor state.
Public packet field table and normal/no-FEC offset summary.
Local Swift implementation notes are used only as implementation context; upstream protocol documents remain the public authority.