icom-lan¶
Python library for controlling Icom transceivers over LAN (UDP).
Direct connection to your radio — no wfview, hamlib, or RS-BA1 required.
-
Quick Start
Get up and running in under 5 minutes.
-
CLI Tool
Control your radio from the terminal.
-
API Reference
Full async Python API documentation.
-
Protocol Internals
Deep dive into the Icom LAN UDP protocol.
Features¶
Direct UDP connection — no intermediate software
Full CI-V command set — frequency, mode/filter, power, meters, PTT, CW keying, VFO, split, ATT/PREAMP
Audio streaming — RX/TX with jitter buffer and full-duplex support
Network discovery — find radios on your LAN automatically
CLI tool —
icom-lan status,icom-lan freq 14.074mAsync + Sync API — async by default, blocking wrapper available
Auto-reconnect — watchdog + exponential backoff (opt-in)
Multi-radio presets — IC-7610, IC-705, IC-7300, IC-9700 and more
Zero dependencies — pure Python, stdlib only
Type-annotated — full
py.typedsupport for IDE autocompletion1040+ tests — high coverage with golden protocol fixtures, TCP wire tests, and real-radio integration suite
Supported Radios¶
| Radio | Status | CI-V Address |
|---|---|---|
| IC-7610 | 0x98 |
|
| IC-705 | Should work | 0xA4 |
| IC-7300 | Should work | 0x94 |
| IC-9700 | Should work | 0xA2 |
| IC-7851 | Should work | 0x8E |
| IC-R8600 | Should work | 0x96 |
Any Icom radio with LAN/WiFi control should work — the CI-V address is configurable.
Minimal Example¶
import asyncio
from icom_lan import IcomRadio
async def main():
async with IcomRadio("192.168.1.100", username="user", password="pass") 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).