Getting started and documentation beyond dialtone.py?

I finally purchased a USRP2. I have many years of RF/Microwave hardware
experience but totally new to Python programming, not to mention C++. I
know some C for microcontrollers, a little Verilog on Xilinx hardware,
and
some DSP theory. I have read Lyon’s book and have taken his class,
along
with some classes in grad school.

I have the gnuradio ‘next’ branch working with the USRP2 via the UHD. I
have a basic nbfm receiver working in GNU Radio Companion (GRC).

  1. I’d like to get started with coding flow-graphs in Python. Is there
    any
    documentation that describes the Python libraries, mainly arguments to
    the
    functions and the algorithm details? I’m browsing through the doxygen
    documentation but it’s kind of overwhelming since it’s geared toward C++
    and
    doesn’t cover how it functions.

  2. What IDE is good for Python, specifically for use with gnuradio? I
    have
    dabbled a few hours with Wing IDE and I like it so far. I want
    something
    with a class browser and auto completion. However, I figured it would
    help
    (e.g. auto-completion) with the arguments to the gnuradio functions, but
    it
    gives no hints.

  3. I saw there was an actual gnuradio book, but looks like it was never
    published. I’d be willing to buy this in PDF or ebook format; is it
    avaiable?

Anyway, for now I’m looking at the *.py that GRC generates and learning
from
that. Also looking at the examples in source tree. I’m just wondering
if
there is more documentation. Maybe it’s just dive in and sink or swim;
of
course that’s probably the best way to learn. I figure modifying the
example programs to work with the UHD will teach me allot.

View this message in context:
http://old.nabble.com/Getting-started-and-documentation-beyond-dialtone.py---tp30308935p30308935.html
Sent from the GnuRadio mailing list archive at Nabble.com.

On Fri, Nov 26, 2010 at 4:02 PM, madengr [email protected] wrote:

I finally purchased a USRP2. I have many years of RF/Microwave hardware
experience but totally new to Python programming, not to mention C++. I
know some C for microcontrollers, a little Verilog on Xilinx hardware, and
some DSP theory. I have read Lyon’s book and have taken his class, along
with some classes in grad school.

I have the gnuradio ‘next’ branch working with the USRP2 via the UHD. I
have a basic nbfm receiver working in GNU Radio Companion (GRC).

Hi. Great that you’re already that far along.

  1. I’d like to get started with coding flow-graphs in Python. Is there any
    documentation that describes the Python libraries, mainly arguments to the
    functions and the algorithm details? I’m browsing through the doxygen
    documentation but it’s kind of overwhelming since it’s geared toward C++ and
    doesn’t cover how it functions.

The Doxygen documentation actually does tell you how to use the blocks
in Python, but it takes a bit of an understanding to parse what it
says. When building a Python block, look at the Doxygen page for that
block and find the “gr_make_X” function down at the bottom. This is
the factory function and you translate it into Python as: gr.X(args).
The Doxygen will give you the arguments.

This, of course, only tells you about how to work with any given block
(detail and quality of the documentation will vary), not necessarily
how they all go together. There’s no one good source of documentation
for that, yet.

  1. What IDE is good for Python, specifically for use with gnuradio? I have
    dabbled a few hours with Wing IDE and I like it so far. I want something
    with a class browser and auto completion. However, I figured it would help
    (e.g. auto-completion) with the arguments to the gnuradio functions, but it
    gives no hints.

Honestly, I just use Emacs and the console.

  1. I saw there was an actual gnuradio book, but looks like it was never
    published. I’d be willing to buy this in PDF or ebook format; is it
    avaiable?

If it’s the book I’m thinking of, I’ve never even heard of the author
before and can’t say anything about the quality of the book.

Anyway, for now I’m looking at the *.py that GRC generates and learning from
that. Also looking at the examples in source tree. I’m just wondering if
there is more documentation. Maybe it’s just dive in and sink or swim; of
course that’s probably the best way to learn. I figure modifying the
example programs to work with the UHD will teach me allot.

Look at gnuradio-examples/python. There are dozens of example programs
in there to get you going.

Tom

  1. I saw there was an actual gnuradio book, but looks
    like it was never
    published. I’d be willing to buy this in PDF or
    ebook format; is it
    avaiable?

Is this the book you’re talking about?
Let me know if you can find a copy.
I would definitely buy it if I could find it.

http://www.amazon.com/Software-Defined-Radio-GNU-USRP/dp/0071498834

I guess I can throw in a couple of pennies here…

Here at KIT we have a couple of students hacking GR-related projects,
and most of them get something running within reasonable time, provided
they’ve had some kind of previous programming experience.
Here’s some of the advice I give them:

On Fri, Nov 26, 2010 at 01:02:19PM -0800, madengr wrote:

  1. I’d like to get started with coding flow-graphs in Python. Is there any
    documentation that describes the Python libraries, mainly arguments to the
    functions and the algorithm details? I’m browsing through the doxygen
    documentation but it’s kind of overwhelming since it’s geared toward C++ and
    doesn’t cover how it functions.

I guess you’ve read:
http://gnuradio.org/redmine/wiki/gnuradio/TutorialsWritePythonApplications

It’s a wee bit old, but not wrong. However, it doesn’t cover GRC.
It’s good you’ve got GRC running, because it’s a super-useful tool,
even once you’re an expert, because you can just prototype stuff very
quickly.

What it does explain is how to use the C++ docs for your Python dev.
Since most of the signal processing is done in C++, this is most of what
you need.
However, to understand the algorithms, quite often you simply have to
jump to the source. Don’t let that discourage you: I found the GNU Radio
code simple to read most of the time.

  1. What IDE is good for Python, specifically for use with gnuradio? I have
    dabbled a few hours with Wing IDE and I like it so far. I want something
    with a class browser and auto completion. However, I figured it would help
    (e.g. auto-completion) with the arguments to the gnuradio functions, but it
    gives no hints.

I wouldn’t know how to do that, I also use very standard tools (in my
case, vim & console). Also very useful:

  • ipython, an interactive python shell, where I can quickly try small
    hacks
  • a running browser with the autogenerated docs (that’s why I haven’t
    tried autocompletion)
  • gr_modtool.py, which helps add blocks to out-of-tree modules
  1. I saw there was an actual gnuradio book, but looks like it was never
    published. I’d be willing to buy this in PDF or ebook format; is it
    avaiable?

Anyway, for now I’m looking at the *.py that GRC generates and learning from
that. Also looking at the examples in source tree. I’m just wondering if
there is more documentation. Maybe it’s just dive in and sink or swim; of
course that’s probably the best way to learn. I figure modifying the
example programs to work with the UHD will teach me allot.

FWIW, a lot of people think GNU Radio is hard. Personally, I find the
hardest bit is understanding signal processing. And no tool in the world
can make that simple. If you really know how the DSP works, getting GNU
Radio to do thy biddings is usually fairly straightforward.

Good luck!
MB


Karlsruhe Institute of Technology (KIT)
Communications Engineering Lab (CEL)

Dipl.-Ing. Martin B.
Research Associate

Kaiserstraße 12
Building 05.01
76131 Karlsruhe

Phone: +49 721 608-3790
Fax: +49 721 608-6071
www.cel.kit.edu

KIT – University of the State of Baden-Württemberg and
National Laboratory of the Helmholtz Association

On 11/29/2010 03:24 AM, Martin B. wrote:

FWIW, a lot of people think GNU Radio is hard. Personally, I find the
hardest bit is understanding signal processing. And no tool in the world
can make that simple. If you really know how the DSP works, getting GNU
Radio to do thy biddings is usually fairly straightforward.

Good luck!
MB

My experience, on this list and elsewhere is that there’s a perception
that SDR environments
will allow you to build a software-based radio with only the very
thinnest
(or non-existent) understanding of:

        o programming (whether it's Python or C++ or whatever)
        o real-time systems
        o RF systems in the analog world
        o signal processing

I think a significant number of people get into Gnu Radio having come
from perhaps an intro course in
signal processing perhaps using Matlab or similar, and expect GnuRadio
to be a pretty-similar
experience, only with real hardware “on the ends”.

They get “bitten” by the fact that at the end of the day, your signal
has to interact with the real analog
world, and they have no experience to offer guidance once the “rubber
hits the road”. Simple
lab-practice concepts like the use of attenuators between a
transmitter and a receiver when you’re
hard-wiring them, is not something that the purely Matlab-like world
prepares you for. When you
think of a radio purely as a set of abstract mathematical
operations, you can often lose sight of
the fact that there’s this ugly physical universe out there as well,
and many folks encountering Gnu Radio
for the first time are also encountering a lot of different “ugly
realities” for the first time as well.

My ten cents worth…


Principal Investigator
Shirleys Bay Radio Astronomy Consortium