rigplane¶
Python library for controlling Icom, Yaesu, and other transceivers through native providers and external rigctld-backed Hamlib CAT coverage.
RigPlane keeps the browser UI, audio path, diagnostics, and rigctld-compatible endpoint consistent across provider paths.
-
Quick Start
Get up and running in under 5 minutes.
-
CLI Tool
Control your radio from the terminal.
-
Supported Radios
Pick the radio you operate and follow the matching setup path.
Radios · IC-7610 USB · WSJT-X
-
API Reference
Supported public API and full async Python documentation.
-
Protocol Internals
Deep dive into the Icom LAN UDP protocol.
-
Rig Profiles
Add native radio profiles and understand where Hamlib-backed provider work fits.
-
Web UI
Spectrum, waterfall, controls, and audio in your browser.
Features¶
Multi-vendor support — native Icom CI-V and Yaesu CAT, plus external
rigctld-backed Hamlib long-tail CAT coverageDirect UDP connection — no intermediate software for native LAN operation
USB serial backend — CI-V over USB for IC-7610, IC-7300; USB audio devices
Full CI-V command set — frequency, mode/filter, power, meters, PTT, CW keying, VFO, split, ATT/PREAMP
Yaesu CAT backend — full working native backend for Yaesu FTX-1 (USB serial)
Hamlib provider — broad serial CAT coverage through an external
rigctldprocess, assisted discovery, and normalized RigPlane capabilitiesHTTP automation batches — structured command batches for ordered local profile switching from curl, Python, MQTT, or Stream Deck gateways
Audio streaming — RX/TX with jitter buffer and full-duplex support
Audio FFT Scope — real-time FFT on USB/LAN audio for radios without hardware spectrum
Discovery — find supported LAN radios automatically; assisted serial CAT discovery can suggest and validate Hamlib candidates
CLI tool —
rigplane status,rigplane freq 14.074mBuilt-in Web UI — spectrum, waterfall, controls, meters, audio in browser; LCD layout for non-scope radios
Async + Sync API — async by default, blocking wrapper available
Auto-reconnect — watchdog + exponential backoff (opt-in)
Minimal dependencies — core requires only
pyserial; no web frameworks or heavy librariesType-annotated — full
py.typedsupport for IDE autocompletion4492 tests — high coverage with golden protocol fixtures, UDP wire tests, and real-radio integration suite
Supported Radios¶
| Radio | Protocol | Status |
|---|---|---|
| IC-7610 | CI-V 0x98 |
|
| IC-7300 | CI-V 0x94 |
|
| Yaesu FTX-1 | Yaesu CAT | |
| IC-705 | CI-V 0xA4 |
|
| IC-9700 | CI-V 0xA2 |
Profile — not yet tested |
| Xiegu X6200 | CI-V 0xA4 |
Native profile + discovery disambiguation; hardware reports welcome |
| Xiegu X6100 | CI-V 0x70 / Hamlib candidate |
Profile only; assisted discovery candidate |
| Lab599 TX-500 | Kenwood CAT / Hamlib candidate | Profile only; assisted discovery candidate |
| IC-7851 | CI-V 0x8E |
Should work |
| IC-R8600 | CI-V 0x96 |
Should work |
See Supported Radios and the Hamlib provider guide for full details. Any Icom radio with LAN/WiFi control should work — the CI-V address is configurable. If you're choosing the commercial desktop app first, start from the matching landing page on rigplane.com: IC-7610, IC-7300, IC-705, IC-9700, or the platform pages for Mac and Linux.
Indexing policy¶
This docs site intentionally indexes operator-facing guides, setup pages, and the public API overview. Low-level generated API pages and internal engineering notes are marked noindex, follow: crawlers can follow their links, but search results should prefer the pages that help an operator install, configure, and use RigPlane.
Minimal Example¶
import asyncio
from rigplane import create_radio, LanBackendConfig
async def main():
config = LanBackendConfig(host="192.168.1.100", username="user", password="pass")
async with create_radio(config) as radio:
freq = await radio.get_frequency()
print(f"{freq / 1e6:.3f} MHz")
asyncio.run(main())
License¶
MIT — see LICENSE.
Protocol knowledge derived from the wfview project's reverse engineering work. This is an independent clean-room implementation.
Trademark Notice
Icom™ and the Icom logo are registered trademarks of Icom Incorporated. This project is not affiliated with, endorsed by, or sponsored by Icom. Product names are used solely for identification and compatibility purposes (nominative fair use).