Communication specification
Technical specification
Hardware
KRAKsat is equipped with two hardware redundant UHF transceivers - parts of SR-NANO-BUS platform.
Frequency
KRAKsat was assigned coordinated frequency for up- and downlink 435.500 MHz with emission designator 25K0D1D and EIRP 32 dBm. Downlink modulation is AFSK 1200bps and uplink is 2GFSK 9600bps. Satellite callsign is SR9KRA.
Downlink
KRAKsat downlink communication can be one of three types:
beacon - emitted every 15 minutes
commands responses - specific to uplink type
payload logs transmission - on request, encoded in Base91
SR-NANO-BUS downlink can be distinguished by their frames format. Data transceived by UHF1 is decoded as APRS message (with a hardcoded callsign), while data from UHF2 contains frame in APRS telemetry format (without a callsign).
Beacon
Beacon is emitted every 15 minutes by SR-NANO-BUS platform OBC. It consists of 8 frames, sent one by one from both radios. Beacon frames are ASCII strings, terminated by \0, containing information about the status of crucial components.
Beacon frame
Frame name
Frame value
1
Satellite status
M1;STS;[User Flags (32-bit value)]
2
Master status
M1;LOG;[Timestamp];[Boot nr];[CPU voltage];[CPU temperature]
3
UHF1 Status
U1;RL;[Timestamp],[CPU voltage];[Battery voltage];[CPU temperature];[Amplifier temperature]
4
UHF1 Modem Status
U1;MS;[Timestamp];[Current RSSI];[Latch RSSI];[Afc frequency offset]
5
UHF2 Status
U2;RL;[Timestamp],[CPU voltage];[Battery voltage];[CPU temperature];[Amplifier temperature]
6
UHF2 Modem Status
U2;MS;[Timestamp];[Current RSSI];[Latch RSSI];[Afc frequency offset]
7
ADCS Flags Status
A1;FLAGS;[Fault] [Flags1] [Flags2] [Accelerometer temperature] [Magnetometer temperature]
8
Payload status
PL;STATUS;[Payload status as decimal number]
Data from frames 1-7 of the beacon status are calculated in SR-NANO-BUS platform OBC. Frame 8 with payload status is prepared in the payload software and updated every minute.
Beacon's first line, master status (M1;STS) is not properly implemented in SR-NANO-BUS platform, so data from 32-bit flags aren't generated correctly.
Payload status
Parameter
Bits
Comment
MODE
0, 1, 2
NEXT MODE
3, 4, 5
µC VOLTAGE
6, 7
0 - correct
1 - too big > 3.7V
2 - too small < 3.0V
SATELLITE VOLTAGE
8, 9
0 - correct
1 - too big > 9.5V
2 - too small < 9.5V
GYROSCOPE
10
0 - correct
1 - error
MAGNETOMETER
11
0 - correct
1 - error
IMU TEMPERATURE
12
0 - correct
1 - error
EXPERIMENT TEMPERATURE
13
0 - correct
1 - error
UNUSED (2 zeros)
14, 15
Mode and Next mode values in beacon payload status were encoded as 3-bit numbers while having 9 possible values. This software error caused inability to properly distinguish the current payload state.
Commands responses
Every uplink command has a defined command response, based on which the operator knows if the request was successfully received.
Command
Action
Response
ADCS_LOGS_ASCII_GET
Get ADCS FLAGS
A1;FLAGS;[fault] [flags1] [flags2] [acc temperature] [mag temperature]
AOCS_ADCS_CONTROL_FLAGS_SET
Set ADCS control flags
BROADCAST_TIMESTAMP_SET
Set the current timestamp on the satellite modules
M1; TS; [number of platform's boot]; [timestamp set]; [set value]
BROADCAST_DEV_RESET
Reboot the satellite
MASTER_CLEAN_PLAN
Clear the planner
M1;TSK;CLEAN_PLAN
MASTER_CMD_DOWNLINK_S
Enable/disable downlink for chosen radio
M1;DWN;154;0;1.
MASTER_FLASH_BLOCK_ERASE
Erase sector (64kB) of FLASH data from the given address (independent of buffers)
FLASH BLOCK ERASE STATUS;[address];[status]
MASTER_FLASH_SECTOR_ERASE
Erase the sector (4kB) of FLASH data from the given address (independent of buffers)
FLASH SECTOR ERASE STATUS;[address];[status]
MASTER_GET_NR_OF_TASKS
Return the current number of tasks in the planner
M1;TSK;LEN;[amount of tasks]
MASTER_GET_PLAN_G
Return information about the Mission Planner status
M1; TSK; [task number]; [time of planned execution]; [destination module]; [command]
MASTER_LOG_G
Get timestamp, boot number, CPU voltage and temperature
M1;LOG;[TS];[Boot nr];[CPU voltage];[CPU temperature]
MASTER_LOGGER_INFO
Information about the normal buffer
FL; [full buffer]; [amount of used space]; [start of data address]; [end of data address]
MASTER_LOGGER_POP
Remove a given amount of data from the normal buffer, along with the offset of the data origin address
FL; [full buffer]; [amount of used space]; [start of data address]; [end of data address]
MASTER_PAYLOAD_STATUS
Return the last received payload status
PL;STATUS;[payload status]
MASTER_PL_ADCS_COIL_X_VAL
Set PWM duty for X magnetorquer in manual mode
MASTER_PL_ADCS_COIL_Y_VAL
Set PWM duty for Y magnetorquer in manual mode
MASTER_PL_ADCS_COIL_Z_VAL
Set PWM duty for Z magnetorquer in manual mode
MASTER_PL_ADCS_COILS_ALL
Set PWM duty for all magnetorquers in manual mode
MASTER_PL_ADCS_CONFIG_K_X
Set the gain for detumbling the X axis
MASTER_PL_ADCS_CONFIG_K_Y
Set the gain for detumbling the Y axis
MASTER_PL_ADCS_CONFIG_K_Z
Set the gain for detumbling the Z axis
MASTER_PL_ADCS_MAX_DUTY_ALL
Set max PWM duty for all magnetorquers
MASTER_PL_ADCS_MAX_DUTY_X
Set max PWM duty for X magnetorquer
MASTER_PL_ADCS_MAX_DUTY_Y
Set max PWM duty for Y magnetorquer
MASTER_PL_ADCS_MAX_DUTY_Z
Set max PWM duty for Z magnetorquer
MASTER_PL_CALIBRATION_CONFIG
Set configuration param - config param ID - config param
MASTER_PL_DISABLE
Turn off the payload power supply
MASTER_PL_ENABLE
Turn on the payload power supply
MASTER_PL_EXP_ACC_TIME
Set experiment acceleration time
MASTER_PL_EXP_END_PERIOD
Set experiment end period
MASTER_PL_EXP_MODE
Set experiment parameters: -experiment mode -experiment duty
MASTER_PL_EXP_PARAMS1
Set experiment parameters: - Experiment mode - Experiment duty - Experiment period - Experiment PWM frequency - Experiment PWM duty
MASTER_PL_EXP_PARAMS2
Set experiment parameters: - Experiment starting period - Experiment end period - Experiment acceleration time
MASTER_PL_EXP_PERIOD
Set experiment period
MASTER_PL_EXP_PWM
Set experiment parameters: - experiment PWN frequency -experiment PWM duty
MASTER_PL_EXP_START_PERIOD
Set experiment starting period
MASTER_PL_FRW_LIST_ARG
Set experiment add list element
MASTER_PL_FRW_MAX_DUTY
Set the max PWM duty for FRW electromagnets
MASTER_PL_GO_IDLE
Set payload to IDLE mode
MASTER_PL_LOG1MIN_CONFIG _ADD_REG
Provide address of registers that are assigned to the log with a period of 1 min (add)
MASTER_PL_LOG1MIN_CONFIG _DELETE_REG
Provide address of registers that are no more assigned to the log with a period of 1 min (delete)
MASTER_PL_LOG1S_CONFIG _ADD_REG
Provide address of registers that are assigned to log with a period of 1000 ms (add)
MASTER_PL_LOG1S_CONFIG _DELETE_REG
Provide address of registers that are no more assigned to the log with a period of 1000 ms (delete)
MASTER_PL_LOG200MS_CONFIG _ADD_REG
Provide address of registers that are assigned to the log with a period of 200 ms (add)
MASTER_PL_LOG200MS_CONFIG _DELETE_REG
Provide address of registers that are no more assigned to the log with a period of 200ms (delete)
MASTER_PL_MODE_CONFIG
Set payload mode with parameters: -current mode -next mode -time for mode
MASTER_PL_WAKE_UP
Wake up payload from IDLE mode
MASTER_SPECIAL_LOGGER_INFO
Information about the special buffer
FSL; [full buffer]; [amount of used space]; [start of data address]; [end of data address]
MASTER_SPECIAL_LOGGER_POP
Remove a given amount of data from the special buffer, along with the offset of the data origin address
FSL; [full buffer]; [amount of used space]; [start of data address]; [end of data address]
MASTER_TIMESTAMP_GET
Get current timestamp from the satellite
M1;TG;[platforms boot amount]; [timestamp get]
MASTER_TRANS_END_FAIL
End of transaction - failure (no indicator shift)
PL;FINISH;sent = [address of the indicator];transaction FAIL
MASTER_TRANS_END_SUCCESS
End of transaction - success (indicator moved by the amount of data transferred)
PL; FINISH; sent = [address of the indicator], transaction SUCCESS
MASTER_TRANS_GET_CURRENT_ADDR
Information about the address of the indicator for the current transaction
PL; CURRENT ADDR = [address of the indicator]
MASTER_TRANS_SEND_1KB_LOG
Launch of a 1kB downlink
PL; [number 1kB part]; [chunk number]; [number of chunks]; [data] PL; INFO; WAITING FOR RETRANSMISSION REQUESTS PL; INFO; NO TRANSACTION IN PROGRESS
MASTER_TRANS_SEND_1KB_RETRY
Start the retransmission of a given data range within a part (1kB)
PL; R; [part number]; [chunk number]; [data] PL; RET; [part number]; [number of chunks]; 1kB retransmission done PL; INFO; NO TRANSACTION IN PROGRESS
MASTER_TRANS_SEND_NUM_PARTS
Initialization of a new transaction
PL;NOP;[timestamp];[number of parts in the transaction]
MASTER_TRANS_SET_ADDR
Set the address of the indicator for the current transaction
PL; TRANS START ADDR = [address of the indicator]
MASTER_TRANS_SET_CHUNKSIZE
Set the size of a single data chunk in the current transaction
MASTER_TRANS_SET_DATASIZE
Set the amount of data to be sent in the current transaction
MASTER_TRANS_SET_DEFAULT
Set the default transaction parameters
MASTER_TRANS_SET_NORMAL_DATA _START_ADDR
Set the normal transaction rate to the beginning address of the data in the normal buffer
MASTER_TRANS_SET_PARTSIZE
Set the size of a single piece of data in the current transaction
MASTER_TRANS_SET_SPECIAL_DATA _START_ADDR
Set the special transaction rate to the beginning address of the data in the special buffer
UHF_CHANNEL_RX_G
Get current frequency
U1;CH;[timestamp];[current channel]
UHF_CHANNEL_TX_G
Get current frequency
U1;CH;[timestamp];[current channel]
UHF_FEC_G
Read FEC flag
U1;FEC;[fec flag]
UHF_FEC_S
Set FEC flag (valid only for binary data sent through UHF)
U1;FEC;[fec flag]
UHF_LOG_G
Get battery voltage
[U1;RL;[timestamp],[3V3 bus voltage];[12V bus voltage];[RF amp temp];[MCU temp] ]
UHF_MODEM_STAT_G
Get radio data
[U1;MS;[timestamp];[current RSSI];[latched RSSI];[automatic frequency control offset] ]
UHF1_ECHO
Send an echo
48byte ASCII STRING
UHF2_ECHO
Send an echo
48byte ASCII STRING
SR-NANO-BUS platform contains IMU sensors for ADCS (gyroscope and magnetometer) but because of a software bug, IMU data can't be transmitted. It's connected with the fact that instead of being sent as ASCII, frames with IMU data are binary. '\0' sign that is used in APRS as the end of line can be anywhere in ADCS data, so if it's somewhere at the beginning, all the data behind won't be copied to AX.25 frame and transmitted.
Payload logs transmission on request
Payload logs are saved in the flash memory, part of SR-NANO-BUS platform. There is no special way of handling data e.g. filesystem - every new binary frame is just put into the first free memory address, depending on the payload mode (as described in logging logic).
Flash memory
Special
Normal
INFO
0x0
0x1000
CAPACITY
6MB - 16KB
2MB - 16KB
START
0x 20 00
0x60 00 00
END
0x 5F E0 00
0x 7F C0 00
Payload log frame
Every log frame contains 6 bytes of information - relative timestamp, register address (key) and register value. Its available parameters and logging interval are specific to the current payload mode. All log frames are prepared in the payload software and transmitted to the OBC as described in Logging logic chapter.
Log frame info
Size
Relative timestamp
2B
Register address
2B
Register value
2B
Payload log frames downlink
Log frames downlink is accomplished in form of a transaction. First, the transaction has to be initialized and a chosen address set. After that, 1 KB of logs can be downloaded. A part of data consists of chunks (typically 35-38 of them), numbered and encoded in Base91. Base91 algorithm used by SR-NANO-BUS platform is so-called rlyeh's modification.
Although UHF1 and UHF2 from SR-NANO-BUS are hardware redundant, their software has some differences. The biggest difference manifests itself in the fact that logs transmission can be provided only using UHF1. UHF2 can never transmit log frames.
Example of payload logs (1 kB)
Last updated