Audio input decoding


Martin
 

Hello Rob,

that is great to hear!

A few more details on my setup:
I am using a QCX connected to a very cheap USB soundcard connected to a raspberry pi 3B.
The loopback device is just software created with the following command:
sudo modprobe snd_aloop
The result of this is a virtual device and data is copied from one end (DEV=0) to the other (DEV=1) and also in reverse direction. So I would call this a virtual audio channel but I am not sure if this answered your question.
I am no experienced programmer and found the topic of audio devices under linux very confusing. So I just tinkered around until I got it working finally.
However, one end of this loopback device is the sink for the GNU radio script and the other is the source for wsprdaemon.

I am happy to support by testing something or providing more details.

Best regards,
Martin


Rob Robinett
 

Hi Martin,

Your use of the AUDIO input feature has stimulated me to raise its priority in debugging of WD 3.0.
Also, have you tried using a virtual audio channel as input to WD?

Thanks,

Rob

On Fri, Oct 8, 2021 at 12:23 PM Martin <martin.classen@...> wrote:
Great, thank you for providing and maintaining wsprdaemon!
It is a very nice standalone solution.



--
Rob Robinett
AI6VN
mobile: +1 650 218 8896


Martin
 

Great, thank you for providing and maintaining wsprdaemon!
It is a very nice standalone solution.


Rob Robinett
 

Hi Martin,

Thanks for that welcome report.  In WD 3.0 I will study how to incorporate your fixes.

Rob


Martin
 

Hello,
 
baseband audio is working for me, however, two things needed tweaking beforehand:
 
1. the name of my soundcard is "plughw:CARD=Loopback,DEV=1" which does not fit into the naming scheme of wsprdaemon
2. the recorded audio was stereo per default but wsprd requires a mono recording
 
The sox option for mono recording (--channels 1) is specified in the function rtl_daemon but is missing in audio_recording_daemon.
I fixed this together with my souncard name directly in wsprdaemon.sh.
 
By the way - the background for my soundcard loopback device is the following:
My transceiver is a QCX (an excellent kit from QRP Labs) which has an audio center frequency of 700Hz. To get the 1500Hz required by wsprd, I am using a GNU Radio script to do the frequency shift of 800Hz and this script does the handover via the loopback device.
 
Best regards,
Martin


Rob Robinett
 

Have you executed './wsprdaemon.sh -i' ? 
t will help you find the audio port IDs and set the gain of your ports.


Paulo CT <ct2iww@...>
 

Hello all,

I´ve been trying to run a single band wspr monitor with the audio input feature, but with no success. My present setup consists on a Funcube dongle, playong on the PC´s own soundcard. Since there´s no speakers plugged in, the default input the monitor for dummy audi output, that can be seen both by WSJTX and a QRSS grabbers.

I´m using a modified default config file, with only AUDIO_0 enabled, which suposedly should be listening on localhost:0,0. So far, I havn´t been able to see any spots from this setup. i also tried with my main shack PC, with an external soundcard, with no results as well.
OS is Ubuntu 20.04.

Here´s my current .conf file:

# To enable these options, remove the leading '#' and modify SIGNAL_LEVEL_UPLOAD_ID from "AI6VN" to your call sign:
#SIGNAL_LEVEL_UPLOAD="proxy"        ### If this variable is defined and not "no", AND SIGNAL_LEVEL_UPLOAD_ID is defined, then upload signal levels to the wsprdaemon cloud database
                                   ### SIGNAL_LEVEL_UPLOAD_MODE="no"    => (Default) Upload spots directly to wsprnet.org
                                   ### SIGNAL_LEVEL_UPLOAD_MODE="noise" => Upload extended spots and noise data.  Upload spots directly to wsprnet.org
                                   ### SIGNAL_LEVEL_UPLOAD_MODE="proxy" => In addition to "noise", don't upload to wsprnet.org from this server.  Regenerate and upload spots to wsprnet.org on the wsprdaemon.org server
#SIGNAL_LEVEL_UPLOAD="yes"          ### If this variable is defined as "yes" AND SIGNAL_LEVEL_UPLOAD_ID is defined, then upload extended spots and noise levels to the logs.wsprdaemon.org database and graphics file server.
#SIGNAL_LEVEL_UPLOAD_ID="AI6VN"     ### The name put in upload log records, the the title bar of the graph, and the name used to view spots and noise at that server.
#SIGNAL_LEVEL_UPLOAD_GRAPHS="yes"   ### If this variable is defined as "yes" AND SIGNAL_LEVEL_UPLOAD_ID is defined, then FTP graphs of the last 24 hours to http://wsprdaemon.org/graphs/SIGNAL_LEVEL_UPLOAD_ID
#SIGNAL_LEVEL_LOCAL_GRAPHS="yes"    ### If this variable is defined as "yes" AND SIGNAL_LEVEL_UPLOAD_ID is defined, then make graphs visible at http://localhost/

##############################################################
### The RECEIVER_LIST() array defines the physical (KIWI_xxx,AUDIO_xxx,SDR_xxx) and logical (MERG...) receive devices available on this server
### Each element of RECEIVER_LIST is a string with 5 space-seperated fields:
###   " ID(no spaces)             IP:PORT or RTL:n    MyCall       MyGrid  KiwPassword    Optional SIGNAL_LEVEL_ADJUSTMENTS
###                                                                                       [[DEFAULT:ADJUST,]BAND_0:ADJUST[,BAND_N:ADJUST_N]...]
###                                                                                       A comma-separated list of BAND:ADJUST pairs
###                                                                                       BAND is one of 2200..10, while ADJUST is in dBs TO BE ADDED to the raw data
###                                                                                       So If you have a +10 dB LNA, ADJUST '-10' will LOWER the reported level so that your reports reflect the level at the input of the LNA
###                                                                                       DEFAULT defaults to zero and is applied to all bands not specified with a BAND:ADJUST

declare RECEIVER_LIST=(
#        "KIWI_0                  10.11.12.100:8073     AI6VN         CM88mc    NULL"
#        "KIWI_1                  10.11.12.101:8073     AI6VN         CM88mc  foobar       DEFAULT:-10,80:-12,30:-8,20:2,15:6"
#        "KIWI_2                  10.11.12.102:8073     AI6VN         CM88mc  foobar"
         "AUDIO_0                     localhost:0,0     CT2IWW        IN51wf  foobar"               ### The id AUDIO_xxx is special and defines a local audio input device as the source of WSPR baseband 1400-1600 Hz signals
#        "AUDIO_1                     localhost:1,0     AI6VN         CM88mc  foobar"  
#        "SDR_0                           RTL-SDR:0     AI6VN         CM88mc  foobar"               ### The id SDR_xxx   is special and defines a local RTL-SDR or other Soapy-suported device
#        "SDR_1                           RTL-SDR:1     AI6VN         CM88mc  foobar"
#        "MERG_0    KIWI_1,KIWI2,AUDIO_1,SDR_1     AI6VN         CM88mc  foobar"
)

### This table defines a schedule of configurations which will be applied by '-j a,all' and thus by the watchdog daemon when it runs '-j a,all' ev ery odd two minutes
### The first field of each entry in the start time for the configuration defined in the following fields
### Start time is in the format HH:MM (e.g 13:15) and by default is in the time zone of the host server unless ',UDT' is appended, e.g '01:30,UDT'
### Following the time are one or more fields of the format 'RECEIVER,BAND'
### If the time of the first entry is not 00:00, then the latest (not necessarily the last) entry will be applied at time 00:00
### So the form of each line is  "START_HH:MM[,UDT]   RECEIVER,BAND... ".  Here are some examples:

declare WSPR_SCHEDULE_simple=(
    "00:00                       AUDIO_0,10 "
)

#declare WSPR_SCHEDULE_merged=(
#    "00:00                       MERG_0,630 MERG_0,160"
#)

#declare WSPR_SCHEDULE_complex=(
#    "sunrise-01:00               KIWI_0,630 KIWI_0,160 KIWI_1,80 KIWI_2,80eu KIWI_2,60 KIWI_2,60eu KIWI_1,40 KIWI_1,30 KIWI_1,20 KIWI_1,17 KIWI_1,15 KIWI_1,12          "
#    "sunrise+01:00                          KIWI_0,160 KIWI_1,80 KIWI_2,80eu KIWI_2,60 KIWI_2,60eu KIWI_1,40 KIWI_1,30 KIWI_1,20 KIWI_1,17 KIWI_1,15 KIWI_1,12 KIWI_1,10"
#    "09:00                       KIWI_0,630 KIWI_0,160 KIWI_1,80 KIWI_2,80eu KIWI_2,60 KIWI_2,60eu KIWI_1,40 KIWI_1,30 KIWI_1,20 KIWI_1,17 KIWI_1,15 KIWI_1,12          "
#    "10:00                                  KIWI_0,160 KIWI_1,80 KIWI_2,80eu KIWI_2,60 KIWI_2,60eu KIWI_1,40 KIWI_1,30 KIWI_1,20 KIWI_1,17 KIWI_1,15 KIWI_1,12 KIWI_1,10"
#    "11:00                                             KIWI_1,80 KIWI_2,80eu KIWI_2,60 KIWI_2,60eu KIWI_1,40 KIWI_1,30 KIWI_1,20 KIWI_1,17 KIWI_1,15 KIWI_1,12 KIWI_1,10"
#    "18:00           KIWI_0,2200 KIWI_0,630 KIWI_0,160 KIWI_1,80 KIWI_2,80eu KIWI_2,60 KIWI_2,60eu KIWI_1,40 KIWI_1,30 KIWI_1,20 KIWI_1,17 KIWI_1,15                    "
#    "sunset-01:00                           KIWI_0,160 KIWI_1,80 KIWI_2,80eu KIWI_2,60 KIWI_2,60eu KIWI_1,40 KIWI_1,30 KIWI_1,20 KIWI_1,17 KIWI_1,15 KIWI_1,12 KIWI_1,10"
#   "sunset+01:00                KIWI_0,630 KIWI_0,160 KIWI_1,80 KIWI_2,80eu KIWI_2,60 KIWI_2,60eu KIWI_1,40 KIWI_1,30 KIWI_1,20 KIWI_1,17 KIWI_1,15 KIWI_1,12 KIWI_1,10"
#)

### This array WSPR_SCHEDULE defines the running configuration.  Here we make the simple configuration defined above the active one:
declare WSPR_SCHEDULE=( "${WSPR_SCHEDULE_simple[@]}" )

Any thoughts?

thanks

Paulo, CT2IWW