« Previous -
Version 5/60
(diff) -
Next » -
Current version
anonyme, 08/13/2007 10:40 pm
Added some more USRP information.
= Frequently Asked Questions =
A series of questions commonly asked (and answered). Gathered from the mailing list archives and various experts.
PageOutline(2-6,,inline)
----
General
Who/what/when/where/why/how (not necessarily in that order)?
=== What is GNU Radio? ===
GNU Radio is a collection of software that when combined with minimal hardware, allows the construction of radios where the actual waveforms transmitted and received are defined by software. What this means is that the digital modulation schemes used in today's high performance wireless devices are now software problems.
=== Where can I download GNU Radio? ===
Check the [wiki:Download download] page on the wiki then go over to the [wiki:BuildGuide build guide] for instructions on how to build and what dependencies GNU Radio has.
=== How can I get involved? ===
You can point yourself over to the [wiki:Development development] page and first read it carefully, second read it again, and finally read it one more time. You should be able to figure out what to do by then.
=== What can I do to help contribute to GNU Radio? ===
There are currently some outstanding tasks that need to be accomplished as well as an endless supply of bugs that need to be fixed. Please feel free to enhance GNU Radio, but make sure you read the [wiki:Development development] page first before we can accept nontrivial contributions.
=== Who is part of GNU Radio? ===
GNU Radio is maintained by [http://www.comsec.com Eric Blossom], with regular contributions by [http://www.corganenterprises.com Johnathan Corgan], [http://www.ettusresearch.com Matt Ettus] and others.
For a more complete list of contributors, please visit the [source:gnuradio/trunk/AUTHORS AUTHORS] file in the subversion repository.
=== Why did GNU Radio get started? ===
While GNU has been extremely successful in creating free software suites for exploration and hacking by the everyday user, there is still a large void when it comes to hardware hacking especially within the radio frequency spectrum. GNU Radio helps fill this void by supplying a suite of signal processing software blocks along with some tangible hardware to the general public at a modest price (free software, reasonably priced hardware).
=== Where can I ask other questions about GNU Radio not answered here? ===
You should feel free to join out [wiki:MailingLists mailing lists] and actively participate or just read the different threads.
----
Universal Software Radio Peripheral (USRP)
Questions specific to the USRP and daughterboards, their functionality, and role within GNU Radio.
=== What is the Universal Software Radio Peripheral? ===
The [trac:USRP Universal Software Radio Peripheral (USRP)] is a general purpose motherboard which hosts a wide range of [wiki:List_of_USRP_daughterboards daughterboards] which can be used with the signal processing blocks found in the GNU Radio software package to give access to the radio frequency spectrum.
The USRP hosts dual [http://www.analog.com/en/prod/0,,AD9862,00.html Analog Devices AD9862 mixed signal analog front end] devices connected to an [http://www.altera.com/products/devices/cyclone/cyc-index.jsp Altera Cyclone EP1C12 FPGA] where most of the initial downconversion is done within the [wiki:UsrpRfxDiagrams RX chain].
=== Can multiple USRPs be installed on one single host? ===
Yes. This is done using the {{{which}}} parameter in the {{{usrp.source_c()}}} and {{{usrp.sink_c()}}} method as shown below:
{{{
src1 = usrp.source_c( which=0 )
src2 = usrp.source_c( which=1 )
}}}
Now which USRP gets assigned #0 and #1 is dependent on the order they
enumerate on the USB, first by bus, then by device. This may be
affected by which one is plugged in first or turned on first.
It's possible, when writing your own code, to retrieve the serial number
from the {{{source_c}}} object and use that to determine which actual hardware
unit you've grabbed.
The other caveat is that most motherboards share a single USB controller
for all their ports. So you're sharing the same 32 MB/s bandwidth
across two USRPs now, effectively halving the maximum RF bandwidth you
can work with if both USRPs are using the USB equally.
=== What is inband signaling and how can I use it? ===
[wiki:InBandSignaling Inband signaling] is receiving and transmitting control, status and data packets to a USRP to perform specific actions at specific times. This will allow for tight tolerances for TDMA style Media Access Controllers (MACs).
=== Can I run 802.11a/b/g/n/? with a USRP? ===
Currently, no simply due to the latencies required do not allow for round trip processing of packets over the USB 2.0 interface on the USRP. This might get quicker with the inclusion of [wiki:InBandSignaling inband signaling] in an upcoming release, but the round trip delay plus processing time probably won't work too well.
=== What frequency ranges are covered that I can use with the USRP? ===
The general range is anywhere from DC to 2.4GHz, depending on the [wiki:List_of_USRP_daughterboards daughterboard] used.
=== Can I transmit and receive from the same USRP? ===
Yes, but there are some caveats that you must take into consideration. First, if using a cabled setup, be sure there is some attenuation between the transmitter and receiver. Second, realize that there is not much isolation on the board itself and signal can leak through even without an antenna.
----
Core Processing
Different waveforms that are developed and working. Links to works in progress. Explaining Python, C++, etc.
=== Do you support BPSK/D-BPSK/QPSK/M-QAM/OFDM/etc. ===
Sure here are some examples. The information can be found here. If it hasn't been implemented, try it yourself! You'll be surprised what you'll learn.
=== What are the building blocks of GNU Radio at my disposal? ===
Link to doxygen classes or examples.
=== Why bother with Python? I just want to code in C++! ===
It's being worked on. Point to ticket.
=== Isn't Python slow? My application requires blazing speed. ===
Python is only used to setup the flow graph. Once setup, most of the work is done in C++.
----
Creating GNU Radio Blocks
Information about using SWIG between C++/Python specifically for GNU Radio.
=== How do I write a block? ===
Read the tutorial on how to write a block.