Running piHPSSDR on MacOS
including DigiModes with virtual audio cables

piHPSDR for MacOS

Because I am not familiar with Windows (only MacOS and LINUX), I had to look for an alternative to PowerSDR or Thetis. During the last year, I did not only port piHPSDR such that it also runs on MacOS, but also worked out tons of improvements, e.g. making PURESIGNAL and DIVERSITY functional both with the old and the new protocol. See my reports on "piHPSDR+STEMlab (old protocol" and "piHPSDR+ANAN7000 (new protocol)"! Since I am in close contact with John Melton, the main developer of piHPSDR, all this is now included in the "official" piHPSDR repository (, they can also be foundin my github account (

You can use Microphone and Headphones connected to HAMlab, but you can equally well use the built-in Microphone and audio output from your Mac, or you can use, for example, an USB headset.

For Digi modes, I run fldigi or wsjt-x along with piHPSDR on my MacOS laptop, and here it is best to use "virtual audio cables" that route the "audio" digitally between the applications, without ever converting them to an analog signal.

This is a screen-shot of piHPSDR on my MacBook Air,
- connected to HAMlab,
- using virtual audio cables to do WSJT-X.

More about MacOS virtual audio cables: see below.

piHPSDR on MacOS

Virtual Audio Cables for MacOS

For going digi you need two things: CAT control and audio routing. Using CAT control, a program such as wsjt-x can set/read the frequency or activate PTT. CAT control is no problem since both programs use hamlib. Simply select the "OpenHPSDR piHPSDR" rig model and an appropriate port (19090 is fine). Take care to start "rigctl" within piHPSDR and use the same port number.
The problem was how to get the audio from the SDR application into the digimode program and back. In principle, one could use two different audio interfaces connected by two stereo audio cable. But it is not natural to have the signal converted from digital to analog, feed it through a cable and convert it back to digital. This is where "Virtual Audio Cables" enter the scene.
A virtual audio cable is a sound device that can be used by two applications. While application A opens the device for audio output, application B opens it for audio input. The audio signal "sent" by application A can then be "read" by application B.
There is one company where you can buy this. It is names "Loopback" from Rogue Amoeba (google "rogue amoeba loopback" and you find it). One can also (with modest effort) program such a device driver. It offers two virtual audio cables names "SDR RX" and "SDR TX". This driver can be found at my github account (
Security Notice: this device driver is a kernel extension (kext). It can only be used if Apple's SystemIntegretyProtection is switched off, unless you have a certificate to code-sign such kernel extensions (I don't have). The code on github can be compiled using XCode, but a pre-compiled kext is there as well. I strongly recommend to buy "Loopback", since Apple's security protection is not a bad idea and it is not recommended to switch it off.

Using VirtualAudioCable for Digimode with piHPSDR

Within the piHPSDR application, select "SDR-RX" as audio output device in the RX menu, and "SDR-TX" as input (microphone) device in the "TX" menu. Be sure to check the "Local Audio" check-boxes. Then, for example in WSJTX, use "SDR-RX" as the audio input device and "SDR TX" as the audio output device. That's it. Now the audio that is produced within piHPSDR is transported fully digital to WSJTX and back.

DL1YCF, July 2018.