Skip to content

Quick Start

Get your first connection in under 5 minutes.

1. Set Credentials

Use environment variables to avoid putting credentials in code:

export ICOM_HOST=192.168.1.100   # Your radio's IP
export ICOM_USER=myuser           # Network username
export ICOM_PASS=mypass           # Network password

2. Try the CLI

# Check radio status
icom-lan status

Expected output:

Frequency:    14,074,000 Hz  (14.074000 MHz)
Mode:         USB
S-meter:      42
Power:        50
# Change frequency
icom-lan freq 14.074m

# Change mode
icom-lan mode USB

# Read meters as JSON
icom-lan meter --json

3. Python API

Use create_radio with a backend config to get a Radio instance (works for both LAN and USB serial backends):

import asyncio
from icom_lan import create_radio, LanBackendConfig

async def main():
    config = LanBackendConfig(
        host="192.168.1.100",
        username="myuser",
        password="mypass",
    )
    async with create_radio(config) as radio:
        # Read current state
        freq = await radio.get_frequency()
        mode, _ = await radio.get_mode()
        s_meter = await radio.get_s_meter()
        print(f"{freq/1e6:.3f} MHz  {mode}  S={s_meter}")

        # Tune to 20m FT8
        await radio.set_frequency(14_074_000)
        await radio.set_mode("USB")

asyncio.run(main())

For LAN-only scripts you can still use IcomRadio(host, username=..., password=...) — see API Reference.

4. Discover Radios

Don't know your radio's IP — or want to find USB-connected radios too? Use unified discovery:

icom-lan discover
Scanning for Icom radios (3s LAN + serial)...

Found 1 radio with 2 connection methods:

IC-7610:
  • LAN: 192.168.55.40
  • Serial: /dev/cu.usbserial-11320 (19200 baud)

The command scans both LAN (UDP broadcast) and USB serial ports in parallel. Use filters for targeted scans:

icom-lan discover --lan-only      # UDP broadcast only
icom-lan discover --serial-only   # USB serial ports only
icom-lan discover --timeout 5     # Longer LAN listen window

What's Next?