Skip to content

rigplane 3.0.1

Latest

Choose a tag to compare

@morozsm morozsm released this 29 Oct 02:35
· 20 commits to main since this release
cfb2c29

rigplane 3.0.1 is the first stable release of RigPlane Core 3.0. A plain pip install rigplane installs it; --pre is no longer needed. (3.0.0 was tagged during the release freeze but never published to PyPI, so 3.0.1 is the first published 3.0 release. It contains everything prepared for 3.0.0, plus the fixes listed below.)

RigPlane Core is the open-source (MIT) Python library and web UI for Icom radios (over the network or USB) and the Yaesu FTX-1 (USB), with a rigctld-compatible server so WSJT-X, fldigi and JS8Call can control the radio. Python 3.11 or newer.

pip install rigplane

Highlights of 3.0 (for people coming from 2.x)

  • Readings show only what the radio reported. A reading the radio has not reported yet stays empty instead of showing "?", dashes or a made-up default, and the empty slot keeps its size. Controls such as NARROW, Filter Shape and the notch choices mark your change as pending until the radio confirms it.
  • Clearer transmit feedback. A transmit state that is not confirmed shows "TX" with a hollow lamp; a confirmed one is filled. When a control is refused because the radio is transmitting, or because its transmit state is not confirmed, the control you touched says so. PTT is now managed per connection: press and release belong to the same session.
  • Faster LAN recovery. A dropped LAN session comes back as soon as the radio reports the session free, instead of after a watchdog wait. A refused IC-7610 login says what the radio's error code means.
  • More of each radio's controls. Repeater controls (tone, tone squelch, CTCSS tone) appear while a receiver is on a band the radio's profile marks as a repeater band; NARROW on the FTX-1; a WIDE / MID / NAR Manual Notch Width choice on radios that have it; SUB receiver controls on the FTX-1. The IC-7300 profile now covers receive up to 74.8 MHz, including 4 m; transmit on 4 m is not offered.
  • Profile-driven commands. On the lan, serial and yaesu-cat backends, each radio's commands and value ranges come from its profile file under rigs/.
  • Web UI skins. The web UI's radio logic is shared and a skin only decides how things look. With a source checkout you can build your own skin without changing the radio logic.
  • Command line. web, serve and station take --listen for the address the server listens on. --host after these commands still works but prints a deprecation warning.

The operator-facing list is on What's New in 3.0.

Upgrading from 2.x

3.0 is a major release with selected compatibility aliases, not a promise that every 2.x consumer works unchanged. Read the migration guide before upgrading scripts, service units or code. The main points:

  • 3.0 requires the radio model. Every command that talks to a radio must say which one it is: --model IC-7300 on the command line, model="IC-7300" in Python (on the LAN backend, a matching --radio-addr also works). 2.11 silently assumed an IC-7610 when none was given, which could drive another radio with the wrong profile; 3.0 refuses to guess. The FTX-1 on --backend yaesu-cat and an external rigctld on --backend rigctld run without it. The radios you can name are in the supported-radios table in the README.
  • Remove --auth-token and --auth-token-file from launch commands; the parser rejects them. Core HTTP and WebSocket clients no longer need a Bearer header or ?token= parameter.
  • The old HTTP ptt command is rejected. Use the WebSocket PTT flow for momentary PTT or the latched TRANSMIT operation; there is no compatibility adapter for the old leave-keyed behavior.
  • The root JSON fields notchFilter and txFreqMonitor are gone. Read main.notchFilter / sub.notchFilter explicitly; do not treat a missing value as false or 0.
  • TransceiverStatusCapable and the tx_freq_monitor API are removed.
  • CTCSS tone setters take integer hundredths of Hz (88.50 Hz is 8850). Custom profiles with tone, TSQL or squelch-type controls must declare a named [ctcss] table.
  • rigctld: a raw w frame the radio never answers is reported as RPRT -5 (timeout) instead of an empty success, and read-only mode rejects every raw w with RPRT -22.
  • Extensions: host API version 2, with host_api: "2.0" declared in the manifest. Old or missing declarations are rejected.
  • To stay on 2.x for now: pip install "rigplane<3".

Fixed in 3.0.1

  • A quick key–unkey–key–unkey could leave the radio transmitting. A release that arrived while the previous key-on was still being sent was lost. The unkey is now sent promptly, a key-on that stays stuck is escalated once, and an unkey older than a newer key-on is dropped.
  • An ambiguous Icom PTT release is confirmed by reading the transmit state back. When the acknowledgement of an unkey is missing or unclear, Core reads the transmit state from the radio before accepting the next key-down.
  • A clear message when the radio's audio devices cannot be paired. With several identical USB radios connected, every web client now sees one plain message: choose the audio device on the station computer.
  • Memory writes are refused unless the radio's profile declares a memory layout. Memory writes now use per-radio layouts from the radio profiles (IC-705, IC-9700, IC-7300, IC-7300MK2). Radios without a declared layout refuse the write instead of risking a stored channel.

Known limitations

Operator-visible gaps of 3.0 are listed in 3.0 known limitations.

More