Skip to main content

Icom IP CommandMic protocol and Python library

An evidence-backed, language-neutral protocol specification and Python reference implementation for the Ethernet CommandMic used with Icom F5330D/F6330D radios.

Status: 1.0.0 final candidate under package-index verification. The latest published release remains 1.0.0rc3. The stable API contract and hardware-free release gates are complete. Major everyday controls, the LCD, status LED, startup, reconnection, PTT and bidirectional low-latency audio are implemented and tested against real hardware. Final 1.0.0 remains blocked only by final artifact and package-index publication steps listed in the release-readiness ledger. Some auxiliary display controls, uncommon state messages and error branches remain explicitly deferred from the scoped v1 contract.

This is an independent interoperability project and is not affiliated with or endorsed by Icom Incorporated.

Repository contents

  • src/ip_commandmic: lossless parser, typed composers, display/control models, audio transport and both endpoint roles;
  • docs/PROTOCOL.md: normative working protocol specification;
  • docs/MESSAGE_CATALOG.md: byte layouts, confidence and examples;
  • docs/CONTROLS_API.md: public Python API;
  • docs/CONFORMANCE.md: hardware-free endpoint baseline and remaining gates;
  • docs/V1_SCOPE.md: stable 1.x API boundary, release gates and exclusions;
  • docs/RELEASE_READINESS.md: live v1 completion and publication checklist;
  • docs/RELEASING.md: reproducible candidate verification and publication procedure;
  • docs/MASTER_PLAN.md: phased reverse-engineering and acceptance plan;
  • wireshark/ip_commandmic.lua: independent Wireshark dissector;
  • tests: sanitized fixtures and regression/conformance tests.

Package-level changes are summarized in CHANGELOG.md.

Applications and shared presentation live separately:

Install for development

python -m venv .venv
.\.venv\Scripts\python -m pip install -e ".[audio,dev]"
.\.venv\Scripts\python -m pytest

Run the public-wrapper loopback baseline without hardware or audio devices:

.\.venv\Scripts\python -m ip_commandmic.conformance --artifact-directory artifacts/conformance

Public endpoint roles

from pathlib import Path
from time import monotonic, sleep
from ip_commandmic import SoftwareCommandMicEndpoint

mic = SoftwareCommandMicEndpoint(
    local_ip="192.168.0.2",
    radio_ip="192.168.0.1",
    microphone_device=None,
    enable_tx=True,
    play_rx_audio=True,
    audit_path=Path("commandmic.jsonl"),
)
mic.start()
deadline = monotonic() + 10.0
while not mic.state.snapshot()["controls_ready"] and monotonic() < deadline:
    sleep(0.05)
if not mic.state.snapshot()["controls_ready"]:
    raise TimeoutError("CommandMic controls did not become ready")
mic.key("p1", "press")
mic.key("p1", "release")
mic.stop()

SoftwareCommandMicEndpoint replaces a physical CommandMic on a real radio. SoftwareRadioEndpoint implements the opposite role for a physical or software CommandMic. Gateways may provide continuous 20 ms PCM frames through the public thread-safe BufferedMicrophoneSource without opening a local capture device. Lower-level framing and models are available for integrations that need direct protocol access. See the API guide.

Verified transport summary

  • control: TCP port 52001;
  • audio: RTP/UDP port 50000, payload type 125;
  • media: signed 16-bit big-endian PCM, 8 kHz mono;
  • packetization: 160 samples / 320 payload bytes every 20 ms;
  • TCP application messages use byte stuffing and CRC-16/Modbus;
  • TCP segmentation is unrelated to application-message boundaries.

Unknown bytes and messages are preserved losslessly. The project distinguishes verified observations, strong inference and unresolved hypotheses throughout the specification.

Safety and evidence policy

Connecting either endpoint actively transmits network traffic. Disconnect the hardware endpoint being replaced and use appropriate RF containment for every transmit test. Raw hardware fuzzing is outside the supported workflow.

Raw captures, codeplugs, voice recordings, serial numbers, proprietary software and copyrighted manuals are intentionally excluded. Contributions should use minimal sanitized fixtures and stable evidence identifiers.

Original project code and documentation are available under the MIT License. See NOTICE.md for trademark and third-party asset limitations.

Release files for ip-commandmic 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ip-commandmic 1.0.0
File Size Uploaded
ip_commandmic-1.0.0.tar.gz 214.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ip-commandmic 1.0.0
File Interpreter ABI Platform
ip_commandmic-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 309.4 kB

Release files / ip_commandmic-1.0.0.tar.gz

Download URL ip_commandmic-1.0.0.tar.gz
Size 214.5 kB
Tags Source
SHA-256 checksum
How to use checksums
2c135b6428da1d42aecfb186da9237990ce7d7476dd1939eb0b93115f888d904
BLAKE2b-256 checksum
How to use checksums
d704119e3b8e952692e772311e693c8ceb4a87d6712c6a8e9ac12e96fa9bb0f6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 22, 2026.

Transparency log

Release files / ip_commandmic-1.0.0-py3-none-any.whl

Download URL ip_commandmic-1.0.0-py3-none-any.whl
Size 94.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6fb6d93d9bb21a2ec0c2e0a529fda7dd6e34e1bbdccad52d61c29cc4dc28e84c
BLAKE2b-256 checksum
How to use checksums
8d27939eeb80e28332573fbde6aae1e8bd4a675bb2cf90cd41ae96bc6ee230cc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 22, 2026.

Transparency log

Release history Release notifications | RSS feed

1.0.1

2 release files

This release

1.0.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page