Thursday, June 6, 2024

RE: Audio sink to "wire"

Thanks, I'll try advices from this mail and thread.

I am contributing to development of software for RP2040 to transmit WSPR and I need just the simple monitoring tool. So I designed simple flowgraph in GNU radio, which just receives given frequency using SDR, filters it by narrow band LP filter and sends the tone (approximately 1500 +-4 Hz) to Audio sink. Nothing complicated. I run it on the notebook which plays the tone from speakers and microphone on the same notebook is listening to it and is sending the digitized sound to WSJT-X. It work as intended.

I just wanted to get the signal from the audio output of the GNU radio to the audio input of the WSJT-X a little better way than "scratching with my left hand behind my right ear" 😊

So no communication with transceiver, no WSPR transmission (my RP2040 is the monitored transmitter).

 

Jakub Šerých

 

From: Marcus Müller <marcus.mueller@ettus.com>
Sent: Thursday, June 6, 2024 2:38 PM
To: Kevin McQuiggin <mcquiggi@me.com>; discuss >> GNURadio Discussion List <discuss-gnuradio@gnu.org>; dave_abel@bigpond.com; Šerých Jakub <Serych@panska.cz>
Subject: Re: Audio sink to "wire"

 

Hi everyone,

trying to get the discussion back under one email thread (hint: it's easier to deal with the mailing list if you *don't* get the digest but each email individually, and set up your email client or -service to file emails from the mailing list into their own folder).

So, Dave pointed out:

Under Linux, a simple approach is to use a loopback (essentially establish a Virtual Audio Cable).  The loopback is established by

 

sudo modprobe snd_aloop enable=1,1 index=10,11

 

The WJST-X audio input is then plughw:CARD=Loopback_1,DEV=1

and the GNU Radio audio sink device can be left as default.

right! That works with every sound system.

However, if the intent is to use WSJT-X, there is some extra complexity.  WSJT-X assumes it is communicating with a transceiver (a rig) and will look to check that the rig is configured consistently with what WSJT-X expects.  So you need another program that emulates a chosen type of transceiver (eg a Kenwood TS-2000) and responds to those WSJT-X checks.   Switching between Tx and Rx requires some similar complexity.

Indeed, and that's why Henning Paul has his own CAT/hamlib proxy for interfacing with WSJT-X to emulate his own hardware frontend, see [1] slide 22. Luckily, I don't think you'll have to go that far, usually. Depends, really, on what you want to control from WSJT-X; you'd choose CAT as transceiver/rig type, probably.

However, I'm not deeply into these ham radio applications. If there's demand to talk about ham affairs like plugging WSJT-X to GNU Radio (and maybe ask whether someone can talk about their experiences doing something specific), I do recommend heading over to our Matrix chat room for GNU Radio in amateur radio,

#HamRadio:gnuradio.org

you can easily access that, if you've never used Matrix before, using, for example, [2]. Note that there's a lot of knowledge out there – and a lot of implementations that not everyone knows about. For example, I think someone has implemented FT-8 in GNU Radio (can't find the link right now). And: there's a series of talk recordings, organized by Barry Duggan himself, which I find worth watching [3].

Best,
Marcus

 

[1] https://github.com/hennichodernich/talks/blob/main/SDR_Selbstbau.pdf
[2] https://app.element.io/#/room/#HamRadio:gnuradio.org (account necessary for writing messages, you can sign up for free there, or anywhere else on the matrix network; do join [2a] while you're there)
[2a] https://app.element.io/#/room/#gnuradio-space:gnuradio.org
[3] https://wiki.gnuradio.org/index.php/Talk:HamRadio

On 05.06.24 23:21, Kevin McQuiggin wrote:

Hi Jakub and Marcus:

 

On the Mac, use the BlackHole virtual audio driver.  It's at https://github.com/ExistentialAudio/BlackHole.  You can create a virtual audio device and point WSJT-X at it for input, output, or both.  It works well and the developer is responsive to questions and suggestions.

 

Kevin

 



On Jun 5, 2024, at 1:12 PM, Marcus Müller <marcus.mueller@ettus.com> wrote:

 

Uff, please don't recommend such stunts :) This can be solved easily in software at zero cost.

If you're on a modern Linux, you use the pipewire audio system. Install `qpwgraph`, start WSJT-X and just use qwpgraph to connect the output of your GNU Radio flow graph to the input of your WSJT-X. (or vice versa, really!)

If you're using an older Linux distribution, you might still be using pulseaudio. No problem, you just 1. create a "black hole" audio sink, then 2. form a virtual microphone input from that:

1. pactl load-module module-null-sink sink_name=cable_out sink_properties=device.description=cable_out

2. pactl load-module module-remap-source master=cable_out.monitor source_name=cable_in source_properties=device.description=cable_in

 

You'd then use `cable_out` as device name in your GNU Radio Audio sink. That's it.

 

On Windows, I'm no expert, but there's many loopback ways. there's VB-Cable, which used to be a thing when I used WIndows the last time.

 

No expertise on Mac OS, but if something is Mac OS's thing, it's multimedia routing, so that should work. In no case should you spend money on an external sound card, and live with the quality loss of that!

 

Best regards,
Marcus

 

 

On 05.06.24 14:27, vittben@pm.me wrote:

Hi Jakub and group!
IMO the simplest way to "redirect" audio sink, and that's the solution I usually use, use another USB sound card for WSJT-X with an "audio splitter" and "physical crossed cable".
The audio splitter is only necessary if you want to monitor the audio.
No need for complicated settings, virtual audio cable, etc. etc...... fast and dirty!!! 
 
Enjoy 
 
Vittorio, I3VFJ
 
 
 
Message: 5
Date: Tue, 28 May 2024 06:58:18 +0000
From: Šerých Jakub Serych@panska.cz
 
To: "discuss-gnuradio@gnu.org" discuss-gnuradio@gnu.org
 
Subject: Audio sink to "wire"
Message-ID:
PAXP189MB167934066ABE5023CEF7E155DDF12@PAXP189MB1679.EURP189.PROD.OUTLOOK.COM
 
 
Content-Type: text/plain; charset="iso-8859-2"
 
Hi,
is there any simple way to redirect GNU radio Audio sink output to "wire" so that it can be processed by some other software (e.g. WSJT-X)?
 
Thanks for any info
 
Jakub

 

No comments:

Post a Comment