Repository navigation
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 rigplaneHighlights 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,serialandyaesu-catbackends, each radio's commands and value ranges come from its profile file underrigs/. - 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,serveandstationtake--listenfor the address the server listens on.--hostafter 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-7300on the command line,model="IC-7300"in Python (on the LAN backend, a matching--radio-addralso 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-catand an external rigctld on--backend rigctldrun without it. The radios you can name are in the supported-radios table in the README. - Remove
--auth-tokenand--auth-token-filefrom launch commands; the parser rejects them. Core HTTP and WebSocket clients no longer need a Bearer header or?token=parameter. - The old HTTP
pttcommand 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
notchFilterandtxFreqMonitorare gone. Readmain.notchFilter/sub.notchFilterexplicitly; do not treat a missing value asfalseor0. TransceiverStatusCapableand thetx_freq_monitorAPI 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
wframe the radio never answers is reported asRPRT -5(timeout) instead of an empty success, and read-only mode rejects every rawwwithRPRT -22. - Extensions: host API version
2, withhost_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
- Documentation: rigplane.dev
- Full list of changes: CHANGELOG.md
- Problems or questions: open an issue