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.
The important thing to note is that the AX100 supports several modes:
- Raw, which is only intended for BER testing.
- ASM, which uses a 32 bit syncword, followed by a length byte and then the payload. The whole packet is sent G3RUH scrambled, including the syncword. This is the mode used by most satellites.
- HDLC + Viterbi FEC, which presumably sends the HDLC bits into a CCSDS k=7, r=1/2 convolutional encoder.
- ASM + Golay, which uses a 32 bit syncword, followed by 3 bytes which consist of a length field encoded with a Golay (24,12) code. The payload is optionally scrambled with the CCSDS (synchronous) scrambler.
- HDLC + AX.25
The payload is optionally encoded with the CCSDS (255,223) Reed-Solomon code. This is usually done in most satellites. The syncword used in the ASM and ASM + Golay modes is the same one (
0x930B51DE), but note that it is sent G3RUH scrambled in the ASM mode and unscrambled in the ASM + Golay mode. In view of this, it is clear that TY-2 is using the ASM + Golay mode. However, I hadn’t read the AX100 manual in detail before, and all the AX100 satellites I had seen used the ASM mode.
After considering the possibility that TY-2 uses the ASM + Golay mode, the rest of the work is trying to decode the Golay encoded length field and then checking if the packet uses Reed-Solomon. Since the older NanoCom U482C transceiver uses a Golay encoded length field, with a little luck, the AX100 would use the same code.
I tried my Golay decoder, which is included in gr-satellites for the U482C, and it worked. After that, I used the CCSDS descrambler with the payload following the Golay field. BI1AEM had told me that valid satellite packets start by
EB 90. After descrambling the payload, I obtained a packet starting with a valid CSP header followed by these bytes. An interesting fact is that the U482C includes some flags in the Golay field to indicate whether scrambling, Viterbi and Reed-Solomon are used. The AX100 doesn’t seem to use these flags, since none of the corresponding bits are set in the TY-2 packets.
Note that the 3 byte Golay field explains why I wasn’t able to descramble the packets before. I tried using the CCSDS descrambler, but since it is synchronous, descrambling fails unless you start descrambling at the correct byte. Since the Golay field is not scrambled, descrambling must start after this field, and I hadn’t considered this possibility.
After descrambling, I verified that the packets used the common CCSDS Reed-Solomon code. Since the format used by the AX100 in ASM + Golay mode is almost the same as the one used by the U482C, the U482C decoder block from gr-satellites can be used with the correct settings. Therefore, I have not bothered to include a new block or modify the AX100 block to support this mode.