Baofeng’s Customer Programming Software (CPS) is Windows-only, but with a bit of Wine magic you can run it on Linux without a virtual machine. This guide walks through the full process for the DM-32UV and similar Baofeng DMR radios.
What You Need
- A Linux system with
pacman(Arch/Manjaro) — adapt package names for your distro - The Baofeng programming USB cable
- Internet access to download the CPS installer
Step 1 — Install Wine
Wine lets you run Windows executables natively on Linux. Install it along with the Mono runtime (needed for .NET-based installers):
sudo pacman -S wine wine-mono
Debian/Ubuntu users:
sudo apt install wine winetricksthenwinetricks monoif needed.
Step 2 — Download the Baofeng CPS
Go to the official Baofeng download page and grab the latest CPS for your model:
https://www.baofengradio.com/pages/download
The download is a .zip file. Unzip it to find the installer executable inside.
Step 3 — Run the Installer
Navigate to where you unzipped the file and run the installer through Wine:
cd ~/Downloads
wine "CPS DMR Radio Setup v1.45.exe"
You will see some fixme: and err: lines in the terminal — these are normal Wine diagnostic messages and can be safely ignored as long as the graphical installer window opens. Follow the Windows-style installer steps to completion.
The software installs by default to:
~/.wine/drive_c/DMR CPS/CPS DMR Radio V1.45/
Step 4 — Identify Your USB-to-Serial Device
Plug in the Baofeng programming cable and connect it to the radio. Then check which device node Linux assigned to it:
ls -l /dev/ttyUSB* /dev/ttyACM*
You should see something like /dev/ttyUSB0. If nothing appears, check dmesg | tail -20 for the kernel recognising the cable’s chipset (commonly CH340 or Prolific PL2303).
Permission error? Add your user to the
dialout(Debian) oruucp(Arch) group:sudo usermod -aG uucp $USER # Arch/Manjaro sudo usermod -aG dialout $USER # Debian/UbuntuThen log out and back in.
Step 5 — Map the USB Port to a Windows COM Port
Wine maps COM ports via symlinks inside the Wine prefix. The simplest approach is to link /dev/ttyUSB0 to a COM port name that the CPS will see:
cd ~/.wine/dosdevices
ln -s /dev/ttyUSB0 com33
You can use com1 through com99. Using a higher number like com33 avoids conflicts with any real serial ports the system might already have mapped. Inside the CPS, select COM33 from the port dropdown.
Step 6 — Launch the CPS
cd ~/.wine/drive_c/DMR\ CPS/CPS\ DMR\ Radio\ V1.45/
wine DMR\ CPS.exe
The Baofeng CPS window should open. From here you can read from the radio, edit your code plug, and write it back — all from Linux.
Troubleshooting
| Problem | Likely cause | Fix |
|---|---|---|
No /dev/ttyUSB* appears |
Cable not recognised | Try `dmesg |
| CPS can’t open the port | Wrong COM mapping or permissions | Double-check symlink target and group membership |
| Installer crashes | Wine version mismatch | Try wine --version; upgrade to 8.x+ or use winetricks to install vcredist |
| Garbled display | Missing fonts | Run winetricks corefonts |
Further Reading
- Creating a DMR Code Plug from Scratch — once CPS is running, this guide walks through building your first code plug step by step.
- Baofeng downloads page — always use the latest CPS for your model.