Easy-to-manage touch screens
Free, open-source touch screens. Guided USB setup, a drag-and-drop editor and local control. Made for Home Assistant.
RigPlane is a Python library and browser Web UI for controlling ham radios through native providers and external rigctld-backed Hamlib CAT coverage while keeping one capability-driven station model.
LifestylePython · TypeScriptGitHub @rigplaneOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Python library for controlling Icom transceivers over LAN (UDP) — no wfview/hamlib required
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
v2.0.0 — renamed from icom-lan. The package, console script, repo,
and docs now ship as rigplane. Existing from icom_lan import ... calls
keep working through a deprecation shim. Migration guide:
rigplane.dev/migrate.Read the full README ↗RigPlane 3.0 is released. A plain
pip install rigplaneinstalls it. Upgrading from 2.x? 3.0 requires the radio model (--model); see What's New in 3.0 and the migration guide. Known gaps are listed in 3.0 known limitations. Tried it on your radio? Send a 3.0 report.
rigplane is an open-source (MIT) Python asyncio library and web UI for Icom radios (LAN/USB) and the Yaesu FTX-1 (USB), with a rigctld server. It has native providers for Icom CI-V and Yaesu CAT paths. The rigctld server lets Hamlib-aware programs such as WSJT-X, fldigi and JS8Call control the radio.
pip install rigplane
rigplane --model IC-7610 web # discovers the radio's IP on the LAN
# open http://localhost:8080
Or as a library:
import asyncio
from rigplane import create_radio, LanBackendConfig
async def main():
async with create_radio(LanBackendConfig(host="192.168.1.100",
username="user",
password="pass",
model="IC-7610")) as radio:
await radio.set_frequency(14_074_000)
await radio.set_mode("USB")
print(await radio.get_s_meter())
asyncio.run(main())
Full guides: getting started, CLI, public API surface.
| Radio | --model value | Transport | Notes |
|---|---|---|---|
| Icom IC-7610 | IC-7610 | LAN, USB CI-V | Dual receiver; see known limitations |
| Icom IC-7300 | IC-7300 | USB CI-V | Single receiver, USB-only |
| Icom IC-7300MK2 | IC-7300MK2 | LAN, USB CI-V | |
| Yaesu FTX-1 | FTX-1 | USB CAT | 17 modes, VHF/UHF, C4FM, audio-derived panadapter (no hardware scope) |
| Icom IC-705 | IC-705 | LAN (WiFi), USB CI-V | CI-V 0xA4, QRP 10 W |
| Icom IC-9700 | IC-9700 | LAN, USB CI-V | VHF/UHF/SHF |
| Xiegu X6200 | X6200 | USB CI-V | CI-V 0xA4, 19200 baud, QRP 8 W |
| Xiegu X6100 | X6100 | USB CI-V | Profile only, no backend yet |
| Lab599 TX-500 | TX-500 | USB Kenwood CAT | Profile only, no backend yet; QRP, minimal CAT |
Native radio capabilities are declared in rigs/*.toml. For long-tail serial
CAT radios, the intended path is Hamlib-backed control underneath RigPlane's
capability model, with structured discovery candidates and safe read-only
probing where possible. See adding a new radio.
Radio
protocol, the capability protocols (AudioCapable, ScopeCapable,
MetersCapable, LevelsCapable, StatePollable, RigctldRoutable,
UsbAudioCapable, …), create_radio / BackendConfig, and the
local-extensions/ host API — is now under SemVer. See
docs/api/public-api-surface.md.ARCHITECTURE.md.import-linter enforces 11-layer package
boundaries; mypy is clean across the public surface; ruff lints in CI.rigplane web boots a self-contained HTTP + WebSocket server. The frontend
is a Svelte 5 single-page app served from the same process; no native
shell, no Electron, no Tauri — just a browser tab.
Four user-facing skins resolve from frontend/src/skins/registry.ts:
amber-lcd alias).src/rigplane/ is organised into 11 layered Python packages
(core/, commands/, profiles/, audio/, scope/, dsp/,
runtime/, backends/, web/, rigctld/, cli/) with explicit
boundaries enforced by import-linter. Higher layers depend on lower
ones; siblings are independent. See ARCHITECTURE.md
for the layout and per-layer charters in src/rigplane/<layer>/LAYER.md.
Extensibility is centred on Capability Protocols in
rigplane.radio_protocol. A new backend implements the protocols it
supports; consumers (Web UI, rigctld, CLI, third-party scripts) feature-detect
via isinstance(radio, ScopeCapable) and never branch on backend identity.
The Radio protocol plus the capability suite is the stable contract
between the open core and downstream consumers.
The frontend extension surface lives at
frontend/src/lib/local-extensions/ —
a Tier 1 contract for embedders shipping panels, dock items, or keyboard
scopes into the open-core shell.
MIT — see LICENSE. Protocol knowledge derived from the wfview project's reverse-engineering work; this is an independent clean-room implementation, not a derivative of wfview's GPLv3 code. Icom™ and IC-* product names are registered trademarks of Icom Incorporated, used here for nominative fair-use compatibility identification only — this project is not affiliated with, endorsed by, or sponsored by Icom.
rigplane is the open-core half of a planned product split. A
proprietary commercial layer (rigplane-pro) is under active development
and will integrate with this library through the public Radio protocol
and the local-extensions/ host API. Open-core constraints — no
telemetry, headless mode is sacred, no hollowing out — are codified in
docs/architecture/open-core-policy.md.
KN4KYD's personal project. Each supported radio is described by its
rigs/*.toml profile and uses the same Capability Protocols.
Issues, profile contributions, and field reports are welcome.
73 de KN4KYD