Decoding satellites from the PSLV 2018-004 launch

On Friday 12 at 03:59 UTC, a PSLV-CA launched from Satish Dawan Space Centre, India, to deliver Cartosat-2F, as well as some smaller satellites, into a Sun-synchronous polar orbit. Cartosat-2F is an Earth observation satellite for cartographic applications. The ride was shared by several Amateur satellites: FOX-1D, which is AMSAT-NA‘s third 1U FM cubesat, and the first one supporting the L/V mode (as well as the usual U/V mode); PicSat, a 3U cubesat from the Observatoire de Paris designed to observe the Beta Pictoris star system, which also carries a V/U FM transponder for Amateur use; CNUSail-1, a solar sail demonstrator 3U cubesat from Chungham National University, South Korea; CANYVAL-X 1 & 2, a system from Yonsei University, South Korea, consisting of a 1U and a 2U cubesat in formation flight which form a virtual telescope (with the light focusing unit in one cubesat and the detector in the other); KAUSAT-5, a 3U infrared Earth observation cubesat from Korea Aerospace University; and STEP Cube Lab, a 1U cubesat from Chosun University, Korea. There were also several non-Amateur small satellites in the launch.

On Saturday 13 morning, at 09:54:46 UTC, I did a recording of the 70cm Amateur satellite band to try to receive and decode all these satellites. I used a 7 element handheld yagi from Arrow and a LimeSDR directly connected to the antenna with a short coaxial cable. My location was approximately 40.5961º N, 3.6963º W, 700m ASL (locator IN80do). The recording is IQ at 4Msps, centred at 436.5MHz, and lasts 8 minutes and 4 seconds. Here I detail my analysis of the recording.

From the Amateur satellites in the PSLV 2018-004 launch, I only managed to hear the following:

  • PicSat 435.525MHz 1k2 BPSK G3RUH AX.25
  • STEP-1 437.485 FM CW

I have the following frequency information from IARU Sat Coord for the remaining satellites:

  • CNUSail-1 437.100MHz 9k6 BPSK
  • CANYVAL-X 1,2 437.200MHz 9k6 MSK
  • KAUSAT-5 437.465MHz 9k6 FSK / 2.413GHz 115k2 MSK
  • FOX-1D 145.880MHz U/V & L/V FM & DUV (uplinks 435.350MHz & 1267.350MHz)

Note that FOX-1D transmits in the 2m band, but the other satellites all transmit in the 70cm band. Apparently the CNUSail-1 team has been unable to receive signals from their satellite yet. I have no news about CANYVAL-X and KAUSAT-5.

Besides the satellites from the PSLV launch, the following Amateur satellites were heard in the recording, as they also turned out to be in the sky during the pass:

  • TigriSat 435.000MHz 9k6 FSK AX.25
  • AALTO-1 437.220MHz CW & 9k6 FSK AX.25
  • VZLUSAT-I (QB50 CZ02) 437.240MHz 4k8 AF GMSK (NanoCom U482C)
  • PRISM 437.250MHz CW
  • ROBUSTA-1B 437.325MHz 1k2 AFSK AX.25 (undecodable)

Using gr-satellites and Direwolf, I managed to decode all these satellites except for ROBUSTA-1B. It seems that ROBUSTA-1B’s signal has fast fading, which probably causes some bit errors, preventing successful decodes.

Apart from these satellites, I also heard the two following “more mundane” signals: EA4GSX was transmitting LSB voice around 435.160MHz, calling CQ through AO-73. Apparently there were no takers. EA4GSX lives in San Sebastián de los Reyes, around 7km from my location, and given AO-73’s position, we were most likely pointing our antennas roughly toward each other, so no wonder he has a strong signal in the recording. ED4ZAE appears once at 438.275MHz transmitting its ID (just “ED4ZAE”) in FM CW. The CW is very fast and the audio signal is rather noisy, despite the signal being strong. Presumably, ED4ZAE-3 is the callsign for the APRS digipeater at Talavera de la Reina, but this runs on 144.800MHz. I’m not aware that they’re doing anything in 70cm, so this signal is quite curious.

The most intriguing thing in the recording is a signal that I could not identify. At 435.080MHz there is an AFSK signal at roughly 1183 baud which continuously transmits packets leaving small gaps. The frequency drift is consistent with a LEO satellite (+/-10kHz during the recording). I haven’t managed to find any satellite transmitting near this frequency, and the baudrate is also peculiar. I will take a more careful look at this signal over the next few days, but I’ll appreciate any information or suggestion regarding this signal (see near the end of the post for a waterfall image of the signal).

Update: Shortly after publishing this post, I also asked on Twitter if anyone knew something about this satellite. PE0SAT and K4KDR point out that JA0CAW has also heard and decoded this satellite. I’ve looked again at the signal and it turns out that I had completely goofed up the identification. It is 1k2 FSK AX.25 (not the usual AFSK). I got the baudrate correctly (1183 is close enough to 1k2), but tried to treat the signal as AFSK instead of noticing that it was FSK. The satellite is sending packets from INDUST-10 to INDUSR-10.

Below I give more detailed information for the signal and decodes. The 9k6 FSK AX.25 signals have been decoded with Direwolf, and the remaining signals have been decoded with gr-satellites.

PicSat is transmitting 1k2 BPSK AX.25 with G3RUH scrambling. I have added a decoder for PicSat to gr-satellites. I used the QB50 GR01 decoder as a base, but tweaked the bandwidths of the polyphase and Costas loops.

PicSat 1k2 BPSK G3RUH AX.25

I decoded the following beacon with gr-satellites, and then used Direwolf to decode the AX.25 header.

U frame UI: p/f=0, No layer 3 protocol implemented., length = 130
 dest    PICSAT  0 c/r=1 res=3 last=0
 source  PICSAT  2 c/r=0 res=3 last=1
  000:  a0 92 86 a6 82 a8 e0 a0 92 86 a6 82 a8 65 03 f0  .............e..
  010:  09 01 d2 d6 00 6c 2a ce 01 0c de c4 00 00 00 00  .....l*.........
  020:  00 00 00 00 00 00 00 00 00 00 00 00 02 76 02 77  .............v.w
  030:  08 c3 06 81 05 15 0d 04 05 77 09 c0 00 03 00 03  .........w......
  040:  03 20 21 00 00 00 03 00 02 03 18 00 00 00 00 00  . !.............
  050:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 3b  ...............;
  060:  5a 40 36 bc 84 bc bd 3d e2 dc 2b 00 00 00 00 00  Z@6....=..+.....
  070:  01 96 51 00 00 01 7d 51 70 99 56 00 40 00 00 00  ..Q...}Qp.V.@...
  080:  2a 10                                            *.

I also sent the beacon to PicSat’s website, which shows the corresponding telemetry values.

STEP-1 is transmitting FM CW, although it is also capable of 9k6 MSK according to IARU SatCoord. The spectrum of the FM CW is rather interesting.

STEP-1 FM CW

The contents of the beacon are as follows:

STEP1 1.97000096

The following shows a beacon from TigriSat, decoded with Direwolf.

TigriSat 9k6 FSK AX.25
U frame UI: p/f=0, No layer 3 protocol implemented., length = 168
 dest    CQ      0 c/r=0 res=3 last=0
 source  HNATIG  0 c/r=1 res=3 last=1
  000:  86 a2 40 40 40 40 60 90 9c 82 a8 92 8e e1 03 f0  ..@@@@`.........
  010:  d1 a7 1f 00 00 00 22 04 ff 07 02 5f 03 ff 00 03  ......"...._....
  020:  03 ff 03 ff 00 03 03 ff 03 ff 00 04 03 ff 03 ff  ................
  030:  00 03 02 5e 03 ff 00 04 02 5e 02 5e 03 14 02 5c  ...^.....^.^...\
  040:  02 5d 02 5c 02 5c 02 5e 02 5e 02 5d 02 5c 03 05  .].\.\.^.^.].\..
  050:  03 17 02 5d 02 5d 00 03 03 ff c0 00 03 ff 03 79  ...].].........y
  060:  02 84 00 c3 01 84 02 22 02 22 02 21 02 22 02 23  .......".".!.".#
  070:  02 22 02 22 02 21 02 21 02 22 c0 00 00 00 00 00  .".".!.!."......
  080:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
  090:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
  0a0:  00 00 00 00 00 00 00 00                          ........

HNATIG>CQ:TIGRISAT ABACUS BEACON
U frame UI: p/f=0, No layer 3 protocol implemented., length = 38
 dest    CQ      0 c/r=0 res=3 last=0
 source  HNATIG  0 c/r=1 res=3 last=1
  000:  86 a2 40 40 40 40 60 90 9c 82 a8 92 8e e1 03 f0  ..@@@@`.........
  010:  54 49 47 52 49 53 41 54 20 41 42 41 43 55 53 20  TIGRISAT ABACUS 
  020:  42 45 41 43 4f 4e                                BEACON

AALTO-1 is interesting, since it first transmits its callsign using CW (with a peculiar spectrum) and then transmits a 9k6 FSK AX.25 packet.

AALTO-1 CW and 9k6 FSK AX.25

The AX.25 packet was decoded by Direwolf as follows:

U frame UI: p/f=0, No layer 3 protocol implemented., length = 148
 dest    OH2AGS  0 c/r=0 res=0 last=0
 source  OH2A1S 11 c/r=0 res=0 last=1
  000:  9e 90 64 82 8e a6 00 9e 90 64 82 62 a6 17 03 f0  ..d......d.b....
  010:  91 d7 59 5a 9f af 0a 00 04 e0 4a 02 00 ff ff 2c  ..YZ......J....,
  020:  48 18 00 56 0e e5 18 02 01 00 00 00 0e 43 0d 00  H..V.........C..
  030:  01 00 00 01 9d 00 00 00 00 00 00 03 00 00 12 00  ................
  040:  35 00 04 00 02 03 06 03 57 03 94 03 76 02 9b 00  5.......W...v...
  050:  db 00 1b 02 51 00 01 00 4a 03 9b 00 04 00 12 03  ....Q...J.......
  060:  fe 01 80 0e 00 00 00 00 00 00 20 70 00 00 00 00  .......... p....
  070:  00 00 00 00 00 2f ff ff 00 0a af b9 01 72 00 00  ...../.......r..
  080:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
  090:  00 00 00 00                                      ....

VZLUSAT-1 uses a NanoCom U482C transceiver, so it is supported by gr-satellites. It seems that it always transmits a short packet composed of the CSP 32bit header and the byte 0x00, and then a long packet containing beacon data.

VZLUSAT-1 4k8 AF GMSK (NanoCom U482C)

The decode of both of these packets is the following:

pdu_length = 5
contents = 
0000: 00 01 ac 8a 00 

pdu_length = 84
contents = 
0000: 00 4a ac 8a 00 05 56 7e ff 92 eb b0 00 05 56 48 
0010: ff 9a ef 54 00 05 55 b2 ff 97 ef ae 00 05 54 86 
0020: ff 94 ed c4 00 05 54 37 ff 95 ef 54 00 05 54 00 
0030: ff 94 ef 28 00 05 53 6b ff 99 ef 28 00 05 53 1e 
0040: ff 98 f0 06 00 05 52 e7 ff 9c ed 40 00 05 52 52 
0050: ff 91 ed f0 

PRISM is transmitting CW telemetry almost continuously.

PRISM CW

ROBUSTA-1B transmits 3 packets during the recording. I didn’t manage to decode any using Direwolf. Some of them are strong, but present fast fading.

ROBUSTA-1B 1k2 AFSK AX.25 (not decoded)

Here we have the two terrestrial signals, EA4GSX calling CQ through AO-73, and ED4ZAE sending its ID in FM CW. ED4ZAE only sent its ID once during the recording. Perhaps it transmits every 10 minutes.

EA4GSX calling with LSB voice through AO-73
ED4ZAE FM CW

Finally, this is the unidentified satellite. As you can see in the waterfall, it transmits continuously, leaving small gaps between packets.

Unidentified 1k2 FSK AX.25 signal

The recording used in this post can be downloaded here (7.2GB). Some of the excerpts analysed here have been added to my satellite-recordings repository. Update 2022-04-02: the recording is now hosted in Zenodo, in the dataset “RF recording of PSLV 2018-004 launch cubesats“.

4 comments

  1. Hello Daniel
    I just connected wav file source after downloading the 7Gb file to frequency sink, then I got the following error
    “self.blocks_wavfile_source_1 = blocks.wavfile_source(‘/media/shakthivel/dragon/capstone/pslv-436500kHz-2018-01-13-095446.wav’, True)
    File “/usr/lib/python3/dist-packages/gnuradio/blocks/blocks_swig1.py”, line 404, in make
    return _blocks_swig1.wavfile_source_make(filename, repeat)
    RuntimeError: WAV file does not contain any samples”

    I couldn’t rectify this as even audacity don’t show anything when opened. Any kind of help is appreciated.
    Thanks and Regards

Leave a comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.