FO-29 CW Dashboard - how to upload data

I’ve built a decoder and dashboard to display the telemetry of the CW beacon from FO-29 (JAS-2, Fuji 3).

FO-29 transmits CW telemetry like this:

HI HI 20 C6 80 F5 00 00 00 00 00 00 00 00 71 67 E4 A1 B1 84 B5 B0 B1 B3 B5

The decoder needs the telemetry in this ASCII format:

48 49 48 49 32 30 43 36 38 30 46 35 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 37 31 36 37 45 34 41 31 42 31 38 34 42 35 42 30 42 31 42 33 42 35

‎ ‎

The following way automates the process of decoding and uploading.


‎ ‎



fldigi with fo29_fldigi_log_read-out.py. fo29_uploader in background.

:floppy_disk:Install

:one: - fldigi [sudo apt install fldigi]

:two: - Download py+grc.zip (2.1 KB)

:three: - gnuradio [sudo apt install gnuradio] OR e. g. GetKISS+



:hammer_and_wrench: Setup

:four: - Configure fldigi

:five: - Extract py+grc.zip and copy fo29_fldigi_log_read-out.py into ~/.fldigi/talk

:six: - For gnuradio: Copy fo29_uploader.grc to an arbitrary folder, run it and place your callsign and coordinates into the Telemetry Forwarder.

:seven: - For an alternative like GetKISS+ add another satellite with Norad ID 24278.




:checkered_flag: Run

:eight: - Start fldigi, switch to mode CW and set the focus to the CW signal.

:nine: - Run python3 fo29_fldigi_log_read-out.py

:ten: - Execute fo29_uploader.grc or e. g. GetKISS+

:trophy:

Enjoy: :artificial_satellite: :satellite:

5 Likes

Alternatively you may also upload manually.

Convert the received beacon into ASCII by using this converter as the screenshot below shows.

Then upload the converted string (green) using the following command.

curl --data “noradID=24278&source=callsign&timestamp=2025-01-21T18:45:00Z&frame=4849484932304336383046353030303030303030303030303030303037313637453441314231383442354230423142334235&locator=longLat&longitude=8.04E&latitude=48.65Nhttps://db.satnogs.org/api/telemetry/

Replace the parts in bold (callsign, date and time in UTC, longitude and latitude) with your data.

Since the automatic uploader uses the timestamp from the end of the beacon I recommend using it just like that.


If you received the beacon only partially, use a * for the unrecognized characters like that:

HI HI 20 C6 80 *5 00 00 00 00 00 00 00 ** 71 67 E4 A1 B1 84 B* B0 B1 ** B5

The decoder will then only discard the associated values and provide the rest to the dashboard.

3 Likes

Amazing !!! Congratulations for your work Daniel !!

1 Like