Difference between revisions of "SDR Setup"
(Add more stuff in gr-satnogs and satnogs-flowgraphs sections) (Tag: Visual edit) |
(Continue with the Soapy workflow) |
||
Line 4: | Line 4: | ||
Each ground station is equipped with an SDR device. | Each ground station is equipped with an SDR device. | ||
Through the [https://github.com/pothosware/SoapySDR/wiki SoapySDR] library and the | Through the [https://github.com/pothosware/SoapySDR/wiki SoapySDR] library and the | ||
− | [[File:Sdr-arch.png| | + | [[File:Sdr-arch.png|center|thumb|SatNOGS SDR frontend architecture]] |
− | |||
===gr-soapy=== | ===gr-soapy=== | ||
The [https://gitlab.com/librespacefoundation/gr-soapy gr-soapy] is a GNU Radio module that interfaces with the [https://github.com/pothosware/SoapySDR/wiki SoapySDR], a vendor neutral and platform independent SDR support library. | The [https://gitlab.com/librespacefoundation/gr-soapy gr-soapy] is a GNU Radio module that interfaces with the [https://github.com/pothosware/SoapySDR/wiki SoapySDR], a vendor neutral and platform independent SDR support library. | ||
− | The goal of this module is to provide a unified way of signal reception through a wide range of different SDR devices, while at the same time allowing full parameterization of the device specific capabilities. [https://gitlab.com/librespacefoundation/gr-soapy gr-soapy] is responsible for setting the proper sampling rate, configure the available gain stages of the device and apply any kind of device specific configuration. It provides a source block for signal reception and a sink block for signal transmission. | + | The goal of this module is to provide a unified way of signal reception through a wide range of different SDR devices, while at the same time allowing full parameterization of the device specific capabilities. |
− | [[File:Soapy source0.png|thumb]] | + | [https://gitlab.com/librespacefoundation/gr-soapy gr-soapy] is responsible for setting the proper sampling rate, configure the available gain stages of the device and apply any kind of device specific configuration. |
− | [[File:Soapy source1.png|thumb]] | + | It provides a source block for signal reception and a sink block for signal transmission. |
− | + | [[File:Soapy source0.png|center|thumb|Soapy Source block General Tab]] | |
− | + | [[File:Soapy source1.png|center|thumb|Soapy Source block RF Tab]] | |
Pre-built packages for a wide range of Soapy modules, as well as the Soapy core library and the gr-soapy are available for some distributions (including latest Raspbian) at [https://build.opensuse.org/project/subprojects/home:librespace openSUSE build service]. | Pre-built packages for a wide range of Soapy modules, as well as the Soapy core library and the gr-soapy are available for some distributions (including latest Raspbian) at [https://build.opensuse.org/project/subprojects/home:librespace openSUSE build service]. | ||
===gr-satnogs=== | ===gr-satnogs=== | ||
− | The [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs gr-satnogs] is the GNU Radio module providing all the necessary DSP blocks required to demodulate, synchronize and decode satellite frames. It also provides blocks for debugging and experimenting with known satellite telecommunication schemes. For adding support for a new satellite, this is the first project that you have to dig in. [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs gr-satnogs] tries to provide a unified decoder API for any kind of digital system, by properly extending a base decoder class. For more information refer to the [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs#development-guide | + | The [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs gr-satnogs] is the GNU Radio module providing all the necessary DSP blocks required to demodulate, synchronize and decode satellite frames. |
+ | It also provides blocks for debugging and experimenting with known satellite telecommunication schemes. | ||
+ | For adding support for a new satellite, this is the first project that you have to dig in. | ||
+ | [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs gr-satnogs] tries to provide a unified decoder API for any kind of digital system, by properly extending a base decoder class. | ||
+ | For more information refer to the [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs#development-guide Development Guide]. | ||
Pre-built packages are available for some distributions (including latest Raspbian) at [https://build.opensuse.org/project/subprojects/home:librespace openSUSE build service]. | Pre-built packages are available for some distributions (including latest Raspbian) at [https://build.opensuse.org/project/subprojects/home:librespace openSUSE build service]. | ||
===satnogs-flowgraphs=== | ===satnogs-flowgraphs=== | ||
− | The [https://gitlab.com/librespacefoundation/satnogs/satnogs-flowgraphs satnogs-flowgrapgs] provides a set of GNU Radio flowgraphs utilizing the GNU Radio blocks and those provided by [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs gr-satnogs]. In an attempt to keep the visual programming language of GNU Radio, all flowgraphs are based on the GNU Radio Companion, the graphical interface of GNU Radio. This allows users without programming background skills to follow the logic more easily. The integrated build system, uses the GNU Radio compiler (grcc) to generate python executable scripts from the visual representation of the flowgraph. | + | The [https://gitlab.com/librespacefoundation/satnogs/satnogs-flowgraphs satnogs-flowgrapgs] provides a set of GNU Radio flowgraphs utilizing the GNU Radio blocks and those provided by [https://gitlab.com/librespacefoundation/satnogs/gr-satnogs gr-satnogs]. |
− | [[File:Flowgraph.png|thumb]] | + | In an attempt to keep the visual programming language of GNU Radio, all flowgraphs are based on the GNU Radio Companion, the graphical interface of GNU Radio. |
+ | This allows users without programming background skills to follow the logic more easily. | ||
+ | The integrated build system, uses the GNU Radio compiler (grcc) to generate python executable scripts from the visual representation of the flowgraph. | ||
+ | [[File:Flowgraph.png|center|thumb|An FSK/MSK AX.25 decoder flowgraph]] | ||
+ | |||
Pre-built packages are available for some distributions (including latest Raspbian) at [https://build.opensuse.org/project/subprojects/home:librespace openSUSE build service]. | Pre-built packages are available for some distributions (including latest Raspbian) at [https://build.opensuse.org/project/subprojects/home:librespace openSUSE build service]. | ||
− | == | + | ==Get information about your SDR Setup== |
− | As mentioned in the previous | + | === SoapySDR workflow === |
+ | As mentioned in the previous sections, SatNOGS uses the gr-soapy and the SoapySDR library to access the SDR device. | ||
+ | SoapySDR uses a plug-in architecture. | ||
+ | For every device family, Soapy uses a corresponding module that is responsible for interfacing with the native library of the device and implement the SoapySDR abstraction layer. | ||
+ | {{Warning|It is mandatory that you have installed the SoapySDR module for your device in order SoapySDR to be able to access your hardware.}} | ||
+ | For getting information about the SoapySDR installation itself and the attached hardware capabilities SoapySDR provides the <code>SoapySDRUtil</code> command line utility. | ||
+ | |||
+ | To check the SoapySDR installation and the available modules use the <code>SoapySDRUtil --info</code>. | ||
+ | The output should be something like: | ||
+ | <pre> | ||
+ | $ SoapySDRUtil --info | ||
+ | ###################################################### | ||
+ | ## Soapy SDR -- the SDR abstraction library ## | ||
+ | ###################################################### | ||
+ | |||
+ | Lib Version: v0.7.1-3 | ||
+ | API Version: v0.7.1 | ||
+ | ABI Version: v0.7 | ||
+ | Install root: /usr | ||
+ | Search path: /usr/lib/arm-linux-gnueabihf/SoapySDR/modules0.7 | ||
+ | Search path: /usr/local/lib/arm-linux-gnueabihf/SoapySDR/modules0.7 (missing) | ||
+ | Search path: /usr/local/lib/SoapySDR/modules0.7 (missing) | ||
+ | Module found: /usr/lib/arm-linux-gnueabihf/SoapySDR/modules0.7/libHackRFSupport.so (0.3.3) | ||
+ | Module found: /usr/lib/arm-linux-gnueabihf/SoapySDR/modules0.7/libLMS7Support.so (20.01.0) | ||
+ | Module found: /usr/lib/arm-linux-gnueabihf/SoapySDR/modules0.7/libRedPitaya.so (0.1.1) | ||
+ | Module found: /usr/lib/arm-linux-gnueabihf/SoapySDR/modules0.7/libairspySupport.so (0.1.2) | ||
+ | Module found: /usr/lib/arm-linux-gnueabihf/SoapySDR/modules0.7/libaudioSupport.so (0.1.1) | ||
+ | Module found: /usr/lib/arm-linux-gnueabihf/SoapySDR/modules0.7/libbladeRFSupport.so (0.4.1) | ||
+ | Module found: /usr/lib/arm-linux-gnueabihf/SoapySDR/modules0.7/libosmosdrSupport.so (0.2.5) | ||
+ | Module found: /usr/lib/arm-linux-gnueabihf/SoapySDR/modules0.7/libremoteSupport.so (0.5.1) | ||
+ | Module found: /usr/lib/arm-linux-gnueabihf/SoapySDR/modules0.7/librtlsdrSupport.so (0.3.0) | ||
+ | Module found: /usr/lib/arm-linux-gnueabihf/SoapySDR/modules0.7/libuhdSupport.so (0.3.6) | ||
+ | Available factories... airspy, audio, bladerf, hackrf, lime, osmosdr, redpitaya, remote, rtlsdr, uhd | ||
+ | Available converters... | ||
+ | - CF32 -> [CF32, CS16, CS8, CU16, CU8] | ||
+ | - CS16 -> [CF32, CS16, CS8, CU16, CU8] | ||
+ | - CS32 -> [CS32] | ||
+ | - CS8 -> [CF32, CS16, CS8, CU16, CU8] | ||
+ | - CU16 -> [CF32, CS16, CS8] | ||
+ | - CU8 -> [CF32, CS16, CS8] | ||
+ | - F32 -> [F32, S16, S8, U16, U8] | ||
+ | - S16 -> [F32, S16, S8, U16, U8] | ||
+ | - S32 -> [S32] | ||
+ | - S8 -> [F32, S16, S8, U16, U8] | ||
+ | - U16 -> [F32, S16, S8] | ||
+ | - U8 -> [F32, S16, S8] | ||
+ | </pre> | ||
+ | |||
+ | In order SoapySDR and gr-soapy to be able to access your hardware, the list of the available <code>factories</code> should contain the target device family. | ||
+ | |||
+ | {{Message|For all the available SoapySDR modules please visit https://github.com/pothosware/SoapySDR/wiki/DriverGuide#modules }} | ||
+ | |||
+ | The next step is to identify if SoapySDR have access to the attached SDR devices. | ||
+ | This can be perfomed using the <code>SoapySDRUtil --find</code> command. | ||
+ | For example: | ||
+ | <pre> | ||
+ | $ SoapySDRUtil --find | ||
+ | ###################################################### | ||
+ | ## Soapy SDR -- the SDR abstraction library ## | ||
+ | ###################################################### | ||
+ | |||
+ | Found Rafael Micro R820T tuner | ||
+ | Found device 0 | ||
+ | available = Yes | ||
+ | driver = rtlsdr | ||
+ | label = Generic RTL2832U OEM :: 00000001 | ||
+ | manufacturer = Realtek | ||
+ | product = RTL2838UHIDIR | ||
+ | rtl = 0 | ||
+ | serial = 00000001 | ||
+ | tuner = Rafael Micro R820T | ||
+ | |||
+ | Found device 1 | ||
+ | addr = 24607:1027 | ||
+ | driver = lime | ||
+ | label = LimeSDR Mini [USB 2.0] 1D42574F558C9F | ||
+ | media = USB 2.0 | ||
+ | module = FT601 | ||
+ | name = LimeSDR Mini | ||
+ | serial = 1D42574F558C9F | ||
+ | </pre> | ||
+ | |||
+ | {{Warning|If the device cannot be found, the corresponding module is already installed and available factories list contains the device factory, consider the permissions of the user for the particular SDR device}} |
Revision as of 11:31, 19 March 2020
Contents
Introduction
SatNOGS uses three different software packages for signal reception, demodulation and decoding of satellite transmissions. Each ground station is equipped with an SDR device. Through the SoapySDR library and the
gr-soapy
The gr-soapy is a GNU Radio module that interfaces with the SoapySDR, a vendor neutral and platform independent SDR support library.
The goal of this module is to provide a unified way of signal reception through a wide range of different SDR devices, while at the same time allowing full parameterization of the device specific capabilities. gr-soapy is responsible for setting the proper sampling rate, configure the available gain stages of the device and apply any kind of device specific configuration. It provides a source block for signal reception and a sink block for signal transmission.
Pre-built packages for a wide range of Soapy modules, as well as the Soapy core library and the gr-soapy are available for some distributions (including latest Raspbian) at openSUSE build service.
gr-satnogs
The gr-satnogs is the GNU Radio module providing all the necessary DSP blocks required to demodulate, synchronize and decode satellite frames. It also provides blocks for debugging and experimenting with known satellite telecommunication schemes. For adding support for a new satellite, this is the first project that you have to dig in. gr-satnogs tries to provide a unified decoder API for any kind of digital system, by properly extending a base decoder class. For more information refer to the Development Guide.
Pre-built packages are available for some distributions (including latest Raspbian) at openSUSE build service.
satnogs-flowgraphs
The satnogs-flowgrapgs provides a set of GNU Radio flowgraphs utilizing the GNU Radio blocks and those provided by gr-satnogs. In an attempt to keep the visual programming language of GNU Radio, all flowgraphs are based on the GNU Radio Companion, the graphical interface of GNU Radio. This allows users without programming background skills to follow the logic more easily. The integrated build system, uses the GNU Radio compiler (grcc) to generate python executable scripts from the visual representation of the flowgraph.
Pre-built packages are available for some distributions (including latest Raspbian) at openSUSE build service.
Get information about your SDR Setup
SoapySDR workflow
As mentioned in the previous sections, SatNOGS uses the gr-soapy and the SoapySDR library to access the SDR device. SoapySDR uses a plug-in architecture. For every device family, Soapy uses a corresponding module that is responsible for interfacing with the native library of the device and implement the SoapySDR abstraction layer.
For getting information about the SoapySDR installation itself and the attached hardware capabilities SoapySDR provides the SoapySDRUtil
command line utility.
To check the SoapySDR installation and the available modules use the SoapySDRUtil --info
.
The output should be something like:
$ SoapySDRUtil --info ###################################################### ## Soapy SDR -- the SDR abstraction library ## ###################################################### Lib Version: v0.7.1-3 API Version: v0.7.1 ABI Version: v0.7 Install root: /usr Search path: /usr/lib/arm-linux-gnueabihf/SoapySDR/modules0.7 Search path: /usr/local/lib/arm-linux-gnueabihf/SoapySDR/modules0.7 (missing) Search path: /usr/local/lib/SoapySDR/modules0.7 (missing) Module found: /usr/lib/arm-linux-gnueabihf/SoapySDR/modules0.7/libHackRFSupport.so (0.3.3) Module found: /usr/lib/arm-linux-gnueabihf/SoapySDR/modules0.7/libLMS7Support.so (20.01.0) Module found: /usr/lib/arm-linux-gnueabihf/SoapySDR/modules0.7/libRedPitaya.so (0.1.1) Module found: /usr/lib/arm-linux-gnueabihf/SoapySDR/modules0.7/libairspySupport.so (0.1.2) Module found: /usr/lib/arm-linux-gnueabihf/SoapySDR/modules0.7/libaudioSupport.so (0.1.1) Module found: /usr/lib/arm-linux-gnueabihf/SoapySDR/modules0.7/libbladeRFSupport.so (0.4.1) Module found: /usr/lib/arm-linux-gnueabihf/SoapySDR/modules0.7/libosmosdrSupport.so (0.2.5) Module found: /usr/lib/arm-linux-gnueabihf/SoapySDR/modules0.7/libremoteSupport.so (0.5.1) Module found: /usr/lib/arm-linux-gnueabihf/SoapySDR/modules0.7/librtlsdrSupport.so (0.3.0) Module found: /usr/lib/arm-linux-gnueabihf/SoapySDR/modules0.7/libuhdSupport.so (0.3.6) Available factories... airspy, audio, bladerf, hackrf, lime, osmosdr, redpitaya, remote, rtlsdr, uhd Available converters... - CF32 -> [CF32, CS16, CS8, CU16, CU8] - CS16 -> [CF32, CS16, CS8, CU16, CU8] - CS32 -> [CS32] - CS8 -> [CF32, CS16, CS8, CU16, CU8] - CU16 -> [CF32, CS16, CS8] - CU8 -> [CF32, CS16, CS8] - F32 -> [F32, S16, S8, U16, U8] - S16 -> [F32, S16, S8, U16, U8] - S32 -> [S32] - S8 -> [F32, S16, S8, U16, U8] - U16 -> [F32, S16, S8] - U8 -> [F32, S16, S8]
In order SoapySDR and gr-soapy to be able to access your hardware, the list of the available factories
should contain the target device family.
The next step is to identify if SoapySDR have access to the attached SDR devices.
This can be perfomed using the SoapySDRUtil --find
command.
For example:
$ SoapySDRUtil --find ###################################################### ## Soapy SDR -- the SDR abstraction library ## ###################################################### Found Rafael Micro R820T tuner Found device 0 available = Yes driver = rtlsdr label = Generic RTL2832U OEM :: 00000001 manufacturer = Realtek product = RTL2838UHIDIR rtl = 0 serial = 00000001 tuner = Rafael Micro R820T Found device 1 addr = 24607:1027 driver = lime label = LimeSDR Mini [USB 2.0] 1D42574F558C9F media = USB 2.0 module = FT601 name = LimeSDR Mini serial = 1D42574F558C9F