[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Boundary alignment (follow up)

From: lannan jiang
Subject: Re: Boundary alignment (follow up)
Date: Wed, 29 Jul 2020 16:25:00 +0000

Hi Kevin, 
   I have been trying to use correlate access code-tag stream but have ran into this issue: I am not sure how to get the tag name as a property for the block. As I transmitted a tagged steam mux from TX, i lost the tags at the Rx. Do you know how I can add the tags back again? 

Best regards,

From: Kevin McQuiggin <mcquiggi@me.com>
Sent: Tuesday, July 28, 2020 12:02:42 PM
To: lannan jiang <jln925@live.com>
Subject: Re: Boundary alignment (follow up)
Hi Lannan:

I had trouble with the header/payload demux block as well and could never get it working.  It is either just poor documentation or a problem with the block.  I don’t find it helpful that the documentation people just say “go and read the source code”.  

I have used gnuradio for many years and attended to the annual conferences.  I’ve raised the issue of lack of easily-readable documentation and volunteered to help but it is difficult to do so remotely.  There is a documentation group and at least it is recognized as an issue.  

Gnuradio is a development project and no one likes to stop and write stuff up!  That said, gnuradio has very smart people behind it, and there is no better platform around for doing radio prototyping and research.

Depending on your requirement I would forget about using the packet header/payload demux and just do what you need at a more basic level.  This approach will work for me as I just want to build a small QPSK transceiver system.

What’s your project?  School or industry?


On Jul 28, 2020, at 8:37 AM, lannan jiang <jln925@live.com> wrote:

Hi Kevin, 

   Thank you so much for your helpful information. 
    I looked at the OFDM packet tx and rx example and was able to append a header at the transmitter using the packet header generator block.  I am trying to use the Header/Payload demux block, but it needs more debugging as well. So I think I'm going to give the corelate access code block that you suggested a try.  
    Thanks again. 

Best regards,

From: Kevin McQuiggin <mcquiggi@sfu.ca>
Sent: Tuesday, July 28, 2020, 11:25
To: lannan jiang
Subject: Re: Boundary alignment (follow up)

Hi Lannan:

I have a solution to this, but have found a bug in one of the standard blocks.  I am debugging this behaviour.

The solution to our problem, essentially, is to use a “correlate access code tag stream” block to check incoming packets and strip off the header.  The block emits the payload bits only.  Then you use a “repack bits” block to get the individual bits into 8-bit bytes, and that gives you the original bytes of the payload.

I have found however that the access code block drops bit in some cases, however.  I am debugging the block.  It works pretty well for longer packet lengths but falls apart on shorter packets.  I need to use short packets for my application.

I think you know how to take an input byte stream and add the header so I don’t think I have to describe how to do that.

My transmit and receive flowgraphs work well over the air between two physical SDRs, so once I figure out what is wrong in the correlate access code block my project can continue.

Hope this info helps,


On Jul 25, 2020, at 8:51 AM, lannan jiang <jln925@live.com> wrote:

Hi Kevin,
    Thank you for your suggestions. Also I apologize for asking about this over the weekend, I think there is still a lot for me to learn at this time. 
    One more question that I have is, a lot of the examples , such as the tx_stages use protocol formatter, which I think it's at a higher level than what I am doing. I also looked at the packet header generator block in GRC, but they don't have examples of those. Do you have any specific suggestions about which block to use for header generation? 

Thanks again for your help.

From: Discuss-gnuradio <discuss-gnuradio-bounces+jln925=live.com@gnu.org> on behalf of Kevin McQuiggin <mcquiggi@sfu.ca>
Sent: Saturday, July 25, 2020, 11:26
To: GNURadio Discussion List
Subject: Re: Boundary alignment (follow up)

Hi Lannan:

It’s not that hard and only takes a few blocks: I suggest sticking with it as that’ll be easier than developing your own solution, plus it’ll be compatible with others down the road. 

My own radio isn’t working yet but it is very close, so I am going to study things a bit more and get it working.  


On Jul 24, 2020, at 8:18 PM, lannan jiang <jln925@live.com> wrote:

wHi Kevin, 
  Thank you for your response! 
  I have looked at those examples and specifically those blocks already and I have looked at the C++ API reference. But still, as you said, each block requires a lot of studying, and currently I am just trying to find an easier to prepend a known pattern at the transmitter. Perhaps I’ll go with the more complex examples eventually. 
  Thanks for you help anyway! 
  Best regards,

On Jul 24, 2020, at 10:57 PM, Kevin McQuiggin <mcquiggi@me.com> wrote:

Hi Lannan:

I am at about the same stage as you are with packetization and am researching quite similar requirements.  I spent the last few days reading and experimenting with some success.

There are several blocks that can help you add length tags and headers to your data stream.  Look at the examples in your gnuradio installation such as

/(opt or usr)/local/share/gnuradio/examples/digital/packet 

And give the several flowgraphs there a try.  There is also good associated reading in the gnuradio manual at:

I used these materials and the principles in the example flow graphs to now having my QPSK transceiver almost running.  I expect that with a bit more effort it will be running fine early next week, as I am taking the weekend off.

The examples have stuff that you may not need like CRCs and forward error correction, but you could leave those out if you wish.  Focus on the packet length tagging and header creation, and then on the header/payload demuxing process.  

I have a loopback test flowgraph and am just working the bugs out of header and payload recovery.  It is quite detailed and the blocks need some study because, for example, some of the packet blocks want lengths of items in bits, while others want that info in bytes.  I made errors by assuming byte count when it turned out that the block wanted bit count.  Stuff like that.  You have to read about the details of each block.  

Hope this helps,


On Jul 24, 2020, at 2:54 PM, lannan jiang <jln925@live.com> wrote:

Hi everyone,

   Two days ago I asked something about boundary alignment, and I have been trying many stuff in GRC to solve this. I am stuck on this for days and any help will be appreciated. Below is a description of what I wish to do.

  1) My transmission and receiving chain are like this: signal source -> constellation modulator -> Adalm Pluto Tx-> Antenna -> Adalm Pluto Rx -> Polyphase Clock Sync -> CMA equalizer -> Costas Loop -> decoding. As for modulation scheme, I am using QPSK.
   2)  Now I just want to transmit  one byte output from the signal source, and following with one byte of a known pattern, and then one byte output from the signal source, etc. Then at the receiver, because i already know the known pattern, I need to sync to the known pattern in order to align the bytes, which will allow me to hear clean audio at the receiver.
   3) There are three things I am looking for:
      a.  I have been looking for a SIMPLE way  to prepend a known pattern at the transmitter, and send it with the output bytes of a signal source.  Is there any block that might work to do this in GRC?
      b.  I have been trying to see if i can write an embedded python block to prepend a known pattern, but I am having a hard time trying to understand the input_items of the block, and how i can add a known pattern iteratively.
      c. If i can successfully send the known pattern with my data to the receiver, is there any easy way to parse at the receiver?

 Thank you in advance!

reply via email to

[Prev in Thread] Current Thread [Next in Thread]