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¶
Expected output:
# 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:
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?¶
- CLI Reference — full list of CLI commands
- CI-V Commands — frequency, mode, meters, PTT, CW, VFO
- Public API Surface — supported vs advanced exports
- API Reference — complete Radio API and legacy IcomRadio reference
- Connection Lifecycle — understand the handshake and keep-alive