WebSDR Support Forum

General Category => PhantomSDR Software => Topic started by: Emmanuel SV1BTL on Apr 07, 2026, 07:21 AM

Title: Version 3.1.0 released
Post by: Emmanuel SV1BTL on Apr 07, 2026, 07:21 AM
Upgrade to Version 3.1.0 with SSTV, FreeDV RADE V1 decoder and CATsync support.
Now in mobile version all decoders are shown and are functional.
Please make a clean install, keeping a backup of your markers.json,frequencylist/mymarkers.json, frontend/site_information.json & frontend/src/bands-config.js
Ensure that you've made first a backup of the previous installation.

For admins that run v.3.0.0, only these files could be added and replaced:

PhantomSDR-Plus
├── docs
│  ├── ADMIN_PANEL_SETUP.md
│  ├── DECODERS.md
│  ├── INSTALLATION.md
│  ├── PROJECT_STRUCTURE.md
│  ├── RADE_README.md
│  └── README.md
├── frontend
│  ├── index.html
│  ├── src
│  │  ├── App__analog_smeter_.svelte
│  │  ├── App__digital_smeter_.svelte
│  │  ├── App.svelte
│  │  ├── App__v2_analog_smeter_.svelte
│  │  ├── App__v2_digital_smeter_.svelte
│  │  ├── audio.js
│  │  ├── decoder.worker.js
│  │  ├── eventBus.js
│  │  ├── events.js
│  │  ├── lib
│  │  │  └──  backend.js
│  │  ├── modules
│  │  │  ├── ft4.js
│  │  │  ├── ft8.js
│  │  │  ├── README.md
│  │  │  └── wspr.js
│  │  ├── sstv.js
│  │  └── waterfall.js
├── install_rade.sh
├── rade_helper.py
└── rade.sh

Replace also : src/spectrumserver.cpp and recompile also backend, as the file is updated with the newer map link. As this link is temporal, the file will be changed when Steven will update the older map website.

Please:
- stop the server,
- ensure that "install_rade.sh" and "rade.sh" are executable,
- ensure access to port 8074 from your router. Portforward 8074,
- run "./install_rade.sh". The proccess will last some time to install the necessary files and folders. During the installation you will prompt to recompile again the frontend,
- when the installation is finished, then run "./rade.sh start"
- start your server.

RADE
If everything is o.k. then you'll find RADEL and RADEU in Decoders. When click "Sidecar OK" will light green. When a freedv rade v1 signal is detected, decoder is decoding and "sync" will be shown with calculated SNR.
Restarting the server, it is not requiring the "rade.sh" to run again. But restarting the pc, does requires restarting of the script, before or after the starting of the server. Because the python that is involved in RADE requires some system resourses, it would be better your users to dissable the decoder, when there is not something to hear. In any case, with a rather medium pc, 25-35 RADE simultaneous users can be served without any problem of stressing the CPU.

SSTV
14230 KHZ is used for SSTV receiving. Stop, Start and Reset buttons are used.

CATsync
is a software https://catsyncsdr.wordpress.com/ which can synchronize your transceiver with your WebSDR. Now PhantomSDR+ can support it and frequency change can be done from transceiver to PhantomSDR+ and vice-verca.


P.S. Maps link in .svelte files, and backend (src/spectrumserver.cpp) will be changed with the new map address. Now they are working with the link of temporal maps.
Title: Re: Version 3.1.0 released
Post by: F1NSK on Apr 07, 2026, 01:33 PM
Hello Emmanuel

Upgrade done.
I will run hard test !  ;D
73's
 
Title: Re: Version 3.1.0 released
Post by: Emmanuel SV1BTL on Apr 07, 2026, 04:55 PM
Hello Eric. Did RADE installed successfully?
Don't forget to run
cd PhantomSDR-Plus
./rade.sh start
and see the color of the window in the decoder 'Rade". If green, all is done!
Title: Re: Version 3.1.0 released
Post by: F1NSK on Apr 07, 2026, 07:21 PM
Hello Emmanuel

Since two or three days, some users reports issues with AVAST Antivirus on ALL V3.0.0 and more PhantomSDR ....

They run Windows.

No problem for me on Linux  ;D

73
Title: Re: Version 3.1.0 released
Post by: Emmanuel SV1BTL on Apr 07, 2026, 07:26 PM
What is the message of Avast? What console shows? Without some information I cannot guess what is the problem they face.
I don't use Avast, I am on windows 10 & 11, no problems here.

As I can see your RADE is not working. Have you run :

cd PhantomSDR-Plus
./rade.sh start

if so, there is a problem with your installation Eric.
Title: Re: Version 3.1.0 released
Post by: Emmanuel SV1BTL on Apr 07, 2026, 08:41 PM
Looking the code, I suspect that the way is called DX Cluster, can cause this reaction from Avast (only). Please, can your users to check my fixed server with Avast ON and to see if they face the same problem??

http://phantomsdr.no-ip.org:8900/ (http://phantomsdr.no-ip.org:8900/)
Title: Re: Version 3.1.0 released
Post by: Emmanuel SV1BTL on Apr 07, 2026, 09:03 PM
Some days ago, a radioamateur from Greece told me that he'd also problems with my server, and Avast warned him. I saw the console message and indeed it was written something about the DX cluster and api.codetabs.com. After these reports from France, I should take care about the problem and I rewrote some things. Now the same friend said that there is not any problem with my website, so I think that is fixed, but I would like the same reports from other users too, so to update the github.

The message was this.
Title: Re: Version 3.1.0 released
Post by: Emmanuel SV1BTL on Apr 08, 2026, 09:00 AM
After the last message of BAS about the map list, I'm going to update the map links to the https://sdr-list.xyz.
- I have also fixed the problem with Avast fake warnings about the 'security' of the website.
- A little change in AM AGC for broadcasting.
- A modified and more 'universal' script for installing RADE
- A newer sstv.js, for better decoding

Please find the files (https://github.com/sv1btl/PhantomSDR-Plus (https://github.com/sv1btl/PhantomSDR-Plus)) and replace them. After this, please recompile Backend AND Fronend.

PhantomSDR-Plus
├── frontend
│  ├── src
│  │  ├── App__analog_smeter_.svelte
│  │  ├── App__digital_smeter_.svelte
│  │  ├── App.svelte
│  │  ├── App__v2_analog_smeter_.svelte
│  │  ├── App__v2_digital_smeter_.svelte
│  │  └── sstv..js
├── install_rade.sh
├── src
│  ├── http.cpp
│  └── spectrumserver.cpp
│  └──utils
│  │  │  └── audioprocessing.cpp


P.S. In case you want to use a different port for RADE, please change this port here in the file PhantomSDR-Plus/rade_hepler.py (line 62):

    # Configuration
    PORT          = int(os.environ.get("RADE_HELPER_PORT", 8074))
    HOST          = os.environ.get("RADE_HELPER_HOST", "0.0.0.0")
    RADAE_DIR    = Path(os.environ.get("RADAE_DIR", Path.home() / "radae")).expanduser()
    RADAE_RX      = str(RADAE_DIR / "radae_rxe.py")
    RADE_MODEL    = os.environ.get(

Then restart again rade.sh (or ./install_rade.sh in case you've not done it yet). The commands are:

cd PhantomSDR-Plus
./rade.sh start
./rade.sh stop
./rade.sh restart
./rade.sh status

If you see the window in RADEL or RADEU green, everything is o.k.
Title: Re: Version 3.1.0 released
Post by: F1NSK on Apr 10, 2026, 08:27 AM
Hello Emmanuel

When i leave terminal open on the server after the restart, behind the end of the normal sequence

" waterfall is sent every 1 fft "

I can read a lot of identical messages

" curl_easy_perform() failed for http://list.phantomsdr.fun/api/update_websdr: Timeout was reached "

Perhaps a way for rare but always present short freezes of the server ..

73's
Title: Re: Version 3.1.0 released
Post by: Emmanuel SV1BTL on Apr 10, 2026, 10:47 AM
Quote from: F1NSK on Apr 10, 2026, 08:27 AMI can read a lot of identical messages

" curl_easy_perform() failed for http://list.phantomsdr.fun/api/update_websdr (http://list.phantomsdr.fun/api/update_websdr): Timeout was reached "

Well, this means that the server faces difficulties to communicate with http://list.phantomsdr.fun/api/update_websdr. Try to join to http://list.novasdr.fun/api/update_websdr instead, so in .toml:

[websdr]
register_online=true # Enable directory registration updates
register_urls=[
  "https://sdr-list.xyz/api/update_websdr",
  "http://list.novasdr.fun/api/update_websdr"] # One or more directory endpoints that accept the same JSON payload
Title: Re: Version 3.1.0 released
Post by: F1NSK on Apr 10, 2026, 12:45 PM
Hello Emmanuel

Sorry for Paul but i have deleted the link in the toml and now no problem.

An important fact about audio cuts

I benefit of a very fast internet connection, so i never use audio buffer.

I have tried to put the buffer at X3 and remark no cuts !

So i have shaked my brain  :D  and edit the last release of audio.js

At the line 264, I have changed the buffer threshold to 0.2 ( 200ms ?)

After server restart, absolutly no cuts, even with buffer slider at 0

I've never had a such stability and now SSTV work perfecty, the auto-mode decoding very fast between Martin or Scottie !  8)  8)

At this time i work on RADE... :-[
The install run ok. The server start ok but no sidecar.
I investigate on the port 8074 without better results.

73's
Title: Re: Version 3.1.0 released
Post by: Emmanuel SV1BTL on Apr 10, 2026, 01:05 PM
Quote from: F1NSK on Apr 10, 2026, 12:45 PMAt the line 264, I have changed the buffer threshold to 0.2 ( 200ms ?)

Wonderful !!!!


Quote from: F1NSK on Apr 10, 2026, 12:45 PMThe install run ok. The server start ok but no sidecar.
I investigate on the port 8074 without better results.

What about phantomSDR-Plus/rade.sh?
Please do ./rade.sh restart and then ./rade.sh status and paste me the results.
Title: Re: Version 3.1.0 released
Post by: F1NSK on Apr 10, 2026, 01:28 PM
The result


[RADE] Running
f1nsk      80318  0.0  0.0   9976  3540 pts/4    S    13:25   0:00 bash -c          while true; do             echo "[RADE] sidecar starting at $(date --rfc-email)" >> "/home/f1nsk/PhantomSDR-Plus/rade.log"             python3 "/home/f1nsk/PhantomSDR-Plus/rade_helper.py" >> "/home/f1nsk/PhantomSDR-Plus/rade.log" 2>&1             echo "[RADE] sidecar exited at $(date --rfc-email) — restarting in 3s" >> "/home/f1nsk/PhantomSDR-Plus/rade.log"             sleep 3         done     
f1nsk      80321  0.1  0.1  32432 21552 pts/4    S    13:25   0:00 python3 /home/f1nsk/PhantomSDR-Plus/rade_helper.py

and the log file
 [RADE] sidecar starting at Fri, 10 Apr 2026 13:25:12 +0200
[RADE] helper starting on ws://0.0.0.0:8074
[RADE] radae_rx.py    : /home/f1nsk/radae/radae_rxe.py
[RADE] model          : /home/f1nsk/radae/model19_check3/checkpoints/checkpoint_epoch_100.pth
[RADE] lpcnet_demo    : /home/f1nsk/radae/build/src/lpcnet_demo
[RADE] auxdata        : ON (default)
[RADE] torch threads  : 1 per instance (RADE_TORCH_THREADS to override)
[RADE] architecture   : per-connection (each user tunes independently)
[RADE] listening — waiting for PhantomSDR-Plus clients
Title: Re: Version 3.1.0 released
Post by: Emmanuel SV1BTL on Apr 10, 2026, 01:35 PM
everything seems to be o.k. Does the window turns to green?

P.S. No it does not, as I can see...

Can you try via localhost, directly from the pc that server is installed? Open a browser and type http://localhost:8080

You can also try this audio.js
Title: Re: Version 3.1.0 released
Post by: Emmanuel SV1BTL on Apr 10, 2026, 01:52 PM
My working files are these:

PhantomSDR-Plus
rade.sh
rade_helper.py

frontend/src
audio.js

Please download them, recompile frontend and retry without restarting
Title: Re: Version 3.1.0 released
Post by: Emmanuel SV1BTL on Apr 10, 2026, 02:07 PM
Let us try to reinstall manually:

sudo apt update
sudo apt install -y \
    build-essential cmake git \
    python3 python3-pip \
    nodejs npm \
    aplay alsa-utils

Python packages:    
pip3 install websockets matplotlib torch numpy scipy

Verify Python packages:
python3 -c "import websockets, matplotlib, torch, numpy, scipy; print('All OK')"

Clone and Build the radae Repository (delete the previous ~radae -> rm -rf radae):
sudo apt install build-essential cmake git python3-pip
git clone https://github.com/drowe67/radae.git ~/radae
cd ~/radae
mkdir build && cd build
cmake ..
make -j$(nproc)

Verify lpcnet_demo was built:
ls -la ~/radae/build/src/lpcnet_demo

Verify model19_check3 weights are present (this is the correct model):
ls ~/radae/model19_check3/checkpoints/checkpoint_epoch_100.pth

Install Python Dependencies:
pip3 install websockets matplotlib torch numpy
pip3 install scipy

Verify the Decode Pipeline:
cd ~/radae
./inference.sh model19_check3/checkpoints/checkpoint_epoch_100.pth \
    wav/brian_g8sez.wav /dev/null \
    --rate_Fs --pilots --pilot_eq --eq_ls --cp 0.004 \
    --write_rx rx.f32 --auxdata
 
Wait for it to finish. It prints stats ending with:
loss: 0.741 Auxdata BER: 0.012

Then decode and play:
cat rx.f32 \
    | python3 radae_rxe.py --model_name model19_check3/checkpoints/checkpoint_epoch_100.pth \
    | ./build/src/lpcnet_demo -fargan-synthesis - - \
    | aplay -f S16_LE -r 16000


You should hear a voice. The output shows sync acquisition. The `underrun!!!` messages during this offline test are expected:
  1 state: search     ...
  5 state: sync       ... SNRdB:  4.03 uw_err: 0
Playing raw data 'stdin' : Signed 16 bit Little Endian, Rate 16000 Hz, Mono


Verify the sidecar starts correctly:
python3 ~/PhantomSDR-Plus/rade_helper.py

Expected output (no WARNING lines):
[RADE] helper starting on ws://0.0.0.0:8074
[RADE] radae_rx.py    : /home/sv1btl/radae/radae_rxe.py
[RADE] model          : /home/sv1btl/radae/model19_check3/checkpoints/checkpoint_epoch_100.pth
[RADE] lpcnet_demo    : /home/sv1btl/radae/build/src/lpcnet_demo
[RADE] auxdata        : ON (default)
[RADE] torch threads  : 1 per instance (RADE_TORCH_THREADS to override)
[RADE] architecture   : per-connection (each user tunes independently)
[RADE] listening — waiting for PhantomSDR-Plus clients

Title: Re: Version 3.1.0 released
Post by: F1NSK on Apr 10, 2026, 04:20 PM
I will try a full fresh install on an other server.

At this time, the ambulance is front the portal to bring me at the Psychiatric Hospital .... ;D  ;D  ;D
Title: Re: Version 3.1.0 released
Post by: F1NSK on Apr 10, 2026, 04:35 PM
More seriously

I have :

[RADE] sidecar starting at Fri, 10 Apr 2026 15:41:13 +0200
[RADE] helper starting on ws://0.0.0.0:8074
[RADE] radae_rx.py    : /home/f1nsk/radae/radae_rxe.py
[RADE] model          : /home/f1nsk/radae/model19_check3/checkpoints/checkpoint_epoch_100.pth
[RADE] lpcnet_demo    : /home/f1nsk/radae/build/src/lpcnet_demo
[RADE] auxdata        : ON (default)
[RADE] torch threads  : 1 per instance (RADE_TORCH_THREADS to override)
[RADE] architecture   : per-connection (each user tunes independently)
[RADE] listening — waiting for PhantomSDR-Plus clients

But don't work  :-[

The most important, we solve the audio cut !

In a few time all my friends will be on W11 or Linux so i will switch on Opus.
Better sound and less latency.

Have a nice day Doctor !  ;D
 
Title: Re: Version 3.1.0 released
Post by: Emmanuel SV1BTL on Apr 10, 2026, 07:18 PM
Answer from AI:

everything is installed properly, without errors, rade.sh is running normally, 8074 is opened, but 'Sidecar not reachable. Start it on the server:python3 rade_helper.py  (listens on port 8074)" message appeared.


PM Diagnosed HTTPS/WebSocket protocol mismatch causing connectivity failureDiagnosed HTTPS/WebSocket protocol mismatch causing connectivity failure. This is almost certainly a mixed content block. Your PhantomSDR-Plus is served over https:// via Nginx/Certbot, so the browser refuses to open a plain ws:// connection to port 8074 — it requires wss://. The sidecar is running fine; the browser never even tries to connect.

Fix: proxy port 8074 through Nginx as wss://
Add this inside your existing server {} block in your Nginx config (the one that already has your SSL certificate):

nginxlocation /rade {
    proxy_pass        http://127.0.0.1:8074;
    proxy_http_version 1.1;
    proxy_set_header  Upgrade    $http_upgrade;
    proxy_set_header  Connection "upgrade";
    proxy_set_header  Host      $host;
    proxy_read_timeout 3600s;
}
bashsudo nginx -t && sudo nginx -s reload

Then in audio.js, find setRADEDecoding() and change the helper URI line:
js// Find:
var helperUri = uri || ('ws://' + window.location.hostname + ':8074');

// Change to:
var helperUri = uri || ('wss://' + window.location.host + '/rade');
Note wss:// (not ws://) — this goes through Nginx which holds the SSL certificate, so the browser accepts it.

Then rebuild:
cd ~/PhantomSDR-Plus
./recompile.sh

After this, port 8074 no longer needs to be reachable from the outside at all — traffic flows through your existing HTTPS port. The sidecar itself doesn't change, only the path the browser uses to reach it.

----

Please try this way and inform me about the results,
Title: Re: Version 3.1.0 released
Post by: F1NSK on Apr 10, 2026, 08:03 PM
Nginx is not installed on the pc ....
Title: Re: Version 3.1.0 released
Post by: Emmanuel SV1BTL on Apr 10, 2026, 08:57 PM
I can't add something more. It is installed in 2 more pc's that they are now working in Greece and even locally in a Pi5...

Can you please ask AI, becuse it will ask you questions and make some test, that I cannot make them my self in your pc ?
Title: Re: Version 3.1.0 released
Post by: F1NSK on Apr 10, 2026, 11:17 PM
No problem Emmanuel.

I will solve the bug later and try on a dev PC with a second RX888 of my own.

Its not very important. All other functions are perfect now.

As you can see,I've put a link to my alternative Web888 in the title menu.  ;D

I know more the app_svelte now...and imagine to put both analog and digital Smeter on the same page ! ::)  ::)
But not on the live server !  ;D  ;D

73's my friend
Title: Re: Version 3.1.0 released
Post by: Emmanuel SV1BTL on Apr 11, 2026, 09:07 AM
Quote from: F1NSK on Apr 10, 2026, 11:17 PMimagine to put both analog and digital Smeter on the same page
In this case, I have to work on a common calibration of s-meters, and this is what I am working now. Testing all the time...

RADE is not a problem for you, I can understand it, but it would be useful to know what the problem is, because something like this will maybe face other sysops too.
Title: Re: Version 3.1.0 released
Post by: F1NSK on Apr 11, 2026, 09:44 AM
Be quiet my friend !

I will continue to investigate about RADE and give you my results.

Twin Smeter app_svelte will be amazing.
Only one file for the maintenance and no need of the useless version switch.

More simple, more efficient !  ;D

3.1.0 work very fine now and i have more and more end-users in France.
A lot of them are bluffed by your job.
As you can see, i have only changed some labels in a more comprehensive form for "Frenchies" and to avoid a full translate.
An unique app_svelte will made easier a translation in several language for the Gui. I can made French and Spanish...

Nice day to you Emmanuel