Telemetry packet description

Description of ESTCube-1 telemetry frames Last edit on 15:40:45 9.08.2013


Frame structure

AX.25 headerSource (uint8)Destination (uint8)Length (uint16)PayloadAX.25 footer
 

Endpoint index of the
subsystem that compiled
the data.

Intended recipient on the ground.

Always 6 (GS).

Length of the payload, in bytes.

Command header
(uint32)
Command parameters 

Command structure

The same command structure is used for both commands and telemetry. In other words, commands from satellite to GS are treated as telemetry.

In the case of telemetry, not all command header fields have a meaning.

Command header

 First byteSecond byte
First 2
bytes
8765432187654321
I*P*Dst*Command ID
Next 2
bytes
8765432187654321
Source*Block index*Data length

Fields marked with an * are implemented in CDHS only, and thus unreliable or unimportant for telemetry parsing.

Field descriptions:

  • I - Bit for immediate commands (1 for commands to be executed immediately, without being scheduled).
  • P - Bit for low / high priority commands (1 for high, 0 for low).
  • Dst- Destination field.
  • Command ID - Index for choosing the handler for a command to be executed.
  • Source - Source subsystem.
  • Block index - Index of the block, to which the command belongs (0, if none).
  • Data length - Number of bytes used for command arguments.

Command parameters

Depending on the Command ID, Data length fields, the structure of command parameters will vary.

Table of endpoint indexes

SubsystemEndpoint indexCommentsLocation
EPS0x00 Satellite
COM0x01 Satellite
CDHS0x02 Satellite
ADCS0x03ADCS is a submodule of CDHS.Satellite
PL0x04PL is a submodule of CDHS.Satellite
CAM0x05 Satellite
GS0x06 Ground

A few telemetry frames

COM housekeeping data

COM housekeeping data
01 06 00 19 00 05 00 15 0E 00 00 00 00 00 AF 00 00 E6 1A 00 00 E0 1A 00 00 26 03 00 00
 
Frame header:
01 06 00 19
- Source: COM, 01
- Destination: GS, 06
- Length: 25 Bytes, 19

Command header:
00 05 00 15
- Command ID: COM housekeeping data, 05
- Length: 21 Bytes, 15

Command parameters:
0E 00 00 00 00 00 AF 00 00 E6 1A 00 00 E0 1A 00 00 26 03 00 00
- Number of reboots (uint16): 14, 0E 00
- Downlink temperature (int16): 0, 00 00 (unimplemented)
- MCU temperature (int16): 0, 00 00 (unimplemented)
- RSSI (int8): -80, AF
- AFC (int8): 0, 00 (unimplemented)
- Packets sent (uint32): 6886, E6 1A 00 00
- Correct packets received (uint32): 6880, E0 1A 00 00
- Broken packets dropped (uint32): 806, 26 03 00 00

CDHS housekeeping data

CDHS housekeeping data:
02 06 00 94 02 36 20 90 CB 56 19 01 0A 12 A0 F1 01 00 00 00 73 00 00 00 18 42 00 00 
19 00 00 00 2B 00 00 00 C2 46 91 41 00 00 F8 40 F5 19 00 00 01 00 00 00 10 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 2B 00 00 00 2A 00 00 00 00 00 00 00 00 00 00 00 
FF FF FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 64 01
 
Frame header:
02 06 00 94
- Source: CDHS, 02
- Destination: GS, 06
- Length: 148 Bytes, 94
 
Command header:
02 36 20 90
- Command ID: CDHS telemetry set 1, 02 36
- Length: 144 Bytes, 90
 
Command parameters:
CB 56 19 01 0A 12 A0 F1 01 00 00 00 73 00 00 00 18 42 00 00 19 00 00 00 2B 00 00 00 
C2 46 91 41 00 00 F8 40 F5 19 00 00 01 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 2B 00 00 00 2A 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF FF FF 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 64 01
- Timestamp (uint32): 18437835, CB 56 19 01 (not synchronized)
- Firmware version (uint32): F1A0120A, 0A 12 A0 F1
-- Firmware, image slot 1, processor A, version 01.20.A (unchanged since ground service)
- Number of resets (uint32): 1, 01 00 00 00 (no resets since the last power recycle from EPS)
- Number of errors (uint32): 115, 73 00 00 00 (since power-on)
- Heap free (uint32): 16920 Bytes, 18 42 00 00
- Number of commands handled (uint32): 25, 19 00 00 00 (since power-on)
- Number of internal communications packets received (uint32): 43, 2B 00 00 00
- MCU core temperature (float32): 18.16 *C, C2 46 91 41
- External RTC temperature (float32): 7.75 *C, 00 00 F8 40
- Number of successful transactions on SPI1 (uint32): 6645, F5 19 00 00
- Number of successful transactions on SPI2 (uint32): 1, 01 00 00 00
- Number of successful transactions on SPI3 (uint32): 16, 10 00 00 00
- Number of failed transactions on SPI1 (uint32): 0, 00 00 00 00
- Number of failed transactions on SPI2 (uint32): 0, 00 00 00 00
- Number of failed transactions on SPI3 (uint32): 0, 00 00 00 00
- Number of successful transactions on I2C1 (uint32): 43, 2B 00 00 00
- Number of successful transactions on I2C2 (uint32): 42, 2A 00 00 00
- Number of failed transactions on I2C1 (uint32): 0, 00 00 00 00
- Number of failed transactions on I2C2 (uint32): 0, 00 00 00 00
- The following parameters are unimplemented and reserved for the future.

EPS debug info

EPS debug data:
00 06 00 7A 02 03 00 76 EB 00 83 00 0F 0D 71 0A 6C 01 17 00 D0 0F DA 01 1D 00 12 00 
00 00 03 00 A0 00 01 00 1D 00 E9 00 00 00 10 00 61 00 E8 00 00 00 0E 00 60 00 26 00 
24 00 3A 00 B3 0F EF 05 47 02 04 00 59 0A 7C 03 0D 00 04 00 60 0A AC 00 65 0A 81 02 
BE 0F 67 02 33 07 1B 00 00 00 00 00 01 00 00 00 00 00 00 00 18 00 28 00 31 00 20 00 
20 00 20 00 CF 0F 67 00 25 1B 20 17 05 0D


Frame header:
00 06 00 7A
Source: EPS, 00
Destination: GS, 06
Length: 122, 74
 
Command header:
02 03 00 76
- Command ID: 515, 02 03
- Length: 118, 00 76
 
Command parameters:
EB 00 83 00 0F 0D 71 0A 6C 01 17 00 D0 0F DA 01 1D 00 12 00 00 00 03 00 A0 00 01 00 
1D 00 E9 00 00 00 10 00 61 00 E8 00 00 00 0E 00 60 00 26 00 24 00 3A 00 B3 0F EF 05 
47 02 04 00 59 0A 7C 03 0D 00 04 00 60 0A AC 00 65 0A 81 02 BE 0F 67 02 33 07 1B 00 
00 00 00 00 01 00 00 00 00 00 00 00 18 00 28 00 31 00 20 00 20 00 20 00 CF 0F 67 00 
25 1B 20 17 05 0D

In order to parse EPS debug info, it is suggested to take a look at some python code, which performs the calibration procedure as well.

EPS debug data parser python script is available in Appendix B

Here's an example on using the parser:

EPS debug data example

ADCS sensor measurements

02 06 00 60 42 62 20 5C 09 FA 75 02 49 0E 48 0E 3F 0E 87 00 4F 0E 4F 0E 4E 0E 4F 0E 85 
09 BC 08 CE 08 6E 0A 47 0E 48 0E 48 0E 48 0E 5D 0E 5F 0E 5E 0E 5C 0E 64 0E 64 0E 63 0E 
65 0E 00 00 00 00 F5 FF 81 FF 64 00 EA FE 2F 00 41 00 01 01 01 01 01 01 01 01 01 01 01 
01 4B 00 C1 FF 39 00 9C 00 4F 00 E6 FF

Frame header:
02 06 00 60
- Source: CDHS, 02
- Destination: GS, 06
- Length: 96 Bytes, 60
 
Command header:
42 62 20 5C
- Priority: High 42
- Command ID: ADCS raw sensor measurements, 02 62
- Length: 92 Bytes, 5C
 
Command parameters:
09 FA 75 02 49 0E 48 0E 3F 0E 87 00 4F 0E 4F 0E 4E 0E 4F 0E 85 09 BC 08 CE 08 6E 0A 47 
0E 48 0E 48 0E 48 0E 5D 0E 5F 0E 5E 0E 5C 0E 64 0E 64 0E 63 0E 65 0E 00 00 00 00 F5 FF 
81 FF 64 00 EA FE 2F 00 41 00 01 01 01 01 01 01 01 01 01 01 01 01 4B 00 C1 FF 39 00 9C 
00 4F 00 E6 FF

- Timestamp (uint32): 41286153, 09 FA 75 02 (not synchronized)
- 24 sun sensor measurements (uint16*24):
-- 3657, 3656, 3647, 135   , 49 0E 48 0E 3F 0E 87 00 (4th broken since assembly)
-- 3663, 3663, 3662, 3663  , 4F 0E 4F 0E 4E 0E 4F 0E
-- 2437, 2236, 2254, 2670  , 85 09 BC 08 CE 08 6E 0A
-- 3655, 3656, 3656, 3656  , 47 0E 48 0E 48 0E 48 0E
-- 3677, 3679, 3678, 3676  , 5D 0E 5F 0E 5E 0E 5C 0E
-- 3684, 3684, 3683, 3685  , 64 0E 64 0E 63 0E 65 0E
-- ADC temperatures: 0, 0  , 00 00 00 00 (not measured in the current firmware)
- Gyro 0 (int16*3):  Gyro 1 (int16*3):
-- X: -11,  F5 FF     X: -278, EA FE
-- Y: -127, 81 FF     Y: 47,   2F 00
-- Z: 100,  64 00     Z: 65,   41 00
- Gyro 2 (int16*3):  Gyro 3 (int16*3):
-- X: 257,  01 01     X: 257,  01 01 (257 means that the measurement is missing)
-- Y: 257,  01 01     Y: 257,  01 01 (that's due to I2C bugs with the gyros)
-- Z: 257,  01 01     Z: 257,  01 01
- Magnetometer 0 (int16*3):
-- X: 75,   4B 00 (gyros sometimes block the I2C bus,)
-- Y: -63,  C1 FF (causing magnetometer measurements to be zeroes)
-- Z: 57,   39 00
- Magnetometer 1 (int16*3):
-- X: 156,  9C 00 
-- Y: 79,   4F 00
-- Z: -26,  E6 FF

Packet beacon

CDHS packet beacon frame

02 06 00 22 02 00 20 1E 33 A2 7B 02 12 12 A0 F1 02 00 19 01 0A 00 20 00 F7 00 00 00 F8 
00 00 00 9E 05 8D 06 35 0C
 
Frame header:
02 06 00 22
Source: CDHS, 02
Destination: GS, 06
Length: 34 B, 22
 
Command header:
02 00 20 1E
- Command ID: 512, 02 00
- Source: CDHS, 20
- Length: 30 B, 1E

Command parameters:
33 A2 7B 02 12 12 A0 F1 02 00 19 01 0A 00 20 00 F7 00 00 00 F8 00 00 00 9E 05 8D 06 35
0C
- Timestamp: 41656883, 33 A2 7B 02 (not synchronized)
- Firmware ID: F1A01212, 12 12 A0 F1
-- Firmware, image slot 1, processor A, version 01.21.2 (newer CDHS firmware)
- Num resets: 2, 02 00 (since the last power recycle)
- Num errors: 281, 19 01 (number of exception since the last power recycle)
- Last error number: 10, 0A 00 (ICP packet sequence numbers out of order)
- Last error module number: 32, 20 00 (ICP communication channel with EPS)
- Num packets received: 247, F7 00 00 00 (since power recycle)
- Num commands handled: 248, F8 00 00 00 (since power recycle)
- MCU internal voltage reference: 1438 ADU, 9E 05
-- 3.3 * 1438 / 4095 = 1.1588 V
- MCU internal temperature: 1677 ADU, 8D 06
-- (1.43 - (3.3 * 1677 / 4095)) / 0.0043 + 25 = 43.27 *C (really hot in the lab)
-- Due to the way the MCU had been designed, temperature is measured against the
-- internal voltage reference, which is rather sensitive to temperature. So,
-- should take internal voltage reference into account here, somehow.
- RTC temperature: 3125, 35 0C
-- 3125 / 100 = 31.25 *C (really hot in the lab)

COM packet beacon frame

02 06 00 1D 02 02 20 19 12 A3 7B 02 4A 01 00 00 00 00 CE 00 00 6B 00 00 00 84 00 00 00 03 00 00 00
 
Frame header:
02 06 00 1D
Source: CDHS, 02
Destination: GS, 06
Length: 29 B, 1D
 
Command header:
02 02 20 19
- Command ID: 514, 02 02
- Source: CDHS, 20
- Length: 25 B, 19

Command parameters:
12 A3 7B 02 4A 01 00 00 00 00 CE 00 00 6B 00 00 00 84 00 00 00 03 00 00 00
- CDHS Timestamp: 41657106, 12 A3 7B 02 (not working properly)
- COM housekeeping data:
4A 01 00 00 00 00 CE 00 00 6B 00 00 00 84 00 00 00 03 00 00 00

 

ADCS packet beacon frame

	uint32_t timestamp;
	uint16_t num_ticks;
	spi_adc_vec_t sunsensors[ 2 ];
	int16_t sunsensor_t[ 2 ];
	i2c_g_vec_t gyro[ 4 ];
	int16_t gyro_t[ 4 ];
	i2c_m_vec_t magnetometer[ 2 ];
 
02 06 00 6E 02 01 20 6A 34 A2 7B 02 77 00 2A 02 E1 00 D2 00 FD 00 D4 00 29 01 04 01 2A
01 8C 00 D8 00 82 00 F6 00 66 02 EF 00 00 01 1B 01 83 00 44 01 26 01 4E 01 B3 00 AD 01
91 00 CF 00 00 00 00 00 00 00 00 00 14 00 ED FF F4 FF FE FF FD FF 02 00 08 00 EB FF F6
FF 9E FF 09 00 0E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 D5 FF FF FF EC FF

Frame header:
02 06 00 6E
Source: CDHS, 02
Destination: GS, 06
Length: 110 B, 74
 
Command header:
02 01 20 6A
- Command ID: 513, 02 01
- Source: CDHS, 20
- Length: 106 B, 6A
 
Command parameters:
34 A2 7B 02 77 00 2A 02 E1 00 D2 00 FD 00 D4 00 29 01 04 01 2A 01 8C 00 D8 00 82 00 F6
00 66 02 EF 00 00 01 1B 01 83 00 44 01 26 01 4E 01 B3 00 AD 01 91 00 CF 00 00 00 00 00
00 00 00 00 14 00 ED FF F4 FF FE FF FD FF 02 00 08 00 EB FF F6 FF 9E FF 09 00 0E 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 D5 FF FF FF EC FF
- CDHS timestamp: 41656884, 34 A2 7B 02
- Number of ticks it took to measure the sensors: 119, 77 00 (tick is 1 ms)
- 24 sun sensor measurements (uint16*24):
 
TODO:: Capture the frame from Flight. Measurements on the stack are not a very good example.

EPS packet beacon frame

02 06 00 7A 02 03 20 76 68 A2 7B 02 EC 00 84 00 25 0D 7B 0A 1E 00 46 01 DA 0F 08 01 19
00 17 00 00 00 03 00 A0 00 24 00 4E 00 3B 00 00 00 00 00 36 00 3A 00 00 00 00 00 35 00
00 00 00 00 00 00 BF 0F BA 04 F9 01 05 00 63 0A D4 03 0E 00 04 00 6B 0A E0 00 6D 0A D5
02 EA 01 06 00 01 08 11 00 00 00 00 00 01 00 00 00 00 00 00 00 8F 00 FB 00 01 01 8F 00
8F 00 8F 00 CF 05 65 00 21 13


Frame header:
02 06 00 7A
Source: CDHS, 02
Destination: GS, 06
Length: 122 B, 74
 
Command header:
02 03 20 76
- Command ID: 515, 02 03
- Source: CDHS, 20
- Length: 118 B, 76
 
Command parameters:
68 A2 7B 02 EC 00 84 00 25 0D 7B 0A 1E 00 46 01 DA 0F 08 01 19 00 17 00 00 00 03 00 A0
00 24 00 4E 00 3B 00 00 00 00 00 36 00 3A 00 00 00 00 00 35 00 00 00 00 00 00 00 BF 0F
BA 04 F9 01 05 00 63 0A D4 03 0E 00 04 00 6B 0A E0 00 6D 0A D5 02 EA 01 06 00 01 08 11
00 00 00 00 00 01 00 00 00 00 00 00 00 8F 00 FB 00 01 01 8F 00 8F 00 8F 00 CF 05 65 00
21 13
- CDHS timestamp: 41656936, 68 A2 7B 02 (not synchronized)
- 57 half-words of EPS debug data:
EC 00 84 00 25 0D 7B 0A 1E 00 46 01 DA 0F 08 01 19 00 17 00 00 00 03 00 A0 00 24 00 4E
00 3B 00 00 00 00 00 36 00 3A 00 00 00 00 00 35 00 00 00 00 00 00 00 BF 0F BA 04 F9 01
05 00 63 0A D4 03 0E 00 04 00 6B 0A E0 00 6D 0A D5 02 EA 01 06 00 01 08 11 00 00 00 00
00 01 00 00 00 00 00 00 00 8F 00 FB 00 01 01 8F 00 8F 00 8F 00 CF 05 65 00 21 13
 
TODO:: Capture the frame from Flight

Appendixes

Appendix A: Examples

EPS debug data

00 06 00 7A 02 03 00 76 E7 00 81 00 E0 0C 70 0A 78 01 16 00 CF 0F E2 01 1D 00 12 00 
00 00 03 00 A0 00 01 00 21 00 E6 00 00 00 00 00 5F 00 E6 00 01 00 00 00 5F 00 3B 00 
16 00 0A 00 B2 0F 25 06 4A 02 04 00 59 0A 7F 03 0D 00 04 00 60 0A AE 00 64 0A A7 02 
BF 0F 6E 02 32 07 1B 00 00 00 00 00 01 00 00 00 00 00 00 00 0B 00 17 00 1A 00 23 00 
23 00 23 00 CF 0F 67 00 23 02 1E 17 05 0D
 
('Battery A', 4.0716927926271715)
('Battery B', 4.072051208715805)
('Battery temp A', 6.709399999999995)
('Battery temp B', 6.709399999999995)
('BP A fb CS', 0)
('BP A tb CS', 0)
('BP B fb CS', 0.00040039105459699874)
('BP B tb CS', 0)
('Coil A CS', 0)
('Coil B CS', 0)
('Coil C CS', 0)
('CTL ADCS 5v', 4.980458941264448)
('CTL ADCS CS', 0.073104008166561)
('CTL CAM 3V3', 0.726942028984217)
('CTL CAM 3V3 CS', 0)
('CTL CDHS A 3V3', 3.284242863802379)
('CTL CDHS A CS', 0.054831217326863003)
('CTL CDHS B 3V3', 0.016223556406495)
('CTL CDHS B CS', 0)
('CTL CDHS bsw 3V3', 3.291385992845687)
('CTL CDHS bsw CS', 0.009778745985272001)
('CTL COM 3V3', 3.295851746965024)
('CTL COM 5V', 4.9953371316024935)
('CTL COM CS', 0.10141362926613799)
('CTL PL 12v CS', 0)
('CTL PL 3V3', 2.2924121082713538)
('CTL PL 3V3 CS', 0.000220321136196)
('CTL PL 5V', 0)
('CTL PL 5V CS', 0)
('MPB avr', 4.0919970121381)
('MPB Ext', 4.071769695193406)
('MPB Ext1280', 4.0885944615647105)
('MPPT A CS', 0.26081633015250705)
('MPPT B CS', 0.09420250451687999)
('MPPT C CS', 0.04401332402387)
('Reg 12V A CS', 0)
('Reg 12V B CS', 0)
('Reg 12V out', 0.051392286660855)
('Reg 3V3 A CS', 0.10848338433160601)
('Reg 3V3 B CS', 0.003626085633594)
('Reg 5V A CS', 0.225766486954952)
('Reg 5V B CS', 0.0029829946090240006)
('Reg 5V out', 5.01277334432528)
('Reg 3V3 OUT', 3.2938453250540882)
('SPB A CS', 0.0006965476051740002)
('SPB B CS', 0.038485861204994004)
('SPB out', 5.070535721410648)
('XA Reg & battery', '0b111111001111')
('XB CTLS', '0b1100111')
('TIME: ', '2013-5-23 30:2:35') <= There's still a bug in parsing the time
00 06 00 7A 02 03 00 76 E9 00 83 00 04 0D 71 0A 7A 01 17 00 CF 0F 2B 01 1D 00 11 00 
00 00 01 00 A0 00 01 00 1C 00 E9 00 00 00 11 00 60 00 E9 00 00 00 12 00 5F 00 40 00 
30 00 0C 00 5B 00 06 00 43 02 04 00 5A 0A 78 03 0C 00 04 00 61 0A E6 00 67 0A 77 02 
BD 0F 64 02 33 07 1B 00 01 00 00 00 01 00 00 00 00 00 00 00 11 00 25 00 28 00 20 00 
20 00 20 00 CF 0F 66 00 18 2D 0A 17 05 0D
 
('Battery A', 4.124751254855115)
('Battery B', 4.124986459637998)
('Battery temp A', 7.423300000000005)
('Battery temp B', 6.709399999999995)
('BP A fb CS', 0)
('BP A tb CS', 0.11473014204799101)
('BP B fb CS', 0)
('BP B tb CS', 0.12308917080168198)
('Coil A CS', 0)
('Coil B CS', 0)
('Coil C CS', 0)
('CTL ADCS 5v', 0.11157115328092101)
('CTL ADCS CS', 0.00028267453636200007)
('CTL CAM 3V3', 0.718279734464653)
('CTL CAM 3V3 CS', 0)
('CTL CDHS A 3V3', 3.2854823750552278)
('CTL CDHS A CS', 0.054397528637604005)
('CTL CDHS B 3V3', 0.01497942689856)
('CTL CDHS B CS', 0)
('CTL CDHS bsw 3V3', 3.2926252496279513)
('CTL CDHS bsw CS', 0.013224167884464002)
('CTL COM 3V3', 3.299566444444015)
('CTL COM 5V', 4.992857433212892)
('CTL COM CS', 0.099751147194258)
('CTL PL 12v CS', 0)
('CTL PL 3V3', 2.2936477408333267)
('CTL PL 3V3 CS', 0.000220321136196)
('CTL PL 5V', 0)
('CTL PL 5V CS', 0)
('MPB avr', 4.127319265483883)
('MPB Ext', 4.135881711606068)
('MPB Ext1280', 4.133269687032054)
('MPPT A CS', 0.282742575683512)
('MPPT B CS', 0.20723179586694598)
('MPPT C CS', 0.052534141564358)
('Reg 12V A CS', 0)
('Reg 12V B CS', 0)
('Reg 12V out', 0.047627029209799006)
('Reg 3V3 A CS', 0.109098865406156)
('Reg 3V3 B CS', 0.003931684453989)
('Reg 5V A CS', 0.13484032328966)
('Reg 5V B CS', 0.0029829946090240006)
('Reg 5V out', 5.01277334432528)
('Reg 3V3 OUT', 3.2950846225622423)
('SPB A CS', 0.0006965476051740002)
('SPB B CS', 0.032619688847459)
('SPB out', 5.070535721410648)
('XA Reg & battery', '0b111111001111')
('XB CTLS', '0b1100110')
('TIME: ', '2013-5-23 10:45:24') <= There's still a bug in parsing the time

 

CDHS telemetry

02 06 00 94 02 36 20 90 6E 6D 1F 01 0A 12 A0 F1 01 00 00 00 16 04 00 00 18 42 00 00
5E 0C 00 00 E4 0D 00 00 FB 9E 15 41 00 00 30 C0 E9 7B 22 00 01 00 00 00 34 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 78 03 00 00 BB 03 00 00 A8 00 00 00 5C 00 00 00 
FF FF FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 64 01
 
18836846 TM1 f1a0120a:
- Resets, errors: 1, 1046
- Free heap: 16920
- Num commands, packets: 3166, 3556
- Core temperature: 9.351313591 *C
- RTC temperature: -2.75 *C
- SPI1 transactions ok/fail: 2259945/0
- SPI2 transactions ok/fail: 1/0
- SPI3 transactions ok/fail: 52/0
- I2C1 transactions ok/fail: 888/168
- I2C2 transactions ok/fail: 955/92
- ICP EPS latency: 65535
- ICP COM latency: 65535
- ICP CAM latency: 65535
02 06 00 94 02 36 20 90 77 89 75 01 0A 12 A0 F1 01 00 00 00 24 09 00 00 18 42 00 00 
B8 34 00 00 5B 38 00 00 F5 98 45 41 00 00 00 40 D8 8D 9C 00 01 00 00 00 26 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 22 0A 00 00 0B 0A 00 00 CA 00 00 00 D2 00 00 00 
FF FF FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 64 01
 
24480119 TM1 f1a0120a:
- Resets, errors: 1, 2340
- Free heap: 16920
- Num commands, packets: 13496, 14427
- Core temperature: 12.3498430252 *C
- RTC temperature: 2.0 *C
- SPI1 transactions ok/fail: 10259928/0
- SPI2 transactions ok/fail: 1/0
- SPI3 transactions ok/fail: 38/0
- I2C1 transactions ok/fail: 2594/202
- I2C2 transactions ok/fail: 2571/210
- ICP EPS latency: 65535
- ICP COM latency: 65535
- ICP CAM latency: 65535

 

COM housekeeping data

01 06 00 19 00 05 00 15 0F 00 00 00 00 00 B5 00 00 C0 04 00 00 B7 04 00 00 4F 00 00 00
 
COM housekeeping data:
- Bootcount: 15
- Downlink temperature: 0 *C
- MCU temperature: 0 *C
- RSSI: -75
- AFC: 0 Hz
- Num packets to ground: 1216
- Num packets from ground: 1207
- Num packets from ground dropped: 79.
01 06 00 19 40 05 20 15 0E 00 00 00 00 00 AA 00 00 2B 1B 00 00 27 1B 00 00 34 03 00 00
 
COM housekeeping data:
- Bootcount: 14
- Downlink temperature: 0 *C
- MCU temperature: 0 *C
- RSSI: -86
- AFC: 0 Hz
- Num packets to ground: 6955
- Num packets from ground: 6951
- Num packets from ground dropped: 820.

ADCS sensor measurements

 
 

Appendix B: Python script for parsing EPS debug data 

from datetime import datetime

class DebugData:
    def __init__(self, rawData):
        calibratedData = self.calibrate_data(rawData)
        self.mpb_avr = ("MPB avr", calibratedData[0])
        self.mpb_ext = ("MPB Ext", calibratedData[1])
        self.mpb_ext1280 = ("MPB Ext1280", calibratedData[2])      
        self.reg_3v3_out = ("Reg 3V3 OUT", calibratedData[3])
        self.reg3v3_a_cs = ("Reg 3V3 A CS", calibratedData[4])
        self.reg3v3_b_cs = ("Reg 3V3 B CS", calibratedData[5])      
        self.reg5v_out = ("Reg 5V out", calibratedData[6])
        self.reg5v_a_cs = ("Reg 5V A CS", calibratedData[7])
        self.reg5v_b_cs = ("Reg 5V B CS", calibratedData[8])
        self.reg12v_out = ("Reg 12V out", calibratedData[9])
        self.reg12v_a_cs = ("Reg 12V A CS", calibratedData[10])
        self.reg12v_b_cs = ("Reg 12V B CS", calibratedData[11])
        self.spb_out = ("SPB out", calibratedData[12])
        self.spb_a_cs = ("SPB A CS", calibratedData[13])
        self.spb_b_cs = ("SPB B CS", calibratedData[14])
        self.bat_a = ("Battery A", calibratedData[15])
        self.bp_a_fb_cs = ("BP A fb CS", calibratedData[16])
        self.bp_a_tb_cs = ("BP A tb CS", calibratedData[17])
        self.bat_temp_a = ("Battery temp A",  calibratedData[18])
        self.bat_b = ("Battery B", calibratedData[19])    
        self.bp_b_fb_cs = ("BP B fb CS", calibratedData[20])
        self.bp_b_tb_cs = ("BP B tb CS", calibratedData[21])
        self.bat_temp_b = ("Battery temp B",  calibratedData[22])
        self.mppt_a_cs = ("MPPT A CS", calibratedData[23])
        self.mppt_b_cs = ("MPPT B CS", calibratedData[24])
        self.mppt_c_cs = ("MPPT C CS", calibratedData[25])
        self.ctl_adcs_5v = ("CTL ADCS 5v", calibratedData[26])
        self.ctl_adcs_cs = ("CTL ADCS CS", calibratedData[27])
        self.ctl_cam_3v3 = ("CTL CAM 3V3", calibratedData[28])
        self.ctl_cam_3v3_cs = ("CTL CAM 3V3 CS", calibratedData[29])
        self.ctl_cdhs_a_3v3 = ("CTL CDHS A 3V3", calibratedData[30])
        self.ctl_cdhs_a_cs = ("CTL CDHS A CS", calibratedData[31])
        self.ctl_cdhs_b_3v3 = ("CTL CDHS B 3V3", calibratedData[32])
        self.ctl_cdhs_b_cs = ("CTL CDHS B CS", calibratedData[33])
        self.ctl_cdhs_bsw_3v3 = ("CTL CDHS bsw 3V3", calibratedData[34])
        self.ctl_cdhs_bsw_cs = ("CTL CDHS bsw CS", calibratedData[35])
        self.ctl_com_3v3 = ("CTL COM 3V3", calibratedData[36])
        self.ctl_com_cs = ("CTL COM CS", calibratedData[37])
        self.ctl_com_5v = ("CTL COM 5V", calibratedData[38])  
        self.ctl_com_cs = ("CTL COM CS", calibratedData[39])
        self.ctl_pl_3v3 = ("CTL PL 3V3", calibratedData[40])
        self.ctl_pl_3v3_cs = ("CTL PL 3V3 CS", calibratedData[41])
        self.ctl_pl_5v = ("CTL PL 5V", calibratedData[42])
        self.ctl_pl_5v_cs = ("CTL PL 5V CS", calibratedData[43])
        self.ctl_pl_12v_cs = ("CTL PL 12v CS", calibratedData[44])    
        self.coil_a_cs = ("Coil A CS",  calibratedData[45])
        self.coil_b_cs = ("Coil B CS",  calibratedData[46])
        self.coil_c_cs = ("Coil C CS",  calibratedData[47])
        
        self.ss_bat_reg = ("XA Reg & battery", bin(rawData[54]))
        self.ss_ctl = ("XB CTLS", bin(rawData[55]))
        
        if len(rawData) > 58:
            year = int((rawData[58]&0xFF00)>>8)+2000
            month = int(rawData[58]&0x00FF)
            day = int((rawData[57]&0xFF00)>>8)
            hour = int(rawData[57]&0x00FF)
            minute = int((rawData[56]&0xFF00)>>8)
            second = int(rawData[56]&0x00FF)
            self.x_time = ("TIME: ", '%d-%d-%d %d:%d:%d' % (year, month, day, hour, minute, second))
        else:
            self.x_time = ("TIME: ", "N/A") 
        pass
    
    def calibrate_data(self, data):
        calibrated = []
        for i in xrange(len(self.calibMatrix)):
            x = data[i]*self.calibMatrix[i][1]+self.calibMatrix[i][0]
            if x < 0 or x == self.calibMatrix[i][0]:
                x = 0
            calibrated.append(x)
        return calibrated

    def __str__(self):
        return str(vars(self))
    
    calibMatrix = [
        [0.01227675070028, 0.017661126672891],      #mpb avr          CALIBRATED
        [-0.063455363423293, 0.032056008206331],    #mpb ext          CALIBRATED
        [-0.001670625667674, 0.001240978485204],    #mpb ext1280      CALIBRATED      
        [-0.0175576167334, 0.001239297508154],      #reg 3v3 out      CALIBRATED
        [-0.007227057683794, 0.000307740537275],    #reg3v3 A cs      CALIBRATED
        [-0.003097088415096, 0.000305598820395],    #reg3v3 B cs      CALIBRATED      
        [-0.011397965741097, 0.001241455722774],    #reg5v out        CALIBRATED
        [-0.013722097125216, 0.000496864282324],    #reg5v A cs       CALIBRATED
        [-0.011070410095182, 0.000484600162214],    #reg5v B cs       CALIBRATED
        [-0.016382347458153, 0.003765257451056],    #reg12v out       CALIBRATED
        [-0.010855060016466, 0.00061703239377],     #reg12v A cs      CALIBRATED
        [-0.028026264107733, 0.000619231089947],    #reg12v B cs      CALIBRATED
        [0.001022607522009, 0.031684456961804],     #spb out          CALIBRATED
        [-0.000479332245659, 0.001175879850833],    #spb A cs         CALIBRATED
        [-0.000230876354737, 0.001173234471507],    #spb B cs         CALIBRATED
        [0.003877355151542, 0.017686154075981],     #bat A            CALIBRATED
        [0.001093081874496, 0.011643166228315],     #bp A fb cs       CALIBRATED
        [-0.003603889505628, 0.006960825385507],    #bp A tb cs       CALIBRATED
        [-61.1111, 0.7139],                         #bat temp a
        [0.013681971347675, 0.017645083640731],     #bat B            CALIBRATED    
        [-0.011059187936168, 0.011459578990765],    #bp B fb cs       CALIBRATED
        [0.000068123352458, 0.006834502636068],     #bp B tb cs       CALIBRATED
        [-61.1111, 0.7139],                         #bate temp b
        [0.002086632886648, 0.004385249106201],     #mppt A cs        CALIBRATED
        [-0.001437665087022, 0.004347280436541],    #mppt B cs        CALIBRATED
        [0.00140923632143, 0.004260408770244],      #mppt c cs        CALIBRATED
        [-0.00125512344597, 0.001239849194801],     #ctl adcs 5v      CALIBRATED
        [0.00000384364818, 0.000046471814697],      #ctl adcs cs      CALIBRATED
        [0.001784230632145, 0.001237470645652],     #ctl cam 3v3      CALIBRATED
        [-0.000578278740385, 0.000061348145579],    #ctl cam 3v3 cs   CALIBRATED
        [0.000777555005378, 0.001239511252849],     #ctl CDHS  A 3v3   CALIBRATED
        [-0.000618979371252, 0.000061955527037],    #ctl CDHS  A cs    CALIBRATED
        [0.00004987280334, 0.001244129507935],      #ctl CDHS  B 3v3   CALIBRATED
        [-0.000501746101317, 0.000061638045431],    #ctl CDHS  B cs    CALIBRATED
        [-0.000080020847497, 0.001239256782264],    #ctl CDHS  bsw 3v3 CALIBRATED
        [-0.000926672058646, 0.000061525391057],    #ctl CDHS  bsw cs  CALIBRATED
        [0.002153315593004, 0.001238232492997],     #ctl COM 3v3      CALIBRATED
        [0.000052142629031, 0.00008259719615],      #ctl COM cs       CALIBRATED
        [-0.002494972640338, 0.001239849194801],    #ctl COM 5v       CALIBRATED  
        [-0.001992755604798, 0.000166248207188],    #ctl COM cs       CALIBRATED
        [0.016376929117088, 0.001235632561973],     #ctl PL 3v3       CALIBRATED
        [-0.000377994847878, 0.000022159851262],    #ctl PL 3v3 cs    CALIBRATED
        [-0.00125512344597, 0.001239849194801],     #ctl PL 5v        CALIBRATED
        [-0.000244038892911, 0.000081666238202],    #ctl PL 5v cs     CALIBRATED
        [-0.004367297465347, 0.000140486079184],    #ctl PL 12v cs    CALIBRATED    
        [0.0, 0.000061035],                         #coil A cs
        [0.0, 0.000061035],                         #coil B CS
        [0.0, 0.000061035],                         #coil c CS
        [0.0, 0.0],                                 # 48 
        [0.0, 0.0],                                 # 49
        [0.0, 0.0],                                 # 50
        [0.0, 0.0],                                 # 51
        [0.0, 0.0],                                 # 52
        [0.0, 0.0]]                                 # 53