Skip to content

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.

    Getting Started

  • CLI Tool


    Control your radio from the terminal.

    CLI Reference

  • API Reference


    Full async Python API documentation.

    API Docs

  • Protocol Internals


    Deep dive into the Icom LAN UDP protocol.

    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 toolicom-lan status, icom-lan freq 14.074m
  • ✅ Async API — built on asyncio for seamless integration
  • ✅ Zero dependencies — pure Python, stdlib only
  • ✅ Type-annotated — full py.typed support for IDE autocompletion

Supported Radios

Radio Status CI-V Address
IC-7610 ✅ Tested 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.