# Changelog All notable changes to this fork of the OpenGD77 firmware (MD-UV380 / DM-1701). This project is still in pre-release iteration, so changes are collected as a single running list until the first versioned release. ## Unreleased _Nothing yet._ ## 0.3.0 - **Fix a second voice-prompt crash** on the Screen Dim menu row: the item *label* ("Screen Dim") is a raw literal, and the shared menu code voices labels via `voicePromptsAppendLanguageString()`, which crashes on any pointer outside the language table. That function now ignores non-language pointers, so a stray literal is skipped instead of hard-faulting. (The dim value is still announced.) ## 0.2.0 - **Fix crash** opening Display Options with **voice announcements on**: the Screen Dim value ("100%"/"50%"/…) is a plain literal, but the shared menu code fed it to `voicePromptsAppendLanguageString()`, which derives the prompt index from the string's offset within the language table — a foreign pointer produced a garbage index and crashed. The value now goes through `voicePromptsAppendString()`. Also moved the dim-level high bit off a low legacy option bit (bit 2 → 29) and clamped the level so it can never index past the option arrays. - **7-segment frequency font:** inactive segments are now off (background) instead of faintly lit — no dim "ghosting". "MHz" now matches the frequency colour, and there's 1px more space between the RX and TX frequency lines. - **Screen dimming:** added a **15%** idle-dim level (Off / 100 / 50 / 30 / 15). - **DM-1701 build support** — the Docker build is now parameterized by platform; `./build-firmware.sh DM1701` produces `OpenDM1701.bin` (Baofeng DM-1701 / Retevis RT-84). Not officially tested yet. - **Release script** (`scripts/forgejo-release.sh`) now builds and attaches a single platform or all of them, and reuses an existing release. - README: added "What's different from OpenGD77" and a dedicated "Flashing" section. ## 0.1.0 First versioned release of FreeTRX (fork of OpenGD77 R20260131). ### Features - **Screen dimming** — optional idle dimming of the backlight to a fraction of the configured brightness (Off / 100% / 50% / 30%), in Auto backlight mode. Any activity (keys, rotary, RX, TX) restores full brightness. New setting in Display Options. - **Mute** — one-tap audio mute: - **SK2 short-tap** toggles mute on the VFO/Channel screens (except while a DMR QSO is on screen, where SK2 keeps its "set TX TG to incoming" function). - Turning the **volume knob fully down** is also treated as muted. - While muted: a bold **"M"** appears in the status bar (left of the battery) and the **red LED flashes** (0.5 s every 2 s). ### Display / UI - **S-meter** redrawn as discrete blocks — 9 green blocks (S1–S9) plus 6 red blocks (S9+10…+60), with gaps and a proportionally-filled leading block, and a scale label row beneath (S1 S3 S5 S7 S9 / +20 +40 +60). - **7-segment "LED" frequency font** for the VFO and SK1-held frequency display, with faintly-lit inactive segments; digits are wider than the normal font. - **Main-menu icons** — a small glyph next to each top-level menu entry. - Layout spacing adjusted so the contact/TG line, the DMR talkgroup/talker and the private-call caller ID clear the new S-meter label row. ### Fixes - **DMR no longer hard-faults.** The AMBE codec is now called through C function pointers instead of the old inline assembler (which modern GCC miscompiled), fixing the freeze-on-DMR that required a battery pull. - Fixed the DMR talkgroup/talker and private-call caller ID overlapping the S-meter labels. ### Build / Tooling - **Dockerized build** using the Arm GNU Toolchain 14 (matching the official builds); always a clean build. `./flash.sh` helper for flashing with model, language and DMR donor. - Integrated the OpenGD77 **screen grabber** (`gd-77_screen_grabber.py`) and the GD-77 loader into the repo. - **`TOOLS.md`** documents building, flashing, screenshots and language files. ### Project - **Renamed the project to FreeTRX** (fork of OpenGD77). New `README.md` documenting the fork and its upstream source; original OpenGD77 README kept as `README.OpenGD77.md`. Added `LICENSE.md` reproducing the inherited OpenGD77 license (modified BSD 3-Clause + non-commercial clause; not GPL-compatible). - On-screen branding renamed to **FreeTRX** (splash screen + Firmware Info name). - README notes this iteration is developed/tested only on the **TYT MD-UV380 and Retevis RT-3S**, with a contact for testing on other supported radios. - Firmware-info **credits** simplified to "Marcus DK1DA" and a reference to "The original OpenGD77 authors". ### Misc - Added **Marcus DK1DA** to the firmware-info credits ("Modified Fork by").