Please do not post questions in the shout-box as it will be lost in a few days. Open your own topic in the appropriate section. Thank you.

Updated Twente-like WebSDR GUI

Started by Emmanuel SV1BTL, Oct 11, 2026, 09:28 AM

Previous topic - Next topic

Emmanuel SV1BTL

Please take a look at the screenshots or, even better, visit the website (http://sv1btlham.no-ip.org:8901/). The display now adapts to any monitor size.

I didn't intend to replace the main theme for UberSDR itself, but rather just the one used for the Twente WebSDR emulation, since the original option from the repo didn't satisfy me—or my end users—at all. So, I created a new theme that I hope will be more satisfactory.

In my opinion, however, the most important aspect is the integration of all (or nearly all) decoders into the new theme, ensuring that all the tools remain fully functional within it.

Installation Guide: http://sv1btlham.no-ip.org:8901/sv1btl/readme.html

Download and install: https://github.com/sv1btl/WebSDR-emulation-for-UberSDR


Bas ON5HB

Nice! Installed it.
Best regards,

Bas ON5HB

Ps. Running UberSDR.

Emmanuel SV1BTL

#2
Quote from: Bas ON5HB on Oct 13, 2026, 03:45 PMNice! Installed it.

Thank's Bas!

1.- In case of updates of this repo, please run:

cd WebSDR-emulation-for-UberSDR   # the folder you cloned
git pull
bash install.sh

2.- In case of UberSDR update, and IF the 8901 returns to default, please read here:

After an UberSDR update
UberSDR's updater only adds missing services to docker-compose.yml and never changes the ubersdr service, so the mount lines stay. After each update, run:

bash ~/ubersdr/websdr_sv1btl/check-after-update.sh
If every line says OK, everything is in place. A FAIL line says what is wrong. The usual case is missing mount lines; compose-mounts.txt in the package has them. The other is "websdr-sound.js changed shape", meaning a new UberSDR renamed something the audio extras use. The page still plays; please report it on GitHub Issues.

With another folder or container name:

UBERSDR_DIR=/path/to/ubersdr CONTAINER=my_container URL=http://localhost:8901 \
  bash /path/to/ubersdr/websdr_sv1btl/check-after-update.sh

P.S. There is already an update of my repo, so you can try the 1st option!...

Bas ON5HB

#3
I did the update, it works great. ;)

One little problem, it doesn't register the user, it does in the chatbox but not in the freqbox.

See picture:

You cannot view this attachment.
Best regards,

Bas ON5HB

Ps. Running UberSDR.

Emmanuel SV1BTL

SV1BTL WebSDR layout for UberSDR — update of 21 October 2026
=====================================================================

Hello to all sysops using the SV1BTL WebSDR layout on their UberSDR station.

A new version of the package is out. It adds four things to the WebSDR page (port 8901): a hover line that runs down the waterfall, band buttons that remember where you were, and Receive Diversity on the desktop and mobile pages, including classic WebSDR stations through a small relay.

Package:  https://github.com/sv1btl/WebSDR-emulation-for-UberSDR
Guide:    the "installation guide" link in the page header (sv1btl/readme.html)
Zip:      websdr_sv1btl_package.zip
SHA-256:  9225fe31292c8ca5dbf0c52b2258f732d4d39f0b0764640fce6293501e249386


WHAT IS NEW
-----------


1. Hover line through the waterfall

With Type = "spectrum + waterfall", the dashed yellow line that follows the mouse over the spectrum now runs down the whole waterfall too, as in PhantomSDR-Plus. Nothing to set up.

2. Band buttons remember your last frequency, mode and filter

- Each amateur band button remembers the last frequency you tuned in that band, together with the mode and the filter (bandwidth). Pressing it again later brings you back exactly there.
- A second press on the band button that is already lit goes back to the band's default frequency, mode and filter.
- It is kept in each visitor's own browser, so every listener has their own.

3. Receive Diversity (desktop and mobile pages), as in PhantomSDR-Plus

Your receiver is combined with a SECOND RECEIVER SOMEWHERE ELSE, and the speaker plays whichever of the two hears the station better at that moment. When one site is in a fade the other usually is not, so you keep copy through QSB, and two sites also have different local noise. It switches between the two (with a short crossfade); it does not add the signals together, so it buys continuity, not a stronger signal.

How to use it:
- Desktop page: the "Receive Diversity" panel in the middle column, just above the "Switch to another WebSDR" links. Mobile page: the "Receive Diversity:" section under the RADE status line, above Memories. Click/tap it to open it.
- Choose what the second receiver is and type its address, then Start:
    UberSDR      its normal web address, e.g. sdr.example.org (not port 8073)
    KiwiSDR      host:8073
    PhantomSDR+  host:8900
    WebSDR        host:8901  (through your station's relay, see point 4)
  Nothing has to be set up on the other receiver.
- Tune as usual: the second receiver follows your frequency, mode and filter by itself.
- You listen 1 to 3 seconds behind real time. Lining up the two streams takes about 15 to 30 seconds of signal; until then the better one is already chosen ("Ready (unaligned)"). Both receivers must hear the station.
- The dot in the title shows which site you hear: green = your receiver, cyan = the second one. A small table shows the link, delay, SNR of both and the number of switches.
- "Remote SNR trim" (-15 ... +15 dB) biases the choice; +15 / -15 force one site, so you can hear each one alone.
- The ☰ button keeps every receiver you used, per type, in your browser. On the desktop page you can name them, drag them up or down to change the order, remove them, open their own page (🌍), and export / import the list as a file. On a phone: tap one to use it, 🌍, remove, export / import (export on the desktop and import the file on the phone to carry the list across).
- The CW and digital decoders and RADE keep using YOUR receiver; diversity feeds the speaker only.
- Please be considerate: a session uses one listener slot on the other receiver for as long as it runs.

4. WebSDR stations as the second receiver: the relay (port 8902)

A classic WebSDR (PA3FWM's software) accepts its audio only from its own page, so the connection goes through a small relay program on YOUR server (PhantomSDR-Plus's websdr_relay.py, in websdr_sv1btl/relay/, run as a Docker container of its own, separate from UberSDR).

*** The relay's port (8902 by default) must be forwarded (opened) on your router to the UberSDR machine, TCP, JUST LIKE 8901. Without it, WebSDR diversity works only inside your own network. UberSDR, KiwiSDR and PhantomSDR+ partners do not need the relay at all. ***

- install.sh offers to set it up (answer y). It asks for:
    your callsign (an e-mail too if you like) and your page's public address: both are sent to each WebSDR in the relay's User-Agent, so its operator knows who is connecting;
    the port: press Enter for 8902, or give another free one. The installer writes it into relay/websdr_relay.json and into station.js (diversityRelayPort), so the page finds the relay.
- It builds and starts the container (it restarts by itself after a reboot) and checks that it answers. Check from OUTSIDE your network (a phone on mobile data) that http://<your-address>:8902/status answers.
- On the other WebSDR's user list your session shows as "<callsign> diversity".
- The relay allows at most 10 sessions to any one WebSDR and 60 in all, passes on only tuning commands and refuses private addresses. WebSDR operators added their Origin check on purpose: keep these limits, and stop if an operator asks you to.
- uninstall.sh offers to remove the relay container (then you can close its port on the router).
- Setting it up by hand instead is described in the guide ("The WebSDR relay").


HOW TO UPGRADE
--------------

 
cd WebSDR-emulation-for-UberSDR      # the folder you cloned
   git pull
   bash install.sh

or download and unpack the new zip and run its install.sh.

- Your station.js and stationinfo.txt are kept. The new setting diversityRelayPort (default 8902) is added to your station.js by itself.
- The installer asks whether to set up the WebSDR relay (optional, see above). If you answer N, everything else still works; run install.sh again later to add it.
- The page files are written in place, so no UberSDR restart is needed.
- Listeners: press Ctrl+F5 once (desktop) or reload the mobile page.


LICENCES
--------

The Receive Diversity combiner, the receiver connections (UberSDR, KiwiSDR, PhantomSDR+, WebSDR), PhantomSDR-Plus's audio module and the WebSDR relay come from PhantomSDR-Plus (github.com/sv1btl/PhantomSDR-Plus) and, with sv1btl/diversity-ui.js, are under the GNU GPL v3, like the decoders. SV1BTL's own work stays under the MIT licence (see LICENSE).


Questions and problem reports:
https://github.com/sv1btl/WebSDR-emulation-for-UberSDR/issues

73 de SV1BTL

Bas ON5HB

Best regards,

Bas ON5HB

Ps. Running UberSDR.

Emmanuel SV1BTL

#6
Quote from: Bas ON5HB on Oct 26, 2026, 05:42 PMDiversity works great! Thanks

Thank you Bas. There is a minor update from yesterday... 3d spectrum is added, Gui at 90% and total fix on some decoders.
You can update the usual way.
cd WebSDR-emulation-for-UberSDR
   git pull
   bash install.sh
Please read: http://sv1btlham.no-ip.org:8901/sv1btl/readme.html

Waiting FreeDV RADE V2 and JTTY to end their test status, so to make a real upgrade.
Meanwhile DRM is already working for PhantomSDR+ and I am thinking to implement it also in WebSDR emulation, but no time until the weekend. To be honest, I don't know who is going to use DRM.
I'll post mewer information.

P.S. Just for reference, I use this .json file for receive diversity for both PhantomSDR and WebSDR emulation. It is the same file. You can of course modify it as you like.

Powered by EzPortal