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.
The file receiver is based on the FileReceiver class. Child classes can be derived from this to implement different file transfer protocols. The ImageReceiver class is derived from FileReceiver and implements hooks to display received images in real time using feh, as older versions of gr-satellites do.
The older image decoders have been ported to this framework, so now there are classes derived from ImageReceiver for BY70-1 (also used by LilacSat-1), D-SAT, K2SAT, 1KUNS-PF and Światowid, which are all the satellites that had image decoders in previous versions of gr-satellites. The spectrum receiver for SMOG-P has been ported as a FileReceiver class. As you can see, all the code for this derived classes is quite simple and brief, so I’m satisfied at how well my approach for the generic file receiver has worked.
To use the new file and image receivers, a File Receiver and an Image Receiver data sink blocks have been added. These are shown below. It is necessary to indicate the name of the child class of FileReceiver or ImageReceiver to use, as well as the path to a folder to store the received files.
Additionally, the file and image receivers can be specified in the SatYAML files by using the files:
and image:
keywords in the data:
sections, as the SatYAML files for SMOG-P and BY70-1 show.
For satellites transmitting files, the gr_satellites
command line tool uses the file or image receiver automatically, storing received files into /tmp/
(the output folder can be changed with the option --file_output_path
). Images are displayed in real time using feh as they are received. For a quick demo of the image decoder, you can run
gr_satellites D-SAT --wavfile satellite-recordings/dsat-image.wav --samp_rate 48e3
Besides the file and image decoders, in this alpha I have added many AFSK and FSK AX.25 satellites using information from SatNOGS DB as described in this post. Now there are specific SatYAML files for all the AFSK and FSK AX.25 satellites.
I have also added telemetry parsers for the FUNcube satellites and for 3CAT-2. The list of supported satellites and features, in comparison with gr-satellites v2, is now as follows.
The next alpha will be focusing on improving the demodulators, as explained at the end of my post about alpha2. I will start by revisiting my work about testing the BER of the LilacSat-1 decoder. My idea is first to have a good and easy way to test the BER of the demodulators, to be sure that I’m not making things worse, and then try to optimize clock and carrier recovery to work reliably on real world signals.