WSJTX failing to find virtual audio cables created by snd-aloop on Linux #AudioIssues


Thomas Habets
 

Hi.

I'm trying to take the IF output from my ICom 7300 [1], process it through GNU Radio to split and tune into three separate audio streams, and then point wsjtx, js8call, and another instance of wsjtx (for FT4) to the three audio streams.

It's starting off well:

But now I'm encountering a problem. wsjtx and js8call both only allow me to pick audio devices from a *list*. And there are only two virtual sound cards listed.
There should be 8 [2].

This means that while I can split up the audio channels just fine, I can only access the first two wsjtx.

I found this thread:
but it doesn't seem to have a resolution.

All I want to do is to provide the string "hw:1,1,2" and similar. Assuming that is a name that the libraries would accept. With OSS, ALSA, PulseAudio, Jack, and PipeWire I'm not really keeping up with what name is accepted where.

This is my audio input dropdown. Note only the two devs, and no listing of subdevs:

At least the two that show up do seem to work just fine. I'm not sure why they work, since they should be choosing subdev 0 and 1, not dev 0 and 1.

Is there anything WSJTX can do here? E.g. allow me to supply the name verbatim? I tried just editing the WSJT-X.ini, but that didn't seem to do it.
Is this a qt5 multimedia problem that's still there since 2015?

[1] But it could just as well be an SDR. That way I could set up a reporting station covering all of HF at once.

[2] or 8 times 2.
(having modprobe'd snd-aloop)
$ aplay -l
[…]
card 1: Loopback [Loopback], device 0: Loopback PCM [Loopback PCM]
  Subdevices: 5/8
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2
  Subdevice #3: subdevice #3
  Subdevice #4: subdevice #4
  Subdevice #5: subdevice #5
  Subdevice #6: subdevice #6
  Subdevice #7: subdevice #7
card 1: Loopback [Loopback], device 1: Loopback PCM [Loopback PCM]
  Subdevices: 8/8
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2
  Subdevice #3: subdevice #3
  Subdevice #4: subdevice #4
  Subdevice #5: subdevice #5
  Subdevice #6: subdevice #6
  Subdevice #7: subdevice #7

--
typedef struct me_s {
 char name[]      = { "Thomas Habets" };
 char email[]     = { "thomas@..." };
 char kernel[]    = { "Linux" };
 char *pgpKey[]   = { "http://www.habets.pp.se/pubkey.txt" };
 char pgp[] = { "9907 8698 8A24 F52F 1C2E  87F6 39A4 9EEA 460A 0169" };
 char coolcmd[]   = { "echo '. ./_&. ./_'>_;. ./_" };
} me_t;