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, r00t.cz 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.

Polarimetric observation of 3C286 with Allen Telescope Array

Following my polarimetry experiments at Allen Telescope Array, on October 31 I did a polarimetric observation of the quasar 3C286 with two dishes from the array to use as a test-bed for polarimetric calibration. 3C286 is a bright, compact, polarized source, with a fractional polarization intensity of around 10% and a polarization angle of 33º over a wide range of frequencies, so it makes an ideal source for polarization calibration. It is the primary polarization calibrator for VLA. The observation duration was slightly more than 2 hours, and it was done around the transit of the source, so the parallactic angle coverage is large (around 90º).

My initial idea was to use this observation to perform a “single dish” polarization calibration of each of the dishes by separate (since the math is somewhat simpler) and then perform an interferometric polarization calibration. However, after initial examination of the data, the SNR doesn’t seem large enough to do a “single dish” calibration. The polarized signal from 3C286 is rather weak and is swamped by noise from other sources in the field and from the receiver, and also by gain variations in the receive chain.

On the contrary, the interferometric calibration has worked well, since correlating the signals from the antennas allows us to discard the uncorrelated receiver noise and to phase on the target and discard other signals from the field, by means of Earth rotation aperture synthesis.

In this post I give my analysis and results of the observation. I have done an ad hoc calibration in Python to determine the polarization leakage and measure the polarization degree and angle of the source, and also a full polarimetric calibration in CASA to compare my calibration with one obtained with professional software.

The data used in this post has been published in Zenodo as the dataset “Allen Telescope Array polarimetric observation of 3C286“.

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.

ATA polarimetry test with GNSS satellites

This post belongs to a series about the activities of the GNU Radio community at Allen Telescope Array. For more information about these activities, see my first post.

The feeds in the ATA dishes are dual polarization linear feeds, giving two orthogonal linear polarizations that are called X and Y and (corresponding to the horizontal and vertical polarizations). In the setup we currently have, the two RF signals from a single dish are downconverted to an IF around 512 MHz using common LOs and then sampled by the two channels of a USRP N32x. Since we have two USRPs, we are able to receive dual polarization signals from two dishes simultaneously.

The two USRPs are synchronized with the 10MHz and PPS signals from the observatory, but even in these conditions there will be random phase offsets between the different channels. These offsets are caused by fractional-N PLL states and other factors, and change with every device reset. To solve this problem, it is possible to distribute the LO from the first channel of a USRP N321 into its second channel and both channels of a second USRP N320. In fact, it is possible to daisy chain several USRPs to achieve a massive MIMO configuration. By sharing the LO between all the channels, we achieve repeatable phase offsets in every run.

During the first weekends of experiments at ATA we didn’t use LO sharing, and we finally set it up and tested it last weekend. After verifying that phase offsets were in fact repeatable between all the channels, I did some polarimetric observations of GNSS satellites to calibrate the phase offsets. The results are summarised in this post. The data has been published in Zenodo as “Allen Telescope Array polarimetric observation of GNSS satellites.

Tianwen-1 TCM3

On 2020-10-28 at 14:00 UTC, Tianwen-1 has made its third trajectory correction manoeuvre. This has been the next manoeuvre after the deep space manoeuvre at the beginning of October. According to the press release, this was a firing of the eight 25N thrusters intended as a minor correction and as a test of this propulsion system. I haven’t found the duration of the burn in the news.

I have followed the same method as in previous burns to compute the moment of the burn and the delta-V vector by extrapolating the telemetry orbit state vectors received by AMSAT-DL in Bochum before and after the burn. This extrapolation locates the burn at 14:02:28 UTC. Note that this time is an approximation for the mid-point of the burn.

The delta-V vector was, in m/s

[-0.6575566 , -0.11513034,  1.97535319],

and the magnitude was 2.09m/s. Assuming a mass of 5000kg and eight 25N thrusters, it would take a burn of 52 seconds to achieve this delta-V.

Update 2020-10-30: according to this news article, the duration of the burn was 42.8 seconds which is some 18% smaller than my estimate. Note that my estimate didn’t take into account the mass of fuel spent by the deep space manoeuvre, which I estimated to be 457kg (giving a decrease in mass of 9%).

Apparently this burn has lowered the periares height significantly in comparison to the trajectory following the deep space manoeuvre, which was around 18000km. Thanks to Achim Vollhardt for noticing this. It’s difficult for me to give a good estimate of the new periares height, because it is quite sensitive to orbit perturbations. I’ve obtained anything between 30 and 800 km by enabling and disabling solar radiation pressure in the GMAT propagator, and we don’t have a good estimate of the spacecraft’s cross-section and reflection coefficient.

The figure below shows one of the GMAT simulations. Note that the periares is near the equator, which is good for insertion into a low inclination orbit.

Periares passage in GMAT

Keep in mind that according to the media still one more trajectory correction manoeuvre remains and that the data used in this post comes straight from the spacecraft’s telemetry, and as such is most likely based on a prediction of the burn rather than on the actual performance of the burn. In a few days, I will publish a new post when the Chinese DSN perform precise orbit determination and upload updated orbital information to the spacecraft.

The data and plots for this post can be found in this Jupyter notebook.

Galileo E24 differential code biases change

Back in July, I wrote about how the Galileo E24 differential code biases were abnormally large in comparison to other satellites from the constellation. This was initially noticed by Bert Hubert from galmon.eu in the large size of the BGDs of this satellite. In that post I did a study of the DCB products from the Chinese Academy of Science and the broadcast ephemeris BGDs, and explained the relation between them.

At the end of September, Bert tweeted that after some maintenance the BGDs of E24 had stopped being so large. That is not so surprising, since the payload on-board the satellite can adjust the relative delays between each of the navigation signals, in order to correct these kinds of problems.

After letting a few weeks go by so that the MGEX products get uploaded, I have now redone some of the plots in that study with the data surrounding the change.

Tianwen-1 attitude change

A month ago, I wrote a post showing the evolution of Tianwen-1‘s attitude so far during its transfer orbit to Mars. For most of the mission, the spacecraft has maintained a fixed attitude where the spacecraft body Y axis was held orthogonal to the planed formed by the spacecraft, Earth and Sun, and the spacecraft to Sun vector had a constant angle of -20 degrees with the spacecraft body X axis.

The figure below shows how the spacecraft axes are labelled. Note the solar panels along the Y axis, the thruster on the -X face, and the high gain antenna on the -Z face.

Yesterday, on 2020-10-22, the spacecraft made an attitude change. The angle between the Sun vector and the X axis was changed back to 0 degrees, which was the angle maintained during the first days of the mission. This can be seen clearly in the figure below.

The angle between the Earth vector and the -Z axis (where the high gain antenna is located) is more interesting, as it gives the slew angle of the antenna. Throughout most of the mission, it was growing and I kept wondering if an attitude change would be done to prevent the antenna from running out of slew range. However, at some point the angle started decreasing. This is basically caused by the Earth “overtaking” Tianwen-1, since the Earth’s orbit is faster (you can see some pictures of this in the last slides of my talk in the AMSAT-UK colloquium).

In this graph we see that the change in attitude also causes a sudden increase of 20 degrees in this angle, so now it is 70 degrees. This shows that the possible slew range for the high gain antenna is much larger than I had initially thought. Perhaps it is not so surprising after we have seen the cut-out in the dish in the in-orbit images published on October 1.

If we zoom in to the last few days, we see that the change in attitude happened at some time when the spacecraft was not in view from Europe, so unfortunately we don’t have any telemetry of the change itself.

I’m not sure of the reason why this attitude change has been done now. It will be interesting to see if the attitude continues with this new 0 degree angle or it switches back to the previous -20 degree angle.

Thanks to AMSAT-DL‘s team at Bochum for continuing the daily collection of telemetry with the 20m antenna. Their effort makes it possible to detect events like this with short notice. The data and code to produce the plots in this post can be found in this Jupyter notebook.

GNSS interferometry at Allen Telescope Array

Since the beginning of October, together with a group of people from the GNU Radio community, we are doing some experiments and tests remotely at Allen Telescope Array (ATA). This amazing opportunity forms part of the recent collaboration agreement between SETI Institute and GNU Radio. We are taking advantage of the fact that the ATA hardware is relatively unused on weekends, and putting it to good use for our experiments. One of the goal of these activities is to put in contact GNU Radio people and radio astronomy people, to learn from each other and discover what features of GNU Radio could benefit radio astronomy and SETI, particularly at the ATA.

I’m very grateful to Wael Farah, Alex Pollak, Steve Croft and Ellie White from ATA and SETI Institute for their support of this project and the very interesting conversations we’ve had, to Derek Kozel, who is Principal Investigator for GNU Radio at SETI, for organizing and supporting all this, and to the rest of my GNU Radio teammates for what’s being an excellent collaboration of ideas and sharing of resources.

From the work I’ve been doing at ATA, I already have several recordings and data, and also some studies and material that I’ll be publishing in the near future. Hopefully this post will be the first in a series of many.

Here I will speak about one of the first experiments I did at ATA, which is a recording of one Galileo GNSS satellite using two of the dishes from the array. This kind of recording can be used to perform interferometry. GNSS satellites are good test targets because they have strong wideband signals and their location is known precisely. The IQ recording described in this post is published as the dataset “Allen Telescope Array Galileo E31 RF recording with 2 antennas and 2 polarizations” in Zenodo.

Tianwen-1 DSM final trajectory

A few days ago I spoke about the deep space manoeuvre that Tianwen-1 had executed on 2020-10-09. As remarked in that post, the data we had from that manoeuvre came from extrapolating state vectors from before and after the burn. The state vectors that the spacecraft was broadcasting after the burn most likely came from a prediction rather than from the actual result of the burn. In a few days, we would see a small change in the trajectory as the Chinese DSN performed precise orbit determination and uploaded the results to the spacecraft.

In fact, we saw that change the next day. The figure below is generated in the following way. I have taken the first state vector that we have received after the burn, and propagated its trajectory in GMAT. Then I compute and plot the error in each of the ICRF coordinates between the state vectors broadcast by the spacecraft in the telemetry and this GMAT trajectory. This allows us to see whether the trajectory broadcast by the spacecraft has changed slightly at some point.

As we can see, during the first day the error is close to zero. Afterwards, the trajectory deviates and the error starts growing to several hundreds of km. The new trajectory seems to be stable over the last few days (sorry about the lack of data on the night between the 11th and 12th). This is best shown in the figure below, where the state vector used as a seed to generate the GMAT trajectory is taken from the UTC evening of 2020-10-10. The error is only a fraction of a km. Therefore, we can consider final this new trajectory.

I have updated the calculations I did in the last post to use a state vector from the updated final trajectory. The results don’t change much. The calculations now locate the burn (approximated as an impulse burn) at 15:03:54 UTC with a delta-V of

[-31.08193895,  40.28872314, 308.12845989]

in ICRF coordinates, while my previous calculations estimated a burn at 15:03:59 with a delta-V of

[-31.49477234,  39.29765307, 308.11690616]

The state vector describing the updated post-DSM trajectory in heliocentric ICRF coordinates and UTC epoch is

Tianwen1.Epoch = '10 Oct 2020 19:08:50.122';
Tianwen1.X = 172262669.5024532
Tianwen1.Y = 42536664.64589398
Tianwen1.Z = 21989467.534531824
Tianwen1.VX = -1.7753279668677469
Tianwen1.VY = 25.966616665124505
Tianwen1.VZ = 11.810575717885476

Decoding AMICal Sat in-orbit images

Back in March, I was helping Julien Nicolas F4HVX to test the S-band image transmitter of AMICal Sat before launch. In my post back then, I explained that AMICal Sat uses a Nordic Semiconductor nRF24L01+ 2.4GHz FSK transceiver chip to transmit Shockburst packets at 1Mbaud. I also explained how the Onyx EV76C664 CMOS image sensor works and how to process raw images.

AMICal Sat was finally launched on 2020-09-03, and since them the satellite team has been busy trying to downlink some images, both using the UHF transmitter (which uses the same protocol as Światowid) and the S-band transmitter. This has proven a bit difficult because the ADCS of the satellite is not working, and the downlink protocols are not very robust.

Julien has been sending me recordings done by their groundstation in Russia with the hope that we could be able to decode some of the data. Before several failed attempts where we were hardly able to decode a few packets, we got a particularly good S-band recording done on 2020-10-05. Using that recording, I have been able to decode a full image.