Virtual audio cables on raspberry pi

In previous post I documented the difficulty I was having getting the snd_aloop approach, as given in the user guide, to work on my new raspberry pi 400.

I finally figured out what was going on.
Came across a blog from Raspberry Pi folks posted early 2021 explaining that they had switched from ALSA sound system to PulseAudio, with a few ALSA plug-ins to maintain some compatibility.
Well, snd-aloop is just not supported - the underlying code is just not there.

Instead, you can use the pulseaudio equivalent.
Here is the user-level script I run before firing up wfview and/or wsjtx:


pulseaudio --start
pacmd load-module module-null-sink sink_name=MySinkA
pacmd load-module module-null-sink sink_name=MySinkB

The pulseaudio command starts the pulseaudio server.
The PulseAudio Commands (pacmd) each create an output device with the given name,
together with a corresponding input device (the loop back) called [the given name].monitor

So, for the wfview audio output device, I use MySinkA
and for the audio input device I use MySinkB.monitor

Correspondingly, for wsjtx audio out I use MySinkB
and for audio in I use MySinkA.monitor

No more difficult than the snd_aloop stuff, and it works like a charm.

B.T.W. system does not want pulseaudio server to run as root, so I don’t.

Take care and 73.

1 Like


This is good stuff! I look forward to trying it out!

Exactly what software version are you running on the Pi?
cat /etc/lsb-release

de W6EL

Hi Elliot

No such file /etc/lsb*


cat /proc/version yields

Linux version 5.10.60-v7l+ (dom@buildbot) (arm-linux-gnueabihf-gcc-8 (Ubuntu/Linaro 8.4.0-3ubuntu1) 8.4.0, GNU ld (GNU Binutils for Ubuntu) 2.34) #1449 SMP Wed Aug 25 15:00:44 BST 2021

Dr. Charles M. Patton

Consulting Inventor

N7CMP CN84ka

2820 Monroe St

Eugene, OR 97405

cat /etc/release then… (probaby will say some form of *buntu.linaro yes)

Thank you! This was so simple & it works! I tried all that other nonsense to no avail. The only quirk I had was the virtual cables had to be reversed from your description. Don’t ask me why but they didn’t work the other way around. So, I use B & A monitor in WFView and the opposite in JS8Call. Works like a charm. Thanks again!