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.

FernSDR: what I learned from NovaSDR and PhantomSDR+ (preview)

Started by magicint1337, Sep 27, 2026, 09:00 PM

Previous topic - Next topic

magicint1337

Hey everyone,

It's been a long time since my last development update here. I took a break and used that time to rethink WebSDR from the ground up.

I looked at the WebSDR software that has come out recently, UberSDR among others, and at the problems people kept running into with the existing projects, especially installation and configuration. NovaSDR and PhantomSDR+ taught me a lot. They're not abandoned, but rebuilding them into the base I wanted would have meant rewriting them anyway.

So I did exactly that and started fresh. The result is FernSDR. (I promise this is the last one, no more new projects :D)

This is a preview, not a release yet. I'd love feedback before 1.0.



What's different

  • Written from scratch in C++, with no backend libraries at all. Everything is written for this project, including the FFT, the audio codec and the waterfall compression, and all of it is tuned for one job: serving a WebSDR with low latency and low bandwidth.
  • Built around modules. The core takes no dependencies. Anything that needs a vendor library, like RTL-SDR and other devices, comes as a module that you install from the admin panel.
  • A rebuilt AGC. It works on the same principle as ka9q-radio's: steady, with no pumping on noise, and a hang that holds the level through pauses in speech. Weak signals stay weak and strong ones don't blast you. It's the best-sounding AGC I've built.
  • An admin panel, finally. Reachable from your local network when you host over HTTP, and remotely when you host over HTTPS with a domain. From there you can:
    • watch every band and every listener live
    • change a dongle's gain on the fly
    • moderate the chat
    • set per-band corrections: crystal error, frequency offset, I/Q balance
    • install and switch modules
    • install updates with one click
  • Customizable without touching code.
    • Light and dark themes with your own accent color, and a background picture.
    • The S-meter as numbers or as an analog needle.
    • Widgets you can add, like band conditions, a lightning map, a UTC clock, pictures, links or an embedded page of your own.
  • Waterfall history. Up to 24 hours.
  • A new Svelte frontend. Small, fast, and optimized for phones as much as desktops.
  • Easy to try. A built-in demo input lets you run it without any receiver hardware.
  • Rewritten documentation. Written so newcomers can follow it too.



Benchmarks

This is the first time I'm publishing proper benchmarks against other software. I compared FernSDR with 10 other WebSDR receivers on identical generated input, one receiver at a time, with real browsers as listeners. A few results:

  • Latency (antenna to speaker): ~230 ms. The next best was 264 ms, most others were 375 ms to over 1 s.
  • Capacity: 1600 simultaneous listeners on two CPU cores, using under 100 MB of RAM. Most others topped out around 200.
  • Page size: 78 kB for the whole page.
  • Waterfall: about a third smaller than before, thanks to a new compression.
  • Weak connections: it keeps playing on a 24 kbit/s connection and recovers about a second after a 15-second outage.

To be fair, it doesn't win every row. PA3FWM's WebSDR still uses less CPU per listener, for example. The full tables, the method and the raw data will be published with the release, including where others do better.



Coming next

  • Decoders running in the backend: FT8, WSPR and more.
  • Updates through the admin panel, so you always stay current.



One more thing: while testing I found a critical security issue in UberSDR (CVE-2026-97723). I reported it to the developer, and we got it fixed right away. That's how open source should work.

Thanks to everyone for the support over the years. I hope to see many of you on FernSDR once it's released, and I'm looking forward to your feedback on the preview!
Creator of phasor-labs (PhantomSDR+, NovaSDR, VertexSDR)

magicint1337

Creator of phasor-labs (PhantomSDR+, NovaSDR, VertexSDR)

Emmanuel SV1BTL

Congratulations Steven. Wish you success with the project.

magicint1337

Creator of phasor-labs (PhantomSDR+, NovaSDR, VertexSDR)


Phil AB9IL

This is some good news! I have very much enjoyed NovaSDR+ and appreciate the improvements this new work brings. All of these things matter, and I hope to see more site operators picking this for their supporting software.

Thank you for advancing the state of networked / multiuser SDRs. Also, btw, pay no attention to all those trolling MFs on Reddit, who's only purpose is to troll. You're making something great; people will use this. People will build upon it too, into the future, as standing on the shoulders of giants.


Emmanuel SV1BTL

Good morning from Greece.
Is there any link to see and hear the FernSDR on action?
Bas and Dennis can you share with us your instances, so to 'play' with them?

Bas ON5HB

Hi Manolis,

I don't have it running 24/7, just testing at this stage.

I suggest you install it yourself, it's not hard, then you learn about the back-office as it's quite different.

For now it works but has many quirks that need to be solved.
However, it does support a lot of SDR's, even the RTL's.
Best regards,

Bas ON5HB

Ps. Running UberSDR.

Powered by EzPortal