From dd07b5ce71bcc94498688a0fe07b1cd03caaba69 Mon Sep 17 00:00:00 2001 From: f4exb Date: Mon, 15 Jan 2018 00:56:11 +0100 Subject: [PATCH] AirspyHF: added documentation --- Readme.md | 2 +- doc/img/AirspyHFInput_plugin.png | Bin 0 -> 12196 bytes doc/img/AirspyHFInput_plugin.xcf | Bin 0 -> 54936 bytes plugins/samplesource/airspyhf/readme.md | 93 ++++++++++++++++++++++++ 4 files changed, 94 insertions(+), 1 deletion(-) create mode 100644 doc/img/AirspyHFInput_plugin.png create mode 100644 doc/img/AirspyHFInput_plugin.xcf create mode 100644 plugins/samplesource/airspyhf/readme.md diff --git a/Readme.md b/Readme.md index f5a44ec8b..d24087302 100644 --- a/Readme.md +++ b/Readme.md @@ -75,7 +75,7 @@ Be also aware that the lower rates (2.5 MS/s or 5 MS/s with modified firmware) a

Airspy HF+

-[Airspy HF+](https://airspy.com/airspy-hf-plus/) is supported through [my fork of the airspyhf library](https://github.com/f4exb/airspyhf). This is needed because SDRangel uses integer samples at its input. The original library post processes the integer samples from the device and presents them as float samples without any other option. The maintainer of the original airspyhf library not being cooperative I had to keep changes on my own fork. There are also a few bug fixes. +[Airspy HF+](https://airspy.com/airspy-hf-plus/) is supported through [my fork of the airspyhf library](https://github.com/f4exb/airspyhf). This is needed because SDRangel uses integer samples at its input. The original library post processes the integer samples from the device and presents them as float samples without any other option. The maintainer of the original airspyhf library not being cooperative I had to keep changes on my own fork. If you use your own location for libairspyhf install directory you need to specify library and include locations. Example with `/opt/install/libairspyhf` with the following defines on `cmake` command line: diff --git a/doc/img/AirspyHFInput_plugin.png b/doc/img/AirspyHFInput_plugin.png new file mode 100644 index 0000000000000000000000000000000000000000..51b990cb79fdd1400a5473ad0a2637eea005e466 GIT binary patch literal 12196 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 literal 0 HcmV?d00001 diff --git a/plugins/samplesource/airspyhf/readme.md b/plugins/samplesource/airspyhf/readme.md new file mode 100644 index 000000000..c57540688 --- /dev/null +++ b/plugins/samplesource/airspyhf/readme.md @@ -0,0 +1,93 @@ +

AirspyHF input plugin

+ +

Introduction

+ +This input sample source plugin gets its samples from a [Airspy HF+ device](https://airspy.com/airspy-hf-plus/). + +

Build

+ +The plugin will be built only if the [Airspy HF library](https://github.com/f4exb/airspyhf) is installed in your system. Please note that you should use my fork as it deals with integer samples. The branch to check out is `intsamples` but this is the default in Github. + +If you build it from source and install it in a custom location say: `/opt/install/libairspyhf` you will have to add `-DLIBRTLSDR_INCLUDE_DIR=/opt/install/libairspyhf/include -DLIBRTLSDR_LIBRARIES=/opt/install/libairspyhf/lib/libairspyhf.so` to the cmake command line. + +Note: if you use binary distributions this is included in the bundle. + +

Interface

+ +It has very few controls compared to other source interfaces. This is because a lot of things are handled automatically with the AirspyHF+: + + - gains (hardware) + - DC and IQ correction (library software) + +![AirspyHF input plugin GUI](../../../doc/img/AirspyHFInput_plugin.png) + +

1: Common stream parameters

+ +![SDR Daemon source input stream GUI](../../../doc/img/SDRdaemonSource_plugin_01.png) + +

1.1: Frequency

+ +This is the center frequency of reception in kHz. + +

1.2: Start/Stop

+ +Device start / stop button. + + - Blue triangle icon: device is ready and can be started + - Green square icon: device is running and can be stopped + - Magenta (or pink) square icon: an error occured. In the case the device was accidentally disconnected you may click on the icon, plug back in and start again. + +

1.3: Record

+ +Record baseband I/Q stream toggle button + +

1.4: Stream sample rate

+ +Baseband I/Q sample rate in kS/s. This is the device to host sample rate (3) divided by the decimation factor (4). + +

2: Band select

+ +Use this combo box to select the HF or VHF range. This will set the limits of the frequency dial (1.1) appropriately and possibly move the current frequency inside the limits. Limits are given by the AirspyHF+ specifications: + + - HF: 9 kHz to 31 MHz + - VHF: 60 to 260 MHz + +

3: Device to hast sample rate

+ +This is the device to host sample rate in samples per second (S/s). + +Although the combo box is there to present a choice of sample rates at present the AirspyHF+ deals only with 768 kS/s. However the support library has provision to get a list of sample rates from the device incase of future developments. + +

4: Decimation factor

+ +The I/Q stream from the AirspyHF to host is downsampled by a power of two before being sent to the passband. Possible values are increasing powers of two: 1 (no decimation), 2, 4, 8, 16, 32, 64. When using audio channel plugins (AM, DSD, NFM, SSB...) please make sure that the sample rate is not less than 48 kHz (no decimation by 32 or 64). + +

5: Transverter mode open dialog

+ +This button opens a dialog to set the transverter mode frequency translation options: + +![SDR Daemon source input stream trasverter dialog](../../../doc/img/RTLSDR_plugin_xvrt.png) + +Note that if you mouse over the button a tooltip appears that displays the translating frequency and if translation is enabled or disabled. When the frequency translation is enabled the button is lit. + +

5a.1: Translating frequency

+ +You can set the translating frequency in Hz with this dial. Use the wheels to adjust the sample rate. Left click on a digit sets the cursor position at this digit. Right click on a digit sets all digits on the right to zero. This effectively floors value at the digit position. Wheels are moved with the mousewheel while pointing at the wheel or by selecting the wheel with the left mouse click and using the keyboard arroews. Pressing shift simultanoeusly moves digit by 5 and pressing control moves it by 2. + +The frequency set in the device is the frequency on the main dial (1) minus this frequency. Thus it is positive for down converters and negative for up converters. + +For example with the DX Patrol that has a mixer at 120 MHz for HF operation you would set the value to -120,000,000 Hz so that if the main dial frequency is set at 7,130 kHz the RTLSDR of the DX Patrol will be set to 127.130 MHz. + +If you use a down converter to receive the 6 cm band narrowband center frequency of 5670 MHz at 432 MHz you would set the translating frequency to 5760 - 432 = 5328 MHz thus dial +5,328,000,000 Hz. + +For bands even higher in the frequency spectrum the GHz digits are not really significant so you can have them set at 1 GHz. Thus to receive the 10368 MHz frequency at 432 MHz you would set the translating frequency to 1368 - 432 = 936 MHz. Note that in this case the frequency of the LO used in the mixer of the transverter is set at 9936 MHz. + +The Hz precision allows a fine tuning of the transverter LO offset + +

5a.2: Translating frequency enable/disable

+ +Use this toggle button to activate or deactivate the frequency translation + +

5a.3: Confirmation buttons

+ +Use these buttons to confirm ("OK") or dismiss ("Cancel") your changes.