From ac426ab2c7f6d6bda16de451c8f2c232b6e6c8b9 Mon Sep 17 00:00:00 2001 From: f4exb Date: Sat, 10 Jun 2017 12:20:43 +0200 Subject: [PATCH] SDRdaemonSource: updated documentation --- Readme.md | 36 +++-- doc/img/SDRdaemonFEC_plugin.png | Bin 33004 -> 0 bytes doc/img/SDRdaemonFEC_plugin_01.png | Bin 7160 -> 0 bytes doc/img/SDRdaemonFEC_plugin_04.png | Bin 6879 -> 0 bytes doc/img/SDRdaemonSource_plugin.png | Bin 0 -> 36683 bytes doc/img/SDRdaemonSource_plugin_01.png | Bin 0 -> 8395 bytes doc/img/SDRdaemonSource_plugin_02.png | Bin 0 -> 5841 bytes doc/img/SDRdaemonSource_plugin_04.png | Bin 0 -> 8841 bytes doc/img/SDRdaemonSource_plugin_05.png | Bin 0 -> 5983 bytes plugins/samplesource/bladerfinput/readme.md | 2 +- plugins/samplesource/hackrfinput/readme.md | 2 +- plugins/samplesource/limesdrinput/readme.md | 2 +- plugins/samplesource/rtlsdr/readme.md | 2 +- .../samplesource/sdrdaemonsource/readme.md | 139 +++++++++++------- 14 files changed, 112 insertions(+), 71 deletions(-) delete mode 100644 doc/img/SDRdaemonFEC_plugin.png delete mode 100644 doc/img/SDRdaemonFEC_plugin_01.png delete mode 100644 doc/img/SDRdaemonFEC_plugin_04.png create mode 100644 doc/img/SDRdaemonSource_plugin.png create mode 100644 doc/img/SDRdaemonSource_plugin_01.png create mode 100644 doc/img/SDRdaemonSource_plugin_02.png create mode 100644 doc/img/SDRdaemonSource_plugin_04.png create mode 100644 doc/img/SDRdaemonSource_plugin_05.png diff --git a/Readme.md b/Readme.md index bef914268..527ad1a6d 100644 --- a/Readme.md +++ b/Readme.md @@ -1,6 +1,6 @@ ![SDR Angel banner](doc/img/sdrangel_banner.png) -**SDRangel** is an Open Source Qt5/OpenGL SDR and signal analyzer frontend to various hardware. +**SDRangel** is an Open Source Qt5 / OpenGL 3.0+ SDR and signal analyzer frontend to various hardware.

Source code

@@ -20,6 +20,13 @@ channelrx: - demodlora - tcpsrc (although it has evolved please use the udpsrc plugin instead) +

Deprecated plugins

+ +These plugins are still present at least in the code but have been superceded: + + - chanalyzer: the Channel Analyzer channel plugin is superceded by the "new generation" Channel Analyzer NG (chanalyzerng) + - sdrdaemon: the SDRdaemon input plugin is superceded by the SDRdaemon source input plugin (sdrdaemonsource). The plugin is not part of the build anymore. +

Specific features

Multiple device support

@@ -34,6 +41,7 @@ From version 3 transmission or signal generation is supported for BladeRF, HackR - [HackRF output plugin](https://github.com/f4exb/sdrangel/tree/dev/plugins/samplesink/hackrfoutput) - [LimeSDR output plugin](https://github.com/f4exb/sdrangel/tree/dev/plugins/samplesink/limesdroutput) not for Win32 - [File output or file sink plugin](https://github.com/f4exb/sdrangel/tree/dev/plugins/samplesink/filesink) + - [Remote device via Network with SDRdaemon](https://github.com/f4exb/sdrangel/tree/dev/plugins/samplesink/sdrdaemonsink)

Supported hardware

@@ -118,9 +126,11 @@ If you use your own location for libmirisdr-4 install directory you need to spec

Plugins for special devices

+These plugins do not use any hardware device connected to your system. They support "virtual" devices related to the file system or the network. +

File input

-The file source plugin allows the playback of a recorded IQ file. Such a file is obtained using the recording feature. Click on the record button on the left of the main frequency dial to toggle recording. The file has a fixed name `test_.sdriq` created in the current directory where `` is the device tab index. +The [File source plugin](https://github.com/f4exb/sdrangel/tree/dev/plugins/samplesource/filesource) allows the playback of a recorded IQ file. Such a file is obtained using the recording feature. Click on the record button on the left of the main frequency dial to toggle recording. The file has a fixed name `test_.sdriq` created in the current directory where `` is the device tab index. Note that this plugin does not require any of the hardware support libraries nor the libusb library. It is alwasys available in the list of devices as `FileSource[0]` even if no physical device is connected. @@ -128,29 +138,33 @@ The `.sdriq` format produced are the 2x2 bytes I/Q samples with a header contain

File output

-The file sink plugin allows the recording of the I/Q baseband signal produced by a transmission chain to a file in the `.sdriq` format thus readable by the file source plugin described just above. +The [File sink plugin](https://github.com/f4exb/sdrangel/tree/dev/plugins/samplesink/filesink) allows the recording of the I/Q baseband signal produced by a transmission chain to a file in the `.sdriq` format thus readable by the file source plugin described just above. Note that this plugin does not require any of the hardware support libraries nor the libusb library. It is always available in the list of devices as `FileSink[0]` even if no physical device is connected. -

SDRdaemon input

+

SDRdaemon receiver input

-This is the client side of the SDRdaemon server. See the [SDRdaemon](https://github.com/f4exb/sdrdaemon) project in this Github repository. You must specify the address and UDP port to which the server connects and samples will flow into the SDRangel application (default is `127.0.0.1`port `9090`). It uses the meta data to retrieve the sample flow characteristics such as sample rate and receiveng center frequency. +The [SDRdaemon source input plugin](https://github.com/f4exb/sdrangel/tree/dev/plugins/samplesource/sdrdaemonsource) is the client side of the SDRdaemon receiver server `sdrdaemonrx`. See the [SDRdaemon](https://github.com/f4exb/sdrdaemon) project in this Github repository. You must specify the local address and UDP port to which the remote server connects and samples will flow into the SDRangel application (default is `127.0.0.1`port `9090`). It uses the meta data to retrieve the sample flow characteristics such as sample rate and receiveng center frequency. It also opens a TCP link to another port to send service messages such as setting parameters specific to the hadrware device connected to the server (default port is `9091`). The `libnanomsg` library is used to support this messaging. + +The data blocks transmitted via UDP are protected against loss with a Cauchy MDS block erasure codec. This makes the transmission more robust in particular with WiFi links. There is an automated skew rate compensation in place. During rate readjustemnt streaming can be suspended or signal glitches can occur for about one second. -This plugin will be built only if the lz4 and libnanomsg libraries are installed in your system. These libraries are available as dev packages in most distributions. +This plugin will be built only if the libnanomsg and the [CM256cc library](https://github.com/f4exb/cm256cc) are installed in your system. libnanomsg is available as a dev package in most distributions For CM256cc if you install it in a non standard directory you will then have to specify the include and library paths on the cmake command line. Say if you install cm256cc in `/opt/install/cm256cc` you will have to add `-DCM256CC_INCLUDE_DIR=/opt/install/cm256cc/include/cm256cc -DCM256CC_LIBRARIES=/opt/install/cm256cc/lib/libcm256cc.so` to the cmake commands. -Note that this plugin does not require any of the hardware support libraries nor the libusb library. It is always available in the list of devices as `SDRdaemon[0]` even if no physical device is connected. +Note that this plugin does not require any of the hardware support libraries nor the libusb library. It is always available in the list of devices as `SDRdaemonSource[0]` even if no physical device is connected. -

SDRdaemonFEC input

+

SDRdaemon transmitter output

-This is a specialized client for the SDRdaemon server that matches the SDRdaemon with FEC option (`sdrdaemonfec` binary). The frame format is quite different from what it is without FEC and it also does not have the exact same functionnalities so a different plugin is more practiclal than trying to fit both versions in one plugin. +The [SDRdaemon sink output plugin](https://github.com/f4exb/sdrangel/tree/dev/plugins/samplesink/sdrdaemonsink) is the client side of the SDRdaemon transmitter server `sdrdaemontx`. See the [SDRdaemon](https://github.com/f4exb/sdrdaemon) project in this Github repository. You must specify the distant address and UDP port to which the plugin connects and samples from the SDRangel application will flow into the transmitter server (default is `127.0.0.1`port `9092`). It also opens a TCP link to another port to exchange service messages such as setting the center frequency or getting status information from the server (default port is `9093`). The `libnanomsg` library is used to support this messaging. -Using this scheme the remote operation is more robust in case conditions are not optimal. While SDRdaemon without FEC will work fine on copper or fiber lines the FEC version is recommended for WiFi links where even in good conditions some UDP packets might get lost. +The data blocks sent via UDP are protected against loss with a Cauchy MDS block erasure codec. This makes the transmission more robust in particular with WiFi links. + +There is an automated skew rate compensation in place so that the generator throttling is adjusted to match the actual sample rate of the distant device. This is based on the number of buffer blocks sent back from the distant server using the TCP link. This plugin will be built only if the libnanomsg and the [CM256cc library](https://github.com/f4exb/cm256cc) are installed in your system. libnanomsg is available as a dev package in most distributions For CM256cc if you install it in a non standard directory you will then have to specify the include and library paths on the cmake command line. Say if you install cm256cc in `/opt/install/cm256cc` you will have to add `-DCM256CC_INCLUDE_DIR=/opt/install/cm256cc/include/cm256cc -DCM256CC_LIBRARIES=/opt/install/cm256cc/lib/libcm256cc.so` to the cmake commands. -Note that this plugin does not require any of the hardware support libraries nor the libusb library. It is always available in the list of devices as `SDRdaemonFEC[0]` even if no physical device is connected. +Note that this plugin does not require any of the hardware support libraries nor the libusb library. It is always available in the list of devices as `SDRdaemonSink[0]` even if no physical device is connected.

Channel plugins with special conditions

diff --git a/doc/img/SDRdaemonFEC_plugin.png b/doc/img/SDRdaemonFEC_plugin.png deleted file mode 100644 index 5e305c216c3874552cd7f85d2a8e8215bf3af514..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33004 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 aOI|2BwWrsMu^qUmgz3!LhDioXcK!$IJAVQI diff --git a/doc/img/SDRdaemonFEC_plugin_01.png b/doc/img/SDRdaemonFEC_plugin_01.png deleted file mode 100644 index 76d73e4be6bab045c7cf6ea51c6933cabf3ceddb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7160 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 diff --git a/doc/img/SDRdaemonFEC_plugin_04.png b/doc/img/SDRdaemonFEC_plugin_04.png deleted file mode 100644 index 06725631175bfd97f6805670063acc92d51af286..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6879 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 diff --git a/doc/img/SDRdaemonSource_plugin.png b/doc/img/SDRdaemonSource_plugin.png new file mode 100644 index 0000000000000000000000000000000000000000..f435841f666d75b027df1f109e784c10347a3410 GIT binary patch literal 36683 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 literal 0 HcmV?d00001 diff --git a/doc/img/SDRdaemonSource_plugin_01.png b/doc/img/SDRdaemonSource_plugin_01.png new file mode 100644 index 0000000000000000000000000000000000000000..9005e1aa40b342f57eb39f5b214e66b399c2cf56 GIT binary patch literal 8395 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 literal 0 HcmV?d00001 diff --git a/doc/img/SDRdaemonSource_plugin_02.png b/doc/img/SDRdaemonSource_plugin_02.png new file mode 100644 index 0000000000000000000000000000000000000000..a9b63f0769acf9149892925ca125db32e58b57f5 GIT binary patch literal 5841 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 literal 0 HcmV?d00001 diff --git a/doc/img/SDRdaemonSource_plugin_04.png b/doc/img/SDRdaemonSource_plugin_04.png new file mode 100644 index 0000000000000000000000000000000000000000..8068428195089e0661846bda46dde4ee5801c647 GIT binary patch literal 8841 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 W$xY)NchDh%B>q80wCKII&wl{uFrEGY literal 0 HcmV?d00001 diff --git a/doc/img/SDRdaemonSource_plugin_05.png b/doc/img/SDRdaemonSource_plugin_05.png new file mode 100644 index 0000000000000000000000000000000000000000..5a07c3a821be344d95e3d617703dd2d90ec4c242 GIT binary patch literal 5983 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: Common stream parameters -![SDR Daemon FEC stream GUI](../../../doc/img/SDRdaemonFEC_plugin_01.png) +![SDR Daemon source input stream GUI](../../../doc/img/SDRdaemonSource_plugin_01.png)

1.1: Frequency

diff --git a/plugins/samplesource/hackrfinput/readme.md b/plugins/samplesource/hackrfinput/readme.md index f37510021..c41cc758d 100644 --- a/plugins/samplesource/hackrfinput/readme.md +++ b/plugins/samplesource/hackrfinput/readme.md @@ -16,7 +16,7 @@ The HackRF Host library is also provided by many Linux distributions and is buil

1: Common stream parameters

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

1.1: Frequency

diff --git a/plugins/samplesource/limesdrinput/readme.md b/plugins/samplesource/limesdrinput/readme.md index 7bf31917d..b54aed1ac 100644 --- a/plugins/samplesource/limesdrinput/readme.md +++ b/plugins/samplesource/limesdrinput/readme.md @@ -35,7 +35,7 @@ Then add the following defines on `cmake` command line:

1: Common stream parameters

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

1.1: Frequency

diff --git a/plugins/samplesource/rtlsdr/readme.md b/plugins/samplesource/rtlsdr/readme.md index 5b307d201..144e2447c 100644 --- a/plugins/samplesource/rtlsdr/readme.md +++ b/plugins/samplesource/rtlsdr/readme.md @@ -16,7 +16,7 @@ If you want to benefit from the direct sampling you will have to compile and ins

1: Common stream parameters

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

1.1: Frequency

diff --git a/plugins/samplesource/sdrdaemonsource/readme.md b/plugins/samplesource/sdrdaemonsource/readme.md index 66b599e76..bc7e957a4 100644 --- a/plugins/samplesource/sdrdaemonsource/readme.md +++ b/plugins/samplesource/sdrdaemonsource/readme.md @@ -2,23 +2,23 @@

Introduction

-This input sample source plugin gets its samples over tbe network from a SDRdaemon server using UDP connection. SDRdaemon refers to the SDRdaemon utility found in [this](https://github.com/f4exb/sdrdaemon) Github repostory. This plugin is specialized in the version of SDRdaemon that sends data with FEC (Forward Erasure Correction). When FEC is used the format of the data is completely different from what it is without FEC. +This input sample source plugin gets its samples over tbe network from a SDRdaemon receiver server using UDP connection. SDRdaemon refers to the SDRdaemon utility `sdrdaemonrx`found in [this](https://github.com/f4exb/sdrdaemon) Github repostory. -The addition of FEC blocks and the sequence tagging of frames and blocks make the transmission more robust. While it is unlikely to be beneficial with copper or fiber links it can improve links over WiFi particularly on distant links. +Forward Error Correction with a Cauchy MDS block erasure codec is used to prevent block loss. This can make the UDP transmission more robust particularly over WiFi links. -Please note that there is no provision for handling out of sync UDP blocks. It is assumed that frames and block numbers always increase with possible blocks missing. +Please note that there is no provision for handling out of sync UDP blocks. It is assumed that frames and block numbers always increase with possible blocks missing. Such out of sync situation has never been encountered in practice.

Build

-The plugin will be built only if the [CM256cc library](https://github.com/f4exb/cm256cc) is installed in your system. You will then have to specify the include and library paths on the cmake command line. Say if you install cm256cc in `/opt/install/cm256cc` you will have to add `-DCM256CC_INCLUDE_DIR=/opt/install/cm256cc/include/cm256cc -DCM256CC_LIBRARIES=/opt/install/cm256cc/lib/libcm256cc.so` to the cmake commands. +The plugin will be built only if `libnanomsg` and the [CM256cc library](https://github.com/f4exb/cm256cc) is installed in your system. `libnanomasg` is present in most distributions and the dev version can be installed using the package manager. For CM256cc library you will have to specify the include and library paths on the cmake command line. Say if you install cm256cc in `/opt/install/cm256cc` you will have to add `-DCM256CC_INCLUDE_DIR=/opt/install/cm256cc/include/cm256cc -DCM256CC_LIBRARIES=/opt/install/cm256cc/lib/libcm256cc.so` to the cmake commands.

Interface

-![SDR Daemon with FEC plugin GUI](../../../doc/img/SDRdaemonFEC_plugin.png) +![SDR Daemon source input plugin GUI](../../../doc/img/SDRdaemonSource_plugin.png)

1: Common stream parameters

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

1.1: Frequency

@@ -39,18 +39,35 @@ Record I/Q stresm toggle button Stream I/Q sample rate in kS/s -

2: Auto correction options

+

2: Auto correction options and stream status

+ +![SDR Daemon source input AC and stream1 GUI](../../../doc/img/SDRdaemonSource_plugin_02.png) + +

2.1: Auto correction options

These buttons control the local DSP auto correction options: - **DC**: auto remove DC component - **IQ**: auto make I/Q balance -

3: Date/time

+

2.2: Receive buffer length

+ +This is the main buffer (writes from UDP / reads from DSP engine) length in units of time (seconds). As read and write pointers are normally about half the buffer apart the nominal delay introduced by the buffer is the half of this value. + +

2.3: Main buffer R/W pointers positions

+ +Read and write pointers should always be a half buffer distance buffer apart. This is the difference in percent of the main buffer size from this ideal position. + + - When positive it means that the read pointer is leading + - When negative it means that the write pointer is leading (read is lagging) + +This corresponds to the value shown in the gauges above (9) + +

2.4: Date/time

This is the current timestamp of the block of data sent from the receiver. It is refreshed about every second. The plugin tries to take into account the buffer that is used between the data received from the network and the data effectively used by the system however this may not be extremely accurate. It is based on the timestamps sent from the SDRdaemon utility at the other hand that does not take into account its own buffers. -

9: Main buffer R/W pointers gauge

+

3: Main buffer R/W pointers gauge

There are two gauges separated by a dot in the center. Ideally these gauges should not display any value thus read and write pointers are always half a buffer apart. However due to the fact that a whole frame is reconstructed at once up to ~10% variation is normal and should appear on the left gauge (write leads). @@ -59,88 +76,104 @@ There are two gauges separated by a dot in the center. Ideally these gauges shou The system tries to compensate read / write unbalance however at start or when a large stream distruption has occured a delay of a few tens of seconds is necessary before read / write reaches equilibrium. -

4: Stream status and sizes

+

4: Forward Error Correction setting and status

-![SDR Daemon FEC status1 GUI](../../../doc/img/SDRdaemonFEC_plugin_04.png) +![SDR Daemon source input FEC GUI](../../../doc/img/SDRdaemonSource_plugin_04.png) -

4.1: Minimum total number of blocks per frame

+

4.1: Desired number of FEC blocks per frame

-This is the minimum total number of blocks per frame during the last polling period. If all blocks were received for all frames then this number is the nominal number of original blocks plus FEC blocks and the background lits in green. +This is the number of FEC blocks per frame set by the user. A frame consists of 128 data blocks (1 meta data block followed by 127 I/Q data blocks) and a variable number of FEC blocks used to protect the UDP transmission with a Cauchy MDS block erasure correction. -

4.2: Average total number of blocks received by frame

+Using the Cauchy MDS block erasure correction ensures that if at least the number of data blocks (128) is received per complete frame then all lost blocks in any position can be restored. For example if 8 FEC blocks are used then 136 blocks are transmitted per frame. If only 130 blocks (128 or greater) are received then data can be recovered. If only 127 blocks (or less) are received then none of the lost blocks can be recovered. -Moving average over the last 10 frames of the total number of blocks received per frame. +

4.2: Total number of frames and number of FEC blocks

+ +This is the total number of frames and number of FEC blocks separated by a slash '/' as sent in the meta data block thus acknowledged by the distant server. When you set the number of FEC blocks with (4.1) the effect may not be immediate and this information can be used to monitor when it gets effectively set in the distant server.

4.3: Stream status

The color of the icon indicates stream status: - - Green: all original blocks have been received for all frames during the last polling timeframe - - Pink: some original blocks were reconstructed from FEC blocks for some frames during the last polling timeframe - - No color: some original blocks were definitely lost for some frames during the last polling timeframe + - Green: all original blocks have been received for all frames during the last polling timeframe (ex: 136) + - No color: some original blocks were reconstructed from FEC blocks for some frames during the last polling timeframe (ex: between 128 and 135) + - Red: some original blocks were definitely lost for some frames during the last polling timeframe (ex: less than 128) -

4.4: Minimum number of original blocks received by frame

+

4.4: Minimum total number of blocks per frame

-Minimum number of original blocks received by frame during the last polling timeframe. Ideally this should match the nominal number of original blocks per frame which is 128 (green lock icon). Anything below the nominal number of original blocks minus FEC blocks means data loss (lock icon off). In betweem FEC is used to recover lost blocks (pink lock icon) +This is the minimum total number of blocks per frame during the last polling period. If all blocks were received for all frames then this number is the nominal number of original blocks plus FEC blocks (Green lock icon). In our example this is 128+8 = 136. + +If this number falls below 128 then some blocks are definitely lost and the lock lits in red.

4.5: Maximum number of FEC blocks used by frame

-Maximum number of FEC blocks used for original blocks recovery during the last polling timeframe. Ideally this should be 0 when no blocks are lost but the system is able to correct lost blocks up to the nominal number of FEC blocks (Pink lock icon). +Maximum number of FEC blocks used for original blocks recovery during the last polling timeframe. Ideally this should be 0 when no blocks are lost but the system is able to correct lost blocks up to the nominal number of FEC blocks (Neutral lock icon). -

4.6: Average number of FEC blocks used for original blocks recovery by frame

+

4.6: Reset events counters

-Moving average over the last 10 frames of the number of FEC blocks used for original blocks recovery per frame. +This push button can be used to reset the events counters (4.7 and 4.8) and reset the event counts timer (4.9) -

4.7: Receive buffer length

+

4.6: Unrecoverable error events counter

-This is the main buffer (writes from UDP / reads from DSP engine) length in units of time (seconds). As read and write pointers are normally about half the buffer apart the nominal delay introduced by the buffer is the half of this value. +This counter counts the unrecoverable error conditions found (i.e. 4.4 lower than 128) since the last counters reset. -

4.8: FEC nominal values

+

4.6: Recoverable error events counter

-This is the nominal (Tx side) total number of blocks sent by frame (original blocks plus FEC blocks) and the nominal number of FEC blocks sent by frame separated by a slash (/) +This counter counts the unrecoverable error conditions found (i.e. 4.4 between 128 and 128 plus the number of FEC blocks) since the last counters reset. -

4.9: Main buffer R/W pointers positions

+

4.6: events counters timer

-Read and write pointers should always be a half buffer distance buffer apart. This is the difference in percent of the main buffer size from this ideal position. - - - When positive it means that the read pointer is leading - - When negative it means that the write pointer is leading (read is lagging) - -This corresponds to the value shown in the gauges above (9) +This hh:mm:ss time display shows the time since the reset evetnts counters button (4.6) was pushed.

5: Network parameters

-![SDR Daemon status3 GUI](../../../doc/img/SDRdaemon_plugin_06.png) +![SDR Daemon status3 GUI](../../../doc/img/SDRdaemonSource_plugin_05.png)

5.1: Local interface IP address

-Address of the network interface on the local (your) machine to which the SDRdaemon server sends samples to. +Address of the network interface on the local (your) machine to which the SDRdaemon Rx server sends samples to.

5.2: Local data port

-UDP port on the local (your) machine to which the SDRdaemon server sends samples to. +UDP port on the local (your) machine to which the SDRdaemon Rx server sends samples to.

5.3 Distant configuration port

-TCP port on the distant machine hosting the SDRdaemon instance to send control messages to. The IP address of the host where the SDRdaemon instance runs is guessed from the address sending the data blocks hence it does not need to be specified. +TCP port on the distant machine hosting the SDRdaemon Rx instance to send control messages to. The IP address of the host where the SDRdaemon instance runs is guessed from the address sending the data blocks hence the distant address does not need to be specified.

5.4: Validation button

-Whenever the address (6.1), data port (6.2) or configuration port (6.3) change this button is enabled to validate the new values. +When the return key is hit within the address (5.1), data port (5.2) or configuration port (5.3) boxes the changes are effective immediately. You can also use this button to set again these values. -

6: Configuration parameters

+

6: Desired center frequency

-![SDR Daemon status4 GUI](../../../doc/img/SDRdaemon_plugin_07.png) +This is the center frequency sent to the distant device. This becomes reflected in the main frequency dial (1.1) only when it gets acknowledged by the distant server and this frequency is sent back in the frames meta data. -

6.1: Center frequency in kHz

+Use the wheels to adjust the frequency. 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. The minimum value is 0 Hz and the maximum value is 9.9 GHz. 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. -This is the center frequency in kHz to which the hardware attached to the SDRdaemon instance will get tuned to. +

7: Delay between UDP blocks transmission

-

6.2: Decimation factor

+This sets the minimum delay between transmission of an UDP block (send datagram) and the next. This allows throttling of the UDP transmission that is otherwise uncontrolled and causes network congestion. -These are successive powers of two from 0 (1) to 6 (64). The SDRdaemon instance will decimate the samples coming from the attached hardware by this value. Thus the sample rate (see 7.5) will be decimated by the same value before it is sent over through the network. +The value is a percentage of the nominal time it takes to process a block of samples corresponding to one UDP block (512 bytes). This is calculated as follows: -

6.3: Center frequency position

+ - Sample rate on the network: _SR_ + - Delay percentage: _d_ + - Number of FEC blocks: _F_ + - There are 127 blocks of I/Q data per frame (1 meta block for 128 blocks) and each I/Q data block of 512 bytes (128 samples) has a 4 bytes header (1 sample) thus there are 127 samples remaining effectively. This gives the constant 127*127 = 16219 samples per frame in the formula + +Formula: ((127 * 127) * _d_ / _SR_) / (128 + _F_) + +

8: Desired distant device sample rate

+ +This is the device sample rate sent to the distant device. It will be divided in the distant server by the decimation factor set with (9) to give the actual sample rate over the network. This becomes effective and displayed in (1.4) only when it gets acknowledged by the distant server and this sample rate is sent back in the frames meta data. + +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. The minimum value is 32 kS/s and the maximum value is 9.9 MS/s. 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. + +

9: Desired distant decimation factor

+ +This is the decimation factor to be set in the distant server downsampler. The hardware device sample rate is divided by this factor before the I/Q blocks are sent over the network. The actual network sample rate becomes effective and displayed in (1.4) only when it gets acknowledged by the distant server and this sample rate is sent back in the frames meta data. + +

10: Center frequency position

The center frequency in the passband wil be set either: @@ -148,16 +181,10 @@ The center frequency in the passband wil be set either: - above the local oscillator (NCO) or supradyne. Actually +1/4th the bandwidth. - centered on the local oscillator or zero IF. -

6.4: Send data to the distant SDRdaemon instance

- -Whenever any of the parameters change this button gets enabled. When clicked a message is sent on the configuration port of the distant machine to which the SDRdaemon listens for instructions. Leave time for the buffering system to stabilize to get the samples flow through normally. - -

6.5: Sample rate in kS/s

- -The sample rate of the hardware device attached to the SDRdaemon instance will be set to this value in kS/s. - -

6.6: Other parameters hardware specific

+

11: Other parameters hardware specific

These are the parameters that are specific to the hardware attached to the distant SDRdaemon instance. You have to know which device is attached to send the proper parameters. Please refer to the SDRdaemon documentation or its line help to get information on these parameters. -In addition you can specify the inter-block transmission delay (txdelay) and number of FEC blocks per frame (fecblk). \ No newline at end of file +

12: Send data to the distant SDRdaemon Rx instance

+ +When any of the parameters change they get immediately transmitted to the distant server over the TCP link. You can however use this button to send again the complete configuration. This is handy if for some reason you are unsure of the parameters set in the distant server.