This is a quick guide on two ways to demodulate images from geoscan-edelveis.
What you will need is the frames from one image dump, either by observing the satellite yourself or getting the frames
from other observations.
Please see the community thread for more info on this.
The scripts required are found in this repo, additionally you will need
gr_satellites.
Optionally GNU parallel
and sox depending on methods and versions.
This relies on the stations having demodulated the frames, this is not the case when I'm writing this guide, as the stations need additional demodulation software running to provide these.
Log in to DB first, then go to the DB Data Export and
select the timespan needed for the image you’re interested in, getting all the frames will take some time thou.
This CSV will be emailed to your address. Download this to a working directory, in this example ~/geoscan/
.
To select only the frames of the timestamp of interest, we can use grep to do this:
grep '^2023-01-02 23' QNCD-8954-6090-5430-2718-1481-20230103T094910Z-week.csv > 2023-01-02_23.csv
This results in a 840K csv that has all that is needed, a bunch of duplicates as well. We now just run process on it:
process_simple.py 2023-01-02_23.csv
which results in Writing image to: 2023-01-02_23.jpg
.
That's it, when the images are separated in time and all the frames are available, this is all that is needed.
First an example of a single station, the incredible Dwingeloo @radiotelescoop.
Open the observation page and download the audio at the bottom left
to a working directory, for example ~/geoscan/6969073/
.
Then process it with audiodemod in fast mode, it searches for all files named satnogs_*.ogg
so it's important to keep
other observation ogg separate:
audiodemod.sh
Found 1 files to process...
running fast demodulation
satnogs_6969073_2023-01-03T08-39-08.ogg
This results in a bunch of files, and it's the .csv we want, so run this through process_simple:
process_simple.py satnogs_6969073_2023-01-03T08-39-08.csv
Writing image to: satnogs_6969073_2023-01-03T08-39-08.jpg
If the observation is this complete this is all that is needed, but the next example uses a lot of stations to possibly collect all frames.
This method has the advantage of getting frames from stations not demodulating this in the first place, althou it is a tiny bit less sensitive due to the lossy ogg format.
Make a working directory for the observation data, for example: ~/geoscan/2022-12-15_15/
and enter it.
Run the audio downloader with either the transmitter UUID or NORAD and the timestamp of interest:
satnogs_fetch_audio.py -u RzkypM3s5zPQf2PC9iY8Ki -s 2022-12-15T15:00:00Z -d 60
This will fetch 30 observations from DB, to process them for frames we run audiodemod:
audiodemod.sh
Found 30 files to process...
running fast demodulation
satnogs_6878606_2022-12-15T15-24-01.ogg
satnogs_6878633_2022-12-15T15-23-21.ogg
satnogs_6878639_2022-12-15T15-23-13.ogg
satnogs_6878927_2022-12-15T15-23-13.ogg
.....
To process them as one big observation we contatenate the files together:
cat *.csv > 2022-12-15_15.csv
And finally run process_simple on that csv:
process_simple.py 2022-12-15_15.csv
Writing image to: 2022-12-15_15.jpg
The script can be passed a single argument to make it run in realtime: audiodemod.sh -r
This makes gr_satellites
run with --throttle and results in timestamps for the frames being correct, else it gets
bunched up in the short time it takes to run. This is a shortcoming that is oftesn not critical, like when there's only
one image sent. The program GNU parallel is used to run these in - you guessed it - parallel, this is because of the
sum of the observation time is required, and it draws very little cpu, so the main limit is memory. Feel free to adjust
the -j20
parameter here, it's the number of parallel processes that are allowed at the same time.
usage: satnogs_fetch_audio.py [-h] [-n NORAD | -u UUID] -s START [-e END] [-d DURATION] [-w] [--dryrun]
options:
-h, --help show this help message and exit
-n NORAD, --norad NORAD
Satellite norad cat id
-u UUID, --uuid UUID Transmitter uuid
-s START, --start START
Start is greater than or equal to YYYY-mm-ddThh:mm:SSZ
-e END, --end END End is less than or equal to
-d DURATION, --duration DURATION
End time after start (minutes)
-w, --withsignal Only observations vetted with signal
--dryrun Dry run, get list of files but no download