# Burst TX and RX

**URL:** <https://www.ruby-forum.com/t/burst-tx-and-rx/242945>\
**Category:** GNU Radio\
**Created:** [August 9, 2015, 1:37pm UTC](https://www.ruby-forum.com/t/burst-tx-and-rx/242945 "2015-08-09T13:37:39Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Rafa\_F](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/958977/32.png) [@Rafa\_F](https://www.ruby-forum.com/u/Rafa_F)\
**Post date:** [August 9, 2015, 1:37pm UTC](https://www.ruby-forum.com/t/burst-tx-and-rx/242945/1 "2015-08-09T13:37:39Z")

</div>

I am just starting to work with a USRP in order to create burst TX and  
simultaneous RX streams, so I am trying to learn about tagged streams,  
which I believe is the way to do this. I see references in this forum to  
a program called tags\_demo which looks like it could be very useful. Is  
this available as a program withing GRC or elsewhere? Right now I can’t  
find it.

Are there any other test and/or tutorial programs within GRC that would  
be useful for bringing myself up to sped with implementing burst  
TX and RX functionality? If so, I’d very much appreciate learning about  
them.

Thanks very much.

David.

---

<div class="post-metadata">

**Author:** ![david](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/aeb1de/32.png) [@david](https://www.ruby-forum.com/u/david)\
**Post date:** [August 9, 2015, 2:01pm UTC](https://www.ruby-forum.com/t/burst-tx-and-rx/242945/2 "2015-08-09T14:01:41Z")

</div>

Hi David,

if you’ve got the GNU Radio source code [1], tags\_demo.cc is in  
gnuradio/gr-uhd/examples/c++

Now, we’ll have to make a difference between “tagged streams” and  
“streams with stream tags”, as confusing as it is:  
Tagged streams are like normal streams, only that GNU Radio makes sure  
that all samples in a burst are given to a block’s work method at once,  
whereas tag streams are annotations in continuous streams (where a  
work() method might get any number of tags, and might chose to process  
only a part of them, saving the rest for the next call).

If you set the length\_tag\_key to pmt::nil (default), you use the sob  
(start of burst) and eob (end of burst) stream tag mode. If you set the  
length\_tag key, the USRP blocks work in stream tagged mode. Which one of  
these is right is hard to tell.

Now, none of these examples are GRC (GNU Radio Companion) examples, but  
C++ – that’s because generating these tags that need to specify where a  
burst starts and how long it is (or where it ends) is something that  
can’t be done very easily graphically, so you’d have to write proper  
program code, anyway. You can do that in both python and C++.

To get you up to speed:

[https://gnuradio.org/redmine/projects/gnuradio/wiki/Guided\_Tutorials](https://gnuradio.org/redmine/projects/gnuradio/wiki/Guided_Tutorials)

is the right place to start. I don’t know how used to GNU Radio you  
already are, but chapters 1 and 2 can be done in less than an hour, I  
think. Carefully work through 3 and 4, as they explain core concepts  
(such as the way work() is called, crucial to understanding why burst  
mode isn’t trivial in GNU Radio), and they will be very helpful in  
understanding 5, which explains stream tags more clearly. Chapter 6 will  
then be a fun read for you, as it directly involves talking to the USRP  
(but not bursty mode, that’s kind of too advanced for an introdcutory  
tutorial).  
After you’ve done Chapter 5, I recommend reading the doxygen page on  
tagged stream blocks [2], because you then are able to (if our tutorial  
is well-written) understand the differences.

Best regards, and happy hacking,  
Marcus

[1] [GitHub - gnuradio/gnuradio: GNU Radio – the Free and Open Software Radio Ecosystem](http://github.com/gnuradio/gnuradio)  
[2] [https://gnuradio.org/doc/doxygen/page\_tagged\_stream\_blocks.html](https://gnuradio.org/doc/doxygen/page_tagged_stream_blocks.html)

---

<div class="post-metadata">

**Author:** ![david](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/aeb1de/32.png) [@david](https://www.ruby-forum.com/u/david)\
**Post date:** [August 9, 2015, 11:54pm UTC](https://www.ruby-forum.com/t/burst-tx-and-rx/242945/3 "2015-08-09T23:54:54Z")

</div>

Marcus,

That’s great input. Thanks very much indeed. I’ll get to work!

David.
