Skip to content

Releases: Steven9101/FernSDR

FernSDR 0.1.2

Choose a tag to compare

@github-actions github-actions released this 05 Oct 22:57
  • 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, low and high
    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 --user or --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

Choose a tag to compare

@github-actions github-actions released this 05 Oct 09:16
  • 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

Choose a tag to compare

@github-actions github-actions released this 30 Sep 12:25

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...
Read more