###### tags: `GSoC` `GSoC-2021` `Libre-Space`
# Improving SatNOGS TX capabilities
## The final report for the GSoC 2021 program
![GSoC logo](https://i.imgur.com/hiKxzr8.png)
---
![Libre Space Foundation logo](https://i.imgur.com/vAnPPQH.png)
---
## Project Summary
The purpose of this project was to improve the capabilities of the [SatNOGS](https://satnogs.org/) transmitter (TX). More specifically, SatNOGS is an Open Source global network of satellite ground-stations and is a project of the [Libre Space Foundation](https://libre.space/). SatNOGS consists of subgroups and projects (see [librespacefoundation/satnogs](https://gitlab.com/librespacefoundation/satnogs) on GitLab) so that its management is more efficient and the needs of users are more easily met.
My contribution, under the GSoC 2021 program, was made to the out-of-tree module of GNU Radio [gr-satnogs](https://gitlab.com/librespacefoundation/satnogs/gr-satnogs) which is the implementation of SatNOGS within GNU Radio. During the 10 weeks of the GSoC 2021 program, I was able to complete the initial plan for the project.
The following is what was implemented:
- Implementation of the NanoCom AX.100 Mode 5 encoder
- Implementation of the NanoCom AX.100 Mode 6 encoder
- Implementation of the Reed-Muller RM (1, 6) encoder and decoder
- Modify gr-satnogs libfec so that there is support for convolutional coding
- Adding utilities for better processing of sequences by bits (packed_to_unpacked and unpacked_to_packed utilities)
- Implementation of convolutional encoder and decoder
- Implementation of the Unified SPUTNIX protocol (USP) encoder
The following tasks are work in progress:
- Implementation of the Unified SPUTNIX protocol (USP) decoder (more in the draft merge request [WIP: Implement Unified SPUTNIX protocol (USP) decoder (!291)](https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/merge_requests/291))
Note that according to the [proposal](https://storage.googleapis.com/summerofcode-prod.appspot.com/gsoc/core_project/doc/4534413179748352_1618265510_SatNOGS_TX_capabilities_-_GSoC21_proposal.pdf?Expires=1629366638&GoogleAccessId=summerofcode-prod%40appspot.gserviceaccount.com&Signature=PfQiMNSBuoqPtDmRLM7N9UNugo8vDbmPa%2FMJPeae4Ojwi7M0KBw%2FWm5v35Qe2fWYCI8L0JkBQDyV6r7lg3VeKPCQnuLq5o%2Br8BjwSjXNWBkHuZrFD41ZzF6hm9EPQEaZ%2FRkl7RN3DcZ97YmKd0vHJt5%2BnMmIcCzWbA6vDOOu95eIWf8bRT1jBz8cik1YHrfuqnpU%2BOiHfVKKuOrFnYzFyN0X1KHff%2FCkdu3XluqMzimpgMb5VRVIeeH%2FUgSXuRk46sqlKjcwSRFgoiRq18s%2Btx%2Fkn6A0sOUlNYG7jMxwJ7zTva7X5Ufy%2FwDMjkbcxgpeMoPT1wBrt39G%2FsSexTZSwA%3D%3D), the purpose was to implement the NanoCom AX.100 Mode 5 and Mode 6 encoders and on top of that, I implement thw USP encoder and decoder. This goal was achieved successfully without any problems.
## List of Commits
- [Commit c13b3080](https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/commit/c13b3080718e9afcd7368b4623b064295f28a088) Mode 5 Encoder for the AX100 modem of GomSpace.
- [Commit 04831c25](https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/commit/04831c255bd5ad2a2ea457e323a965229ce5b4eb) Mode 6 Encoder for the AX100 modem of GomSpace.
- [Commit cbb5c3d3](https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/commit/cbb5c3d3631224624191f004af8b5d26e473c605) Reed-Muller RM(1, 6) code
- [Commit 3fbb5320](https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/commit/3fbb532061b25b003abc6a75376d5cf001d9f5c7) Change of libfec based on the changes that exist in gr-ccsds
- [Commit 2981f0c5](https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/commit/2981f0c59affb0277c0aa7a364cc5817f0071400) Implement packed_to_unpacked and unpacked_to_packed utilities.
- [Commit 5032e85e](https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/commit/5032e85eee43c5c42c1b9c03ba98ed576aafb7a1) Add convolutional encoder and decoder
- [Commit 2aadc48e](https://gitlab.com/librespacefoundation/satnogs/gr-satnogs/-/commit/2aadc48e409b835acbcf321fd07c096a99ef0a4f) Unified SPUTNIX protocol (USP) encoder
It is worth noting that in each task that was completed, all the commits were squashed into one so that there is consistency in the different versions of the final project.
## Others
- [A journey into the world of Open Source Projects](https://hackmd.io/@mraptakis/SJiQ3JG6O)