Hi Thomas,

I use it for 4FSK, it does work, not optimally it seems, but I attribute that 
to my lack of understandimg of the algorithm.
Regarding the square wave issue, I use a low pass filter in front of it with 
bandwidth = samp-rate / samples-per-symbol.

Regards,
Adrian

On April 2, 2018 11:54:21 AM UTC, Thomas Habets <tho...@habets.se> wrote:
>I just seem to recall that being said.
>
>I've used M&M successfully in the past, but it does require some
>massaging
>of the data to not be "square wave" before it'll work. Also does it
>work
>(well) for M-FSK?
>
>On 2 April 2018 at 11:16, Adrian Musceac <kanto...@gmail.com> wrote:
>
>> Hi,
>>
>> Why is the M&M algorithm discouraged?
>> I use successfully both in FSK and PSK demodulators. It seems to
>perform
>> fine.
>>
>> Regards,
>> Adrian
>>
>>
>> On April 2, 2018 8:48:00 AM UTC, Thomas Habets <tho...@habets.se>
>wrote:
>>>
>>> Hi.
>>>
>>> As an experiment I'm trying to decode an FT8 signal I've captured.
>I've
>>> gotten far enough that I can clearly see the packet (
>>> https://blog.habets.se/tmp/ft8_packet.png), but now I want to
>actually
>>> turn that into bits.
>>>
>>> I know it's 8FSK (the above screenshot is quad demod of that), but I
>have
>>> a few questions on clock recovery:
>>>
>>> * Is the GFSK block only for BFSK? If so then that's out.
>>> * Is there a "best" clock recovery block nowadays? I seem to recall
>>> "Clock Recovery MM" being discouraged in favor of "Polyphase Clock
>Sync".
>>> * I'm trying to read up on the parameters Polyphase Clock Sync
>wants, but
>>> any pointers would be helpful.
>>> * Would it be a good idea to throw in a costas loop for frequency
>tuning?
>>> * Does Polyphase Clock Sync have the same dislike of "staircase"
>inputs?
>>> That is, I should try to make the center of the bits more "pointy"?
>(e.g.
>>> lowpass filter them)
>>>
>>> I've done some custom OOT decoders before, so I'm not shy about
>that.
>>> Maybe the best thing is some whole-packet clock recovery[1]. But if
>I just
>>> write a block that takes the quad demod (see above screenshot) and
>finds
>>> the "platforms", outputting a message that is a list of floats, and
>then
>>> another block that takes a list of floats and the number 8 and
>decodes it
>>> as 8FSK, well it seems like I may be reimplementing things where I'm
>>> guessing someone might say "oh just use this block".
>>>
>>> Also for experimentation and my own understanding I'd like to turn
>it
>>> into bits using in-tree blocks, if possible.
>>>
>>> Maybe a correct Polyphase Clock Sync of the quad demod followed by a
>>> Constellation decoder? I could use the float as the phase, with
>magnitude
>>> 1. Does that make sense? Is it a good idea?
>>>
>>> What I have so far is:
>>> Data:
>>>   https://blog.habets.se/tmp/ft8-burst-10k.raw (10k samp_rate)
>>>
>>> GRC:
>>>   https://blog.habets.se/tmp/ft8_decode.grc
>>>
>>> Screenshot:
>>>   https://blog.habets.se/tmp/ft8_decode_grc.png
>>> (everything off-screen to the right is failed clock recovery
>experiments)
>>>
>>> Quad demod
>>>   https://blog.habets.se/tmp/ft8_packet.png
>>>
>>>
>>> [1] Like https://www.youtube.com/watch?v=rQkBDMeODHc which I turned
>into
>>> https://github.com/ThomasHabets/radiostuff/blob/master/
>>> gr-habets/python/magic_decoder.py
>>>
>>> --
>>> typedef struct me_s {
>>>  char name[]      = { "Thomas Habets" };
>>>  char email[]     = { "tho...@habets.se <tho...@habets.pp.se>" };
>>>  char kernel[]    = { "Linux" };
>>>  char *pgpKey[]   = { "http://www.habets.pp.se/pubkey.txt"; };
>>>  char pgp[] = { "9907 8698 8A24 F52F 1C2E  87F6 39A4 9EEA 460A 0169"
>};
>>>  char coolcmd[]   = { "echo '. ./_&. ./_'>_;. ./_" };
>>> } me_t;
>>>
>>
>> _______________________________________________
>> Discuss-gnuradio mailing list
>> Discuss-gnuradio@gnu.org
>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>
>>
>
>
>-- 
>typedef struct me_s {
> char name[]      = { "Thomas Habets" };
> char email[]     = { "tho...@habets.se <tho...@habets.pp.se>" };
> char kernel[]    = { "Linux" };
> char *pgpKey[]   = { "http://www.habets.pp.se/pubkey.txt"; };
> char pgp[] = { "9907 8698 8A24 F52F 1C2E  87F6 39A4 9EEA 460A 0169" };
> char coolcmd[]   = { "echo '. ./_&. ./_'>_;. ./_" };
>} me_t;
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to