In my previous post, I talked about the coding used by the S-NET cubesats and the implementation of my decoder included in gr-satellites. The decoder was still missing a BCH decoder. I have now implemented a BCH decoder and included it in gr-satellites. Here I describe the details of this decoder.
S-NET is a swarm of 4 cubesats from TU-Berlin. Their mission is to test SLink, an S-band transceiver for inter-satellite communications. They were launched on February 1 this year and they use use Amateur frequencies for their telemetry downlink on the 70cm band. Several weeks ago, Mike Rupprecht DK3WN raised my attention towards these satellites. Since they use a rather particular coding, custom software would be needed to decode the telemetry. Then, I set to add support for S-NET to gr-satellites
After some really helpful communication with the S-NET team, in particular with Walter Frese, and some exchanges of ideas with Andrei Kopanchuk UZ7HO, who was also working to add an S-NET decoder to his soundmodem, I have finally added a basic S-NET decoder to gr-satellites.
Last week I published my results about the LilacSat-2 VLBI experiment. There, I mentioned that there were some things I still wanted to do, such as studying the biases in the calculations or trying to improve the signal processing. Since then, I have continued working on this and I have tried out some ideas I had. These have given good results. For instance, I have been able to reduce the delta-range measurement noise from around 700m to 300m. Here I present the improvements I have made. Reading the previous post before this one is highly recommended. The calculations of this post were performed in this Jupyter notebook.
In January, I took a look at TY-2 telemetry. This is a Chinese cubesat that transmits 9k6 FSK telemetry in the 70cm Amateur band. In my previous post I tried to reverse engineer the packets from TY-2 and got as far as recognizing the syncword, and noting that the syncword is the same as the one sent by the GOMspace NanoCom AX100 transceiver. However, in all AX100 transceivers I had seen, the syncword was sent scrambled with a G3RUH scrambler, and TY-2 sent it unscrambled. This left me a bit puzzled. The payload seemed to be scrambled and I was unable to descramble it, preventing any further progress.
Since then, I have tried to get in contact with the satellite team to see if they could give me any additional information about TY-2 and its companion TY-6 (which uses the same format). Finally, the satellite team have answered me, giving me some details and confirming me that they use the AX100. This has allowed me to finish the decoder. An updated decoder is now available in gr-satellites. Thanks to BI1AEM for his help. Here I look at the specific details of the format used by TY-2.
On 23 February, Wei Mingchuan BG2BHC published on Twitter the first Amateur VLBI experiment. This consisted of a GPS-synchronized recording of signals from LilacSat-2 using USRPs in groundstations at Harbin and Chongqing, which are about 2500km apart. Wei has made a Github repository containing the recording (in MATLAB file format) and some signal processing in MATLAB. I have done some signal processing of my own with the recording and published my results in a Jupyter notebook. Here I describe some general aspects about VLBI and its use in Amateur radio, and some specific details of the signal processing I have done.
In my previous post I talked about the RFC5170 LDPC codes used in Outernet. There I explained in some detail the pseudorandom construction of the LDPC codes and the simple erasure decoding algorithm used both in free-outernet and in the official closed-source receiver.
The Outernet LDPC codes follow what I call the "identity scheme". This is different from the staircase and triangle schemes introduced in the RFC. The identity scheme already appeared in the literature, but it did not make it into the RFC. See, for instance, the report by Roca and Neumann Design, Evaluation and Comparison of Four Large Block FEC Codecs, LDPC, LDGM, LDGM Staircase and LDGM Triangle, plus a Reed-Solomon Small Block FEC Codec, especially Section 2, where it is called "LDGM".
I also commented that erasure decoding for an LDPC code (or any other linear code) amounts to solving a linear system. This can be done using any algebraic method, such as Gaussian elimination. However, the simple decoding algorithm used in Outernet is as follows: try to find an equation with only one unknown, solve for that unknown, and repeat until the system is solved. Clearly this algorithm can fail even if the system can be solved (see my previous post for some examples and formal results). I will refer to this algorithm as iterative decoding, as it is done in the RFC.
With these two things in mind, I wondered about the performance of the LDPC codes used in Outernet and the iterative decoding algorithm. I've done some simulations and here I present my results.
I have been preparing the slides for my future talk about reverse-engineering Outernet at FAQin 2018. While doing this, I have been re-reading some of the material about the work done on LDPC code and FEC in Outernet by George Hopkins in January 2017. One of the things I didn't do back then was to read carefully the LDPC decoding function implemented by George.
In my post I explained that the LDPC code used in Outernet followed RFC5170, and I wondered whether it used the staircase scheme or the triangle scheme. I also commented that erasure decoding with an LDPC code (or any other linear code, actually) was mathematically equivalent to solving a linear system where the unknowns correspond to the erased symbols. I observed that the decoding function looked very different from this mathematical procedure, but should do more or less the same thing. Now I have read the decoder implementation carefully and I have the answer to both questions.
English translation below.
Me tomo la libertad de usar este blog para anunciar un congreso que estoy organizando, junto con otros Radioaficionados Españoles. Como se puede ver en la descripción del congreso, la temática del congreso está bastante en línea con el material sobre el que suelo tratar en este blog, así como los trabajos de otras personas a las cuales sigo.
Anuncio del congreso STARcon 2018
Somos un grupo de entusiastas y profesionales de las telecomunicaciones que, ante la falta de una conferencia orientada a los aspectos científicos y técnicos de la radioafición en nuestro país, ha decidido organizarse para dar vida al Scientific & Technical Amateur Radio Congress (STARcon): el primer congreso sobre radio científica y técnica en España.
Desde la organización de STARcon buscamos aficionados, estudiantes y profesionales, apasionados en general que deseen formar parte de esta primera edición, como asistentes o dando una charla. Temas como experimentos mediante radio, filosofía DIY, SDR, open source, seguridad, radioastronomía amateur y diseño de equipos de comunicaciones son bienvenidos.
El congreso tendrá lugar el sábado 21 y domingo 22 de abril de 2018 en el Centro de Empresas e Innovación de Murcia (CEEIM), con un aforo total de 150 personas. Puedes encontrar más información, call for papers y el formulario de registro en la página web del evento.
I take the liberty to use this blog to announce a conference which I am organizing, together with other Spanish Amateur radio operators. As one can see in the conference description (in Spanish), the topics of the conference are in line with the material I usually deal with in this blog, as well as the work of other people I follow.
STARcon 2018 conference announcement
We are a group of telecommunications enthusiasts and professionals who, due to the lack of a conference oriented to the scientific and technical aspects of Amateur radio in our country, has decided to organise and create the Scientific & Technical Amateur Radio Congress (STARcon): the first conference about scientific and technical radio in Spain.
The organization of STARcon is looking for amateurs, students and professionals, passionate people in general, who wish to form part of this first edition, either as attendants or giving a talk. Topics such as radio experiments, DIY philosophy, SDR, open source, security, radio astronomy and communications equipment design are welcome.
The conference will take place on Saturday 21 and Sunday 22 April 2018 in the Centro de Empresas e Innovación de Murcia (CEEIM), with a capacity for 150 people. You can find more information, the call for papers and the registration form in the event's web page.
Many Amateur radio operators are familiar with the effects of the ionosphere at HF frequencies. However, the effects of the ionosphere are also noticeable at much higher frequencies. In particular, at L band, which is used by most satellite navigation systems. Thus, GNSS receivers can be used to measure ionospheric parameters. These measurements are usually distributed as TEC maps in IONEX files.
Here I describe some basic ionospheric physics, how a GNSS receiver can measure the ionosphere, and give some Python code to study TEC maps in IONEX files. Then I use TEC maps to study the CODAR ionospheric observations I did in December last year.
On January 28th, Tetsu JA0CAW reported on Twitter his reception of an unknown satellite. The time of reception was 2018-01-28 12:15 UTC and the frequency was around 435.525MHz. The time and frequency coincided with a PicSat pass over JA0CAW's station in Japan. He provided an IQ recording of the signal. So far, the satellite that originated the signal has not been identified. Several people have tried to listen to this satellite again, but I haven't seen any other reports. Doppler identification has not been attempted and it is perhaps unfeasible with the few packets in JA0CAW's recording.
I have looked at the recording to try to identify the satellite. The modulation is easily seen to be BPSK at 9600baud. The signal presents a lot of fading, so demodulation without bit errors is difficult. There seems to be a scrambler in use. I've tried descrambling with G3RUH and CCSDS without any luck. I've also failed to identify a preamble or frame sync marker.
To look at the packets in more detail, I've resorted to do demodulation as postprocessing in a Jupyter Python notebook. The resulting notebook is here. It is written with detailed comments, so it can be of interest to anyone who wants to learn these techniques.
The only interesting piece of information that I've been able to extract from my analysis is that the bits in the packets present strong self-correlations at lags of 1920 bits (and multiples). This is 240 bytes, but I have no clue of what to make of this.
As always, I would be grateful if anyone can provide any additional information about this unknown satellite.