Packet Data Transfer using BPSK Modulation with LimeSDR-Mini


I’m learning to implement a grc flow-graph with BPSK modulation to send and receive text/image file or send chat message via UDP socket. It’s working in simulation mode perfectly as I intended but with real hardware obviously lot of issues are happening.


Initially, I was receiving only garbled data with limesdr-mini but after further reading I found that’s due to phase ambiguity problem in the receiver. Then I used differential encoding to resolve the issue. If I sent a text file in repeat mode, I can receive it on file sink.
Receive file:

However, If I sent the file only once without repeat, I don’t get any data at all. I understand that the receiver perform clock, frequency, phase recovery on received data and when it sync, it decodes the data correctly.

TX and Rx constellation:

TX Chain:

RX Chain:

Can somebody shed some light what I’m missing here. In simulation, this flow graph works correctly with text/image transfer and chat messaging (UDP Source/Sink).

What measures I have to consider further to make it work the same way with LimeSDR.

Appreciate any suggestions :slight_smile:


I think I found a work around. Please see my last post this afternoon on “LimeSDR-Mini GR-3.8 Block Transmit Distortion” thread. It may work for you.


Hi Dave,

Your solutions looks very interesting and glad that it’s working now. I have learnt few techniques from you now :slight_smile:

I found an interesting problem in my setup - ‘CPU utilization’. I noticed when I’m running the bpsk tx/rx flow graph in my vm, CPU shoots up to 200% utilization and nothing is coming out of the receiver file sink.

So, I split up the TX and RX chains and ran that in different computer. I can see it started to receive instantly. First 2-3 seconds I got garbled data but as soon as the sync done, I received the actual messages and the qt_constellation looks very clean and almost perfect for bpsk mod.

Now, I have to work on how to make it processor efficient and transmit and receive data without repeating infinitely.