From SpenchWiki

If you are new to this...

To jump straight in on windows:

Download the self-contained installer Install (enable HDSDR to be automatically installed too - no separate download necessary) Launch HDSDR Select "ExtIO_USRP.dll" to be used as the ExtIO (this will attempt to automatically connect to a USRP via UHD) If you want to connect to another device (FUNcube Dongle, RTL2832-based USB DVB-T receiver), see Device Hint table below. For example: For RTL2832 : add RTL to the Device Hint in the "Device control" window For FUNcube : add FCD , etc.

table below. For example: Click "Create" to create your newly specified device Lastly, in the main window, click "Start" and you're off!

You only have to do that once; for subsequent runs it'll auto-load everything.

Interfaces

Although USRP is mentioned everywhere, you should read this as USRP+FCD+RTL2832 (since all those devices are supported through the same interface).

ExtIO_USRP+FCD+RTL2832+BorIP - an ExtIO plugin for Winrad/HDSDR/WRplus that allows one to use a USRP or FUNcube Dongle as the baseband input.

BorIP - a network server that allows one to remotely control and stream baseband data from a USRP or FUNcube Dongle over a network to, for instance, ExtIO_USRP or a UDP Source block in GNU Radio/GRC.

gr-baz - Code and patches to enable seamless BorIP client support in GNU Radio (all your existing flowgraphs should work even when a remote USRP is used).

Help

Device hint quick-start: this selects which hardware receiver to use.

"[" and "]" indicate OPTIONAL arguments, and should NOT be included when specifying the argument. Device hint Selection <none> [side:sub-device] First available USRP with UHD and WinUSB (libusb1) <UHD device hint>[, side:sub-device] Specified USRP with UHD and WinUSB (libusb1) <Legacy device index> [side:sub-device] USRP by device index with Legacy driver and libusb0 (use 0 to select first/only Legacy device) FCD [<device index> [<I offset> [ [<gain adjust> [<phase adjust>]]]]] [mixergain={4,12}] [ifgain1={-3,6}] FUNcube Dongle by device index (or first/only if index not supplied). Key-value arguments can come anywhere after 'FCD'. RTL (optional arguments continue...) [vid=0x####] [pid=0x####]

[tuner={e4000,fc0012,fc0013,fc2580}]

[autogainmode={0,1}]

[gainmode=<gain mode string in selected tuner's gain mode map> e.g. {linear,nominal,sensitive}]

[readlen=<USB bulk read length (bytes)>]

[bufmul=<buffer size multiplier>]

[buf=0 (disable buffering)]

[buflvl=<buffer to % level before streaming>]

[xtalfreq=<crystal frequency (Hz)>]

[timeout=<USB bulk read timeout (ms)>] In BETA only: Realtek RTL2832U or similar DVB-T/DAB/FM USB receiver

NOTE:

There are many more options for each device/driver combination (e.g. daughterboard selection for USRP 1, firmware/FPGA image, FUNcube Dongle parameters). Please read the relevant section in either ExtIO_USRP or BorIP.

UHD and Legacy are mutually exclusive. UHD can only operate with WinUSB (libusb1), and Legacy only with libusb0.

RTL2832U requires libusb-1 ('WinUSB' driver from Zadig should be installed) - please see notes below!

For help on a specific interface, click one of the links above.

For help on installing USB drivers, read the instructions on using Zadig.

Videos

The following videos demonstrate the use of the ExtIO plugin. Even though one type of receiver is used in each, they serve as a general demonstration because the ExtIO allows operation of multiple devices in the same manner.

Basic ExtIO usage (USRP) Includes enabling the UDP Relay to send the baseband data over a network to the UDP Source block in GNU Radio, which allows for further analysis.

A detailed exploration of HF with ExtIO (USRP + HF transverter) Analysis of Whistlers, Ionosondes, Weather fax (WEFAX), Flight Information Service, Link 11 (TADIL A), RTTY, Over-the-Horizon RADAR, STANAG 4285, Sweepers, Unknown sweeping 'blocks', ACORN (Ocean RADAR), ALE (Automatic Link Establishment), OFDM (Orthogonal Frequency Division Multiplexing), and DRM (Digital Radio Mondiale).

RTL2832U with ExtIO Demonstration of a RTL2832U-based device running under Windows with HDSDR.

External resources

Using the USRP with HDSDR on HF: http://sivantoledotech.wordpress.com/2012/04/03/using-the-usrp-with-hdsdr/

For a complete list of external resources for RTL2832U-based devices, please see this page.

Download

HDSDR

HDSDR and Winrad are (optionally) automatically downloaded by my installer below, so you do not have to download them separately.

Summary

No compilation necessary - just download, install and run! The installer will take care of:

(optionally) installing Winrad or HDSDR if you don't already have one,

USB drivers and Legacy/UHD firmware for your USRP, and

the Visual Studio runtime libraries.

If you only want to use a FUNcube Dongle, you do not need to install libusb.

Just so you know precisely what the installer is doing (i.e. no funny stuff), you can look at the NSIS script. For the code and patches required to enable BorIP support in GNU Radio, please see gr-baz.

If you have comments or feedback, please get in touch!

Information

This release includes support for RTL2832 chips and associated tuners (see RTL device hint in table above). The RTL2832-specific information has been moved to a separate page. To see if there has been an update (that might address existing issues, or add new features), please see the BETA version history.

device hint in table above).

To enable system support for RTL2832, you must follow the relevant instructions on the Zadig page (and/or watch the installation/demo video).

Apart from RTL2832 support, the release also contains more minor fixes to the other hardware interfaces.

For GNU Radio: I have implemented full support for this hardware in GNU Radio as the baz.rtl_source_c source block found in my gr-baz module (the source code is on that page).

I have created a new discussion forum on Google Groups as a place to talk about using this plugin with a RTL2832U-based device.

For updates, follow me @spenchdotnet.

Information, and a simple Linux command-line capture utility, for the RTL2832 demodulator can be found at rtl-sdr on Osmocom. Thank you to Antti Palosaari for uncovering this capability of the chip, and Steve Markgraf for putting together rtl-sdr!

Installer

If you're using a DVB-T dongle, don't forget to supply "RTL" as the device hint to the ExtIO plugin, otherwise it will try to connect to a USRP using UHD! See Device Hint table above in Help section.

(The filename was ExtIO_USRP+FCD+RTL2832U+BorIP-BETA_Setup.zip but I dropped the BETA.)

Please see the version history for information on what has changed recently.

For installation instructions, please see the installation video and External Resources on the dedicated RTL2832U page.





Source code

The cross-platform source code for librtl2832++ can be found in gr-baz.

The ExtIO source resides in my SVN.

Please note that the ExtIO code initially grew from the need to use a USRP exclusively. Since then I have 'tacked on' support for BorIP, the FUNcube Dongle and RTL2832U-based device. It could do with some major refactoring! (Anyone?)

Feedback & Debug Output

If for some reason the program crashes, please try again but this time open the EXE of the host application with Dependency Walker, profile it and enable 'Log debug output messages' before clicking OK on the Profile Module dialog. Then please email me the log to help with diagnosis.

Version history

Version history for last release Version Changelog 1.8 BETA 2 Handle bad packets when resuming N-series streaming

Allow for different devices' samples-per-packet (e.g. switching from N-series to B-series - HDSDR does not like this to change) 1.8 BETA 1 UHD 3.9.4 (release)

Added control for clock & time source to ExtIO & BorIP server

Allowing short packets from BorIP server

Fixes to overflow/network loss event counting 1.7 BETA 2 UHD 3.9 with B200mini support 1.7 BETA 1 UHD 3.9 1.6 BETA 3 See BETA notes below

Tuning > 2.4 GHz (64-bit tuning)

Latest UHD (3.7.1) Vastly improved USRP B200/B210 (B2x0) support USRP X300/X310 support

Latest Zadig

Removed unnecessary images to reduce installer size

Better UHD/RTL logging 1.5.1 Fixed samples per packet returning zero bug in UHD source 1.5 R820T tuner code actually works now (RTL2832U IF support) 1.4.1 Minor fix for detecting UHD overflows 1.4 Initial R820T tuner support for RTL2832U devices (doesn't actually work - see 1.5)

Added a few more RTL2832U devices

Fixes for better responsiveness under Wine

Using UHD RX streamer 1.3.1 UHD 003.005.000

64-bit tuning

e4k tuner used by default

tuner used by default Provide default Device Hints in ComboBox

Fixed Device Hint ComboBox history storage 1.1.1 Correct 'adjusted' samples when relaying in Playback mode

New FCD capture code

Added mixergain and ifgain1 arguments to FCD device hint options

and arguments to FCD device hint options Add BorIP resettime command line argument to fix long-running FCD capture issue

command line argument to fix long-running FCD capture issue Various minor fixes 1.1 UHD 003.003.001 (supports B100) and firmware for all USRP models

USRP models FUNcube Dongle support

Option to relay as BorIP packets

Compatibility for non-aligned buffers

Various bug-fixes 1.0.1 Much more informative error messages

Revised DEST command

command Rrror messages passed through network layer

Firmware image option for Legacy device hint 1.0 Initial release

BETA

Update/version: (chronologically ascending - if there's a new point, the download has been updated and the BETA #<number> has been updated in the ZIP file's text comment)

Version 1.3

Noxon adapters (with the Fitipower FC0013 tuner) are now supported! (Although I haven't actually tested the code as I don't have one with that tuner. If you have one and try this plugin, please let me know if it works!) Hama nano adapters should now work too. Relaxed locking so changing frequency and gain will happen seamlessly (no delay). Major fix to buffering code and performance improvements (should work well now, although I'm seeing that the adapter only really performs optimally at lower sample rates) You may see high CPU usage. A quick check showed this was actually HDSDR, not my code. It might burning more cycles during resampling/rendering/etc with slightly odd device capture rates.

As you increase the capture rate, there is a subtle degradation in the signal from the device (I noted this with a constant tone from a signal generator). At higher sample rates, the internal buffering mechanism already greatly reduces this problem, but the issue is still there - perhaps it is indeed a limitation of the device. You can put readlen= <value> after the device hint, making value divisible by 512. The default (32768) is a good compromise between performance and responsiveness, but for a longer buffer try 524288.

<value> after the device hint, making value divisible by 512. The default (32768) is a good compromise between performance and responsiveness, but for a longer buffer try 524288. If you change (increase) the readlen, you will probably have to restart HDSDR for it to take effect correctly (I believe this is actually an issue with HDSDR). For example: RTL readlen=524288 RTL2832 now enabled in BorIP server too (there's still an issue - please don't use it until you see a new update about it) A number of fixes: Corrected tuning bug with FC0013 (no more I2C failures )

(no more ) Added support for Dexatek Technology dongle (1d19:1101)

(1d19:1101) Gain is clipped to range supported by tuner New device & BorIP fix: NOXON version 2 (0ccd:00e0)

(0ccd:00e0) Fixed buffer overflow issue in BorIP Server. When using it for RTL, you MUST use: RTL readlen=8192 (or a lower multiple of 512, that when multiplied by 4 + 4 <= max UDP packet size) to prevent packet truncation (my system reports 65507). I will solve this in the future by implementing automatic segmentation into multiple packets. Un-install now removes all UHD firmware files Big update: Added FC0012 & FC2580 support

Added many more devices to device table for automatic recognition

More device hint options so you can use custom devices and override tuner selection

Use of new 'librtl2832++.dll that abstracts hardware interface (source code is in msvc directory in gr-baz) More devices (DIKOM, Dexatek 3). Uses cross-platform librtl2832++ (same control code for Linux and Windows) BIG additions: Auto-probe tuner!

Fixed FC0012 initialisation error

LO readout is only updated when actual tuning has taken place (e.g. FCD/RTL does not support sub-Hz tuning like the USRP)

More devices (Twintech, Genius TVGo, SVEON) Swapped auto-detection order of e4k and e4000 . Added NOXON version 3' (0ccd:00d7). Coincides with release 1.4 More devices: Compro Videomate

Cinergy (rev 3)

Version 1.6

New UHD with USRP B200/B210 support When stopping streaming, or changing sample rate, a number of USB transfers will be reported can cancelled - this is OK and can be ignored

On USB 2, stopping and starting streaming, or changing sample rate, seems to work. On USB 3, sometimes there is an issue with the rate samples are received (it seems much lower), and so you'll notice the data being delivered to your SDR application occurs more slowly. To work around this, choose a higher rate, and/or Stop/Start streaming until it comes good (or press 'Create' in the Device Control dialog to create the device again). Updated to latest UHD, which has all my B2x0 improvements and includes host code for X300/X310 support Ability to tune > 2.4 GHz with compatible client software (e.g. HDSDR) that supports 64-bit tuning

Version 1.7

Updates (see version history above)

Version 1.8