F4HWN Fusion (UV-K1 / K5 V3)

스타769포크210라이선스Apache-2.0언어C최근 업데이트2026. 10. 17.

UV-K1·UV-K5 V3용 F4HWN이에요. Fusion·FieldOps·Transfer·Labs 빌드로 나오고, UV Studio와 연동돼요. 지금 가장 활발히 개발되는 펌웨어예요.

  • UV-K1
  • UV-K5 V3 / 5R Plus 신형
MCUPY32F071릴리스 파일 분석
💬 댓글 0

릴리스

파일은 GitHub에서 그대로 내려받아요. ‘내 무전기에 넣기’를 누르면 펌웨어 플래싱 도구가 이 파일로 열려요. 마지막 확인 2026. 10. 17.

v6.2.0 F4HWN v6.2.0최신2026. 10. 16.
릴리스 노트
# F4HWN v6.2.0

> [!NOTE]
> Automatic translation is available through your browser or an online translation service.

# 🔥 About this firmware

This firmware is a fork of the [F4HWN custom firmware](https://github.com/armel/uv-k5-firmware-custom). It extends the work originally done for the UV-K5 V1 (DP32G030 MCU) and adapts it to the newer UV-K1 and UV-K5 V3, which are based on the PY32F071 MCU.

It is the result of joint work by [@muzkr](https://github.com/muzkr) and [@armel](https://github.com/armel). Many thanks to [@mrkusypl](https://github.com/mrkusypl), [@Sarijen](https://github.com/Sarijen), [@jdenoy](https://github.com/jdenoy), [@BI8SYN](https://github.com/BI8SYN), [@laurentneg](https://github.com/laurentneg), and everyone who tested, reported issues, contributed code, or supported the project.

Version 6.2.0 focuses on a much larger and more practical overlay-app platform, a redesigned UV Studio app manager, and a series of reliability fixes for everyday use. Labs can now hold up to 48 applications, while Fusion benefits from fixes to keypad locking, S-meter calibration persistence, and RX/TX logging.

The four official editions remain available:

| Edition | Intended use | Additional features |
|---|---|---|
| 🔥 Fusion | Everyday use | The balanced reference edition |
| 🧭 FieldOps | Field and first-responder operations | RescueOps controls, Fox Hunt and Morse Beacon |
| 📡 Transfer | Radio-to-radio data transfer | AirCopy and Beam wireless transfer |
| 🧪 Labs | Experimentation and early access | External-Flash overlay apps and experimental features |

For most users, Fusion remains the recommended edition.

> [!IMPORTANT]
> Labs is experimental. It contains the newest and least-settled developments. Expect rough edges, changing behavior, and possible incompatibilities between versions.

> [!WARNING]
> THIS FIRMWARE HAS NO REAL BRAIN. PLEASE USE YOUR OWN.
>
> Use this firmware entirely at your own risk. There is absolutely no guarantee that it will work in any way, shape, or form on your radio. It may even brick your radio, in which case you may need to buy another one.
>
> Anyway, have fun.

# ⚙️ Getting started

If you are already running Fusion Edition v5.x or v6.x, you can [flash](https://armel.github.io/uvstudio/#flash) the v6.2.0 edition of your choice as usual.

Choose another edition only if you need its specific features:

- choose FieldOps for Fox Hunt, Morse Beacon and RescueOps controls;
- choose Transfer for AirCopy and Beam;
- choose Labs to use the experimental overlay-app platform.

If you are coming from a factory firmware or from a version earlier than Fusion Edition v5.x, I recommend following these steps:

1. Optionally export your memory channels to CSV from CHIRP using the driver matching your currently installed firmware.
2. [Flash](https://armel.github.io/uvstudio/#flash) the v6.2.0 edition of your choice.
3. Enter the hidden menus by holding `PTT + SIDE BUTTON 1️⃣` while powering on the radio, then release all keys and perform a `RESET ALL`.
4. Optionally reload your channels using the CHIRP driver matching v6.2.0.

> [!WARNING]
> Depending on the firmware you are upgrading from, changes to the memory and settings layout may require a complete reset.
>
> Export your channels and back up your calibration data before flashing.

> [!WARNING]
> When restoring channels from a CSV file, copy and paste them into a freshly downloaded radio image instead of importing the CSV file directly.

Remember to configure the navigation direction for your radio using the hidden `SetNav` menu:

- select the UV-K1 layout for the UV-K1;
- select the UV-K5 V3 layout for the UV-K5 V3.

# 📺 Presentation video

I also made a [presentation video](https://youtu.be/-9ZGm82OXbc) for this release, available on my YouTube channel.

# 🗃️ A larger overlay-app platform

The experimental Labs overlay platform now supports **48 application slots**, up from 16 in v6.1.0. Empty slots are hidden from the radio's app menu, so the list remains compact even when applications are spread across external Flash.

The app menu is also easier to use:

- holding `UP` or `DOWN` repeats navigation;
- `*` switches the right-hand column between app size and app version;
- the list refreshes when UV Studio installs or replaces an app;
- incompatible applications remain visible and report a clear error instead of disappearing silently.

The loader can now preserve an application's screen in external Flash when it exits. It also introduces a bounded configuration proxy, allowing a companion editor to update a versioned settings block owned by another installed app without moving application-specific logic into the resident firmware.

The external-Flash layout has been adjusted to make room for the expanded app area while preserving the Sonic 4K interoperability reserve. The RX/TX log has moved from `0x1E0000` to `0x018000`; existing v6.1.0 log entries are not migrated and the log therefore starts fresh after the update.

# 🆕 New overlay applications

The collection grows from 18 to 30 applications. New in this release:

- **Signal Finder** — direction finding for any carrier, with relative peak tracking, automatic attenuation and detection of the downward swept tone used by 121.5/243 MHz emergency homers. Thanks [@jdenoy](https://github.com/jdenoy).
- **CW Decode** — decodes A1A keyed carriers from the BK4829 RSSI envelope, with adaptive threshold, WPM tracking, AGC control and optional USB receive audio.
- **CW Keyer** — self-contained straight-key and paddle CW transmission with adjustable WPM, sidetone, receive pitch, semi-break-in delay and crystal correction.
- **ACARS RX** — experimental VHF ACARS receiver with parity and BCS checking, limited error repair and a three-message history. Bench-tested, but not yet validated with live aircraft traffic.
- **APRS DIGI** — a deliberately limited `WIDE1-1` / `WIDE2-1` fill-in digipeater with duplicate suppression, loop prevention and channel-busy protection.
- **APRS Edit** — edits the APRS TX callsign, SSID, position, path, symbol and comment of up to 64 characters through the new configuration proxy.
- **ATIS RX** — receives the ATIS identity burst used by European inland-waterway VHF radios and displays the station identity, call sign and country. Bench-tested; live boat traffic remains to be validated.
- **POCSAG RX** — receives 1200-baud pager traffic such as DAPNET, corrects one-bit BCH errors and keeps a five-page history. Bench-tested; live network reception remains to be validated.
- **Sokoban** — a complete 24-level push-box puzzle with undo, level selection and saved progress. Thanks [@BI8SYN](https://github.com/BI8SYN).
- **Sonde M20** — decodes Meteomodem M20 radiosondes and displays serial number, GPS position, altitude, temperature and pressure. Thanks [@laurentneg](https://github.com/laurentneg).
- **ToneCall** — sends user-defined ZVEI-1, ZVEI-2, CCIR-1 or CCIR-2 sequential tone calls and can be assigned directly to a side key. Thanks [@jdenoy](https://github.com/jdenoy).
- **FlashMap** — inspects the external-Flash map, firmware slots, installed apps, active state and raw contents through a hexadecimal viewer.

> [!CAUTION]
> Transmitting applications must only be used on frequencies, power levels and modes permitted by your licence and local regulations. Never transmit test signals in protected distress, aeronautical, maritime or paging bands.

# 📡 Existing application improvements

Existing applications also received substantial updates:

- **APRS RX** now follows the configured UV-K1/UV-K5 navigation direction correctly and gates optional speaker audio with the squelch without gating the decoder.
- **APRS TX** now stores its beacon content in a versioned profile editable from APRS Edit and adds an automatic beacon interval of 1, 5, 15, 30 or 60 minutes.
- **SSTV** preserves the last received picture across launches, reacquires line synchronization after missed periods, accepts the first line synchronization anywhere after the VIS, and adds a one-second 1900 Hz lead-in so a squelch, tone decoder or repeater does not cut off the VIS header.
- **EPIRB 406** now decodes every supported Cospas-Sarsat T.001 first-generation location format, including national, RLS, ELT(DT) and user-location positions. Its layout has been reorganized, and all 61 generated T.001 coding variants were validated over the air with real biphase-L modulation from a LimeSDR.
- **System Info** now reports the UV-K1 battery as 1400 mAh instead of 1500 mAh.

# 🌐 UV Studio v1.9.0

[UV Studio](https://armel.github.io/uvstudio/) has received a major app-management redesign alongside firmware v6.2.0.

The new app manager provides:

- separate **Installed** and **Catalog** views;
- automatic detection of the connected firmware and its compatible app catalog;
- an installed-app counter and a 48-slot capacity gauge;
- app search and category filters for radio tools, utilities, games and demos;
- richer catalog cards with descriptions, authors, versions, code/assets sizes and compatibility state;
- direct install and update actions with inline progress;
- one-click updates for installed apps and multiboot firmware slots;
- app reordering and slot renumbering, so the radio menu order can be changed without reinstalling each app manually;
- removal of individual apps or all installed apps;
- clearer reporting for ABI, capability, size, CRC and firmware-version incompatibilities;
- continued support for installing a local `.app` file.

UV Studio and the radio now agree on the 48-slot layout and refresh their app inventory after changes. The catalog also includes presentation metadata for all new v6.2.0 applications.

# 🛠️ Reliability fixes

- Fixed long auto-keypad-lock delays wrapping around and locking too early.
- Fixed S-meter correction values for bands 1 and 2 being reset to zero whenever settings were saved.
- Added startup repair for radios whose first two S-meter corrections were already overwritten by the previous bug.
- Fixed overlay navigation direction on both UV-K1 and UV-K5 V3 layouts.
- Improved app-menu refresh and reporting after serial installation, including incompatible apps.
- Corrected the UV-K1 battery-capacity label and discharge-curve name from 1500 to 1400 mAh.
- Accepted both `all` and `All` in the firmware build script.

# 📋 Changelog

## Added

- Added Signal Finder with ELT swept-tone detection.
- Added CW Decode and CW Keyer.
- Added ACARS RX, APRS DIGI, APRS Edit, ATIS RX and POCSAG RX.
- Added Sonde M20 and ToneCall.
- Added Sokoban with 24 levels.
- Added FlashMap for external-Flash diagnostics.
- Added a `TONE CALL` assignable key action when ToneCall is installed.
- Added an overlay configuration proxy for bounded cross-app profile editing.
- Added optional saved-screen persistence for overlay apps.
- Added one-click app and multiboot firmware-slot updates to UV Studio.
- Added app search, categories, compatibility summaries, reordering, renumbering and bulk removal to UV Studio.

## Improved

- Increased overlay-app capacity from 16 to 48 slots.
- Hid empty slots from the radio app menu.
- Added held-key repeat to app-menu navigation.
- Added size/version switching with `*` in the app menu.
- Improved APRS TX profiles and added a beacon timer.
- Improved APRS RX speaker behavior.
- Improved SSTV synchronization, persistence and TX lead-in.
- Extended EPIRB 406 decoding to all supported T.001 first-generation location formats.
- Improved EPIRB 406 status layout and validation coverage.
- Redesigned UV Studio's app-management interface and progress reporting.
- Improved compatibility diagnostics for installed overlay apps.

## Fixed

- Fixed auto-keypad-lock timer overflow.
- Fixed bands 1 and 2 S-meter correction persistence.
- Fixed overlay scrolling direction for both supported keypad layouts.
- Fixed APRS TX editor navigation direction.
- Fixed APRS RX speaker noise between received frames by following the squelch.
- Fixed several SSTV synchronization edge cases after VIS and after missing line syncs.
- Fixed EPIRB 406 ELT(DT) rotating-field interpretation.
- Fixed System Info's UV-K1 battery capacity.

## Changed

- Moved the RX/TX log to `0x018000–0x01FFFF` in external Flash.
- Reserved the upper external-Flash area for expanded overlay storage and Sonic 4K interoperability.
- Changed the app menu from a physical-slot browser to an installed-app launcher.
- Changed APRS TX content editing to a versioned profile shared through the loader's configuration proxy.
- Bumped the firmware version to v6.2.0 and UV Studio to v1.9.0.

# 📚 Wiki documentation

The project [Wiki](https://github.com/armel/uv-k1-k5v3-firmware-custom/wiki) brings together the main documentation: getting started, CHIRP programming, UV Studio, radio operation, scanning, menu reference, button functions, advanced features, troubleshooting, and videos.

Documentation for the experimental overlay apps is also available in the app directories of the source repository.

# 🪛 Calibration data

[UV Studio](https://armel.github.io/uvstudio/) can dump and restore calibration data. Keeping a separate backup for each radio is strongly recommended.

1. Open [Dump Calibration](https://armel.github.io/uvstudio/#dump-calib).
2. Power on the radio in normal mode.
3. Click `Dump Calibration Data` and save the resulting `calibration.dat` file.
4. Rename the file with the serial number printed under the battery to avoid mixing backups from different radios.

# 🖥️ Live Viewer

UV Studio includes K5Viewer Live Viewer for screen mirroring, screenshots, and remote keyboard control over USB or a compatible serial cable.

1. Keep the radio connected to your computer.
2. Open [UV Studio Live Viewer](https://armel.github.io/uvstudio/#live-viewer).
3. Click `Connect` and select the radio's serial port.

# 💾 CHIRP support

Use the CHIRP driver supplied with this release and matching firmware v6.2.0. It supports the UV-K1 and UV-K5 V3 editions and exposes the settings reported by the installed firmware.

Always use the CHIRP driver matching the firmware version installed on the radio.

# 📦 Release files

This release provides four firmware binaries:

- `f4hwn.fusion.bin`
- `f4hwn.fieldops.bin`
- `f4hwn.transfer.bin`
- `f4hwn.labs.bin`

It also includes the CHIRP driver matching v6.2.0;

For most users, install `f4hwn.fusion.bin`.

# ⚙️ Build summary

<!-- Replace the TBD values below with the final output from compile-firmware.sh. -->

### 💾 Flash (limit: 120832 B / 118.00 KiB)

| Preset | Used (B) | Used (KiB) | Free (B) | Free (KiB) | Usage |
|---|---:|---:|---:|---:|---:|
| Fusion     |     107676 |     105.15 |      13156 |      12.85 |  89.11% |
| Transfer   |     115812 |     113.10 |       5020 |       4.90 |  95.85% |
| FieldOps   |     113812 |     111.14 |       7020 |       6.86 |  94.19% |
| Labs       |     115832 |     113.12 |       5000 |       4.88 |  95.86% |

### 🧠 RAM (limit: 16384 B / 16.00 KiB)

| Preset | Used (B) | Used (KiB) | Free (B) | Free (KiB) | Usage |
|---|---:|---:|---:|---:|---:|
| Fusion     |      12160 |      11.88 |       4224 |       4.13 |  74.22% |
| Transfer   |      12800 |      12.50 |       3584 |       3.50 |  78.13% |
| FieldOps   |      12384 |      12.09 |       4000 |       3.91 |  75.59% |
| Labs       |      12672 |      12.38 |       3712 |       3.63 |  77.34% |

### 📦 Overlay apps

| File | Code (B) | Code (KiB) | Free (B) | Free (KiB) | Usage | Status |
|---|---:|---:|---:|---:|---:|---|
| ACARSRX.app      |      4048 |      3.95 |        48 |      0.05 |  98.83% | ✅ OK (+404 B assets) |
| APRSDIGI.app     |      3660 |      3.57 |       436 |      0.43 |  89.36% | ✅ OK (+236 B assets) |
| APRSEdit.app     |      3280 |      3.20 |       816 |      0.80 |  80.08% | ✅ OK (+3686 B assets) |
| APRSRX.app       |      4072 |      3.98 |        24 |      0.02 |  99.41% | ✅ OK (+3832 B assets) |
| APRSTX.app       |      3460 |      3.38 |       636 |      0.62 |  84.47% | ✅ OK (+3206 B assets) |
| ATISRX.app       |      2932 |      2.86 |      1164 |      1.14 |  71.58% | ✅ OK (+972 B assets) |
| Beacon.app       |      2692 |      2.63 |      1404 |      1.37 |  65.72% | ✅ OK (+173 B assets) |
| Beam.app         |      1096 |      1.07 |      3000 |      2.93 |  26.76% | ✅ OK (+244 B assets) |
| Breakout.app     |      1840 |      1.80 |      2256 |      2.20 |  44.92% | ✅ OK (+1139 B assets) |
| Cube3D.app       |      2480 |      2.42 |      1616 |      1.58 |  60.55% | ✅ OK (+1200 B assets) |
| CWDecode.app     |      3616 |      3.53 |       480 |      0.47 |  88.28% | ✅ OK (+907 B assets) |
| CWKeyer.app      |      3812 |      3.72 |       284 |      0.28 |  93.07% | ✅ OK (+243 B assets) |
| EPIRB406.app     |      4072 |      3.98 |        24 |      0.02 |  99.41% | ✅ OK (+470 B assets) |
| FlashMap.app     |      3420 |      3.34 |       676 |      0.66 |  83.50% | ✅ OK (+686 B assets) |
| BroadcastFM.app  |      2244 |      2.19 |      1852 |      1.81 |  54.79% | ✅ OK (+107 B assets) |
| FoxHunt.app      |      2448 |      2.39 |      1648 |      1.61 |  59.77% | ✅ OK (+196 B assets) |
| Minesweeper.app  |      1752 |      1.71 |      2344 |      2.29 |  42.77% | ✅ OK (+2110 B assets) |
| Plasma.app       |      1524 |      1.49 |      2572 |      2.51 |  37.21% | ✅ OK (+773 B assets) |
| POCSAGRX.app     |      3256 |      3.18 |       840 |      0.82 |  79.49% | ✅ OK (+188 B assets) |
| RapidRoll.app    |      2332 |      2.28 |      1764 |      1.72 |  56.93% | ✅ OK (+1163 B assets) |
| SigFinder.app    |      3276 |      3.20 |       820 |      0.80 |  79.98% | ✅ OK (+277 B assets) |
| Snake.app        |      1836 |      1.79 |      2260 |      2.21 |  44.82% | ✅ OK (+1178 B assets) |
| Sokoban.app      |      2848 |      2.78 |      1248 |      1.22 |  69.53% | ✅ OK (+1744 B assets) |
| SondeM20.app     |      3868 |      3.78 |       228 |      0.22 |  94.43% | ✅ OK (+345 B assets) |
| SpaceImpact.app  |      3196 |      3.12 |       900 |      0.88 |  78.03% | ✅ OK (+1225 B assets) |
| Spectrum3D.app   |      3856 |      3.77 |       240 |      0.23 |  94.14% | ✅ OK (+186 B assets) |
| SSTV.app         |      3880 |      3.79 |       216 |      0.21 |  94.73% | ✅ OK (+2954 B assets) |
| SystemInfo.app   |      3972 |      3.88 |       124 |      0.12 |  96.97% | ✅ OK (+1316 B assets) |
| Tetris.app       |      2636 |      2.57 |      1460 |      1.43 |  64.36% | ✅ OK (+1236 B assets) |
| ToneCall.app     |      2652 |      2.59 |      1444 |      1.41 |  64.75% | ✅ OK (+204 B assets) |
| **TOTAL** | **90056** | **87.95** | **32824** | **32.05** | **73.29%** | **30/30 apps, avg usage (+32600 B assets)** |

Enjoy,

Armel, F4HWN
GitHub에서 보기 ↗
v6.1.0 F4HWN v6.1.02026. 10. 7.
릴리스 노트
# F4HWN v6.1.0

> [!NOTE]
> 🌐 Automatic translation is available through your browser or an online translation service.

# 🔥 About this firmware

This firmware is a fork of the [F4HWN custom firmware](https://github.com/armel/uv-k5-firmware-custom). It extends the work originally done for the UV-K5 V1 (DP32G030 MCU) and adapts it to the newer UV-K1 and UV-K5 V3, which are based on the PY32F071 MCU.

It is the result of joint work by [@muzkr](https://github.com/muzkr) and [@armel](https://github.com/armel). Many thanks to [@mrkusypl](https://github.com/mrkusypl), [@Sarijen](https://github.com/Sarijen), [@jdenoy](https://github.com/jdenoy), and everyone who tested, reported issues, contributed code, or supported the project.

Version 6.1.0 expands everyday monitoring in Fusion, makes multiboot configuration banks much faster to switch, and significantly extends the experimental overlay-app platform in Labs.

The four official editions remain available:

| Edition | Intended use | Additional features |
|---|---|---|
| 🔥 Fusion | Everyday use | The balanced reference edition |
| 🧭 FieldOps | Field and first-responder operations | RescueOps controls, Fox Hunt and Morse Beacon |
| 📡 Transfer | Radio-to-radio data transfer | AirCopy and Beam wireless transfer |
| 🧪 Labs | Experimentation and early access | External-Flash overlay apps and experimental features |

For most users, Fusion remains the recommended edition.

> [!IMPORTANT]
> Labs is experimental. It contains the newest and least-settled developments. Expect rough edges, changing behavior, and possible incompatibilities between versions.

> [!WARNING]
> THIS FIRMWARE HAS NO REAL BRAIN. PLEASE USE YOUR OWN.
>
> Use this firmware entirely at your own risk. There is absolutely no guarantee that it will work in any way, shape, or form on your radio. It may even brick your radio, in which case you may need to buy another one.
>
> Anyway, have fun.

# ⚙️ Getting started

If you are already running Fusion Edition v5.x, you can [flash](https://armel.github.io/uvstudio/?firmwareURL=https://github.com/armel/uv-k1-k5v3-firmware-custom/raw/main/archive/f4hwn.fusion.v6.1.0.bin#flash) the v6.1.0 edition of your choice as usual.

For most users, **Fusion Edition remains the recommended edition**.

Choose another edition only if you need its specific features:

- choose **FieldOps** for Fox Hunt, Morse Beacon and RescueOps controls;
- choose **Transfer** for AirCopy and Beam;
- choose **Labs** to test the experimental overlay-app platform.

A dedicated v6.1.0 CHIRP driver is provided as an attachment to these release notes. Make sure to use this driver with every v6.0.0 edition.

If you are coming from a factory firmware or from a version earlier than Fusion Edition v5.x, I recommend following these steps:

1. Optionally export your memory channels to CSV from CHIRP using the driver matching your currently installed firmware.
2. [Flash](https://armel.github.io/uvstudio/?firmwareURL=https://github.com/armel/uv-k1-k5v3-firmware-custom/raw/main/archive/f4hwn.fusion.v6.1.0.bin#flash) your UV-K1 or UV-K5 V3 with the v6.0.0 edition of your choice.
3. Enter the hidden menus by holding `PTT + SIDE BUTTON 1️⃣` while powering on the radio, then release all keys and perform a `RESET ALL`.
4. Optionally reload your channels using CHIRP with the dedicated v6.1.0 driver.

> [!WARNING]
> Depending on the firmware you are upgrading from, changes to the memory and settings layout may require a complete reset.
>
> Export your channels and back up your calibration data before flashing.

> [!WARNING]
> When restoring channels from a CSV file, copy and paste them into a freshly downloaded radio image instead of importing the CSV file directly.

Remember to configure the navigation direction for your radio using the hidden `SetNav` menu:

- select the UV-K1 layout for the UV-K1;
- select the UV-K5 V3 layout for the UV-K5 V3.

# 📺 Presentation video

I also made a [presentation video](https://youtu.be/ioNoV409Z3Q) for this release, available on my YouTube channel.

# 👀 Full Watch

Fusion v6.1.0 adds **Full Watch**, an extension of dual watch that can monitor:

- VFO A;
- VFO B;
- priority channel 1;
- priority channel 2.

The `RxMode` menu now provides two additional modes:

- `FULL RX / RESPOND` monitors all configured channels and replies on the channel that opened the squelch;
- `MAIN TX / FULL RX` monitors all configured channels but always transmits on the selected main VFO.

Priority channels use the existing scan-list priority settings. Duplicate or unavailable priority channels are ignored automatically. Animated chevrons show the background watch cycle, and channel navigation now returns cleanly from a temporary priority-channel display.

# 🔄 Instant configuration-bank switching

The `SetCfg` menu can now apply another multiboot configuration bank immediately, without restarting the radio or restoring another firmware slot.

Changing banks reloads the complete operating state, including channels, VFOs, scan lists, menu settings, display configuration, and edition-specific settings. The status bar displays the active bank as `CFG M` or `CFG 1` to `CFG 4`, so the selected configuration remains visible during normal use.

Each firmware slot may therefore use its matching bank, share a bank with another slot, or switch between several independent operating configurations while the same firmware remains active.

# 📋 Mixed scan lists

The scan-list selector now includes a `MIX` mode. It lets you choose any combination of the available scan lists and scan them as one set.

The menu displays the number of selected lists, making large channel plans easier to check before starting a scan.

# 🗃️ Overlay applications

The experimental Labs overlay platform has received its largest update so far.

The number of external-Flash app slots has increased from 8 to 16. Overlay API v2 adds read-only assets, allowing fonts, text, bitmaps, tables, and other static resources to remain in external Flash instead of consuming the 4 KiB executable overlay. App settings are preserved when an app is updated, and the firmware now reports code and asset sizes separately.

New applications include:

- **APRS RX** — receives Bell 202 AFSK 1200 AX.25 UI frames, decodes common position formats and Mic-E, displays APRS symbols and RSSI, and keeps a five-frame history;
- **APRS TX** — edits and transmits APRS beacons with callsign, SSID, path, symbol, and position;
- **SSTV** — receives 14 SSTV modes and can transmit the radio's boot logo, including Robot, Martin, Scottie, and PD modes used by ARISS events;
- **EPIRB 406** — receives and decodes first-generation 406 MHz emergency-beacon messages, including beacon ID, country, protocol, position, and BCH status;
- **SysInfo** — displays detailed firmware, memory, external-Flash, multiboot, and runtime diagnostics;
- **Spectrum3D** — renders a fast scrolling 3D spectrum waterfall;
- **Minesweeper** — a complete minesweeper game with title screen and persistent settings;
- **Snake** — the classic snake game;
- **Space Impact** — a side-scrolling arcade game;
- **Rapid Roll** — a platform arcade game.

Existing apps also received substantial improvements. Cube3D now offers more shapes, zoom, speed, pause, and wire/solid rendering controls. Plasma, Breakout, Beam, and the shared app runtime use less Flash and RAM.

> [!IMPORTANT]
> Overlay apps are intended for the Labs edition. An app must match the overlay ABI and capabilities provided by the installed firmware. Apps built for v6.0.0 may be rejected when they depend on retired services; install the v6.1.0 app files supplied with this release.

> [!CAUTION]
> APRS TX, SSTV TX, EPIRB, Beacon, and other transmitting apps must only be used on frequencies, power levels, and modes permitted by your licence and local regulations. Never transmit test signals in the protected 406.0–406.1 MHz distress-beacon band.

# 🚀 AirCopy and external-Flash tools

The Transfer edition's AirCopy implementation is faster and more capable:

- multi-block FSK framing approximately doubles transfer speed;
- blocks that are already identical are skipped;
- TX and RX selections are validated more strictly;
- UART-assisted transfer and complete external-Flash cloning are supported.

Labs also adds external-Flash dump and restore through UV Studio, with CRC32 verification. The radio's device-specific calibration sector remains protected during restore operations.

# 📋 Changelog

## Added

- Added Full Watch to Fusion, with VFO A, VFO B, and up to two priority channels.
- Added `FULL RX / RESPOND` and `MAIN TX / FULL RX` receive modes.
- Added immediate configuration-bank switching through `SetCfg`.
- Added an active configuration-bank indicator to the status bar.
- Added the `MIX` scan-list mode and selected-list count.
- Increased overlay-app capacity from 8 to 16 slots.
- Added overlay API v2 read-only assets and persistent app settings.
- Added APRS RX and APRS TX overlay apps.
- Added the SSTV overlay app with 14 receive and transmit modes.
- Added the EPIRB 406 overlay app, originally authored by [@jdenoy](https://github.com/jdenoy).
- Added the SysInfo overlay app and stack-usage diagnostics.
- Added Spectrum3D, Minesweeper (thanks [@Sarijen](https://github.com/Sarijen)), Snake (thanks [@mrkusypl](https://github.com/mrkusypl)), Space Impact, and Rapid Roll.
- Added external-Flash dump, restore, and CRC32 verification for Labs.
- Added UART and external-Flash cloning to AirCopy.
- Added the new F4HWN boot logo.

## Improved

- Improved Full Watch animation, priority-channel swapping, navigation, and scan transitions.
- Improved status-bar configuration-bank and receive-mode indicators.
- Improved AirCopy throughput with multi-block frames and identical-block skipping.
- Improved Multiboot Flash handling and RAM restore progress.
- Improved APRS symbol rendering, Mic-E and position display, scrolling, editing, frame history, RSSI display, and backlight behavior.
- Improved EPIRB decoding, protocol display, UI, and code size.
- Improved SSTV receive timing, abort behavior, and picture navigation.
- Improved Cube3D rendering, controls, shapes, and performance.
- Improved Spectrum3D rendering speed, smoothness, audio behavior, and Flash usage.
- Improved Plasma and Breakout rendering and behavior.
- Reduced overlay-app, menu, DCS-table, font, printf, and Multiboot Flash usage.
- Improved app build reports with code, asset, total, and overflow information.
- Improved firmware build output and warning reporting.
- Improved app-build compatibility with Git Bash, Windows paths, and CRLF line endings.

## Fixed

- Fixed `SetNav` persistence in Fusion and Transfer.
- Fixed a possible reboot loop when battery-calibration data was erased.
- Fixed the missing 134.4 Hz DCS squelch-tail turn-off tone in the BK4829 driver.
- Fixed RF Log channel names when using different configuration banks.
- Fixed RF Log state corrupting overlay apps when launched.
- Fixed Full Watch channel navigation after priority swaps.
- Fixed scan startup while a Full Watch priority channel was temporarily displayed.
- Fixed menu exit after switching configuration banks without rebooting.
- Fixed the current VFO not always following the selected TX VFO.
- Fixed APRS TX scrolling and several APRS RX/TX display details.
- Fixed SSTV `EXIT` handling during reception and picture viewing.
- Fixed Snake state, randomization, and screen-saver behavior.
- Fixed Minesweeper gameplay and title-screen issues.
- Fixed Breakout screen-saver and redraw artifacts.

## Changed

- Moved large overlay resources to external-Flash assets through API v2.
- Decoupled the overlay Beam app from the resident AirCopy FSK driver.
- Removed the obsolete Triple VFO overlay app.
- Reworked menu setting descriptors to reduce firmware Flash usage and centralize validation.
- Replaced signed software division with a compact Cortex-M0+ implementation where applicable.
- Packed small and large fonts more efficiently without changing their appearance.
- Tagged RF Log records with their originating configuration bank.

# 📚 Wiki documentation

The project [Wiki](https://github.com/armel/uv-k1-k5v3-firmware-custom/wiki) brings together the main documentation: getting started, CHIRP programming, UV Studio, radio operation, scanning, menu reference, button functions, advanced features, troubleshooting, and videos.

Documentation for the experimental overlay apps is also available in the app directories of the source repository.

# 🪛 Calibration data

[UV Studio](https://armel.github.io/uvstudio/) can dump and restore calibration data. Keeping a separate backup for each radio is strongly recommended.

1. Open [Dump Calibration](https://armel.github.io/uvstudio/#dump-calib).
2. Power on the radio in normal mode.
3. Click `Dump Calibration Data` and save the resulting `calibration.dat` file.
4. Rename the file with the serial number printed under the battery to avoid mixing backups from different radios.

# 🖥️ Live Viewer

UV Studio includes K5Viewer Live Viewer for screen mirroring, screenshots, and remote keyboard control over USB or a compatible serial cable.

1. Keep the radio connected to your computer.
2. Open [UV Studio Live Viewer](https://armel.github.io/uvstudio/#live).
3. Click `Connect` and select the radio's serial port.

# 💾 CHIRP support

A dedicated v6.1.0 CHIRP driver supporting the UV-K1 and UV-K5 V3 is provided as a release attachment. It supports the four official editions and exposes the settings reported by the installed firmware.

Always use the CHIRP driver matching the firmware version installed on the radio.

# 📦 Release files

This release provides four firmware binaries:

- `f4hwn.fusion.bin`
- `f4hwn.fieldops.bin`
- `f4hwn.transfer.bin`
- `f4hwn.labs.bin`

It also includes:

- the dedicated v6.1.0 CHIRP driver;
- the v6.1.0 overlay-app files intended for Labs.

For most users, install `f4hwn.fusion.bin`.

# ⚙️ Build summary

<!-- Replace the TBD values below with the final output from compile-firmware.sh. -->

### 💾 Flash (limit: 120832 B / 118.00 KiB)

| Preset | Used (B) | Used (KiB) | Free (B) | Free (KiB) | Usage |
|---|---:|---:|---:|---:|---:|
| Fusion     |     107616 |     105.09 |      13216 |      12.91 |  89.06% |
| Transfer   |     115760 |     113.05 |       5072 |       4.95 |  95.80% |
| FieldOps   |     113748 |     111.08 |       7084 |       6.92 |  94.14% |
| Labs       |     114884 |     112.19 |       5948 |       5.81 |  95.08% |

### 🧠 RAM (limit: 16384 B / 16.00 KiB)

| Preset | Used (B) | Used (KiB) | Free (B) | Free (KiB) | Usage |
|---|---:|---:|---:|---:|---:|
| Fusion     |      12160 |      11.88 |       4224 |       4.13 |  74.22% |
| Transfer   |      12800 |      12.50 |       3584 |       3.50 |  78.13% |
| FieldOps   |      12384 |      12.09 |       4000 |       3.91 |  75.59% |
| Labs       |      12544 |      12.25 |       3840 |       3.75 |  76.56% |

### 📦 Overlay apps

| File | Code (B) | Code (KiB) | Free (B) | Free (KiB) | Usage | Status |
|---|---:|---:|---:|---:|---:|---|
| APRSRX.app | 4056 | 3.96 | 40 | 0.04 | 99.02% | ✅ OK (+3832 B assets) |
| APRSTX.app | 4040 | 3.95 | 56 | 0.05 | 98.63% | ✅ OK (+3282 B assets) |
| Beacon.app | 2692 | 2.63 | 1404 | 1.37 | 65.72% | ✅ OK (+173 B assets) |
| Beam.app | 1096 | 1.07 | 3000 | 2.93 | 26.76% | ✅ OK (+244 B assets) |
| Breakout.app | 1840 | 1.80 | 2256 | 2.20 | 44.92% | ✅ OK (+1139 B assets) |
| Cube3D.app | 2480 | 2.42 | 1616 | 1.58 | 60.55% | ✅ OK (+1200 B assets) |
| EPIRB406.app | 3992 | 3.90 | 104 | 0.10 | 97.46% | ✅ OK (+466 B assets) |
| BroadcastFM.app | 2244 | 2.19 | 1852 | 1.81 | 54.79% | ✅ OK (+107 B assets) |
| FoxHunt.app | 2448 | 2.39 | 1648 | 1.61 | 59.77% | ✅ OK (+196 B assets) |
| Minesweeper.app | 1752 | 1.71 | 2344 | 2.29 | 42.77% | ✅ OK (+2110 B assets) |
| Plasma.app | 1524 | 1.49 | 2572 | 2.51 | 37.21% | ✅ OK (+773 B assets) |
| RapidRoll.app | 2332 | 2.28 | 1764 | 1.72 | 56.93% | ✅ OK (+1163 B assets) |
| Snake.app | 1836 | 1.79 | 2260 | 2.21 | 44.82% | ✅ OK (+1178 B assets) |
| SpaceImpact.app | 3196 | 3.12 | 900 | 0.88 | 78.03% | ✅ OK (+1225 B assets) |
| Spectrum3D.app | 3856 | 3.77 | 240 | 0.23 | 94.14% | ✅ OK (+186 B assets) |
| SSTV.app | 3780 | 3.69 | 316 | 0.31 | 92.29% | ✅ OK (+1930 B assets) |
| SystemInfo.app | 3964 | 3.87 | 132 | 0.13 | 96.78% | ✅ OK (+1316 B assets) |
| Tetris.app | 2636 | 2.57 | 1460 | 1.43 | 64.36% | ✅ OK (+1236 B assets) |
| **TOTAL** | **49764** | **48.60** | **23964** | **23.40** | **67.50%** | **18/18 apps, average usage (+21756 B assets)** |

Enjoy,

Armel, F4HWN
GitHub에서 보기 ↗
v6.0.0 F4HWN v6.0.02026. 9. 10.
릴리스 노트
> 🌐 **Translate**  
> Automatic translation is available via Google Translate: [Open translated version](https://translate.google.com/translate?sl=auto&tl=fr&u=https://github.com/armel/uv-k1-k5v3-firmware-custom/releases/tag/v6.0.0).

# 🔥 About this firmware

This firmware is a fork of the [F4HWN custom firmware](https://github.com/armel/uv-k5-firmware-custom). It extends the work originally done for the UV-K5 V1 (DP32G030 MCU) and adapts it to the newer UV-K1 and UV-K5 V3, which are based on the PY32F071 MCU.

It is the result of joint work by [@muzkr](https://github.com/muzkr) and [@armel](https://github.com/armel). Many thanks to [@mrkusypl](https://github.com/mrkusypl) for his huge contributions!

Version 6.0.0 marks an important evolution of the project.

Fusion is no longer the only official edition. The firmware is now available in four editions, all sharing the same core but targeting different uses:

| Edition | Intended use | Additional features |
|---|---|---|
| 🔥 **Fusion** | Everyday use | The balanced reference edition |
| 🧭 **FieldOps** | Field and first-responder operations | RescueOps controls, Fox Hunt and Morse Beacon |
| 📡 **Transfer** | Radio-to-radio data transfer | AirCopy and Beam wireless transfer |
| 🧪 **Labs** | Experimentation and early access | External-Flash overlay apps and experimental features |

Each edition displays its own name in the welcome and system-information screens.

> [!IMPORTANT]
> **Labs is experimental.**
>
> It includes the newest and least-settled developments. Expect rough edges, changing behavior and possible incompatibilities between versions.
>
> Labs is not necessarily a strict superset of all the other editions. Some features may be exchanged between releases to preserve stability, RAM and Flash headroom.

> [!WARNING]
> **THIS FIRMWARE HAS NO REAL BRAIN. PLEASE USE YOUR OWN.**
>
> Use this firmware entirely at your own risk. There is absolutely no guarantee that it will work in any way, shape or form on your radio. It may even brick your radio, in which case you may need to buy another one.
>
> Anyway, have fun.

<a name="getting-started"></a>
# ⚙️ Getting started

If you are already running Fusion Edition v5.x, you can [flash](https://armel.github.io/uvstudio/?firmwareURL=https://github.com/armel/uv-k1-k5v3-firmware-custom/raw/main/archive/f4hwn.fusion.v6.0.0.bin#flash) the v6.0.0 edition of your choice as usual.

For most users, **Fusion Edition remains the recommended edition**.

Choose another edition only if you need its specific features:

- choose **FieldOps** for Fox Hunt, Morse Beacon and RescueOps controls;
- choose **Transfer** for AirCopy and Beam;
- choose **Labs** to test the experimental overlay-app platform.

A dedicated v6.0.0 CHIRP driver is provided as an attachment to these release notes. Make sure to use this driver with every v6.0.0 edition.

If you are coming from a factory firmware or from a version earlier than Fusion Edition v5.x, I recommend following these steps:

1. Optionally export your memory channels to CSV from CHIRP using the driver matching your currently installed firmware.
2. [Flash](https://armel.github.io/uvstudio/?firmwareURL=https://github.com/armel/uv-k1-k5v3-firmware-custom/raw/main/archive/f4hwn.fusion.v6.0.0.bin#flash) your UV-K1 or UV-K5 V3 with the v6.0.0 edition of your choice.
3. Enter the hidden menus by holding `PTT + SIDE BUTTON 1️⃣` while powering on the radio, then release all keys and perform a `RESET ALL`.
4. Optionally reload your channels using CHIRP with the dedicated v6.0.0 driver.

> [!WARNING]
> Depending on the firmware you are upgrading from, changes to the memory and settings layout may require a complete reset.
>
> Export your channels and back up your calibration data before flashing.

> [!WARNING]
> When restoring channels from a CSV file, copy and paste them into a freshly downloaded radio image instead of importing the CSV file directly.

Remember to configure the navigation direction for your radio using the hidden `SetNav` menu:

- select the UV-K1 layout for the UV-K1;
- select the UV-K5 V3 layout for the UV-K5 V3.

# 📺 Presentation video

I also made a presentation [video](https://www.youtube.com/watch?v=_iWIly3-mO0) for this release, available on my YouTube channel:

# 🧩 The four editions

Version 6.0.0 is now available in four editions, each designed for a different use case.

## 🔥 Fusion

Fusion remains the reference edition and the recommended choice for most users.

Compared with Fusion v5.9.0, it no longer includes:

- AirCopy and Beam;
- RescueOps;
- Fox Hunt and Beacon;
- Breakout.

These features remain available in the specialized editions below.

## 🧭 FieldOps

FieldOps includes the Fusion feature set, plus:

- RescueOps;
- Fox Hunt and Beacon.

## 📡 Transfer

Transfer includes the Fusion feature set, plus:

- AirCopy and Beam.

## 🧪 Labs

Labs is the experimental edition. It includes:

- the Fusion feature set;
- RescueOps;
- AirCopy;
- the external-Flash overlay-app platform.

The first available overlay apps include:

- Broadcast FM;
- Fox Hunt;
- Beacon;
- Beam;
- Breakout;
- Tetris;
- Cube3D;
- Plasma.

> [!IMPORTANT]
> Labs contains the newest and least-settled developments. Expect rough edges, changing behavior and possible incompatibilities between releases.
>
> Labs is not a strict superset of Fusion, FieldOps and Transfer. Its feature set may evolve depending on stability and available memory.

# 🚀 Multiboot

Version 6.0.0 introduces a new multiboot architecture using the radio's external Flash memory.

It provides:

- one automatically maintained **Main** firmware backup;
- four additional firmware slots;
- firmware edition and version display for each valid slot;
- integrity validation before restoring a slot;
- confirmation and progress screens;
- protection against incomplete or corrupted firmware images;
- a dedicated configuration bank for each slot;
- the ability to select a configuration bank independently through `SetCfg`;
- automatic restoration of the selected firmware into internal Flash.

To open the multiboot selector:

1. power off the radio;
2. hold `MENU`;
3. power on the radio;
4. release the key when the multiboot screen appears.

Use `UP` and `DOWN` to select a firmware, `MENU` to restore it and `EXIT` to return without making changes.

> [!CAUTION]
> Never power off the radio while a firmware slot is being restored.

The firmware initially flashed through the normal bootloader is automatically preserved as **Main**. It can later be restored from the multiboot selector.

Each multiboot slot normally uses its own memory channels and settings bank, allowing different editions or configurations to coexist without overwriting one another.

# 🛠️ Multiconfig

Each firmware stored in the multiboot system can use its own independent configuration bank.

A configuration bank contains:

- memory channels and their names;
- VFO settings;
- scan lists;
- radio settings;
- edition-specific settings.

By default, each firmware slot is associated with the configuration bank bearing the same number. Switching to another multiboot slot therefore also restores the corresponding channels and settings.

The new `SetCfg` menu makes it possible to select a different configuration bank without changing the firmware edition currently running.

This allows, for example, the same firmware edition to be used with several completely different configurations, or multiple editions to share the same channels and settings when their capabilities are compatible.

> [!IMPORTANT]
> Some settings are only available in specific editions. When sharing a configuration bank between editions, unsupported settings are ignored and preserved whenever possible.

# 🗃️ Overlay applications

The 🧪 Labs edition introduces a new overlay-application platform.

Unlike regular firmware features, overlay applications are not permanently stored in the MCU's internal Flash. They are stored in the radio's external Flash memory and copied into a dedicated 4 KiB RAM area only when launched.

This makes it possible to add applications without permanently consuming the limited internal Flash space required by the main firmware.

Installed applications are available from the `Apps` selector. Each application is validated before execution, and incompatible or corrupted application files are rejected.

The first available overlay applications are:

- **Beam** — wireless channel transfer between compatible radios;
- **Broadcast FM** — FM broadcast receiver;
- **Fox Hunt** — signal-hunting receiver;
- **Beacon** — Morse beacon transmitter;
- **Breakout** — arcade game;
- **Tetris** — falling-block puzzle game;
- **Cube3D** — real-time rotating 3D cube;
- **Plasma** — full-screen demoscene effect.

> [!WARNING]
> Overlay applications are currently experimental and intended for the Labs edition.
>
> An application must be compatible with the overlay ABI and capabilities provided by the installed firmware. An application built for another firmware version or memory layout may be rejected.

# 📋 Changelog

## Added

- Added four official editions: **Fusion**, **FieldOps**, **Transfer** and **Labs**.
- Added the multiboot platform with one automatic Main backup and four user firmware slots.
- Added separate memory and settings banks for multiboot slots.
- Added the `SetCfg` menu to select a configuration bank independently of the running firmware slot.
- Added firmware edition, version and slot information to the multiboot and system-information screens.
- Added the external-Flash overlay-app platform to Labs.
- Added a versioned overlay-app ABI with capability discovery.
- Added the Apps selector for discovering and launching installed overlay apps.
- Added the Tetris overlay app.
- Added the Cube3D overlay app.
- Added the Plasma overlay app.
- Added overlay versions of Beam, Broadcast FM, Fox Hunt, Beacon and Breakout.
- Added K5Viewer support to the multiboot selector and overlay apps.
- Added complete memory and settings transfer through AirCopy.
- Added an optional `CARR` carrier-keying mode to Morse Beacon.
- Added a no-heap build option to reclaim unused RAM.

## Improved

- Improved AirCopy reliability with acknowledgement and automatic resend handling.
- Improved AirCopy progress and error reporting.
- Improved Beam channel transfers and channel-field handling.
- Improved Beam VFO restoration and deferred channel saving.
- Improved the multiboot interface, slot validation, restore progress and recovery behavior.
- Improved multiboot safety when encountering incomplete, corrupted or uncertain external-Flash state.
- Improved preservation of settings when switching between editions.
- Improved the Apps selector and overlay-app user interface.
- Improved memory usage shared by multiboot and overlay apps.
- Improved Broadcast FM display and Flash usage.
- Improved Fox Hunt, Breakout and Tetris Flash and RAM usage.
- Improved overlay-app backlight behavior using the configured `BLTime`.
- Improved overlay-app shortcuts and audio-service sharing.
- Improved K5Viewer and serial-session behavior.
- Improved the `F` status indicator.
- Improved compatibility of the build scripts with macOS Bash 3.2.

## Fixed

- Fixed a CHIRP upload stall when the final EEPROM write block was not aligned.
- Fixed oversized EEPROM read commands that could expose memory outside the expected buffer. Thanks [@BB-KING777](https://github.com/BB-KING777).
- Strengthened serial-command input validation to prevent unintended memory disclosure.
- Fixed AirCopy transfers being interrupted or silently corrupted by lost packets.
- Fixed Broadcast FM starting while a VFO was already receiving.
- Fixed Broadcast FM scans being interrupted by reception on the main radio channel.
- Fixed Beam failing to restore the previous VFO state in some situations.
- Fixed Beacon carrier keying remaining disabled after switching from `CARR` to `TONE` during an idle window.
- Fixed the backlight timer not being re-armed by key presses inside overlay apps.
- Fixed the backlight being forced off when a serial session was initialized.
- Fixed optional UART and USB build configurations.
- Fixed RescueOps settings not always being preserved across editions.
- Fixed side-key actions referring to features unavailable in the current edition.
- Fixed scan-list name timing being counted at the wrong scheduler rate.
- Fixed several multiboot state, configuration-bank and low-RAM edge cases.

## Changed

- Split the former single Fusion distribution into four purpose-oriented editions.
- Renamed the former Field preset to **FieldOps**.
- Decoupled Fox Hunt and Beacon so that each feature can be included independently.
- Moved experimental and memory-intensive features to the Labs overlay-app platform.
- Stabilized action identifiers across editions.
- Replaced firmware build-option reporting with CHIRP capability reporting.
- Removed the legacy AM Fix implementation and its related settings.
- Removed obsolete build options and unused reserved heap space.
- Renamed `compile-with-docker.sh` to `compile-firmware.sh`; the old command remains available as a compatibility wrapper.
- Added `compile-app.sh` for building overlay applications.

# 📚 Wiki documentation

To complement these release notes, remember that a GitHub [Wiki](https://github.com/armel/uv-k1-k5v3-firmware-custom/wiki) is available.

It brings together the main documentation in one place: getting started, programming with CHIRP, using UV Studio, radio operation, scanning, menu reference, button functions, advanced features, troubleshooting, and videos/tutorials.

The documentation will progressively be updated to cover the four editions, multiboot and the Labs overlay-app platform.

# 🪛 Dumping and restoring calibration data

[UV Studio](https://armel.github.io/uvstudio/) can dump and restore calibration data, which is strongly recommended.

Ideally, you should:

- create a calibration dump immediately after installing the F4HWN firmware;
- keep one backup for each radio you own;
- restore it before installing different firmware, for example when returning to the stock firmware.

## Dump

1. Open [UV Studio](https://armel.github.io/uvstudio/).
2. Power on your radio in normal mode.
3. Click **Dump Calibration Data**.
4. Select the radio's serial port when prompted.
5. Download and safely store the resulting `calibration.dat` file.

> [!NOTE]
> A good practice is to rename the calibration file using the serial number printed on the label under the battery. This prevents calibration files from being mixed up if you own multiple radios.

## Restore

1. Open [UV Studio](https://armel.github.io/uvstudio/).
2. Power on your radio in normal mode.
3. Select your `calibration.dat` file.
4. Click **Restore Calibration Data**.
5. Select the radio's serial port and wait until the operation is fully complete.

# 🖥️ About the Live Viewer feature

[UV Studio](https://armel.github.io/uvstudio/) includes the K5Viewer Live Viewer.

It can be used on a computer with a Chromium-based browser such as Chrome, Edge, Brave or Opera, as well as Firefox 151 or later.

Quick start:

1. Flash your Quansheng UV-K1 or UV-K5 V3 with one of the compatible F4HWN v6.0.0 editions.
2. Keep the radio connected to your computer using a compatible USB serial cable or its USB-C connection.
3. Open [UV Studio Live Viewer](https://armel.github.io/uvstudio/#live).
4. Click **Connect** and select the radio's serial port.

That's it. Nothing to install. Nothing to configure. Just plug and view 🤭

# 💾 CHIRP support

A dedicated v6.0.0 CHIRP driver supporting the UV-K1 and UV-K5 V3 is provided as an attachment to these release notes.

It supports the four editions and allows reading and writing memory channels, settings and basic parameters directly from CHIRP.

The driver also uses firmware capability information to expose only the settings supported by the currently installed edition.

This driver is provided for convenience and early testing. It may still evolve as feedback comes in, so feel free to open an issue or report any anomaly you notice.

# 📦 Release files

This release provides four firmware binaries:

- `f4hwn.fusion.bin`
- `f4hwn.fieldops.bin`
- `f4hwn.transfer.bin`
- `f4hwn.labs.bin`

The release also includes:

- the dedicated v6.0.0 CHIRP driver;
- the overlay-app files intended for Labs;

For most users, install `f4hwn.fusion.bin`.

# ⚙️ Build summary

### Flash (limit: 120832 B / 118.00 KiB)

| Preset   | Used (B) | Used (KiB) | Free (B) | Free (KiB) | Usage |
|----------|---------:|-----------:|---------:|-----------:|------:|
| Fusion   | 106892   | 104.39     | 13940    | 13.61      | 88.46% |
| Transfer | 111284   | 108.68     | 9548     | 9.32       | 92.10% |
| FieldOps | 113020   | 110.37     | 7812     | 7.63       | 93.53% |
| Labs     | 111908   | 109.29     | 8924     | 8.71       | 92.61% |

### RAM (limit: 16384 B / 16.00 KiB)

| Preset   | Used (B) | Used (KiB) | Free (B) | Free (KiB) | Usage |
|----------|---------:|-----------:|---------:|-----------:|------:|
| Fusion   | 11968    | 11.69      | 4416     | 4.31       | 73.05% |
| Transfer | 12128    | 11.84      | 4256     | 4.16       | 74.02% |
| FieldOps | 12192    | 11.91      | 4192     | 4.09       | 74.41% |
| Labs     | 12224    | 11.94      | 4160     | 4.06       | 74.61% |

Enjoy,

Armel, F4HWN
GitHub에서 보기 ↗
v5.9.0 F4HWN v5.9.02026. 8. 14.
릴리스 노트
> 🌐 **Translate**  
> Automatic translation is available via Google Translate: [Open translated version](https://translate.google.com/translate?sl=auto&u=https://github.com/armel/uv-k1-k5v3-firmware-custom/releases/tag/v5.9.0).

# 🔥About this firmware

This firmware is a fork of the [F4HWN custom firmware](https://github.com/armel/uv-k5-firmware-custom). It extends the work originally done for the UV-K5 V1 (DP32G030 MCU) and adapts it to the newer UV-K1 and UV-K5 V3, which are based on the PY32F071 MCU. It is the result of joint work by [@muzkr](https://github.com/muzkr) and [@armel](https://github.com/armel). Many thanks to [@mrkusypl](https://github.com/mrkusypl) for his huge contributions!

This release, called 🔥**Fusion edition**, merges into a single firmware all the different editions I previously released for the UV-K5 V1.

> [!WARNING]
> THIS FIRMWARE HAS NO REAL BRAIN. PLEASE USE YOUR OWN. Use this firmware at your own risk (entirely). There is absolutely no guarantee that it will work in any way shape or form on your radio(s), it may even brick your radio(s), in which case, you'd need to buy another radio.

Anyway, have fun.

<a name="getting-started"></a>
# ⚙️ Getting Started

If you are already running **🔥Fusion Edition v5.x**, there is nothing special to do: just [Flash](https://armel.github.io/uvstudio/?firmwareURL=https://github.com/armel/uv-k1-k5v3-firmware-custom/raw/main/archive/f4hwn.fusion.v5.9.0.bin#flash) with 🔥**Fusion Edition v5.9.0** as usual and start using the radio. Make sure to also install the dedicated v5.9.0 CHIRP driver **provided as an attachment** to these release notes.

However, if you are coming from a **factory firmware** or from **any version earlier than 🔥Fusion Edition v5.x**, I recommend following the steps below:

1. *(Optional)* From CHIRP, export your memory channels to CSV (using the v4.3 driver).

2. [Flash](https://armel.github.io/uvstudio/?firmwareURL=https://github.com/armel/uv-k1-k5v3-firmware-custom/raw/main/archive/f4hwn.fusion.v5.9.0.bin#flash) your UV-K1 or UV-K5 V3 with 🔥**Fusion Edition v5.9.0**.

3. Enter the hidden menus by holding PTT + SIDE BUTTON 1️⃣ while powering on the radio, then release all keys and perform a **RESET ALL**, menu 77/77.

> [!WARNING]
> Due to the **complete change in memory mapping**, you will lose all your memory channels and all your settings.

4. *(Optional)* Using CHIRP with the dedicated v5.9.0 driver **provided as an attachment** to these release notes, you can reload your CSV file and **copy / paste** your old channels.

> [!WARNING]
> Do not try to import your CSV file, do a **copy / paste** instead!

The radio will restart with the new firmware.

Remember to set the navigation direction according to whether you are using a UV-K1 or a UV-K5 V3, using the hidden menu 76/77 SetNav.

# 📚 Wiki documentation

To complement these release notes, remember that a GitHub [Wiki](https://github.com/armel/uv-k1-k5v3-firmware-custom/wiki) is available.

It brings together the main documentation in one place: getting started, programming with CHIRP, using UV Studio, radio operation, scanning, menu reference, button functions, advanced features, troubleshooting, and videos/tutorials.

If you are discovering 🔥 **Fusion Edition**, or if you need to quickly find details about a specific feature, the [Wiki](https://github.com/armel/uv-k1-k5v3-firmware-custom/wiki) remains the best place to start.

# 📺 Presentation video

I’m currently out in the countryside, pretty much in the middle of nowhere, so I don’t really have the time, or more importantly the equipment, to shoot and edit a video 😄

But I’m pretty sure you’ll quickly discover the improvements brought by this new release for yourselves.

For the impatient ones, you can also check this GitHub [discussion](https://github.com/armel/uv-k1-k5v3-firmware-custom/discussions/502), where I explain the main changes.

# 📋 Changelog

## Added

- Added a categorized menu browser with dedicated `Channels`, `Scan`, `Keys`, `Power`, `Display`, `Timers`, `Audio`, `Radio`, `DTMF`, and `Service` categories.
- Added an `All` category as a fallback to the original flat menu, preserving the existing menu order and numbering.
- Added a side-key action picker: press `F`, then hold either side key to choose and immediately run an available action.
- Added two extra Fox Hunt front-end attenuation levels, `BYP` and `BYP+`, for locating very strong nearby transmitters.
- Added a keypad lock shared by Fox Hunt and Beacon modes, toggled by holding `F` for approximately 0.5 seconds ([discussion #498](https://github.com/armel/uv-k1-k5v3-firmware-custom/discussions/498)).

## Improved

- Improved menu navigation by remembering the last selected item in each category.
- Improved the category screen with two-digit category and item counters.
- Improved the side-key action picker with reverse navigation, confirmation, cancellation, timeout handling, and automatic exit when reception starts.
- Improved memory-scan feedback by pausing scan resumption while the active scan-list name is displayed.
- Improved Fox Hunt attenuation controls: `UP` and `DOWN` now adjust attenuation directly and remain available while the keypad is locked.
- Improved Fox Hunt signal stability after attenuation changes by allowing the RSSI detector to settle before resetting peak, minimum, trend, and history data.
- Improved keypad-lock safety by making the lock available during both Beacon idle periods and active transmissions.

## Fixed

- Fixed Fox Hunt unexpectedly returning to the main VFO when the `SetOff` timer expired. Fox Hunt and Beacon now remain active until explicitly exited.
- Fixed Broadcast FM scans being interrupted by an incoming signal detected on the main radio channel. Normal Broadcast FM listening continues to yield to channel reception as before (Thanks @EthanYan6)
- Fixed scan progress jumping forward after the scan-list name overlay disappeared during memory scans.

## Maintenance

- Added the `ENABLE_FEAT_F4HWN_MENU_CAT` feature flag and enabled it for Fusion.
- Added the `ENABLE_FEAT_F4HWN_ACTION_PICKER` feature flag and enabled it for Fusion.
- Refactored side-key action validation and execution so assigned and dynamically selected actions share the same safety checks.
- Fixed `compile-with-docker.sh` argument forwarding so additional CMake options are passed safely.
- Fixed an unused-variable warning when the fast memory scanner is disabled.
- Updated the rolling Fusion development firmware throughout development.

# 🪛 Dumping and restoring calibration data

[UV Studio](https://armel.github.io/uvstudio/) can dump and restore calibration data, which is **strongly recommended**.  
Ideally, you should:

- create a calibration dump immediately after installing the F4HWN firmware, and
- restore it before installing different firmware, for example when returning to the stock firmware.

## Dump

- Open [UV Studio](https://armel.github.io/uvstudio/#dump-calib).
- Power on your radio in **normal mode**.
- Click **Dump Calibration Data**.
- Select the radio's serial port when prompted.

When the process is complete, click **Download calibration.dat** to save the file on your computer.

> [!NOTE]
> A good practice is to rename the calibration file using the serial number of your radio, which is printed on the label on the back of the device, under the battery. This prevents calibration files from being mixed up if you own multiple radios.

## Restore

- Open [UV Studio](https://armel.github.io/uvstudio/#restore-calib).
- Power on your radio in **normal mode**.
- Select your `calibration.dat` file.
- Click **Restore Calibration Data**.
- Select the radio's serial port when prompted and wait until it is fully complete.

# 🖥️ About the Live Viewer feature

[UV Studio](https://armel.github.io/uvstudio/) includes the Live Viewer feature. It can be used on a computer with a Chromium-based browser such as Chrome, Edge, Brave, or Opera, as well as Firefox 151 or later.

Here is a quick tutorial for dummies:

1. Flash your Quansheng UV-K1 or UV-K5 V3 with the F4HWN 🔥 Fusion edition.
2. Keep the radio connected to your computer using a compatible USB serial cable or its USB-C connection.
3. Open the [UV Studio Live Viewer](https://armel.github.io/uvstudio/#live).
4. Click **Connect** and select the radio's serial port.

That's it. Nothing to install. Nothing to configure. Just plug and view 🤭

# 💾 CHIRP Support

A dedicated v5.9.0 CHIRP driver supporting the UV-K1 and UV-K5 V3 is **provided as an attachment** to these release notes. It allows reading and writing the radio's memory channels, settings and basic parameters directly from CHIRP, just like with the UV-K5 V1.

This driver is provided for convenience and early testing. It may still evolve as feedback comes in, so feel free to open an issue or report any anomaly you notice.

# ⚙️ Build summary

```text
Memory region         Used Size  Region Size  %age Used
             RAM:       12864 B        16 KB     78.52%
           FLASH:      111584 B       118 KB     92.35%
✅ Done: Fusion
```

Enjoy,
GitHub에서 보기 ↗
v5.8.0 F4HWN v5.8.02026. 8. 5.
릴리스 노트
> 🌐 **Translate**  
> Automatic translation is available via Google Translate: [Open translated version](https://translate.google.com/translate?sl=auto&u=https://github.com/armel/uv-k1-k5v3-firmware-custom/releases/tag/v5.8.0).

# 🔥About this firmware

This firmware is a fork of the [F4HWN custom firmware](https://github.com/armel/uv-k5-firmware-custom). It extends the work originally done for the UV-K5 V1 (DP32G030 MCU) and adapts it to the newer UV-K1 and UV-K5 V3, which are based on the PY32F071 MCU. It is the result of joint work by [@muzkr](https://github.com/muzkr) and [@armel](https://github.com/armel). Many thanks to [@mrkusypl](https://github.com/mrkusypl) for his huge contributions!

This release, called 🔥**Fusion edition**, merges into a single firmware all the different editions I previously released for the UV-K5 V1. 

> [!WARNING]
> THIS FIRMWARE HAS NO REAL BRAIN. PLEASE USE YOUR OWN. Use this firmware at your own risk (entirely). There is absolutely no guarantee that it will work in any way shape or form on your radio(s), it may even brick your radio(s), in which case, you'd need to buy another radio.
Anyway, have fun.

<a name="getting-started"></a>
# ⚙️ Getting Started

If you are already running **🔥Fusion Edition v5.x**, there is nothing special to do: just [Flash](https://armel.github.io/uvstudio/?firmwareURL=https://github.com/armel/uv-k1-k5v3-firmware-custom/raw/main/archive/f4hwn.fusion.v5.8.0.bin#flash) with 🔥**Fusion Edition v5.8.0** as usual and start using the radio. Just make sure to also update the [f4hwn.fusion.chirp.v5.8.0.py](https://github.com/user-attachments/files/30710663/f4hwn.fusion.chirp.v5.8.0.py) driver.

However, if you are coming from a **factory firmware** or from **any version earlier than 🔥Fusion Edition v5.x**, I recommend following the steps below:

1. *(Optional)* From CHIRP, export your memory channels to CSV (using the v4.3 driver).

2. [Flash](https://armel.github.io/uvstudio/?firmwareURL=https://github.com/armel/uv-k1-k5v3-firmware-custom/raw/main/archive/f4hwn.fusion.v5.8.0.bin#flash) your UV-K1 or UV-K5 V3 with 🔥**Fusion Edition v5.8.0**.

3. Enter the hidden menus by holding PTT + SIDE BUTTON 1️⃣ while powering on the radio, then release all keys and perform a **RESET ALL**, menu 76/76. 

> [!WARNING]
> Due to the **complete change in memory mapping**, you will lose all your memory channels and all your settings.

4. *(Optional)* Using CHIRP with the [f4hwn.fusion.chirp.v5.8.0.py](https://github.com/user-attachments/files/30710663/f4hwn.fusion.chirp.v5.8.0.py) driver, you can reload your CSV file and **copy / paste** your old channels.

> [!WARNING]
> Do not try to import your CSV file, do a **copy / paste** instead !

The radio will restart with the new firmware.

Remember to set the navigation direction according to whether you are using a UV-K1 or a UV-K5 V3, using the hidden menu 75/76 SetNav.

# 📚 Wiki documentation

To complement these release notes, remember that a GitHub [Wiki](https://github.com/armel/uv-k1-k5v3-firmware-custom/wiki
) is available.

It brings together the main documentation in one place: getting started, programming with CHIRP, using UVStudio, radio operation, scanning, menu reference, button functions, advanced features, troubleshooting, and videos/tutorials.

If you are discovering 🔥 **Fusion Edition**, or if you need to quickly find details about a specific feature, the [Wiki](https://github.com/armel/uv-k1-k5v3-firmware-custom/wiki
) remains the best place to start.

# 📺 Presentation video

I also made a presentation video for this release, available on my YouTube channel:

https://www.youtube.com/watch?v=xtzw2TNv0ZI

# 📋 Changelog

## Added

- Added Fox Hunt mode as an assignable side-key action.
- Added a dedicated Fox Hunt signal-strength display with calibrated dBm, S-meter, peak, minimum, and signal-trend indicators.
- Added selectable Fox Hunt attenuation levels for locating strong nearby transmitters.
- Added silent, Geiger-style beep, and received-audio modes to Fox Hunt.
- Added a full-width signal-history graph to Fox Hunt.
- Added persistent storage for:
  - Fox Hunt attenuation,
  - display mode,
  - audio mode,
  - Beacon idle interval,
  - Beacon TX window,
  - selected fox identifier.
- Added an ARDF-oriented Beacon mode with:
  - `MOE`, `MOI`, `MOS`, `MOH`, and `MO5` fox identifiers,
  - `MO` finish/home identifier,
  - optional callsign identification using boot message 1,
  - automatic fallback to `MOE` when no callsign is configured.
- Added an adjustable Beacon TX window from 5 to 60 seconds.
- Added an adjustable Beacon idle interval from 5 to 240 seconds.
- Added repeated CW identification throughout the configured TX window.
- Added live TX and idle countdowns to the Beacon screen.
- Added progressive display of the transmitted CW message.
- Added a dedicated on-air icon during Beacon transmission.
- Added reverse cycling with `F + 1`, `F + 2`, or `F + 3` for Fox Hunt and Beacon settings.

## Improved

- Improved scan feedback by temporarily displaying the active scan-list name when starting or switching lists (discussion #462).
- Improved power-on backlight animation with smoothstep easing.
- Improved fast-scan UI by preventing overlap between the RSSI sparkline and RX chevron.
- Improved RF Log behavior so logging and UV Studio streaming are enabled only when the `RF LOG` action is assigned to a key.
- Improved Beacon safety by enforcing function lock, TX lock, battery voltage, and modulation restrictions before every transmission (issue #478).
- Improved Beacon operation for ARDF use:
  - changed the Morse speed to approximately 12 WPM,
  - repeated the selected identifier for the complete TX window,
  - added support for classic five-fox timing with an idle interval of up to four minutes.
- Improved Beacon controls with a consistent layout:
  - `1` adjusts the TX window,
  - `2` adjusts the idle interval,
  - `3` selects the fox identifier,
  - `F` reverses the next setting change.
- Improved Beacon responsiveness by allowing the TX window, idle interval, and fox identifier to be adjusted during both transmission and idle phases.
- Improved Beacon interaction:
  - `MENU` interrupts the current transmission and starts a new idle interval,
  - either side key switches between Fox Hunt and Beacon modes,
  - `EXIT` leaves Fox Hunt completely.
- Improved Beacon display updates by refreshing K5Viewer only during muted CW gaps.
- Improved Fox Hunt body-scan feedback with a resettable minimum-signal hold.
- Improved battery monitoring while Fox Hunt or Beacon is active.
- Improved persistence so changed Fox Hunt and Beacon settings are saved within approximately 500 ms.
- Improved flash endurance by avoiding unnecessary external-flash sector erases.
- Improved channel-attribute writes by updating only the required data instead of rewriting the entire buffer.
- Improved RAM usage by moving read-only lookup tables to Flash.
- Improved Fox Hunt code size by:
  - sharing common display and interpolation helpers,
  - reducing temporary and persistent buffer sizes,
  - calculating PGA attenuation directly instead of using a lookup table,
  - removing per-column modulo operations from the signal-history renderer,
  - avoiding unnecessary Beacon message construction.
- Reduced Fox Hunt Flash usage by a further 52 bytes through targeted refactoring and hot-path optimization.
- Reworked the README around the Fusion feature set and replaced UVTools2 references with UV Studio.

## Fixed

- Fixed the false Remove Offset indicator displayed after disabling reverse mode (issue #469).
- Fixed RX mode restoration after leaving Close Call (issue #478).
- Fixed RX mode restoration when switching from an active channel or frequency scan to Broadcast FM, Close Call, or CTCSS/DCS scanning (issue #480).
- Fixed restart handling in modal applications, including Air Copy, Breakout, Frequency Scanner, Spectrum Analyzer, UART, and Fox Hunt.
- Fixed restart commands being lost during an active Beacon TX window by servicing maintenance commands between CW characters.
- Fixed Beacon transmissions bypassing normal TX safety restrictions.
- Fixed progressive Beacon text positioning for callsign and fox identifiers.
- Fixed K5Viewer keepalive handling during long Beacon TX windows.
- Fixed Fox Hunt settings being lost when the radio powers off without leaving the application normally.

## Maintenance

- Added the `ENABLE_FEAT_F4HWN_FOXHUNT` feature flag and enabled it for Fusion.
- Extended the persisted Fox Hunt configuration from five to seven bytes to include the selected fox identifier and TX window.
- Extended the VFO compatibility mapping so AirCopy includes all persisted Fox Hunt and Beacon settings.
- Refactored duplicated Fox Hunt and Beacon display helpers.
- Refactored channel-settings updates to remove redundant write parameters.
- Reduced Fox Hunt buffers to their actual maximum required sizes.
- Removed dead and unreachable code.
- Updated the README with detailed Fusion, Fox Hunt, Beacon, RF Log, K5Viewer, and UV Studio documentation.
- Updated the Wiki.
- Updated the donors list.

# 🪛 Dumping and restoring calibration data

[UV Studio](https://armel.github.io/uvstudio/) can dump and restore calibration data, which is **strongly recommended**.  
Ideally, you should:

- create a calibration dump immediately after installing the F4HWN firmware, and
- restore it before installing different firmware, for example when returning to the stock firmware.

## Dump

- Open [UV Studio](https://armel.github.io/uvstudio/#dump-calib).
- Power on your radio in **normal mode**.
- Click **Dump Calibration Data**.
- Select the radio’s serial port when prompted.

When the process is complete, click **Download calibration.dat** to save the file on your computer.

> [!NOTE]
> A good practice is to rename the calibration file using the serial number of your radio, which is printed on the label on the back of the device, under the battery. This prevents calibration files from being mixed up if you own multiple radios.

## Restore

- Open [UV Studio](https://armel.github.io/uvstudio/#restore-calib).
- Power on your radio in **normal mode**.
- Select your `calibration.dat` file.
- Click **Restore Calibration Data**.
- Select the radio’s serial port when prompted and wait until the process is fully complete.

# 🖥️ About the Live Viewer feature

[UV Studio](https://armel.github.io/uvstudio/) includes the Live Viewer feature. It can be used on a computer with a Chromium-based browser such as Chrome, Edge, Brave, or Opera, as well as Firefox 151 or later.

Here is a quick tutorial for dummies:

1. Flash your Quansheng UV-K1 or UV-K5 V3 with the F4HWN 🔥 Fusion edition.
2. Keep the radio connected to your computer using a compatible USB serial cable or its USB-C connection.
3. Open the [UV Studio Live Viewer](https://armel.github.io/uvstudio/#live).
4. Click **Connect** and select the radio’s serial port.

That’s it. Nothing to install. Nothing to configure. Just plug and view 🤭

# 💾 CHIRP Support

A CHIRP [f4hwn.fusion.chirp.v5.8.0.py](https://github.com/user-attachments/files/30710663/f4hwn.fusion.chirp.v5.8.0.py) driver supporting the UV-K1 and UV-K5 V3 is also included in this release. It allows reading and writing the radio’s memory channels, settings and basic parameters directly from CHIRP, just like with the UV-K5 V1.

This driver is provided for convenience and early testing. It may still evolve as feedback comes in, so feel free to open an issue or report any anomaly you notice.

# ⚙️ Build summary

```
Memory region         Used Size  Region Size  %age Used
             RAM:       12768 B        16 KB     77.93%
           FLASH:      109276 B       118 KB     90.44%
✅ Done: Fusion
```

Enjoy,
GitHub에서 보기 ↗
이전 릴리스 10개 더 보기 ↗

올리기 전에커스텀 펌웨어는 개인이 만든 것이고 RadioCloud가 내용을 검증하지 않아요. 올리기 전에 UV-K5 도구로 캘리브레이션이 포함된 원본 EEPROM을 백업해 두세요. 허가받은 범위 밖 송신은 전파법 위반입니다.

README

Stats

Alt

F4HWN firmware port for the UV-K1 and UV-K5 V3 using the PY32F071 MCU

This repository is a fork of the F4HWN custom firmware, who was a fork of Egzumer custom firmware. It extends the work done for the UV-K5 V1, based on the DP32G030 MCU, and adapts it to the newer UV-K1 and UV-K5 V3 built around the PY32F071 MCU. It is the result of the joint work of @muzkr and @armel.

A big thanks to DualTachyon, who paved the way by releasing the very first open-source firmware for the UV-K5 V1. None of this would have been possible without that initial work !

A note for developers who intend to fork this project

This firmware is distributed under the Apache 2.0 License, carrying forward the original copyright of DualTachyon, whose work laid the foundation for the UV-K5 open-source ecosystem. If you create a fork or a derived version, we strongly encourage you to keep your work open source.

Keeping your fork open:

  • aligns with the intent and spirit of the Apache 2.0 License
  • supports the amateur-radio and embedded-development community
  • avoids unnecessary fragmentation
  • allows others to study, audit and improve the firmware

It is also very much in line with the ham spirit: sharing knowledge, experimenting together and helping each other, rather than closing things off or claiming them as your own.

Maintaining an open-source fork is the best way to help build a healthy and sustainable ecosystem for everyone.

[!WARNING] EN - THIS FIRMWARE HAS NO REAL BRAIN. PLEASE USE YOUR OWN. Use this firmware at your own risk (entirely). There is absolutely no guarantee that it will work in any way shape or form on your radio(s), it may even brick your radio(s), in which case, you'd need to buy another radio. Anyway, have fun.

FR - CE FIRMWARE N'A PAS DE VÉRITABLE CERVEAU. VEUILLEZ UTILISER LE VÔTRE. Utilisez ce firmware à vos risques et périls. Il n'y a absolument aucune garantie qu'il fonctionnera d'une manière ou d'une autre sur votre (vos) radio(s), il peut même bousiller votre (vos) radio(s), dans ce cas, vous devrez acheter une autre radio. Quoi qu'il en soit, amusez-vous bien.

[!NOTE] EN - About CHIRP, as with many other firmwares, you need to use a dedicated driver. The matching CHIRP driver is now bundled with each release of this repository, so you can download the firmware and its driver together from the Releases page.

FR - A propos de CHIRP, comme pour beaucoup d'autres firmwares, vous devez utiliser un pilote dédié. Le driver CHIRP correspondant est désormais fourni avec chaque release de ce dépôt, ce qui permet de récupérer ensemble le firmware et son pilote depuis la page des Releases.

[!CAUTION] EN - I recommend backing up your calibration data with UV Studio immediately after flashing this firmware. It is a good habit to adopt.

FR - Je recommande de sauvegarder vos données de calibration avec UV Studio juste après avoir flashé ce firmware. C'est un bon réflexe à adopter.

Donations

Special thanks to Jean-Cyrille F6IWW (3 times), Fabrice 14RC123, David F4BPP (3 times), Olivier 14RC206, Frédéric F4ESO, Stéphane F5LGW (2 times), Jorge Ornelas (4 times), Laurent F4AXK, Christophe Morel, Clayton W0LED, Pierre Antoine F6FWB, Jean-Claude 14FRS3306, Thierry F4GVO, Eric F1NOU, PricelessToolkit, Ady M6NYJ, Tom McGovern (4 times), Joseph Roth, Pierre-Yves Colin, Frank DJ7FG, Marcel Testaz, Brian Frobisher, Yannick F4JFO, Paolo Bussola, Dirk DL8DF, Levente Szőke (2 times), Bernard-Michel Herrera, Jérôme Saintespes, Paul Davies, RS (3 times), Johan F4WAT, Robert Wörle, Rafael Sundorf, Paul Harker, Peter Fintl, Pascal F4ICR (2 times), Mike DL2MF (3 times), Eric KI1C / F4WFS (3 times), Phil G0ELM, Jérôme Lambert, Eliot Vedel, Alfonso EA7KDF, Jean-François F1EVM, Robert DC1RDB (2 times), Ian KE2CHJ, Daryl VK3AWA, Roberto Brunelli, Robert Boardman, Stephen Oliver, Nicolas F4INE, William Bruno, Daniel OK2VLK, Tayler Chew, Peter DL7RFP, Philippe Kopp, Rune LA6YMA, Jeremy Luna, Steef Wagenaar (2 times), Zhuo BG7SGA, Jamie M0JLB, Antoine LIBERT, Vince K0DKR, Julia DF7JA, Ken 2E0UMK, Victor TI2SYS, Tobi DG9LAY, Deaglan K4DFQ, Catherine PALMER, Brian WA6JFK, Stéphane Hintzy, Roger F1HCN, Marcin Kusaj, Flavio Cottarelli, Bob N1MLZ, Carlos EA1IJ, Brian M7YLF, Giuseppe IT9LLH, 邓 月, Jon M1JRH, Antonios Chouchoumis, Cédric Thomas, Justin White, Gordon Campbell and Per Georg Fostad for their donations. That’s so kind of them. Thanks so much 🙏🏻

Table of Contents

Main features and improvements from F4HWN

Fusion edition

Fusion is the generic reference edition for the UV-K1 and UV-K5 V3. It is intended for everyday use and is the base inherited by the specialized editions. It includes:

  • Fagci's spectrum analyzer,
  • broadcast FM radio and VOX,
  • UV Studio with integrated K5Viewer screen mirroring, screenshots and remote keyboard control,
  • advanced RX audio profiles and Audio Scope,
  • automatic RX/TX activity logging with RF Log,
  • Full Watch across VFO A, VFO B and up to two priority channels,
  • Multiboot with one protected Main backup and four user firmware slots,
  • independent Multiconfig banks, switchable at runtime through SetCfg.

Specialized presets extend Fusion for specific uses:

  • Transfer adds AirCopy and BEAM wireless channel transfer.
  • FieldOps adds first-responder controls, Fox Hunt and Morse Beacon support.
  • Labs is the experimental edition. It carries the broad feature selection of the other releases and adds the overlay-apps platform (apps loaded from external Flash and run in a 4 KiB RAM overlay) — the newest, least-settled work. Expect rough edges. It is not a strict superset of every other edition: features may be exchanged between releases to preserve stability and memory headroom.
  • Custom remains a manually configured build based directly on the hidden technical default.

Multiboot and Multiconfig

Multiboot uses the radio's external Flash to keep one automatically maintained Main firmware backup and four additional firmware slots. Each image is validated before it is restored to internal Flash, and the selector displays the edition and version stored in every valid slot.

To open the Multiboot selector, power off the radio, hold MENU, power it on, then release the key when the selector appears. Use UP and DOWN to choose a slot, MENU to restore it and EXIT to leave without making changes.

[!CAUTION] Never power off the radio while a firmware slot is being restored.

Multiconfig provides one independent configuration bank for Main and for each of the four user slots. A bank contains the memory channels and names, VFO settings, scan lists, radio settings and edition-specific settings. By default, each firmware slot uses the bank with the same number.

The SetCfg menu can select and apply another bank immediately, without restarting the radio or changing firmware. The status bar shows the active bank as CFG M or CFG 1 to CFG 4, so several operating configurations can be used with the same firmware and compatible configurations can be shared across editions.

Full Watch

Full Watch extends the normal dual-watch cycle to monitor:

  • VFO A,
  • VFO B,
  • priority channel 1,
  • priority channel 2.

The priority channels come from the existing scan-list priority settings. Duplicates, invalid entries and channels already loaded in VFO A or B are ignored automatically.

The RxMode menu provides two Full Watch modes:

  • FULL RX / RESPOND replies on the channel that opened the squelch,
  • MAIN TX / FULL RX always transmits on the selected main VFO.

Animated chevrons show the background watch cycle while the normal VFO display remains available for navigation and operation.

Overlay applications and APRS

Labs can store up to 48 applications from the current collection of 30 in external Flash. Each app is loaded into a dedicated 4 KiB RAM overlay only while it is running, while larger read-only assets such as text, fonts, bitmaps and lookup tables remain in external Flash.

The current app collection includes:

  • radio tools: Broadcast FM, Fox Hunt, Beacon, Beam, Signal Finder, Spectrum3D and ToneCall,
  • digital and signal apps: ACARS RX, ATIS RX, APRS RX, APRS TX, APRS Edit, APRS DIGI, CW Decode, CW Keyer, SSTV, POCSAG RX, Sonde M20 and EPIRB 406,
  • diagnostics: System Info and Flash Map,
  • games and demos: Breakout, Cube3D, Minesweeper, Plasma, Rapid Roll, Snake, Sokoban, Space Impact and Tetris.

APRS RX receives AX.25 UI frames using Bell 202 AFSK at 1200 baud, displays common position formats and Mic-E data, and keeps a five-frame history. APRS TX uses an editable callsign (with boot-message fallback) and transmits a position beacon; its companion APRS Edit app edits the callsign, SSID, digipeater path, position, symbol and 89-character comment. APRS DIGI is a deliberately limited WIDE1-1 fill-in digipeater with path-independent duplicate suppression and channel-busy protection.

ACARS RX receives the 2400 bit/s AM-MSK aircraft data link, checks odd parity and CRC, and keeps a three-message history with aircraft address, flight ID, label and printable message text.

[!IMPORTANT] Overlay apps, including APRS RX, APRS TX and APRS DIGI, are experimental and intended for Labs. Use the app files supplied with the same firmware release so their ABI and required capabilities match the installed firmware.

[!CAUTION] Transmitting apps must only be used on frequencies, power levels and modes permitted by your licence and local regulations.

Radio and signal handling

  • Reworked output-power levels:
    • Low 1: below approximately 20 mW,
    • Low 2: approximately 125 mW,
    • Low 3: approximately 250 mW,
    • Low 4: approximately 500 mW,
    • Low 5: approximately 1 W,
    • Mid: approximately 2 W,
    • High: approximately 5 W,
    • User: configurable through SetPwr.
  • S-meter calibrated according to the IARU Region 1 recommendation for VHF/UHF:
    • fixed S0 to S9+ values replace the former EEPROM S-meter thresholds,
    • Classic and Tiny display styles are available.
  • Configurable 12.5 kHz or 6.25 kHz narrow-FM bandwidth.
  • Per-channel TX lock.
  • Adjustable RX audio volume.
  • Advanced RX audio profiles for FM and AM reception.
  • Regional frequency-lock profiles for amateur bands, PMR446, FRS, GMRS and MURS.
  • Support for 1600, 2200 and 3500 mAh battery profiles.

Spectrum analyzer

  • Channel names displayed in the spectrum view.
  • Persistent spectrum settings.
  • Faster and smoother spectrum rendering.
  • Improved behavior when freezing the spectrum or disconnecting USB-C.
  • Spectrum analyzer state can be restored automatically at startup.

Scanning

  • Support for up to 24 named scan lists + 1 mixed list.
  • Each memory channel can be assigned to:
    • OFF,
    • one scan list from 01 to 24,
    • ALL.
  • The ALL list scans every channel except those assigned to OFF.
  • The MIX list combines any selected subset of the 24 named lists into one scan set.
  • Automatic selection of the next valid list when the requested list is empty.
  • Direct scan-list selection while scanning:
    • 00 selects ALL,
    • 01 to 24 select the corresponding list,
    • 25 selects MIX.
  • Long press on MENU while scanning to exclude the current memory channel.
  • Up to 64 frequency exclusions.
  • Very fast scanning mode, reaching approximately 150 frequencies per second.
  • Scan progress, RSSI and detected CTCSS/DCS information.
  • Configurable scan resume behavior.
  • Scan state can be restored automatically at startup.

User interface

  • Improved VFO screen with:
    • Classic and Tiny S-meter styles,
    • Classic and Tiny frequency-information layouts,
    • MAIN ONLY, DUAL, FULL and CROSS display modes,
    • RX activity indication on the active VFO,
    • optional RX LED blinking,
    • squelch, monitor, step and CTCSS/DCS information,
    • last-RX indication,
    • RX and TX timers.
  • Improved status bar with updated fonts and icons.
  • Menu index remains visible while editing an entry.
  • Improved frequency and memory-channel input.
  • Improved audio-level display.
  • AirCopy progress percentage and gauge.
  • Smooth backlight fading.
  • Manual backlight controls for quickly switching between minimum and maximum brightness.
  • Configurable contrast and inverted-display mode.
  • Configurable navigation layout for the different radio models.
  • Improved power-on message and optional startup logo.
  • System-information pages for:
    • firmware version and build information,
    • battery information,
    • Flash and SRAM usage,
    • project and documentation QR codes.

Audio and transmission controls

  • Classic and OnePush PTT modes.
  • Configurable timeout-timer alerts:
    • disabled,
    • sound,
    • visual,
    • sound and visual.
  • Configurable end-of-transmission alerts using the same modes.
  • Audio Scope during RX and TX.
  • Improved Audio Scope behavior with OnePush PTT, DTMF and the 1750 Hz tone.
  • Configurable automatic deep-sleep timeout.
  • Quick actions for:
    • RX mode,
    • main-VFO-only display,
    • PTT,
    • wide/narrow bandwidth,
    • 1750 Hz tone,
    • mute,
    • RX audio profile,
    • maximum power,
    • offset removal.

Fox Hunt and Beacon

  • Dedicated Fox Hunt receiver with:
    • calibrated S-meter display,
    • scrolling signal-history graph,
    • peak, minimum and trend indicators,
    • selectable RF attenuation,
    • silent, Geiger-style and received-audio modes,
    • long-press F keypad lock (attenuation stays adjustable with the arrow keys).
  • Independent Morse Beacon transmitter with:
    • MOE, MOI, MOS, MOH, MO5 and MO identifiers,
    • optional callsign identification,
    • configurable TX and idle periods,
    • live TX and idle countdowns,
    • persisted Beacon settings,
    • interactive control during transmission,
    • shared long-press F keypad lock,
    • TX-lock, modulation and battery-safety checks.
  • Fox Hunt and Beacon screens are mirrored to UV Studio's integrated K5Viewer.

RF Log

  • Automatic logging of RX and TX activity when RF Log is enabled.
  • Logs stored in the radio's external Flash memory.
  • Recorded information includes:
    • RX or TX direction,
    • frequency and channel,
    • channel name,
    • activity duration,
    • S-meter level,
    • battery voltage.
  • On-radio history with RX/TX filtering and detailed views.
  • Live RF Log dashboard and history access through UV Studio.

Connectivity and data transfer

  • Live screen streaming to UV Studio over a USB serial connection.
  • Screenshot capture and download.
  • Remote keyboard control through the integrated K5Viewer.
  • Automatic reconnection after a USB disconnect.
  • RF Log monitoring, analytics and CSV export.
  • Firmware flashing, calibration backup and restore, and boot-logo management from the same interface.
  • BEAM transfer of complete channel settings between compatible radios.

AirCopy (Transfer edition)

AirCopy can transfer one 128-channel bank, the radio settings, or all memory banks and settings in one operation. Version 6.1 adds a stop-and-wait protocol with acknowledgements in both directions:

  • the receiver acknowledges CRC32 comparison frames and every stored data frame,
  • a missing acknowledgement automatically triggers a retry, up to three times,
  • invalid, out-of-sequence or mismatched selections are rejected instead of being applied silently,
  • the progress screen reports retries or receive errors and distinguishes blocks that were already identical from blocks that were copied.

Before sending data, the two radios compare CRC32 values in groups of up to 24 blocks. The receiver returns a difference bitmap, so only blocks whose contents differ are transmitted. Each radio data frame can carry up to three consecutive 64-byte blocks, approximately doubling over-the-air throughput compared with the previous one-block framing.

Transfer also supports direct radio-to-radio cable cloning over UART at 460800 baud. Press * in AirCopy to switch between AIR COPY and CABLE COPY; use UP and DOWN to select a memory bank, Settings or All (Mem+Set), then MENU on the sender and EXIT on the receiver.

Cable mode additionally provides Flash 2M, which clones the complete 2 MiB external Flash. Sectors are compared by CRC32 and only different sectors are written. The device-specific calibration sector is never copied or erased, and the receiving radio must be restarted after a successful Flash clone.

[!IMPORTANT] The new AirCopy wire format is not compatible with earlier versions. Both radios must run the same firmware version.

Settings and controls

  • New or extended menu entries:
    • SetPwr: configurable User output power,
    • SetPTT: Classic or OnePush PTT,
    • SetTOT: timeout-timer alert,
    • SetEOT: end-of-transmission alert,
    • SetCtr: display contrast,
    • SetInv: inverted display,
    • SetLck: keypad or keypad-and-PTT lock,
    • SetMet: S-meter style,
    • SetGUI: VFO information style,
    • SetRxA: RX audio profile,
    • SetTmr: RX and TX timers,
    • SetOff: automatic deep-sleep delay,
    • SetNFM: narrow-FM bandwidth,
    • SetVol: RX audio volume,
    • SetScn: scan mode,
    • SetNav: radio-specific navigation layout,
    • SetCfg: apply another Multiconfig bank without restarting.
  • Improved PonMsg, BackLt, TxTOut, ScnRev and KeyLck menus.
  • Full VFO state restoration with a long press on EXIT.
  • Squelch changes made with F + UP or F + DOWN are persisted.

Keyboard shortcuts and assignable actions

  • F + UP or F + DOWN: adjust the squelch level.
  • F + F1 or F + F2: adjust the frequency step.
  • F + 8: temporarily switch the backlight between minimum and maximum brightness.
  • F + 9: return to the configured backlight strategy.
  • Configurable short- and long-press actions include:
    • RX mode,
    • main-VFO-only display,
    • virtual PTT,
    • wide/narrow bandwidth,
    • 1750 Hz tone,
    • mute,
    • RX audio profile,
    • maximum power,
    • offset removal,
    • BEAM,
    • RF Log,
    • Fox Hunt,
    • Beacon,
    • ToneCall (launches the ToneCall overlay app, Labs).

Reliability and optimization

  • Improved squelch and S-meter behavior.
  • Fixed DTMF overlay issues.
  • Fixed scan-range limits.
  • Cleaner startup display.
  • Removed PWM-related audio noise.
  • Improved serial and K5Viewer key handling.
  • Improved VFO persistence and restoration.
  • Extensive code refactoring and memory optimization.
  • DTMF calling and the scrambler remain disabled in Fusion.
  • Legacy AM Fix support has been removed.

Main features from Egzumer:

  • many of OneOfEleven mods:
    • long press buttons functions replicating F+ action
    • fast scanning
    • channel name editing in the menu
    • channel name + frequency display option
    • shortcut for scan-list assignment (long press 5 NOAA)
    • scan-list toggle (long press * Scan while scanning)
    • configurable button function selectable from menu
    • battery percentage/voltage on status bar, selectable from menu
    • longer backlight times
    • mic bar
    • RSSI s-meter
    • more frequency steps
    • squelch more sensitive
  • fagci spectrum analyzer (F+5 to turn on)
  • some other mods introduced by me:
    • SSB demodulation (adopted from fagci)
    • backlight dimming
    • battery voltage calibration from menu
    • better battery percentage calculation, selectable for 1600mAh or 2200mAh
    • more configurable button functions
    • long press MENU as another configurable button
    • better DCS/CTCSS scanning in the menu (* SCAN while in RX DCS/CTCSS menu item)
    • Piotr022 style s-meter
    • restore initial freq/channel when scanning stopped with EXIT, remember last found transmission with MENU button
    • reordered and renamed menu entries
    • LCD interference crash fix
    • many others...

Manual

Up to date manual is available in the Wiki section

Radio performance

Please note that the Quansheng UV-Kx radios are not professional quality transceivers, their performance is strictly limited. The RX front end has no track-tuned band pass filtering at all, and so are wide band/wide open to any and all signals over a large frequency range.

Using the radio in high intensity RF environments will most likely make reception difficult, especially in AM mode. The receiver simply does not have a great dynamic range, so stronger signals can easily cause distortion, desensitization and poor AM audio. This is fundamentally a hardware limitation: firmware can improve behavior at the margins, but it cannot overcome the front-end design of the radio. In practice, AM reception will degrade first and most severely, while FM reception is generally more tolerant and should remain more usable.

But, they are nice toys for the price, fun to play with.

Compiling and Building from Docker

This project provides a Docker-based build system for the UV-K1 and UV-K5 V3. Everything is handled through the compile-firmware.sh helper script. Fusion is the default generic preset, while specialized builds are generated in their own build/<Preset> directories.

Prerequisites

  • Docker installed on your system
  • Bash environment (Linux, macOS, WSL, Git Bash on Windows)

Build Script Overview

The script compile-firmware.sh:

  1. Builds the Docker image (uvk1-uvk5v3) if it does not already exist.
  2. Configures the selected preset with cmake --fresh.
  3. Builds the firmware and outputs matching .elf, .bin and .hex files.
  4. Displays Flash and RAM usage; All keeps the individual build logs quiet.

Usage

./compile-firmware.sh [Preset] [extra CMake options]

The default preset is Fusion. Available presets are:

  • Custom
  • Fusion
  • Transfer
  • FieldOps
  • Labs
  • All (Fusion, Transfer, FieldOps and Labs)

Examples:

./compile-firmware.sh
./compile-firmware.sh Fusion
./compile-firmware.sh Transfer
./compile-firmware.sh FieldOps
./compile-firmware.sh Labs
./compile-firmware.sh All

Passing Additional CMake Options

You can pass extra configuration options after the preset name.
These are forwarded directly to cmake --preset inside the container.

Examples:

./compile-firmware.sh FieldOps -DENABLE_VOX=OFF
./compile-firmware.sh Fusion -DENABLE_FEAT_F4HWN_GAME=ON
./compile-firmware.sh Fusion -DSQL_TONE=600

To prepare the rolling development firmware:

./compile-firmware.sh Fusion -DDEV=ON

This keeps the regular build output in build/Fusion and also updates archive/f4hwn.fusion.development.bin. The development build is identified as DEV in the firmware information screen. Publishing the updated archive file remains an explicit Git operation.

Notes

  • The first run may take a few minutes while Docker builds the base image.
  • Each build runs inside Docker, so your host environment remains clean.

Flashing the Firmware with UV Studio

You can flash the UV-K5 V3 and UV-K1 directly from your web browser using the Web Serial-based UV Studio.

UV Studio combines firmware flashing, calibration maintenance, boot-logo management, K5Viewer and RF Log in a single interface. It requires no application installation, server or account. Use a desktop browser with Web Serial support, such as Chrome, Brave, Edge, Opera or Firefox 151+.

Steps to flash the firmware

  • Open the Flash Firmware view in UV Studio.
  • Connect your radio to your computer using a compatible USB programming cable (USB-C or Baofeng/Kenwood like double jack USB cable).
  • Make sure your radio is in DFU mode (flash mode).
  • Select an official F4HWN Fusion release from the catalog or load a local .bin firmware file.
  • Click on Flash Firmware, then select the serial port associated with your radio.
  • The progress bar will guide you through the flashing steps.

Once finished, your radio restarts with the new firmware.

Steps to dump or restore calibration data

UV Studio can also dump and restore calibration data, which is highly recommended. It is best to create a dump immediately after installing the F4HWN firmware, and to restore it before installing another firmware or returning to the stock firmware.

Dump

  • Open the Dump Calibration view in UV Studio.
  • Power on your radio in normal mode.
  • Click Dump Calibration Data.

When the process is complete, click Download calibration.dat to save the file to your computer.

[!NOTE] A good practice is to rename your calibration file using the serial number of your radio, which you can find on the label on the back of the device once you remove the battery. This helps avoid mixing up calibration files when you own multiple units.

Restore

  • Open the Restore Calibration view in UV Studio.
  • Power on your radio in normal mode.
  • Select your calibration.dat file on your computer.

Click Restore Calibration Data and wait until the process fully completes.

Other sources of information

Credits

Many thanks to various people:

License

Copyright 2023 Dual Tachyon https://github.com/DualTachyon

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

댓글 0

로그인하고 댓글을 남겨 보세요.