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.

digital modes without client in a multiclient future.

Andrew VK5CV
Andrew VK5CV Member ✭✭
edited June 2020 in New Ideas
At the moment we need a client to open a slice receiver for DAX and CAT to connect to.
I was remembering HRD lite that could be used with DM780 and wondered how small a client could be to open a slice that WSJT-X and FLDIGI could connect to and control via CAT and DAX. Of course in a multiple client future the next step would be for the digital mode software to access the radio directly using the API and dispense with the middle man.
What do the clever programmers think?
Andrew VK5CV

1 votes

Open for Comments · Last Updated


  • Mark_WS7M
    Mark_WS7M Member ✭✭✭
    edited August 2017
    Hi Andrew,

    From a basic standpoint the idea makes sense.  There are however a few issues to resolve.

    Currently a "slice" requires a "pan".  So to get a slice you need to have created or have access to a pan.   Until a true multi-client interface comes along the only thing that can create a pan/slice is a "gui client".  And once you claim to be a "gui client" then all other clients like SmartSDR no longer work.

    This is built into the firmware of the radio.  So until FRS changes that basic functionality this will be how the radio will work and it will drive how software must work.

    The 6000 series radios are marketed as radio servers.  But in a sense they can only service one client as implemented.   I am hopeful that this changes and the radio opens up to serve multiple clients.

    In my eye the future 6000 series radio would allow clients to "subscribe" to only the features they are interested in.   Imagine something like this:

    client a -  subscribes to pan 1, slice 1, tx enabled
    client b - subscribes to pan 2, slice 2, dax IQ 2
    client c - subscribes to pan 1, slice 1 - as a listener

    In this model you could have multiple clients sharing various resources of the radio by subscription.  In my little example you can see that client a and c are sharing mostly the same resources except tx enable.   So client c monitors what client a is doing.  client b is off doing its own thing.

    Basically in the radio there are "services".  The services could be grouped and given subscription models.  For example "tx enable" would be a single subscriber model.   Once a client subscribed to "tx enable" no other client can get it.  In the real world we would want some way to share tx enable so it might have a queue system.

    But slices, pans, audio all could have multiple "listening" subscribers.  

    For the contest people imagine a second laptop monitoring the slice/pan of the primary laptop.

    So is there a way to do this now?  Yes... sort of...

    The idea would be to install a "server" before the radio.   The server would be a small piece of software that connected to the radio in "gui client" mode and subscribed to everything.

    The server would then accept incoming connections from clients and would dole out the radio resources as desired.  

    In this model we could do almost everything mentioned above.  One issue would be latency.  Having an intermediate server would add some minor latency to things as the server must receive the data from the radio then re-broadcast or send it to the connected clients.

    I have twice now, since 2015 started on such a server and my progress has been derailed due to personal issues and also recently by FRS coming out with 2.x.  I was concerned that 2.x might change things enough that my "server" would not work.

    How far along am I?  Not very far.  In fact I would think even if I had a month off of work to work on this I am still 6 months out from having anything that would be reasonable.

    One goal I am placing on this "server" is that SmartSDR has to be completely fooled.  IE for those people running SmartSDR it would see this "server" just like it sees the real radio.  This is to say the least a challenge.

    One of my personal goals with this server concept was something discussed back in 2015 for me.  The idea that we could "share pans and slices" from our radios among ourselves.

    Imagine having the ability to select that you would like to listen to and control a pan and slice from my radio while still using your own radio.  Imagine diversity receive done via shared slices.

    For me I can often get a DX station to hear me but I cannot hear them.  I've verified this by using a remote ham radio, radio to listen with and use my station to transmit.  I've had the dx respond to my call but I could only copy them on the remote radio.

    I'm not sure how this fits ethically in the world of radio awards but technically it is a cool thing to be able to do.  It makes me imagine having a piece of software like SmartSDR where each pan/slice can be from a different radio.

    Food for thought

    Mark - WS7M
  • Peter K1PGV
    Peter K1PGV Member ✭✭✭
    edited June 2020
    What Mark, WS7M, said.

    OTOH, if what you're asking for is you JUST want to run... say... WSJT-X or fldigi or MixW, and you did NOT want SSDR anywhere at all and did NOT want a GUI (after all, you can "see" the band you're interested in from within the digimode program)... then creating a mini-client that facilitates this is absolutely do-able today.

    There are many little issues, however.  Your mini-client has to have enough control to allow you to make use of the features that make the radio great. For example: While you initially might think: "I just want a 5K receive and 5K transmit slice, and I'll let my digimode program do its thing"... you PROBABLY want to be able to narrow that receive slice so that you can zoom-in on some weak PSK signal in your passband.

    Also, note that little things like input and output signal levels are not set through the radio client... they're part of DAX.  So, you'd need DAX running.  And, of course, you'd need CAT running as well.

    So, yes... do-able.  The question is, would the "less is more" approach really be motivating for enough people to want to use such a client.

    When I spend time using digimodes, I spend most of my time ignoring the panadapter in SSDR... but I *do* like to look-up occasionally and see what the rest of the band looks like at a glance.


  • Ria
    Ria Member ✭✭✭
    edited November 2019
    I've been told ( haven't tried) that you don't really need a "full" client for digital modes. You can just telnet in and send the commands to return a panadapter and then connect your digimode software via DAX and CAT.

    I've asked for a "headless" mode whereby this could be done. I'm not sure of the interest. But part of the solution relies on third party application developers, not just with Flex. To deal with the widest variety of radios, their apps speak CAT and sound card devices.

    As it is, WSJT-X can access CAT via tcp/ip but only to an defined CAT port, set up with the CAT app (or an equivalent). To get this to the radio directly in the future would require some reprogramming.

    WSJT-X is open source, go for it. :)

    But it is GPLv3 so remember to publish your changes...
  • Andrew VK5CV
    Andrew VK5CV Member ✭✭
    edited August 2017
    Thank you Mark, Peter and Ria.
    My programming skills are nearly 40 years out of date and I still have a day job.
    However I had been thinking about the telnet approach for a minimal client.
    That I might be able to do.
    Andrew VK5CV

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.