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

I’ve just seen the analysis by @bali above for Drishti so I revert back to follow 69010 and added the fixed TLE set.

2 Likes

While waiting to see if the S-Band downlink from BusanSat was active tonight, I checked on NuLink-2. The 38k4 downlink is still going!

5 Likes

@gigasignal contacted me in private, and asked if I had any optical observations. This happenend to be so. These polar orbits drift in view of the camera every now and then. I am a bit lost in the identifications, I list only Space Track TLE numbers. Here they are:

69003 Not seen:

68981 Not seen:

69012:

69013:

69013 and 69011:

69011:

68990 Not seen:

69010, if this is still Drishti, then it is still in solid shape, and didn’t disintegrate :slight_smile: :

69019:

68989:

68988 Not seen:

68980:

A few were automatically detected, and gave these sky coordinates:

68989 26 100K   0794 E 20260516233327243 17 25 1035309+460911 37 S
69010 26 100AG  0794 E 20260516233217755 17 25 1022288+421566 37 S
69010 26 100AG  0794 E 20260516233225814 17 25 1037780+384125 37 S
69011 26 100AH  0794 E 20260516233137983 17 25 1035568+401264 37 S
69012 26 100AJ  0794 E 20260516233019045 17 25 1013917+460575 37 S
69012 26 100AJ  0794 E 20260516233027701 17 25 1032602+421213 37 S

A few were seen but to faint to be automatically detected: 69013, 69019, 68980.
Some where not detected: 68981, 69003, 68990, 68988. Could be small objects of course.
Others did not pass the camera. This can be seen in this plot:

The yellow lines are all satellites of this launch. The white square is the expcted FOV of the camera. The red circles are all detected satellites (any launch) of the other night.

Hope this is useful. Cheers, Eelke.

4 Likes

:partying_face:

cool! dristhi is 190kg sat. pretty big and heavy compare with common small cubesat.

68989 is busansat. BusanSat is ocean observation satellite promoted by a local government in Korea. It is a 12U. pretty big for cubesat.

i’m wondering if 1U cubesat or maybe even pocket sat like hades can captured by your optical groundstation

1 Like

To complete our check of the NuLink sats, tonight I was able to confirm that NuLink-1 is still active on S-Band. Unfortunately not quite enough SNR on this pass to decode the 38k4.

3 Likes

The NORAD ID 69000U seems to be mismatched with GEMINI-POLLUX again.

The current TLE for NORAD ID 69000 no longer matches the observed Doppler curve:

1 69000U 26100W   26138.83335647 -.00062350  00000-0 -56861-2 0  9999
2 69000  97.7056  35.8729 0011987  48.0412 344.6182 14.95387147  1301

Using the TLE from a few days ago, it still matched the observations very well. The fitted TLE that was used is shown below:

1 69000U 26100W   26136.40949124  .00001324  00000-0  13578-3 0  9992
2 69000  97.7354  34.4638 0001856  57.9473 302.1926 14.92103209  1965

The nearby objects are still relatively far from the observed Doppler curve. The closest candidate seems to be object 68999, but it is still not a good match.

4 Likes

It isn’t the first time this happens with large deployments, lets keep monitoring.

The same error as a couple of days ago.

Jan | PE0SAT

3 Likes

Objects 68985, 68986, 68987 and 68999 passed the camera but were not seen. They must be small.

3 Likes

Since there’s not much happening except for the MUCH appreciated efforts of those skilled at matching transmissions to objects, I thought I’d close the loop on the 38k4 downlink from NuLink-1 since it was too weak to decode the other night. Managed 2 ‘strong enough’ packets tonight which provided -4- frames of data! So, both of those sats seem to be in good working order. Damn shame the 401 MHz LoRa downlinks are either not actually transmitting or are much too weak (even for LoRa!) to be heard on the ground.

5 Likes

So pleased to finally be able to report both RX and decodes from BusanSat!

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

… same 38k4 settings as used w/ NuLink-1 & 2.

Since this one was not transmitting on every pass here, I didn’t know if I would get a pass with enough elevation -and- an active downlink.

… if anyone would like to do any testing, a short crop of the strongest packets is available as a 32-bit float I/Q file (samp rate = 375000) at:

https://www.dropbox.com/scl/fi/aklw9j6lbri3nnh7kd8oy/gqrx_20260525_040500_428950000_375000_BusanSat-crop.raw?rlkey=pdp8qbdye0xjge4teoweptrwt&dl=0

8 Likes

try convert your floating 32 to sdrpp wav, and waterfall signal seen like below. correct?

use nfm, because cannot use usb because usb max only 1200 hz.

try create satyml

name: BUSANSAT
norad: 68989
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

gr_satellites BUSANSAT.yml --audio --samp_rate 48000

but no decode data

Thanks @K4KDR and @bali

After converting the IQ and also moving it to the center of the IQ, I got the following signal and frames.

Then the following command was used to decode:

gr_satellites BUSANSAT.yml --rawint16 gqrx_20260525_040500_428950000_375000_BusanSat--crop.wav --samp_rate 375000 --iq

***** VERBOSE PDU DEBUG PRINT ******
((transmitter . 38k4 FSK downlink))
pdu length =        223 bytes
pdu vector contents = 
0000: 54 f5 96 00 7a 10 42 55 53 41 4e 20 6e 73 74 40 
0010: 6e 61 72 61 73 70 61 63 65 2e 63 6f 6d 01 17 1b 
0020: 25 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
0040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
0050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
0060: 00 00 00 00 00 00 00 00 00 06 ff f5 06 f5 f4 f1 
0070: f5 f3 f2 da 21 23 20 55 15 55 15 55 5a 00 ea ff 
0080: b9 00 06 00 3d 02 a6 02 0d 00 ce 02 1f 0d 2d 00 
0090: 20 0d 83 13 88 13 00 02 00 03 05 01 00 00 00 00 
00a0: 0a 00 0c 00 0a 00 0b 00 0b 00 0c 00 e4 01 ee 01 
00b0: 0a 02 f1 01 c7 01 d2 01 23 22 26 24 23 23 06 07 
00c0: 05 06 0f 10 0f 0f b0 7e fb ff a3 00 00 00 00 55 
00d0: 02 25 27 80 8d cf 84 51 00 00 00 00 00 c9 5c 
************************************
***** VERBOSE PDU DEBUG PRINT ******
((transmitter . 38k4 FSK downlink))
pdu length =        223 bytes
pdu vector contents = 
0000: 54 f5 96 00 7a 11 42 55 53 41 4e 20 6e 73 74 40 
0010: 6e 61 72 61 73 70 61 63 65 2e 63 6f 6d 01 17 1b 
0020: 25 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
0040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
0050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
0060: 00 00 00 00 00 00 00 00 00 05 ff f5 05 f4 f3 f0 
0070: f4 f3 f1 da 21 23 20 55 15 55 15 55 5a 00 ea ff 
0080: b9 00 06 00 3d 02 a6 02 0d 00 ce 02 1f 0d 2d 00 
0090: 20 0d 83 13 88 13 00 02 00 03 05 01 00 00 00 00 
00a0: 0a 00 0c 00 0a 00 0b 00 0b 00 0c 00 e4 01 ee 01 
00b0: 0a 02 f1 01 c7 01 d2 01 23 22 26 24 23 23 06 07 
00c0: 05 06 0f 10 0f 0f b0 7e fb ff a3 00 00 00 00 55 
00d0: 02 25 27 80 8d cf 84 51 00 00 00 00 00 49 50 
************************************
***** VERBOSE PDU DEBUG PRINT ******
((transmitter . 38k4 FSK downlink))
pdu length =        223 bytes
pdu vector contents = 
0000: 54 f5 96 00 7a 12 42 55 53 41 4e 20 6e 73 74 40 
0010: 6e 61 72 61 73 70 61 63 65 2e 63 6f 6d 01 17 1b 
0020: 25 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
0040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
0050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
0060: 00 00 00 00 00 00 00 00 00 05 ff f5 05 f4 f3 f0 
0070: f4 f3 f1 da 22 23 1f 55 15 55 15 55 5a 00 ea ff 
0080: b9 00 06 00 3d 02 a6 02 0d 00 ce 02 1f 0d 2d 00 
0090: 20 0d 83 13 88 13 00 02 00 03 05 01 00 00 00 00 
00a0: 0a 00 0c 00 0a 00 0b 00 0b 00 0c 00 e4 01 ee 01 
00b0: 0a 02 f1 01 c7 01 d2 01 23 22 26 24 23 23 06 07 
00c0: 05 06 0f 10 0f 0f b0 7e fb ff a3 00 00 00 00 55 
00d0: 02 25 27 92 90 cf 84 51 00 00 00 00 00 6a 2f 
************************************

All files can be found at this BUSANSAT location.

Jan | PE0SAT

3 Likes

lol. i forget to centre it..

reply the audio with centering at sdrpp, and voila:
gr_satellites BUSANSAT.yml --audio --samp_rate 48000

-> Packet from 38k4 FSK downlink
Container: 
    header = Container: 
        addresses = ListContainer: 
            Container: 
                callsign = u'*zK\x00=\x08' (total 6)
                ssid = Container: 
                    ch = False
                    ssid = 1
                    extension = False
            Container: 
                callsign = u"*) '\x107" (total 6)
                ssid = Container: 
                    ch = False
                    ssid = 9
                    extension = True
        control = 0x74
        pid = 0x40
    info = b'naraspace.com\x01\x17\x1b%\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\xff\xf5\x05\xf4\xf3\xf0\xf4\xf3\xf1\xda!# U\x15U\x15UZ\x00\xea\xff\xb9\x00\x06\x00=\x02\xa6\x02\r\x00\xce\x02\x1f\r-\x00 \r\x83\x13\x88\x13\x00\x02\x00\x03\x05\x01\x00\x00\x00\x00\n\x00\x0c\x00\n\x00\x0b\x00\x0b\x00\x0c\x00\xe4\x01\xee\x01\n\x02\xf1\x01\xc7\x01\xd2\x01#"&$##\x06\x07\x05\x06\x0f\x10\x0f\x0f\xb0~\xfb\xff\xa3\x00\x00\x00\x00U\x02%\'\x80\x8d\xcf\x84Q\x00\x00\x00\x00\x00IP' (total 207)
correlate_access_code_tag_bb :debug: writing tag at sample 1741605
correlate_access_code_tag_bb :debug: writing tag at sample 1815739
correlate_access_code_tag_bb :debug: writing tag at sample 1855121
correlate_access_code_tag_bb :debug: writing tag at sample 2390131
correlate_access_code_tag_bb :debug: writing tag at sample 2466781
-> Packet from 38k4 FSK downlink
Container: 
    header = Container: 
        addresses = ListContainer: 
            Container: 
                callsign = u'*zK\x00=\x08' (total 6)
                ssid = Container: 
                    ch = False
                    ssid = 1
                    extension = False
            Container: 
                callsign = u"*) '\x107" (total 6)
                ssid = Container: 
                    ch = False
                    ssid = 9
                    extension = True
        control = 0x74
        pid = 0x40
    info = b'naraspace.com\x01\x17\x1b%\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\xff\xf5\x05\xf4\xf3\xf0\xf4\xf3\xf1\xda!# U\x15U\x15UZ\x00\xea\xff\xb9\x00\x06\x00=\x02\xa6\x02\r\x00\xce\x02\x1f\r-\x00 \r\x83\x13\x88\x13\x00\x02\x00\x03\x05\x01\x00\x00\x00\x00\n\x00\x0c\x00\n\x00\x0b\x00\x0b\x00\x0c\x00\xe4\x01\xee\x01\n\x02\xf1\x01\xc7\x01\xd2\x01#"&$##\x06\x07\x05\x06\x0f\x10\x0f\x0f\xb0~\xfb\xff\xa3\x00\x00\x00\x00U\x02%\'\x80\x8d\xcf\x84Q\x00\x00\x00\x00\x00IP' (total 207)

thank you @K4KDR and @PE0SAT !!!

Great, only the telemetry doesn’t make sense, this isn’t ax25, maybe csp.

My guess is that @K4KDR uses a direwolf Virtual KISS TNC to decode the hex data.

Jan | PE0SAT

Of course you’re correct, Jan. I like the view provided; makes it easy to spot ASCII, for example.

Screenshot from 2026-05-25 18-36-31

1 Like

Thanks Scott, just gave it a try and got the following output.

And needs some tuning, I only need the hex/ascii part, and tips?

[2026-05-25 20:42:19] [0L] (Not AX.25)T<0xf5><0x96><0x00>z<0x12>BUSAN nst@naraspace.com<0x01><0x17><0x1b>%<0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x00><0x05><0xff><0xf5><0x05><0xf4><0xf3><0xf0><0xf4><0xf3><0xf1><0xda>"#<0x1f>U<0x15>U<0x15>UZ<0x00><0xea><0xff><0xb9><0x00><0x06><0x00>=<0x02><0xa6><0x02><0x0d><0x00><0xce><0x02><0x1f><0x0d>-<0x00> <0x0d><0x83><0x13><0x88><0x13><0x00><0x02><0x00><0x03><0x05><0x01><0x00><0x00><0x00><0x00><0x0a><0x00><0x0c><0x00><0x0a><0x00><0x0b><0x00><0x0b><0x00><0x0c><0x00><0xe4><0x01><0xee><0x01><0x0a><0x02><0xf1><0x01><0xc7><0x01><0xd2><0x01>#"&$##<0x06><0x07><0x05><0x06><0x0f><0x10><0x0f><0x0f><0xb0>~<0xfb><0x
[2026-05-25 20:42:19] ------
[2026-05-25 20:42:19]   000:  54 f5 96 00 7a 12 42 55 53 41 4e 20 6e 73 74 40  T...z.BUSAN nst@
[2026-05-25 20:42:19]   010:  6e 61 72 61 73 70 61 63 65 2e 63 6f 6d 01 17 1b  naraspace.com...
[2026-05-25 20:42:19]   020:  25 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  %...............
[2026-05-25 20:42:19]   030:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
[2026-05-25 20:42:19]   040:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
[2026-05-25 20:42:19]   050:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
[2026-05-25 20:42:19]   060:  00 00 00 00 00 00 00 00 00 05 ff f5 05 f4 f3 f0  ................
[2026-05-25 20:42:19]   070:  f4 f3 f1 da 22 23 1f 55 15 55 15 55 5a 00 ea ff  ...."#.U.U.UZ...
[2026-05-25 20:42:19]   080:  b9 00 06 00 3d 02 a6 02 0d 00 ce 02 1f 0d 2d 00  ....=.........-.
[2026-05-25 20:42:19]   090:  20 0d 83 13 88 13 00 02 00 03 05 01 00 00 00 00   ...............
[2026-05-25 20:42:19]   0a0:  0a 00 0c 00 0a 00 0b 00 0b 00 0c 00 e4 01 ee 01  ................
[2026-05-25 20:42:19]   0b0:  0a 02 f1 01 c7 01 d2 01 23 22 26 24 23 23 06 07  ........#"&$##..
[2026-05-25 20:42:19]   0c0:  05 06 0f 10 0f 0f b0 7e fb ff a3 00 00 00 00 55  .......~.......U
[2026-05-25 20:42:19]   0d0:  02 25 27 92 90 cf 84 51 00 00 00 00 00 6a 2f     .%'....Q.....j/
[2026-05-25 20:42:19] ------

Jan | PE0SAT

I’m sure there are parsing commands to pull out only the ASCII; I prefer to see both.

All my direwolf sessions are started by various scripts. #1, I always log everything to text files and, #2, I often filter out various things to only display what I’d like to see. For instance:

k4kdr@3010i5:~$ more KISS-direwolf.sh 
#!/bin/bash

clear

# create 'log' folder under current directory if it doesn't already exist
mkdir -p log

direwolf -c kiss.conf -dup -t 0 -qd -p | ts '[%Y-%m-%d %H:%M:%S]' | tee -a log/$
(date +%Y-%m-%d--%H%M).txt | grep -v -e "0L" -e "Invalid" -e "all communication"
 -e "Troubleshooting" -e "000:  09 00 00" -e "direwolf command line"

rm /tmp/kisstnc

… is the most commonly used script. I should add here the .conf file:

k4kdr@3010i5:~$ more kiss.conf
ARATE 48000
ACHANNELS 1
AGWPORT 8100
KISSPORT 0
KISSPORT 4000

… now, if I KNOW that the decode is not AX.25, then I like to filter out the ‘source’ & ‘destination’ address lines as well for cleaner output:

k4kdr@3010i5:~$ more non-ax25_KISS-direwolf.sh 
#!/bin/bash

clear

# create 'log' folder under current directory if it doesn't already exist
mkdir -p log

direwolf -c kiss.conf -dup -t 0 -qd -p | ts '[%Y-%m-%d %H:%M:%S]' | tee -a log/$
(date +%Y-%m-%d--%H%M).txt | grep -v -e "0L" -e "Invalid" -e "all communication"
 -e "Troubleshooting" -e "000:  09 00 00" -e "direwolf command line" -e "dest" -
e "source" -e "Station address" -e "Source Address" -e "*** The origin" -e "Dest
ination Address"

… I hope those are helpful.

2 Likes

Thanks Scott,

I combined the two and used some variables, maybe also helpful for you and others.
The ts command is part of the debian moreutils package.

#!/usr/bin/env bash
#

CONFDIR="${HOME}"/etc
DCONF="${CONFDIR}"/kisstnc.conf
DLOG="${HOME}"/log


if [ ! -d "${DLOG}" ]; then mkdir -p "${DLOG}"; fi

ax25 () {
direwolf -c ${DCONF} -dupkn -t 0 -qd -p | \
	ts "[%Y-%m-%d %H:%M:%S]" | \
	tee -a "${DLOG}"/direwolf-"$(date +%Y-%m-%d_%H:%M)".log | \
	grep -v -e "0L" -e "Invalid" -e "all communication" \
		-e "Troubleshooting" -e "000:  09 00 00" \
		-e "direwolf command line" -e "dest" -e "source" \
		-e "Station address" -e "Source Address" \
		-e "*** The origin" -e "Destination Address"
}

non-ax25 () {
direwolf -c "${DCONF}" -dupkn -t 0 -qd -p | \
	ts '[%Y-%m-%d %H:%M:%S]' | \
	tee -a "${DLOG}"/direwolf-"$(date +%Y-%m-%d_%H:%M)".log | \
	grep -v -e "0L" -e "Invalid" -e "all communication" \
		-e "Troubleshooting" -e "000:  09 00 00" \
		-e "direwolf command line" -e "dest" -e "source" \
		-e "Station address" -e "Source Address" -e "*** The origin" \
		-e "Destination Address"
}

case "${1}" in
	"ax25")
		ax25
	;;

	"non-ax25")
		non-ax25
	;;

	*)
		echo "Exit, no valid input, use ax25 or non-ax25."
		exit 1
	;;

esac

Check the variables if you want to use this script.
After that it only need an ax25 or non-ax25 commandline option to run the function needed.

Example kisstnc-direwolf.sh non-ax25

Jan | PE0SAT

2 Likes

I hope BusanSat doesn’t have a problem…

With the modulation & framing figured out, I was anxious to catch some ‘live’ decodes one of these passes. Tonight I got more than I bargained for: 405 frames of the same 9-byte pattern:

… will have to keep an eye on this one and hope that we see a return to the pretty packets seen the other night w/ some ASCII included. Here’s my post w/ additional images:

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

3 Likes

BusanSat back to proper frames again. Always hate to see a satellite lock-up or otherwise fail so early in the mission!

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

3 Likes