Repository navigation
Add Yaesu FTM-510DR support via microSD (#151) - #152
Merged
Merged
Conversation
The FTM-510's ALL backup (FTM510D/BACKUP/CLNFTM510D.dat, magic AH089$) turned out to be the FTM-300's layout, so the memory encoder reuses the FTM-300's record encoder behind the 510's own container: RX 108-550 MHz, 8.33 kHz airband points refused until measured on this radio. Gate: all 20 records the radio wrote re-encode byte for byte. 284 settings fields, generated with the form schema from one spec off an ADMS-18 measurement campaign (bit-signature passes, one-field isolation, token, radio-button and grid passes). Decoding the 14 ADMS pass files with the table agrees with what ADMS displayed, 2001/2001. Five fields are withheld (lat/lon, reply callsign, WIRES-X presets, My Symbol 4 character, FACTORY RESET function key). Not yet verified on the radio: checksum, name-length rule, Sub Band Mute, S-DX — the hardware ladder is next. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
All five steps passed on Tim's radio, loaded with 107 BACKUP -> READ FROM SD from files placed beside the radio's own as CLNFTM510D01-05: identity, one renamed memory (no checksum checked on load; the FTM-300 name-length rule holds), a 61-memory codeplug from the app's pipeline, an 11-edge band probe across 108-550 MHz, and four settings including Sub Band Mute ON = 3 and S-DX AUTO across its three scattered bits. ladder.rs is the throwaway harness that built the files, #[ignore]d and env-gated like the gate. 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 #151.
Programs the Yaesu FTM-510DR from its microSD card: the app patches the radio's own ALL backup,
FTM510D/BACKUP/CLNFTM510D.dat, and the radio loads it back with Setup Menu 107 BACKUP → READ FROM SD → ALL. Memories and settings both, no cable, no third-party software.What's in it
radios/yaesu_ftm510/sd_image.rs). The file turned out to be the FTM-300's layout under its own magic (AH089$), so it reuses the FTM-300's record encoder behind the 510's own container: RX 108–550 MHz, 8.33 kHz airband points refused until measured on this radio. The only change to FTM-300 code is two helpers madepub(crate).settings.rs+ generated table andftm510_settings_schema.json): Setup Menu items, band skip, DTMF memories, mic and function keys, and the APRS setup down to digi paths, message and status texts, ringer calls, units and SmartBeaconing. Two field kinds the FTM-300 never needed: S-DX is spread over three bits in three bytes, and a few settings are written to both bands' bytes.api.ts,CARD_SETTINGS_READERS,MEDIA_WRITES.How it was measured
Yaesu's own programmer, ADMS-18, opens and saves the card file, so the settings campaign ran unattended in a Windows VM: 14 bit-signature passes, one-field isolation saves, and token / radio-button / grid passes. Option labels are ADMS-18's own text.
Verification
npm run cigreen locally.Withheld, with reasons in the generator
Manual lat/lon (one sample, odd encoding), the reply callsign (wildcard padding rule unclear), WIRES-X preset frequencies (no frequency field type in the form), My Symbol 4's character (12 of 14 samples), and the FACTORY RESET function-key option. CLOCK TYPE, PR FREQUENCY and TRACK SELECT are not in ADMS-18 at all.
🤖 Generated with Claude Code