SmartSDR v3.4.23 and the SmartSDR v3.4.23 Release Notes | SmartSDR v2.8.1 and the SmartSDR v2.8.1 Release Notes
SmartSDR v1.12.1 and the SmartSDR v1.12.1 Release Notes
Power Genius XL Utility v3.7.28 and the Power Genius XL Release Notes v3.7.28
Tuner Genius XL Utility v1.1.16 and the Tuner Genius XL Release Notes v1.1.16
Need technical support from FlexRadio? It's as simple as Creating a HelpDesk ticket.
Announce: experimental CAT/DAX clients for Linux
I'd like to announce the creation of some early-stage, "works for me" implementations of CAT and DAX for Linux (and potentially other systems, including BSD, OSX, and even Windows, but I have no intention of competing with the existing apps on OSX and Windows). They're written in Go, and tentatively the apps are called nCAT and nDAX, and the library is simply "flexclient". nCAT supports the hamlib network protocol (rigctl model 2), and nDAX interfaces with PulseAudio. That works for the majority of Linux ham apps. Only SmartSDR v3 protocol is supported and I have no intention to go back and support the older versions.
This is some pretty early-stage stuff — I've been working on them for just over a week, since I got my 6400 — but I've made QSOs with it using wsjtx, fldigi, and qsstv, as well as using the CAT support during WPX weekend so that my logger (tlf) knew which band/frequency I was on, and it's worked through all of that.
- No discovery yet — you'd better know your radio's IP address.
- No SmartLink yet, only local network.
- If you power down your radio or the network drops, the app will crash and you'll have to re-launch it.
- Only about 5-10% of the hamlib protocol is implemented so far (set/get frequency, set/get mode, set/get PTT, TUNER, and RFPOWER. TUNER maps to the TUNE button, not the ATU button; I haven't figured out how I want to support both within the hamlib protocol yet, and my Flex doesn't have an ATU
- Only a single hamlib VFO is supported so far — no split mode, and no mapping different slices to VFOA and VFOB.
- Like the official CAT, it connects to an existing SmartSDR/Maestro/M GUI session and controls that session's slices. In the future I would like to make a "headless" mode that uses up one of the radio's GUI slots and allows doing digi stuff without the need for a GUI client, but I'm not there yet.
- No discovery yet.
- No SmartLink yet.
- It will crash if you power down the radio or the network drops.
- Only a single slice is supported so far (you can run multiple instances for multiple slices, though).
- It doesn't create the PulseAudio devices by itself yet (you need to know what "pacmd load-module module-null-sink" means).
- It will always be streaming audio both ways regardless of whether any clients have the audio devices open.
- Right now it's opening a pipe to "pacat" instead of using a proper Go PulseAudio client... you will need that installed on your system and findable in PATH.
- I'm not *completely* sure what's going on with levels and the correct range of the float32 samples. Most of the time, passing things through unmodified to PulseAudio seems correct, but then sometimes qsstv's transmit levels are incredibly low. Is anyone aware of any documentation from FlexRadio that says what to expect when it comes to DAX audio?
flexclient library: https://github.com/arodland/flexclient
- Andrew KC2G
N0AW - Jeremy MemberYes!
Mark_WS7M Member ✭✭✭Go get 'em JT0
HB9EDM - Marco Member ✭✭Andrew! thks for your work! I will follow your progress with interest.
Andrew Rodland Member ✭✭Updates since 3 weeks ago:
- nCAT and nDAX both support LAN discovery now. You can simply connect to the first radio found (fine for most people who only have one Flex on their network!) or specify it by nickname or serial number or whatever.
- nCAT got one new command (the "RF" level controls AGC-T), and several bugfixes that improve compatibility with various clients. The command handling has been thoroughly refactored to make adding new stuff a bit more straightforward.
- nCAT "headless mode" exists in a basic form. No Maestro? No SmartSDR? Run with "-headless" and you will get a single slice that can be controlled with CAT and used with nDAX. I've made an FT8 QSO this way.
- nDAX can now create the pulseaudio loopback devices it needs on startup, and give them nice names and icons. No more doing it yourself.
- nDAX now uses a native-Go PulseAudio client to send/receive audio and to create the devices; no external commands or libraries are required for basic functionality. The "pacmd" command is still needed to give the devices their names and icons, though — the PulseAudio devs left that out of the native protocol. Oh well.
- nDAX now does a bit of resampling to avoid periodically overrunning/underrunning the audio buffer if the Flex's sample rate disagrees with the PC clock. This is still under a fair bit of tweaking. For best results, make sure your PC is running a good NTP client (I recommend Chrony).
- I'm using GitHub Actions to automatically build and upload nCAX and nDAX for linux-amd64 (PC) and linux-arm (Raspberry Pi). Other build targets are theoretically possible — ask!
Testing and feedback are welcome; devs who want to contribute are even more welcome.
juan garcia Member ✭ANIMO POR FIN LINUX DIOS0
I got this working tonight - impressive!0
> @cdub89 said:
> I got this working tonight - impressive!
Thanks :) Hope you're enjoying, and please do comment with any impressions or suggestions for improvements, either here or on the GitHub project.0
Looks great - is this still an active project for you? And thank you for supporting linux!1
Yes it is, Lou. I'm a bit busy right now (I'm moving house this very week) so development pace is slowed down, but I absolutely intend to keep improving, and the more feedback I get from users, the more likely that is :)
For release updates I recommend using the "Watch" button on the GitHub repos; you will find out more quickly than watching the thread here.1
@arodland a few suggestions - its difficult figuring out what port to set up - not sure in nCAT on nDAX would be the right place to log it. Also- a clear option to set the slice on the Flex radio into DAX as primary transmit mode (versus having to set it up from SmartSDR). Finally a quick end to end how to configure with WSJTX would be nice, I’ve been proceeding with trial and error!0
@arodland Very very nice work! Thank you so much for doing this.
My goal is to be have a one-press setup for PSK reporting FT8 contacts and to be able to run WSPR listener unattended as well when I'm not using my regular station, and this fills in many of the missing pieces. I'm aiming to set up a private website on a ZeroTier VPN that will set everything up automatically so I can get propagation information for my station during idle time.
I'm using a headless raspberry pi 4 with a minimal starting package.
For those looking for setup details, here is what I did to get everything running
curl -L https://github.com/kc2g-flex-tools/nCAT/releases/download/v0.0-20200623.0/nCAT-linux-arm -O curl -L -O https://github.com/kc2g-flex-tools/nDAX/releases/download/v0.0-20200817.0/nDAX-linux-arm chmod +x ./nCAT-linux-arm chmod +x ./nDAX-linux-arm sudo apt-get install pulseaudio pulseaudio & ./nDax-linux-arm & ./nCat-linux-arm &
I'm using VNC and fluxbox window manager to keep everything tidy and minimal
inside WSXTJ, you set the radio as hamlib, and the server as localhost:4532. Everything seems to work from there..
you can also install pavuacontrol and use that to adjust DAX levels and whatnot.
Was able to make a contact on FT8 on 20m just a few minutes ago.
A couple of things not done or I can't figure out:
- How to build nCAT and nDAX from source (can't figure out how to make go install dependencies. probably some web searching and reading would solve this)
- Why I can't run nCAT and nDAX from inside a docker container
- Getting the whole slice, Dax etc setting automated so the the whole flex setup can be headless
- Making WSXTJ fully headless
Hacked on this a bit more today, and realized that the nCAT and nDAX clients appear to silently fail if they cannot bind to port 4992/udp for the flexradio discovery protocol. The following worked to get nCAT working inside docker:
Dockerfile: EXPOSE 5900 4532/tcp 4991/tcp 4991/udp 4992/udp 4992/tcp Shell: sudo docker run -p 5900:5900 -p 4532:4532 -p 4991:4991/udp -p 4992:4992/udp --name bb raspi-vnc:1.00
@Jeremy Gilbert KC1JZE great work! Do you have the rest of the dockerfile you can share?0
Hi @Lou KI5FTY -
I don't have it all assembled yet into a fully working Dockerfile. I've been starting with one I found here https://registry.hub.docker.com/r/psharkey/rpi-novnc, which sets up a VNC server. I modified it to make it work with the RPi4 and latest Debian but it still has cruft. From there I've manually added packages to get WSXTJ working. So consider this a work in progress that I'll eventually upgrade to include a bunch of the related ham software.
[email protected]:~/docker-exp $ more Dockerfile FROM balenalib/rpi-raspbian:stretch # Setup demo environment variables ENV HOME=/root \ DEBIAN_FRONTEND=noninteractive \ LANG=en_US.UTF-8 \ LANGUAGE=en_US.UTF-8 \ LC_ALL=C.UTF-8 \ DISPLAY=:0.0 \ DISPLAY_WIDTH=1024 \ DISPLAY_HEIGHT=768 # Install git, supervisor, VNC, & X11 packages RUN apt-get update && apt-get install -y \ bash \ fluxbox \ git \ net-tools \ openssh-client \ socat \ strace \ telnet \ supervisor \ x11vnc \ xterm \ xvfb \ --no-install-recommends && \ rm -rf /var/lib/apt/lists/* COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf EXPOSE 5900 4532/tcp 4991/tcp 4991/udp 4992/udp 4992/tcp CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]
Thrilled to see some more interest! Thought I'd leave a project update. I moved house a month ago, so there hasn't been any development going on, but I finally got a desk set up in the new house and I've started to spread my radio equipment across it, so in a few more days I'll have a Flex to play with again :)
In the meantime, suggestions, documentation PRs, and whatever else are welcome!2
Thanks for the work on this and for sharing. I will be installing both and trying them out soon.
@arodland I've used nCAT and nDAX daily (UBUNTU 20.04 LTS) and don't know why Flex doesn't host or sponsor these little utilities on your behalf. I've made nearly 200 QSOs on WSJTX thanks to your support!
I appreciate you making these available as I don't like running virtualbox to emulate windows.0
Thanks! That's fantastic to hear. To be honest I haven't asked Flex to support my work in any way (other than providing the public API, which they've been good enough to do). Maybe if I was creating a full-on SmartSDR type app they would be interested, but I've never been all that great when it comes to developing GUI apps. I've thought about bringing it to their attention but I've never been quite sure what to say. In any case I'm happy enough with the current situation.
As for the apps themselves, rest assured that I'm not dead. I've been doing some work that will, with a little luck, result in a more stable nDAX without the "[INTERNAL]" halves of the loopback pairs. It's not quite ready yet, but I should be able to push a beta release soonish.
As always, usage reports are welcome, comments and suggestions are welcome, and if any devs want to lend a hand that would be nice too. Some possible places where an interested party could help out:
- Implement the metering protocol in the flexclient library, and hook up "l RFPOWER_METER", "l SWR", etc. in nCAT (useful for people who like JTDX's output power gauge, or want to use some kind of app like grig and get meters.
- Write an "nSPOT" that connects to a cluster and posts spots to the Flex using the "spot add" API command (this is a pretty easy job for someone who understands the cluster protocol, which I don't. I'll get around to it someday if no one else does).
- Come up with a sensible proposal for how to map multiple slices to hamlib VFOs in nCAT for split operation.
I have watched your posts with interest and want to give nDAX and nCAT a try.
What are some examples of functionality gained by using nDAX and nCAT on a Raspberry Pi? I see where we can also run WSJT-X on Linux. Are there others that need Flex CAT and DAX?
Could you publish a "Guide for Novice" Linux persons (like me) to install, configure and run nDAX/nCAT. Here is a link to the guide to install, confiture and use FRStack on a Linux (Raspberry Pi). This example shows the type and level of instructions that we Novices can understand.
Just a comment on why DAX and CAT on Linux are useful to me personally. My shack computer is an Intel NUC running Ubuntu Linux, and my radio is a Flex6600M, right next to the computer. I normally only run the K3 with my shack computer, but with the addition of Dax and Cat for Linux, I can now operate digital modes on myFlex in the shack, instead of going to my Mac elsewhere in the house. (Edit: As an aside, I do not run Windows unless it is unavoidable.)0
What do you mean "K3"?
Do you use something like VNC viewer on the Mac to view the Linux NUC Desktop?
“K3” - my other HF radio :-) I have two radios in the shack, an Elecraft and a Flex. So far I have been unable to use the shack Linux computer with the 6600M, only the Elecraft K3 with a SignaLink USB. I could use VNC or another remote tool to get to the Mac, but that does not do multi-monitor well.0
A new release of nDAX is out: existing users please read the release notes at GitHub (https://github.com/kc2g-flex-tools/nDAX/releases/tag/0.1-20201115.0) as some configuration options have changed. Overall this should be a better release with fewer things to go wrong.0
Could you do a user manual for installation and for configuration?
No installation required, and there are instructions in the README. For the most part, just download and run.0
arodland.....you assume a level of knowledge, perhaps, I do not have. I need a little "hand holding" to get the hang of this.
I tried following the read me and here are my results. I could use some help.
Am I creating a hidden text file on the home directory named nDAX? It did not work. I also tried it with "sudo" I need help please. Here are the screenshots.
I downloaded the file using "sudo wget" command. Is this the correct file? What is a "binary"?:
"and ran the "chmod +x nDAX. Looks good, right??
Please help me up to this point. What am I doing wrong?
Then, could you provide some explanation on how to use these setups?
Speaking from a purely linux point of view, (I know nothing of this software as yet) you do not have a program named nDax in that directory. You are trying to execute "nDax" when you issue ./nDax
The nDax-linux-arm might be a package that contains the nDax executable, or it might be the executable itself, but with that different name. You could try ./nDax-linux-arm in place of nDax and see if that works.
If it does, using the mv command as follows: mv nDax-linux-arm nDax would rename it. Or likely you could right click on the name in the file manager and change it there.
I am still "lost". Hoping arodland is willing to help, otherwise, I may not be able to use this great app.
Alan - you need to rename the nDax-linux-arm to nDax. Then take a look at the readme file on github, he details the command line to execute on this page:
./nDAX -station station_name -slice A -daxch 1 -source flex.sliceA.rx -sink flex.sliceA.tx
where station_name is the flex name for your ssdr instance running on some machine0
Thanks Lou and others.
Making progress, but not there yet.
I renamed and ran the command with station name "Maestro. I got a response:
Next, tried to enter audio settings into WSJT-X running on the same Raspberry Pi and did not see the audio in/out devices on the pull down menu. Also, on startup received several alarm messages, including:
Leave a Comment
- 19.8K All Categories
- 177 Community Topics
- 2K New Ideas
- 367 The Flea Market
- 6.6K Software
- 5.6K SmartSDR for Windows
- 107 SmartSDR for Maestro and M models
- 269 SmartSDR for Mac
- 210 SmartSDR for iOS
- 200 SmartSDR CAT
- 138 DAX
- 330 SmartSDR API
- 8.1K Radios and Accessories
- 6.6K FLEX-6000 Signature Series
- 673 Maestro
- 35 FlexControl
- 803 FLEX Series (Legacy) Radios
- 552 Genius Products
- 312 Power Genius XL Amplifier
- 202 Tuner Genius XL
- 38 Antenna Genius
- 160 Shack Infrastructure
- 105 Networking
- 278 Remote Operation (SmartLink)
- 108 Contesting
- 418 Peripherals & Station Integration
- 103 Amateur Radio Interests
- 697 Third-Party Software