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 !
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:
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.
Special thanks to Jean-Cyrille F6IWW (3 times), Fabrice 14RC123, David F4BPP, 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 and 邓 月 for their donations. That’s so kind of them. Thanks so much 🙏🏻
Fusion is the reference edition of the project. It provides an all-in-one firmware for the UV-K1 and UV-K5 V3, including:
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.OFF,01 to 24,ALL.ALL list scans every channel except those assigned to OFF.00 selects ALL,01 to 24 select the corresponding list.MENU while scanning to exclude the current memory channel.MAIN ONLY, DUAL and CROSS display modes,F keypad lock (attenuation stays adjustable with the arrow keys).MOE, MOI, MOS, MOH, MO5 and MO identifiers,F keypad lock,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.PonMsg, BackLt, TxTOut, ScnRev and KeyLck menus.EXIT.F + UP or F + DOWN are persisted.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.5 NOAA)* Scan while scanning)* SCAN while in RX DCS/CTCSS menu item)Up to date manual is available in the Wiki section
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.
This project provides a Docker-based build system to compile the Fusion firmware for the UV-K1 and UV-K5 V3. Everything is handled through the compile-with-docker.sh helper script.
The documented build output is generated inside build/Fusion, using the CMake presets defined in CMakePresets.json.
The script compile-with-docker.sh performs the following actions:
uvk1-uvk5v3) if it does not already exist.build directory to ensure a clean configuration.Fusion preset inside the Docker container..elf, .bin and .hex files../compile-with-docker.sh Fusion [extra CMake options]
Build Fusion:
./compile-with-docker.sh Fusion
You can pass extra configuration options after the preset name.
These are forwarded directly to cmake --preset inside the container.
Examples:
./compile-with-docker.sh Fusion -DENABLE_SPECTRUM=ON
./compile-with-docker.sh Fusion -DENABLE_FEAT_F4HWN_GAME=ON -DENABLE_NOAA=ON
./compile-with-docker.sh Fusion -DSQL_TONE=600
To prepare the rolling development firmware:
./compile-with-docker.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.
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+.
.bin firmware file.Flash Firmware, then select the serial port associated with your radio.Once finished, your radio restarts with the new firmware.
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 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.
calibration.dat file on your computer.Click Restore Calibration Data and wait until the process fully completes.
Many thanks to various people:
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.
C
99.2%
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 !
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:
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.
Special thanks to Jean-Cyrille F6IWW (3 times), Fabrice 14RC123, David F4BPP, 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 and 邓 月 for their donations. That’s so kind of them. Thanks so much 🙏🏻
Fusion is the reference edition of the project. It provides an all-in-one firmware for the UV-K1 and UV-K5 V3, including:
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.OFF,01 to 24,ALL.ALL list scans every channel except those assigned to OFF.00 selects ALL,01 to 24 select the corresponding list.MENU while scanning to exclude the current memory channel.MAIN ONLY, DUAL and CROSS display modes,F keypad lock (attenuation stays adjustable with the arrow keys).MOE, MOI, MOS, MOH, MO5 and MO identifiers,F keypad lock,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.PonMsg, BackLt, TxTOut, ScnRev and KeyLck menus.EXIT.F + UP or F + DOWN are persisted.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.5 NOAA)* Scan while scanning)* SCAN while in RX DCS/CTCSS menu item)Up to date manual is available in the Wiki section
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.
This project provides a Docker-based build system to compile the Fusion firmware for the UV-K1 and UV-K5 V3. Everything is handled through the compile-with-docker.sh helper script.
The documented build output is generated inside build/Fusion, using the CMake presets defined in CMakePresets.json.
The script compile-with-docker.sh performs the following actions:
uvk1-uvk5v3) if it does not already exist.build directory to ensure a clean configuration.Fusion preset inside the Docker container..elf, .bin and .hex files../compile-with-docker.sh Fusion [extra CMake options]
Build Fusion:
./compile-with-docker.sh Fusion
You can pass extra configuration options after the preset name.
These are forwarded directly to cmake --preset inside the container.
Examples:
./compile-with-docker.sh Fusion -DENABLE_SPECTRUM=ON
./compile-with-docker.sh Fusion -DENABLE_FEAT_F4HWN_GAME=ON -DENABLE_NOAA=ON
./compile-with-docker.sh Fusion -DSQL_TONE=600
To prepare the rolling development firmware:
./compile-with-docker.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.
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+.
.bin firmware file.Flash Firmware, then select the serial port associated with your radio.Once finished, your radio restarts with the new firmware.
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 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.
calibration.dat file on your computer.Click Restore Calibration Data and wait until the process fully completes.
Many thanks to various people:
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.
C
99.2%