Welcome to the new FlexRadio Community! Please review the new Community Rules and other important new Community information on the Message Board.
If you are having a problem, please refer to the product documentation or check the Help Center for known solutions.
Need technical support from FlexRadio? It's as simple as Creating a HelpDesk ticket.

flexlib-go - OpenSource Library, Cross-platform

Frank, HB9FXQ
Frank, HB9FXQ Member ✭✭
edited November 2019 in New Ideas
Invested quite some time to start my cross-platform flexlib in GO. Yes, I'm publishing my work - again - in an early stage and open sourced it, with good hope, that someone wants to join forces.

The Goal is to have all SmartSDR available features available in the API, with good performance and written with good quality. That should be a good foundation for any kind of Radio Client (e.g. QT QML, HTML5 - maybe Android)

A first util is "iq-transfer", it is based on parts of the library. A small tool  <3MB to capture / record / forward DAX IQ streams from a radio operated with SmartSDR. Especially interesting for Linux users. Currently tested on 64-bit Linux. Binaries are in the repo for all kind of platforms, also ARM for the RaspberryPi (untested).

Makes it possible to e.g. use Baudline, GNU-Radio, OpenWebRx etc.




  • Mike va3mw
    Mike va3mw Member ✭✭
    edited February 2018

    Matt showed me this yesterday.  That is ****'n awesome stuff!

    Mike va3mw

  • Ria
    Ria Member ✭✭✭
    edited November 2019
    Very nice!
  • Milen KG2C
    Milen KG2C Member
    edited January 2018
    Frank, that's awesome!
  • KC2QMA_John
    KC2QMA_John Member ✭✭
    edited July 2018
  • Mohamed Al-Bufalasa
    edited December 2018
    Hi Frank

    Finally somebody brave to think out of the box ( box here refer to smartSDR software).
    Let me start with a confession that I am not an expert in programming by any mean.
    I did play with Ubuntu Mint for a while just for curiosity. I manage to install GNU Radio after 2 days of constant fails due to all the overwhelming needs to know about Linux libraries and dependencies etc...

    I didnt manage to do anything else which understandable in my case.

    I did find that there is a Windows version of GNU radio companion.

    My intention is to find a way to forward DAX IQ output to GNU radio as you did in your GO project.

    The reason of that is to find an alternative to the rigid (take it or leave it ) atmosphere of smartsdr.
    I would love to experiment and learn how to use GNUradio and experiment with blocks etc..

    I know i can use GNU on windows with a cheap RTL-SDR dongle, but hey i own an expensive U$3K hardware to play with !

    Hope somebody will Jump and comment.
    Again Many thanks for Frank for sharing his brilliant work with us.

  • Frank, HB9FXQ
    Frank, HB9FXQ Member ✭✭
    edited October 2017
    If you have GNURadio running it's shound be an easy task:
    Download the example GNURadio project file from https://github.com/krippendorf/flexlib-go/blob/master/GRC/iq-transfer/iq-transfer-test.grc and open it with gnuradio.

    Download my pre compiled tool from https://github.com/krippendorf/flexlib-go/releases/download/0.001/iq-transfer_linux64 resp. https://github.com/krippendorf/flexlib-go/releases/download/0.001/iq-transfer_linux32 if you are on a 32bit system

    run it in a terminal with
    ./iq-transfer_linux64 --RADIO= --MYUDP=7799 --CH=1 --RATE=192 --FWD=

    in a console - remember to replace with your radio ip address.

  • Mohamed Al-Bufalasa
    edited October 2017
    Hello Frank

    Thanks for the directions.
    I would like to let you know that the iq-transfer tool works flawlessly on my machine
    Flex 6500, Lan, Ubuntu Mint 18.2  and GNUradio 3.7.10

    Now the hard part of learning ...
    Signal processing, use of filters
    Sampling ..... DSP..... etc

    I am taking it easy and build up my knowledge in this field.

    It would be great in you give some references and direction to material to read and learn.
    I know i may need a college degree in telecommunication engineering to master this art, but nevertheless i am a good student, I have already done an MBBS in medicine and surgery and BSc and a clinical fellowship all medical ! For me its never too late to study and learn.

    Thanks again for the help.

  • Frank, HB9FXQ
    Frank, HB9FXQ Member ✭✭
    edited October 2017
    That is great news! An online course I can really recommend is https://www.coursera.org/learn/dsp# by by École Polytechnique Fédérale de Lausanne. Lots of math, but you gain solid DSP knowledge by completing that course.

  • Colter McQuay
    Colter McQuay Member
    edited October 2017
    Hey Frank,

    Great work on the Go lib/utility.  I haven't had a chance to use it as I have been spending most of my time lately integrating the FlexLibMono library within a GNU Radio block.   So far it's working fairly well.  I've run into a couple bugs in the FlexLibMono library that I fixed in my fork and may push back into the original branch.  It's been nice to have the FlexLibMono library to work with to give insight to the shape of the data and commands being sent back and forth.  

    Your Go-based utility seems very similar to the example HB9FXQ.Queryutil tool within the FlexLibMono repo.  Right now the gnu-block that I'm making is using the FlexLibMono library to setup, initialize and create the radio, panadapter, IQStream and take the resulting data and pipe it back into the output buffers of the GNU-Block.  Basically the same as your IQStream tool + UDP Source.  What I'm hoping to be able to do is add in parameters to the block that will send the commands back to the radio to update say center frequency etc.

  • WA6FXT Mike
    WA6FXT Mike Member ✭✭
    edited February 2018
      Are you still working on the project? I noticed that it has been four (4) months, since any activity on GitHUB.

      I'm trying to setup a Linux build configuration and help on the project.

    73's de Mike WA6FXT
  • Andy - KU7T
    Andy - KU7T Member ✭✭
    edited December 2018
    Any updates on the flexlib-go work, Frank?


Leave a Comment

Rich Text Editor. To edit a paragraph's style, hit tab to get to the paragraph menu. From there you will be able to pick one style. Nothing defaults to paragraph. An inline formatting menu will show up when you select text. Hit tab to get into that menu. Some elements, such as rich link embeds, images, loading indicators, and error messages may get inserted into the editor. You may navigate to these using the arrow keys inside of the editor and delete them with the delete or backspace key.