Free Software Outernet receiver
Python
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.gitignore Ignore compiled Python files Jan 9, 2017
LICENSE Initial commit Oct 16, 2016
README.md Updated README Jan 12, 2017
files.py
free-outernet.py
kiss.py
protocols.py Validate LDP packet checksum Jan 10, 2017
requirements.txt
timeservice.py Remove trailing spaces Jan 10, 2017

README.md

free-outernet

Free Software Outernet receiver

This is a Free Software (Open Source) receiver for Outernet designed to work with the gr-outernet GNUradio Outernet receiver modem. The key parts of the official Outernet receiver software, ondd and sdr100 are closed-source, distributed as binaries only. This project aims to provide a Free Software alternative to ondd, while gr-outernet can be used a a substitute for sdr100.

With free-outernet and gr-outernet you can receive the files that are broadcast by Outernet file service and the time packets that are broadcast by the Outernet time service.

All this software is the result of a reverse engineering effort, since Outernet does not publish any documentation for the protocols they use.

You can use free-outernet.py to receive UDP packets in real-time from gr-outernet or with a KISS file recorded previously by gr-outernet. free-outernet.py recovers the files that are transmitted by Outernet and prints the time packets. It also prints some interesting debug info.

Things that are not implemented/supported yet:

  • X.509 signature checking. The file announcements of the Outernet file service are signed with the Outernet X.509 certificate to prevent spoofing. This will not be implemented, as I have no interest in checking the signature. Perhaps some Amateur Radio operators or other people whish to use the Outernet protocols to exchange files, so it does not make sense for me to require that file announcements are signed.
  • Using the time packets to set the system time. I do not know how useful it is for most people. ondd does it, because it is designed to run standanlone without internet conetivity. If you have Internet connectivity it is much better to use NTP. If you do not have Internet connectivity and/or your need precise timing, it is better to use GPS. The Outernet time service only has a resolution of 1 second and it does not seem to account for round trip time to geostationary orbit (around 200ms).
  • Automatic decompression of received files. Most (perhaps all) files sent by the Outernet file service are .tar.bz2 files. ondd extracts the files automatically. This is easy to implement, but it is low on my priority list, as it is very easy to do this manually.

Dependencies

To install all dependencies just run: pip install -r requirements.txt

Sample KISS files

You can use some sample KISS files for testing.

About LDPC decoding for files

LDPC decoding has been implemented by George Hopkins by reverse engineering ondd.

Previously, this was not implemented, so free-outernet needed to receive all the blocks for a file to be able to reconstruct it correctly. Now, it can use the LDPC to "fill in" the missing packets in case some of them were lost.

The performance of free-outernet regarding FEC and LDPC decoding should be now the same as the performance of ondd.