Efforts to reverse engineer the Quanscheng UV-K5 radio
Go to file
sq5bpf 40ab3fe011 new version of uvk5.py 2023-05-29 20:13:52 +02:00
LICENSE
README
UVK5_memory_map_20230515_2.ods
UVK5_memory_map_20230524_1.ods Added BAND settings 2023-05-26 07:32:10 +02:00
UVK5_memory_map_20230529_1.ods fix channel flags 2023-05-29 20:09:21 +02:00
deobfuscate.py
sample_read.txt
sample_write.txt
uvk5.py new version of uvk5.py 2023-05-29 20:13:52 +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_20230515_2.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

- Download the uvk5.py file from this repository

- Enable developer mode in chirp (Help -> Developer mode), restart chirp

- File -> Load module , select the uvk5.py file that you've downloaded 
(do this every time you start chirp)

- 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.



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.