1.792 Zodiac-Cortex-CRT-IFM

This page describes the Zodiac-Cortex-CRT-IFM device driver and its device window. The Zodiac-Cortex-CRT-IFM device driver uses the following tables: IF Modulator, IF Modulator Extension and Embedded Frequency Converter. It is based on the STI 100013_CRT remote protocol document v 3.31, dated Jan. 10., 2020

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

Beside the IFM 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.embFreqConv TEXT R/O StringRange R/O
info.model TEXT R/O StringRange R/O
info.efcModel TEXT R/O StringRange R/O
info.bit31 BOOLEAN R/O BooleanRange R/O (true false)
config.cmdPort INTEGER SAVE SETUP IntegerRange (0 .. 0)
config.module CHOICE SAVE SETUP EnumRange (IFM-1 IFM-2 IFM-3)
config.deviceComment TEXT SAVE SETUP StringRange
config.readBackDelay INTEGER SAVE SETUP IntegerRange (100 .. 10000)
internal.cmd TEXT R/O StringRange R/O
internal.cmdInt INTEGER R/O IntegerRange R/O (0 .. 0)
internal.ifmTable HEX R/O HexRange R/O (0 .. 0)
internal.ifmxTable HEX R/O HexRange R/O (0 .. 0)
internal.hasIfm BOOLEAN R/O BooleanRange R/O (true false)
internal.hasIfmX BOOLEAN R/O BooleanRange R/O (true false)
internal.hasEfc BOOLEAN R/O BooleanRange R/O (true false)
internal.offset INTEGER R/O IntegerRange R/O (0 .. 0)
internal.if INTEGER R/O IntegerRange R/O (0 .. 0)
internal.rf INTEGER R/O IntegerRange R/O (0 .. 0)
internal.freqHz FLOAT R/O DoubleRange R/O (0 .. 0)
internal.freq32Bit FLOAT R/O DoubleRange R/O (0 .. 0)
internal.freqOffset FLOAT R/O DoubleRange R/O (0 .. 0)
internal.match1 TEXT R/O StringRange R/O
internal.match2 TEXT R/O StringRange R/O
internal.bit31 BOOLEAN R/O BooleanRange R/O (true false)
internal.opMode TEXT R/O StringRange R/O
internal.model HEX R/O HexRange R/O (0 .. 0)
cmdstat TEXT R/O StringRange R/O
if.frequency FLOAT DoubleRange (66.000000 .. 74.000000)
deviation.tcu INTEGER IntegerRange (0 .. 500000)
deviation.rau INTEGER IntegerRange (0 .. 500000)
deviation.tms1 INTEGER IntegerRange (0 .. 500000)
modulationIndex.tcu FLOAT DoubleRange (0.00 .. 2.50)
modulationIndex.rau FLOAT DoubleRange (0.00 .. 2.50)
modulationIndex.tms1 FLOAT DoubleRange (0.00 .. 2.50)
operatingMode CHOICE EnumRange (FM PM BPSK QPSK OQPSK AQPSK SOQPSK GMSK 8PSK DVBS2)
enable.aux CHOICE EnumRange (OFF ON)
enable.rau CHOICE EnumRange (OFF ON)
enable.tcu1 CHOICE EnumRange (OFF ON)
enable.tcu2 CHOICE EnumRange (OFF ON)
enable.tms1 CHOICE EnumRange (OFF ON)
enable.tms2 CHOICE EnumRange (OFF ON)
enable.tms3 CHOICE EnumRange (OFF ON)
enable.mod CHOICE EnumRange (TCU RAU TMS TCU+RAU RAU+TMS TCU+TMS AUX AUX+TCU AUX+RAU AUX+TMS AUC+TCU+RAU AUX+RAU+TMS AUX+TCU+TMS NONE)
modulation CHOICE EnumRange (ON OFF)
if.on CHOICE EnumRange (ON OFF)
if.spectrumInvert CHOICE EnumRange (NRM INV)
if.power FLOAT DoubleRange (-80.00 .. 10.00)
sweep.mode CHOICE EnumRange (OFF ON AUTO AUTO+RZ RZ DOPPLER STEP)
doppler.enable CHOICE EnumRange (OFF ON ON-IFR-LOOPBACK)
sweep.rate FLOAT DoubleRange (-175000.000 .. 175000.000)
sweep.range FLOAT DoubleRange (1.000 .. 1000.000)
sweep.offset FLOAT DoubleRange (-1000.000 .. 1000.000)
span CHOICE EnumRange (19.531kHz 39.062kHz 78.125kHz 156.25kHz 312.5kHz 625kHz 1250kHz 2500kHz 5000kHz 10MHz 20MHz 9.765kHz 4.882kHz 2.441kHz 1.220kHz 610.351Hz)
deviation.aux INTEGER IntegerRange (0 .. 500000)
modulationIndex.aux FLOAT DoubleRange (0.00 .. 2.50)
deviation.pcm INTEGER IntegerRange (0 .. 500000)
modulationIndex.pcm FLOAT DoubleRange (0.00 .. 2.50)
matchedFilter CHOICE EnumRange (NO RC RRC SOQPSK-MIL SOQPSK-A SOQPSK-B SOQPSK-TG)
rollOff FLOAT DoubleRange (0.1 .. 1.0)
modulationIndex.prog CHOICE EnumRange (ON OFF)
sweep.stepSize INTEGER IntegerRange (10 .. 100000)
loopback.factor FLOAT DoubleRange (0.01 .. 8.00)
sub.frequency FLOAT DoubleRange (0.010000 .. 1.200000)
loopback CHOICE EnumRange (IFR-1 IFR-2 IFR-3 IFR-4 IFR-5)
deviation.tms2 INTEGER IntegerRange (0 .. 500000)
modulationIndex.tms2 FLOAT DoubleRange (0.00 .. 2.50)
if.bandwidth CHOICE EnumRange (NONE 125kHz 250kHz 500kHz 1MHz 2MHz 4MHz CUSTOM-1 CUSTOM-2 CUSTOM-3 CUSTOM-4 CUSTOM-5 CUSTOM-6 CUSTOM-7 CUSTOM-8)
qpskEncoding CHOICE EnumRange (NO-SINGLE DIFFERENTIAL DUAL DUAL+DIFF)
mapping CHOICE EnumRange (GRAY-1 GRAY-2 GRAY-3 GRAY-4 GRAY-5 GRAY-6 NATURAL-1 NATURAL-2 INV-GRAY-1 INV-GRAY-2 INV-GRAY-3 INV-GRAY-4 INV-GRAY-5 INV-GRAY-6 INV-NAT-1 INV-NAT-2)
ratioIQ FLOAT DoubleRange (-20.00 .. 20.00)
state.offset FLOAT R/O DoubleRange R/O (0.0 .. 0.0)
state.deviation INTEGER R/O IntegerRange R/O (0 .. 0)
state.modulationIndex FLOAT R/O DoubleRange R/O (0.00 .. 0.00)
state.span TEXT R/O StringRange R/O
state.if.on TEXT R/O StringRange R/O
state.mode TEXT R/O StringRange R/O
state.doppler TEXT R/O StringRange R/O
state.compensation FLOAT R/O DoubleRange R/O (0.0 .. 0.0)
state.selection TEXT R/O StringRange R/O
state.aux TEXT R/O StringRange R/O
state.rau TEXT R/O StringRange R/O
state.tcu1 TEXT R/O StringRange R/O
state.tcu2 TEXT R/O StringRange R/O
state.tms1 TEXT R/O StringRange R/O
state.tms2 TEXT R/O StringRange R/O
state.tms3 TEXT R/O StringRange R/O
mod.pilots CHOICE EnumRange (OFF ON)
mod.fecFrameType CHOICE EnumRange (NORMAL SHORT)
mod.type CHOICE EnumRange (DUMMY-PLFRAME QPSK-1/4 QPSK-1/3 QPSK-2/5 QPSK-1/2 QPSK-3/5 QPSK-2/3 QPSK-3/4 QPSK-4/5 QPSK-5/6 QPSK-8/9 QPSK-9/10 8PSK-3/5 8PSK-2/3 8PSK-5/6 8PSK-8/9 8PSK-9/10)
mod.modulation CHOICE EnumRange (N/A QPSK 8PSK)
mod.fec CHOICE EnumRange (N/A 1/4 1/3 2/5 1/2 3/5 2/3 3/4 4/5 5/6 8/9 9/10)
mod.plScramble CHOICE EnumRange (OFF ON)
mod.padding CHOICE EnumRange (OFF ON)
mod.bbHeader CHOICE EnumRange (OFF ON)
mod.dummy CHOICE EnumRange (OFF ON)
mod.matype INTEGER IntegerRange (0 .. 0)
mod.upl INTEGER IntegerRange (0 .. 0)
mod.sync INTEGER IntegerRange (0 .. 0)
state.datarate FLOAT DoubleRange (0 .. 0)
rf.frequency FLOAT DoubleRange (930.000000 .. 2450.000000)
rf.convFreq FLOAT DoubleRange (930.000000 .. 2450.000000)
rf.bypass CHOICE EnumRange (OFF ON)
rf.on CHOICE EnumRange (ON OFF)
rf.power FLOAT DoubleRange (-80.00 .. 10.00)
temperature INTEGER R/O IntegerRange R/O (0 .. 0)
flags.pll BOOLEAN R/O BooleanRange R/O (true false)
state.reference TEXT R/O StringRange R/O
state.calibration TEXT R/O StringRange R/O
sendCalibration TEXT NOPRESET StringRange
resetCalibration TEXT NOPRESET StringRange
faults.01 ALARM R/O AlarmFlagRange R/O (H/W)
faults.03 ALARM R/O AlarmFlagRange R/O (EFC Connection)
faults.04 ALARM R/O AlarmFlagRange R/O (EFC PLL)
faults.05 ALARM R/O AlarmFlagRange R/O (EFC Com)
faults.06 ALARM R/O AlarmFlagRange R/O (EFC Configuration)
faults.07 ALARM R/O AlarmFlagRange R/O (EFC Calibration)