Transmission Schema
Currently SatNOGS DB holds the transmitter information in a rather simplified and problematic way. The radio cannot easily tune its parameters depending on the transmission type, neither multiple decoders can be supported.
Bellow I propose a schema, that can hold enough information so decoders can adapt and increase their performance. It may also add additional significance to the SatNOGS-DB.
Everything on the fields below have been designed having in mind the radio frontend to be able to support multiple transmitters and build a customized decoder for each one of them on the fly. Of course additional information can be added. Those proposed are only for the radio usage.
Please use the comments section to propose additional features or report mistakes and I will update the schema.
Transmission
Name
- Description: Descriptive name of the transmission
- Type : string
- Unit: -
- Mandatory: Yes
- Allow default: No
- Default: -
- Can be NULL: No
UUID
- Description: Unique identifier of the transmission
- Type : string
- Unit: -
- Mandatory: Yes
- Allow default: No
- Default: -
- Can be NULL: No
Center Frequency
- Description: Coordinated Center Frequency
- Type : double
- Unit: Hz
- Mandatory: Yes
- Allow default: No
- Default: -
- Can be NULL: No
Occupied bandwidth
- Description: Transmission occupied bandwidth
- Type : double
- Unit: Hz
- Mandatory: Yes
- Allow default: No
- Default: -
- Can be NULL: No
- Rationale: Maximum passband for the receiver
Drift
- Description: Frequency drift from the coordinated
- Type : double
- Unit: Hz
- Mandatory: No
- Allow default: yes
- Default: 0
- Can be NULL: No
- Rationale: Track frequency drift throughout the mission and leave the coordinated frequeny unchanged. If history is allowed to this field, historical data of drift can be quite interesting for analysis
Stability
- Description: Data clock stability
- Type : double
- Unit: ppm
- Mandatory: No
- Allow default: Yes
- Default: 0
- Can be NULL: No
- Rationale: Can help clock recovery
Modulation
- Description: Modulation
- Type : Modulation
- Unit: UUID
- Mandatory: No
- Allow default: Yes
- Default: NULL
- Can be NULL: Yes
- Rationale: NULL for yet unknown modulation info
Framing
- Description: Framing
- Type : Framing
- Unit: UUID
- Mandatory: No
- Allow default: yes
- Default: NULL
- Can be NULL: Yes
- Rationale: NULL for yet unknown framing info or analog transmissions
Antenna
- Description: Antenna
- Type: TODO
- Unit: UUID
- Mandatory: No
- Allow Default: Yes
- Default: NULL
- Can be NULL: Yes
- Rationale: Can be used for polarization switching
Audible
- Description: Audible
- Type: boolean
- Unit: -
- Mandatory: No
- Allow Default: Yes
- Default: False
- Can be NULL: No
- Rationale: Some transmission should not produce an audible transformation of the reception
Now lets analyze the modulation part. There are several type of modulations each one with specific parameters.
Modulations
(G)FSK
Baudrate
- Description: Symbol Rate (NOT bitrate)
- Type: double
- Unit: symbols/s
- Mandatory: Yes
- Allow Default: No
- Default: -
- Can be NULL: No
Modulation Index
- Description: FSK Modulation index
- Type: double
- Unit: -
- Mandatory: Yes
- Allow Default: Yes
- Default: 1.0
- Can be NULL: No
- Rationale: Modulation index and baudrate specify the true occupied unfiltered bandwidth of the transmission
Filter
- Description: Filter Type
- Type: Filter
- Unit: -
- Mandatory: No
- Allow Default: Yes
- Default: NULL
- Can be NULL: yes
- Rationale: Knowing the filtered used may increase in some cases the performance of the receiver
(G)MSK
Baudrate
- Description: Symbol Rate (NOT bitrate)
- Type: double
- Unit: symbols/s
- Mandatory: Yes
- Allow Default: No
- Default: -
- Can be NULL: No
- Rationale: Special case of FSK with modulation index 0.5
Filter
- Description: Filter Type
- Type: Filter
- Unit: -
- Mandatory: No
- Allow Default: Yes
- Default: NULL
- Can be NULL: yes
AFSK
Baudrate
- Description: Symbol Rate (NOT bitrate)
- Type: double
- Unit: symbols/s
- Mandatory: Yes
- Allow Default: Yes
- Default: 1200
- Can be NULL: No
Modulation Index
- Description: FSK Modulation index
- Type: double
- Unit: -
- Mandatory: Yes
- Allow Default: Yes
- Default: 1.0
- Can be NULL: No
Space Tone Frequency
- Description: Mark Tone Frequency
- Type: double
- Unit: Hz
- Mandatory: Yes
- Allow Default: Yes
- Default: 1200
- Can be NULL: No
- Rationale: Support non standard AFSK modes
Mark Tone Frequency
- Description: Mark Tone Frequency
- Type: double
- Unit: Hz
- Mandatory: Yes
- Allow Default: Yes
- Default: 2200
- Can be NULL: No
- Rationale: Support non standard AFSK modes
CW
WPM
- Description: WPM
- Type: double
- Unit: words per minute (PARIS)
- Mandatory: Yes
- Allow Default: Yes
- Default: 20
- Can be NULL: No
WPM Deviation
- Description: Maximum allowed deviation from the WPM
- Type: double
- Unit: words per minute
- Mandatory: No
- Allow Default: Yes
- Default: 2.0
- Can be NULL: No
- Rationale: In case the WPM is not known exactly, allow a deviation from a WPM approximation
Message header
- Description: Start of message identifier
- Type: string
- unit: -
- Mandatory: No
- Default: NULL
- Can be NULL: yes
- Rationale: It is common, that every CW message starts with a known header. if this header is known to the decoder, it can GREATLY reduces the false positives
CW Tone Frequency
- Description: Frequency of the CW tone
- Type: double
- Unit: Hz
- Mandatory: No
- Allow Default: Yes
- Default: 700
- Can be NULL: No
- Rationale: In case the CW tone is known, the decoder can narrow down the filters increasing performance and reducing false positives. It can generate also a cleaner audio file.
FM (Voice)
Audio Bandwidth
- Description: Audio bandwidth
- Type: double
- unit: Hz
- Mandatory: No
- Default: NULL
- Can be NULL: yes
- Rationale: If set to NULL the filter is bypassed
De-emphasis
- Description: De-emphasis
- Type: double
- unit: -
- Mandatory: No
- Default: 50
- Can be NULL: Yes
- Rationale: If set to NULL the de-emphasis filter is bypassed. Normally de-emphasis should be 50 or 75.
APT (Automatic Picture Transmission)
Audio Low Cutoff Frequency
- Description: Audio Low Cutoff Frequency
- Type: double
- unit: Hz
- Mandatory: No
- Default: 500
- Can be NULL: No
Audio High Cutoff Frequency
- Description: Audio High Cutoff Frequency
- Type: double
- unit: Hz
- Mandatory: No
- Default: 4160
- Can be NULL: No
Then we continue with the framing information:
Framing
AX.25
Differential encoding
- Description: Differential Encoding
- Type: boolean
- Unit: -
- Mandatory: No
- Default: True
- Can be NULL: No
Invert
- Description: Invert input bits
- Type: boolean
- Unit: -
- Mandatory: No
- Default: True
- Can be NULL: No
Whitening
- Description: Whitening polynomial
- Type: Whitening
- Unit: UUID
- Mandatory: No
- Default: whitening-g3ruh
- Can be NULL: Yes
- Rationale: The default of AX.25 is G3RUH. But it is quite common in APRS that no scrambling is used. Also with this approach additional scrambling schemes can be used.
AX.100 Mode 5
Preamble
- Description: Frame repeated preamble
- Type: byte array
- Unit: -
- Mandatory: No
- Default: [0x33, 0x33, 0x33, 0x33]
- Can be NULL: Yes
- Rational: Can be used from the receiver for initial frame acquisition and channel equalization. If set to NULL, the decoder should only use the synchronization word.
Synchronization word
- Description: Frame repeated preamble
- Type: byte array
- Unit: -
- Mandatory: Yes
- Default: [0x93, 0x0b, 0x51, 0xDE]
- Can be NULL: No
- Rational: Can be used from the receiver for exact frame synchronization
Coding
- Description: Frame coding
- Type: Coding
- Unit: UUID
- Mandatory: No
- Default: CCSDS-RS
- Can be NULL: Yes
- Rational: If set to null no coding will be used. The default of the Mode 5 is CCSDS Reed Solomon (255, 223), but additional block codes can be used with this approach of the DB schema
Whitening
- Description: Whitening polynomial
- Type: Whitening
- Unit: UUID
- Mandatory: No
- Default: whitening-ccsds
- Can be NULL: Yes
- Rationale: The default of Mode 5 is CCSDS. With this approach additional scrambling schemes can be used. If NULL no whitening is performed.
Checksum
- Description: Checksum polynomial
- Type: CRC
- Unit: UUID
- Mandatory: No
- Default: CRC32-C
- Can be NULL: Yes
- Rationale: The default of Mode 5 is CRC32-C. With this approach additional CRC schemes can be used. If set to NULL no CRC check is performed.
AX.100 Mode 6
AX.25 Scrambling
- Description: Use G3RUH scrambling for the AX.25 part
- Type: boolean
- Mandatory: No
- Default: Yes
- Can be NULL: No
Coding
- Description: Frame coding
- Type: Coding
- Unit: UUID
- Mandatory: No
- Default: CCSDS-RS
- Can be NULL: Yes
- Rational: If set to null no coding will be used. The default of the Mode 6 is CCSDS Reed Solomon (255, 223), but additional block codes can be used with this approach of the DB schema
Whitening
- Description: Whitening polynomial
- Type: Whitening
- Unit: UUID
- Mandatory: No
- Default: whitening-ccsds
- Can be NULL: Yes
- Rationale: The default of Mode 6 is CCSDS. With this approach additional scrambling schemes can be used. If NULL no whitening is performed.
Checksum
- Description: Checksum polynomial
- Type: CRC
- Unit: UUID
- Mandatory: No
- Default: CRC32-C
- Can be NULL: Yes
- Rationale: The default of Mode 6 is CRC32-C. With this approach additional CRC schemes can be used. If set to NULL no CRC check is performed.
IEEE 802.15.4
Preamble
- Description: Frame repeated preamble
- Type: byte array
- Unit: -
- Mandatory: No
- Default: [0x33, 0x33, 0x33, 0x33]
- Can be NULL: Yes
- Rational: Can be used from the receiver for initial frame acquisition and channel equalization. If set to NULL, the decoder should only use the synchronization word.
Synchronization word
- Description: Frame repeated preamble
- Type: byte array
- Unit: -
- Mandatory: Yes
- Default: [0x90, 0x4E]
- Can be NULL: No
- Rational: Can be used from the receiver for exact frame synchronization
Coding
- Description: Frame coding
- Type: Coding
- Unit: UUID
- Mandatory: No
- Default: NULL
- Can be NULL: Yes
- Rational: If set to null no coding will be used.
Whitening
- Description: Whitening polynomial
- Type: Whitening
- Unit: UUID
- Mandatory: No
- Default: NULL
- Can be NULL: Yes
- Rationale: If NULL no whitening is performed.
Checksum
- Description: Checksum polynomial
- Type: CRC
- Unit: UUID
- Mandatory: No
- Default: CRC16-CCITT
- Can be NULL: Yes
- Rationale: With this approach additional CRC schemes can be used. If set to NULL no CRC check is performed.