I'm playing around with implementing portions of the FT8 protocol in Rust. I'm having trouble with the CRC algorithm.

Here is my not yet working attempt: https://gist.github.com/JohnRudolfLewis/696c538c97a5b49d95b32c85a853b2d4

Using https://github.com/vk3jpk/ft8-notes/blob/master/Transmit.ipynb as a reference, I have implemented a single test, and it is not currently passing. Clearly, the crc crate is not calculating the crc in the same way as vk3jpk's code.

If anyone with knowledge of the crc crate in Rust and also how FT8 calculates crc, and can point out the error in my implementation... it would be much appreciated.

73 de N0YPR


1 Answer 1


I had also reached out the the author (VK3JPK) of the paper that I was referencing in order to write this code. He pointed out what turned out to be my error.

You specify your message using a 128-bit integer which I suspect will be converted by Rust into 16 bytes NOT 12. You may need to drop 4 of these bytes before passing them onto CRC library function so that it will infer the appropriate message length.

I've updated the gist with a working example.

  • 1
    $\begingroup$ nice, glad you've got it to work. That means my answer was off, so let me quickly delete that :) $\endgroup$ Commented Apr 3 at 15:39

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .