Software Defined Radio

My Software Defined Radio experiments featured in GQ Australia (April/May) 2012!

SDR-powered Aviation Mapper is now LIVE! Click here to use it.


The Aviation Mapper launch video

Have a look at my Hi-Def intro video on using SDR on HF that was featured on Slashdot:
(The 'cheap SDR' they refer to can be found on my wiki for GNU Radio/Linux and Windows.)

The Software Defined Radio (SDR) I currently use is the Universal Software Radio Peripheral (USRP) 1 made by Ettus Research (in a custom housing!):

I've used it for several of my projects, including an aviation tracking system with a live streaming 3D Google Earth front-end:

Demonstration of BorIP network streaming between HDSDR and GNU Radio using USRP 1:

Example of HDSDR using USRP:

USRP

The USRP is an Software Defined Radio created by Ettus Research. I have one with a WBX daughterboard.

For various notes and experimental results concerning the USRP, please have a look at the dedicated page on my wiki.


Performing an XO drift test on the USRP (just behind the laptop's screen).
The WBX is connected to an HP 8640B signal generator (on the left under the CRO).

The WBX can receive signals from a broad frequency range, for example 2G and 3G mobile networks:


A waterfall display of the spectrum around 948MHz (2G GSM) using GNU Radio.

If you wish to see various technical images concerning GSM, please visit the page on my wiki.

Winrad ExtIO input for USRP

Winrad and its forks (HDSDR & WRplus) are software radio interfaces that run on Windows. They support a number of SDRs as input sources (known as ExtIO plugins). There was previously one for the USRP, however I decided to write a new one with UHD and legacy support, and much more (e.g. remote control and streaming over a LAN).

For instructions, help and more technical information, please visit the wiki page.

You can download this plugin, with BorIP, on the download page.


The USRP ExtIO control window running in HDSDR.

Here is another example of HDSDR running, with the control window hidden and a busy portion of the spectrum showing:

HF (WBX + Transverter)

The SDR hardware has been taken on a few digitally-enhanced 'DXpeditions'. The first was to our favourite hill in Sydney Park, and the second being the excellent cliff-side WWII bunker at North Head (click either link to see the day's/night's photos).

Here is the USRP in action (in my custom housing) connected to a transverter, which is in turn connected to a long-wire antenna for HF reception:

The laptop is running Winrad to demodulate the baseband signal. This is then fed into Digital Master 780 to dcode the digital HF mode found on the scope (e.g. PSK-31, CW, etc).

Here are some HAMs speaking on the 20m band:

Unfortunately those constant lines are artifacts from the +60MHz transverter used to shift the HAM bands up into the frequency range that the WBX daughterboard can hear.

Here is some output from Digital Master (part of Ham Radio Deluxe) that I had listening to the Stereo Mix of the sound card on the same laptop as WRplus was running. It includes decodes of PSK-31, CW and RTTY:

BorIP

BorIP* is a software solution that abstracts a streaming SDR interface to make it available over an IP network, allowing the SDR hardware to be physically removed from the front-end processing computer(s). The goal for BorIP is to keep the protocol simple.

For instructions, help and more technical information (such as the complete protocol breakdown), please visit the wiki page.

You can get the server, along with the ExtIO_USRP plugin, from the download page.

(* An aside on the etymology of BorIP: Bor is an intentional mis-spelling of 'bro', commonly used during chats with my 'bor' Matt Robert with whom I am journeying through this land of SDR. Paraphrasing Bor Robert: "As this software operates over an IP network, it is essentially Bro-over-IP since streams should be restricted to one's LAN - closest computers/counterparts - considering the high data rate". BorIP is thus a convenient contraction. For more information, please see the Geektionary on my wiki.)

BorIP consists of a protocol spec, which resembles plain-text client/server chat, and is realised in two parts:

  1. The BorIP server: users can connect to the server, specific the remote SDR device they wish to use, configure is parameters and start streaming baseband I/Q data over the network to specific clients.
  2. The BorIP client library: this library exposes the SDR-control interface (transparently handles communication with the server and reception of the streaming baseband data) making it look like the SDR is connected directly to the machine.

The first implementation was for an ExtIO plugin for Winrad to support the USRP:


Here BorIP is connected to server 'Bang' and aspects of the radio can be controlled via this window.


The BorIP server having just encountered a client (conversation below).

In the following plain-text protocol example, odd lines are sent by the server while even lines are sent by the client - the server always begins the conversation by announcing what device is currently active, if any (in this case nothing is active).

DEVICE -
DEVICE 0
DEVICE 4c69abc2|0.000000|50.500000|0.500000|64000000.000000|4096|TX/RX,RX2
FREQ 123456789
FREQ OK 123456789.000000 123456735.500000 -53.504831 -53.500000
GAIN 25
GAIN OK
RATE 1000000
RATE OK 1000000.000
DEST 192.168.1.1
DEST OK
ANTENNA RX2
ANTENNA OK
GO
GO OK
STOP
STOP OK
DEVICE !
DEVICE -