SSDV fm RS64S (ASRTU-1)

@PE0SAT gave me information to be able to live-decode those SSDV (not SSTV) images from RS64S (ASRTU-1).

2024-12-31 07:52

2024-12-31 07:54


The original is from the back of QSL cards from LilacSat-2.

2024-12-31 07:56

2024-12-31 07:58

Try yourself!

Check BG2BHC’s Twitter account for a schedule.

Use a gnuradio flowgraph like this:


asrtu_1.grc(remove.txt).txt (3.0 KB)

Run the flowgraph and afterwards this file (image decoder):
ASRTU-1-EN.exe(remove.zip).zip (1.5 MB)
(It’s also on this onedrive)

Switch to 436.210 MHz USB, set a filterwidth of 24 kHz and wait for a 9k6 downlink in BPSK.

Enjoy!

6 Likes

I partially decoded two images here in Brazil :brazil: !!

Date and time of the pass: 2024-12-31 12:15 UTC


I need to improve my antenna :sweat_smile: :rofl:

2 Likes

2025-01-01 07:30 ~ 07:38



4 Likes
  • 2025-01-01 11:52UTC

The entire image was copied well, but unfortunately I forgot to record the IQ file at the beginning of the pass :disappointed_relieved:

73’s de PU4ELT (GH70qd) :brazil: !!!

3 Likes

@dl7ndr do you have a flow graph grc file for converting an ogg file from an observation into a SSDV image?

I have asked AI to create one and this is what it provided.

I have then made this but I have no idea what all the variables should be set to. Maybe you or other with more experience with gnuradio can make this work???

73’s

I don’t know a gnuradio block capable of decoding SSDV.

By the way. The output port of block n must have the same color as the input port of block n+1.
And you don’t need Costas Loop, Packet Header Generator and Packet Header Parser.
Use Audio Source instead of File Soure and go directly into Satellite decoder.

SSDV would be the hard way to start with gnuradio.

There are a couple of gr-satellites yaml files that are able to create images, it seem that “AI” has no clue about the context (my biggest objection to the I in AI) as it is combining blocks that can’t work together in this specific case.

Which one is able to create SSDV images?

I started trying satdump to see if anything in there was capable of decoding the data.

Each time I try to download the program ASRTU-1.rar it gets blocked as a virus threat.
I know this can be a false virus detection but still not sure about trusting it.

This tool was written and packaged in Easy Programming Language. Some anti-virus software may identify it as a Trojan. If this happens, please run it in a sandbox or turn off your anti-virus software.

says the readme.txt in bg6lqv_decoder folder.

JY1Sat, JO-97, Jordan-OSCAR 97

Currently no longer able to send images, but it transmitted SSDV images for a long time.

Here an observation example: JO-97 image

Thanks Daniel I did see/read the readme txt and saw that info. I’m trying to disable the antivirus so I can run it.

1 Like

I put the transmitters’s part from ASRTU-1.yml into JY1-Sat.yml and ran a record of an ASRTU image.
Decoding works, but no image came out.

The main problem with ssdv, more and more teams use there own “standard”.

Maybe an addition to gr_satellites_ssdvfor ASRTU-1 can solve this.

class Satellite(Enum):
    JY1SAT = 'JY1SAT'
    ERMINAZ = 'ERMINAZ'
    DSLWP = 'DSLWP'

    def __str__(self):
        return self.value
1 Like

Finally I have success, partial decodes from 2 observations.

2 Likes

Use gr_satellites_ssdv like this. In this case, I got output_21.jpg & output_21.ssdv. 21 is Image ID.

$ gr_satellites_ssdv --satellite DSLWP grsat_10615233.kss output
2 Likes

Thanks, it worked after I did make on ssdv and copied the created file ssdv into /usr/local/bin.

Before, I got this error message:

FileNotFoundError: [Errno 2] No such file or directory: ‘ssdv’

Little remark: Only one image per .kss will be processed.

1 Like

Some steps to get ASRTU-1 SSDV working with gr-satellites:

Install this SSDV fork.

Create a kiss file with gr-satellites, here an example (this is with an IQ but all other input methods can also be used):

gr_satellites 61781 --rawint16 iq_76800_10864609.wav --samp_rate 76800 --iq --kiss_out 10864609.kss

Use the create kiss file as input for `gr_satellites_ssdv’

gr_satellites_ssdv --satellite DSLWP 10864609.kss 10864609.jpg

Command output information:

Calling SSDV decoder for image 0x21
Callsign: DSLWP
Image ID: 21
Resolution: 320x256
MCU blocks: 320
Sampling factor: 2x2
Quality level: 3
Gap detected between packets 28 and 38
Packets are not in order. 40 > 40
Packets are not in order. 52 > 52
Packets are not in order. 53 > 53
Packets are not in order. 55 > 55
Packets are not in order. 56 > 56
Packets are not in order. 59 > 59
Read 60 packets

And then this is the images created:

My guess is, that the yaml can also be modified that images are created without the need to create a kiss file, but I need to look into to this.

All the best and a great 2025.

Jan - PE0SAT

3 Likes

Using the latest gr_satellites and ssdv.

Using this script to download and decode from audio URL:
dldemod.sh

#!/bin/bash
set -eu

if [ -z ${1:-} ]; then
    echo "Usage: ${0} <url to audio>"
    exit 1
fi

# For gr_satellites 3.* we need to convert ogg to wav
USE_SOX=1

URL=${1}
OGG=$(basename ${URL})
F=${OGG%.*}

rm -f ${OGG}
echo "Downloading ${OGG}"
wget -q ${URL}
if [[ "${USE_SOX^^}" =~ (TRUE|YES|1) ]]; then
    echo "Converting to ${F}.wav"
    sox ${OGG} ${F}.wav
    OGG=${F}.wav
fi
echo "Demodulating to ${F}.kss"
gr_satellites ASRTU-1.yml --wavfile ${OGG} --kiss_out ${F}.kss > ${F}.log
echo "Decoding to ${F}_*"
gr_satellites_ssdv --satellite DSLWP ${F}.kss ${F}

I also used Jan’s ASRTU-1.yml but simplified to be compatible with older gr_satellites.

name: ASRTU-1
norad: 61781
data:
  &tlm Telemetry:
    unknown
transmitters:
  9k6 BPSK downlink:
    frequency: 436.210e+6
    modulation: BPSK
    baudrate: 9600
    framing: CCSDS Concatenated
    precoding: differential
    RS basis: conventional
    frame size: 223
    data:
    - *tlm

If you use the audio (ogg) file from the network, you need to add --f_offset 12000

And the ASRTU-1 is already part of the gr-satellites branch, so it should already be available, no need to create it.

To be sure run gr_satellites --list_satellites | grep -i ASRTU-1

* ASRTU-1 (NORAD 61781)