Features
- A network bind serves HTTPS with a self-signed certificate by default; --no-tls keeps plain HTTP behind a proxy or tunnel (01aad1f)
- Aaronia SPECTRAN V6 and V6 ECO through the RTSA-Suite PRO: receive, and transmit half duplex (12b3bcc)
- Array processors share one face built from what each declares; plugin processors get it too (d00f9c1)
- ATV: FM pictures down to 5 dB CNR, standard PAL/NTSC colour, ±3 MHz tuning error, channel rate setting and Auto luma bandwidth (4d06988)
- Chromium browsers connect over WebTransport when the server serves HTTPS itself: audio survives packet loss and a stalled picture no longer holds back the rest (01aad1f)
- Desktop app runs on Chromium (CEF) instead of the system webview (76a0acc)
- DMR: ARC4 and AES calls joined late start from the late-entry MI (3e2ca02)
- DMR: Motorola Basic Privacy deciphered without a key, ARC4 and AES with the operator's keys (231e7e6)
- DV decoders and trunk nodes can play voice through a DVSI AMBE-3000/3003 chip (ThumbDV, USB-3000, USB-3003) on a serial port, in builds with the
dvsifeature (f4556fb) - Event outputs keep webhook URLs, tokens and passwords on the server, never in a workspace or its export (d00f9c1)
- FT8, FT4 and WSPR decodes carry their UTC slot and a DT from it. FT8 and FT4 confirm weak repeats of stations heard one period earlier. (19d6cba)
- iPhone app needs iOS 27 (cf9f364)
- P25 and NXDN: ADP, DES-OFB, AES and the NXDN scrambler deciphered with the operator's keys (ebc3a8c)
- POCSAG: Swissphone IDEA decryption with the operator's keys (3c07edf)
- Speaker: pick an output device per Speaker, to feed WSJT-X, JS8Call or fldigi through virtual devices (3e61882)
- The workspace bar warns when the link to the server is lossy, slow or falling behind (01aad1f)
- Transmit: Transmitter, Modulator and Microphone nodes send voice, APRS messages, channels and lanes on radios that transmit, with a PTT key, VOX and an occupied-width readout (5a662a7)
- Trunk: keys on the trunk node decipher the DMR calls it follows (3e2ca02)
- Trunk nodes follow P25 trunked systems; the trunk follower is no longer DMR-only (d00f9c1)
- Trunk system: priority and lockout talkgroups, granted talkgroup per channel, site readout and control channel failover (ebc3a8c)
- Video reaches the browser as JPEG and IQ as 16-bit samples, a fraction of the bandwidth; clients asking for the same spectrum share one reduction (01aad1f)
Fixes
- A plain http:// request to the HTTPS port is redirected to https:// (01aad1f)
- A radio plugged in during a workspace switch no longer reopens the old workspace (d00f9c1)
- AM and WFM decode faster; AM audio rolls off treble hiss (a96f4a6)
- Analog video and DAB decode much faster on x86 (9fc99d5)
- ATV decodes analog video about a third faster (e0f3b57)
- Broadcast faces show decoding health, not decoded content; service Auto names the service it picked (016e089)
- Builds against FFmpeg 8 again (0ca1a2d)
- Channel edits: the last edit always wins (d00f9c1)
- WFM: the channel filter takes the last halving of the rate; noise blanker and IF filter run at that rate (813d439)
- CPS: Radtel RT-4D names with control bytes read as the radio stores them (cf9f364)
- DAB+ and DRM: HE-AAC v2 stations no longer sound robotic (e81a4db)
- DAB+ plays services whose superframes end in zero padding, and DAB decodes with less than half the CPU (d4a64ca)
- Faster FIR filters and DDC, with half-band stages and 100 dB rejection beyond half the output rate. FFTs of sizes that aren't powers of two run two to four times faster on ARM (1f4ebb8)
- Desktop: window has its close, minimize and zoom buttons again and no longer reopens dead tabs after a crash (222e818)
- Digital voice: a call's first burst decodes at any symbol timing, so DMR headers no longer drop (532be34)
- Digital voice decodes bursts about 2 dB weaker and keeps decoding GMSK and MSK under twice the carrier offset (496420b)
- Digital voice keeps decoding when the noise floor rises during a call (496420b)
- DMR decodes data blocks and embedded link control with soft decisions and reports a lost embedded fragment (f84c535)
- A network bind without a token generates one, keeps it beside the database and logs a sign-in link, so Docker Compose starts with no setup.
--no-authruns it open on purpose (1f9ef9f) - Docker image shows its real version instead of 0.0.0 (b317e51)
- Event outputs survive a huge Retry-After, and a feed changed on the same address keeps listening (d00f9c1)
- Faster FFTs on AMD CPUs (7366fa4)
- Faster FFTs on ARM, in WebAssembly and on AMD CPUs (3f88c7a)
- Faster startup: map, faces and tools load on demand (d00f9c1)
- IF filter edits reach a running channel, and the spectrum shows its edges and notches (5bd22d2)
- IQ recordings, network exports and the time machine survive a lane restart, and mark capture gaps as SigMF segments (d00f9c1)
- LoRa: 1.5 to 2 dB more sensitive, follows clock drift past 100 ppm, 2 to 3 times faster (cfd19c9)
- LoRa: SF12 follows a sender clock off by 100 ppm, and senders up to a third of the band off decode (c814682)
- Plots repaint only on new data and pause off screen (d00f9c1)
- Plugin template: cargo generate a new decoder plugin from the example (fb8fad7)
- Plugins: memory capped per instance, compiled builds cached on disk (d00f9c1)
- Plugins: one clashing or duplicate plugin is refused alone with an error; the rest load (d00f9c1)
- POCSAG IDEA pages carry the pager's header check: the synth seals it, the decoder drops pages that fail it, and the minute nibble uses the pager's constant instead of the key sum (54762be)
- Readouts round frequencies to the decoder's precision instead of printing nine decimals (df3e8e9)
- Rotator: a Winegard Trav'ler no longer misses an elevation move, starts from any console menu, and a Heading setting points a mount not facing north (043a832)
- Server: the generated token stays out of bug reports, the UI refuses framing, and an open server answers only to loopback and its own names (d00f9c1)
- .sigmf archive uploads stream to disk instead of memory (d00f9c1)
- Slider settings wrap to their own row instead of scrolling the popover (551fd44)
- SoapySDR: LimeSDR no longer fails with "sample rate has not been configured" (b994109)
- Spectrum Monitor identifies and decodes TETRA and DRM (2a4b5f9)
- Spectrum Monitor uses a third of the CPU on busy bands, shows lost IQ once and no longer repeats data-only transmissions every 30 s (2a4b5f9)
- Spectrum: overlapping transforms average up to 64 per frame, batched on the GPU at wide rates (04d18f8)
- Spectrum stops streaming once nothing reads it (d00f9c1)
- Stereo FM uses half the CPU (4d89218)
- The Nix package builds again with CEF 156 (cf9f364)
- TUN output passes only multicast and its own subnet, a remote Postgres needs TLS unless the URL sets sslmode, iqlink bounds control lines (d00f9c1)
- Unused output credentials and spools left by a crashed import are cleaned up. (d00f9c1)
- WFM: the RDS decoder idles on stations without RDS (3ff784f)
- WiFi 802.11b: 1 to 2 dB more sensitive at every rate (coherent detection, CCK chip matched filter), 11 Mbit/s holds to 200 kHz offset, long CCK frames track clock offset, faster idle (221b23c)
- WiFi: the 802.11b and g/n receiver needs a third less CPU on a busy band (b74915f)
Container image: docker pull ghcr.io/newspicel/sdrmm:2.4.4
What's Changed
- Bump mfsk-core from 0.14.0 to 0.15.1 by @dependabot[bot] in #180
- Bump the cargo-minor group across 2 directories with 4 updates by @dependabot[bot] in #179
- Bump the npm-minor group across 2 directories with 14 updates by @dependabot[bot] in #178
- Bump the actions group across 2 directories with 2 updates by @dependabot[bot] in #177
- Aaronia SPECTRAN V6 and V6 ECO through the RTSA API by @Newspicel in #186
Full Changelog: v2.4.3...v2.4.4