Decoding LES-9

After decoding a recording of the LES-5 236.7MHz telemetry beacon made by Scott Tilley VE7TIL, I have decoded an older recording made by Scott of the S-band beacon of LES-9. This satellite was launched in 1976 and it has a 100 baud BPSK beacon at 2250MHz. Scott twitted about it in April 2019, and in January 2020 he reported that the modulation had stopped and the beacon was now a CW carrier.

I have used this recording made by Scott in 2020-01-13. The GNU Radio demodulator, which is very similar to the one for LES-5, is here and the Jupyter notebook with the results is here. Below, I make a brief summary of the results.

Decoding LES-5

LES-5 is a satellite launched in 1967. It was built by the MIT Lincoln Laboratory and its main payload was an experimental transponder for the military 230MHz band. It was placed in a subsynchrounous orbit with an altitude of around 33400km (GEO altitude is 35786km). Its operations ceased in 1971.

A couple days ago, Scott Tilley VE7TIL discovered that LES-5 was still transmitting, and was able to receive its beacon at 236.749MHz. Scott reports that LES-5 is the oldest GEO-belt object that he knows to be still transmitting.

The beacon is modulated, rather than being a CW carrier, so Scott sent me a short recording for analysis. This post is a summary of my study.

Coherence and QO-100

My tweet about the AMSAT-BR QO-100 FT8 QRPp experiment has spawned a very interesting discussion with Phil Karn KA9Q, Marcus Müller and others about weak signal modes specifically designed for the QO-100 communications channel, which is AWGN albeit with some frequency drift (mainly due to the imperfect reference clocks used in the typical groundstations).

Roughly speaking, the conversation shifted from noting that FT8 is not so efficient in terms of EbN0 to the idea of using something like coherent BPSK with \(r=1/6\) CCSDS Turbo code, then to observing that maybe there was not enough SNR for a Costas loop to work, so a residual carrier should be used, and eventually to asking whether a residual carrier would work at all.

There are several different problems that can be framed in this context. For me, the most interesting and difficult one is how to transmit some data with the least CN0 possible. In an ideal world, you can always manage to transmit a weaker signal just by transmitting slower (thus maintaining the Eb/N0 constant). In the real world, however, there are some time-varying physical parameters of the signal that the receiver needs to track (be it phase, frequency, clock synchronization, etc.). In order to detect and track these parameters, some minimum signal power is needed at the receiver.

This means that, in practice, depending on the physical channel in question, there is a lower CN0 limit at which communication on that channel can be achieved. In many situations, designing a system that tries to approach to that limit is a hard and interesting question.

Another problem that can be posed is how to transmit some data with the least Eb/N0 possible, thus approaching the Shannon capacity of the channel. However, the people doing DVB-S2 over the wideband transponder are not doing it so bad at all in this respect. Indeed, by transmitting faster (and increasing power, to keep the Eb/N0 reasonable), the frequency drift problems become completely manageable.

In any case, if we’re going to discuss about these questions, it is important to characterize the typical frequency drift of signals through the QO-100 transponder. This post contains some brief experiments about this.

Decoding images from AMICal Sat

AMICal Sat is a 2U cubesat developed by the Space Centre of the Grenoble University, France, and the Skobeltsyn Institute of Nuclear Physics in the Lomonosov Moscow State University. Its scientific mission consists in taking images of auroras from low Earth orbit. The satellite bus was built by SatRevolution. Currently, the satellite is in Grenoble waiting to be launched on a future date (which is uncertain due to the COVID-19 situation).

A few weeks ago I was working with Julien Nicolas F4HVX to try to decode some of the images transmitted by AMICal Sat. Julien is an Amateur radio operator and he is helping the satellite team at Grenoble with the communications of the satellite.

This post is an account of our progress so far.

Fifth alpha for gr-satellites 3

Today I have released gr-satellites v3-alpha4, the fifth alpha in the series that will lead to the refactor of gr-satellites in which I’ve been working since September. This alpha release has been focused on improving the performance of the BPSK and FSK demodulators. Here I summarise the improvements and new features that this alpha brings, and look at the roadmap leading to the release of gr-satellites 3.0.0.

Simulating the TED gain for a polyphase matched filter

Trying to improve the performance of the demodulators in gr-satellites, I am switching to the Symbol Sync GNU Radio block, which was introduced by Andy Walls in GRCon17. This block covers the functionality of all the other clock synchronization blocks, such as Polyphase Clock Sync and Clock Recovery MM, while fixing many bugs.

One of the new features of the Symbol Sync block is the ability to specify the gain of the timing error detector (TED) used in the clock recovery feedback loop. All the other blocks assumed unity gain, which simply causes the loop filter taps to be wrong. However, the TED gain needs to be calculated beforehand either by analysis or simulation, as it depends on the choice of TED, samples per symbol, pulse shaping, SNR and other.

While Andy shows how to use the Symbol Sync block as a direct replacement for the Polyphase Clock Sync block in his slides, he leaves the TED gain as one, since that is what the Polyphase Clock Sync block uses. In replacing the Polyphase Clock Sync block by Symbol Sync in gr-satellites, I wanted to use the correct TED gain, but I didn’t found anyone having computed it before. This post shows my approach at simulating the TED gain for polyphase matched filter with maximum likelyhood detector.

Decoding ESA Solar Orbiter

Solar Orbiter is an ESA Sun observation satellite that was launched on February 10 from Cape Canaveral, USA. It will perform detailed measurements of the heliosphere from close distances reaching down to around 60 solar radii.

As usual, Amateur observers have been interested in tracking this mission since launch, but apparently ESA refused to publish state vectors to aid them locate the spacecraft. However, 18 hours after launch, Solar Orbiter was found by Amateurs, first visually, and then by radio. Since then, it has been actively tracked by several Amateur DSN stations, which are publishing reception reports on Twitter and other media.

On February 13, the spacecraft deployed its high gain antenna. Since it is not so far from Earth yet, even stations with relatively small dishes are able to receive the data modulation on the X band downlink signal. Spectrum plots showing the sidelobes of this signal have been published in Twitter by Paul Marsh M0EYT, Ferruccio IW1DTU, and others.

I have used an IQ recording made by Paul on 2020-02-13 16:43:25 UTC at 8427.070MHz to decode the data transmitted by Solar Orbiter. In this post, I show the details.

DOP geographical distribution for the Galileo and GPS constellations

I have been wondering about how the DOP for the different GNSS constellation varies geographically, owing to the different number of satellites and constellation geometries. There are many DOP maps, such as this Galileo HDOP map by the Galileo System Simulation facility, but after a quick search in the literature I couldn’t find any survey paper that made a comprehensive comparison. The closest thing I found to what I was looking for was Consellation design optimization with a DOP based criterion, by Dufour etl. This was published in 1995, so it compares the GPS and GLONASS constellations with prototypical constellations such as the Walker delta using different parameters, but it doesn’t mention Galileo, which wasn’t even planned back then.

Therefore, I have decided to do my own simulations and compare the DOP for the Galileo and GPS constellations. Since the actual distribution of the satellites can differ substantially from the slots designated in the constellation, I am considering both the theoretical reference constellations and the real world constellations, as taken from the almanacs at the beginning of 2020. This post is a detailed account of my methodology and results.

Fourth alpha for gr-satellites 3

Shortly after releasing the third alpha, I have released today gr-satellites v3-alpha3, which is the fourth in the series of alphas of the future gr-satellites v3. This release focuses on a new file and image receiver framework that tries to give a general way of reassembling files transmitted in chunks using different protocols.

Extracting AX.25 satellites from SatNOGS DB

In my last post about gr-satellites 3, I announced that gr-satellites would start to support all the AX.25 satellites transmitting in Amateur bands. Historically, gr-satellites didn’t support packet radio (AFSK and FSK AX.25) satellites since there were too many of them and there were already other good decoders such as Direwolf. At one point Rocco Valenzano W2RTV convinced me to add “generic” packet radio decoders to gr-satellites and since then these have been seeing quite some use.

In gr-satellites 3 it is very easy to add new satellites, since this is done with a SatYAML file, which is a brief YAML file describing basic information about the satellite and its transmitters. Therefore, I decided to make a script to get this data from SatNOGS DB and write the SatYAMLs automatically for all the AFSK and FSK AX.25 satellites.