Telemetry decoding in SkyRoof

97 views
Skip to first unread message

Alex VE3NEA

unread,
Jul 4, 2026, 11:54:41 AMJul 4
to SkyRoof
Hi all,

A question I hear often is "why use SkyRoof's built-in telemetry decoder when I already have UZ7HO SoundModem, Direwolf, or gr-satellites?" I'd like to explain how the built-in decoder is designed, and — more importantly — show you how to compare it against those other programs on your own station, so you can see for yourself whether it decodes more of the frames you care about.

How the built-in decoder is designed

A few choices set it apart from the audio-based decoders:

It decodes straight from the radio. The other programs work on audio: SkyRoof (or another SDR program) turns the satellite signal into sound, passes it through a virtual audio cable, and the modem decodes that sound. SkyRoof's built-in decoder skips those steps and works directly on the signal coming from the SDR. Fewer conversions means less of the original signal is lost along the way.

It's built for short signal bursts. Satellite telemetry usually comes in short bursts with quiet gaps in between. SkyRoof looks at each whole burst at once and measures the signal's characteristics across the entire burst before it decodes. Audio modems demodulate continuously and need a short run-up to lock on at the start of every burst — time during which the first data can be missed. SkyRoof doesn't need that run-up.

It's tailored to the type of signal. Different satellites use different kinds of signals (GMSK, GFSK, and wide FSK). SkyRoof uses a decoding method matched to each type, rather than one general-purpose method for all of them.

It sets itself up automatically. SkyRoof looks up each satellite's signal settings from the database, so there's nothing to configure by hand. While building it I've also corrected many wrong entries in that shared database, which sometimes makes the difference between decoding and not.

Whether these design choices actually give you more decoded frames depends on your antenna, your radio, and the passes you catch — so the best thing to do is test it side by side.

How to compare it yourself, using a Virtual Audio Cable (VAC)

The idea is simple: let SkyRoof and another decoder listen to the exact same signal at the same time, and compare how many good frames each one gets.
  • Install a Virtual Audio Cable — VB-Audio CABLE (get the 2024 version), then reboot.
  • In SkyRoof, select the satellite and its data transmitter. Many satellites have more than one transmitter on the same frequency. If you do not have any decoding, try a transmitter with a different Baud rate or mode.
  • open View / Telemetry to run the built-in decoder.
  • Go to Tools / Settings → Output Stream, choose I/Q to VAC (best for gr-satellites) or Audio to VAC (for UZ7HO or Direwolf), set Gain to 0, and pick the CABLE device. Then click the Output Stream label on the status bar to turn it on.
  • Point the other decoder at the CABLE output:
  • gr-satellites: gr_satellites <NORAD> --audio "CABLE Output (VB-Audio Virtual Cable)" --samp_rate 48000 --iq
  • UZ7HO SoundModem / Direwolf: set the program's input device to the CABLE output and pick the matching mode (for example, FSK G3RUH 9600).
  • Run the same pass through both and compare the number of good frames. 

Satellites I've decoded with SkyRoof so far

(mostly limited by the available antenna).

NORAD number in parentheses.
  • SAKHACUBE-CHOLB (67290)
  • UNISAT-7 (47945)
  • NIGHTJAR (60535)
  • Suomi 100 (43804)
  • GALAPAGOS-UTE-SW (67279)
  • CAS-3H (40908)
  • CubeSX-HSE-3 (57178)
  • TEVEL2-7 (63238)
  • Svyatobor-1 (57187)
  • KuzGTU-1 (57217)
  • NUSHSat1 (63211)
  • TEVEL2-4 (63213)
  • Luca (98449)
  • TEVEL2-2 (63219)
  • AISTECHSAT-2 (43768)
  • TEVEL2-5 (63214)
  • UmKA-1 (57172)
  • Monitor-4 (57182)
  • CUTE (49263)
  • AEPEX (68506)
  • UND ROADS 2 (64549)
  • HADES-SA (68446)
  • BISONSAT (40974)
  • TIGRISAT (40043)
  • RANDEV (52898)
  • TECHSAT 1B (25397)
  • ROBUSTA-3A (60243)
  • NETSAT 1 (46506)
  • LASARsat (62391)
  • CatSat (60246)

The list keeps growing. If you decode a satellite that isn't here, or you try a side-by-side comparison, please share your results — including any case where another decoder does better, since those are the ones that help me improve SkyRoof.

It will help me if you record the I/Q stream to a .WAV file and send it to me for analysis in addition to the decoded data.

73,
Alex VE3NEA

Marcus PY2PLL

unread,
Jul 4, 2026, 11:06:16 PMJul 4
to SkyRoof
Hi Alex, below is a partial decoded sats list, I only started to write down after your e-mail.

Will do some side by side along the week. I need to organize the UZ7HO modems and create shortcut for each one to speed up modem swap. Will record some IQ samples as well.

In this meantime I left the UZ7 GMSKUSP running to compare but your decoder is much better. Sometimes with weak signals I got 3-5 decodes on SkyRoof and none on UZ7HO.

Two things I need to test again:

CUBEBUG-2 is AFSK 1K2 AX25. Despite SkyRoof shows as decoder available, there was zero decodes. UZ7HO AFSK version decoded well.

MIMAN 2.4/4.8K by PE0SAT information but only one option at the sat info. Yep, I'm aware that this transmitters info came from SatNOGS database. May be I'm mixing things but I took note of this one because there was decode at UZ0 modem @ 4k8 and the only option available was 2k4. I'll check (I'll create a group with this cases).

73 Marcus PY2PLL

  • BISONSAT
  • SNUGLITE III
  • TEVEL 2-3-1
  • TEVEL 2-4-1
  • TEVEL 2-9-1
  • LASAR-SAT
  • TIGRISAT
  • CUBEBUG-2 (AFSK 1K2 AX25) only decoded at UZ0HO modem
  • MIMAN (2K4/4K8, no selection, only one rate)
  • AEPEX
  • CAT-SAT
  • AO-123
  • A-SEANSAT-PG1
  • AI-MUNTHER
  • ZORKIY-2M 5
  • ZORKIY-2M 7
  • ZORKIY-2M VPE
  • SITRO-AIS-61
  • SITRO-AIS-63
  • SITRO-AIS-64
  • SITRO-AIS-5
  • ION SCV-014
  • NASBSAT-1
  • ConnectaloT-8
  • Tevel2-7
  • NUSHSat1
  • NIGHTJAR (XX0UHF-0)
  • Waratah Seed-1
  • ConnectaloT-5

Alex VE3NEA

unread,
Jul 5, 2026, 9:42:46 AMJul 5
to SkyRoof
Thank you for your tests! Great to see some 400 MHz band sats decoded, something that my antenna does not allow me to receive. The SkyRoof telemetry decoder has been out only for a few days, I am still testing it and finding the areas to improve. One problem already discovered is poor quality of modulation details in the satellite database, like the one you reported - the sat uses different Baud rates but only one of them is in the db. Ideally such errors should be reported to the SatNOGS database and fixed there, but I am also working on a quick fix solution, manual override of the db data - it will be available in the next build.

Craig

unread,
Jul 5, 2026, 11:23:07 AMJul 5
to SkyRoof
The Telemetry decoder is a wonderful addition to SkyRoof. I've struggled with using other programs, virtual audio cables, etc. This is the way it should be done...thank You!

Julio Cabral

unread,
Jul 5, 2026, 5:38:52 PMJul 5
to SkyRoof

Hi Alex, I'm testing the decoder and so far with the KNACKSAT-2 I haven't had good results. With the Skyroof decoder I got 2 frames, and with the HS Soundmodem I got 7 frames decoded. I'll wait for another run and send you the image, running both in parallel to see the difference.

Julio
LW2DYB

Thomas Schuessler

unread,
Jul 5, 2026, 6:04:41 PMJul 5
to SkyRoof, Alex VE3NEA
Trying to explore the new features in Skyroof.  I have a use for the recorder panel, especially for playback of I/Q records for demonstration purposes at an upcoming event.

Audio recording and playback from the recorder panel works as I would expect.  Audio from the waterfall stops and I get audio from the file through my speakers as I would expect.  I am confused though, about I/Q playback as compared to other SDR applications.  Your User Guide seems to indicate that the output of the player I/Q panel routs the same software path as it would if it were coming from the SDR device.  I get audio output and proper waterfall from my SDRPlay when in live mode.  Playing back a just recorded and saved I/Q file does not override the waterfall and also does not output any derived audio.

Inline image

There are several options to try in the "Output/Stream" sections of settings, but non of them that I tried seems to give me what I would want, expect.

I see that a .JSON file is generated with the save of the MP3 audio or the IQ .wav.  Not sure how that comes into play here but I suppose it holds the metadata for things like frequency, QSO entry points, etc..  I did try to load the IQ.wav into HDSDR, but saw that output as seen on their waterfall, seemed to follow me around the passband as I clicked around on Skyroof when recording, hense the JSON file to keep everything organized.

Would love to know what I am missing.  I want to use your program in a demo situation and getting a proper I/Q playback would be wonderful.

73, Tom, N5HYP




Alex VE3NEA

unread,
Jul 5, 2026, 7:07:45 PMJul 5
to SkyRoof
@Julio thank you for the report, no need to send images.  Modulation details for  KNACKSAT-2  are missing from the database, I will find them out and add manually.

@Tom when you are playing back I/Q recording, the recorded data sampled at 48 kHz is sent to the Output Stream, using whatever channel is selected in the Settings, either VAC or UDP packets. The purpose of this stream is to demodulate telemetry data using 3-rd party software. This does not affect the waterfall display or audio output. Recording the raw I/Q data from the SDR would produce a data stream of 48 Mb per second, something that we are not ready to record.
Reply all
Reply to author
Forward
0 new messages