rsba1-mcp
rsba1-core
Pure Python implementation of the Icom RS-BA1 V2 protocol stack — control IC-705, IC-9700 and any CI-V transceiver over the network. No Icom binaries required.
What is this?
Icom's RS-BA1 software runs on Windows only and is closed-source. This project reverse-engineers the protocol and provides a pure Python replacement that runs anywhere Python runs.
Tested on: IC-705 (E2E verified 2026-08-18)
Quick Start
pip install "rsba1-core[mcp]" # MCP server needs fastmcp; plain CLI: pip install rsba1-core
export RADIO_HOST=192.168.0.31
export RADIO_USER=radio_user
export RADIO_PASSWORD=your_password
python -m rsba1.mcp read-freq
python -m rsba1.mcp set-freq 7074000Platform Support
Platform | Network (radio-link) | Serial | Mailslot / CivCtrl.dll |
Linux | ✅ pure Python UDP | ✅ | ❌ Windows-only |
macOS | ✅ pure Python UDP | ✅ | ❌ Windows-only |
Windows | ✅ pure Python UDP | ✅ | ✅ legacy backends |
The default radio-link backend is pure Python UDP — no Icom binaries, no
DLLs, no pywin32. The Windows-only backends (--backend mailslot, CivCtrl.dll)
live behind optional [windows] extras and are guarded so they never break
imports or test collection on Linux/macOS. Serial support needs pyserial
(pip install "rsba1-core[serial]").
MCP Server (for AI Agents)
python -m rsba1.mcp # starts MCP server on stdioAvailable tools: read_freq, read_mode, read_smeter, set_freq, ptt, get_status
Architecture
Your AI Agent / CLI
↓
rsba1-core (pure Python)
↓
IC-705 RS-BA1 server (UDP 50001 + 50002)Key: no Windows APIs, no Icom DLLs, Python 3.11+ only.
Feature Status
Feature | Status |
CI-V read (freq/mode/smeter) | ✅ E2E verified |
CI-V write (set_freq) | ✅ E2E verified |
PTT | ✅ E2E verified |
Audio streaming (UDP 50003) | ❌ Not implemented |
Documentation
docs/README.md — Bilingual (Chinese/English) full guide
docs/MCP集成指南.md — MCP integration guide
docs/真机验证报告.md — E2E verification report
License
MIT — see LICENSE and DISCLAIMER.md.