IPEX Tracking (nonoperational)

IPEX is no longer transmitting.

Please email any IPEX related data to: ipextracking@gmail.com

For more information about the mission and its history, click here.

IPEX TLE (Updated: 3/18/14):

We currently believe IPEX is object 704


1 39471U 13072K 14076.31077002 +.00007264 +00000-0 +67606-3 0 00847

2 39471 120.4974 226.6495 0304277 081.2238 282.3038 14.66437927014194



  • Call sign: KJ6KSL
  • Frequency: 437.270 MHz
  • Modulation: AX.25 FSK (NRZI with G3RUH scrambling)
  • Data Rate: 9600 Baud

Decoder Status:

A decoder has not been released for IPEX, but we are working on it.

We greatly appreciate any data you can send to us, such as:

  • Audio Recordings
  • SDR Recordings
  • Raw HEX Data
  • Time of acquistion

IPEX Guide on Extracting Raw Hex Data  & FunCube Dongle:

IPEX Demod Guide – Click Here

Beacon Info:

IPEX transmits three types of beacons:

Transmission Type

Period (s)

Duration (s)

Health Beacon



File Beacon



Morse Code



  • Health Beacon: Contains the latest snapshot of IPEX telemetry
  • File Beacon: A portion of a much larger telemetry file, need to collect several file beacons to reconstruct the file (HEX data)
  • Morse Code: 15 wpm, should spell “IPEX,” will be disabled after initial tracking to conserve power


Only the health beacon can be decoded into interesting data, the beacon format is given below:

* Packet beacon packet format is HDLC->AX.25->IP->UDP.  The layout of the UDP payload data is:
typedef struct {
// 8-bit temperature format
// 0 == -75c 7/1 (range -75c – +54c, precision .5c)
// 8-bit Voltage format
// 0 == 0V 3/5 (range 0-7.99V, precision 0.03125)
// 8-bit Current format
// 0 == -4.0A 3/5 (range -4.0 – 3.99A, precision 0.03125)
// 16-bit current accumulation format
// 0 == 0 aH 6/10 (range 0 – 63.99, precision 0.0009765625)

//Temperatures from the various temp sensors
uint8_t daughter_aTmp; // 0 == -75c 7/1 (range -75c – +54c, precision .5c)
uint8_t daughter_bTmp;
uint8_t threeV_plTmp;
uint8_t rf_ampTmp;

//readings from the various ina power sensors
uint8_t atmelPwrCurr;
uint8_t atmelPwrBusV;

uint8_t threeV_PwrCurr;
uint8_t threeV_PwrBusV;

uint8_t threeV_plPwrCurr;
uint8_t threeV_plPwrBusV;

uint8_t fiveV_plPwrCurr;
uint8_t fiveV_plPwrBusV;

uint8_t daughter_aPwrCurr;
uint8_t daughter_aPwrBusV;

uint8_t daughter_bPwrCurr;
uint8_t daughter_bPwrBusV;

// SOC
uint8_t fuelGauge1Volt;
int8_t fuelGauge1Curr;
uint16_t fuelGauge1Accum;

// Side panel telemetry
uint8_t negZSolarVolt;
int8_t negZSolarCurr;
uint8_t negZTemp;

uint8_t negXSolarVolt;
int8_t negXSolarCurr;
uint8_t negXTemp;

uint8_t posXSolarVolt;
int8_t posXSolarCurr;
uint8_t posXTemp;

uint8_t negYSolarVolt;
int8_t negYSolarCurr;
uint8_t negYTemp;

uint8_t posYSolarVolt;
int8_t posYSolarCurr;
uint8_t posYTemp;

// software telemetry
uint32_t userCpuTime;
uint32_t niceCpuTime;
uint32_t sysCpuTime;
uint32_t idleCpuTime;
uint32_t processes;
uint16_t procs_running;
uint16_t procs_blocked;
uint32_t memFree;
uint32_t buffers;
uint32_t cached;
uint32_t vmallocTotal;
uint32_t vmallocUsed;
uint32_t dataFree;
uint32_t sdcardFree;
uint32_t loBytes;
uint16_t loPkts;
uint32_t nandErasures;

//Beacon info
uint16_t beaconCnt;
uint32_t time;
uint32_t boottime;
uint16_t long_dur_counter;
} __attribute__((packed)) IPEX_1_SysmgrData;

typedef struct {
uint16_t heartbeat;
uint16_t errors;
uint16_t warnings;
uint16_t satGoals;
uint16_t unsatGoals;
uint16_t heapUsageCurrent;  // 10kB units
uint16_t udpCmdRxCnt;
uint16_t dsqeeCommitted;
uint16_t dsqeeFailed;
uint16_t iniCount;
uint16_t actCount;
uint16_t conflicts;
uint16_t instance;
uint16_t comparedOk;
uint16_t successfulGoals;
uint16_t heartRing;
uint16_t timeToNextGoal;
uint16_t timeToNextContactBoundary;

// CP items added by our very own payload process
uint16_t gstxRebootCnt;
uint16_t socLwnCnt;
int8_t gstxPwrSensorCurrent;
uint8_t gstxPwrSensorVolt;
uint8_t pppRxErrs8, pppTxErrs8;
uint16_t pppTxPkts, pppRxPkts;
uint32_t pppTxBytes, pppRxBytes;
uint8_t pibTemp;
} __attribute__ ((packed)) IPEX_1_CasperData;

typedef struct {
uint16_t rxCount;
uint16_t txCount;
uint32_t rxBytes;
uint32_t txBytes;
uint16_t digipeatsPerHour;
uint16_t digipeatsRemaining;
struct {
char callsign[7];
int8_t lastRssi;
uint32_t lastRx;
} callsigns[3];
int8_t rxRssi;
} __attribute((packed)) IPEX_1_CommData;

typedef struct {
IPEX_1_SysmgrData sys;
IPEX_1_CommData comm;
IPEX_1_CasperData casper;
} __attribute__((packed)) IPEX_1_BeaconData;

Thanks to Tetsu (JA0CAW) for first IPEX beacon reception!

Comments are closed.