Forum Rule: Always post complete source code & details to reproduce any issue!
Results 1 to 4 of 4

Thread: AFSK demodulation

  1. #1
    Junior Member
    Join Date
    Oct 2019
    Posts
    3

    AFSK demodulation

    I'm interested in using a Teensy to do AFSK demodulation. I have mark and space frequencies of 1200 and 1800 Hz. I did find some very old references here to APRS receivers, which use a similar encoding, but nothing that ever got very far.

    I'm wondering if I should use the audio library and filter on these frequencies and do peak detection, or if it wouldn't be well suited to that. The symbol rate is 1200 baud, so I need to detect single cycles.

    I have implemented this in GNU Radio using a quadrature demodulator, but my DSP skills are pretty limited.

    Does anyone have thoughts on this?

    Thanks-
    Eric

  2. #2
    Senior Member DD4WH's Avatar
    Join Date
    Oct 2015
    Location
    Central Europe
    Posts
    504
    Hi Eric,

    RTTY decoding as a special case of AFSK is implemented on Teensy here:

    https://www.kk5jy.net/modem-v2/

    and (two different decoders) here:

    https://github.com/DD4WH/Teensy-Conv...lution_SDR.ino

    One way of demodulation from IQ signals and subsequent decoding is explained briefly here:

    https://github.com/df8oe/UHSDR/wiki/Digimodes

    However, your high baud rate of 1200Bd and the shift of 600Hz sounds a bit strange to me, what kind of signals do you want to decode? Is this a university course project?

    You could also consider using Goertzel filters centred on space and mark signals, they are much more efficient than using FFT or FIR filters.

  3. #3
    Junior Member
    Join Date
    Oct 2019
    Posts
    3
    Hi DD4WH-

    Thanks for those leads. I didn't find any of those in my hours of googling.

    This is for a railroad telemetry system. The reason for the 1200/1800 Hz frequencies is that it produces a continuous phase signal to limit bandwidth. One cycle of 1200 or 1.5 cycles of 1800.

    I have a working decoder based on GNU Radio and python, but have wanted to come up with a cheap handheld decoder without the overhead of Linux so it can be powered on and off quickly.

    I did a talk on this and another protocol at DEF CON last year: https://youtu.be/vloWB0LHT_4
    My GNU Radio/Python implementation is here: https://github.com/ereuter/PyEOT

    My approach is to use a frequency-translating FIR filter to shift 0 to 1500 Hz, and then run it through a quadrature demodulator. Then I can just look at the polarity of the output to decode a mark or space. It works very well, but of course I have unlimited computing resources on an actual computer.

    Thanks for the links. I'll dig in.

    Eric
    AB1XO

  4. #4
    Junior Member
    Join Date
    Oct 2019
    Posts
    3
    I found this the other day, and rewrote it in cpp for my frequencies to try it out. It does seem to work. Bell 202 is more similar to my use that RTTY.

    https://sites.google.com/site/wayneh...in-an-attiny10

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •