SILVERSAT PACKET PROCESSOR
This is a complete system for managing the data required to process raw silversat radio packets using an RTL-SDR. The systems was designed to manage all the metadata needed to capture and process the RF downlink signal. The system is managed through an SQLite3 database. The system was developed on a RaspberryPi5. I also added an M3 drive (500GB) to store the massive capture files (don't be surprised with a 1GB file).
My implementation also includes a UPS to make the system portable.
In order to install the system you should (after cloning the repo):
-
Create a virtual environment in the /silversat_packets directory
https://letmegooglethat.com/?q=how+to+create+a+virtual+environment+in+python
-
Install using pip: pip install pytz matplotlib flask requests ephem reedsolo
-
Install using apt: sudo apt update && upgrade sudo apt install python3-skyfield sqlite3 gnuradio
-
clone gr-satnogs (in your home directory) and follow install instructions
-
clone ssdv (also in your home directory) from https://github.com/fsphil/ssdv and follow install instructions
I have not tested these steps from scratch, so there may be more depending on your current system config.
-
create a new database: sqlite3 observations.db < schema.sql -OR- use the existing database: which right now has a bunch of captures that are not included
-
Get Space-Track login (it's free) and store your username and password as environment variables. The easiest to make them permanent is to modify .profile and add to the end: export SPACETRACK_USER = "Your username" export SPACETRACK_PASS = "Your password"
-
Set an environment variable for the root directory, ex: export SILVERSAT_ROOT = "/home/tom/silversat_packets"
start the system flask run
navigate your browser to http://127.0.0.1:5000
TO USE THE SYSTEM (assuming you start with existing observations.db)
- Click on "New Capture".
- Click on "Fetch TLE from Space-Track".
- Add operator's notes (optional).
- The filename is auto-generated.
- Click "Preview Orbit" if you want to verify when to start and where to point your antenna
- Click "Create Capture Session". At that point, gnuradio should start. The system will store a date/timestamped file to the captures directory. When you're done, simply close the gnuradio window.
- Click on "Captures" and verify that it worked.
- Click on "New Processing Run"
- Select the ID of the Capture run you wish to process. By default it should be the latest one.
- Set the frequency offset. This is the offset in the reference clocks between the satellite and your SDR. It may take some trial and error to figure that out, but once you have it, it shouldn't change much.
- Set the access threshold. This is the number of bit errors you can have in the access code (Preamble and Sync bytes) to continue processing. By default it's 3.
- You shouldn't need to change the output folder, but you have the option.
- Choose whether you wish to store the recovered packets (useful for testing)
- Choose whether or not you want to process using doppler corrections (also useful for testing)
- Tell the system if these are SSDV packett, so it knows to continue processing once it has recovered the packets.
- Add notes as desired about this processing run.
- Click "Start Processing Run". This starts the gnuradio playback of the captured .wav file. Let it run to completion. If packets are detected, take a look at the balance of the signal from the quad_demod block (it should be labeled that way, or something close). The signal should be balanced between +/- 1. If it's off, then the offset needs to be adjusted.
- If it's an SSDV session, the recovered picture should be in the /static folder.
- Click on "Processing" to look at the output. You can view the processed output by clicking on "Inspect" in the View column. That will give you the basic stats on the recovered packet. I may add a viewer for the payload at some point.
Have Fun!! Tom Conrad