To verify your setup, plug a HF antenna and tune the AM broadcast band. You should get a view like this one:. When only one client is connected, full control center frequency, gain is granted. When there are more than one client connected, the center frequency of the device and the RF gain are locked.
The default settings allow using the server in the LAN with optimal latency. The bandwidth savings allows usage over the Internet, but still requires high speed connection. If you have many devices in the same server, you can have multiple configuration files and pass the right one as parameter to the executable. If the SpyVerter is used, the following parameters should be set in spyserver. First, make sure you are have the latest version of libairspy installed.
Download and extract the standard ARM package and run. What could go wrong in the Linux world? If the buffer becomes empty due to an interruption in the network the above logic is applied again - it is preferable to have fewer breaks like this. If using a wired connection you can probably drop the buffering down to ms if a lower latency is important. The default protocol is TCP, only use UDP in very challenging situations where TCP cannot stream smoothly, for example when there is a lot of audio stutter or the waterfall does not stream smoothly.
These problems are usually caused by wireless links, either a link to a remote location where the SDR is located or a Wi-Fi link to the computer where the console is running. If you do not receive data when UDP is enabled then either:. If UDP is active then statistics are shown:. Windows Firewall. Alternatively see this Microsoft article [ link ]. Router Configuration. In your router look for Port Forwarding, add an entry which forwards incoming UDP data on the selected port and forwards it to the computer where SDR Console is running.
It is very strongly recommended that you assign static addresses to the computers accessing the internet via the router. If you use SDR Console on more than one computer via the same router then you must select a unique UDP port for each computer and add a corresponding port forwarding entry. If your IP subnet is This can range from a sequential search over all the satellites' ID to other more efficient approaches. The Control Plane is in charge of creating a flowgraph according to the configuration and then managing the modules.
Configuration allows users to define in an easy way their own custom receiver by specifying the flowgraph type of signal source, number of channels, algorithms to be used for each channel and each module, strategies for satellite selection, type of output format, etc. Since it is difficult to foresee what future module implementations will be needed in terms of configuration, we used a very simple approach that can be extended without a major impact on the code. This can be achieved by simply mapping the names of the variables in the modules with the names of the parameters in the configuration.
Properties are passed around within the program using the ConfigurationInterface class. FileConfiguration reads the properties pairs of property name and value from a file and stores them internally. InMemoryConfiguration does not read from a file; it remains empty after instantiation and property values and names are set using the set property method.
Classes that need to read configuration parameters will receive instances of ConfigurationInterface from where they will fetch the values. For instance, parameters related to SignalSource should look like this:. The name of these parameters can be anything but one reserved word: implementation. This parameter indicates in its value the name of the class that has to be instantiated by the factory for that role.
Since the configuration is just a set of property names and values without any meaning or syntax, the system is very versatile and easily extendable. Adding new properties to the system only implies modifications in the classes that will make use of these properties.
In addition, the configuration files are not checked against any strict syntax so it is always in a correct status as long as it contains pairs of property names and values in the INI format. Hence, the application defines a simple accessor class to fetch the configuration pairs of values and passes them to a factory class called GNSSBlockFactory.
This factory decides, according to the configuration, which class needs to be instantiated and which parameters should be passed to the constructor. Hence, the factory encapsulates the complexity of blocks' instantiation. With that approach, adding a new block that requires new parameters will be as simple as adding the block class and modifying the factory to be able to instantiate it. This loose coupling between the blocks' implementations and the syntax of the configuration enables extending the application capacities to a high degree.
It also allows producing fully customized receivers, for instance a testbed for acquisition algorithms, and to place observers at any point of the receiver chain. More information can be found at the Control Plane page. A signal processing flow is constructed by creating a tree of hierarchical blocks, which at any level may also contain terminal nodes that actually implement signal processing functions.
It defines GNU Radio runtime functions used during the execution of the program: run , start , stop , wait , etc. It defines pure virtual methods, that are required to be implemented by a derived class. This hierarchy provides the definition of different algorithms and different implementations, which will be instantiated according to the configuration.
This strategy allows multiple implementations to share a common interface, achieving the objective of decoupling interfaces from implementations: it defines a family of algorithms, encapsulates each one, and makes them interchangeable. Hence, we let the algorithm vary independently of the program that uses it.
They are fundamental for handling sample streams in which samples are complex numbers with real and imaginary components of 8, 16, or 32 bits, common formats delivered by GNSS and generic SDR radio frequency front-ends. More information about the available processing blocks and their configuration parameters can be found at the Signal Processing Blocks documentation page. The inputs of a software receiver are the raw bits that come out from the front-end's analog-to-digital converter ADC.
Those bits can be read from a file stored in the hard disk or directly in real-time from a hardware device through USB or Ethernet buses. The Signal Source module is in charge of implementing the hardware driver, that is, the portion of the code that communicates with the RF front-end and receives the samples coming from the ADC.
This communication is usually performed through USB or Ethernet buses. Since real-time processing requires a highly optimized implementation of the whole receiver, this module also allows reading samples from a file stored in a hard disk, and thus processing without time constraints. This module also performs bit-depth adaptation, since most of the existing RF front-ends provide samples quantized with 2 or 3 bits, while operations inside the processor are performed on or bit words, depending on its architecture.
Although there are implementations of the most intensive computational processes mainly correlation that take advantage of specific data types and architectures for the sake of efficiency, the approach is processor-specific and hardly portable. We suggest keeping signal samples in standard data types and letting the compiler select the best library version implemented using SIMD or any other processor-specific technology of the required routines for a given processor.
The user can configure the receiver for reading from a file, setting in the configuration file the data file location, sample format, and the sampling frequency and intermediate frequency at what the signal was originally captured. In that case, change the corresponding line to:.
The two-bit values are assumed to have the following interpretation:. If the order is big-endian then the most significant two bits will form the first sample output.
Otherwise, the least significant two bits will be used. If the sample type is complex, then the samples are either stored in the order: real, imag, real, imag, If the shorts are big-endian then the 2nd byte in each short is output first. OsmoSDR is a small form-factor, inexpensive software defined radio project.
Note that not all the OsmoSDR-compatible devices can work as radio frequency front-ends for proper GNSS signal reception, please check the specifications.
For suitable RF front-ends, you can use:. In a terminal, type:. More documentation and examples are available at the Signal Source Blocks page. The signal conditioner is in charge of resampling the signal and delivering a reference sample rate to the downstream processing blocks, acting as a facade between the signal source and the synchronization channels, providing a simplified interface to the input signal.
In the case of multiband front-ends, this module would be in charge of providing a separated data stream for each band. If you need to adapt some aspect of your signal, you can enable the Signal Conditioner and configure three internal blocks: a data type adapter, an input signal, and a resampler.
More documentation at the Signal Conditioner Blocks page. This block changes the type of input data samples. More documentation at the Data Type Adapter Blocks page.
This block filters the input data. It can be combined with frequency translation for IF signals. More documentation at the Input Filter Blocks page. This block resamples the input data stream. More documentation at the Resampler Blocks page. A channel encapsulates all signal processing devoted to a single satellite. Thus, it is a large composite object which encapsulates the acquisition, tracking, and navigation data decoding modules.
Legal , Imprint. Version 3 is recommended. Version 3. While this support is being added the previous support using version 2. A range of bandwidths is available.
0コメント