I’m attempting to develop a GNU Radio FSK decoder for Digital Selective Calling on marine VHF but I seem to be stuck. I got my hands on a Standard Horizon handheld marine VHF unit with DSC capability and have recorded a call from/to myself using Universal Radio Hacker and my HackRF. I also created a recorder and a playback flow graph in GRC and have successfully recorded and played back calls with them.

I know they are good recordings because when I play them back, the handheld radio alerts me to an incoming call. However, I cannot manage to demodulate them correctly using URH or GNU Radio.

Potential problems I see:

  • Samples/Symbol in URH: The protocol is 1200 baud and the recording was taken at 2.0Msps. Shouldn’t samples/symbol be 1666.66? Very few bits come out if I do that, though.
  • Clock Recovery in GNU Radio: I’ve looked at every FSK receiver example I could find online and still don’t really understand the parameters for this block, or whether I should use Clock Recovery MM or Symbol Sync.

If anybody could give me a push in the right direction or some additional resources to review it would be greatly appreciated.


My draft GNU Radio flow graph

URH settings

Recorder flow graph

Playback flow graph

  • $\begingroup$ A single "O" in the console means signal was lost. Your console tells me that what your flowgraphs sees is such a tiny fraction of the actual signal that it's completely broken. $\endgroup$ Sep 21 at 22:59
  • $\begingroup$ @MarcusMüller That's good to know, any thoughts on what might be causing that? I figured that since I can play the file back and the radio will identify it then the recording must be okay, so I'm guessing the problem is somewhere in my flow graph. $\endgroup$ Sep 22 at 18:24

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.