RimuSDR 1.1.13 : Performance and stability
15 enhancements and 68 fixes across RimuSDR, RimuDAX, RimuCAT and the shared API layer.
Version 1.1.13
Enhancements
RimuSDR
- Panadapter rendering performance - Greatly reduced panadapter rendering CPU usage, with spectrum drawing now over 5x faster, for a smoother display and more responsive tuning, especially while dragging slices.
- Receive audio performance - Reduced audio processing overhead that could cause glitches under load, most noticeably on Raspberry Pi.
- Antenna Genius on another subnet - Controllers outside the local network can now be reached with a manually configured remote connection, rather than relying on discovery.
- Power Genius XL fan control - Direct control of a connected amplifier's fan mode (STANDARD, CONTEST, BROADCAST). Off by default.
- Network Diagnostics History Graph - Graphs latency over selectable time windows up to 24 hours, with transmit periods shaded behind the trace.
- Slice reference line colors - The RIT carrier and RTTY space lines now follow the same color convention as the tuning line, so it is clear at a glance which slice each line belongs to.
- Standardized color themes - The Themes tab of Display Settings now offers a choice of two color schemes, Neutral (the existing look) and Deep Teal, plus an optional High visibility control outline that lightens button and field borders; both apply on restart, and they replace the old Default/Medium/High contrast levels.
- Color-blind accessibility - Permanent and temporary TNFs are now distinguished by shape as well as color.
- RAC Canada and RSGB UK band plans - The Band Privileges selector now offers Canadian (RAC) and UK (RSGB) sub-band plans alongside ARRL US and the IARU regions. The UK data was contributed by Jonathan Perkins, G4IVV.
RimuDAX
- Audio path performance - Lower CPU use throughout the audio path.
- Display performance - Lower CPU use for the on-screen meters and frequency display.
- Behavior under overload - When the machine cannot keep up, the oldest buffered audio is now dropped rather than the newest, so a stall no longer replays roughly 50 ms of stale audio before catching up.
- Fewer dependencies - RimuDAX no longer requires PortAudio or JACK, and the AppImage no longer carries them.
RimuCAT
- VFO B and split over Hamlib - A Hamlib port can now hold two slices, so VFO B and split operation work through rigctld.
- VFO-mode rigctl dialect - Logging programs that require this dialect can now connect.
Fixes
RimuSDR
- UI flicker on Linux - Controls no longer flicker when hovered. The Linux packages were forced through XWayland, the X11 compatibility layer; they now run natively on Wayland where the desktop provides it.
- Slice disappearing from the display - A slice could vanish after closing and reopening panadapters. It stayed active on the radio, but its tuning flag was no longer drawn.
- Slice mute affecting other slices - Muting one slice no longer silences monitoring audio from the others, and a new slice is no longer silent until muted and unmuted once.
- CW/Voice side panel - No longer shows the wrong controls for the current mode, for example the CW panel while on USB, after a mode or TX-slice change.
- PC microphone level - The level slider had no effect when a PC microphone was the input source, and now also adjusts the operating system's own input level.
- PC microphone mute - Setting the level to 0 now always mutes, and the required boost is remembered per microphone.
- MIDI encoders - Relative (endless) encoders no longer slowly turn a control down when left untouched.
- Crashes on close and disconnect - Fixed rare crashes when closing the application or losing the radio connection with certain windows or panels open.
- USB Cables window crash - Fixed a possible crash when a cable was plugged in or removed.
- IARU Region 1 crash - Fixed a crash when changing the region setting.
- Startup and update checks - The application no longer freezes at startup, or when checking for updates, if the update server is slow to respond.
- Transmit meters under multiFLEX - Forward power and SWR no longer show another client's readings while that client transmits.
- Other clients' slices - Slice tuning flags can no longer be dragged or edited on a slice owned by another client.
- Duplicate station name - A disconnect caused by a duplicate station identity now explains itself instead of reporting a generic disconnection.
- Panadapter scale after connecting - The dBm scale no longer shows a shifted trace for a few seconds immediately after connecting.
- Filter and mode presets - The preset panel no longer shows the wrong mode's presets, or ignores a click, after the slice mode changes by some other route such as CAT, another client or a memory recall.
- Digital mode filter centering - The filter now recenters automatically when a digital mode's reference point changes, including DIGU/DIGL offset and RTTY shift.
- Filter edge limits - Added the missing RTTY, CW pitch and FM limits, so dragging a filter edge can no longer exceed a valid range.
- Panadapter zoom buttons - The + and - buttons now recenter the display consistently.
- Antenna Genius control - An RX antenna re-click no longer leaves a port with a band but no antenna, the radio tab no longer lists a non-existent radio, and network settings are validated before being applied.
- Antenna Genius connection errors - A failed connection attempt now reports why, with clearer guidance when a remote device is missing its password.
- CW message on disconnect - An in-progress CWX message is now stopped when disconnecting, instead of leaving the radio's CW system without an owner.
- Blank station name - Closed the remaining routes by which an empty station name could reach the radio.
- TUNE indicator - The indicator could stay lit after tuning had already stopped, through a rare timing race.
- Panadapter panel cleanup - Repeatedly closing and reopening panadapter and waterfall panels no longer leaks resources.
- Slice flag hover - Hovering the base of a tuning flag no longer briefly freezes the display and mouse pointer. This was caused by using custom mouse pointers on Linux and required reverting to standard pointers.
- Digital mode entry fields - Typing into the offset, mark and shift fields no longer sends incomplete values to the radio mid-keystroke.
- Slice flag placement - Flags no longer overlap one another or hang off the edge of the panadapter, frequency and dBm labels line up with the grid, and clicking a flag's frequency now selects that slice.
- Waterfall color range - The color ramp reaches white only at the very top of its range, restoring detail in the strongest signals.
- Focus Helper on Windows - Returns focus to the logging application reliably in more situations, including WriteLog, and can no longer become stuck.
- Control sizing - Fixed clipped text and arrows on several numeric entry boxes including RIT, XIT and the filter dialog, and the AMP and TUN buttons no longer overlap their neighbors.
- Panel appearance - Dock panels now have a visible border, and the CWX panel has proper spacing around its edges.
- Undocked panels on restart - A CWX or DVK panel left popped out when the application closed now comes back with its controls, instead of an empty window with no way to redock it.
- CWX Send and Live - When the radio refuses a CWX message, for example because another client is transmitting, the radio's own explanation is now shown instead of Send appearing to do nothing.
- Remote On and multiFLEX status - Radio Setup now reads these settings, and the display brightness, from the radio rather than showing fixed defaults, so a setting the radio has disabled no longer reads Enabled.
- Slice Mode panel size - The panel now grows when the radio's mode list changes, so the FDVU and FDVL modes added by FreeDV no longer overlap the filter width buttons.
- Sub-band mode colors - The Mode Colors table no longer keeps entries from band plans selected earlier in the session, and a band plan can no longer pick up an earlier plan's colors on the panadapter.
RimuDAX
- multiFLEX station switching - DAX channels no longer stop receiving audio after switching station.
- IQ channel list - No longer offers more channels than the radio actually has.
- Latency setting - Now changes the audio buffer size as intended, rather than being ignored.
- Stalled audio devices - A stalled device is now detected and reported instead of hanging the application.
- Unused channels - Transmit and microphone streams are no longer requested from the radio unless that channel is enabled.
- IQ channel crash - Fixed a crash when starting or stopping an IQ channel.
- Transmit meter - Fixed a possible crash and incorrect readings caused by reading past the end of the audio buffer.
- Channel statistics - No longer show incorrect figures when several channels run at once.
- Leftover audio devices - Devices left behind by a previous run are cleared once at startup, and RimuDAX's own devices are now clearly labeled.
- Failed device cleanup - A device that fails to start no longer leaves its connection to the audio server open.
- Crash reporting - Crash reports are now produced for stack-overflow crashes, which previously produced nothing at all.
RimuCAT
- Command handling - Lowercase commands are now accepted, and an unrecognized command returns the proper error response instead of being ignored.
- Filter presets - Applying a preset now sets both filter edges together rather than one at a time.
- Automatic frequency reporting - Now uses the format the connecting program asked for, and is also sent when a slice is bound.
- OTRSP - Now answers the queries the specification requires, and handles unknown commands correctly.
- Winkeyer - Now matches WK1 behavior for the watchdog, the speed-pot byte and admin command framing.
- N1MM spots - Spot packets are no longer missed when their header capitalization differs.
- Passthrough cables - Enabling or disabling a cable is now reported accurately, rather than claiming a state that had not been applied.
- UDP ports - A UDP port now replies to the program that last contacted it, where replies were previously discarded, and recovers if its port was busy at startup instead of staying dead until restart.
- Oversized commands - A very long or malformed incoming command can no longer grow a port's input buffer without limit.
- Wavelog logging - Routine radio-state updates no longer fill the application log.
- Virtual serial ports - Symlinks are created safely, and a port is no longer left stranded when it fails to start, for instance after a corrupted settings file.
- Port deletion crash - Fixed a crash that could occur after deleting a port whose window was still open.
- USB cable bindings - Now re-resolved when cables change, so a port keeps pointing at the right cable.
API Layer
- Disconnect stability - Fixed several crashes and hangs while disconnecting from a radio, including races in the disconnect path and an abort on shutdown.
- Event delivery - Reworked internally, removing a class of crash that could occur when the radio disconnected while data was still arriving, and fixing a case where a replaced subscription kept firing.
- Panadapter scale values - dBm range changes now behave consistently, correcting the values an application sends and displays.
- Filter width readout - Now shows the actual width rather than the nearest preset value.
- Slice updates - Property changes that were previously ignored are now applied, so an application no longer misses updates the radio sent.
- Client departure - Applications are now told when another client leaves the radio, instead of that client silently remaining in their list.
- Data races - Fixed races on panadapter width, slice meters and several device fields, any of which could corrupt data or crash under load.