A huge upgrade to version 3.6.0 is released (https://github.com/sv1btl/PhantomSDR-Plus (https://github.com/sv1btl/PhantomSDR-Plus))
New in v.3.6.0- All variants of App.svelte have been merged in one file,
- A new QRSS Grabber implementation has been added.
- A new SSTV decoder implementation has been added.
- A new FAX decoder implementation has been added.
- A new PSK31 decoder implementation has been added.
- A new Olivia decoder implementation has been added.
- All frequency schedules have been fully updated. Inactive frequencies have been removed, current information has been added, and the transmitting station is now displayed in the decoder window.
- The frontend/GUI AGC system has been redesigned.
- A new simplified mobile interface has been added as a standalone .svelte component. It is available at: http://your_server:PORT/mobile This interface does not include a waterfall display, but it supports all operating modes, including RADE. The previous mobile interface remains available for users who require access to additional information and functionality. The ./recompile.sh script has also been updated to support the new mobile GUI. The interface has been tested on both Android and iOS.
- The main GUI has been redesigned with more realistic 3D visual effects throughout the interface. All .svelte files have been updated accordingly.
- A TUNE button has been added to the Users tab, allowing the user to tune directly to another listener's frequency.
- The analog and digital S-meters have been calibrated to provide consistent signal-level readings. A signal generator was used during the calibration process.
- The decoders are no longer reached through the Bandwidth row, which has been removed. A Decoders button row now sits on the main panel, directly under the Modes selector — one button per decoder (FT8, FT4, FT2, CW, WSPR, FAX, SSTV, NAVTEX, RTTY) — while RADEL and RADEU sit beside the Modes selector itself and are repeated inside the Modes and Bands pop-ups. One press starts the decoder and opens its window; a second press stops it.
- The Admin Panel has a new Graphs page plotting CPU frequency, CPU load, CPU temperature and users online on one shared time axis, over 15 MIN / 1 HOUR / 4 HOURS / 12 HOURS / 24 HOURS. Sampling runs every 2 seconds in memory only (nothing is written to disk) and is kept in two tiers — 1 hour at full 2-second resolution plus 24 hours of 30-second averages — so a full day stays readable instead of becoming ~43000 points. Hovering the plot draws a crosshair with all four values at that instant.
- The frontend now rebuilds in about half the time. build-all.sh used to build the same sources five times one after another, because the S-meter variant was written into src/main.js before each build and only one build could own that file at a time. The variant is now passed to Vite as a build-time value, so every build reads the same unmodified sources and they run in parallel — a full build-all.sh, including /mobile and the title/favicon pass, drops by about 50%. Nothing changes in how you use ./recompile.sh. The number of builds running at once defaults to 3, which keeps the CPU cool on a laptop; raise it with PHANTOM_BUILD_JOBS=5 ./build-all.sh if your machine has the cores and the cooling for it. The variant chosen for the site root (/) is now remembered in frontend/variant.json — previously that choice could be overwritten by build-default.sh, so selecting, for example, the Digital S-meter as default still served the analog page at /.
- Two new modes have been added to the FSK / RTTY decoder window: PSK31 and Olivia. Both sit in the same window's Variant dropdown alongside the three existing FSK variants, and the panel adapts to whichever is selected — the shift, baud, framing, encoding and invert controls are hidden for the two new modes, which have no mark/space tone pair. PSK31 corrects its own tuning error over about ±25 Hz and reports the recovered carrier and the transmitter's IMD; Olivia offers the four common configurations (8/250 — the default the panel opens on — plus 16/500, 32/1000, 16/1000), searches blindly for synchronisation because the mode sends no preamble, and has a Squelch slider controlling how strong the error-correction match must be before text is printed. See the decoder documentation.
- A running decoder now owns the mode and the passband. The mode used to follow the band plan in bands-config.js on every retune, which quietly undid whatever a decoder had set up: FT8 on 40 m flipped the receiver to LSB as soon as the dial moved, and the narrow decoder passbands widened back to the full SSB filter. A running decoder now keeps the mode and passband it needs across retunes, including a jump to another band, and the band's own mode returns when the decoder is switched off. Mode buttons still win — a deliberate choice by the operator is never overridden — and the CW decoder is unaffected, since it decodes in whatever mode you are listening in.
- The QRSS grabber has a Band list of the QRSS/MEPT windows from 2200 m to 6 m. Picking one and pressing Tune goes to that window in CW with a passband sized for the mode, so the dial reads the true QRSS frequency and the trace lands on the centre line of the display. Bands where two conventions are in use (40, 80, 160 and 10 m) list both windows. While a window is tuned the grabber holds the receiver the same way a decoder does, and the passband follows the dial as you hunt along the band. See the decoder documentation.
- The Users list marks your own session you when users.html is opened as a page of its own, not only inside the pop-up window. The page has no receiver of its own, so it asks whichever tab of the interface does — over the page's parent frame in the pop-up, and over a same-origin broadcast channel when standalone. With no interface tab open on that address there is no session to mark, and the list is shown unmarked as before.
- The four start scripts — start-rx888mk2.sh, start-airspyhf.sh, start-rtl.sh and start-rsp1a.sh — now tell you what they are doing instead of detaching in silence. Each one mirrors the start-up log to your terminal while the server comes up and then prints a summary saying whether the receiver, spectrumserver, the RADE sidecar and websdr.org registration are all up, before handing back the prompt; Ctrl-C stops only the mirroring, never the server. Add -q for the previous two-line output. The RADE sidecar is now built into the start scripts — it starts once the server is confirmed running, is restarted on its own if it exits (without restarting the server), is stopped by stop-websdr.sh, and can be skipped with RADE_ENABLED=0; where RADE is not installed the server starts normally and the summary just says the sidecar was not activated. Each script also reads your .toml and reports whether [websdr.org] enabled and [websdr] register_online are switched on, then waits for websdr.org to answer so the registration can be seen succeeding. Finally, spectrumserver's own output — which was previously discarded — is kept in spectrumserver.log (rotating at 10 MB), with the [WebSDROrg] lines also copied into logwebsdr.txt — minus the routine /~~orgstatus and keep-alive-ping chatter, so what you read there is the registration story and any errors, not a running tally.
- The Admin Panel's Spot Reporting page now keeps two separate counters. The SPOTS UPLOADED PER DECODER tiles (FT8 / FT4 / WSPR) count uploads since the daemon last started, with the decode count and queue depth under each; a decoder whose destination is switched off shows reporting off instead of a bare 0. The number beside each BANDS & MODES checkbox is that band+mode's all-time upload total, stored in autorun-totals.json so it survives restarts — a leading dot (·123) means the slot has decoded but not yet uploaded.
Please do not hesitate to ask for help.
Darko,
9A7AOF, can also assist you.
He has been a beta tester for a long time and has an in-depth knowledge of the software.
Introduction to QRSS, a new function of PhantoSDR+ v.3.6.0
(from the Internet):
"QRSS is an ultra-slow Morse code mode used in amateur radio to transmit extremely weak signals over long distances by drastically slowing the code and using very narrow receiver bandwidths.
How QRSS Works
Transmission: QRSS uses frequency-shift-keyed (FSK) continuous wave (CW) Morse code. The extremely slow timing allows the signal to be averaged over time, reducing the effect of noise and making it detectable even when inaudible by ear
swharden.com
swharden.com
.
Reception: Signals are captured using a radio receiver connected to a computer sound card. Software performs a Fast Fourier Transform (FFT) to display the signal as a spectrogram or "waterfall," where time is on one axis, frequency on the other, and signal strength is indicated by brightness or color
amateur-radio-wiki.net
amateur-radio-wiki.net
+1
.
Grabbers: Dedicated QRSS receivers, called grabbers, automatically collect and upload spectrograms to the internet, allowing operators worldwide to monitor QRSS transmissions
swharden.com
swharden.com
.
Technical Considerations
Bandwidth: QRSS typically uses less than 1 Hz of receiver bandwidth, which significantly improves the signal-to-noise ratio
amateur-radio-wiki.net
amateur-radio-wiki.net
+1
.
Frequency Stability: Both transmitter and receiver must maintain high frequency stability, often using crystal-controlled oscillators with temperature control
amateur-radio-wiki.net
amateur-radio-wiki.net
.
Data Rate: Due to the slow transmission, the amount of data sent is very limited. For example, a call sign may take several minutes to transmit
swharden.com
swharden.com
.
Applications
Long-distance low-power communication: QRSS allows signals of just a few hundred milliwatts to be detected thousands of miles away
swharden.com
swharden.com
.
Experimental and hobbyist use: It is popular among amateur radio enthusiasts for testing propagation conditions and weak-signal performance.
Educational purposes: QRSS demonstrates principles of signal averaging, narrowband reception, and weak-signal detection.
In summary, QRSS is a highly specialized Morse code mode that trades speed for extreme sensitivity, enabling amateur radio operators to communicate over vast distances with minimal power by visually decoding signals from spectrograms"
You can see in images:
1.- An "empty" waterfall (but it is full of QRSS signals). Although the frequency is very near to FT4, decoded CW signals of QRSS are there
2.- A fragment of the QRSS window
3.- A full snapshot of the QRSS received at 10 MHz, with a lot of QRM and QSB. The "letters" (dot & dash) can be readable.
Hello Emmanuel
Fine business !
The labels "Min" and "Max" remains inverted for the brightness and contrast sliders :D
For the background of vintage analog S-meter, try these colors
bgGradient.addColorStop(0.00, "#fff6df");
bgGradient.addColorStop(0.18, "#e9c98a");
bgGradient.addColorStop(0.45, "#c08d45");
bgGradient.addColorStop(0.75, "#845223");
bgGradient.addColorStop(1.00, "#4b2b12");
From line 180 to 184 in SmeterAnalog.svelte.
These gives a look of old Collins ! ;D
The new Hardware is still in test with forced air cooling of the RX888 and computer.
73's my friend
Quote from: F1NSK on Aug 04, 2026, 06:17 PMHello Emmanuel
Fine business !
The labels "Min" and "Max" remains inverted for the brightness and contrast sliders :D
For the background of vintage analog S-meter, try these colors
bgGradient.addColorStop(0.00, "#fff6df");
bgGradient.addColorStop(0.18, "#e9c98a");
bgGradient.addColorStop(0.45, "#c08d45");
bgGradient.addColorStop(0.75, "#845223");
bgGradient.addColorStop(1.00, "#4b2b12");
From line 180 to 184 in SmeterAnalog.svelte.
These gives a look of old Collins ! ;D
The new Hardware is still in test with forced air cooling of the RX888 and computer.
73's my friend
HI ERIC,
News from you, this is a miracle!!! ;D
Please try the v.3.6.0, there are lot of new thing.
You can also read the documentation in the folder doc. There is a French section of all documents translated, I hope the translation to be good.
We missed you, and we hope to see your server on air very soon!!
P.S. The documents in the folder doc, are updated yesterday 4th/8/2026, so if you have not the recent, please download them.
73, Emmanuel
Hello Emmanuel
i'm workink on release 3.6.0 !
Only one app.svelte is wonderfull. It's more easy to customise.
Small functions svelte in the lib directory is also a rich idea.
For me only one function miss to Phantom...
A callsign registration to use the Chat....
73's
Hi all,
I've discovered a minor bug in App.svelte. In the modal window 'Bands', RADEL & RADEU are shown as buttons. They should not be there. It is fixed, so please download ONLY App.svelte from the github, replace your existing and recomplie frontend only.
Hello Emmanuel
Are you sure ?
I dont seen this issue on the initial release...
73's
Quote from: F1NSK on Aug 07, 2026, 02:14 PMHello Emmanuel
Are you sure ?
I dont seen this issue on the initial release...
73's
Good. Because of doing minor changes, maybe something I've setup by mistake in the github version, and I saw that everyone that uses the recent v.3.6.0 has the issue. Nothing serious, only useless buttons in unusual place. Corrected... end!
We'd like to see your WebSDR on the map. Do what is needed, so to can use a very good PhantomSDR+ as was yours.
What about this documentation in French. Is it good or they will laugh at me?
Quote from: F1NSK on Aug 04, 2026, 06:17 PMHello Emmanuel
Fine business !
The labels "Min" and "Max" remains inverted for the brightness and contrast sliders :D
For the background of vintage analog S-meter, try these colors
bgGradient.addColorStop(0.00, "#fff6df");
bgGradient.addColorStop(0.18, "#e9c98a");
bgGradient.addColorStop(0.45, "#c08d45");
bgGradient.addColorStop(0.75, "#845223");
bgGradient.addColorStop(1.00, "#4b2b12");
From line 180 to 184 in SmeterAnalog.svelte.
These gives a look of old Collins ! ;D
The new Hardware is still in test with forced air cooling of the RX888 and computer.
73's my friend
This very good color scheme for the analog smeter is already implemented. You have only to replace the file:
frontend/src/lib/SMeterAnalog.svelte and recompile frontend only, without restart of the server.
Clicking now on the analog smeter, you can choose with every click between dark->light->vintage background
Enjoy!
love it.. thanks.. :)
Hello Emmanuel
For the fun, I've also moded the magic-eye.svelte ;D
Like true EM tubes, the two aera goes from green to yellow and short at +60dB.
I will send yo the file monday.
Orsat Phantom is online again at http://orsat.ddns.net:8080
New hardware, new QTH and again a 100 meter Loop with an ehanced home made balun.
The loop is full isolated and less sensitive to QRN.
73's
Quote from: F1NSK on Aug 08, 2026, 10:58 PMHello Emmanuel
For the fun, I've also moded the magic-eye.svelte ;D
Like true EM tubes, the two aera goes from green to yellow and short at +60dB.
I will send yo the file monday.
Orsat Phantom is online again at http://orsat.ddns.net:8080
New hardware, new QTH and again a 100 meter Loop with an ehanced home made balun.
The loop is full isolated and less sensitive to QRN.
73's
Very glad you are on air again Eric. Very good job as usual.
Please send me the lines modified for the 'magic eye' so to include the modification to the repo.
P.S. SSTV received from your SDR Eric
Good morning everyone,
I am currently testing a couple of changes in PhantomSDR+ that I believe significantly improve usability and simplify the frontend build process.
1. Unified layout handlingUntil now, PhantomSDR+ provided four separate layout variants, based on the SysOp's preferred combination of:
* Analog or digital **S-meter**
* **Band Selector** position
The main drawback was that switching between these variants forced a full page reload, returning the receiver to its default startup state.
This has now been changed.
In the new implementation, the end user can switch between the available layout options dynamically, while:
- keeping the currently tuned frequency
- maintaining the current receiver state
- avoiding any interruption to the audio stream
The removal of the separate layout variants also simplifies the generated `dist/` structure.
Only a single main `index` file is now generated, in addition to the dedicated mobile interface file. This reduces unnecessary duplication and further decreases the time required by the **recompile process**.
2. Frequency persistence between mobile viewsThe second improvement concerns switching between the two mobile interfaces.
Previously, if a user was tuned to a specific frequency and switched to the **
Mobile Extended View**, the receiver would return to the default startup frequency.
This behavior has now been fixed.
The currently tuned frequency is automatically preserved when switching from the standard mobile interface to the **
Mobile Extended View**.
The same synchronization now works in the opposite direction as well.
If a user is operating in the **
Mobile Extended View** and presses the **"
Simplified Mobile"** button, the simplified interface opens on exactly the same frequency.
As a result, switching between the two mobile views is now seamless and no longer affects the current tuning state.
The goal is to make navigation between layouts and mobile interfaces completely transparent to the end user, without resetting the receiver or interrupting normal operation.
You can test the current beta implementation on my server:
http://phantomsdr.no-ip.org:8900/ (http://phantomsdr.no-ip.org:8900/)
Any feedback, especially regarding layout switching, frequency persistence, and audio continuity, is very welcome.
P.S. These modifications are tested now. After the test, the newer files will be uploaded as version 3.6.1
Thank you Eric for the file you've sent it to me. It is now included to the update v.3.6.1 (under test)
If anyone of sysops wants to try the newer (under test) version 3.6.1:
PLEASE MAKE A BACKUP FIRST OF YOUR RUNNING v.3.6.0
Then:
1.- Unzip the file somewhere and simply replace the older in your PhantomSDR-Plus folder.
2.- Please DELETE:
frontend/build-analog.sh
frontend/build-digital.sh
frontend/build-v2-analog.sh
frontend/build-v2-digital.sh
frontend/switch-version.sh
3.- recompile backend AND frontend
Hard refresh the browser (Ctrl + F5)
Please make your remarks and note for any bugs.
Quote from: Emmanuel SV1BTL on Aug 10, 2026, 03:55 PMThank you Eric for the file you've sent it to me. It is now included to the update v.3.6.1 (under test)
With pleasure Emmanuel.
It's made with my human IA ;D ;D
I begin to be an old man an need make my brain working ! ;D
73's