qap

# πŸ“» QAP β€” Quansheng Airband Project **RX-only firmware for the Quansheng UV-K5(8), dedicated to listening to air traffic** ![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg) ![RX-only](https://img.shields.io/badge/RX--only-no%20TX-green.svg) ![Band](https://img.shields.io/badge/Band-118%E2%80%93136%20MHz-orange.svg) ![Modulation](https://img.shields.io/badge/Modulation-AM-red.svg) ![Build](https://img.shields.io/badge/build-2026--08--16%2021%3A08-brightgreen.svg) **QAP** = **Q**uansheng **A**irband **P**roject Β· **Callsign:** PU5XRM **🌐 [Leia este README em PortuguΓͺs (Brasil)](/README.pt-BR.html)** ![QAP UI](/qap.jpg) *From left to right: **booting**, **scanning** and **hold**.*

Turn your Quansheng UV-K5(8) into a dedicated aviation scanner, focused exclusively on the 118–136 MHz (AM) band β€” tower (TWR), approach (APP), en-route (ACC), ATIS, ground (GND) and the 121.500 MHz emergency frequency.

⚠️ Receive-only. This firmware never transmits. Transmitting on aviation frequencies is illegal.

πŸ§ͺ Evolving / experimental. This firmware is under active development β€” use at your own risk. Back up the factory firmware before flashing.

πŸ“‘ By default, the firmware ships with Foz do IguaΓ§u (SBFI/IGU) frequencies pre-loaded in the scanner.

πŸ“‹ Table of Contents

πŸ–₯️ Target Hardware

Item Specification
Radio Quansheng UV-K5(8) (and compatible variants)
RF chip BK4819 (18 MHz – 1.3 GHz receive)
MCU DP32G030 (ARM Cortex-M0, 64 KB flash)
Display ST7565 128Γ—64 (8 pages of 8 px)
Target band 118.000 – 136.975 MHz
Modulation AM
Step 8.33 kHz / 25 kHz

βš™οΈ Features

βœ… Included

πŸ—‘οΈ Removed (to free up flash)

This frees ~23–30 KB of flash for the AM reception algorithms.

πŸ”Œ Installation β€” Flashing the Radio

1. Download the firmware

Grab the latest binary from the Releases section (the ...-firmware.packed.bin file).

2. Back up the original firmware

Use a flasher to save the factory firmware before any flashing. You will need it to restore the radio.

3. Flash with the Web Flasher

Use the web flasher (Chrome/Edge via Web Serial) with the downloaded .packed.bin file.

4. Power on and listen

Done β€” the radio boots straight into airband scanner mode.

⚠️ Use a quality data cable. An interrupted flash may require DFU recovery.

Building the Firmware

The C source lives in firmware/src/. The build is done with Docker (works on macOS Intel/Apple Silicon and Linux).

cd firmware
docker build -t uvk5-build .
docker run --rm -v "$PWD:/app" -w /app uvk5-build /bin/sh -c "make clean && make"

Build natively

Requirements: arm-none-eabi-gcc + python3 with crcmod.

cd firmware
make clean && make

The flashable binary is produced at firmware/build/firmware.packed.bin (flash < 64 KB, zero warnings with -Werror).

πŸ” Full build + release guide in docs/build-release.md.

πŸ“ Repository Structure

qap/
β”œβ”€β”€ firmware/          # Firmware (C source, Makefile, Dockerfile)
β”‚   └── src/           #   Source code (BK4819 drivers, UI, scan, AGC…)
β”œβ”€β”€ docs/              # Architecture, UI, Brazilian airband frequencies
β”œβ”€β”€ plans/             # Implementation plans (roadmap)
β”œβ”€β”€ CHANGELOG.md       # Build history
β”œβ”€β”€ CNAME              # qap.romildo.net domain
β”œβ”€β”€ LICENSE            # Apache 2.0
└── NOTICE             # Credits to the base projects

πŸ“š Documentation

Document Contents
docs/arquitetura.md Technical decisions, BK4819, flash budget
docs/ui-design.md ST7565 128Γ—64 UI specification
docs/frequencias-airband-brasil.md Brazilian ATC frequencies (TWR/APP/ACC) + suggested scan
CHANGELOG.md Build history with hash and dated binary

πŸ“₯ Downloads

Each build publishes a dated binary with sha256 hash in the Releases section:

Direct link to the latest release:

https://github.com/romildodcm/qap/releases/latest/download/firmware.packed.bin

βš–οΈ License and Credits

Distributed under the Apache License 2.0 β€” see LICENSE and NOTICE.

Fork based on:


**QAP β€” Quansheng Airband Project** Β· Aviation reception with the UV-K5 Β· **PU5XRM** *This project is for listening only. Do not transmit on aviation frequencies β€” it is illegal and dangerous.*