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, power, meters, PTT, CW keying, VFO, split
Network discovery — find radios on your LAN automatically
CLI tool —
icom-lan status,icom-lan freq 14.074mAsync API — built on asyncio for seamless integration
Zero dependencies — pure Python, stdlib only
Type-annotated — full
py.typedsupport for IDE autocompletion
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.