Efforts to reverse engineer the Quanscheng UV-K5 radio
Go to file
sq5bpf d30a1aa68a fix 12-character logo strings 2023-06-26 15:08:28 +02:00
LICENSE initial commit 2023-05-15 22:14:58 +02:00
README rename the memory map document, update README 2023-05-29 20:35:15 +02:00
UVK5_memory_map.ods add more fields 2023-06-26 12:58:38 +02:00
deobfuscate.py initial commit 2023-05-15 22:14:58 +02:00
sample_read.txt initial commit 2023-05-15 22:14:58 +02:00
sample_write.txt initial commit 2023-05-15 22:14:58 +02:00
uvk5.py fix 12-character logo strings 2023-06-26 15:08:28 +02:00

README

Efforts to reverse engineer the Quanscheng UV-K5 radio
(c) 2023 Jacek Lipkowski <sq5bpf@lipkowski.org>

Licensed cc-by-sa-4.0

This repository contains my efforts at reverse engineering the programming
protocol and memory contents of the Quansheng UV-K5 radio, so that the radio
is supported by opensource software (chirp or other).



Files in this repository:

UVK5_memory_map.ods is the memory map i've reverse engineered using
the UK-K5 emulator.

sample_read.txt - dump of communication while reading the radio 

sample_write.txt - dump of communication while writing to the radio 

deobfuscate.py - a script to deobfuscate reading the above files. usage:
./deobfuscate.py < sample_read.txt |less

uvk5.py - experimental driver for chirp. Sometimes it's more useful than
hexediting by hand. It will be later removed it i can get it into the chirp
repository.


To use the experimental chirp driver on all OS-es:

- Install chirp-next, minimum version 20230515

- Click Help -> Load module from issue and enter 10478, and select the newest
  uvk5.py file from the list (this should be the default selection).

- Now you can select the UV-K5 from the list of radios

- Download a copy of the radio memory with k5prog or chirp and keep it safe.

You will need to do this every time chirp is started. This will load the
driver i have posted in chirp issue 10748 at this url:
https://chirp.danplanet.com/issues/10478


Alternate instructions for linux users:

- Install chirp-next, minimum version 20230515

- Find the drivers directory (it's easiest to search for an existing driver, 
for example uv5r.py). Put the uvk5.py file there

- Launch chirp. No need to enable developer mode, no need to load the 
driver on each program start etc. 


Resources:

Quansheng UV-K5 EEPROM programmer
https://github.com/sq5bpf/k5prog
 
k5prog is a tool to read and write the radio eeprom. This can be used to
reverse engineer the eeprom contents, backup the radio etc.


Quansheng UV-K5 emulator
https://github.com/sq5bpf/k5emulator

k5emulator is a tool that looks like a real radio to UV-K5 programming
software. The eeprom contents are stored in a file. Changes to this file can
be studied to see what the original software does.


Quansheng UV-K5 Firmware collection
https://github.com/amnemonic/Quansheng_UV-K5_Firmware

amnemonic's repository of firmware. Also has various bits and pieces reversed.
This includes the firmware files xor obfuscation, which is great because in
the future maybe they will be reverse engineered to see what the radio is
capable of, or to make opensource firmware for this radio.



Chirp issue #10478
https://chirp.danplanet.com/issues/10478

Discussion regarding chirp support for the UV-K5, and my driver for it.