Skip to content

Latest commit

 

History

148 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

radio_tool

Radio Firmware tool

Radio Support

Manufacturer Radio Model Fw Read Fw Write Fw Wrap Db Read Db Write
TYT MD-2017 ✖️ ✔️ ✔️ ✖️ ✖️
TYT MD-9600 ✖️ ✔️ ✔️ ✖️ ✖️
TYT MD-UV380 ✖️ ✔️ ✔️ ✖️ ✖️
TYT MD-UV390 ✖️ ✔️ ✔️ ✖️ ✖️
TYT MD-390 ✖️ ✔️ ✔️ ✖️ ✖️
TYT MD-380 ✖️ ✔️ ✔️ ✖️ ✖️
TYT MD-446 ✖️ ✔️ ✔️ ✖️ ✖️
TYT MD-280 ✖️ ✔️ ✔️ ✖️ ✖️
Baofeng DM-1701 ✖️ ✔️ ✔️ ✖️ ✖️
Baofeng DM-1801 ✖️ ✔️ ✔️ ✖️ ✖️
Baofeng RD-5R ✖️ ✔️ ✔️ ✖️ ✖️
Baofeng UV-5R / UV-82 / UV-6 ✖️ ✖️ ✖️ ✔️ ✖️
Connect Systems CS800D ✖️ ✖️ ✔️ ✖️ ✖️
Ailunce HD1 ✖️ ✔️ ✔️ ✖️ ✖️
Yaesu FT-70DR ✖️ ✔️ ✖️ ✖️ ✖️
Radioddity GD-77 ✖️ ✔️ ✔️ ✖️ ✖️
Fw = Firmware
Db = Codeplug database

Download

Download pre-built binaries from GitHub Actions

Ubuntu Windows macOS

Otherwise you can use the instructions below to build

Building

Dependencies Linux (Ubuntu/Debian):

sudo apt install libusb-1.0-0-dev cmake gcc g++ pkg-config

Dependencies Mac:

brew install libusb cmake pkg-config

Build:

git clone https://github.com/v0l/radio_tool
cd radio_tool
mkdir build && cd build
cmake ..
make -j4
./radio_tool --help

Docs

Code documentation: https://data.v0l.io/radio_tool/docs

Usage

Usage:
  ./radio_tool [OPTION...]

 General options:
  -h, --help <command>  Show this message
  -l, --list            List devices
  -d, --device <index>  Device to use
  -i, --in <file>       Input file
  -o, --out <file>      Output file
  -L, --list-radios     List supported radios

 Programming options:
  -f, --flash         Flash firmware
  -p, --program       Upload codeplug
      --read-codeplug Download the codeplug from the radio to --out

 Firmware options:
      --fw-info  Print info about a firmware file
      --wrap     Wrap a firmware bin (use --help wrap, for more info)
      --unwrap   Unwrap a fimrware file

 All radio options:
      --info                 Print some info about the radio
      --write-custom <data>  Send custom command to radio
      --get-status           Print the current DFU Status

 TYT Radio options:
      --get-time             Gets the radio time
      --set-time             Sets the radio time
      --dump-reg <register>  Dump a register from the radio
      --reboot               Reboot the radio
      --dump-bootloader      Dump bootloader (Mac only)

 Codeplug options:
      --codeplug-info  Print info about a codeplug file

 Serial radio options:
      --port </dev/ttyUSB0>   Serial port to use
      --list-serial-models    List models which can be used with --port

Flash Firmware

./radio_tool -d 0 -f -i new_firmware.bin

Download a codeplug (Baofeng UV-5R family)

These radios clone over a plain USB serial cable, which cannot be told apart from any other serial cable, so the port and the model are given explicitly. Turn the radio off, seat the cable fully in the mic/speaker jack, then turn the radio back on before running:

./radio_tool --port /dev/ttyUSB0 --radio UV5R --read-codeplug -o my_radio.img
./radio_tool --codeplug-info -i my_radio.img

The image is byte compatible with a CHIRP .img for the same radio, so it can be opened in CHIRP as well. Run --list-serial-models for the accepted --radio values.

Radios that clone over Bluetooth LE

The UV-17Pro family, which includes the UV-5R Mini and UV-5G Mini, has no programming cable at all and clones over Bluetooth LE. Enable Bluetooth on the radio, then find it and read it:

./radio_tool --list-ble
0C:64:8F:1E:00:75  walkie-talkie

./radio_tool --ble 0C:64:8F:1E:00:75 --radio UV5RMINI --read-codeplug -o my_radio.img

Use --ble-adapter hci1 if the machine has more than one Bluetooth adapter. A BLE link answers far more slowly than a cable, and a radio only advertises intermittently, so finding it can take several seconds.

Wrap Firmware

./radio_tool --wrap -o wrapped.bin -r DM1701 -s 0x0800C000:main.bin

Unwrap Firmware

Output file in this case is a file prefix, the filename will be unwrapped_0x0800C000 and others if you have firmware will more than one segment

./radio_tool --unwrap -i wrapped.bin -o unwrapped 

Releases

Contributors

Languages