Repository navigation
Add Icom ID-5100 support (#49) - #132
Merged
Merged
Conversation
) The ID-5100 is programmed over its data cable by Icom's clone protocol (MapRev 3 / 0x2A380, current firmware): the whole image is read, the codeplug and the profile's settings are patched into it, and it is written back. - Driver (radios/icom_id5100/): clone protocol from CHIRP's icf.py, memory encoder on CHIRP's id5100 map checked against the radio's own reads (every record of every read re-encodes byte-identically), 26 named banks from the codeplug's channel lists. - 292 settings, measured by driving Icom's CS-5100 in a VM (one control, one diff; every option of every dropdown cycled and its label read off the grid), plus Auto Repeater measured on the radio. CS-5100's defaults match the radio's factory reset byte for byte. Table and form schema are generated together and held together by tests. - Safety: a clone the radio refuses makes it factory-reset (observed once), so out-of-coverage memories and the NMEA (<=4) / logger (>=1) sentence limits are refused before anything is sent; restore checks the file the same way. - Hardware-proven on the radio: download, write, restore, full codeplug in both banks, settings write read back off the screen, and the dev app's Download -> Program -> Restore flow. Shared changes: ImageProgramRequest.banks, CodeplugProgramReport.banks_written, ImageProgrammer::after_write_instruction (the radio waits for POWER after a write; shown in the Program dialog), ImageProgrammer::profile_starts_blank (a new profile for a radio whose program patches its own image starts blank instead of seeding defaults that would be written), and the ID-52 settings encoder made table-generic with an FF-padded text kind. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ww8l
added a commit
that referenced
this pull request
Oct 3, 2026
Bumps the four version files that must stay in sync. What this release adds: **Icom ID-5100** (#49, PR #132) — the tenth radio, and the first Icom programmed over a cable rather than a card: - Icom's clone protocol over the data cable: read, full write, restore, each backed up first and verified by read-back. Every rung of the hardware ladder passed on the real radio (CPU firmware 1.21, MapRev 3). - 1000 memories in 26 named banks (A-Z, 100 each), with D-STAR call signs, airband 8.33 kHz steps and the radio's own bank names. - 292 menu settings measured against Icom's CS-5100, including My Call Sign, TX messages and the D-PRS position, object, item and weather setup, written in the same upload as the memories. Applying a decoded profile changes zero bytes on 30 radio reads and 1,694 CS-5100 files. - A fresh profile starts blank, and blank means "leave the radio's value alone". ⚠ The radio refuses a clone it cannot accept WHOLE and comes back factory reset -- measured, once, with memories just past its receive edges. The build and the restore both refuse anything outside 118-174 / 375-550 MHz before a byte is sent. After a write the radio waits for its POWER button; the app says so. Also in this release: Tauri 2.12 (Rust and JS), React 19.3, Vite 8.3 and the rest of the Dependabot batch (#129, #130). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #49.
Adds the Icom ID-5100 (D-STAR + analog mobile), programmed over its data cable by Icom's clone protocol.
What it does
How it was measured
id5100.py, checked against the radio's own reads: every record of every read re-encodes byte-identically.Hardware-proven on the radio
Download, identity write, one-name write, full codeplug (both banks checked on screen), restore, settings write (5 values read back off the screen), and the dev app's Download → Program → Restore flow.
Safety
A clone the radio refuses makes it factory-reset (it happened once, during a band probe, and was restored). Out-of-coverage memories and the NMEA (≤4) / logger (≥1) sentence limits are refused before anything is sent, and restore checks the file the same way.
Shared changes
ImageProgramRequest.banksandCodeplugProgramReport.banks_written(now shown in the Program dialog).ImageProgrammer::after_write_instruction: the radio waits for POWER after a write; the Program dialog says so.ImageProgrammer::profile_starts_blank: a new profile for a radio whose program patches its own image starts blank, instead of seeding defaults that would then be written.Deliberately not written
Lists (scan edges/links, DTMF memories, repeater list, GPS memory), GPS Alarm Select/Group/Memory, the Home CH pickers, and Display Language. Each has its reason recorded in the coverage table.
🤖 Generated with Claude Code