Windows manual decoding howto

Here’s a rundown on how to manually decode an observation in Windows. Note this is not the only way to do it, I’m just pointing out one way it can be done.


You will need the following apps to get this done.

  • A virtual audio cable app. VAC is a popular option but costs money. VB Cable will also do and is free. This will give us a virtual audio device that we can set as the output of our audio player and the input of our decoder. Install it.
  • An Ogg audio player. I use VLC. Install it.
  • A virtual ‘modem’ which will convert the audio to a data stream. In most cases we will be working with for satellites, HS Soundmodem by UZ7HO is what we want for this howto. However, there may be cases where some other app can take its place (like AGWPE). Note: there is no install process to this app, just extract it into its own folder you can find later.
  • We need an app to take the raw decoded data and construct KISS frames. DK3WN has written a great tool to not only do that but can also automatically forward decoded frames to the SatNOGS db. Download this telemetry forwarder here. Note: there is no install process to this app, just extract it into its own folder you can find later.
  • Satellite-specific telemetry decoders/viewers. Once again, DK3WN has written a lot of apps that will take the decoded KISS frames for a given satellite and decode its telemetry format into a dashboard. These can all be found here. For this example let’s decode Bugsat-1 and download the telemetry decoder for Bugsat-1 here. Note: there is no install process to this app, just extract it into its own folder you can find later. (repeat this process for other satellites)

All set? Here is the process:

  1. Start up HS Soundmodem. Go to Settings-Devices. If you installed VAC above set your Input device to “Line 1 (Virtual Audio Cable)”. If you installed VB-Cable set it to “CABLE Output (VB-Audio Virtual”. Ensure that Dual Channel is unselected, and set TX SampleRate and RX SampleRate to 48000. Ensure that under Server setup you have the AGWPE Server Port 8000 checked for Enabled (this is how the telemetry decoder gets its data). With the settings done select FSK G3RUH 9600bd for DCD A. (DCD B does not matter in single channel mode). I also move my DCD threshold almost fully to the right.
  2. In your DK3WN Telemetry Forwarder folder is an online_conf.ini file. Edit this file to enter your callsign (if you have one), LAT/LONG, and set SERVER to Leave PORT to
  3. Start up the DK3WN Telemetry Forwarder. The “AGW connection” indicator should immediately turn green as it tries to connect to AGWPE which in this case is provided by HS Soundmodem above.
  4. Let’s grab an observation audio file. For this example I am using what seems to be a decent capture today at SatNOGS Network - Observation 3073 Scroll to the bottom of the waterfall and click the “Audio” link to download. If you are impatient like I am, note the timing where the good beacons start in the waterfall and you can skip to that when it comes time to play the audio.
  5. Open VLC. Click Audio-Audio Device and, if you installed VAC, select “Line 1 (Virtual Audio Cable)”. If you installed VB-Cable select “CABLE Input (VB Audio Virtual Cable)”. Set volume to 100%. Note that when you open the audio file you will not hear anything, as the output of the audio will be piped into HS Soundmodem.
  6. In VLC, click Media and Open File. Then find the file you downloaded earlier in your downloads directory, satnogs_3399_2017-04-20T17-46-09.ogg This will play back the audio capture of the satellite pass, in real time.
  7. You can watch the waterfall in the HS Soundmodem window (if you do not see a changing waterfall there might be something wrong). The first few packets you see are not strong enough to decode. After about 2 minutes of audio (for this specific observation) you should start to see packets decode in HS Soundmodem. As Soundmodem decodes them, the Online Telemetry Forwarder picks them up and does 2 things: 1) it forwards to the SatNOGS database online (or to the PE0SAT database online if you left the server url default). 2) it saves the kiss frames to a file that we can load into the local telemetry dashboard in the next step.
  8. Look at the bottom of the Telemetry Forwarder app for the “.kss” filename of the frames that were decoded. Open the Bugsat-1 telemetry decoder app that you downloaded above. Click on File-Open Kiss File. Find the file that was saved by the forwarder. All of the telemetry for the beacons that were captured will be decoded into the dashboard. In this case we decoded 14 frames.
  9. If you are going to repeat the process for another observation, press “CLR” in the Telemetry Forwarder to clear your stats for troubleshooting the next observation. You can also check for your callsign and the packets you forwarded at SatNOGS DB - Stats

Note: What is missing here is the dashboard view for most satellites in - this is work in progress. Soon we will have a fully automated workflow in which observations are made, demodulated, decoded, and telemetry is extracted from them and shown in a dashboard online. soon…

To repeat the process for another satellite or observation is pretty simple as most of the setup is already done. Just keep in mind that as of the writing of this post all demodulation for SatNOGS observations is FM, so some modes won’t decode (like BPSK) despite how well they may seem to have been received.



Any idea if you download the data from satnogs db it seem it is in different format (*.csv instead of *.kss) than what the dk3wn decoder use?

To download the data you must be logged in.
You put in request when you go to specific satellite in the database.
Right at bottom there is download button and you can choose between everything, week or month data and after you choose at the top of page in green it will show
“Your download request was received. You will get an email when it’s ready”
in the email link a file in *.csv format can be downloaded.

Any help appreciated.


OK I found out the format for DB is in text and not raw. So now to convert :wink:

Hey, I tried the same steps and I could see everything working except that the kiss file is not saved in the directory but it shows in the telemetry forwarder that kiss file is saved in a specific path but I couldn’t see the kiss file. I could see the packets in the soundmodem and its values in the forwarder and it states a kiss file is saved under specific path but couldnt see them exist in the location or anywhere else. Any suggestions on this would be helpful?