I have taken several attempts at writing a clear and concise guide to programming common radios with CHIRP. This is one of them. I am specifically writing to Baofeng UV-5R and friends, TIDRADIO TD-H8, and Yaesu FT-60 radios, and I am using Linux. These instructions will be somewhere close for most users, and I will include information for users of other platforms.
CHIRP
The program almost everyone uses to program radios now is called CHIRP, it is freely downloadable. It runs on Windows, Mac OS, and Linux, but it is slightly harder to install on Linux than it is on other platforms and doesn't have any self-updating functionality. How to install will be covered a little later, in case you don't need any help with that part. If you're an advanced user you may have already experimented and found that there are instructions inside of CHIRP for how to communicate with different radios. In that case, you may not need any more of this guide at all.
Programming
The process for most cheap (Baofeng, TIDRADIO, etc) radios is the same: Turn off the radio, plug the cable in to the computer and the radio in no particular order, turn on the radio and turn to a channel without traffic. Read the program from the radio, save the file. Put whatever channels you want in to CHIRP and then write back to the radio, save the file with a new name so you have a record of what you wrote. That's it, you don't have to push any buttons or do anything weird.
Unless you are writing a whole bunch of the same radio, always read from each radio and save the file before you write! This way you can at worst put it back how you found it. If you are writing a bunch of radios, read at least one of them that works and save the file, for the same reason.
When it comes to doing this on Windows you are often cautioned only to get reputable cables because the chip which handles converting from USB to a "serial" signal that the radio can understand can differ in various ways, and some of the various chips have bad Windows drivers. (There are Windows drivers which will work with each weird and specific chip, but getting the right one installed can be irritating.) I don't know about the Mac OS driver, but I assume it is better; the Linux driver is definitely better and it does not matter which cable you buy as long as it has the right kind of connection and signaling for your radio if you run Linux.
Yaesu FT-60
You have to do a kind of weird little dance to program the FT-60. I got these instructions from another user's blog post:
- Connect cable. (Remember, you want the FTDI cable, not the one requiring the crazy drivers you'd have to download from hinkychinesewebsite.com)
- Power the radio on while holding the MONI button – it's the middle button on the LHS, the one with the dot on it.
- You will see a menu. Scroll around with DIAL knob until you find CLONE. (I think it's item #8)
- Press the FW button (bottom RHS of keypad). Screen will flash off, then come back on with the same CLONE display.
- Fire up chirp.
- Now for menus: radio > make&model; port > figure out the USB port; usually it'll have "usbserial" in the name. It definitely won't be any of the "bluetooth" ports!
- Press PTT on the radio – hold the PTT button down a few seconds, then quickly hit OK on the pop-up panel in chirp. TX and progress bar will appear as it downloads to computer.
- Save the blank file!!!
- Edit settings in chirp as you see fit. Save to another file.
- Back to the radio, press MONI button; this will switch radio display to RX.
- Back to chirp, radio > upload to radio. Now hit OK; should see progress bar as programming uploads.
- Turn radio off, unplug cable.
- Turn radio on, flip to memory mode (V/M, lower left corner) and test your handiwork.
My notes on these notes, which will not assume you know anything but which might be patronizing otherwise, sorry:
- This seems to be pretty accurate when reading, programming, and writing back. If you are confused; LHS = Left Hand Side, RHS = Right. PTT = Push to Talk, the bigger/top button on the "LHS."
- Power the radio on by turning the top of the smaller/left knob clockwise. This is power/volume. The bottom of this knob is squelch. Turn that up (clockwise) until the radio just stops hissing at you. The right knob is used for tuning and navigating menus. You get to the "CLONE" option by turning it one click counter-clockwise.
- For some reason I had a lot more trouble with writing alone than with reading and then writing. The above instructions work best when both steps are done. If you skip the reading from the radio part and just push moni again the screen will say RX just as if you had read from the radio as well. But then CHIRP won't write to the radio reliably until I try some various kinds of pressing of the MONI button. I still haven't figured out if it's holding it down, or pressing it twice, or whatever that actually makes it work, but if you have trouble writing back to the radio, keep messing with the moni button and trying to write again.
Linux installation
This is just a copy of the Linux installation instructions, simplified.
- Install prerequisites
Debian, Ubuntu, Mint, Raspbian, etc:sudo apt install python3-wxgtk4.0 pipx
or
Fedora and compatible:1sudo dnf install python3-wxpython4 pipx
- Install CHIRP (and Python dependencies)
Download the chirp-yyyymmdd-py3-none-any.whl file located under the folder corresponding to the latest date.
then:pipx install --system-site-packages ./chirp-yyyymmdd-py3-none-any.whl
If pipx works right this should install a "chirp" alias into your path somewhere and it should show up in your menu and whatnot. The icon is an old D-shaped 9 pin connector.
Finding the port name on Linux
On Linux you find device driver "special files" that connect to a device driver inside of the /dev
directory. There's a lot of stuff in there, and it's not always immediately obvious how to tell CHIRP to talk to your device. Your cable will connect to your computer with USB, but it will talk to your radio with a "serial" connection. Your cable will usually show up as /dev/ttyUSB0 or /dev/ttyACM0. On any platform, when you ask CHIRP to read or write a radio configuration you will normally get a list of ports, and there will often only be one option on that list; if so, that's probably the right port.
But in case it isn't, one way to find out that works on any kind of Linux is to watch the messages that are produced by the "kernel" (the core of the operating system) when you plug in the device. Run the following command in a terminal window:
sudo dmesg -W
You will be prompted for your password, and then you will start seeing kernel log messages. You can hit enter to space these out without affecting anything else. Press ^C (Control-C) to close dmesg.
Here's the output from when I plugged in the cable for the Baofeng, Tidradio and such:
[80913.196757] usb 3-3.2: new full-speed USB device number 9 using xhci_hcd
[80913.337331] usb 3-3.2: New USB device found, idVendor=067b, idProduct=2303, bcdDevice= 4.00
[80913.337338] usb 3-3.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[80913.337341] usb 3-3.2: Product: USB-Serial Controller D
[80913.337343] usb 3-3.2: Manufacturer: Prolific Technology Inc.
[80913.385408] pl2303 3-3.2:1.0: pl2303 converter detected
[80913.413485] usb 3-3.2: pl2303 converter now attached to ttyUSB0
And here are the messages from disconnection.
[80981.804304] usb 3-3.2: USB disconnect, device number 9
[80981.804467] pl2303 ttyUSB0: pl2303 converter now disconnected from ttyUSB0
[80981.804487] pl2303 3-3.2:1.0: device disconnected
Here's the output from the cable for the FT-60R:
[81187.287636] usb 3-3.1: new full-speed USB device number 10 using xhci_hcd
[81187.436290] usb 3-3.1: New USB device found, idVendor=1a86, idProduct=55d3, bcdDevice= 4.43
[81187.436298] usb 3-3.1: New USB device strings: Mfr=0, Product=2, SerialNumber=3
[81187.436301] usb 3-3.1: Product: USB Single Serial
[81187.436304] usb 3-3.1: SerialNumber: 546F039958
[81187.500373] cdc_acm 3-3.1:1.0: ttyACM0: USB ACM device
[81197.609525] usb 3-3.1: USB disconnect, device number 10
If you have other serial devices connected to your computer, the number might be 1 or 2 (etc.) instead of 0. Those other serial devices will probably show up in CHIRP, and you won't want to try to talk to them as if they were a radio. If you are at all confused, follow this process.
Attached to the bottom of this post is a blank config from a Yaesu FT-60.
- 1
This was tested on Fedora 37 with python 3.11. The same procedure should work on all current versions of fedora running python3.
Attachment | Size |
---|---|
Yaesu FT-60 radio stock configuration (657 bytes) | 657 bytes |