Decoding the NEXUS π/4-DQPSK signal

NEXUS, also called FO-99, is a Japanese Amateur satellite built by Nihon University and JAMSAT. It was launched on January 2019, and one of its interesting features is a π/4-DQPSK high-speed transmitter for the 435 MHz Amateur satellite band.

I was always interested in implementing a decoder for this satellite, due to its unusual modulation, but the technical information that is publicly available is scarce, so I never set to do it. A few days ago, Andrei Kopanchuk UZ7HO asked me a question about the Reed-Solomon code used in this satellite. He was working on a decoder for this satellite, and had some extra documentation. This renewed my interest in building a decoder for this satellite.

With some help from Andy regarding the symbol mapping for the π/4-DQPSK constellation, I have made a decoder GNU Radio flowgraph that I have added to gr-satellites.

Chang’e 5 observations from ATA on December 19 and 20

As we’ve been doing lately, last weekend we observed the Chang’e 5 orbiter at Allen Telescope Array as part of the GNU Radio community activities in the telescope. This post contains a large overview of these observations, including the efforts to determine the spacecraft orbit, the study of the signal polarization, and the data obtained by decoding the telemetry.

I am still transferring the IQ data from the telescope, but I will publish the recordings in Zenodo in a few days and update this post.

Edit 2021-01-02: the recordings are now published and can be found in the following datasets.

Chang’e 5 reception from ATA on its return trajectory: polarization

This post is a follow up to my previous post about the recordings made by the GNU Radio team at Allen Telescope Array on December 12 and 13. In that post I looked at the telemetry decoding in two full pass observations done last weekend, each of them lasting around 4 to 5 hours.

In this post, I will study the signal polarization in those recording, following the same method as in my previous post about the Chang’e 5 polarization. In these recordings, only the signal at 8471.2 MHz from the orbiter was active.

Chang’e 5 reception from ATA on its return trajectory: telemetry

Last weekend, we did two long observations of Chang’e 5 with one of the dishes from Allen Telescope Array as part of the activities of the GNU Radio community in the telescope. The recordings were done during the UTC evenings on Saturday 2020-12-12 and Sunday 2020-12-13, and almost lasted for all the time that the spacecraft was above 16.8 degrees, which is the elevation mask for the telescope. Since the Moon was at a low declination, the observations were not so long, only around 4 to 5 hours.

On Saturday, the spacecraft had already performed its TEI-1 (trans-Earth injection burn) and was on an elliptical lunar orbit. On Sunday, the spacecraft had performed TEI-2 and was already on its transfer orbit to Earth, and several degrees away from the Moon, as shown by the blue cross in the figure below, done with Stellarium.

Position of Chang’e 5 on the sky on Sunday evening

The IQ recordings of the observations will be published in Zenodo in a few days, since I need to transfer them over the slow internet connection of the telescope. This post will be updated when they are ready.

Update 2020-12-19: The recordings are now published in the following datasets:

In this post, I look at the telemetry decoded from these recordings. Future posts will look at other aspects, such as the polarization of the signal.

Chang’e 5 telemetry from the lunar surface received by Bochum

A few days ago, Achim Vollhardt DH2VA shared with me some recordings of the lander+ascender combo of Chang’e 5 with the 20m antenna at Bochum observatory, which is operated by AMSAT-DL. The recordings were made on 2020-12-02, while the lander+ascender combo was still on the lunar surface collecting samples (see this tweet by Scott Tilley VE7TIL for the detailed mission timeline). The successful reception of Chang’e 5 by Bochum was announced by AMSAT-DL in Twitter.

The recordings that Achim made are the following:

  • Recording of the low data rate telemetry at 8463.7 MHz for some 15 minutes at 6:00 UTC. This frequency was in ground-lock at that time, as shown by the telecommand loopback at +/-8kHz from the main carrier (there are several telecommand packets being transmitted, plus the usual idle telecommand subcarrier)
  • Five recordings of a high-speed signal at 8495 MHz. The recording was done at 21:10 UTC, has a length of 5 minutes, and is split in five files due to a constraint of 2GB in the size of the recorded files.

In this post I look at the telemetry decoded from these recordings.

Chang’e 5 telemetry from the ATA 2020-11-28 observation

In one of my last posts I’ve analysed a recording I made at Allen Telescope Array of the four low rate telemetry signals of Chang’e 5 during the LOI-2 manoeuvre. The previous day, I did an observation several hours before the spacecraft arrived to the Moon and performed the LOI-1 burn. In this observation I only recorded the signal at 8463.7 MHz (which later we discovered that corresponds to the lander), as it was the strongest of all four. In this post I give the analysis of the telemetry in this recording.

The recording corresponding to this observation will be published in Zenodo, but this will be done in a few days, since I’m still transferring files from the telescope. I’ll update the post when it is published.

Update 2020-12-11: the recording is now published in the following datasets:

Chang’e 5 polarization in the ATA observations

In my previous post, I talked about an observation of Chang’e 5 made with Allen Telescope Array last Sunday, 2020-11-29. I still need to write the report corresponding to the observation from Saturday 2020-11-28. However, before doing so, I thought it would be interesting to look at the polarization of each of the signals in these recordings. As I already advanced, the polarization is not perfect RHCP, but rather elliptical and time varying.

In fact, it seems likely that most of the antennas of Chang’e 5 are not steerable antennas, but rather, patch-like medium-gain or low-gain antennas. These are circularly-polarized only when seen from the front. They are linearly polarized when seen from a side.

Therefore, by studying the polarization of the Chang’e X-band signals, we can try to learn more about the spacecraft’s attitude and its antennas.

Chang’e 5 LOI-2 observed with Allen Telescope Array

If you follow me on Twitter you’ll probably have seem that lately I’m quite busy with the Chang’e 5 mission, doing observations with Allen Telescope Array as part of the GNU Radio activities there and also following what other people such as Scott Tilley VE7TIL, Paul Marsh M0EYT,, Edgar Kaiser DF2MZ, USA Satcom, and even AMSAT-DL at Bochum are doing with their own observations. I have now a considerable backlog of posts to write, recordings to share and data to process. Hopefully I’ll be able to keep a steady stream of information coming out.

In this post I study the observation I did with Allen Telescope Array last Sunday 2019-11-29. During the observation, I was tweeting live the most interesting events. The observation is approximately 3 hours long and contains the LOI-2 (lunar orbit injection) manoeuvre near its end. LOI-2 was a burn that circularized the elliptical lunar orbit into an orbit with a height of approximately 207km over the lunar surface.

A look at Chang’e 5 telemetry

Chang’e 5 is a Chinese lunar sample return mission. It was launched a few days ago on 2020-11-23 from Wenchang and is estimated to perform lunar orbit injection on Saturday. Since then, a number of Amateurs such as USA Satcom, Paul Marsh M0EYT, Scott Tilley VE7TIL, Fer IW1DTU and others have been receiving the X-band signals from the spacecraft and posting reports over on Twitter. Meanwhile, has been working in decoding the frames, which has led him to the amazing achievement of being able to retrieve a short video from the signal.

In this post I will look at some of the frames demodulated by USA Satcom and Paul during the first couple of days of the mission. The frame structure has many similarities with Tianwen-1, which I have described in several posts, such as here and here. However, there are some interesting differences.

Tianwen-1 TCM3 final trajectory

A few days ago I posted about TCM3, the fourth trajectory correction made by Tianwen-1 so far. After some days, the Chinese DSN has performed precise orbit determination and updated the on-board ephemerides, so that we are now seeing the final trajectory in the telemetry state vectors.

The figure below shows how the state vectors have been updated a couple of times following the TCM, as the DSN computes and uploads an improved trajectory solution. I have plotted this graph in the following way: I have taken the first state vector received after TCM3, on the UTC afternoon of 2020-10-28, and used it to propagate a trajectory in GMAT. The plot shows the difference between the state vectors and the GMAT trajectory.

TCM3 happened on 2020-10-28 at 14:00 UTC, so the reference trajectory computed in GMAT corresponds to the trajectory of the state vectors immediately following the TCM. These are based on a prediction of the burn performance, rather than on the actual results. The graph above shows clearly two changes in the trajectory, one on 2020-10-29, and another one on 2020-11-01.

Since we have already seen the same trajectory for three days without updates, I am confident that this trajectory is now final. The latest state vector we have today is

[0163f5396aeb] 2020-11-04 03:25:57.092300 160383830.37880394 94290296.68475787 45404213.83552203 -9.17821106231485 22.96506090856966 10.332601544380973

As always, this gives the UTC timestamp and the ICRF heliocentric position and velocity coordinates in km and km/s respectively.

I have re-run the calculations in the previous post by back-propagating a state vector from the UTC evening of 2020-11-01, which already belongs to the final trajectory. The change in delta-V in comparison to what I should in the previous post is small. The new delta-V is 2.13 m/s rather than 2.09 m/s, and the components have changed around 5%. The detailed calculations and data can be found in the updated Jupyter notebook.