Skip to main content
RadioRanked
Baofeng UV-5R connected by USB programming cable to a laptop running CHIRP on a wooden desk
Buying Guides

How to Program a Baofeng Radio with CHIRP (Step-by-Step Guide for 2026)

Programming a Baofeng with CHIRP takes about 15 minutes. Here's the full walkthrough: cable setup, reading memory, importing repeaters, and troubleshooting the errors everyone hits.

May 22, 2026 · 20 min read

Programming a Baofeng has a reputation it doesn't deserve. Half the forum threads on the subject read like the radio is a hostile mainframe from the 1970s. In reality, programming a UV-5R with CHIRP takes about fifteen minutes, and most of that is downloading the software and untangling the cable from the drawer.

The hard part isn't the programming. It's the cable. Specifically, buying a cable that actually works. Once you have one that talks to your computer, the rest is point-and-click.

This guide walks through the entire process on the Baofeng UV-5R, the radio most new Technicians program first. The same workflow works for the UV-82HP, UV-5R Plus, BF-F8HP, the K5 Plus, and most other CHIRP-supported Baofeng variants. If you have a different model, only the radio-selection step changes.

What You'll Need

Before you start, gather these. Most of the friction in programming a Baofeng comes from missing one of these items or having a low-quality version of it.

A CHIRP-compatible Baofeng radio. The UV-5R, UV-5R Plus, UV-82, UV-82HP, BF-F8HP, K5 Plus, GT-5R, and the 5RM are all fully supported. The newer DMR models (DM-32, BF-5RH PRO) have partial CHIRP support but are usually programmed with manufacturer CPS instead. If you're not sure whether your specific Baofeng is supported, check the CHIRP supported radios wiki before going further.

A USB programming cable. This is the make-or-break component. Buy a cable with a genuine FTDI or Silicon Labs CP210x chip. Avoid cheap cables with cloned Prolific PL2303 chips, because Windows will reject them and you'll spend an evening wondering why CHIRP can't see your radio. Expect to pay $15 to $25 for a reliable cable. The bundled cable in some Baofeng kits is fine; the $4 mystery cable on Amazon is not.

A computer. CHIRP runs on Windows 10 or later, macOS, and Linux. Any laptop from the last decade has enough horsepower. You'll need one free USB-A port. If your laptop only has USB-C, get a powered USB-C-to-A adapter, not a passive hub.

CHIRP software. Free, open source, downloaded directly from chirpmyradio.com. There's no paid version and no upgrade path. The latest CHIRP-next build is what you want.

A frequency list. You can hand-enter channels, but most people import them from RepeaterBook. Have the site bookmarked. If you're brand new and don't know what to program, start with your local 2-meter and 70-centimeter repeaters and your area's simplex calling frequencies.

About fifteen minutes. Not fifteen hours. Not fifteen days. Fifteen minutes.

Step 1: Download and Install CHIRP

Go to chirpmyradio.com/projects/chirp/wiki/Download and grab the latest build. CHIRP is versioned by build date, something like chirp-20260415 for an April 2026 build. Take the latest stable release, not a daily or experimental build.

On Windows, run the installer. It's a normal Windows setup wizard: next, next, install. The installer drops a CHIRP icon in your Start menu.

On macOS, download the .dmg file, open it, and drag CHIRP into your Applications folder. The first time you launch it, macOS will probably refuse to open it because it isn't signed by an Apple-recognized developer. Right-click the app, choose Open, then confirm in the dialog. After that, double-clicking works normally.

On Linux, CHIRP is usually in your distribution's repositories under chirp or chirp-daily. If not, the Python pip install option works on most modern distros. Launch from the command line with chirpw or from your application menu.

Launch CHIRP once to confirm it opens. You'll see an empty window with a File menu and a Radio menu. That's CHIRP at rest, waiting for a radio to talk to. If it crashes on launch, you probably need to install Microsoft Visual C++ Redistributable (Windows) or update your Python install (Linux). Most users won't hit either issue.

Step 2: Connect Your Radio to the Computer

Close-up of a USB programming cable's two-pin Kenwood-style connector plugged into the speaker-mic port on the side of a Baofeng UV-5R
The cable's two-pin connector goes into the speaker-mic port on the side of the radio, not into the top or any charging contacts.

Turn the radio off before you plug anything in. This isn't strictly required for every model, but it's a habit that prevents weirdness on the variants that don't like hot-plugging.

Plug the two-pin Kenwood-style connector into the speaker-mic port on the side of the Baofeng. There's a rubber cover that flips open, and the two pins on the cable line up with the two holes underneath. The connector goes in one way. If it feels wrong, flip it. Push until it's flush. The radio's speaker-mic jack is the one with two holes; do not plug into the antenna connector or the charging contacts on the back.

Plug the USB end into your computer. On Windows, wait ten to thirty seconds. The first time you connect a given cable, Windows installs drivers automatically. You'll see notifications about device installation. On macOS and Linux, the cable just shows up as a serial device with no fanfare.

Turn the radio back on. The display should look normal; programming mode doesn't kick in until CHIRP requests it.

To verify the connection on Windows, open Device Manager and look under "Ports (COM & LPT)." You should see something like "USB Serial Port (COM3)" or "Silicon Labs CP210x USB to UART Bridge (COM4)." Note the COM number; you'll need it.

On macOS, open Terminal and run ls /dev/tty.usbserial* or ls /dev/tty.SLAB*. You should see at least one entry.

On Linux, run ls /dev/ttyUSB*. Same idea.

If nothing shows up, the cable isn't being recognized. Skip down to the troubleshooting section before going further. Connecting the cable is the step where 90 percent of people get stuck.

Step 3: Read the Radio's Memory into CHIRP

In CHIRP, go to Radio → Download From Radio. A dialog opens asking for three things: the serial port, the radio's manufacturer, and the radio's model.

Pick the COM port (Windows) or /dev/ device (Mac, Linux) that matched your cable in the previous step.

Set the manufacturer to Baofeng.

Set the model to your exact radio. This matters more than people realize. UV-5R, UV-5R V2+, UV-5RTP, BF-F8HP, and UV-5X are all listed separately and they are not interchangeable. The "BF-F8HP" entry is for the BF-F8HP; selecting "UV-5R" for a BF-F8HP will appear to work but produces flaky uploads. If you're unsure which variant you own, check the sticker on the back of the radio under the battery.

Click OK. CHIRP starts reading the radio's memory. You'll see a progress bar in CHIRP, and the radio's display will show "USB" or a flashing transmit icon. This is normal. The read takes one to two minutes on a UV-5R. Do not unplug the cable or touch the radio's keys during the read.

When the read completes, CHIRP shows your radio's current memory as a spreadsheet. Each row is a channel slot, numbered from 1. The columns include channel name, frequency, tone mode, CTCSS tone, duplex direction, offset, transmit power, and mode.

If your radio is fresh out of the box, most rows will be empty. If you've used it before or programmed manually, you'll see whatever's in there.

Before doing anything else, save the file. File → Save As, give it a name like UV5R_backup_2026-05-22.img, and put it somewhere you can find it. This is your insurance policy. If you mess up the next steps, you can restore from this file.

If you get "Error communicating with radio" or "Clone failed" at this stage, the cable or the model selection is wrong. Don't keep trying without changing something; skip to the troubleshooting section.

Step 4: Add Repeater and Simplex Frequencies

You have three ways to fill the channel table. The first one is the easiest, and it's the reason most people install CHIRP.

Option A: Import from RepeaterBook (Recommended)

In CHIRP, go to Radio → Import From Data Source → RepeaterBook → RepeaterBook Proximity Query. A dialog opens asking for your location and a search radius.

Enter your ZIP code. Set the radius to twenty-five or fifty miles. Choose the bands you want (2m and 70cm for most ham use). Choose the modes (FM analog covers everything you need on a UV-5R).

Click OK. CHIRP queries RepeaterBook and returns a list of repeaters within your radius. Each entry includes the input frequency, output frequency, offset, CTCSS tone if any, callsign, and location.

Select the repeaters you want to import. Hold Ctrl (or Cmd on Mac) and click to multi-select, or use Shift-click to select a range. Don't import every repeater that comes back; pick the ones in your immediate area plus a few in directions you might travel. Twenty repeaters is plenty for a starter list.

Click Import. CHIRP drops them into your channel table with everything filled in: frequency, offset direction, CTCSS tone, channel name. The frequencies are correct. The tones are current as of when RepeaterBook last verified them, which is usually within the past month.

This is the workflow that turned programming from a multi-evening project into a five-minute task.

Option B: Manual Entry

If RepeaterBook doesn't have what you need or you want to add a single simplex frequency, you can type entries directly into the spreadsheet.

For a simplex channel, you need three things: a name, the frequency in MHz, and the mode (FM for analog ham). Click the row you want, type the name in the Name column, type the frequency in the Frequency column (something like 146.520), and confirm the mode is FM. Set Duplex to "(none)" or simplex. Leave the tone fields alone unless your simplex group uses a tone.

For a repeater, you need the input frequency, the output frequency, and any CTCSS tone. The repeater's output frequency goes in the Frequency column (this is what your radio receives). The Duplex column gets a + or - depending on the offset direction. The Offset column gets the offset value: 0.600000 for a standard 2-meter repeater (600 kHz), 5.000000 for a standard 70cm repeater (5 MHz).

If the repeater requires a CTCSS tone, set Tone Mode to "Tone" and put the tone frequency in the Tone column (88.5, 110.9, 123.0, and so on). If it requires a tone to also receive (rare), use "TSQL" instead.

This is where the RepeaterBook import looks especially good in retrospect. CHIRP does this math for you.

Option C: Hybrid

The pragmatic workflow is to import from RepeaterBook, then clean up. Delete repeaters you'll never use, rename channels to something readable ("Denver-North 146.94 +600 88.5") instead of the autogenerated names, and reorder so your most-used channels are at the top of the list. Drag rows up and down to reorder.

While you're cleaning up, leave room for simplex channels. The 2-meter calling frequency (146.520), 70cm calling frequency (446.000), the GMRS simplex channels (if you also have a GMRS license), and your local club's simplex frequencies are all worth slots near the top.

Understanding Key Programming Concepts

If you're new to ham radio, some of the CHIRP columns will look like alphabet soup. A quick tour of the important ones:

Simplex vs. Repeater. A simplex channel uses the same frequency to transmit and receive. A repeater channel uses one frequency to transmit (to the repeater) and a different frequency to receive (from the repeater). The repeater listens on one frequency and rebroadcasts on another, typically with much more power than your handheld. That's how you can hit a repeater forty miles away with a 5-watt radio. The difference between the two frequencies is the offset.

Offset and Duplex. "Duplex" is the direction of the offset: plus (you transmit higher than you receive) or minus (you transmit lower). "Offset" is how much. For 2-meter repeaters in North America, the offset is almost always 600 kHz with the direction determined by the receive frequency. For 70-centimeter repeaters, the offset is almost always 5 MHz. CHIRP fills these in automatically when you import from RepeaterBook.

CTCSS Tones. Continuous Tone-Coded Squelch System is a sub-audible tone you transmit alongside your voice to tell the repeater it should rebroadcast. Most repeaters require a specific tone to "open" them; if you transmit without the tone, the repeater ignores you. Common tones are 88.5, 100.0, 103.5, 110.9, 123.0, and 141.3 Hz. Each repeater has its own. The RepeaterBook entries include the tone. If your handheld can hear a repeater but the repeater isn't repeating you, an incorrect tone is the first thing to check.

Power Levels. The UV-5R has high (5 W on most variants, 8 W on the BF-F8HP and UV-82HP) and low (1 W). Use low power on simplex with someone close by to save battery. Use high power on repeaters or when you need the range.

Wide vs. Narrow. FM bandwidth. Wide (25 kHz) is the standard for most ham 2m and 70cm repeaters. Narrow (12.5 kHz) is used on some commercial bands and a few ham repeaters. Match what the repeater uses; RepeaterBook tells you.

Mode. FM is what you want for analog ham repeaters and simplex. AM appears for the aviation band on RX-only. NFM is the narrow variant.

Once you've programmed twenty channels with RepeaterBook, the columns stop looking strange. You're filling out a spreadsheet, not configuring a router.

Step 5: Upload to the Radio and Test

With your channel table looking right, go to Radio → Upload To Radio. CHIRP asks you to confirm the radio model and serial port (it should remember from the download). Click OK.

CHIRP writes the modified memory block back to the radio. The progress bar runs through, the radio shows "USB" or the programming indicator, and after a minute or two the write completes. Don't unplug or power-cycle until the bar finishes.

When the upload is done, power-cycle the radio. Turn it off, count to three, turn it back on. The radio reboots into the new programming.

Rotate the channel knob (the inner ring on the dual knobs on top) to the first channel you programmed. The display should show the channel name and frequency. Listen for activity. Even on a quiet weekend, a popular repeater will have something every few minutes.

Before you transmit, double-check the frequency on the display matches what you intended. The radio's display is the source of truth, not what you typed in CHIRP. If the display shows 146.940 and you meant to program 146.940, you're good. If it shows something different, you've found a programming error worth tracking down before you key up.

When you do transmit for the first time, do it on simplex first if you can. Find another ham, agree to a frequency, key up briefly, and listen for them to come back. If your radio sends and receives correctly on simplex, the radio-side hardware is working. From there, repeater testing is just a matter of matching the right tone and offset.

If a programmed repeater doesn't repeat you, the most common causes (in order) are wrong CTCSS tone, wrong offset direction, and being out of range. Verify the tone on RepeaterBook, verify the offset polarity matches your geographic relationship to the repeater, and try a closer repeater.

Troubleshooting Common Problems

Most CHIRP issues fall into a small number of categories. Work through them in order.

Cable not detected at all. No COM port appears, no /dev/tty* entry. This is a driver problem 99 percent of the time. On Windows, look in Device Manager for a yellow warning under "Other devices" or a generic "USB Serial Controller" with no driver. Right-click and update the driver, or download the FTDI or Silicon Labs driver directly from the manufacturer. If you're using a cheap Prolific cable, the cloned chip may be rejected outright by current Prolific drivers. Replace the cable with an FTDI-based one. There is no software fix for a counterfeit chip.

CHIRP shows "Error communicating with radio" during download. The cable is detected but CHIRP can't talk to the radio. Causes, in order of likelihood: wrong COM port selected (try the others), wrong radio model selected (verify against the sticker on the back of the radio), cable not fully seated (push harder), radio off or in a strange mode (turn off and on, then retry). If you're connecting through a USB hub, plug directly into the computer instead.

Upload completes but channels don't work. First, did you save and re-read the radio to verify what CHIRP wrote? Do that. If CHIRP's view of the radio's memory now matches what you programmed, the radio itself is doing what you told it. If the repeater is silent: wrong tone, wrong offset direction, or the repeater is offline. If simplex is silent: nobody's calling on that frequency, or you have squelch set too high.

Radio shows the wrong frequency. Could be a typo in the CHIRP table, could be the wrong frequency in RepeaterBook. Re-check both. Could also be that you uploaded a UV-5R image to a UV-5R V2+ or vice versa; the variants store memory slightly differently and the wrong driver writes to the wrong addresses.

Memory full. The UV-5R holds 128 channels. The UV-5R Plus, K5 Plus, UV-82, and BF-F8HP also top out at 128. The 5RM, 5RM Pro, UV-5R Mini, and most newer variants hold 999. If CHIRP refuses to upload, you may have exceeded the radio's slot count. Delete channels you don't use.

CHIRP crashes during read or write. Update to the latest CHIRP-next build. Close other applications that use USB-serial connections (some IDEs, some flashing tools). Try a different USB port. If it crashes consistently, file a bug report on the CHIRP issue tracker; the developers usually triage them within a few days.

Best Practices

A few habits that pay off over time.

Keep a backup. Save your CHIRP file every time you change channels. Name it with the date. Drop a copy in cloud storage. When (not if) you reset your radio or buy a second one, you can re-flash the same channel plan in two minutes.

Name channels descriptively. "Denver-N 146.94 +600 88.5T" tells you what you're tuned to. "REPEATER1" doesn't. The Baofeng's display can show seven characters; use them.

Organize by use. Put your most-used local repeaters at the top (channels 1 through 10). Then simplex calling frequencies. Then out-of-town repeaters you might want on a road trip. Then emergency frequencies (NOAA weather, ARES nets). The Baofeng's channel knob makes scrolling tedious, so keep what you use close.

Update quarterly. Repeaters change tones, go offline, or move frequencies. Re-pull from RepeaterBook every few months to catch the changes.

Don't transmit on what you can't legally use. The UV-5R can transmit on a lot of frequencies, including many you're not licensed to use. Your Technician license covers 2m and 70cm ham (and a few HF segments). Public safety frequencies, business frequencies, and FRS/GMRS without a separate license are off-limits. Program receive-only entries for those if you want to monitor them, and lock yourself out of transmitting by setting them as RX-only in CHIRP. For more on legal use, see our Baofeng UV-5R legal guide.

Next Steps

Programming the radio is half the battle. The other half is using it. Find your local repeater's net schedule (most run a weekly check-in net), join the net, and announce yourself. Most local nets are friendly to new hams checking in for the first time.

If you haven't got your Technician license yet, our ham radio license guide covers the exam, the cost, and the timeline. If you're still shopping for a radio, our Baofeng UV-5R review and best Baofengs guide compare the lineup. For broader newcomer context, the best ham radios for beginners roundup covers the under-$50 segment in detail, and our CHIRP explainer goes deeper on what the software does and why it exists.

Baofeng UV-5R

The UV-5R is the radio this guide is built around. At $16, it's the cheapest way to get on the air, and it remains the most CHIRP-programmed radio in amateur service.

Operator at a desk with a laptop open and a Baofeng UV-5R in hand, comparing the channel display to the screen
Verify the radio's display against your CHIRP file after every upload. The radio is the source of truth, not the spreadsheet.
Baofeng UV-82HP

The UV-82HP is the dual-PTT variant of the UV-5R lineage. Same CHIRP workflow, slightly bigger chassis, an extra PTT button for two-channel use. If you want one radio for a club channel and a backup channel, it earns its $50.

The UV-5R Plus is the modern UV-5R refresh. Same memory layout in CHIRP, slightly better receiver, fresh firmware. It's worth the $20 premium over the base UV-5R if you're starting from scratch.


Frequently Asked Questions

Do I have to use CHIRP to program a Baofeng?

No. You can program a Baofeng entirely from the keypad. The menu numbers for the things you'll set (frequency, offset, tone, memory write) are listed in the manual. It is significantly slower and more error-prone than CHIRP, especially if you want to enter more than five or six channels. For one or two frequencies in a pinch, the keypad works. For a full channel plan, CHIRP is dramatically easier.

Can I program my Baofeng without a computer?

Yes, using keypad programming. There are also a few Android apps that talk to specific Baofeng variants over Bluetooth (the UV-7B and some newer models), but the cable-and-CHIRP workflow remains the standard. There's no usable iPhone option as of 2026.

Will programming the radio incorrectly damage it?

No. The worst case is that you upload channels that don't work and have to re-program. The radio itself isn't damaged by a bad programming file. You can also reset the radio to factory defaults from the menu (Menu 40 on most UV-5R variants) if you really make a mess.

Can I copy my Baofeng's channels to a Yaesu or another brand?

Partially. CHIRP can read your Baofeng, you can manually copy the channel data into a new file for another radio, and write that file to the second radio. CHIRP doesn't do brand-to-brand cloning automatically, but the spreadsheet view makes the manual copy mechanical. Frequencies and tones carry over cleanly. Brand-specific settings (Baofeng's busy-channel lockout, Yaesu's auto-range transponder) don't.

How often should I re-program?

Whenever you add a new repeater or update a tone. Most active hams refresh from RepeaterBook every few months. If you travel, re-program for the area you're visiting before you go.

Is it legal to program any frequency into the radio?

Programming any frequency is legal. Transmitting on frequencies you're not licensed for is not. The UV-5R can store and transmit on frequencies your license doesn't cover; that's your responsibility, not the radio's. For Baofeng-specific FCC notes, see our UV-5R legal guide.

What if I completely break my channel list?

Reset the radio (Menu 40 on UV-5R, slightly different on other variants), then reload your last CHIRP backup file. If you don't have a backup, you start over with an empty memory and rebuild. This is why you save a CHIRP file every time you make changes.

Can I program from my phone?

For most Baofeng models, no. A few newer variants (the UV-7B, some 5RM revisions) accept Bluetooth programming through a vendor app. The cable-and-CHIRP-on-a-laptop workflow is still the universal answer. Treat phone programming as a nice-to-have, not the primary plan.

Jess Harmon, founder of RadioRanked

Written by

Jess Harmon

General-class ham operator, POTA activator, and the data nerd behind RadioRanked. Denver, CO.

More about Jess →

More Articles