Repository navigation
Releases: Steven9101/FernSDR
Releases · Steven9101/FernSDR
Release list
FernSDR 0.1.2
- An IQ band shows its whole sample rate and stops at 0 Hz. An SDRplay at
10 Msps around 5 MHz showed 1 to 9 MHz, and lowering the centre showed
negative frequencies; it now shows 0 to 10 MHz, the edges a few dB darker
where the radio's filter rolls off.usable_fraction,lowandhigh
still narrow a band. The setup offers shortwave from 0 Hz in one band for
an SDRplay and other wide IQ radios. - Airspy R2, Mini, HF+ and HF+ Discovery run through the new Fern-Airspy
module, installed from the admin panel; the setup suggests bands from each
radio's own ranges and rates. - The RX-888 module 0.1.1 finds the board when it comes back on the USB 3
bus after its firmware loads; with 0.1.0 it waited on the USB 2 bus and
gave up every time. Update it on the Modules page. - FT4 is decoded by Fern-FT8 0.2.0, as sensitive as WSJT-X; the Decoders
page offers it once FT8 runs. Update the module on the Modules page. - A receiver in Docker updates from the admin panel as an installed one
does: the signed release, a trial of a minute and the way back, without
restarting the container and without the Docker socket. It keeps the
release in its volume and checks it on every start; a newer image wins.
Started with--useror--read-only, it is still updated by pulling the
new image. - "Start with the computer" can be switched on the Updates page, for
systemd, OpenRC, runit and SysV init. It takes effect at the next start of
the machine and does not stop the receiver. - The admin overview shows how much processor and memory FernSDR uses, and
inside a container or a service with limits, those limits. - The decodes open by themselves when a listener settles on a decoded
frequency, and the tab they had comes back when they leave. In the side
column each decode reads in two lines, without a scroll bar across it. - The receiver's tab bar keeps four tabs and puts the rest behind a More
button, so History, Decodes and the operator's tab no longer squeeze it. - The band preview in the admin panel is drawn at the screen's own
resolution and fills its card. - The admin navigation no longer reruns its indicator in a loop on the setup
page.
FernSDR 0.1.1
- The waterfall is drawn smoothly again. 0.1.0 drew each cell of a wide
view on its own, so that a carrier one cell wide kept its full strength,
but on a real band that made the whole picture harsher and blockier; this
goes back to blending neighbouring cells, as before 0.1.0.
FernSDR 0.1.0
The first release.
Receiver
- Demodulates USB, LSB, CW, CW-L, AM, synchronous AM, NFM and DSB, each with its
own passband presets and a passband that can be dragged to any width; the
SSB presets include 2.4 kHz (300 to 2700 Hz) and 2.7 kHz (200 to
2900 Hz). Wide FM, in mono, on a band of 240 kHz or more that shows FM
broadcasting (anywhere with wfm = yes), demodulated once per station for
everyone tuned to it, with RDS: the station's name, programme type and radiotext. - Runs several bands at once from standard input, files, UDP, ka9q-radio
multicast, a synthetic test source or a hardware module; the RTL-SDR,
RX-888 and SDRplay modules are installed from the admin panel, and a
direct-sampling band of 129.6 Msps from the RX-888 takes about three
quarters of a core of a Ryzen 9 9950X held to AVX2. - Hours on the air for each band, as UTC times or by sunrise and sunset at
the station's grid square, so that one radio serves 40 m at night and 20 m
by day; listeners are told ten minutes before and move with the input, and
the hours apply without a restart. - Decoder modules on a narrow channel of a band's shared spectrum, sandboxed
and at idle priority; Fern-FT8 is the first. Decodes are checked before
they are kept for a day, shown to listeners where the operator makes the
decoder public (a list, a filter and a map, one click from being tuned),
served at/api/decodes, and reported to PSK Reporter at a switch. - Shares one FFT front end per band across its listeners, using AVX-512 on AMD,
AVX2, SSE2, NEON or plain C++, whichever the machine has. A band nobody
listens to and that keeps no archive skips the listeners' transform and
makes only four waterfall lines a second, back to every line as soon as a
listener arrives, and the waterfall averages no transforms that overlap by
more than 75 %: an idle 2 Msps band takes a fifth of the CPU it did. - Per listener: automatic gain in four speeds, each set against the band noise
around the channel so that the noise stays level between words and a weaker
station taking over is up within half a second, following the carrier on
AM, or manual gain; noise reduction, an automatic notch (manual notches
through the protocol), an automatic squelch that needs no threshold, an
audio low cut and NFM de-emphasis. - Per band: noise blanker, DC removal, IQ balance and swap, frequency and ppm
correction measured against a known carrier, S-meter calibration in dBm, and
an optional waterfall archive (the panel offers 6 to 72 hours). - Audio in NAC3, coded against the channel's own noise, and a waterfall in
WFC5, rows through a context-modelled range coder that takes about a third
less than WFC4 (still sent to older pages), with three data profiles for
listeners on slow links. - An optional listener timeout: a listener who has not touched anything for
the set minutes is asked whether they are still listening, and their place
is freed a minute later if nobody answers. - Raises its own limit on open files at start, so more than about a thousand
listeners can connect without the service having to be configured for it. - A bandwidth budget per listener that gives up waterfall before audio when
the link is too slow, and tells a stall from a slow link: after Wi-Fi
retries, a phone changing cells or a connection that drops out for a
moment, the waterfall and the audio are back in full within a few seconds.
A queue building up in the network, which shows in the connection's round
trip, takes the waterfall and not the audio. - A band for an input module takes its signal and first sample rate from
what the module says of itself, and a band the panel saves that
contradicts the module, or sets fft_size, spectrum_bins, low or high
outside what the band can run with, is refused with what to change; a
receiver that started with such a file before still starts as it did,
and says so in its log.
Listener page
- Drawn like the admin panel: Inter (22 KB, cut to the characters the page
prints and fetched once the stream has room, the system's font
until it arrives), its greys in both themes, controls grouped on filled
surfaces under a quiet heading, the panels' tabs and every choice as one
well with the chosen option raised, and switches and sliders as there.
The waterfall, the dial and the axes keep their monospaced figures, and an
operator's colours from the Appearance page still apply. - Waterfall and spectrum with peak hold and four colour maps (Classic unless
the operator or the listener picks another), tuning by drag, tap, wheel,
digit or typed frequency, and a phone layout with a sheet of controls. - A waterfall as fine as the screen at every zoom, on every band: a view
finer than the band's own line gets a spectrum of its own from the
channelizer's transform, with bins down to 2 Hz. On a 0 to 30 MHz band
an SSB signal on 40 m fills the view instead of three kilohertz-wide bins,
for at most 0.15 % of a core per view to compute, and views that overlap
share the work. - The band plan of the station's IARU region, or of the United States,
Canada, the United Kingdom, Germany, Australia or Japan, chosen on the
Station page or worked out from the grid square: amateur segments with
their band ("40 m, CW"), broadcast, utility and licence-free allocations
under them, and markers for the FT8, FT4, WSPR and JS8 dials, beacons and
time stations that tune to them when tapped. Every row cites its source,
a test checks the files for gaps and overlaps, and a receiver loads only
the few kilobytes its plan needs, after the page is up. - Tools under the dial for everyone: VFO A and B, bookmarks (kept in the
browser, exported and imported as a file), recording what you hear,
a listening log exported as ADIF (marked as heard, not worked) or CSV, and
a link to the listener's own radio over its CAT cable (Kenwood, Elecraft
and FlexRadio, Yaesu, the FT-817 family, Icom CI-V) that follows its dial,
sets it, or both. Each loads the first time it is opened. - Works with CATSync and the programs like it that keep a transceiver and
a web receiver on the same frequency and mode: to them the page looks like
a PA3FWM WebSDR, so the radio's dial tunes the receiver and a click on the
waterfall tunes the radio. - Full controls, a switch in Display, add bass and treble (kept per kind of
mode, applied in the browser), the audio low cut and NFM de-emphasis. - The band list names what each band listens with (RX-888, RTL-SDR,
SDRplay, a recording, a network stream) and gives its range in MHz; from
ten bands on it has a search by name or by a frequency inside a band. - Keyboard shortcuts for tuning, volume, mute, zoom, filter width, mode,
typing a frequency and noise reduction;?lists them. - Remembers frequency, filter and zoom per band; links open on the same signal
and view. Tuning that takes the passband off screen, by key, wheel or a
typed frequency, brings the view along with the passband in its middle. - A chat in which frequencies are links, and widgets the operator chooses:
among them space weather (NOAA's scales, solar flux, sunspots, Kp and A,
X-rays, the solar wind, and for each band from 160 m to 6 m whether it is
open here, from the nearest ionosonde's MUF), fetched by the receiver
every ten minutes so that no listener's browser talks to anyone else, and
a lightning map centred on the station's locator, a day and night map
with the greyline, the station and its sunrise and sunset, and a clock with
UTC and the listener's own time, and a station card with the region
around the receiver, its locator, antenna and what it listens with.
Widgets showing another site's page load it only when the listener asks,
so no third-party page, cookie banner or tracker loads with the receiver. - A layout of the listener's own, kept in their browser and arranged on the
page itself: Customise in Display, or the L key, outlines each part and
lets it be hidden and brought back (the meter, the volume, the band name,
each tool under the dial, the status line), sets the meter's face and the
side of the controls, and gives the line under the spectrum a handle to
drag, or move with the arrow keys, for as tall a spectrum as wanted. The
operator's theme sets the look and the meter a listener starts with; one
button goes back to it. - An S-meter as a bar, a needle or numbers, with a trace of the last minute.
In SAM the Receive panel and the meter say whether the carrier is locked
and how far it sits from the dial.
In NFM the Receive panel names the station's CTCSS tone, measured by the
receiver over two seconds, and a narrow notch at its measured frequency
takes it out of the audio unless the listener switches that off. With
full controls, a tone squelch keeps NFM silent until a chosen tone is
received, so only one repeater's or group's users are heard. - The waterfall archive in its panel or full size, filling the window, with
its times on the clock (14:00, 14:10 rather than evenly spread) in UTC or
local time and the date at midnight. Full size, six hours and more are
drawn as tall as the day needs, two pixels a minute, and scrolled like a
full-day page; its pieces load as they come into view, about 3 MB for a
whole day of a 2.5 MHz band. - The note that the receiver sends fewer waterfall lines to stay in its
bandwidth appears after five seconds of it and stays until fifteen seconds
at the full rate, rather than blinking with every reading. - Playback that holds its pitch steady while it keeps the delay short: about
230 ms from the input to the browser's audio output in the benchmark lab,
on a plain-HTTP page. After a slow or broken stretch of connection the
extra buffer it took is given back within seconds once audio arrives
evenly again. - A listener the operator disconnects stays disconnected until they load
th...