1.7 KiB
Radiosonde DFM-06/DFM-09
Based on information already available at
https://www.amateurfunk.uni-kl.de/projekte-aktivitaeten/decoder-wettersonden/
Files
dfm06ptu.c
Compile
gcc dfm06ptu.c -lm -o dfm06ptu
Usage
./dfm06ptu [options] <audio.wav>
<audio.wav>
: FM-demodulated signal, recorded as wav audio fileoptions
:
-i
: invert signal/polarity (DFM-09)
-b
,-b2
: integrate rawbit-/bit-samples
-r
: output raw data
-v
: additional info
--ecc
: Hamming code error correction
--ptu
: temperature
Examples
./dfm06ptu --ecc --ptu -v dfm-audio.wav
FSK-demodulation is kept very simple. If the signal quality is low and (default) zero-crossing-demod is used, a lowpass filter is recommended:
sox dfm-audio.wav -t wav - lowpass 2000 2>/dev/null | ./dfm06ptu --ecc --ptu -v
If timing/sync is not an issue, integrating the bit-samples (option -b2
) is better for error correction:
./dfm06ptu -b2 --ecc --ptu -v dfm-audio.wav
For DFM-09 or if the signal is inverted
(depends on sdr-software and/or audio-card/settings), try option -i
.
Error correction
Use error correction --ecc
together with option -b2
.
The codewords are 8-bit long and the [8,4] extended Hamming code can correct one-bit errors
and detect two-bit errors. If there are more than two errors, it is possible that the codeword is
corrected to a different codeword closer to the received word. The minimum distance is 4.
Thus if the signal level is low, the decoding can go wrong.
A high number of codewords with bit-errors in a frame could indicate unreliable decoding.