9.793 Zodiac-Cortex-CRT-IFR

This page describes the Zodiac-Cortex-CRT-IFR device driver and its device window. The Zodiac-Cortex-CRT-IFR device driver uses the following tables: IF Receiver, IF Receiver 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 receiver is used on the CRT several instances of this driver can be added within the same thread

Beside the IFR 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.efcModel TEXT R/O StringRange R/O
info.test TEXT R/O StringRange R/O
config.cmdPort INTEGER SAVE SETUP IntegerRange (0 .. 0)
config.module CHOICE SAVE SETUP EnumRange (IFR-1 IFR-2 IFR-3 IFR-4 IFR-5)
config.deviceComment TEXT SAVE SETUP StringRange
config.readBackDelay INTEGER SAVE SETUP IntegerRange (100 .. 10000)
internal.cmd TEXT R/O StringRange R/O
internal.ifrTable HEX R/O HexRange R/O (0 .. 0)
internal.ifrxTable HEX R/O HexRange R/O (0 .. 0)
internal.hasIfr BOOLEAN R/O BooleanRange R/O (true false)
internal.hasIfrX BOOLEAN R/O BooleanRange R/O (true false)
internal.hasEfc BOOLEAN R/O BooleanRange R/O (true false)
internal.model HEX R/O HexRange R/O (0 .. 0)
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)
cmdstat TEXT R/O StringRange R/O
if.frequency FLOAT DoubleRange (66.000000 .. 75.000000)
inputPort CHOICE EnumRange (NOMINAL ALTERNATE)
input CHOICE EnumRange (IF-1 IF-2 IF-3 AUX-1 AUX-2 IF-4 IF-5 IF-6)
if.bandwidth CHOICE EnumRange (10MHz 1MHz 100kHz 5MHz 3MHz 1.5MHz 500kHz 300kHz 150kHz 50kHz 30kHz 15kHz 10kHz 5kHz 13MHz NONE)
operatingMode CHOICE EnumRange (AUTO MANUAL)
carrierAcq CHOICE EnumRange (NORMAL HIGH)
loopBandwidth CHOICE EnumRange (30Hz 100Hz 300Hz 1000Hz 3000Hz)
loopBandwidthCont FLOAT DoubleRange (0.0 .. 3000.0)
videoDemodulation CHOICE EnumRange (PM FM AM-NO-COHERENT AM-COHERENT BYPASS SPECTRAL)
carrierAcqRange FLOAT DoubleRange (1.000 .. 500.000)
carrierTrkRange FLOAT DoubleRange (1.000 .. 500.000)
afc CHOICE EnumRange (OFF 1ms 10ms 100ms 1s)
agcTimeConstant CHOICE EnumRange (0.1ms 1ms 10ms 100ms 1000ms)
discriminator INTEGER IntegerRange (0 .. 16)
doppler.enable CHOICE EnumRange (OFF ON)
doppler.flowId HEX HexRange (0 .. 0)
doppler.sampling FLOAT DoubleRange (0.100000 .. 10.000000)
doppler.measurements INTEGER IntegerRange (1 .. 1000)
span.flowId HEX HexRange (0 .. 0)
span CHOICE EnumRange (1.220kHz 2.440kHz 4.882kHz 9.764kHz 19.53kHz 39.062kHz 78.124kHz 156.25kHz 312.5kHz 625kHz 1250kHz 2.5MHz 5MHz 10MHz)
pcmDemodulation CHOICE EnumRange (OFF BPSK PCM/PM QPSK OQPSK AQPSK SPAN SOQPSK GMSK 8PSK DVB-S2)
predetectionFilter INTEGER IntegerRange (0 .. 256)
videoFilter INTEGER IntegerRange (0 .. 256)
qpskDecoding CHOICE EnumRange (NO-SINGLE DIFFERENTIAL DUAL DUAL+DIFF)
mapping8psk 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)
swapIQ CHOICE EnumRange (NO SWAP)
ratioIQ FLOAT DoubleRange (-20.0 .. 20.0)
loopBandwidthAcq FLOAT DoubleRange (0.0 .. 3000.0)
state.offset FLOAT R/O DoubleRange R/O (0.000 .. 0.000)
state.level FLOAT R/O DoubleRange R/O (0.00 .. 0.00)
state.sampling TEXT R/O StringRange R/O
state.ebNo FLOAT R/O DoubleRange R/O (0.00 .. 0.00)
state.deviation FLOAT R/O DoubleRange R/O (0.00 .. 0.00)
state.doppler TEXT R/O StringRange R/O
state.storage TEXT R/O StringRange R/O
state.span TEXT R/O StringRange R/O
state.demodulation TEXT R/O StringRange R/O
rf.frequency FLOAT DoubleRange (930.000000 .. 2450.000000)
rf.convFreq FLOAT DoubleRange (930.000000 .. 2450.000000)
rf.bypass CHOICE EnumRange (OFF ON)
rf.gain INTEGER IntegerRange (15 .. 30)
rf.agc CHOICE EnumRange (OFF ON)
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
acquisition TEXT NOPRESET StringRange
doppler.start TEXT NOPRESET StringRange
doppler.stop TEXT NOPRESET StringRange
faults.01 ALARM R/O AlarmFlagRange R/O (PLL)
faults.02 ALARM R/O AlarmFlagRange R/O (Bit Synchronizer)
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)