{
  "title": "DRM robustness mode reference",
  "system": "Digital Radio Mondiale",
  "statusDate": "2026-09-01",
  "boundaryNote": "DRM A-E are robustness modes of the Digital Radio Mondiale COFDM system. They are useful to digital image and digital SSTV operators, but they are not an analog SSTV mode family.",
  "modeNameNote": "In this reference, Mode A through Mode E mean the ETSI DRM robustness modes. Amateur digital SSTV tools may use DRM-derived profiles in narrower audio channels, so always check the exact software profile before transmitting.",
  "sourceBasis": "ETSI ES 201 980 V4.3.1 tables 1, 2, 47, 48, 49, H.1, H.2, H.3, and J.1-J.5; DRM Consortium technology overview; community EasyPal notes for the SSTV relationship.",
  "channelFamilies": [
    {
      "name": "DRM30",
      "modes": [
        "A",
        "B",
        "C",
        "D"
      ],
      "frequencyRange": "Broadcast bands below 30 MHz",
      "nominalBandwidthsKhz": [
        4.5,
        5,
        9,
        10,
        18,
        20
      ],
      "notes": "Designed for LF, MF, and HF planning, including half-channel and double-channel variants."
    },
    {
      "name": "DRM+",
      "modes": [
        "E"
      ],
      "frequencyRange": "VHF broadcast bands below 300 MHz",
      "nominalBandwidthsKhz": [
        100
      ],
      "notes": "Mode E uses the DRM multiplex and signalling scheme with VHF-oriented OFDM parameters."
    }
  ],
  "spectrumOccupancy": [
    {
      "id": "0",
      "drm30BandwidthKhz": 4.5,
      "drmPlusBandwidthKhz": 100,
      "notes": "Half 9 kHz channel for DRM30 A/B; 100 kHz channel for DRM+ Mode E."
    },
    {
      "id": "1",
      "drm30BandwidthKhz": 5,
      "drmPlusBandwidthKhz": null,
      "notes": "Half 10 kHz channel for DRM30 A/B."
    },
    {
      "id": "2",
      "drm30BandwidthKhz": 9,
      "drmPlusBandwidthKhz": null,
      "notes": "Nominal 9 kHz channel for DRM30 A/B."
    },
    {
      "id": "3",
      "drm30BandwidthKhz": 10,
      "drmPlusBandwidthKhz": null,
      "notes": "Nominal 10 kHz channel for DRM30 A/B/C/D."
    },
    {
      "id": "4",
      "drm30BandwidthKhz": 18,
      "drmPlusBandwidthKhz": null,
      "notes": "Double 9 kHz channel for DRM30 A/B."
    },
    {
      "id": "5",
      "drm30BandwidthKhz": 20,
      "drmPlusBandwidthKhz": null,
      "notes": "Double 10 kHz channel for DRM30 A/B/C/D."
    }
  ],
  "modes": [
    {
      "id": "A",
      "label": "Mode A",
      "channelFamily": "DRM30",
      "typicalPropagation": "Gaussian channels with minor fading.",
      "operatorUse": "Best capacity choice when the path is comparatively clean, such as stable local or regional MF/HF coverage.",
      "tradeoff": "Small guard interval and narrow carrier spacing maximise useful rate, but give less margin for long multipath and Doppler than B/C/D.",
      "elementaryTimeUs": 83.3333,
      "usefulSymbolMs": 24,
      "usefulSymbolsT": 288,
      "guardIntervalMs": 2.6667,
      "guardSymbolsT": 32,
      "symbolDurationMs": 26.6667,
      "guardRatio": "1/9",
      "frameDurationMs": 400,
      "symbolsPerFrame": 15,
      "carrierSpacingHz": 41.6667,
      "allowedBandwidthsKhz": [
        4.5,
        5,
        9,
        10,
        18,
        20
      ],
      "carriersByOccupancy": {
        "0": {
          "bandwidthKhz": 4.5,
          "kMin": 2,
          "kMax": 102,
          "unusedCarriers": [],
          "count": 101
        },
        "1": {
          "bandwidthKhz": 5,
          "kMin": 2,
          "kMax": 114,
          "unusedCarriers": [],
          "count": 113
        },
        "2": {
          "bandwidthKhz": 9,
          "kMin": -102,
          "kMax": 102,
          "unusedCarriers": [
            0
          ],
          "count": 204
        },
        "3": {
          "bandwidthKhz": 10,
          "kMin": -114,
          "kMax": 114,
          "unusedCarriers": [
            0
          ],
          "count": 228
        },
        "4": {
          "bandwidthKhz": 18,
          "kMin": -98,
          "kMax": 314,
          "unusedCarriers": [
            0
          ],
          "count": 412
        },
        "5": {
          "bandwidthKhz": 20,
          "kMin": -110,
          "kMax": 350,
          "unusedCarriers": [
            0
          ],
          "count": 460
        }
      }
    },
    {
      "id": "B",
      "label": "Mode B",
      "channelFamily": "DRM30",
      "typicalPropagation": "Time- and frequency-selective channels with longer delay spread.",
      "operatorUse": "General HF/MF robustness mode when fading and moderate multipath are expected.",
      "tradeoff": "Longer guard interval than A improves delay-spread tolerance, with lower service capacity.",
      "elementaryTimeUs": 83.3333,
      "usefulSymbolMs": 21.3333,
      "usefulSymbolsT": 256,
      "guardIntervalMs": 5.3333,
      "guardSymbolsT": 64,
      "symbolDurationMs": 26.6667,
      "guardRatio": "1/4",
      "frameDurationMs": 400,
      "symbolsPerFrame": 15,
      "carrierSpacingHz": 46.875,
      "allowedBandwidthsKhz": [
        4.5,
        5,
        9,
        10,
        18,
        20
      ],
      "carriersByOccupancy": {
        "0": {
          "bandwidthKhz": 4.5,
          "kMin": 1,
          "kMax": 91,
          "unusedCarriers": [],
          "count": 91
        },
        "1": {
          "bandwidthKhz": 5,
          "kMin": 1,
          "kMax": 103,
          "unusedCarriers": [],
          "count": 103
        },
        "2": {
          "bandwidthKhz": 9,
          "kMin": -91,
          "kMax": 91,
          "unusedCarriers": [
            0
          ],
          "count": 182
        },
        "3": {
          "bandwidthKhz": 10,
          "kMin": -103,
          "kMax": 103,
          "unusedCarriers": [
            0
          ],
          "count": 206
        },
        "4": {
          "bandwidthKhz": 18,
          "kMin": -87,
          "kMax": 279,
          "unusedCarriers": [
            0
          ],
          "count": 366
        },
        "5": {
          "bandwidthKhz": 20,
          "kMin": -99,
          "kMax": 311,
          "unusedCarriers": [
            0
          ],
          "count": 410
        }
      }
    },
    {
      "id": "C",
      "label": "Mode C",
      "channelFamily": "DRM30",
      "typicalPropagation": "Similar to Mode B, but with higher Doppler spread.",
      "operatorUse": "Difficult skywave or moving-path cases where Doppler spread matters more than raw throughput.",
      "tradeoff": "Wider carrier spacing improves Doppler tolerance, while capacity drops and only 10/20 kHz occupancies are defined.",
      "elementaryTimeUs": 83.3333,
      "usefulSymbolMs": 14.6667,
      "usefulSymbolsT": 176,
      "guardIntervalMs": 5.3333,
      "guardSymbolsT": 64,
      "symbolDurationMs": 20,
      "guardRatio": "4/11",
      "frameDurationMs": 400,
      "symbolsPerFrame": 20,
      "carrierSpacingHz": 68.1818,
      "allowedBandwidthsKhz": [
        10,
        20
      ],
      "carriersByOccupancy": {
        "3": {
          "bandwidthKhz": 10,
          "kMin": -69,
          "kMax": 69,
          "unusedCarriers": [
            0
          ],
          "count": 138
        },
        "5": {
          "bandwidthKhz": 20,
          "kMin": -67,
          "kMax": 213,
          "unusedCarriers": [
            0
          ],
          "count": 280
        }
      }
    },
    {
      "id": "D",
      "label": "Mode D",
      "channelFamily": "DRM30",
      "typicalPropagation": "Severe delay spread and Doppler spread.",
      "operatorUse": "The most rugged DRM30 robustness mode, selected when long multipath and motion make A/B/C too fragile.",
      "tradeoff": "Very long guard ratio consumes capacity; useful when preserving a low-rate stream matters more than image or audio throughput.",
      "elementaryTimeUs": 83.3333,
      "usefulSymbolMs": 9.3333,
      "usefulSymbolsT": 112,
      "guardIntervalMs": 7.3333,
      "guardSymbolsT": 88,
      "symbolDurationMs": 16.6667,
      "guardRatio": "11/14",
      "frameDurationMs": 400,
      "symbolsPerFrame": 24,
      "carrierSpacingHz": 107.1429,
      "allowedBandwidthsKhz": [
        10,
        20
      ],
      "carriersByOccupancy": {
        "3": {
          "bandwidthKhz": 10,
          "kMin": -44,
          "kMax": 44,
          "unusedCarriers": [
            0
          ],
          "count": 88
        },
        "5": {
          "bandwidthKhz": 20,
          "kMin": -43,
          "kMax": 135,
          "unusedCarriers": [
            0
          ],
          "count": 178
        }
      }
    },
    {
      "id": "E",
      "label": "Mode E",
      "channelFamily": "DRM+",
      "typicalPropagation": "Time- and frequency-selective VHF channels.",
      "operatorUse": "VHF DRM+ operation on a 100 kHz raster with the same DRM multiplex/signalling model and a much shorter frame.",
      "tradeoff": "Higher bandwidth and shorter OFDM timing suit VHF broadcast planning, not narrow HF SSB digital SSTV audio channels.",
      "elementaryTimeUs": 83.3333,
      "usefulSymbolMs": 2.25,
      "usefulSymbolsT": 27,
      "guardIntervalMs": 0.25,
      "guardSymbolsT": 3,
      "symbolDurationMs": 2.5,
      "guardRatio": "1/9",
      "frameDurationMs": 100,
      "symbolsPerFrame": 40,
      "carrierSpacingHz": 444.4444,
      "allowedBandwidthsKhz": [
        100
      ],
      "carriersByOccupancy": {
        "0": {
          "bandwidthKhz": 100,
          "kMin": -106,
          "kMax": 106,
          "unusedCarriers": [],
          "count": 213
        }
      }
    }
  ],
  "coding": {
    "channels": [
      {
        "name": "MSC",
        "fullName": "Main Service Channel",
        "purpose": "Carries the service payload: audio frames and data streams such as file or slide data.",
        "modesAD": "64-QAM or 16-QAM; EEP and UEP are available for the MSC.",
        "modeE": "16-QAM or 4-QAM; EEP and UEP are available for the MSC."
      },
      {
        "name": "SDC",
        "fullName": "Service Description Channel",
        "purpose": "Describes the services and the parameters needed to decode them.",
        "modesAD": "16-QAM or 4-QAM with code rate 0.5.",
        "modeE": "4-QAM with code rate 0.5 or 0.25."
      },
      {
        "name": "FAC",
        "fullName": "Fast Access Channel",
        "purpose": "Carries rapid acquisition data: mode, spectrum occupancy, interleaver depth, service flags, and related controls.",
        "modesAD": "4-QAM with code rate 0.6; 72 input bits and 65 OFDM cells per FAC block.",
        "modeE": "4-QAM with code rate 0.25; 116 input bits and 244 OFDM cells per FAC block."
      }
    ],
    "mscOptions": [
      {
        "family": "Modes A-D",
        "constellation": "16-QAM",
        "overallRates": [
          "0.5",
          "0.62"
        ],
        "componentRates": [
          "1/3 + 2/3",
          "1/2 + 3/4"
        ]
      },
      {
        "family": "Modes A-D",
        "constellation": "64-QAM",
        "overallRates": [
          "0.5",
          "0.6",
          "0.71",
          "0.78"
        ],
        "componentRates": [
          "1/4 + 1/2 + 3/4",
          "1/3 + 2/3 + 4/5",
          "1/2 + 3/4 + 7/8",
          "2/3 + 4/5 + 8/9"
        ]
      },
      {
        "family": "Mode E",
        "constellation": "4-QAM",
        "overallRates": [
          "0.25",
          "0.33",
          "0.4",
          "0.5"
        ],
        "componentRates": [
          "1/4",
          "1/3",
          "2/5",
          "1/2"
        ]
      },
      {
        "family": "Mode E",
        "constellation": "16-QAM",
        "overallRates": [
          "0.33",
          "0.41",
          "0.5",
          "0.62"
        ],
        "componentRates": [
          "1/6 + 1/2",
          "1/4 + 4/7",
          "1/3 + 2/3",
          "1/2 + 3/4"
        ]
      }
    ]
  },
  "capacityExamples": {
    "modeAD64QamRate06Kbps": {
      "title": "64-QAM, MSC EEP code rate 0.6",
      "occupancyOrder": [
        "0",
        "1",
        "2",
        "3",
        "4",
        "5"
      ],
      "rows": [
        {
          "mode": "A",
          "valuesKbps": [
            11.3,
            12.8,
            23.6,
            26.6,
            49.1,
            55
          ]
        },
        {
          "mode": "B",
          "valuesKbps": [
            8.7,
            10,
            18.4,
            21,
            38.2,
            43
          ]
        },
        {
          "mode": "C",
          "valuesKbps": [
            null,
            null,
            null,
            16.6,
            null,
            34.8
          ]
        },
        {
          "mode": "D",
          "valuesKbps": [
            null,
            null,
            null,
            11,
            null,
            23.4
          ]
        }
      ]
    },
    "modeAD16QamRate062Kbps": {
      "title": "16-QAM, MSC EEP code rate 0.62",
      "occupancyOrder": [
        "0",
        "1",
        "2",
        "3",
        "4",
        "5"
      ],
      "rows": [
        {
          "mode": "A",
          "valuesKbps": [
            7.8,
            8.9,
            16.4,
            18.5,
            34.1,
            38.2
          ]
        },
        {
          "mode": "B",
          "valuesKbps": [
            6,
            6.9,
            12.8,
            14.6,
            26.5,
            29.8
          ]
        },
        {
          "mode": "C",
          "valuesKbps": [
            null,
            null,
            null,
            11.5,
            null,
            24.1
          ]
        },
        {
          "mode": "D",
          "valuesKbps": [
            null,
            null,
            null,
            7.6,
            null,
            16.3
          ]
        }
      ]
    },
    "modeE": [
      {
        "constellation": "4-QAM",
        "codeRate": "0.25",
        "bitRateKbps": 37.3
      },
      {
        "constellation": "4-QAM",
        "codeRate": "0.333",
        "bitRateKbps": 49.7
      },
      {
        "constellation": "4-QAM",
        "codeRate": "0.4",
        "bitRateKbps": 59.6
      },
      {
        "constellation": "4-QAM",
        "codeRate": "0.5",
        "bitRateKbps": 74.5
      },
      {
        "constellation": "16-QAM",
        "codeRate": "0.33",
        "bitRateKbps": 99.4
      },
      {
        "constellation": "16-QAM",
        "codeRate": "0.411",
        "bitRateKbps": 122.4
      },
      {
        "constellation": "16-QAM",
        "codeRate": "0.5",
        "bitRateKbps": 149.1
      },
      {
        "constellation": "16-QAM",
        "codeRate": "0.625",
        "bitRateKbps": 186.4
      }
    ]
  },
  "eepInputBitsPerMultiplexFrame": [
    {
      "mode": "A",
      "parameter": "64-QAM Rall 0.5",
      "values": [
        3757,
        4248,
        7878,
        8857,
        16374,
        18336
      ]
    },
    {
      "mode": "A",
      "parameter": "64-QAM Rall 0.6",
      "values": [
        4509,
        5096,
        9450,
        10628,
        19646,
        21998
      ]
    },
    {
      "mode": "A",
      "parameter": "64-QAM Rall 0.71",
      "values": [
        5322,
        6018,
        11157,
        12547,
        23193,
        25976
      ]
    },
    {
      "mode": "A",
      "parameter": "64-QAM Rall 0.78",
      "values": [
        5898,
        6664,
        12364,
        13908,
        25704,
        28788
      ]
    },
    {
      "mode": "A",
      "parameter": "16-QAM Rall 0.5",
      "values": [
        2505,
        2832,
        5250,
        5904,
        10914,
        12222
      ]
    },
    {
      "mode": "A",
      "parameter": "16-QAM Rall 0.62",
      "values": [
        3131,
        3540,
        6565,
        7381,
        13645,
        15280
      ]
    },
    {
      "mode": "B",
      "parameter": "64-QAM Rall 0.5",
      "values": [
        2880,
        3312,
        6133,
        6991,
        12727,
        14304
      ]
    },
    {
      "mode": "B",
      "parameter": "64-QAM Rall 0.6",
      "values": [
        3456,
        3972,
        7361,
        8390,
        15272,
        17162
      ]
    },
    {
      "mode": "B",
      "parameter": "64-QAM Rall 0.71",
      "values": [
        4080,
        4692,
        8688,
        9900,
        18026,
        20264
      ]
    },
    {
      "mode": "B",
      "parameter": "64-QAM Rall 0.78",
      "values": [
        4520,
        5196,
        9630,
        10980,
        19980,
        22456
      ]
    },
    {
      "mode": "B",
      "parameter": "16-QAM Rall 0.5",
      "values": [
        1920,
        2208,
        4089,
        4662,
        8484,
        9534
      ]
    },
    {
      "mode": "B",
      "parameter": "16-QAM Rall 0.62",
      "values": [
        2400,
        2760,
        5111,
        5826,
        10606,
        11920
      ]
    },
    {
      "mode": "C",
      "parameter": "64-QAM Rall 0.5",
      "values": [
        null,
        null,
        null,
        5514,
        null,
        11581
      ]
    },
    {
      "mode": "C",
      "parameter": "64-QAM Rall 0.6",
      "values": [
        null,
        null,
        null,
        6615,
        null,
        13898
      ]
    },
    {
      "mode": "C",
      "parameter": "64-QAM Rall 0.71",
      "values": [
        null,
        null,
        null,
        7808,
        null,
        16406
      ]
    },
    {
      "mode": "C",
      "parameter": "64-QAM Rall 0.78",
      "values": [
        null,
        null,
        null,
        8654,
        null,
        18188
      ]
    },
    {
      "mode": "C",
      "parameter": "16-QAM Rall 0.5",
      "values": [
        null,
        null,
        null,
        3675,
        null,
        7722
      ]
    },
    {
      "mode": "C",
      "parameter": "16-QAM Rall 0.62",
      "values": [
        null,
        null,
        null,
        4595,
        null,
        9651
      ]
    },
    {
      "mode": "D",
      "parameter": "64-QAM Rall 0.5",
      "values": [
        null,
        null,
        null,
        3660,
        null,
        7800
      ]
    },
    {
      "mode": "D",
      "parameter": "64-QAM Rall 0.6",
      "values": [
        null,
        null,
        null,
        4391,
        null,
        9359
      ]
    },
    {
      "mode": "D",
      "parameter": "64-QAM Rall 0.71",
      "values": [
        null,
        null,
        null,
        5185,
        null,
        11050
      ]
    },
    {
      "mode": "D",
      "parameter": "64-QAM Rall 0.78",
      "values": [
        null,
        null,
        null,
        5746,
        null,
        12242
      ]
    },
    {
      "mode": "D",
      "parameter": "16-QAM Rall 0.5",
      "values": [
        null,
        null,
        null,
        2439,
        null,
        5199
      ]
    },
    {
      "mode": "D",
      "parameter": "16-QAM Rall 0.62",
      "values": [
        null,
        null,
        null,
        3050,
        null,
        6500
      ]
    },
    {
      "mode": "E",
      "parameter": "16-QAM Rall 0.33",
      "values": [
        9938,
        null,
        null,
        null,
        null,
        null
      ]
    },
    {
      "mode": "E",
      "parameter": "16-QAM Rall 0.41",
      "values": [
        12243,
        null,
        null,
        null,
        null,
        null
      ]
    },
    {
      "mode": "E",
      "parameter": "16-QAM Rall 0.5",
      "values": [
        14907,
        null,
        null,
        null,
        null,
        null
      ]
    },
    {
      "mode": "E",
      "parameter": "16-QAM Rall 0.62",
      "values": [
        18635,
        null,
        null,
        null,
        null,
        null
      ]
    },
    {
      "mode": "E",
      "parameter": "4-QAM Rall 0.25",
      "values": [
        3727,
        null,
        null,
        null,
        null,
        null
      ]
    },
    {
      "mode": "E",
      "parameter": "4-QAM Rall 0.33",
      "values": [
        4969,
        null,
        null,
        null,
        null,
        null
      ]
    },
    {
      "mode": "E",
      "parameter": "4-QAM Rall 0.4",
      "values": [
        5962,
        null,
        null,
        null,
        null,
        null
      ]
    },
    {
      "mode": "E",
      "parameter": "4-QAM Rall 0.5",
      "values": [
        7454,
        null,
        null,
        null,
        null,
        null
      ]
    }
  ],
  "algorithmStages": [
    {
      "stage": "1. Source and data adaptation",
      "encode": "Audio and data streams are converted into DRM service payloads. For image-related use, files or slide objects must fit the selected service capacity and repetition plan.",
      "receive": "The receiver does not start with an image. It first needs a valid DRM multiplex and service description before it knows whether useful data or slideshow content is present."
    },
    {
      "stage": "2. Multiplex into MSC, SDC, and FAC",
      "encode": "Service payload enters the MSC; service parameters enter the SDC; rapid acquisition and robustness metadata enter the FAC.",
      "receive": "FAC is acquired first, SDC describes the current services, and MSC cells are decoded according to the announced constellation, protection, and interleaver settings."
    },
    {
      "stage": "3. Energy dispersal",
      "encode": "A deterministic PRBS scrambler reduces regular bit patterns before channel coding.",
      "receive": "After channel decoding, the same dispersal sequence is removed to recover the original multiplex bits."
    },
    {
      "stage": "4. Multilevel channel coding",
      "encode": "DRM uses punctured convolutional component codes and maps the protected bit levels into 4-QAM, 16-QAM, or 64-QAM cells.",
      "receive": "The receiver demaps QAM cells, deinterleaves bits, and uses convolutional decoding to recover the coded channel blocks."
    },
    {
      "stage": "5. Cell interleaving and pilot insertion",
      "encode": "MSC cells are interleaved across time and frequency; pilot cells are inserted for timing, frequency, frame, mode, and channel estimation.",
      "receive": "Pilot cells let the receiver find the OFDM grid, estimate the channel, and equalise the cells before demapping."
    },
    {
      "stage": "6. OFDM waveform generation",
      "encode": "Cells are placed on carrier indices, converted to time-domain symbols, and prefixed with the cyclic guard interval.",
      "receive": "The receiver removes the OFDM guard interval, performs FFT processing, tracks carrier frequency offset, and rebuilds FAC/SDC/MSC cell streams."
    },
    {
      "stage": "7. Image or file reconstruction",
      "encode": "Application data such as MOT slideshow or digital image payloads is repeated according to the service plan.",
      "receive": "Valid MSC data is reassembled into the advertised data application; missing carousel segments can often be filled by later repetitions."
    }
  ],
  "receiveNotes": [
    "Mode A gives the highest DRM30 capacity in the same occupancy but assumes a comparatively benign path.",
    "Mode B is often the practical default when a path has fading or longer delay spread.",
    "Modes C and D sacrifice capacity for Doppler and delay-spread tolerance and are only defined for 10 kHz and 20 kHz occupancies.",
    "Mode E is DRM+ for VHF and uses 100 kHz occupancy, so it should not be treated as a narrow HF SSB digital SSTV setting.",
    "For amateur digital SSTV, confirm the exact EasyPal/HamDRM software profile, centre frequency, audio bandwidth, callsign practice, and file repetition behaviour."
  ],
  "sources": [
    {
      "title": "ETSI ES 201 980 V4.3.1 DRM System Specification",
      "url": "https://www.etsi.org/deliver/etsi_es/201900_201999/201980/04.03.01_60/es_201980v040301p.pdf",
      "notes": "Primary source for robustness modes, OFDM timing, carrier ranges, coding options, service capacity, and input-bit tables."
    },
    {
      "title": "DRM Consortium technology overview",
      "url": "https://www.drm.org/about-drm/drm-technology/",
      "notes": "Public overview of DRM30, DRM+, COFDM, data services, 100 kHz Mode E operation, and current specification links."
    },
    {
      "title": "ETSI TS 101 499 SlideShow specification",
      "url": "https://www.drm.org/about-drm/drm-technology/",
      "notes": "Reference for DRM/DAB slideshow-style image applications carried through the DRM data path."
    },
    {
      "title": "VK6YSF Digital SSTV / EasyPal overview",
      "url": "https://vk6ysf.com/digital_sstv.html",
      "notes": "Community reference for why DRM-derived digital image tools sit beside analog SSTV practice."
    }
  ]
}
