Skip to content

MD-380 contacts, both ways: md380tools user DB and codeplug contact fill - #138

Merged
ww8l merged 1 commit into
mainfrom
md380-contacts
Oct 10, 2026
Merged

ww8l merged 1 commit into
mainfrom
md380-contacts

Conversation

@ww8l

@ww8l ww8l commented Oct 10, 2026

Copy link
Copy Markdown
Owner

Two ways to get DMR users into a TYT MD-380, from the local DMR Contacts library.

User DB (md380tools patched firmware)

  • Builds md380tools' linear user database (prioritized, sorted by ID, 15 MB cap; the lowest-priority users are left out and counted) and writes it to SPI flash at 0x100000 via the patched firmware's DFU block-1 commands, then reads it all back.
  • Refused before anything is sent unless the USB strings say patched firmware and the chip is the 16 MB part. Every erase/write is bounds-checked above the codeplug in protocol.rs.
  • The firmware drops an erase sent while the chip is busy; each block is polled and the erase resent.
  • Refused on Windows: TYT's STTub30 driver does not expose the USB strings.
  • Hardware-proven on Tim's UHF MD-380: 269,452 users written and read back, codeplug intact.

Codeplug contacts (stock firmware)

  • "Fill spare contacts with DMR users" under Channel set adds prioritized users as Private contacts after the codeplug's talkgroups, up to the radio's 1000.
  • Hardware-proven: verified, and the radio's Contacts list shows the talkgroups then the users.

Also

  • Program dialog gains a User DB card; the AnyTone's DMR-user picker is now a shared DmrUserPicker.
  • write_callsign_db resolves the radio from the codeplug (no profile needed); CallsignDbReport.verified says whether the driver read it back.
  • Not on hardware: a VHF MD-380 (no unit to test).

🤖 Generated with Claude Code

User DB (md380tools patched firmware): build md380tools' linear user database
from the DMR Contacts library, prioritized, and write it to SPI flash at
0x100000 through the patched firmware's DFU block-1 commands, then read it all
back. Gated on the patched firmware's USB strings and the 16 MB chip; every
erase and write is bounds-checked above the codeplug in protocol.rs. A dropped
erase (the firmware ignores one sent while the chip is busy) is resent.
Hardware-proven on Tim's UHF MD-380: 269,452 users written and read back,
codeplug intact. Refused on Windows (STTub30 hides the USB strings).

Codeplug contacts (stock firmware): "Fill spare contacts with DMR users" under
Channel set fills the codeplug's 1000 contacts with prioritized users after the
talkgroups. Hardware-proven: verified, radio's Contacts list = talkgroups then
the users.

The Program dialog gains a User DB card; the AnyTone's DMR-user picker is now a
shared component. write_callsign_db resolves the radio from the codeplug, so no
profile is needed; its report says whether the driver read the DB back.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ww8l
ww8l merged commit 63a312f into main Oct 10, 2026
3 checks passed
@ww8l
ww8l deleted the md380-contacts branch October 10, 2026 20:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant