I don't know if you saw his presentation but Andy Walls did a talk on the
new clock recovery block he wrote to address issues he had with existing
ones. I believe it's in tree now?

https://www.gnuradio.org/wp-content/uploads/2017/12/Andy-Walls-Samples-to-Digital-Symbols.pdf

On Mon, Apr 2, 2018, 08:55 Adrian Musceac <[email protected]> wrote:

> I should add that the main problem I face is getting it synchronized fast
> enough for short bursts.
>
> Adrian
>
> On April 2, 2018 11:54:21 AM UTC, Thomas Habets <[email protected]> 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 <[email protected]> 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 <[email protected]> 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[]     = { "[email protected] <[email protected]>" };
>>>>  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
>>> [email protected]
>>> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>>>
>>>
>>
>>
>> --
>> typedef struct me_s {
>>  char name[]      = { "Thomas Habets" };
>>  char email[]     = { "[email protected] <[email protected]>" };
>>  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
> [email protected]
> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>
_______________________________________________
Discuss-gnuradio mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to