How egzumer/uv-k5-firmware-custom works
This is embedded custom firmware for Quansheng UV-K5/K6/5R handheld transceivers. The principal workflow is user key/PTT input handled by the application loop, which selects radio behavior and drives receive/transmit operation and the LCD; scanning, channel operation, and optional radio modes add distinct workflows. The README documents broader customizations and optional features. Source excerpts are partial, so links for unsampled feature modules are limited to documented behavior and the paths present in the tree.
Main entry points: app.c Application loop · action.c Key actions · common.c Radio control · main.c Startup and loop
Components 20
Firmware runtime
- Startup and loop
main.c - Application loop
app/app.c - Key actions
app/action.c
Radio features
- Frequency scanning
app/scanner.c - Channel scanning
app/chFrScanner.c - Spectrum analyzer
app/spectrum.c - FM radio
app/fm.c - DTMF calling
app/dtmf.c - Radio aircopy
app/aircopy.c - Radio control
app/common.c
User interface
- Settings menu
app/menu.c - Main display
ui/main.c
Hardware layer
- BK4819 transceiver
driver/bk4819.c - Key scanner
driver/keyboard.c - LCD controller
driver/st7565.c - EEPROM settings
driver/eeprom.c - UART interface
app/uart.c
Other components
- Radio user
- UV-Kx radio
- PC configuration
Connections 18
- Radio user → Key scanner: presses keys
- Key scanner → Application loop: key events
- Startup and loop → Application loop: runs loop
- Application loop → Key actions: dispatches keys
- Application loop → Radio control: controls radio
- Application loop → Main display: updates screen
- Application loop → Frequency scanning: services scan
- Application loop → Channel scanning: services scan
- Key actions → Settings menu: opens menu
- Key actions → Spectrum analyzer: activates analyzer
- Application loop → FM radio: restores FM mode
- Application loop → DTMF calling: handles calling
- Radio control → BK4819 transceiver: configures transceiver
- Radio control → UV-Kx radio: controls RF
- Main display → LCD controller: renders display
- Startup and loop → EEPROM settings: loads settings
- PC configuration → UART interface: configures radio
- Application loop → Radio aircopy: supports transfer