I've managed to spend more time looking at it and have made some progress, though have once again run into issues.
After much investigation I've created a processing flow that takes the raw samples and can extract valid weather packets - but only from recorded files. When trying with live data it always returns invalid packets :-(
The flow is this
- parse the samples into complex numbers
- down mix these initial complex numbers using an appropriate frequency offset
- pass the downmixed data through a FIR filter
- use a frequency demodulator on the filtered data to get a float value
- process the float value as being a 1 or a 0 based on positive/negative frequency
Trying to open the SDR directly in the app and reading directly from it results in packets being seen, but the data is corrupt and the checksums are never correct. Hmm. Odd.
I'm going to do a bit more checking and write some additional tests to confirm the data coming from the device directly, but any suggestions or hints are most welcome! It's frustrating to be so close and yet so far...