9.798 Zodiac-Cortex-CRT

This page describes the Zodiac-Cortex-CRT device driver and its device window. The Zodiac-Cortex-CRT device driver uses the following tables: the Cortex CRT, Global Cortex CRT and Noise Table.
It allows controlling units general settings, the if inputs and noise generator and shows main status as well as the TMU mapping and available modules.

Individual modules as IFR, IFM, TMU, TMS, TCU,... use a separate driver which has to be added to the same thread in the device setup. It is based on the STI 100013_CRT remote protocol document v 3.31, dated Jan. 10., 2020

Beside this base unit 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.revision TEXT R/O StringRange R/O
info.softwareId TEXT R/O StringRange R/O
info.model TEXT R/O StringRange R/O
info.serial TEXT R/O StringRange R/O
info.temp.masterBoard INTEGER R/O IntegerRange R/O (0 .. 0)
info.temp.masterFPGA INTEGER R/O IntegerRange R/O (0 .. 0)
info.temp.slaveBoard INTEGER R/O IntegerRange R/O (0 .. 0)
info.temp.slaveFPGA INTEGER R/O IntegerRange R/O (0 .. 0)
config.cmdPort INTEGER SAVE SETUP IntegerRange (0 .. 0)
config.deviceComment TEXT SAVE SETUP StringRange
config.readBackDelay INTEGER SAVE SETUP IntegerRange (100 .. 10000)
internal.cmd TEXT R/O StringRange R/O
internal.type TEXT R/O StringRange R/O
internal.ver TEXT R/O StringRange R/O
internal.rev TEXT R/O StringRange R/O
internal.softwareId1 TEXT R/O StringRange R/O
internal.softwareId2 TEXT R/O StringRange R/O
internal.softwareId3 TEXT R/O StringRange R/O
internal.model HEX R/O HexRange R/O (0 .. 0)
internal.shelfId INTEGER R/O IntegerRange R/O (0 .. 0)
internal.day.c1 HEX R/O HexRange R/O (0 .. 0)
internal.day.c4h INTEGER R/O IntegerRange R/O (0 .. 0)
internal.day.c4 INTEGER R/O IntegerRange R/O (0 .. 0)
internal.hour INTEGER R/O IntegerRange R/O (0 .. 0)
internal.hour.c1 HEX R/O HexRange R/O (0 .. 0)
internal.secs INTEGER R/O IntegerRange R/O (0 .. 0)
internal.msecs.c1 INTEGER R/O IntegerRange R/O (0 .. 0)
internal.msecs.c2 FLOAT R/O DoubleRange R/O (0.000 .. 0.000)
internal.msecs INTEGER R/O IntegerRange R/O (0 .. 0)
internal.usecs INTEGER R/O IntegerRange R/O (0 .. 0)
internal.nsecs INTEGER R/O IntegerRange R/O (0 .. 0)
internal.min INTEGER R/O IntegerRange R/O (0 .. 0)
internal.sec INTEGER R/O IntegerRange R/O (0 .. 0)
internal.tag FLOAT R/O DoubleRange R/O (0.000 .. 0.000)
days INTEGER R/O IntegerRange R/O (0 .. 0)
hours INTEGER R/O IntegerRange R/O (0 .. 0)
minutes INTEGER R/O IntegerRange R/O (0 .. 0)
seconds INTEGER R/O IntegerRange R/O (0 .. 0)
cmdstat TEXT R/O StringRange R/O
upload.doppler.file TEXT NOCOMPARE StringRange
module.hasTcu1 BOOLEAN R/O BooleanRange R/O (true false)
module.hasTcu2 BOOLEAN R/O BooleanRange R/O (true false)
module.hasTms1 BOOLEAN R/O BooleanRange R/O (true false)
module.hasTms2 BOOLEAN R/O BooleanRange R/O (true false)
module.hasTms3 BOOLEAN R/O BooleanRange R/O (true false)
module.hasIfm1 BOOLEAN R/O BooleanRange R/O (true false)
module.hasIfm2 BOOLEAN R/O BooleanRange R/O (true false)
module.hasIfm3 BOOLEAN R/O BooleanRange R/O (true false)
module.hasIfmX1 BOOLEAN R/O BooleanRange R/O (true false)
module.hasIfmX2 BOOLEAN R/O BooleanRange R/O (true false)
module.hasIfmX3 BOOLEAN R/O BooleanRange R/O (true false)
module.hasRau BOOLEAN R/O BooleanRange R/O (true false)
module.hasRauE BOOLEAN R/O BooleanRange R/O (true false)
module.hasIfr1 BOOLEAN R/O BooleanRange R/O (true false)
module.hasIfr2 BOOLEAN R/O BooleanRange R/O (true false)
module.hasIfr3 BOOLEAN R/O BooleanRange R/O (true false)
module.hasIfr4 BOOLEAN R/O BooleanRange R/O (true false)
module.hasIfr5 BOOLEAN R/O BooleanRange R/O (true false)
module.hasIfrX1 BOOLEAN R/O BooleanRange R/O (true false)
module.hasIfrX2 BOOLEAN R/O BooleanRange R/O (true false)
module.hasIfrX3 BOOLEAN R/O BooleanRange R/O (true false)
module.hasIfrX4 BOOLEAN R/O BooleanRange R/O (true false)
module.hasIfrX5 BOOLEAN R/O BooleanRange R/O (true false)
module.hasDcu1 BOOLEAN R/O BooleanRange R/O (true false)
module.hasDcu2 BOOLEAN R/O BooleanRange R/O (true false)
module.hasTmuA BOOLEAN R/O BooleanRange R/O (true false)
module.hasTmuB BOOLEAN R/O BooleanRange R/O (true false)
module.hasTmuC BOOLEAN R/O BooleanRange R/O (true false)
module.hasTmuD BOOLEAN R/O BooleanRange R/O (true false)
module.hasTmuE BOOLEAN R/O BooleanRange R/O (true false)
module.hasTmuF BOOLEAN R/O BooleanRange R/O (true false)
module.hasTmuG BOOLEAN R/O BooleanRange R/O (true false)
module.hasTmuH BOOLEAN R/O BooleanRange R/O (true false)
module.hasTmxA BOOLEAN R/O BooleanRange R/O (true false)
module.hasTmxB BOOLEAN R/O BooleanRange R/O (true false)
module.hasTmxC BOOLEAN R/O BooleanRange R/O (true false)
module.hasTmxD BOOLEAN R/O BooleanRange R/O (true false)
module.hasTmxE BOOLEAN R/O BooleanRange R/O (true false)
module.hasTmxF BOOLEAN R/O BooleanRange R/O (true false)
module.hasTmxG BOOLEAN R/O BooleanRange R/O (true false)
module.hasTmxH BOOLEAN R/O BooleanRange R/O (true false)
module.hasNoise BOOLEAN R/O BooleanRange R/O (true false)
module.hasEfc BOOLEAN R/O BooleanRange R/O (true false)
module.hasAit1 BOOLEAN R/O BooleanRange R/O (true false)
module.hasAit2 BOOLEAN R/O BooleanRange R/O (true false)
module.ifrTmuA CHOICE R/O EnumRange R/O (IFR-1 IFR-2 IFR-3 IFR-4)
module.ifrTmuB CHOICE R/O EnumRange R/O (IFR-1 IFR-2 IFR-3 IFR-4)
module.ifrTmuC CHOICE R/O EnumRange R/O (IFR-1 IFR-2 IFR-3 IFR-4)
module.ifrTmuD CHOICE R/O EnumRange R/O (IFR-1 IFR-2 IFR-3 IFR-4)
module.ifrTmuE CHOICE R/O EnumRange R/O (IFR-1 IFR-2 IFR-3 IFR-4)
module.ifrTmuF CHOICE R/O EnumRange R/O (IFR-1 IFR-2 IFR-3 IFR-4)
module.ifrTmuG CHOICE R/O EnumRange R/O (IFR-1 IFR-2 IFR-3 IFR-4)
module.ifrTmuH CHOICE R/O EnumRange R/O (IFR-1 IFR-2 IFR-3 IFR-4)
dataflowMon HEX HexRange (0 .. 0)
dataflowLog HEX HexRange (0 .. 0)
reference CHOICE EnumRange (INT 1+INT 2+INT 1+2+INT)
leap INTEGER IntegerRange (0 .. 0)
leap.mode CHOICE EnumRange (AUTOMATIC MANUAL)
leap.year CHOICE EnumRange (YES NO)
leap.second CHOICE EnumRange (OFF POSITIVE NEGATIVE)
time.offset INTEGER IntegerRange (0 .. 0)
time.nextOffsetDate.1 INTEGER IntegerRange (0 .. 0)
time.nextOffset.1 INTEGER IntegerRange (0 .. 0)
time.nextOffsetDate.2 INTEGER IntegerRange (0 .. 0)
time.nextOffset.2 INTEGER IntegerRange (0 .. 0)
time.code CHOICE EnumRange (IRIG-B NASA-36 NTP)
video.testpoint.1 CHOICE EnumRange (OFF IFM-1 IFM-2 TCU-1 TCU-2 RAU TMS-1 TMS-2 IFR-1 IFR-2 IFR-3 IFR-4 IFR-5 DCU-1 DCU-2 INTERNAL-1 INTERNAL-2)
video.testpoint.2 CHOICE EnumRange (OFF IFM-1 IFM-2 TCU-1 TCU-2 RAU TMS-1 TMS-2 IFR-1 IFR-2 IFR-3 IFR-4 IFR-5 DCU-1 DCU-2 INTERNAL-1 INTERNAL-2)
input.1 CHOICE EnumRange (NOMINAL ALTERNATE)
input.2 CHOICE EnumRange (NOMINAL ALTERNATE)
input.3 CHOICE EnumRange (NOMINAL ALTERNATE)
input.4 CHOICE EnumRange (NOMINAL ALTERNATE)
input.5 CHOICE EnumRange (NOMINAL ALTERNATE)
input.6 CHOICE EnumRange (NOMINAL ALTERNATE)
input.1.agc CHOICE EnumRange (0.1ms 1ms 10ms 100ms 1000ms)
input.2.agc CHOICE EnumRange (0.1ms 1ms 10ms 100ms 1000ms)
input.3.agc CHOICE EnumRange (0.1ms 1ms 10ms 100ms 1000ms)
input.4.agc CHOICE EnumRange (0.1ms 1ms 10ms 100ms 1000ms)
input.5.agc CHOICE EnumRange (0.1ms 1ms 10ms 100ms 1000ms)
input.6.agc CHOICE EnumRange (0.1ms 1ms 10ms 100ms 1000ms)
time.tag CHOICE R/O EnumRange R/O (CODE-0 CODE-1 CODE-2 CODE-3 CODE-4 CODE-5)
crtGlobalTimeTag FLOAT R/O DoubleRange R/O (0.000 .. 0.000)
crtGlobalTimeTag2 TEXT R/O StringRange R/O
ctx.document INTEGER R/O IntegerRange R/O (0 .. 0)
ctx.loadSave BOOLEAN R/O BooleanRange R/O (true false)
state.refFreq TEXT R/O StringRange R/O
state.refInput TEXT R/O StringRange R/O
state.decoder TEXT R/O StringRange R/O
flags.extPps BOOLEAN R/O BooleanRange R/O (true false)
clients.mon INTEGER R/O IntegerRange R/O (0 .. 0)
clients.ctl INTEGER R/O IntegerRange R/O (0 .. 0)
clients.tms1 INTEGER R/O IntegerRange R/O (0 .. 0)
clients.tms2 INTEGER R/O IntegerRange R/O (0 .. 0)
clients.tms3 INTEGER R/O IntegerRange R/O (0 .. 0)
clients.tcu1 INTEGER R/O IntegerRange R/O (0 .. 0)
clients.tcu2 INTEGER R/O IntegerRange R/O (0 .. 0)
clients.rng INTEGER R/O IntegerRange R/O (0 .. 0)
clients.meas INTEGER R/O IntegerRange R/O (0 .. 0)
clients.log INTEGER R/O IntegerRange R/O (0 .. 0)
clients.spec INTEGER R/O IntegerRange R/O (0 .. 0)
clients.dopp INTEGER R/O IntegerRange R/O (0 .. 0)
clients.vect INTEGER R/O IntegerRange R/O (0 .. 0)
clients.other INTEGER R/O IntegerRange R/O (0 .. 0)
clients.tmuA INTEGER R/O IntegerRange R/O (0 .. 0)
clients.tmuB INTEGER R/O IntegerRange R/O (0 .. 0)
clients.tmuC INTEGER R/O IntegerRange R/O (0 .. 0)
clients.tmuD INTEGER R/O IntegerRange R/O (0 .. 0)
clients.tmuE INTEGER R/O IntegerRange R/O (0 .. 0)
clients.tmuF INTEGER R/O IntegerRange R/O (0 .. 0)
clients.tmuG INTEGER R/O IntegerRange R/O (0 .. 0)
clients.tmuH INTEGER R/O IntegerRange R/O (0 .. 0)
neuronFlows INTEGER R/O IntegerRange R/O (0 .. 0)
noise.1.on CHOICE EnumRange (OFF ON)
noise.2.on CHOICE EnumRange (OFF ON)
noise.3.on CHOICE EnumRange (OFF ON)
noise.1 FLOAT DoubleRange (15.0 .. 100.0)
noise.2 FLOAT DoubleRange (15.0 .. 100.0)
noise.3 FLOAT DoubleRange (15.0 .. 100.0)
reloadDefault TEXT NOPRESET StringRange
setWinTimeToIrig TEXT NOPRESET StringRange
faults.01 ALARM R/O AlarmFlagRange R/O (Remote Access)
faults.02 ALARM R/O AlarmFlagRange R/O (External PPS)
faults.03 ALARM R/O AlarmFlagRange R/O (Time)
faults.04 ALARM R/O AlarmFlagRange R/O (Emulation Mode)
faults.05 ALARM R/O AlarmFlagRange R/O (Flash Memory)
faults.06 ALARM R/O AlarmFlagRange R/O (Licenses)
faults.07 ALARM R/O AlarmFlagRange R/O (Menu Configuration)
faults.08 ALARM R/O AlarmFlagRange R/O (FPGA Configuration)
faults.09 ALARM R/O AlarmFlagRange R/O (MSP Init)
faults.10 ALARM R/O AlarmFlagRange R/O (FPGA Temperature)
faults.11 ALARM R/O AlarmFlagRange R/O (Temperature)
faults.12 ALARM R/O AlarmFlagRange R/O (Plugin extension)
faults.13 ALARM R/O AlarmFlagRange R/O (Driver init)
faults.14 ALARM R/O AlarmFlagRange R/O (Memory init)
faults.15 ALARM R/O AlarmFlagRange R/O (DL FPGA Init)
faults.16 ALARM R/O AlarmFlagRange R/O (UL FPGA Init)
faults.17 ALARM R/O AlarmFlagRange R/O (PLL)
faults.18 ALARM R/O AlarmFlagRange R/O (IRIG-B/NASA Unlock)
faults.20 ALARM R/O AlarmFlagRange R/O (TCU-1)
faults.21 ALARM R/O AlarmFlagRange R/O (TCU-2)
faults.22 ALARM R/O AlarmFlagRange R/O (TMS-1)
faults.23 ALARM R/O AlarmFlagRange R/O (TMS-2)
faults.24 ALARM R/O AlarmFlagRange R/O (TMS-3)
faults.25 ALARM R/O AlarmFlagRange R/O (IFM-1)
faults.26 ALARM R/O AlarmFlagRange R/O (IFM-2)
faults.27 ALARM R/O AlarmFlagRange R/O (IFM-3)
faults.28 ALARM R/O AlarmFlagRange R/O (IFR-1)
faults.29 ALARM R/O AlarmFlagRange R/O (IFR-2)
faults.30 ALARM R/O AlarmFlagRange R/O (IFR-3)
faults.31 ALARM R/O AlarmFlagRange R/O (IFR-4)
faults.32 ALARM R/O AlarmFlagRange R/O (IFR-5)
faults.33 ALARM R/O AlarmFlagRange R/O (TMU-A)
faults.34 ALARM R/O AlarmFlagRange R/O (TMU-B)
faults.35 ALARM R/O AlarmFlagRange R/O (TMU-C)
faults.36 ALARM R/O AlarmFlagRange R/O (TMU-D)
faults.37 ALARM R/O AlarmFlagRange R/O (TMU-E)
faults.38 ALARM R/O AlarmFlagRange R/O (TMU-F)
faults.39 ALARM R/O AlarmFlagRange R/O (TMU-G)
faults.40 ALARM R/O AlarmFlagRange R/O (TMU-H)
faults.41 ALARM R/O AlarmFlagRange R/O (TMU-A Program)
faults.42 ALARM R/O AlarmFlagRange R/O (TMU-B Program)
faults.43 ALARM R/O AlarmFlagRange R/O (TMU-C Program)
faults.44 ALARM R/O AlarmFlagRange R/O (TMU-D Program)
faults.45 ALARM R/O AlarmFlagRange R/O (TMU-E Program)
faults.46 ALARM R/O AlarmFlagRange R/O (TMU-F Program)
faults.47 ALARM R/O AlarmFlagRange R/O (TMU-G Program)
faults.48 ALARM R/O AlarmFlagRange R/O (TMU-H Program)
faults.49 ALARM R/O AlarmFlagRange R/O (Noise Generator)
faults.50 ALARM R/O AlarmFlagRange R/O (Noise Channel 1)
faults.51 ALARM R/O AlarmFlagRange R/O (Noise Channel 2)
faults.52 ALARM R/O AlarmFlagRange R/O (Noise Channel 3)