Re: Networked receiver plugin development

Edouard Griffiths

Hello Alex,

this looks interesting particularly the 3-15 GHz coverage. The device to host sample rate is indeed very very fast. I hope you have provisioned some hardware decimation in the FPGA because only very few computers will be able to digest the samples and as you said at full speed you are also very close to the 1 Gbit limit of the network connection. There is hardly any example of network connected hardware the very few are either low speed or hide the networking process inside the support library which is indeed an option to consider. Anyway using UDP or the network all support libraries hide the gory details of the connection so an abstraction layer could be what you need to provide to the client applications. So... these examples are:
  • Kiwi SDR: low speed (12kS/s) based on web sockets to connect to a distant Kiwi SDR server. Looks far from what you are looking for
  • Pluto SDR: the support library (libiio) hides the fact that the hardware is connected via USB or via Ethernet. This may be worth looking at in more details.
I have briefly described the general architecture in this post:,,,20,0,0,0::recentpostdate%2Fsticky,,,20,2,0,32984542

Any "samplesource" plugin could serve as an example. They are all based on the same principle but could work either with synchronous calls (the hardware interface returns the data directly) or asynchronous (you give to the interface the pointer to the callback function and this function is called whenever the interface decides to send samples). Most interfaces are synchronous but RTL-SDR for example is asynchronous. The call to the hardware interface is always located in the xxxThread class of the plugin.

Throughout the code there are also examples of communication with UDP using the Qt framework. However I am not sure the Qt framework supports extreme speeds.


Join to automatically receive all group messages.