CAS500-2 Rideshare: VSFB SLC-4E - 2026-05-03 6:59 UTC

Hi Jan,

decodes with light-1 deframer 56.38 MB file on MEGA

Bob

N6RFM

Thanks Bob,

Looking better, one can clearly see two alternating signals

This Yaml needs some further tuning and investigation, but it is a start.

name: QUBE2
norad: 98314
data:
  &tlm Telemetry:
    unknown
  &ax25 AX25  Telemetry:
    telemetry: ax25
transmitters:
  2k4 FSK downlink:
    frequency: 435.600e+6
    modulation: FSK
    baudrate: 2400
    deviation: 600
    framing: Light-1
    data:
    - *tlm
  9k6 FSK downlink:
    frequency: 435.600e+6
    modulation: FSK
    baudrate: 9600
    deviation: 2600
    framing: AX.25 G3RUH
    data:
    - *ax25

gr_satellites QUBE2.yml --rawfile QUBE2_50000SPS_435600000Hz_2026_05_05_T03-16-30Z_snip.raw --samp_rate 50e3 --iq

***** VERBOSE PDU DEBUG PRINT ******
((transmitter . 2k4 FSK downlink))
pdu length =         92 bytes
pdu vector contents = 
0000: 01 20 00 96 a0 02 00 83 05 34 00 70 61 f9 69 23 
0010: 5d 02 00 02 00 00 00 00 00 00 0c 11 00 00 00 11 
0020: 00 00 00 00 80 00 00 00 80 00 00 89 ff ff ff 00 
0030: 00 00 00 27 bf 01 00 18 0b 01 00 1e 01 30 01 3d 
0040: 01 03 01 00 00 00 00 00 00 00 00 00 00 00 00 00 
0050: 00 00 00 eb 1f 00 00 14 04 96 00 00 
************************************
***** VERBOSE PDU DEBUG PRINT ******
((transmitter . 2k4 FSK downlink))
pdu length =         92 bytes
pdu vector contents = 
0000: 01 20 00 96 a0 02 01 00 00 00 af 02 eb 00 18 01 
0010: bc 00 00 00 03 00 00 00 ba 00 00 00 00 00 27 00 
0020: 00 00 10 10 10 10 12 11 12 11 11 0b 0b 0b 00 00 
0030: 00 14 04 00 00 00 1c bf 01 00 04 00 00 00 80 95 
0040: 80 40 da 23 e2 43 00 00 88 3f 00 00 c0 7f 00 00 
0050: c0 7f 00 00 ec 40 00 00 c0 7f 00 00 
************************************
***** VERBOSE PDU DEBUG PRINT ******
((transmitter . 2k4 FSK downlink))
pdu length =         91 bytes
pdu vector contents = 
0000: 01 20 00 96 a0 02 02 c0 7f 71 61 f9 69 01 f7 cf 
0010: 0a 42 fb b5 7e c2 f8 71 f8 48 3b 48 d8 46 13 00 
0020: 00 00 0b 00 00 00 01 00 00 00 03 5c c3 38 3d 89 
0030: 47 73 3e 8f ad 14 bd 4a 42 6f bd 52 fb 52 ba 33 
0040: f3 0e 45 00 c0 45 45 66 76 28 c5 00 18 4f c5 17 
0050: bf 01 00 03 00 00 00 01 00 00 00 
************************************

Jan | PE0SAT

You are using the wrong modem, you need HS-PSK

http://uz7.ho.ua/modem_beta/other-versions.zip

2 Likes

This modem for GEMINI-POLLUX 9k6 (not for QUBE2)

2 Likes

Noticed one appearance of S-band signal with 2268.745 center, matching closest to 88083 in last nights strf 22:25 UTC

Frequency is calculated from average top and bottom trace. Signal is weak but it’s not matching anything else / older

1 Like

And a 2256 MHz signal with totally no match

1 Like

88058 2269.650 MHz

2 Likes

HYDRA-3 is in DB with a transmitter at 401.320 MHz, for initial TLE we are going to use this one:

HYDRA-3
1 98308U          26123.40776256  .00000000  00000-0  50000-4 0    01
2 98308  97.3900  21.9297 0014528   0.0000  48.1116 15.20279983    05

Also, Gemini-Pollux is now at BPSK 1k2 (instead 9k6), future observations will be updated in the next minutes, here is the latest TLE from space-track.org analyst list (object 88061) based on ikhnos analysis:

GEMINI-POLLUX
1 98320U          26124.67370674 +.00003270 +00000+0 +32746-3 0 00051
2 98320  97.7367  22.9426 0002456  71.0771 289.0714 14.92072934000213
2 Likes

I’m very pleased to report a 38k4 AX100-ccsds decode from NuLink-1 tonight. Thanks very much for sharing modulation & TLE information!

https://x.com/scott23192/status/2051884369879462176

Here are the settings used: (note, ‘baud’ = 38400 & input source was 48k audio from GQRX)

5 Likes

My attempt to parse this NuLink-1 frame using the .ksy file kindly provided earlier was not successful.

Or, if this KSY file is only for the 401 MHz LoRa packets, could we have access to one for the S-Band frames? Thanks!

Any help appreciated if the .ksy file requires modification, etc.

4 Likes

Thanks @PE0SAT and @dl7ndr,

Update: decoder is now complete, all fields confirmed from firmware source

After analyzing 97 frames captured April 1-3, 2026 (pre-launch ground tests), I located the authoritative struct definition in the CTS-SAT-1 OBC firmware source:

firmware/Core/Inc/comms_drivers/comms_tx.hCOMMS_beacon_basic_packet_t
Repo: https://github.com/CalgaryToSpace/CTS-SAT-1-OBC-Firmware

Frame layout: 4-byte CSP header + 130-byte struct = 134 bytes (some frames add a trailing 4-byte CRC32 = 138 bytes)

Key fields and confirmed values from your two frames (decoded with corrected decoder):

Frame 1: 2026-04-01 12:34:45 UTC
  OBC uptime         : 46,685 s (12.97 hours)
  EPS uptime         : 46,167 s (matches OBC — no reboot)
  Battery voltage    : 15,912 mV = 15.912 V  (4S LiPo, 97%)
  Battery temp       : 11.33 °C
  OBC temperature    : 17.75 °C
  Beacon #           : 2,270  (~21 s interval)
  Message            : "Hello from CalgaryToSpace FrontierSat"

Frame 2: 2026-04-01 12:35:05 UTC
  Battery voltage    : 15,907 mV  (97%)
  OBC temperature    : 17.75 °C

Previous incorrect assumptions (now fixed):

  • uptime field is in milliseconds, not seconds — the “61-day uptime” I reported earlier was actually 87.9 minutes

  • The field previously labeled bus_voltage_mv is actually eps_uptime_sec (EPS uptime in seconds, persists across OBC reboots)

  • unix_epoch_time_ms is a u64 — the “firmware_id=413” was the high-32 bits of the timestamp, constant for all frames within 2026

  • The sensor block contains EPS power readings in centi-Watts (cW), not raw ADC sensor values

  • What I decoded as “sensor6 current = 1225 mA” is actually obc_temperature_cC = 122512.25°C

Thanks to @sv2hwm for the two frames, they were essential for cross-checking. The decoder should now work on any frame received on orbit.

3 Likes

If anyone would like to test their 38k4 decoder setup for the NuLink sats, you are welcome to an audio file of the decodable (is that a word?) packet at:

https://www.dropbox.com/scl/fi/p65habku4j7f27tjros54/NuLink-1_38k4_decode_AUDIO.wav?rlkey=bdxriiotlc4r8216az17svi3r&dl=0

2 Likes

Based on the space-track.org analyst list, for HELIOS we follow 88082 but with checking also 88083 as candidate and for SELENE we follow 88081 with additional candidate 88070, here are the TLE with changed NORAD ID to follow the temporary one we use in DB:

SELENE
1 98316U          26125.90170986 +.00007051 +00000+0 +33643-3 0 00066
2 98316  97.4079  24.4804 0005911 117.0709 243.1129 15.19364063000389
HELIOS
1 98317U          26125.90154353 +.00007388 +00000+0 +35132-3 0 00076
2 98317  97.4063  24.4771 0006339 123.2577 236.9266 15.19463087000381
2 Likes

Just to follow up on this thread, parker-research has already raised MR #517 on satnogs-decoders with a full decoder for FrontierSat. I had been independently working on the same thing using the firmware source (COMMS_beacon_basic_packet_t in the OBC repo), and when I checked parker’s KSY against my decoded frames, every field matches. 97 pre-launch ground-test frames (April 1–3, 2026) all parse cleanly with zero unparsed bytes.

So no separate PR from my side, parker’s submission covers it. Worth merging once CTS-SAT-1 starts appearing on SatNOGS passes.

On a separate note - @bali @PE0SAT, I also have an open PR for UWE-3 on satnogs-decoders. Could anyone take a look and help get it merged when you have a moment?

73, Sunil

1 Like

Congratulations Scott,

Great to see this S-band reception and decode.

Looking at your information I have created the following Yaml that should work.

name: NULINK-1
norad: 98322
data:
  &tlm Telemetry:
    unknown
transmitters:
  38k4 FSK downlink:
    frequency: 2218.000e+6
    modulation: FSK
    baudrate: 38400
    deviation: 9600
    framing: AX100 ASM+Golay
    scrambler: CCSDS
    syncword: 4
    data:
    - *tlm

Jan | PE0SAT

4 Likes

congrats scott @K4KDR

it work @PE0SAT

gr_satellites NULINK-1.yml --audio --samp_rate 48000 --kiss_out /tmp/kisstnc
symbol_sync_ff :warning: block performing more interpolations per symbol (2) than input samples per symbol (1.25). Consider reducing osps or increasing sps
correlate_access_code_tag_bb :debug: Access code: 930b51de
correlate_access_code_tag_bb :debug: Mask: ffffffff
correlate_access_code_tag_bb :debug: writing tag at sample 486251
correlate_access_code_tag_bb :debug: writing tag at sample 488156
***** VERBOSE PDU DEBUG PRINT ******
((transmitter . 38k4 FSK downlink))
pdu length =        204 bytes
pdu vector contents = 
0000: 83 47 6a 01 4e 75 4c 69 6e 6b 2d 31 00 00 02 06 
0010: 40 08 7f 0d 10 0d 0d 00 00 00 01 01 00 00 00 01 
0020: 01 00 00 be c7 ae 14 bf 20 a3 d7 3f c8 a3 d7 00 
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
0040: 00 03 03 03 03 03 03 03 03 03 03 00 05 87 00 bf 
0050: c8 a3 d7 bf 20 a3 d7 be c7 ae 14 00 00 00 00 00 
0060: 00 00 00 00 00 00 00 01 ff f7 00 ef e5 02 95 fc 
0070: 54 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
0080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
0090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00a0: 00 00 00 00 00 00 00 00 00 00 ff 00 01 00 01 00 
00b0: 00 40 b9 00 08 00 08 00 08 00 08 00 00 00 01 05 
00c0: 69 fa bf 44 86 77 86 22 f9 f4 40 e7 
************************************
hexdump -C /tmp/kisstnc
00000000  c0 09 00 00 01 9d fe 0d  25 77 c0 c0 00 83 47 6a  |........%w....Gj|
00000010  01 4e 75 4c 69 6e 6b 2d  31 00 00 02 06 40 08 7f  |.NuLink-1....@..|
00000020  0d 10 0d 0d 00 00 00 01  01 00 00 00 01 01 00 00  |................|
00000030  be c7 ae 14 bf 20 a3 d7  3f c8 a3 d7 00 00 00 00  |..... ..?.......|
00000040  00 00 00 00 00 00 00 00  00 00 00 00 00 00 03 03  |................|
00000050  03 03 03 03 03 03 03 03  00 05 87 00 bf c8 a3 d7  |................|
00000060  bf 20 a3 d7 be c7 ae 14  00 00 00 00 00 00 00 00  |. ..............|
00000070  00 00 00 00 01 ff f7 00  ef e5 02 95 fc 54 00 00  |.............T..|
00000080  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000000b0  00 00 00 00 00 00 00 ff  00 01 00 01 00 00 40 b9  |..............@.|
000000c0  00 08 00 08 00 08 00 08  00 00 00 01 05 69 fa bf  |.............i..|
000000d0  44 86 77 86 22 f9 f4 40  e7 c0                    |D.w."..@..|
000000da
5 Likes

From space-track.org analyst list and @PE0SAT strf analysis we have for QUBE2 a match with object 88084 and the TLE changed to use the temporary NORAD ID:

QUBE2
1 98314U          26125.70374634  .00000000  00000-0  41301-3 0    00
2 98314  97.4108  24.2931 0004516 123.2465 236.9203 15.19613077    01
3 Likes

This config will work with NuLink-2 as well :smiley:

2 Likes

Is there a KSY available for the S-Band downlink? Thanks!

Tonight it was NuLink-2’s turn to show off. Not one but FOUR 38k4 AX100 decodes this time - what a thrill on S-Band!

https://x.com/scott23192/status/2052249894283325900

6 Likes