Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Control an Icom IC-7610 transceiver over USB/LAN. Get/set frequency, mode, power, S-meter, SWR. CW keying and beacon mode. Remote power on/off.
Control an Icom IC-7610 transceiver over USB/LAN. Get/set frequency, mode, power, S-meter, SWR. CW keying and beacon mode. Remote power on/off.
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
Hamlib (rigctl): brew install hamlib curl: usually pre-installed python3: usually pre-installed pyserial (only for serial power on): pip3 install pyserial wfview (optional, for LAN control): wfview.org/download
Station config in .env (not in git). On first install: cp .env.example .env.
VariableDefaultDescriptionCALLSIGN(required for CW/beacon)Your callsignSERIAL_PORT/dev/cu.usbserial-11320CI-V USB serial portBAUD_RATE19200Serial baud rate (โ ๏ธ not 115200!)HAMLIB_MODEL3078Hamlib model ID for IC-7610FLRIG_URLhttp://127.0.0.1:12345/RPC2flrig XML-RPC endpointRIGCTLD_ADDR127.0.0.1:4533rigctld TCP address (wfview/hamlib)MAX_POWER_W50Hard power limit in watts source "$(dirname "$0")/.env" 2>/dev/null || true PORT="${SERIAL_PORT:-/dev/cu.usbserial-11320}" BAUD="${BAUD_RATE:-19200}" MODEL="${HAMLIB_MODEL:-3078}" FLRIG="${FLRIG_URL:-http://127.0.0.1:12345/RPC2}" RIGCTLD="${RIGCTLD_ADDR:-127.0.0.1:4533}" MAX_POWER="${MAX_POWER_W:-50}"
rigctl uses 0.0โ1.0 where 1.0 = 100 W. So: RFPOWER = watts / 100. 5 W = 0.05, 50 W = 0.50. โ ๏ธ L RFPOWER 5 = 500 W equivalent, NOT 5 watts! flrig uses watts directly: rig.set_power 50 = 50 W.
Three connection methods, in priority order. Auto-detect logic: # 1. Check rigctld (wfview LAN or standalone hamlib rigctld) if rigctl -m 2 -r "$RIGCTLD" f >/dev/null 2>&1; then CONN="rigctld" # 2. Check flrig elif curl -s --connect-timeout 2 --max-time 3 -X POST "$FLRIG" \ -H "Content-Type: text/xml" \ -d '<?xml version="1.0"?><methodCall><methodName>rig.get_vfoA</methodName></methodCall>' \ | grep -q '<value>'; then CONN="flrig" # 3. Fall back to direct serial else CONN="serial" fi
Connects to IC-7610 over network via wfview (UDP) or a running rigctld daemon. Full control: freq, mode, power, S-meter, SWR, CW keying, power on/off. rigctl -m 2 -r "$RIGCTLD" <cmd> # Read: f m l RFPOWER l SWR # Write: F 14074000 M USB 3000 L RFPOWER 0.50 # CW: b "CQ CQ DE YOURCALL K" # Power: set_powerstat 0 (off) set_powerstat 1 (on) Setup: wfview โ Settings โ Enable LAN โ connect to radio IP โ Enable RigCtld (port 4533). โ ๏ธ Note: M (set mode) may hang waiting for ack from wfview rigctld โ command still executes. Use a timeout wrapper or send as fire-and-forget when needed. Advantages over serial: No USB cable needed โ Ethernet only Power on works with simple set_powerstat 1 (no raw CI-V / pyserial needed) Multiple programs can share the radio via wfview (rigctld + virtual serial port) Longer distance (Ethernet 100m vs USB 5m)
rigctl -m $MODEL -r "$PORT" -s $BAUD <cmd> # Read: f (freq) m (mode+BW) l RFPOWER l SWR # Write: F 14074000 M USB 3000 L RFPOWER 0.50 # CW: b "CQ CQ DE YOURCALL K" # Quick: f m l RFPOWER โ freq, mode, BW, power in one call โ ๏ธ Baud 19200 (not 115200!). Always wrap: timeout 10 rigctl ... โ ๏ธ Port busy while flrig runs. Close flrig for CW/power on-off.
call_flrig() { curl -s --connect-timeout 3 --max-time 5 -X POST "$FLRIG" \ -H "Content-Type: text/xml" \ -d "<?xml version=\"1.0\"?><methodCall><methodName>$1</methodName><params>$2</params></methodCall>" | \ grep -o '<value>[^<]*</value>' | head -1 | sed 's/<[^>]*>//g' } # Read: call_flrig rig.get_vfoA / rig.get_modeA / rig.get_power / rig.get_Sunits / rig.get_SWR # Write: call_flrig rig.set_vfoA '<param><value><double>14074000</double></value></param>' # call_flrig rig.set_modeA '<param><value><string>USB</string></value></param>' # call_flrig rig.set_power '<param><value><double>50</double></value></param>'
Requires: rear POWER switch ON + MENU โ SET โ Network โ Power OFF Setting = Standby/Shutdown.
rigctl -m 2 -r "$RIGCTLD" set_powerstat 0 # off rigctl -m 2 -r "$RIGCTLD" set_powerstat 1 # on โ works! wfview handles it
Off: rigctl -m $MODEL -r "$PORT" -s $BAUD set_powerstat 0 On: rigctl set_powerstat 1 DOES NOT WORK via serial (rig_open fails in standby). Use raw CI-V: python3 -c " import serial, time ser = serial.Serial('$PORT', $BAUD, timeout=2) ser.reset_input_buffer() ser.write(bytes([0xFE,0xFE,0x98,0xE0,0x18,0x01,0xFD])) time.sleep(1); resp = ser.read(100); ser.close() print('Power ON: OK' if 0xFB in resp else 'FAIL') " Wait 7โ10 sec after power on before sending commands. "Command rejected" during boot is normal.
Works via both rigctld (LAN) and direct serial. # Via rigctld (LAN): rigctl -m 2 -r "$RIGCTLD" b "CQ CQ CQ DE $CALLSIGN $CALLSIGN K" # Via serial: rigctl -m $MODEL -r "$PORT" -s $BAUD b "CQ CQ CQ DE $CALLSIGN $CALLSIGN K" # Beacon loop (works with either connection) for i in $(seq 1 $REPEATS); do rigctl -m 2 -r "$RIGCTLD" b "VVV DE $CALLSIGN VVV DE $CALLSIGN" [ $i -lt $REPEATS ] && sleep $INTERVAL done Radio setting for CW: MENU โ SET โ Connectors โ USB Keying (CW) โ RTS
Operator confirmation received Frequency within amateur band (1.8โ2.0, 3.5โ4.0, 7.0โ7.3, 10.1โ10.15, 14.0โ14.35, 18.068โ18.168, 21.0โ21.45, 24.89โ24.99, 28.0โ29.7 MHz) Mode matches band segment (no phone below CW/data boundary) Power โค $MAX_POWER_W (default 50 W); above โ extra confirmation SWR โค 3.0 if available; >3.0 โ REFUSE (antenna problem)
Reading freq/mode/S-meter/SWR, switching VFO, changing freq/mode, power on/off.
PTT, CW keying, beacon, power > $MAX_POWER_W. Any RF transmission.
Transmit outside amateur bands. Transmit with SWR > 3.0.
Remote operation legal (ยง97.109d). Unattended beacon only 28.2โ28.3, 50.06โ50.08+ MHz. Below 28 MHz โ operator must be on comms.
Full documentation in references/FULL-REFERENCE.md โ consult when needed: Complete flrig XML-RPC method list (30+ methods) CI-V protocol reference (commands, modes, addressing) Error recovery table (common errors + fixes) Shell helper functions (freq_valid, set_power_safe, rig_retry, preflight, quick_status) Radio menu settings (Network, CI-V, Connectors) Compatibility notes for other Icom transceivers US Amateur Band Plan table (detailed, with CW/Data/Phone segments)
Messaging, meetings, inboxes, CRM, and teammate communication surfaces.
Largest current source with strong distribution and engagement signals.