Breaking changes
- REST mutates nodes, not device sets: device set, channel, scanner, hunt, playback, time machine and network export routes are replaced by node routes and node actions, and a template is applied to a radio node (c0c462b)
Features
- AD936x radios recall known frequencies from fast-lock profiles, sleep the TX synthesizer when idle, offer DDS test tones, AGC thresholds and chip settings, and show temperature and RSSI on the Device node (d2fbf05)
- Antenna calculator: simulated SWR, impedance, gain, patterns and current for every design, matching networks, resonances, trim to resonance, NEC and Touchstone export, and saving to the NanoVNA library (bf77ea6)
- Calls bring their clip on the events wire, kept only where a log or an output that saves audio receives them. Audio wires carry live audio only (c0c462b)
- Decoder faces light up while audio passes the squelch, and the face the scope selected carries the accent on its top bar (7fbc3db)
- Device: Stop closes the radio and keeps the node, Start opens it again (5bd6352)
- FUNcube Dongle Pro+ driver: raw USB on Linux and Windows, Core Audio on macOS (4f73a2b)
- GSM downlink decoder: cell info, paging, assignments and SDCCH follow (032c2df)
- ISM sensors decoder: OOK and FSK weather stations, thermometers, tyre sensors, remotes and door sensors (2259ea8)
- Map shows exactly what its wires carry, including DSC, VDL2, HFDL, Inmarsat and Iridium positions (c0c462b)
- Only wired decoders fill the decoder log (c0c462b)
- Pictures show on the Video node they are wired to (c0c462b)
- Spectrum monitor finds faint LoRa as chirps and decodes it, reports front end clipping instead of its spurs, and keeps up at 10 MS/s (c347617)
- Spectrum monitor: optional start and stop frequency (6650f00)
- STANAG modem identifier: names HF data modems and reads 110A rates (39997e2)
- TETRA decoder: cell identity, calls, talkers, SDS text and LIP positions from a downlink (36f9658)
- Tetrapol decoder: system info, group calls, paging and voice activity on control and traffic channels (5677841)
- Wireless M-Bus decoder: water, heat and energy meters in modes S, T and C, with AES keys per meter (54f477e)
- Wires carry typed contracts. Saved wires no input takes are removed with a notice, and a beam steers from the DF bearing port (c0c462b)
Fixes
- A restarted server opens the active workspace's radios without waiting for a browser (b5df47a)
- A scope no longer retunes a lane on Auto (61b0b61)
- A spectrum monitor that cannot start no longer logs a fake transmission (c0c462b)
- AD936x radios load a decimating FIR for every rate, so the band edges no longer fill with converter noise (8f87bd8)
- An opened decoder log row stays in view while new rows arrive (718458c)
- Audio and baseband spectra come from the server, not a second FFT in the browser (b96ab41)
- Audio recording: a stopped recorder reports the frames its file really holds (4795d54)
- Baseband and position wires show their colour (c0c462b)
- Benchmarks: one table per suite, decoders plotted on shared noise and speed axes (bd6feed)
- Calmer faces: default chips lose their fill, healthy queues dim, idle recorder stats hide, decoder log reads easier (b4cdbc6)
- Clearing a log keeps what other sinks hold; a decoder says why it is not running (c0c462b)
- Custom waterfall palette survives reload (d2b08ce)
- Decoder log search matches chip height; device footer keeps Forget radio beside its readouts; Queue shows only when lagging (5cb1239)
- Desktop: downloads open a native save dialog (af6b69b)
- Desktop: TLS updated for the rustls advisories (4795d54)
- Desktop update checks send app version, OS and architecture (327e050)
- Device faces animate between lane layouts: rows grow and fold, the node height and footer ease, ports and wires follow; RX1/TX1 keep their names when RX2 turns on; TX gain per lane once lanes are split (5cb1239)
- Each Audio recorder keeps its own file, even when another one records the same channel (c0c462b)
- Event filter position rule covers radiosondes; unknown filter kinds are removed with a notice; event output names kinds like the log (c0c462b)
- Event port tooltips count delivered, ignored, unrouted and lost events (c0c462b)
- Faces share one type scale, control height, slider and button style; plots follow the light theme (057b622)
- FT8, FT4 and WSPR show windows skipped while the decoder is busy (367866e)
- Input tooltips name the event kinds the input ignores (c0c462b)
- Library and hotkeys act on the selected node only; arrow keys tune a selected decoder, and the server refuses a locked one (c0c462b)
- Linux: NVIDIA machines keep the accelerated webview where the display allows it (363ff9f)
- Locks hold for every client, undo, auto tuning and template re-apply; hunts and surveys refuse a frequency their radio cannot hear (888dbcb)
- Node errors show as a header icon; wire refusals only toast (8f15994)
- Nodes keep one width while their content changes (c0c462b)
- Nodes mark the problems the server found, such as a radio that is not open (c0c462b)
- Presets place their decoders on the canvas (c0c462b)
- Propagation maps run on the server and keep the last 6 h across reloads (c0c462b)
- Readouts respect event filters (c0c462b)
- RTL-SDR: tuning and settings work on Windows dongles that refuse control requests while streaming (6412c4a)
- Satellites, scanners and hunts steer only what their control wire reaches (c0c462b)
- Scanner range fields keep Hz precision instead of rounding to 0.1 MHz (00a3e4d)
- Scanners and hunts show the lane they watch, trunks and spectrum monitors offer audio, and logs take a call audio wire (c0c462b)
- Scope: legend and channel labels no longer overlap the cursor readout (21339b3)
- A decoder on a control wire is tuned only by that wire; the server refuses other retunes (d164be3)
- Scope: shade the band edges where AD936x, HackRF and Airspy filters roll off and can alias (64bfe38)
- Sinks count lost records, filtered records survive rewires, and a shut out IQ Recorder shows a problem (c0c462b)
- Speaker: a large audio graph no longer stalls playback (6ce24b7)
- Speakers, scopes and video nodes follow a rewire without reopening (c0c462b)
- Spectrum: FFT size follows the sample rate, keeping bins near 1 kHz up to 262,144 points. Capture buffers hold 100 ms up to 335 MS/s. (d10d909)
- Broadcast channels (WFM, analog TV, DAB, DRM, digital TV) no longer log calls (c0c462b)
- Station filters and log stations: FT8 names the sender after CQ DX, radar tracks are T, pictures name no station (c0c462b)
- Virtual band source no longer clips (0d3358e)
- Wiring hints come from the server (c0c462b)
Container image: docker pull ghcr.io/newspicel/sdrmm:2.3.0
What's Changed
- Unify face design: type scale, heights, radii, sliders, buttons, light plots by @Newspicel in #137
- Antenna calculator: simulated SWR, gain, patterns and matching by @Newspicel in #141
- TETRA decoder by @Newspicel in #136
- ISM sensors: OOK and FSK weather stations, thermometers, tyre sensors, remotes by @Newspicel in #138
- Tetrapol decoder: control and traffic channel signalling by @Newspicel in #140
- STANAG modem identifier by @Newspicel in #139
- GSM downlink decoder: cell info, paging, assignments, SDCCH follow by @Newspicel in #142
- Typed node contracts, server-resolved patch by @Newspicel in #144
Full Changelog: v2.2.0...v2.3.0