Adding decoder for QMR-KWT 2 beacons

I have little coding knowledge and I don’t know much about Kaitai :downcast_face_with_sweat:

I kindly request assiatnce and guidance with adding a decoder for QMR-KWT 2 beacons to make the data readable on SatNOGS Data Warehouse and then add a dashboard.

IQ and audio files can be found here

Thank you

Orbital Space

1 Like

Hi Orbital Space,

We would need the telemetry format to know which byte(s) has to be read as which type (signed or unsigned integer, float, …) and what those bytes represent (e. g. battery voltage in volts) and if necessary how to convert it to physical values.

This is usually a time-consuming job. So the prospect of a QSL card in return would really help.
However, neither Oleg (R3AOR) nor sputnix have answered me on such a question.

73
Daniel

1 Like

Hello Daniel,

Not only QSL card but you will also get a mission patch and stikers :slightly_smiling_face:

I’ve been doing some Google search and I found this this infromation related to sputnix platforms

Thank you

4 Likes

Thanks, that’s something I should be able to work with.

1 Like

Hello @dubai ,

So that means, QMR-KWT 2 is using the spunix platform right ? But regarding the provided link, there are multiple formats/protocols involved. Do you have an idea about which one is in use? is there one dedicated to QMR-KWT 2 ? Also, the links regarding GEOSCAN, USP documentation are dead unfortunately.

2 Likes

My bad, looking at it, i have the answer, it is USP :slight_smile: I will test this one on the sat, it should work already. If so, i will link it to the sat and run a decoding process.

2 Likes

Correct it is Sputnix platfrom. KSU-Cubesat is also a Sputnix platfrom and already on SatNogs Dashboards

Yes, i will test the decoder, and link it to the sat if the test is ok.

1 Like

Thank you :folded_hands:

Looking at the decoder of KSU-Cubesat, i see that we added a check for repeaters which is not in the USP basic one.

- id: repeater
        type: repeater
        if: (src_ssid_raw.ssid_mask & 0x01) == 0

Do you need this for QMR-KWT ? if so, i will add a dedicated one for your sat, like we did for KSU-Cubesat :slight_smile:

1 Like

Yes QMR-KWT 2 does have FM voice repeater.

Thank you

Ok,

It seems that none of the decoders can be used directly. For the first one i tried which is ksu.ksy i get :

"fields": {
            "dest_callsign": "R2ANF ",
            "src_callsign": "RS95S ",
            "src_ssid": 1,
            "ctl": 0,
            "pid": 240,
            "beacon_type": 70
        }

For the second one which is the sptunixusp one i have this result :

“fields”: {
“callsign”: "R2ANF ",
“ssid_mask”: 96,
“ssid”: 0,
“src_callsign_raw_callsign”: "RS95S ",
“src_ssid_raw_ssid_mask”: 99,
“src_ssid_raw_ssid”: 1,
“ctl”: 0,
“pid”: 240,
“packet_type”: 16966
}

None is showing an entire packet based on a SatNOGS DB export of all the QMR-KWT 2 frame.

Based maybe on the packet_type or beacon_type, can you point to me if one of these is at least showing a correct AX25 header ?

Hi Julien,

I’m already on it using usp.py from Baskiton’s Satsdecoder.

You can look to this merge request:

There is a decoder for the beacon, currently used by sputnix platform (and QMR-KWT).

3 Likes

Damn, how did i missed that. Thanks you ! looking at it!

It seems that it is not needed looking at the MR of @sputnix

2 Likes

Tested your updated ksy with a received packet.

decode_frame output

{
“callsign”: "R2ANF ",
“ssid_mask”: 96,
“ssid”: 0,
“src_callsign_raw_callsign”: "RS95S ",
“src_ssid_raw_ssid_mask”: 99,
“src_ssid_raw_ssid”: 1,
“ctl”: 0,
“pid”: 240,
“payload_0_packet_type”: 16966,
“payload_1_packet_type”: 60705,
“t_amp”: 1,
“t_uhf”: 0,
“pf”: 30,
“pb”: 19,
“nres_uhf”: 0,
“fl_uhf”: 30,
“time_uhf”: 1769462015,
“uptime_uhf”: 266643,
“current_uhf”: 42,
“uuhf”: 7840,
“rssi_idle”: 126,
“rxbitrate”: 2400,
“num_active_schedules”: 0,
“reset_during_sch”: false,
“backup_sch_active”: false,
“usb1”: 7,
“usb2”: 5,
“usb3”: 9,
“isb1”: 2,
“isb2”: 0,
“isb3”: 0,
“iab”: -54,
“ich1”: 0,
“ich2”: 50,
“ich3”: 0,
“ich4”: 0,
“ich5”: 0,
“t1_pw”: 262,
“t2_pw”: 231,
“t3_pw”: 237,
“t4_pw”: 231,
“flags1”: 48,
“flags2”: 64,
“flags3”: 0,
“reserved1”: 0,
“uab”: 7864,
“reg_tel_id”: 2524908,
“time”: 1522217217,
“nres_ps”: 147,
“fl_ps”: 12
}

Looks good, thank you!

1 Like

indeed :

"fields": {
            "callsign": "R2ANF ",
            "ssid_mask": 96,
            "ssid": 0,
            "src_callsign_raw_callsign": "RS95S ",
            "src_ssid_raw_ssid_mask": 99,
            "src_ssid_raw_ssid": 1,
            "ctl": 0,
            "pid": 240,
            "payload_0_packet_type": 16966,
            "payload_1_packet_type": 60705,
            "t_amp": 20,
            "t_uhf": 0,
            "pf": 33,
            "pb": 24,
            "nres_uhf": 0,
            "fl_uhf": 14,
            "time_uhf": 1764905523,
            "uptime_uhf": 1081,
            "current_uhf": 52,
            "uuhf": 7696,
            "rssi_idle": 137,
            "rxbitrate": 2400,
            "num_active_schedules": 0,
            "reset_during_sch": false,
            "backup_sch_active": false,
            "usb1": 11,
            "usb2": 9,
            "usb3": 9,
            "isb1": 2,
            "isb2": 0,
            "isb3": 0,
            "iab": -52,
            "ich1": 0,
            "ich2": 51,
            "ich3": 0,
            "ich4": 0,
            "ich5": 0,
            "t1_pw": 1862,
            "t2_pw": 1912,
            "t3_pw": 1856,
            "t4_pw": 1893,
            "flags1": 0,
            "flags2": 64,
            "flags3": 0,
            "reserved1": 0,
            "uab": 7724,
            "reg_tel_id": 1084,
            "time": 1519714674,
            "nres_ps": 147,
            "fl_ps": 12
        }

Going to review the MR! Doing some test and i will merge it if ok!

1 Like

About catching exceptions.

It is going to work until the decoder will not find second part of the payload which is linked to ax25_frame.payload.1.tlm.ich1 (notice index 1). There could be only the part with index 0, actually payload contains different messages. You can try it with the data from observation SatNOGS Network - Observation 13241155. I wrote about that in MR description. Think it can be more robust for people, who uses array indexes in ksy to fields bindings.

Yes, i saw your comment in the commit and removed my question :slight_smile: thanks you.