1.797 Zodiac-Cortex-CRT-TMU

This page describes the Zodiac-Cortex-CRT-TMU device driver and its device window. The Zodiac-Cortex-CRT-TMU device driver uses the following tables: Telemetry Unit and Telemetry Unit extension. It is based on the STI 100013_CRT remote protocol document v 3.31, dated Jan. 10., 2020

If more than one telemetry unit is used on the CRT several instances of this driver can be added within the same thread

Beside the TMU multiple instances of the various functional elements may be configured in the sat-nms M&C to handle all features of the unit. All devices referring to the same physical device must be configured at the same device thread / interface to ensure that TCP requests and commands to the device do not overlap.

The different available module drivers for the CRT are:

The CRT requires two separate IP connection for monitoring and commanding the device. The device driver establishes the connection to the monitoring port (usually 3000) by terminal server like TTY connection. This connection is permanently active. Address and port are set in the vlc.setup configuration file as for a terminal server serial port.
How to use TLS connection is described below.

Steps to configure the Zodiac-CRT drivers / devices for TLS communication

1. Create a PKCS12 keystore from the cert files read from the BBU:

openssl pkcs12 -export -out bbu.p12 \
   -inkey CRT-Services-Client-v2.key -in CRT-Services-Client-v2.cert.pem 

openssl prompts to select a password for keystore. e.g. crt

2. Copy the keystore file to /home/satnms/certs/ at the M&C

3. Edit the device configuration (client) to tell the M&C about the protocol and port.

PORT "TLS:192.168.2.202:53000" PROTOCOL CortexNT
    IDLE 1000
    DEVICE BBU-1 IS Zodiac-Cortex-CRT
    DEVICE BBU-1-IFR-1 IS Zodiac-Cortex-CRT-IFR
    DEVICE BBU-1-IFR-2 IS Zodiac-Cortex-CRT-IFR
    DEVICE BBU-1-IFR-3 IS Zodiac-Cortex-CRT-IFR
    DEVICE BBU-1-IFR-4 IS Zodiac-Cortex-CRT-IFR
    DEVICE BBU-1-IFM-1 IS Zodiac-Cortex-CRT-IFM
    DEVICE BBU-1-IFM-2 IS Zodiac-Cortex-CRT-IFM
    DEVICE BBU-1-TMU-A IS Zodiac-Cortex-CRT-TMU
    DEVICE BBU-1-TMU-B IS Zodiac-Cortex-CRT-TMU
    DEVICE BBU-1-TMU-C IS Zodiac-Cortex-CRT-TMU
    DEVICE BBU-1-TMU-D IS Zodiac-Cortex-CRT-TMU
    DEVICE BBU-1-TMU-E IS Zodiac-Cortex-CRT-TMU
    DEVICE BBU-1-TMU-F IS Zodiac-Cortex-CRT-TMU
    DEVICE BBU-1-TMU-G IS Zodiac-Cortex-CRT-TMU
    DEVICE BBU-1-TMU-H IS Zodiac-Cortex-CRT-TMU
    DEVICE BBU-1-TCU-1 IS Zodiac-Cortex-CRT-TCU
    DEVICE BBU-1-TCU-2 IS Zodiac-Cortex-CRT-TCU
    DEVICE BBU-1-TMS-1 IS Zodiac-Cortex-CRT-TMS
    DEVICE BBU-1-TMS-2 IS Zodiac-Cortex-CRT-TMS
    DEVICE BBU-1-PRJ IS Zodiac-Cortex-CRT-PRJ

Important is the TLS in front of the IP address and the port number to use with TLS communication.

4. Restart the M&C and for each BBU-* device edit these setup parameters.

config.cmdPort = 53001
address = certs/bbu.p12 crt

Device window pages

The following table shows which device window pages are available with this individual device type. Tool-bar functions not mentioned here are described at the general description of device windows .

Configuration parameters

At the maintenance page of the device window there are a couple of configuration parameters which must be set to make the software talk to the device.

Variables defined by this device driver

name type flags range
info.driver TEXT R/O StringRange R/O
lowLevel.cmd TEXT StringRange
lowLevel.reply TEXT R/O StringRange R/O
faults.99 ALARM R/O AlarmFlagRange R/O (Communication)
faults.commstat TEXT R/O StringRange R/O
info.type TEXT R/O StringRange R/O
info.port TEXT R/O StringRange R/O
info.frame TEXT R/O StringRange R/O
info.basic TEXT R/O StringRange R/O
info.extended TEXT R/O StringRange R/O
info.bandwidth TEXT R/O StringRange R/O
info.lowBwExtended TEXT R/O StringRange R/O
info.rsDecoding TEXT R/O StringRange R/O
info.viterbi TEXT R/O StringRange R/O
info.turbo TEXT R/O StringRange R/O
info.viterbiAllRate TEXT R/O StringRange R/O
info.descrambling TEXT R/O StringRange R/O
info.ldpc TEXT R/O StringRange R/O
info.ldpcSclicing TEXT R/O StringRange R/O
info.dvbs2 TEXT R/O StringRange R/O
info.deaf TEXT R/O StringRange R/O
info.lfsr TEXT R/O StringRange R/O
info.utoa TEXT R/O StringRange R/O
info.tpc TEXT R/O StringRange R/O
config.cmdPort INTEGER SAVE SETUP IntegerRange (0 .. 0)
config.module CHOICE SAVE SETUP EnumRange (TMU-A TMU-B TMU-C TMU-D TMU-E TMU-F TMU-G TMU-H)
config.deviceComment TEXT SAVE SETUP StringRange
config.readBackDelay INTEGER SAVE SETUP IntegerRange (100 .. 10000)
internal.cmd TEXT R/O StringRange R/O
internal.tmuTable HEX R/O HexRange R/O (0 .. 0)
internal.tmuxTable HEX R/O HexRange R/O (0 .. 0)
internal.hasTmu BOOLEAN R/O BooleanRange R/O (true false)
internal.hasTmuX BOOLEAN R/O BooleanRange R/O (true false)
internal.word HEX R/O HexRange R/O (0 .. 0)
internal.word64 HEX R/O HexRange R/O (0 .. 0)
internal.wordMask HEX R/O HexRange R/O (0 .. 0)
internal.wordMask64 HEX R/O HexRange R/O (0 .. 0)
internal.wordSet INTEGER R/O IntegerRange R/O (0 .. 0)
internal.coderate INTEGER R/O IntegerRange R/O (0 .. 0)
internal.match1 TEXT R/O StringRange R/O
internal.match2 TEXT R/O StringRange R/O
internal.ebNo INTEGER R/O IntegerRange R/O (0 .. 0)
cmdstat TEXT R/O StringRange R/O
dataFlowId HEX HexRange (0 .. 0)
frequency FLOAT DoubleRange (0.040 .. 2000.000)
symbolRate INTEGER IntegerRange (10 .. 40000000)
loopBw CHOICE EnumRange (NARROW WIDE ULTRAWIDE)
pcm.code CHOICE EnumRange (BP-L NRZ-L NRZ-M NRZ-S BP-M BP-S DBP-M DBP-S DM-M DM-S R-NRZ NRZ-L-V35 NRZ-M-V35)
sync.wordMask HEX HexRange (0 .. 0)
decoding CHOICE EnumRange (NONE DESCRAMBLING G2-INV G2 G2-INV-SCRAMBLING G2-SCRAMBLING)
decodingRate CHOICE EnumRange (1/2 1/3 2/3 3/4-CONV1 3/4-CONV2 5/6-CONV1 5/6-CONV1 7/8)
rsCoding CHOICE EnumRange (NONE RS232-BETA TURBO RS232-ALPHA LDPC TPC RS239-BETA RS239-ALPHA)
descrambling CHOICE EnumRange (DEFAULT CCSDS LFSR-BEFORE LFSR-AFTER LFSR)
frame.size INTEGER IntegerRange (10 .. 32000)
sync.word HEX HexRange (0 .. 0)
sync.wordLength INTEGER IntegerRange (8 .. 64)
operatingMode CHOICE EnumRange (NORMAL TEST-1 TEST-2)
sync.threshold INTEGER IntegerRange (0 .. 64)
ctl.threshold INTEGER IntegerRange (0 .. 7)
lts.threshold INTEGER IntegerRange (0 .. 7)
bitSlipWindow INTEGER IntegerRange (0 .. 2)
frame.synchronizer CHOICE EnumRange (OFF ON)
afl FLOAT DoubleRange (-300000.000000 .. 300000.000000)
frame.check CHOICE EnumRange (OFF CRC CHECKSUM)
crc.polynominal HEX HexRange (0 .. 0)
crc.preset HEX HexRange (0 .. 0)
accumulation CHOICE EnumRange (OFF 8 16 32 64)
sync.word64 HEX HexRange (0 .. 0)
sync.wordMask64 HEX HexRange (0 .. 0)
loopBw.bitSync FLOAT DoubleRange (0.00 .. 1.00)
input CHOICE EnumRange (INT EXT-FS EXT-VIT EXT-VIT+BS IQ)
rollOff FLOAT DoubleRange (0.10 .. 1.00)
bpskInput CHOICE EnumRange (IFR AUX-1 AUX-2 PCM-1 PCM-2 PCM-3 PCM-4)
tm.storageId INTEGER IntegerRange (0 .. 0)
tm.storageFiles INTEGER IntegerRange (0 .. 0)
tmuType CHOICE EnumRange (BPSK BPSK-SQUARE PCM/PM PCM/FM)
tp.invert CHOICE EnumRange (OFF INV SWAP-Q-INV SWAP-I-INV)
tp.interleave CHOICE EnumRange (OFF ON)
tp.encoding CHOICE EnumRange (BP-L NRZ-L NRZ-M NRZ-S BP-M BP-S)
filterFm CHOICE EnumRange (10MHz 1MHz 100kHz 5MHz 3MHz 1.5MHz 500kHz 300kHz 150kHz 50kHz 30kHz 15kHz 10kHz 5kHz 13MHz NONE)
codeRate CHOICE EnumRange (OFF 1/2 1/3 1/4 1/6)
timeOffset INTEGER IntegerRange (0 .. 0)
doppler.enable CHOICE EnumRange (OFF ON)
demodulationIndex FLOAT DoubleRange (0.00 .. 3.14)
transfer.sync CHOICE EnumRange (OFF ON)
transfer.frameSize INTEGER IntegerRange (10 .. 32000)
timeTag CHOICE EnumRange (LAST-BIT-TELEMETRY FIRST-BIT-TELEMETRY FIRST-BIT-SYNC-WORD)
state.ebNo FLOAT R/O DoubleRange R/O (0.00 .. 0.00)
flags.bitSync BOOLEAN R/O BooleanRange R/O (true false)
flags.pskDemod BOOLEAN R/O BooleanRange R/O (true false)
state.frameSync TEXT R/O StringRange R/O
state.ldpcSlice TEXT R/O StringRange R/O
state.bitSlip TEXT R/O StringRange R/O
state.viterbi TEXT R/O StringRange R/O
state.rsCorr TEXT R/O StringRange R/O
state.tmFileNo INTEGER R/O IntegerRange R/O (0 .. 0)
state.tmFileSize INTEGER R/O IntegerRange R/O (0 .. 0)
state.berViterbi FLOAT R/O DoubleRange R/O (0.00 .. 0.00)
state.tmFile INTEGER R/O IntegerRange R/O (0 .. 0)
state.tmOffset INTEGER R/O IntegerRange R/O (0 .. 0)
state.storage TEXT R/O StringRange R/O
state.berRs FLOAT R/O DoubleRange R/O (0.00 .. 0.00)
state.framesGood INTEGER R/O IntegerRange R/O (0 .. 0)
state.framesBad INTEGER R/O IntegerRange R/O (0 .. 0)
state.freqOffset FLOAT R/O DoubleRange R/O (0.000 .. 0.000)
state.symbolOffset FLOAT R/O DoubleRange R/O (0.000 .. 0.000)
state.tp INTEGER R/O IntegerRange R/O (0 .. 0)
state.berViterbiQ FLOAT R/O DoubleRange R/O (0.00 .. 0.00)
state.doppler TEXT R/O StringRange R/O
state.tmFrames INTEGER R/O IntegerRange R/O (0 .. 0)
bd.polynominal HEX HexRange (0 .. 0)
bd.register HEX HexRange (0 .. 0)
bd.startOffset INTEGER IntegerRange (0 .. 255)
ad.polynominal HEX HexRange (0 .. 0)
ad.register HEX HexRange (0 .. 0)
ad.startOffset INTEGER IntegerRange (0 .. 255)
storage.start TEXT NOPRESET StringRange
storage.stop TEXT NOPRESET StringRange
storage.resume TEXT NOPRESET StringRange
resetCounter TEXT NOPRESET StringRange
saveFilter TEXT NOPRESET StringRange
filterNumber INTEGER NOPRESET IntegerRange (0 .. 255)
faults.01 ALARM R/O AlarmFlagRange R/O (Bit Synchronizer)
faults.02 ALARM R/O AlarmFlagRange R/O (PSK Demodulator)
faults.03 ALARM R/O AlarmFlagRange R/O (Viterbi Decoder)
faults.04 ALARM R/O AlarmFlagRange R/O (RS Capacity)
faults.05 ALARM R/O AlarmFlagRange R/O (RS Interleave)
faults.06 ALARM R/O AlarmFlagRange R/O (Frame Check)
faults.07 ALARM R/O AlarmFlagRange R/O (Storage File)
faults.08 ALARM R/O AlarmFlagRange R/O (Create File/Dir)