PhoneSat Packet description

Introduction

PhoneSat 2.4 and 2.5 send AX.25 UI packets at 437.425MHz using AFSK 1200 modulation. The callsign used is KJ6KRW. There are 3 types of packets depending on the state of the satellite: charging, BDot and pointing.

  • When the satellite is active (phone on, discharging batteries), it will transmit either BDot or pointing packets every 30 seconds.
  • When the satellite is asleep (phone off, charging batteries), it will transmit packets every 150 seconds.

The satellite goes into charging mode (phone off) when the battery drops below 7.33V and wakes up (phone on) when the battery voltage rises above 8.05V.

This page describes the content of these packets.

Packets are divided between header and sensor values. The headers consist of ASCII characters that do not need decoding. The sensor values are encoded using the base-224 encoding described below.

Base-224 encoding

Each encoded data field of the packet has a fixed number of bytes, named n.

Each of these bytes, named B0, B1, ..., Bn-1 , has a value between 32 and 255. The byte values 0 to 31 are avoided to make the encoding compatible with the TNCs that do not support control characters.

This makes 224 possible values per byte, and 224^n values for the data field. The integer value of a data field, named I, is determined by:

I = sum((Bi-32) * 224^(n-i)) with i going from 1 to n

Finally, the physical value of the data field, named V , needs to be computed by linearly scaling I into a physical range [Vmin, Vmax]:

V = Vmin + (I * (Vmax - Vmin) / ((224^n)-1))

Charge packet

Charge packets are 115-121 bytes long and are sent every 150 seconds.

These packets have a variable length, comma separated ASCII header of 10 to 16 bytes that contains the Satellite ID, the packet type, the battery voltage and two reboot counters:

satellite identifier,packet type,battery voltage,phone reboots,ACS reboots

  • satellite identifier: "P4" or "P5"
  • packet type: "C"
  • battery voltage: Battery voltage multiplied by 102.4 (1/V)
  • phone reboots: number of phone reboots
  • ACS reboots: number of ACS reboots

The rest of the data fields needs to be converted using base-224 as specified in the following table.

Offset Size Var Name Description Scale Min Scale Max
0 1 Satellite ID "4" or "5"
1 2 mag_bef[X] magnetic field-X: before test -999 uT +999 uT
3 2 gyro_bef[X] rotation speed-X: before test -20 rad/s +20 rad/s
5 2 magP_actHI[X] magnetic field-X: coil active +X HI(255) -999 uT +999 uT
7 2 magP_actMed[X] magnetic field-X: coil active +X Med(127) -999 uT +999 uT
9 2 magN_actHI[X] magnetic field-X: coil active -X HI(255) -999 uT +999 uT
11 2 magN_actMed[X] magnetic field-X: coil active -X Med(127) -999 uT +999 uT
13 2 gyroP_actHI[X] rotation speed-X: RW active +X HI(255) -20 rad/s +20 rad/s
15 2 gyroP_actMed[X] rotation speed-X: RW active +X Med(127) -20 rad/s +20 rad/s
17 2 gyroN_actHI[X] rotation speed-X: RW active -X HI(255) -20 rad/s +20 rad/s
19 2 gyroN_actMed[X] rotation speed-X: RW active -X Med(127) -20 rad/s +20 rad/s
21 2 mag_aft[X] magnetic field-X: after test -999 uT +999 uT
23 2 gyro_aft[X] rotation speed-X: after test -20 rad/s +20 rad/s
25 2 mag_bef[Y] magnetic field-Y: before test -999 uT +999 uT
27 2 gyro_bef[Y] rotation speed-Y: before test -20 rad/s +20 rad/s
29 2 magP_actHI[Y] magnetic field-Y: coil active +X HI(255) -999 uT +999 uT
31 2 magP_actMed[Y] magnetic field-Y: coil active +X Med(127) -999 uT +999 uT
33 2 magN_actHI[Y] magnetic field-Y: coil active -X HI(255) -999 uT +999 uT
35 2 magN_actMed[Y] magnetic field-Y: coil active -X Med(127) -999 uT +999 uT
37 2 gyroP_actHI[Y] rotation speed-Z: RW active +X HI(255) -20 rad/s +20 rad/s
39 2 gyroP_actMed[Y] rotation speed-Z: RW active +X Med(127) -20 rad/s +20 rad/s
41 2 gyroN_actHI[Y] rotation speed-Y: RW active -X HI(255) -20 rad/s +20 rad/s
43 2 gyroN_actMed[Y] rotation speed-Y: RW active -X Med(127) -20 rad/s +20 rad/s
45 2 mag_aft[Y] magnetic field-Y: after test -999 uT +999 uT
47 2 gyro_aft[Y] rotation speed-Y: after test -20 rad/s +20 rad/s
49 2 mag_bef[Z] magnetic field-Z: before test -999 uT +999 uT
51 2 gyro_bef[Z] rotation speed-Z: before test -20 rad/s +20 rad/s
53 2 magP_actHI[Z] magnetic field-Z: coil active +X HI(255) -999 uT +999 uT
55 2 magP_actMed[Z] magnetic field-Z: coil active +X Med(127) -999 uT +999 uT
57 2 magN_actHI[Z] magnetic field-Z: coil active -X HI(255) -999 uT +999 uT
59 2 magN_actMed[Z] magnetic field-Z: coil active -X Med(127) -999 uT +999 uT
61 2 gyroP_actHI[Z] rotation speed-Z: RW active +X HI(255) -20 rad/s +20 rad/s
63 2 gyroP_actMed[Z] rotation speed-Z: RW active +X Med(127) -20 rad/s +20 rad/s
65 2 gyroN_actHI[Z] rotation speed-Z: RW active -X HI(255) -20 rad/s +20 rad/s
67 2 gyroN_actMed[Z] rotation speed-Z: RW active -X Med(127) -20 rad/s +20 rad/s
69 2 mag_aft[Z] magnetic field-Z: after test -999 uT +999 uT
71 2 gyro_aft[Z] rotation speed-Z: after test -20 rad/s +20 rad/s
73 2 i_MHX current of MHX 0 mA 2140 mA
75 2 i_ADCS current of ADCS 0 mA 196 mA
77 2 i_solarXp current of solar panel X+ 0 mA 250 mA
79 2 i_solarXn current of solar panel X- 0 mA 250 mA
81 2 i_solarYp current of solar panel Y+ 0 mA 250 mA
83 2 i_solarYn current of solar panel Y- 0 mA 250 mA
85 2 i_solarZp current of solar panel Z+ 0 mA 250 mA
87 2 i_solarZn current of solar panel Z- 0 mA 250 mA
89 2 t_phone temp of phone board -273.15 deg C +226.85 deg C
91 2 t_ADCS_MHX temp of ADCS_MHX board -273.15 deg C +226.85 deg C
93 2 t_solarXp temp of solar panel X+ -273.15 deg C +226.85 deg C
95 2 t_solarXn temp of solar panel X- -273.15 deg C +226.85 deg C
97 2 t_solarYp temp of solar panel Y+ -273.15 deg C +226.85 deg C
99 2 t_solarYn temp of solar panel Y- -273.15 deg C +226.85 deg C
101 2 t_solarZp temp of solar panel Z+ -273.15 deg C +226.85 deg C
103 2 t_solarZn temp of solar panel Z- -273.15 deg C +226.85 deg C

BDot packet

BDot packets are 123 bytes long and are sent every 30 seconds.

All the information needs to be decoded except for the first three variables that contain the satellite ID and the packet type, "P4D" or "P4A".

The table below describes the data fields of the packet.

Offset Size Name Description Scale Min Scale Max
0 2 Satellite "P4" or "P5"
2 1 packet type "B"
3 5 mtime Mission time (milliseconds)
8 5 ptime Phone time (seconds)
13 4 bdot_time (1) BDot time (seconds)
17 2 bdot_mag_x (1) magnetic field intensity-x -999 uT +999 uT
19 2 bdot_mag_y (1) magnetic field intensity-y -999 uT +999 uT
21 2 bdot_mag_z (1) magnetic field intensity-z -999 uT +999 uT
23 2 bdot_gyro_x (1) calibrated raw spin rate-x -20 rad/s +20 rad/s
25 2 bdot_gyro_y (1) calibrated raw spin rate-y -20 rad/s +20 rad/s
27 2 bdot_gyro_z (1) calibrated raw spin rate-z -20 rad/s +20 rad/s
29 2 bdot_coil_x (1) magnetorquer coil value-x -100 uT +100 uT
31 2 bdot_coil_y (1) magnetorquer coil value-y -100 uT +100 uT
33 2 bdot_coil_z (1) magnetorquer coil value-z -100 uT +100 uT
35 4 bdot_time (2) BDot time (seconds)
39 2 bdot_mag_x (2) magnetic field intensity-x -999 uT +999 uT
41 2 bdot_mag_y (2) magnetic field intensity-y -999 uT +999 uT
43 2 bdot_mag_z (2) magnetic field intensity-z -999 uT +999 uT
45 2 bdot_gyro_x (2) calibrated raw spin rate-x -20 rad/s +20 rad/s
47 2 bdot_gyro_y (2) calibrated raw spin rate-y -20 rad/s +20 rad/s
49 2 bdot_gyro_z (2) calibrated raw spin rate-z -20 rad/s +20 rad/s
51 2 bdot_coil_x (2) magnetorquer value-x -100 uT +100 uT
53 2 bdot_coil_y (2) magnetorquer value-y -100 uT +100 uT
55 2 bdot_coil_z (2) magnetorquer value-z -100 uT +100 uT
57 4 bdot_time (3) BDot time (seconds)
61 2 bdot_mag_x (3) magnetic field intensity-x -999 uT +999 uT
63 2 bdot_mag_y (3) magnetic field intensity-y -999 uT +999 uT
65 2 bdot_mag_z (3) magnetic field intensity-z -999 uT +999 uT
67 2 bdot_gyro_x (3) calibrated raw spin rate-x -20 rad/s +20 rad/s
69 2 bdot_gyro_y (3) calibrated raw spin rate-y -20 rad/s +20 rad/s
71 2 bdot_gyro_z (3) calibrated raw spin rate-z -20 rad/s +20 rad/s
73 2 bdot_coil_x (3) magnetorquer value-x -100 uT +100 uT
75 2 bdot_coil_y (3) magnetorquer value-y -100 uT +100 uT
77 2 bdot_coil_z (3) magnetorquer value-z -100 uT +100 uT
79 4 bdot_time (4) BDot time (seconds)
83 2 bdot_mag_x (4) magnetic field intensity-x -999 uT +999 uT
85 2 bdot_mag_y (4) magnetic field intensity-y -999 uT +999 uT
87 2 bdot_mag_z (4) magnetic field intensity-z -999 uT +999 uT
89 2 bdot_gyro_x (4) calibrated raw spin rate-x -20 rad/s +20 rad/s
91 2 bdot_gyro_y (4) calibrated raw spin rate-y -20 rad/s +20 rad/s
93 2 bdot_gyro_z (4) calibrated raw spin rate-z -20 rad/s +20 rad/s
95 2 bdot_coil_x (4) magnetorquer value-x -100 uT +100 uT
97 2 bdot_coil_y (4) magnetorquer value-y -100 uT +100 uT
99 2 bdot_coil_z (4) magnetorquer value-z -100 uT +100 uT
101 4 bdot_time (5) BDot time (seconds)
105 2 bdot_mag_x (5) magnetic field intensity-x -999 uT +999 uT
107 2 bdot_mag_y (5) magnetic field intensity-y -999 uT +999 uT
109 2 bdot_mag_z (5) magnetic field intensity-z -999 uT +999 uT
111 2 bdot_gyro_x (5) calibrated raw spin rate-x -20 rad/s +20 rad/s
113 2 bdot_gyro_y (5) calibrated raw spin rate-y -20 rad/s +20 rad/s
115 2 bdot_gyro_z (5) calibrated raw spin rate-z -20 rad/s +20 rad/s
117 2 bdot_coil_x (5) magnetorquer value-x -100 uT +100 uT
119 2 bdot_coil_y (5) magnetorquer value-y -100 uT +100 uT
121 2 bdot_coil_z (5) magnetorquer value-z -100 uT +100 uT

Pointing packet

Pointing packets are 118 bytes long and are sent every 30 seconds.

All the information needs to be decoded except the first three variables that contain the satellite ID and the packet type, "P4P".

The table below describes the data fields of the packet.

Offset Size Name Description Scale Min Scale Max
0 2 Satellite "P4" or "P5"
2 1 Packet type "P"
3 5 mtime mission time (milliseconds)
8 5 utime POSIX time (seconds since 1970)
13 2 mag_x magnetic field intensity-x -999 uT +999 uT
15 2 mag_y magnetic field intensity-y -999 uT +999 uT
17 2 mag_z magnetic field intensity-z -999 uT +999 uT
19 2 coil_x magnetorquer value-x -100 uT +100 uT
21 2 coil_y magnetorquer value-y -100 uT +100 uT
23 2 coil_z magnetorquer value-z -100 uT +100 uT
25 2 magref_x magnetorquer ref-x -100 uT +100 uT
27 2 magref_y magnetorquer ref-y -100 uT +100 uT
29 2 magref_z magnetorquer ref-z -100 uT +100 uT
31 2 sunref_x sun reference-x 0 2147483647
33 2 sunref_y sun reference-y 0 2147483647
35 2 sunref_z sun reference-z 0 2147483647
37 2 gyro_x calibrated raw spin rate-x -20 rad/s +20 rad/s
39 2 gyro_y calibrated raw spin rate-y -20 rad/s +20 rad/s
41 2 gyro_z calibrated raw spin rate-z -20 rad/s +20 rad/s
43 2 PWM_x Reaction wheel speed -7000 rpm +7000 rpm
45 2 PWM_y Reaction wheel speed -7000 rpm +7000 rpm
47 2 PWM_z Reaction wheel speed -7000 rpm +7000 rpm
49 2 quat_1 Q_estimate(1) -- Attitude -1 +1
51 2 quat_2 Q_estimate(2) -- Attitude -1 +1
53 2 quat_3 Q_estimate(3) -- Attitude -1 +1
55 2 wuat_4 Q_estimate(4) -- Attitude -1 +1
57 2 spin_x Filtered spin rate -20 rad/s +20 rad/s
59 2 spin_Y Filtered spin rate -20 rad/s +20 rad/s
61 2 spin_z Filtered spin rate -20 rad/s +20 rad/s
63 3 pos_x position X: ref to center of earth -8000000 km +8000000 km
66 3 pos_y position Y: ref to center of earth -8000000 km +8000000 km
69 3 pos_z position Z: ref to center of earth -8000000 km +8000000 km
72 2 vel_x velocity X -9000 m/s +9000 m/s
74 2 vel_y velocity Y -9000 m/s +9000 m/s
76 2 vel_z velocity Z -9000 m/s +9000 m/s
78 2 bat_volt scaled battery to voltage 0 V 9.77 V
80 2 i_MHX current of MHX board 0 mA 2140 mA
82 2 i_ADCS current of ADCS board 0 mA 196 mA
84 2 i_solarXp current of solar panel X+ 0 mA 250 mA
86 2 i_solarXn current of solar panel X- 0 mA 250 mA
88 2 i_solarYp current of solar panel Y+ 0 mA 250 mA
90 2 i_solarYn current of solar panel Y- 0 mA 250 mA
92 2 i_solarZp current of solar panel Z+ 0 mA 250 mA
94 2 i_solarZn current of solar panel Z- 0 mA 250 mA
96 2 t_sten temp of stensat board -273.15 deg C +226.85 deg C
98 2 t_EPS temp of EPS board -273.15 deg C +226.85 deg C
100 2 t_phone temp of phone board -273.15 deg C +226.85 deg C
102 2 t_ADCS_MHX temp of ADCS_MHX board -273.15 deg C +226.85 deg C
104 2 t_router temp of router board -273.15 deg C +226.85 deg C
106 2 t_solarXp temp of solar panel X+ -273.15 deg C +226.85 deg C
108 2 t_solarXn temp of solar panel X- -273.15 deg C +226.85 deg C
110 2 t_solarYp temp of solar panel Y+ -273.15 deg C +226.85 deg C
112 2 t_solarYn temp of solar panel Y- -273.15 deg C +226.85 deg C
114 2 t_solarZp temp of solar panel Z+ -273.15 deg C +226.85 deg C
116 2 t_solarZn temp of solar panel Z- -273.15 deg C +226.85 deg C