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.
Hello Emmanuel
Upgrade done.
I will run hard test ! ;D
73's
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!
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
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.
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/)
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.
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.
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
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
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
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.
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
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
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
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
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
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
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,
Nginx is not installed on the pc ....
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 ?
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
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.
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