Adds Meteor Rx App - #3175
Conversation
…peg decode , fit on the board , disk io , m2x interleaved pipeline , cadu
|
Thank you so much! Do you mind provide the following two things, so we can start review?
I apologize for the inconvenience but we are having some bot spam PR so we now require these two things as a start gateway for actual human review. |
|
Hi @Josephrp , congrat !!! I have received many years Meteor diigtal LRPT weather maps with handmade QFH + LNA . Anyway, congrat , and will be able to help you to test and debug it , when available , |
hi there @Brumi-2021 : testflight binaries are provided now , everything is getting a bit more okay to test . currently i'm building my antennae but i will test it later , if you want to try to just take the zip file from the (updated) issues description :-) hope you like it . please do share screenshots of your successful or even noisy results here :-) |
|
Hi, looking my old archive files from 2021 , l could find 103 MB File with the demodulated QPSK (72Mhz symbol rate) , captured fron satellite Meteor MN Data and demodulated by SDR# . That file i ise to input to another decode exe file , who produced the picture map . |
|
hi @Brumi-2021 , actually that would be quite helpful as i'm just delayed in making my direction antennae right now so this could help me accelerate a bit |
Josephrp
left a comment
There was a problem hiding this comment.
need to remove flash utilities improvements from this PR , open a discussion wrt firmware

Summary
This PR adds Meteor LRPT support on PortaPack Mayhem with a SatDump-aligned FEC/framing core, split for HackRF One + PortaPack H4M (1 MiB SPI / W25Q80).
Operator workflow (H4M default): three Receive menu apps and one SD pipeline:
meteor-capture.ppma/LRPT/SOFT*.C8meteor-decode.ppmp/LRPT/dec_cadu.C8meteor-view.ppmp/LRPT/ms<apid>.bmpEngineering goals: SatDump-parity algorithms under
firmware/baseband/meteor_lrpt/, golden SOFT / CADU artifacts for host compare, and a 1 MiB SPI layout that keeps full PMLR FEC off the packedbaseband.imgwhile still shipping capture + offline decode/view on SD.On larger SPI builds (
MAYHEM_SPI_1MBunset), PMLR remains inbaseband.imgfor the legacy live M4 FEC path (deinterleave IPC, optional G4 live ring, etc.) in addition to the staged apps.Motivation
scripts/METEOR_SOFT_FORMAT.txt) and pinned upstream mapping (firmware/baseband/meteor_lrpt/SATDUMP_VENDOR.md)..ppma, and heavy FEC runs in MeteorDx (M0 standalone RAM inlocal_sram_0).Receive apps (what actually ships)
1. MeteorRx — capture (
.ppma+ PMLS)External app registration (
firmware/application/external/meteor_lrpt_rx/main.cpp):MeteorRxPMLS(meteor_lrpt_capture) — QPSK demod + Gardner timing → int8 soft I/Q, no on-M4 FECmeteor-capture.ppma(OCI tar:APPS/meteor-capture.ppma)UI (
ui_meteor_lrpt_rx.hpp/.cpp):RecordView: prefixSOFT, folderLRPT,RawS8, 16384-byte blocks, extension.C8→/LRPT/<stem>.C8SETTINGS/rx_meteor_lrpt.iniaslrpt_flags=(live interleaved bit1 is stripped; interleaved M2-x is offline in MeteorDx)soft:… L… TED:… blk:…fromMeteorLrptRxStatusDataH4M note:
meteor_lrpt_capture_stub.cppstubs M0 deinterleave and G4 services in main firmware; capture does not depend on them.2. MeteorDx — offline decode (
.ppmp)MeteorDxlocal_sram_0(loader relocates full image; Viterbi decisions in SRAM1 scratch)/LRPT/SOFT*.C8, runsmeteor_offline_fec.cpp, writes/LRPT/dec_cadu.C8(1020-byte CADU REC records)lrpt_flagsfrom the same INI as capture3. MeteorVx — offline view (
.ppmp)MeteorVx/LRPT/dec*.C8(fallback*.C8), MSU-MR demux + TJpgDec →/LRPT/ms<apid>.bmpM4 baseband images
baseband.imgproc_meteor_lrpt_capture.ppmaproc_meteor_lrpt_rxMAYHEM_SPI_1MBfirmware/baseband/CMakeLists.txtwrapsDeclareTargets(PMLR …)inif(NOT MAYHEM_SPI_1MB). PMLS is always built for.ppmaexport (validate: ≤ 26 KiB).IQ chain (PMLR / shared DSP): Meteor FIR taps, Gardner symbol timing (
meteor_symbol_timing.hpp), legacy QPSK correlate, M2-x interleaved pipeline withSharedMemory::MeteorLrptIpcwhen M0 deint is active (non-H4M profile).M0 services and shared memory (non-H4M / full SPI)
When
MAYHEM_SPI_1MBis not set, main firmware includes:/LRPT/DEINT_A.BIN,/LRPT/DEINT_B.BIN,MeteorLrptIpchandshake (portapack_shared_memory.hpp).MeteorLrptG4Ipc, TJpgDec → BMP, small LCD thumbnail fields.H4M: these are stubbed; imagery and FEC for operators are MeteorDx / MeteorVx on SD.
Standalone loader (
ui_external_items_menu_loader.cpp): loads.ppmpintolocal_sram_0, zero-fills 96 KiB BSS, relocates link base0xADB10000→ runtime0x10000000.SD staged pipeline
Documented in
scripts/METEOR_SOFT_FORMAT.txt:Golden packaging rule: flash
portapack-mayhem_OCI.ppfw.tarand all threeAPPS/files from one build — never mix.binfrom build A with.ppma/.ppmpfrom build B (scripts/H4M_METEOR_BUILD.txt).H4M build and validation
-DFLASH_MB_SIZE=2+-DFLASH_MB_LIMIT_SIZE=1→ 1048576-byteportapack-mayhem-firmware.binscripts/wsl-build-share-out.sh,scripts/validate_meteor_artifacts.sh,scripts/spi-gate-check.sh,scripts/flash-h4m-share-out.ps1.ppmapresent; decode/view.ppmpin OCI tar; warns on legacymeteor_lrpt_rx.ppmaFREQMAN
sdcard/FREQMAN/METEOR_LRPT.TXT— 137.9 MHz primary and 137.1 MHz backup with SPEC bandwidth hints (matches MeteorRx default).What changed vs an all-in-one “Meteor LRPT” design
meteor_lrpt_g4_preview.cpp/hpp).meteor_lrpt_rx.ppma/ SPI PMLR-only workflow superseded on H4M by the three-app set (PMLR still built for >1 MiB SPI).Licensing and attribution
Vendored / SatDump-aligned (
firmware/baseband/meteor_lrpt/): correlator, NRZ-M, BPSK/CCSDS deframer, Viterbi (GNU Radio VOLK generic K=7 R=1/2), RS(255,223) (libfec-style, LGPL), pinned to commit inSATDUMP_VENDOR.md.Mayhem-original integration:
proc_meteor_lrpt_rx/proc_meteor_lrpt_capture, M4↔M0 IPC, sector-ring deinterleave, G4 service +msumr_demux/jpeg_decode, external/standalone UIs,MessageIDs,tools/meteor_lrpt/host helpers (gitignored path; names in vendor doc).TJpgDec:
firmware/application/meteor_lrpt_g4/third_party/tjpgd/(ChaN), used from MeteorVx path.After vendor URL edits:
python tools/meteor_lrpt/verify_satdump_vendor_urls.py.Requires
Proof that your changes work
Proof it compiles
(Attach your CI /
wsl-build-share-out.shlog +validate_meteor_artifacts.shOK lines.)Wiki documentation commitment
Should describe the three-app H4M flow (Capture → Decode → View), SD paths, and that full live PMLR is for larger-SPI builds only.
Checklist
Build / packaging
portapack-mayhem-firmware.binis 1048576 bytes../scripts/validate_meteor_artifacts.sh(SPI has no PMLR; OCI tar containsmeteor-capture.ppma,meteor-decode.ppmp,meteor-view.ppmp).APPS/files from the same build).Device — H4M three-app flow
/LRPT/SOFT*.C8; confirmSETTINGS/rx_meteor_lrpt.iniupdated./LRPT/dec_cadu.C8(statusblk:… CADU:…); no Guru Meditation on SELECT./LRPT/ms*.bmpfor visible APIDs.tools/meteor_lrpt/helpers when present in your tree.Docs / hygiene
scripts/METEOR_SOFT_FORMAT.txtdocuments SOFT/CADU/BMP layout.scripts/H4M_METEOR_BUILD.txtdocuments 1 MiB flash workflow.verify_satdump_vendor_urls.py.Substantive diff scope (for reviewers)
Primary paths:
firmware/baseband/meteor_lrpt/,firmware/application/external/meteor_lrpt_rx/,firmware/standalone/meteor_lrpt_{decode,view}/,firmware/application/meteor_lrpt_g4/, M0 services,portapack_shared_memory.hpp,scripts/H4M_*/METEOR_*/validate_meteor_artifacts.sh,sdcard/FREQMAN/METEOR_LRPT.TXT, CMake SPI trimming25052025_testfdrive