Skip to content

Instantly share code, notes, and snippets.

@haisamido
Last active July 30, 2025 14:10
Show Gist options
  • Save haisamido/c35616680897ad8768b77030f7497eec to your computer and use it in GitHub Desktop.
Save haisamido/c35616680897ad8768b77030f7497eec to your computer and use it in GitHub Desktop.
nos3_detective_work.md

On neosim01-5 (rhel-8.1, vmmoc, amd64):

once(ish):

make stop clean uninstall

in ./scripts/fsw/fsw_cfs_launch.sh radio and CryptoLib where placed before GSW:

    echo $SC_NUM " - Create spacecraft network..."
    $DNETWORK create $SC_NETNAME 2> /dev/null
    echo ""

    gnome-terminal --tab --title=$SC_NUM" - Radio Sim"    -- $DFLAGS -v $SIM_DIR:$SIM_DIR --name $SC_NUM"-radio-sim"    -h radio-sim --network=$SC_NETNAME --network-alias=radio-sim -w $SIM_BIN $DBOX ./nos3-single-simulator $SC_CFG_FILE generic-radio-sim
 
    echo $SC_NUM " - CryptoLib..."
    gnome-terminal --tab --title=$SC_NUM" - CryptoLib GSW" -- $DFLAGS -v $BASE_DIR:$BASE_DIR --name $SC_NUM"_cryptolib_gsw" -h cryptolib --network=$SC_NETNAME --network-alias=cryptolib -w $BASE_DIR/gsw/build $DBOX ./support/standalone
    echo ""

    echo $SC_NUM " - Connect GSW " "${GSW:-cosmos-openc3-operator-1}" " to spacecraft network..."
    $DNETWORK connect  $SC_NETNAME "${GSW:-cosmos-openc3-operator-1}" --alias cosmos --alias active-gs
    echo ""

in ./scripts/gsw/gsw_yamcs_launch.sh the invocation of yamcs was changed to:

gnome-terminal --tab --title="YAMCS" -- $DFLAGS  -e COMPONENT_DIR=$COMPONENT_DIR \
  -v $BASE_DIR:$BASE_DIR -v $USER_NOS3_DIR:$USER_NOS3_DIR -p 127.0.0.1:8090:8090 -p 5012:5012 --name cosmos-openc3-operator-1 \
  -h cosmos --network=nos3-core --network-alias=cosmos \
  -w $USER_NOS3_DIR/yamcs $DBOX mvn ${MAVEN_HTTPS_PROXY} -Dmaven.repo.local=$USER_NOS3_DIR/.m2/repository -DCOMPONENT_DIR=$COMPONENT_DIR yamcs:run

in order to support ${MAVEN_HTTPS_PROXY} and permitting ingress only from 127.0.0.1

then:

make stop clean prep; make config; make; cp /opt/neo/etc/settings.xml ~/.nos3/yamcs/
make launch

While yamcs timestamp is 0001-01-01:

15:41:27.624 _global [1] WebPlugin Website deployed at http://localhost:8090
15:41:41.967 _global [30] YamcsServer Uncaught exception 'java.lang.ArrayIndexOutOfBoundsException: Index 337 out of bounds for length 13' in thread Thread[UdpTmDataLink-truth42-in,5,main]: [org.yamcs.utils.TaiUtcConverter$DateTimeComponents.<init>(TaiUtcConverter.java:474), org.yamcs.nos3.Truth42PacketPreprocessor.process(Truth42PacketPreprocessor.java:42), org.yamcs.tctm.UdpTmDataLink.getNextPacket(UdpTmDataLink.java:137), org.yamcs.tctm.UdpTmDataLink.run(UdpTmDataLink.java:92), java.base/java.lang.Thread.run(Thread.java:840)]

When commanding while yamcs timestamp is 0001-01-01::

15:48:38.535 _global [47] HttpRequestHandler c4f67355 POST /api/processors/nos3/realtime/commands/%2FGENERIC_ADCS%2FCMD%2FGENERIC_ADCS_SET_MODE_CC 200
15:48:38.619 _global [47] RouteHandler 23: Responding '400 Bad Request': Invalid command id
15:48:38.619 _global [47] HttpRequestHandler c4f67355 GET /api/archive/nos3/commands/-64576823461689-192.168.41.1-0 400

When yamcs timestamp is 1970-01-01:

18:28:46.084 _global [1] WebPlugin Website deployed at http://localhost:8090
18:28:59.059 _global [30] YamcsServer Uncaught exception 'java.lang.ArrayIndexOutOfBoundsException: Index 109 out of bounds for length 13' in thread Thread[UdpTmDataLink-truth42-in,5,main]: [org.yamcs.utils.TaiUtcConverter$DateTimeComponents.<init>(TaiUtcConverter.java:474), org.yamcs.nos3.Truth42PacketPreprocessor.process(Truth42PacketPreprocessor.java:42), org.yamcs.tctm.UdpTmDataLink.getNextPacket(UdpTmDataLink.java:137), org.yamcs.tctm.UdpTmDataLink.run(UdpTmDataLink.java:92), java.base/java.lang.Thread.run(Thread.java:840)]
18:28:59.059 _global [30] CrashHandler type: UncaughtException, msg: Uncaught exception 'java.lang.ArrayIndexOutOfBoundsException: Index 109 out of bounds for length 13' in thread Thread[UdpTmDataLink-truth42-in,5,main]: [org.yamcs.utils.TaiUtcConverter$DateTimeComponents.<init>(TaiUtcConverter.java:474), org.yamcs.nos3.Truth42PacketPreprocessor.process(Truth42PacketPreprocessor.java:42), org.yamcs.tctm.UdpTmDataLink.getNextPacket(UdpTmDataLink.java:137), org.yamcs.tctm.UdpTmDataLink.run(UdpTmDataLink.java:92), java.base/java.lang.Thread.run(Thread.java:840)]

When yamcs timestamp is 2025-10-20:

15:55:46.700 _global [1] WebPlugin Website deployed at http://localhost:8090
15:55:47.697 nos3 [15] InternalStream [sys_param] Exception received when emitting tuple to subscriber StreamParameterProvider [RUNNING]: java.lang.UnsupportedOperationException: Cannot use getSint32Value() for SINT64 values

When commanding is not Sent the following is observed in the yamcs logs:

13:19:37.780 nos3 [31] UdpTcDataLink [radio-out] Error when sending command: : java.lang.NullPointerException: Cannot invoke "java.net.DatagramSocket.send(java.net.DatagramPacket)" because "this.socket" is null
	org.yamcs.tctm.UdpTcDataLink.uplinkCommand(UdpTcDataLink.java:71)
	org.yamcs.tctm.AbstractThreadedTcDataLink.run(AbstractThreadedTcDataLink.java:142)
	java.base/java.lang.Thread.run(Thread.java:840)
 
13:19:37.780 _global [31] YamcsServer Uncaught exception 'java.lang.RuntimeException: java.lang.NullPointerException: Cannot invoke "java.net.DatagramSocket.send(java.net.DatagramPacket)" because "this.socket" is null' in thread Thread[UdpTcDataLink-radio-out,5,main]: [org.yamcs.tctm.AbstractThreadedTcDataLink.run(AbstractThreadedTcDataLink.java:148), java.base/java.lang.Thread.run(Thread.java:840)]
13:19:37.780 _global [31] CrashHandler type: UncaughtException, msg: Uncaught exception 'java.lang.RuntimeException: java.lang.NullPointerException: Cannot invoke "java.net.DatagramSocket.send(java.net.DatagramPacket)" because "this.socket" is null' in thread Thread[UdpTcDataLink-radio-out,5,main]: [org.yamcs.tctm.AbstractThreadedTcDataLink.run(AbstractThreadedTcDataLink.java:148), java.base/java.lang.Thread.run(Thread.java:840)]
13:19:37.788 _global [45] HttpRequestHandler 0a2b8543 POST /api/processors/nos3/realtime/commands/%2FGENERIC_ADCS%2FCMD%2FGENERIC_ADCS_SET_MODE_CC 200

due to cryptolib container not running! cryptolib container shows:

Starting CryptoLib in standalone mode! 
CryptoLib using TCP sockets
tcp_init: Connect failed to radio-sim:8010
crypto_standalone_socket_init tc_apply.write failed with status -1 

if cryptolib starts but is not receiving commands, it's usually because of this in yamcs:

14:01:38.217 nos3 [33] UdpTcDataLink [radio-out] Failed to startUp: java.net.UnknownHostException: cryptolib: Temporary failure in name resolution
	java.base/java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
	java.base/java.net.InetAddress$PlatformNameService.lookupAllHostAddr(InetAddress.java:934)
	java.base/java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1543)
	java.base/java.net.InetAddress$NameServiceAddresses.get(InetAddress.java:852)
	java.base/java.net.InetAddress.getAllByName0(InetAddress.java:1533)
	java.base/java.net.InetAddress.getAllByName(InetAddress.java:1385)
	java.base/java.net.InetAddress.getAllByName(InetAddress.java:1306)
	java.base/java.net.InetAddress.getByName(InetAddress.java:1256)
	org.yamcs.tctm.UdpTcDataLink.startUp(UdpTcDataLink.java:45)
	org.yamcs.tctm.AbstractThreadedTcDataLink.run(AbstractThreadedTcDataLink.java:123)
	java.base/java.lang.Thread.run(Thread.java:840)

a successful cryptolib container should have the following:

Starting CryptoLib in standalone mode! 
CryptoLib using TCP sockets
Gcrypt Version: 1.11.0	ERROR: gcrypt version mismatch! 
  TC Apply 
    Read, UDP - cryptolib : 6010 
    Write, TCP - radio-sim : 8010 
  TM Process 
    Read, TCP - cryptolib : 8011 
    Write, UDP - cosmos : 6011 

cryptolib> 

when a command is successfully sent from yamcs via cryptolib the following should be exhibited in cryptolib container:

cryptolib> crypto_standalone_tc_apply - received[9]: 0x19400001000202a700
crypto_standalone_tc_apply - framed[15]: 0x2003000e00c019400001000202a700
crypto_standalone_tc_apply - status = 0, encrypted[29]: 0x2003001c00c0000100000000000000000000000019400001000202a700

radio-sim container is running and not exhibiting any errors.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment