If you notice spammers in the forum, please notify Bas ON5HB, so they can be removed and banned. Give a link in the chatbox or send a PM to me. Thanks.

Pre-announcement of PhantomSDR+ v3.8.0

Started by Emmanuel SV1BTL, Aug 22, 2026, 09:53 AM

Previous topic - Next topic

Emmanuel SV1BTL

The upcoming version is currently being tested by me, Darko (9A7AOF), Sakis (SV2AMK), and Panos (SV2YJ).

Version 3.8.0 introduces JS8 support, improvements to all filtering functions, and completely redesigned installers supporting all major Linux distributions.

The installer demo installer script does not install or modify anything on your system. It is only a demonstration of the new installation workflow, allowing you to preview how the PhantomSDR+ installers will operate from version 3.8.0 onward.

------

New in v.3.8.0

  • S8 decoding. JS8Call's mode, in the browser: all five speeds, with multi-frame messages reassembled into whole sentences instead of shown as fragments. Press **JS8** in the decoder row. Full guide: **[docs/DECODERS.md](docs/DECODERS.md)**, in all seven languages. JS8 spots reach PSK Reporter**, alongside FT8, FT4 and WSPR. Reported at Normal speed from heartbeats, compound frames and directed messages; group destinations such as `@ALLCALL` never are, because they are not stations. A **📡 JS8 map** button sits beside the FT8 and FT4 ones.
  • The four noise controls work now. Auto Notch was a dead switch and is live (40 dB on a single carrier); the Noise Blanker is per-channel with look-ahead and cosine ramps rather than hard-zeroing. Every decoder is fed audio taken *before* these controls, so they can no longer stop one working.
  • QRSS no longer loses traces between rows. Rows covering more than one bin take the strongest of them: a 200 Hz span at QRSS 6 lost 6% of trace positions entirely before, and none now.
  • `fft_size` is 4194304. throughout the installation guide in all seven languages, and the RX-888 mk2 example is the complete `[input]` section that ships with the repository rather than a fragment to assemble.
  • The NEW installers stop your running receiver before they touch anything. A new first step lists what is live — the admin panel, the reverse proxy, the statistics server and the receiver itself — and offers to stop it, defaulting to yes, then starts back exactly what it stopped once the install finishes. Installing over a live receiver is the most effective way to get a broken result that *looks* like a broken build: the compiler writes over a binary that is still running, and the watchdog restarts the half-written copy mid-compile. Answer `n` and the installer prints the commands and waits for you instead. Unattended runs are covered by `PHANTOM_STOP_SERVICES=y|n`. Every question now shows its default as a capital letter, coloured, and spells the answer out — `[Y/n] (ENTER = Yes)` — so pressing ENTER is never a guess. This covers `setup_admin installer` and `install-stats-server installer` too, including the prompts that ask before overwriting an existing installation. Each step is framed, with its number, a one-line description and a progress bar, and closes with its own verdict — OK, SKIPPED, PARTIAL or FAILED — so one step never runs into the next on screen. The per-step table that `install.txt` has always carried is now printed at the end of the run as well.
  • 'demo installer ` shows you the whole installation before you run it. It walks through all 18 steps with the real frames, questions and warnings, and installs nothing — no package, no service, no file, no compile; every command it would run is printed with a `(not run)` marker. Use `--fast` to skip the pacing and `--auto` to answer every question with its default.

demo installer - download it and put it in the PhantomSDR-Plus folder, make it executable and run it (no fear, nothing is going to change in your current installation).

Emmanuel SV1BTL

New function added and it is under test:

Decoder IDit tells you which decoder to use. Found a digital signal you cannot place? Switch Decoder ID on, in the frame above the decoder buttons, and it names the mode and offers the matching decoder in one click. It measures occupied bandwidth, tone spacing, symbol rate and burst timing, shows you that evidence beside its verdict, and takes the frequency you are tuned to into account — which is also what lets it tell FT8 from JS8, two modes whose signals are identical. It recognizes FT8, FT4, JS8, WSPR, CW, NAVTEX/SITOR-B, RTTY, Weather RTTY, PSK31, Olivia, HF FAX, SSTV and DSC. It only ever suggests, never switching your decoder by itself, and below about 10 dB S/N it says so rather than guessing. Off by default, and about 0.5% of one core while running.

DenBOZ

Hi Darko, Sakis, and Panos,
thank you for all the fantastic work you are putting into PhantomSDR Plus!
The upcoming v3.8.0 update looks amazing  I also really appreciate the new,smarter installer workflow and the safety checks that gracefully handle active services. Having a demo_installer.sh to safely preview everything beforehand is a brilliant touch.

thans you for keeping this project growing
Best regards Dennis

9a7aof

#3
QuoteHi Darko, Sakis, and Panos
Emmanuel does all the work, the three of us just check that it's working properly. ;)

Until now, this software has been nice and user-friendly, with this new installer and
administrative interface it should be user-friendly for administrators as well.

Darko, 9a7aof
I'm not a programmer, just a happy Linux user since 1996, my first Linux came on 4 floppy disks, that's when I fell in love with Linux.  ;D

F1NSK

Hello Emmanuel

Beware with hardware.

Recent releases of Phantom don't work on old computers like a Core I3
It's a trap !
The installation process work but the server don't start...
The news releases of openCL don't work with old GPU...
You can start the server without openCL but the CPU overflow immediatly..

73"s

My best friend is Claude !!

9a7aof

QuoteRecent releases of Phantom don't work on old computers like a Core I3
It works fine on an ancient I3 without fast usb ports but only two megahertz width,
quite enough for 2m amateur band in Europe.
Without OpenCL, using only CPU power, it works fine.

./start-rtl.sh
PhantomSDR-Plus (RTL-SDR)
  stopping any running instance...
  starting watchdog — live log below (Ctrl-C is safe, it keeps running)
  ────────────────────────────────────────────────────────────
Mon, 24 Aug 2026 14:31:20 +0200
Starting the initialization script of the PhantomSDR Server (RTL-SDR)
 
CPU pin: none (unpinned)
websdr.org: disabled ([websdr.org] enabled=true in config-rtl.toml to enable)
SDR directory: disabled ([websdr] register_online=true to enable)
RADE: enabled — sidecar will start once the server is up
Starting RTL-SDR (rtl_sdr, attempt 1/3)...
rtl_sdr running (PID 17838)
Starting spectrumserver (config: config-rtl.toml)...
spectrumserver running (PID 17851) — full output: spectrumserver.log
  ────────────────────────────────────────────────────────────
  ✔ server is up   (spectrumserver + rtl_sdr running)
I haven't tried rsp1a, I don't have time to experiment right now.
I might do a test this weekend.

Kind regards,
Darko, 9a7aof
I'm not a programmer, just a happy Linux user since 1996, my first Linux came on 4 floppy disks, that's when I fell in love with Linux.  ;D

F1NSK

Hello Darko

I agree, but for me VHF is out of interest

I live in the biggest forest of France and only 63m above sea level. So i can ear only one repeater.
For this use Openwebrx on a RPi4  make the job
No need of a masterpiece as Phantom !  ;D

73's
My best friend is Claude !!

F1NSK

An idea for Emmanuel  ;D  ;D

Most of FlexRadio owners use now a multiplaform free software : AetherSDR
Combined with a Flex, this sotfware can add a second antenna virtual port to make diversity RX.
The virtual port is connected to a KiwiSDR.
Aether synchronise is own true antenna and the virtual antenna.
The process work fine.
Aether connect two websockets on the Kiwi for audio and spectrum.

Claude AI said it's possible to link Phantom and Eather if phantom send the protocol of a kiwi....

Brainstorm !  ;D  ;D 
My best friend is Claude !!

Emmanuel SV1BTL

#8
A brilliant idea of George (https://hfsdr.gr/?frequency=7120000&modulation=LSB) this is the last addon of the newer version of PhantomSDR-Plus v. 3.8.0 (which is already in the GITHUB - https://github.com/sv1btl/PhantomSDR-Plus)

Updating an existing PhantomSDR-Plus instance

For a sysop who is running an older PhantomSDR-Plus and wants the current one.

You do not download the whole newer version and copy it over your tree. You fetch
one file — `update.sh` — and it does the rest: it compares your installation with the
published tree and updates only what needs updating, without touching the files that make
the machine *your* receiver.

---

Step 1 — get the tool (once, ever)

cd ~/PhantomSDR-Plus
curl -fLO https://raw.githubusercontent.com/sv1btl/PhantomSDR-Plus/main/update.sh
chmod +x update.sh

That is the only manual step. Everything else — sources, frontend, documentation,
installers — is brought in by the tool itself from then on.

If your PhantomSDR-Plus lives somewhere else, use that path instead. `update.sh` works on
the directory it is sitting in, so a second clone updates itself and not the one on air.

---

Step 2 — look before touching anything

./update.sh
This **writes nothing at all**. It downloads the published tree, compares it with yours,
and prints a report: how many files are new, how many would be updated, how many look like
your own edits and will be put to you, and how many site-local files it is leaving alone.
It is safe to run at any time, including on a receiver that is on the air.

Worth running once as well:
./update.sh --list-excludes

so you can see with your own eyes that your `.toml` configs, `markers.json`,
`admin_config.json`, `autorun.json`, the frequency list, the chat history, your chosen
S-meter variant, the logs and the build output are all on the never-touch list.

---

Step 3 — a backup, the first time only

The tool already protects these, but the first run is the one to be careful with:

cd ~
tar czf phantom-backup.tgz \
  PhantomSDR-Plus/*.toml \
  PhantomSDR-Plus/markers.json \
  PhantomSDR-Plus/admin_config.json \
  PhantomSDR-Plus/frontend/site_information.json

---

Step 4 — update

cd ~/PhantomSDR-Plus
./update.sh --apply


What you will see on a first run

There is no record yet of which version your files came from, so every file in the
"always asked" group is put to you: the launchers (`start-*.sh`), the `*.service` units,
the installers, `recompile.sh`, `setup_admin.sh`, and the admin and proxy scripts. Expect
roughly ten questions, each looking like this:


  ❓ start-rx888mk2.sh  (K)eep mine / (u)pstream / (b)oth  (ENTER = Keep mine)


How to answer:

| Your situation | Answer | What happens |
|---|---|---|
| You never edited that file | `u` | The new version is installed. This is the usual case. |
| You edited it — your own `RX888_ARGS`, CPU pinning, a tweaked unit | `b` | Yours is kept, and the new one lands beside it as `<file>.new` to merge later. |
| You are not sure | ENTER | Yours is kept. Nothing is lost, and you can compare afterwards. |

Your configuration is never part of this. The questions are only ever about scripts and
service units.

From the second update onward these questions mostly disappear. The tool records which
version of each file it installed, so next time it can tell a file *you* edited from a file
that is merely old, and it only stops to ask about the ones you actually changed.

It stops your receiver, the admin panel and the reverse proxy before writing anything, and
starts back exactly what it stopped when it has finished.

---

Step 5 — rebuild when it offers

Source and frontend files will have changed, so it will ask whether to run `recompile.sh`.
Say yes, and choose:

* **[3] Both backend and frontend**
* then **[1] build-all.sh** (desktop + `/mobile`)

The receiver comes back up on its own afterwards.

---

Step 6 — check, and undo if you need to
[/b][/u]
./update.sh

should now report everything current, apart from any files you chose to keep. If the site
misbehaves:


./update.sh --restore LAST
./recompile.sh


Every file that was overwritten is kept in `.update-backups/<timestamp>/`, each with its own
`restore.sh`, and the last three runs are retained.

---

One caveat for a *really* old instance

`update.sh` updates **files**, not system packages. If your tree is old enough that the
build now needs libraries you do not have, `recompile.sh` will fail with a compiler or meson
error. That is not a broken update — you simply need the dependencies:

./install.sh
which is itself brought up to date by the same run. Your configuration survives that too.

---

For a machine you do not sit at

./update.sh --apply --yes
Never asks anything, and **every file you have edited is kept**. Safe for cron.

A plain `./update.sh` exits `0` when you are up to date and `10` when an update is waiting,
so a cron job can tell you when there is something to do:

0 6 * * *  cd ~/PhantomSDR-Plus && ./update.sh || \
  mail -s "PhantomSDR-Plus update available" you@example.com

---

Quick reference

./update.sh                what WOULD change; writes nothing
./update.sh --apply        do it, asking about anything you edited
./update.sh --apply --yes  unattended; your edits are all KEPT
./update.sh --restore LAST  put back whatever the last run overwrote
./update.sh --list-excludes the never-touch rules as they resolve here
./update.sh --ref v3.8.0    a tag, branch or commit instead of main
./update.sh --verbose      list every file, not only the first 40

Add your own never-touch rules with one glob per line in `update-exclude.txt` in the root
folder of the installation.

73 de SV1BTL

9a7aof

#9
I tried running just ./update.sh, it listed which files were outdated and
which files I edited manually.

After that, I ran ./update.sh --apply on all three servers (one public and two test),
it has a nice interactive dialog,
the default value is the one I manually entered into the scripts, great.

During the update, admin, proxy and phantom itself are stopped, after the update,
these services are automatically started.

It is also possible to revert to the old values,
although I don't think anyone will need it.

Great thing for system administration!

Kind regards,
Darko, 9a7aof
I'm not a programmer, just a happy Linux user since 1996, my first Linux came on 4 floppy disks, that's when I fell in love with Linux.  ;D

F1NSK

Hello Guy's

3.8.0 install and run error free on a real Ubuntu 26.04 computer.

3.7.0 crashes at install on 26.4

73's
My best friend is Claude !!

Emmanuel SV1BTL

For ALL sysops with v.3.8.0

Please update only the file frontend/src/audio.js and recompile only frontend. A minor bug is corrected.

F1NSK

Hello Guy's

The link between Phantom 3.8.0 and AetherSDR for FlexRadio is in test at home !  ;D

A patch add a special websocket to Phantom to send pseudo Kiwi protocol.

I will push intensive tests before sending the kiwi_install.sh to Emmanuel

73's
My best friend is Claude !!

Emmanuel SV1BTL

Quote from: F1NSK on Aug 26, 2026, 07:46 PMHello Guy's

The link between Phantom 3.8.0 and AetherSDR for FlexRadio is in test at home !  ;D

A patch add a special websocket to Phantom to send pseudo Kiwi protocol.

I will push intensive tests before sending the kiwi_install.sh to Emmanuel

73's

What is the benefit for doing this link?
What have we to expect?

Emmanuel SV1BTL

A message "API KEY REQUIRED" is shown in users.html and stats.html. The issue is fixed. Please download the fixed files from the repo, recompile frontend and hard refresh the browser.
Or.... run ./update.sh.

Powered by EzPortal