From ed769006c2b431c3e5caf829dba7c771be17e054 Mon Sep 17 00:00:00 2001 From: f4exb Date: Wed, 4 Jan 2017 23:14:28 +0100 Subject: [PATCH] Added documentation on BladeRF input and output plugins and File Sink plugin --- doc/img/BladeRFInput_plugin.png | Bin 0 -> 24723 bytes doc/img/BladeRFOutput_plugin.png | Bin 0 -> 19434 bytes doc/img/FileSink_plugin.png | Bin 0 -> 15406 bytes plugins/samplesink/bladerfoutput/readme.md | 69 ++++++++++++++ plugins/samplesink/filesink/readme.md | 57 ++++++++++++ plugins/samplesource/bladerfinput/readme.md | 95 ++++++++++++++++++++ 6 files changed, 221 insertions(+) create mode 100644 doc/img/BladeRFInput_plugin.png create mode 100644 doc/img/BladeRFOutput_plugin.png create mode 100644 doc/img/FileSink_plugin.png create mode 100644 plugins/samplesink/bladerfoutput/readme.md create mode 100644 plugins/samplesink/filesink/readme.md create mode 100644 plugins/samplesource/bladerfinput/readme.md diff --git a/doc/img/BladeRFInput_plugin.png b/doc/img/BladeRFInput_plugin.png new file mode 100644 index 0000000000000000000000000000000000000000..5c84c32d3731edd887b5d9cf73b98588823fd6a8 GIT binary patch literal 24723 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

cO0?W>PGFn=atKs zPvP-8P=5vxKDkJk=3)M%2crop*Tt{hR_K?9`^zVEDgfYNJ~e+k{||0+D4nbJ%~@R_{X6U4hRb{ zc^J?D_)10FB1 zJv9IlAwnNtaUrsE%S#I_{l-%RiKDdGNB2l+$EX8uVFijU<)C!3*tz}Sn>TMzY5|){ zkY6B0fe@zsxjStS>Z1?~13--Fmc$^t`#hW<9E*JzePEiZwifb`hGea666n0As!77t zOUeRe@o1;mzR^+o8y7O*n=WfO5Y}{8+BHFd6oCwedbepyZ4?&+@P%5Zx zoGeVRU0#-zCBTBFf^upsY$Yd%6j*_FxbiC+^cZNQ0{4rIijsr^2vDf*!86{jU6QZ8 zKJjn#GZ=Int*q=0@F0)do-pwC9$B*MDB@`b&oVqV4*}65oyb5Ykycb}YHyDn9JGeh zq1ZbA!-o%#pFW++T~`KN4?QpVpoAN-yR~9mR5As~eT$^gko2tg=?}e@_IWe$tnpNg zGA(W8wPVcwJFp0nPFg4SYKbqX*&=9y2)VCS2Ly=Q*^^&G3NM=<-O2E-2{&fjPM?HrhaLNGYDTb zy(Z;cH>IoUUo{Q9qqOLn?5A^k9Kp%n^fT=bYTjn8%+8*3b(Mo1(MpNNzWI>`!vHd< zqrZPnoh~og)%l4p=+83~-6;JP-}rAmBy+CK%KS9OSWHDav$!CabIWl1gS~e8rAX@9 z$UL0SjGbqI@{r66Ld?uO6gGv~n@m&lLSt!sLFbRuaG~W_M>N1^R5j*M-Qt{%a`zxbPpt`>)>RA4B}lB>ca3`Nt5~BI!J&;&X+cZZM_8{|Z1E NoH5cbIBoyne*h4f%6|X= literal 0 HcmV?d00001 diff --git a/doc/img/BladeRFOutput_plugin.png b/doc/img/BladeRFOutput_plugin.png new file mode 100644 index 0000000000000000000000000000000000000000..3264435a080e1b3f099bcc1cf53766de92a5e428 GIT binary patch literal 19434 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 literal 0 HcmV?d00001 diff --git a/plugins/samplesink/bladerfoutput/readme.md b/plugins/samplesink/bladerfoutput/readme.md new file mode 100644 index 000000000..b04c63a53 --- /dev/null +++ b/plugins/samplesink/bladerfoutput/readme.md @@ -0,0 +1,69 @@ +

BladeRF output plugin

+ +

Introduction

+ +This output sample sink plugin sends its samples to a [BladeRF device](https://www.nuand.com/). + +

Build

+ +The plugin will be built only if the [BladeRF host library](https://github.com/Nuand/bladeRF) is installed in your system. If you build it from source and install it in a custom location say: `/opt/install/libbladeRF` you will have to add `-DLIBBLADERF_INCLUDE_DIR=/opt/install/libbladeRF/include -DLIBBLADERF_LIBRARIES=/opt/install/libbladeRF/lib/libbladeRF.so` to the cmake command line. + +The BladeRF Host library is also provided by many Linux distributions and is built in the SDRangel binary releases. + +

Interface

+ +![BladeRF output plugin GUI](../../../doc/img/BladeRFOutput_plugin.png) + +

1: Start/Stop

+ +Device start / stop button. + + - Blue triangle icon: device is ready and can be started + - Red square icon: device is running and can be stopped + - Magenta (or pink) square icon: an error occured + +

2: Baseband sample rate

+ +This is the baseband stream sample rate in kS/s before interpolation (4) to produce the final stream that is sent to the BladeRF device. Thus this is the device sample rate (6) divided by the interpolation factor (4). + +

3: Frequency

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

4: Interpolation factor

+ +The baseband stream is interpolated by this value before being sent to the BladeRF device. Possible values are: + + - **1**: no interpolation + - **2**: multiply sample rate by 2 + +Larger values introduce performance problems. + +

5: XB-200 add-on control

+ +This controls the optional XB-200 add-on when it is fitted to the BladeRF main board. These controls have no effect if the XB-200 board is absent. Options are: + + - **None**: XB-200 is ignored + - **Bypass**: XB-200 is passed through + - **Auto 1dB**: The 50, 144 and 220 MHz filters are switched on automatically according to the frequency of reception when it is within the -1 dB passband of the filters + - **Auto 3dB**: The 50, 144 and 220 MHz filters are switched on automatically according to the frequency of reception when it is within the -3 dB passband of the filters + - **Custom**: The signal is routed through a custom filter + - **50M**: The signal is routed through the 50 MHz filter + - **144M**: The signal is routed through the 144 MHz filter + - **222M**: The signal is routed through the 222 MHz filter + +

6: Device sample rate

+ +This is the BladeRF device DAC sample rate in kS/s. Possible values are: 1536, 1600, 2000, 2304, 2400, 3072, 3200, 4608, 4800, 6144, 7680, 9216, 9600, 10752, 12288, 18432, 19200, 24576, 30720, 36864, 39936 kS/s. + +

7: Tx filter bandwidth

+ +This is the Tx filter bandwidth in kHz in the LMS6002D device. Possible values are: 1500, 1750, 2500, 2750, 3000, 3840, 5000, 5500, 6000, 7000, 8750, 10000, 12000, 14000, 20000, 28000 kHz. + +

8: Variable gain amplifier #1 gain

+ +The VGA1 (relative) gain can be adjusted from -35 dB to -4 dB in 1 dB steps. The VGA1 is inside the LM6002D chip and is placed between the baseband filter and the RF mixer. + +

10: Variable gain amplifier #2 gain

+ +The VGA2 gain can be adjusted from 0 dB to 25 dB in 1 dB steps. The VGA2 is inside the LM6002D chip and is placed after the RF mixer. It can be considered as the PA (Power AMplifier). The maximum output power when both VGA1 and VGA2 are at their maximum is about 4 mW (6 dBm). \ No newline at end of file diff --git a/plugins/samplesink/filesink/readme.md b/plugins/samplesink/filesink/readme.md new file mode 100644 index 000000000..2d974ac3f --- /dev/null +++ b/plugins/samplesink/filesink/readme.md @@ -0,0 +1,57 @@ +

File sink plugin

+ +

Introduction

+ +This output sample sink plugin sends its samples to file in the SDRangel .sdriq format. + +The format is S16LE I/Q samples. Thus there are 4 bytes per sample. I and Q values are 16 bit signed integers. The file starts with a context header containing information about center frequency, sample rate and timestamp of the start of the recording. This header has a length which is a multiple of a sample size (normally 24 bytes thus 6 samples). Thus this file can be used as a raw I/Q file with S16LE samples tolerating a glitch at the start corresponding to the 6 "random" samples. For example in GNURadio you can simply specify your file source format as short complex. + +You can also zap the 24 bytes header with this Linux command: `tail -c +25 myfile.sdriq > myfile.raw` + +To convert in another format you may use the sox utility. For example to convert to 32 bit (float) complex samples do: `sox -r 48k −b 16 −e signed-integer -c 2 myfile.raw -e float -c 2 myfilec.raw` + +Note that you have to specify the sampling rate and use .raw for the file extensions. + +

Build

+ +The plugin is always built. + +

Interface

+ +![File sink plugin GUI](../../../doc/img/FileSink_plugin.png) + +

1: Start/Stop

+ +Device start / stop button. + + - Blue triangle icon: device is ready and can be started + - Red square icon: device is running and can be stopped + - Magenta (or pink) square icon: an error occured + +

2: File stream sample rate

+ +This is the file stream sample rate in kS/s after interpolation (4) from the baseband stream. Thus this is the sample rate (7) multiplied by the interpolation factor (6). + +

3: Frequency

+ +This is the center frequency in kHz that will be put in the file header. + +

4: Output file selection

+ +Use this file dialog to specify the output file. + +

5: File name

+ +This is the file path of the output file. + +

6: Interpolation factor

+ +The baseband stream is interpolated by this value before being written to file. It can vary in powers of two from 1 (no interpolation) to 64. + +

7: Baseband sample rate

+ +This is the baseband sample rate before interpolation in kS/s. Possible values are: 32, 48, 64, 72, 128, 192, 256, 288, 300, 384, 512, 1000 kS/s. + +

8: Time counter

+ +This is the recording time count in HH:MM:SS.SSS \ No newline at end of file diff --git a/plugins/samplesource/bladerfinput/readme.md b/plugins/samplesource/bladerfinput/readme.md new file mode 100644 index 000000000..2c178881b --- /dev/null +++ b/plugins/samplesource/bladerfinput/readme.md @@ -0,0 +1,95 @@ +

BladeRF input plugin

+ +

Introduction

+ +This input sample source plugin gets its samples from a [BladeRF device](https://www.nuand.com/). + +

Build

+ +The plugin will be built only if the [BladeRF host library](https://github.com/Nuand/bladeRF) is installed in your system. If you build it from source and install it in a custom location say: `/opt/install/libbladeRF` you will have to add `-DLIBBLADERF_INCLUDE_DIR=/opt/install/libbladeRF/include -DLIBBLADERF_LIBRARIES=/opt/install/libbladeRF/lib/libbladeRF.so` to the cmake command line. + +The BladeRF Host library is also provided by many Linux distributions and is built in the SDRangel binary releases. + +

Interface

+ +![BladeRF input plugin GUI](../../../doc/img/BladeRFInput_plugin.png) + +

1: Common stream parameters

+ +![SDR Daemon FEC stream GUI](../../../doc/img/SDRdaemonFEC_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 + +

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 sample rate (4) divided by the decimation factor (6). + +

2: Auto correction options

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

3: XB-200 add-on control

+ +This controls the optional XB-200 add-on when it is fitted to the BladeRF main board. These controls have no effect if the XB-200 board is absent. Options are: + + - **None**: XB-200 is ignored + - **Bypass**: XB-200 is passed through + - **Auto 1dB**: The 50, 144 and 220 MHz filters are switched on automatically according to the frequency of reception when it is within the -1 dB passband of the filters + - **Auto 3dB**: The 50, 144 and 220 MHz filters are switched on automatically according to the frequency of reception when it is within the -3 dB passband of the filters + - **Custom**: The signal is routed through a custom filter + - **50M**: The signal is routed through the 50 MHz filter + - **144M**: The signal is routed through the 144 MHz filter + - **222M**: The signal is routed through the 222 MHz filter + +

4: Device sample rate

+ +This is the BladeRF device ADC sample rate in kS/s. Possible values are: 1536, 1600, 2000, 2304, 2400, 3072, 3200, 4608, 4800, 6144, 7680, 9216, 9600, 10752, 12288, 18432, 19200, 24576, 30720, 36864, 39936 kS/s. + +

5: Rx filter bandwidth

+ +This is the Rx filter bandwidth in kHz in the LMS6002D device. Possible values are: 1500, 1750, 2500, 2750, 3000, 3840, 5000, 5500, 6000, 7000, 8750, 10000, 12000, 14000, 20000, 28000 kHz. + +

6: Decimation factor

+ +The I/Q stream from the BladeRF ADC is doensampled 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. + +

7: Baseband center frequency position relative the the BladeRF Rx center frequency

+ +Possible values are: + + - **Cen**: the decimation operation takes place around the BladeRF Rx center frequency + - **Inf**: the decimation operation takes place around the center of the lower half of the BladeRF Rx passband. + - **Sup**: the decimation operation takes place around the center of the upper half of the BladeRF Rx passband. + +

8: LNA gain

+ +This is the LNA gain in dB. LNA is inside the LM6000D chip and is placed before the RF mixer. Possible values are: + + - **0 dB**: no gain + - **3dB** + - **6dB** + +

9: Variable gain amplifier #1 gain

+ +The VGA1 gain can be adjusted from 5 dB to 30 dB in 1 dB steps. The VGA1 is inside the LM6002D chip and is placed between the RF mixer and the baseband filter. + +

10: Variable gain amplifier #2 gain

+ +The VGA2 gain can be adjusted from 0 dB to 30 dB in 3 dB steps. The VGA2 is inside the LM6002D chip and is placed between the baseband filter and the ADC. \ No newline at end of file