I wanted to know whether the best ham radio for beginners still works when the only computer in the house runs Linux. Everyone in the hobby points newcomers at the same $20 Baofeng and tells them to “just use CHIRP”. The radio is rarely the part that fails. What fails is the bargain programming cable with a cloned Prolific chip, a missing kernel module on a slim Ubuntu install, or a distro package of CHIRP so old it doesn’t know your radio exists.
So I’ve ranked four handhelds and two cables by how cleanly they program from a Linux box: Baofeng’s UV-5R and UV-5RM Plus, the Quansheng UV-K5 and the Yaesu FT-65R, plus a genuine FTDI cable and Yaesu’s own SCU-35. I ran the CHIRP side in November 2026 on an Ubuntu 24.04 LTS VM in my lab, with CHIRP built from its Git tree, and every command, dialog and error below comes from that box. No radio was plugged into it, so radio specs come from the makers and prices from Amazon that same day.
Shortlisting a first radio for CHIRP
If you only read one section, read this one. The cheapest radio that programs without a fight is a Baofeng with a genuine FTDI cable, and the one I’d hand to someone who never wants to think about firmware is the Yaesu. Here’s where I’d spend the money today:
- Best first radio: Baofeng UV-5RM Plus, about $36, check the live price
- Cheapest that works: Baofeng UV-5R, about $20
- Best for tinkerers: Quansheng UV-K5, about $28 to $37 depending on the listing
- Best build and warranty: Yaesu FT-65R, about $190 from third-party sellers
- The cable to buy with either Baofeng: BTECH PC03 FTDI cable, about $22
The BTECH UV-Pro isn’t on that list, even though it’s the radio Linux people ask me about because of its GPS and APRS. CHIRP doesn’t support it; BTECH programs it through its own UV Programmer and CSV import, so CHIRP on Linux isn’t part of the story. It is a fine second radio, but it is the wrong first one for this article.
Comparing the four radios side by side
The column that matters most for a Linux user is the last one, because the cable decides whether CHIRP ever sees the radio. Every value below comes from the maker’s page or manual, the CHIRP driver source, or the Amazon listing on 5 November 2026:
| Radio | Price band | Ham TX (US) | CHIRP model and driver | Programming plug and cable |
|---|---|---|---|---|
| Baofeng UV-5RM Plus | about $36 | 144-148, 420-450 MHz (US manual) | UV-5RM Plus (baofeng_uv17Pro.py) | Kenwood 2-pin, any K1 cable |
| Baofeng UV-5R | about $20 | 2 m and 70 cm | UV-5R (uv5r.py) | Kenwood 2-pin, any K1 cable |
| Quansheng UV-K5 | about $28 to $37 | per firmware | UV-K5 (+ others), experimental (uvk5.py) | Kenwood-style mic/speaker jack |
| Yaesu FT-65R | about $190 | 2 m and 70 cm | FT-65R (ft4.py) | Yaesu SCU-35 (Prolific PL2303) |
Both Baofengs share the Kenwood 2-pin plug and the UV-K5 uses a similar K-type jack, which is why one good cable covers most of this list. The Yaesu is the odd one out: it needs its own SCU-35, and that cable is a Prolific design, so it costs you a second purchase as well as a higher radio price.
Picking them, and what I couldn’t test
I started from CHIRP’s own driver tree rather than from review roundups, because a radio CHIRP doesn’t list is a radio you can’t program from Linux without someone else’s app. For each candidate I read the driver file, checked the model name the Download dialog actually shows, and matched it against the maker’s spec page or manual and a live Amazon listing. Then I did the Linux half for real on the VM: kernel drivers, serial permissions, the CHIRP install, and the dialogs right up to the point where a radio would answer.
What I couldn’t do was key a radio. The VM had no USB device passed through, so I cannot tell you how clean any of these sound on air or how long the batteries last. Where I quote power or battery numbers, they’re the maker’s. I also dropped the TIDRADIO TD-H3, which CHIRP supports, because I couldn’t find a maker page or FCC ID to check its specs against.
1. Baofeng UV-5RM Plus
This is the radio I’d buy a beginner today, as long as they install a current CHIRP rather than the one in their distro’s repository.

Baofeng lists the UV-5RM Plus at 10 W with a 2500 mAh battery and 999 channels, and the US version’s manual limits transmit to 144-148 and 420-450 MHz. It keeps the old UV-5R’s Kenwood 2-pin jack for programming, so the same FTDI cable works. The USB-C port is easy to misread: the manual describes it as a charging port for the battery, not a data port, so plugging a USB-C cable into your laptop will not show up as a serial device.
CHIRP drives it through baofeng_uv17Pro.py at 115200 baud, and the current tree has a model literally named “UV-5RM Plus” next to an older “5RM” entry, which is the one Baofeng’s own page tells you to pick. The two classes send different handshake bytes and I had no radio to test them against, so try “UV-5RM Plus” first and fall back to “5RM” if the download gets no answer. Two numbers don’t line up, and I’d rather you saw them. CHIRP’s driver offers High at 8 W against Baofeng’s 10 W claim, and Baofeng’s FCC certificate for ID 2AJGM-5RM covers the radio as a Part 15B scanning receiver, not as a transmitter.
- Who it’s for: a newly licensed ham who wants one radio, a bigger screen and a long battery
- Skip it if: you’re stuck on Ubuntu’s packaged CHIRP, which predates this model
- Price: about $36 single on Amazon, about $67 for the two-pack
2. Baofeng UV-5R
The UV-5R is the radio every forum thread starts with, and at about $20 it’s cheaper than the cable I’d pair it with.
CHIRP’s uv5r.py driver is one of its oldest, and it runs at 9600 baud over the same Kenwood 2-pin plug. The catch is the firmware churn. When I picked Vendor Baofeng and Model UV-5R in the Download dialog, CHIRP stopped me with a warning that “the manufacturer continues to release new versions of the firmware”. It would not carry on until I accepted the risk. That is honest: a UV-5R bought in 2026 may carry firmware the driver hasn’t seen, so download and save an image before you upload anything.
The listing I’d buy has over 10,500 reviews and ships from a third-party seller. Baofeng’s 2018 FCC certificate for ID 2AJGM-UV5R also lists it as a Part 15B scanning receiver for amateur use. Older UV-5R units carry a 2012 Part 90 grant instead, which is the grant the FCC’s 2018 citation against an importer was about.
- Who it’s for: a second radio for a car or go-bag, or a test unit for learning CHIRP
- Skip it if: you want a readable screen, because the UV-5RM Plus costs about $16 more and fixes that
- Price: about $20 on Amazon
3. Quansheng UV-K5
The UV-K5 is the radio for someone who reads driver source for fun, and I mean that as the main reason to buy it and the main reason not to.
Quansheng lists 200 channels, NOAA weather and AM/FM airband receive, but its product page gives no numeric power or frequency specs, so I won’t quote any. In CHIRP there’s exactly one entry, “UV-K5 (+ others)”, and it covers the K5(8), K5(99) and K6 too. The driver runs at 38400 baud through the Kenwood-style mic and speaker jack, and it only fully trusts a short list of stock firmware versions; anything else falls into a restricted mode. Community firmware such as egzumer’s has its own separate driver in the tree. The cheaper V3 listing I link may ship firmware that isn’t on that list yet, so be ready for the restricted mode and back up first.
Selecting it in the Download dialog popped the most blunt warning I saw all day:

Take the marked line literally and keep the image. Download the radio’s memory image first and store the file somewhere safe, because that image is how you get the factory calibration and settings back if a later upload goes wrong.
- Who it’s for: tinkerers who want airband receive and custom firmware
- Skip it if: you want a radio that just takes a channel list and never asks about firmware
- Price: about $28 for the V3 listing, about $37 for the original listing, which was nearly out of stock
4. Yaesu FT-65R
The FT-65R costs five times a Baofeng, and what you’re paying for is the Yaesu name and the three-year warranty Yaesu lists on its product page.
Yaesu lists three power levels (5, 2.5 and 0.5 W), a 1950 mAh SBR-25LI battery and the SCU-35 as its programming cable. CHIRP handles it with ft4.py, the same driver as the FT-4XR and FT-25R, at 9600 baud. The awkward part is the cable. CHIRP’s cable guide says the SCU-35 uses a Prolific PL2303 and runs on Linux with the stock driver, and the genuine one listed at about $42 with only a few left. The $22 clones I found say PL2303 in their own titles.
That’s the one case where I’d accept a Prolific cable, because it’s the maker’s design rather than a counterfeit hiding in a Baofeng-style plug. The Amazon listing I checked was a third-party seller at about $190 with 477 reviews, and it quoted a later delivery date rather than showing stock on hand, so check a ham radio dealer before you pay that.
- Who it’s for: someone who wants one radio to last, with a warranty they can use
- Skip it if: budget matters, because radio plus SCU-35 runs past $200
- Price: about $190 on Amazon, and about $42 for the Yaesu SCU-35
5. BTECH PC03 FTDI cable
Buy this cable before you buy the radio. It’s the one part of the kit that decides whether CHIRP on Linux is boring or a weekend lost.
BTECH says the PC03 uses a genuine FTDI FT232RL behind a Kenwood K1 2-pin plug, which is the jack on the UV-5R and the UV-5RM Plus. The UV-K5 also takes a K-type 2-pin plug, and plenty of generic K-plug cables list it, but BTECH doesn’t name Quansheng anywhere I could find, so treat the K5 fit as likely rather than promised and check the listing before you order. On Linux that chip lands on the in-kernel ftdi_sio driver with nothing to install, and it’s the chip CHIRP’s own cable guide recommends. There’s a USB-A version and a USB-C version at the same price, so pick by the laptop you’ll program from.
- Who it’s for: anyone with a UV-5R or UV-5RM Plus
- Skip it if: your radio is the Yaesu, which needs the SCU-35 instead
- Price: about $22 on Amazon
Telling an FTDI cable from a Prolific clone
Linux is the easy platform for bad cables, which surprised me. The trouble with cheap programming cables is mostly a Windows story. Prolific’s newer Windows drivers refuse the cloned PL2303HXA chips inside many cheap cables and print “PL2303HXA PHASED OUT SINCE 2012, PLEASE CONTACT YOUR SUPPLIER”, according to the long-running notes on Miklor’s Baofeng driver page. CHIRP’s cable guide says those same counterfeit cables “generally work ok with Linux”, and when I read the kernel’s pl2303.c I found no counterfeit check at all, only a refusal of chip types it can’t identify.
So why pay for FTDI? It is partly history. In 2014 FTDI’s own Windows driver rewrote the product ID of fake FTDI chips to 0000, as Ars Technica reported, and those cables then stopped working on Linux as well. A cable whose maker names the chip, and whose chip is the one CHIRP’s guide recommends, is cheap insurance against that kind of surprise.
Before checking any cable, make sure the drivers exist. My Ubuntu 24.04 VM ran the slim cloud kernel and didn’t have them, which is the first thing that broke:
modinfo ftdi_sio
The module simply wasn’t there:
modinfo: ERROR: Module ftdi_sio not found.
All four USB serial drivers live in the linux-modules-extra package for the running kernel, so install it. A desktop Ubuntu install usually has it already, and the command is harmless if it does:
sudo apt install -y linux-modules-extra-$(uname -r)
After that, modinfo found ftdi_sio, pl2303, ch341 and cp210x, and each one’s alias lines show the USB IDs it binds:

Those aliases are what you match against when you plug a cable in and run lsusb. On my VM it only listed the virtual root hub, because nothing was attached. On your machine, the line for the cable carries the vendor and product ID, and this table tells you what’s inside:
| lsusb ID | Chip | Linux driver | What it means for CHIRP |
|---|---|---|---|
| 0403:6001 | FTDI FT232R | ftdi_sio | The chip CHIRP’s cable guide recommends |
| 067b:2303 | Prolific PL2303 (or a clone) | pl2303 | Usually works on Linux; Windows drivers reject clones |
| 1a86:7523 | WCH CH340 | ch341 | Common in Baofeng-branded cables, works with the stock driver |
| 10c4:ea60 | Silicon Labs CP210x | cp210x | Works with the stock driver |
The IDs come from the linux-usb.org ID list and match the kernel headers. A cable whose ID doesn’t appear here at all is the one to return. So my rule is simple: a clone will probably work on Linux, but pay the extra for FTDI anyway, because the cable is the one part you can’t debug from the radio’s end. If you also fight console cables for switches, the same chip logic runs through my colleague’s FTDI vs Prolific vs CH340 console cable comparison, and the CH340 boards in the Arduino starter kit roundup use the same ch341 driver.
Getting CHIRP running on Ubuntu
Three things have to be true before CHIRP can talk to a radio: your user can open serial devices, CHIRP is new enough to know your model, and you pick the right port. I hit a snag on each one.
Joining the dialout group
On Ubuntu, serial devices belong to the dialout group with mode 660, and a fresh user isn’t in it. Skip this and CHIRP lists the port but can’t open it. Add yourself:
sudo usermod -aG dialout $USER
Log out and back in (a new SSH session did it for me), then confirm with id. The group list should now include 20(dialout):

The /dev/ttyS0 listing at the bottom shows the ownership CHIRP runs into: root dialout with crw-rw----, and your cable’s /dev/ttyUSB0 gets the same treatment when it appears.
Avoiding Ubuntu’s old CHIRP package
My first instinct was apt install chirp, and I’m glad I checked what it would install first:
apt-cache policy chirp
The candidate is a February 2024 build. I unpacked it next to the current tree and counted: 166 driver files against 201, and no “UV-5RM Plus” model at all, which would have made my top pick look unsupported:

New radios arrive in CHIRP every few weeks, so a two-year-old package is the wrong tool for a radio bought this year.
Installing CHIRP-next with pipx
The CHIRP Linux wiki now recommends its AppImage, with a pipx install of the dated wheel as the alternative. Both downloads live on CHIRP’s archive server, and from my lab VM that server answered with a Cloudflare challenge page instead of a file. If your browser gets through, grab the AppImage. If not, pipx can build CHIRP straight from its Git repository, which is what I did. Install the wxPython bindings and pipx from Ubuntu first:
sudo apt install -y python3-wxgtk4.0 pipx
The --system-site-packages flag matters here, because it lets CHIRP’s private environment use the wxPython you just installed instead of trying to compile it:
pipx install --system-site-packages git+https://github.com/kk7ds/chirp.git
It exposed three commands, chirp, chirpc and experttune, with a warning that ~/.local/bin isn’t on the PATH yet:

Fix the PATH, then open a new terminal:
pipx ensurepath
Now chirp starts the GUI. A Git install reports itself as “CHIRP py3dev” in ~/.chirp/debug.log rather than a dated build, which is expected. When a new radio needs a newer driver later, pipx reinstall chirp pulls the current tree again and keeps your settings in ~/.chirp/.
Downloading from the radio
Always read the radio before you write to it. Open Radio, then Download from radio, and fill in the dialog:

- 1Port
- 2Vendor
- 3Model
- 4OK
- Port: the cable’s device, usually
/dev/ttyUSB0 - Vendor: Baofeng, Quansheng or Yaesu
- Model: the exact model from the table above
- OK: accept the driver warning, follow the cable instructions and wait for the clone
The Port list was the part that tripped me up. CHIRP listed ttyS0 to ttyS31 (the motherboard’s legacy serial ports, none of which lead to a radio) and nothing else, because my VM had no USB cable. When a cable doesn’t show up, or you want a specific path, scroll to the bottom and use the custom entry:

Custom… opens an “Enter custom port:” prompt, and I pointed it at a fake serial pair I’d made with socat to see what CHIRP does when nothing answers. After about 12 seconds the Baofeng driver gave up:

That’s the error you’ll see with a real cable too. If /dev/ttyUSB0 appears and then vanishes on a CH340 cable, look at brltty, the braille display daemon, whose udev rules name the CH340’s 1a86:7523 ID. The brltty 6.6 package in 24.04 only matches that ID behind one specific hub (vendor 1a40, product 0101) in its udev rules, and it wasn’t even installed on my VM, so sudo apt remove brltty is the fix only when you actually see the port disappear. On a Baofeng the classic culprit isn’t the chip but a 2-pin plug that isn’t fully seated in the radio’s jack, so push it in firmly, check the radio is switched on, and retry before you blame drivers. The More Info button and the log at ~/.chirp/debug.log both name the exception (RadioNoContactLikelyK1 here), which is worth pasting into any forum post.
Once a download works, CHIRP’s stock configs save a lot of typing. File, Open Stock Config has ready-made lists such as US FRS and GMRS Channels and US MURS Channels that you can copy into the radio’s memory grid:

Treat those as reference rather than something to transmit on. Baofeng’s UV-5RM Plus manual calls using it on FRS, GMRS and MURS illegal, so keep those lists off any radio that lacks a Part 95 certification.
Checking the licence before you key up
Do you need a licence just to program one? No. Listening needs no licence either, but transmitting on the ham bands does, and Baofeng says so on its own UV-5R page. The rules around selling these radios also moved this autumn. The ARRL reported on 16 October 2026 that the FCC’s marketplace rules took effect on 13 October. eBay now allows gear that only works on amateur bands, and it restricts two-way VHF/UHF radios that can transmit outside them without FCC certification. The FCC did not change what a licensed ham may operate, so a radio you already own isn’t affected.
Two caveats stay with the buyer. Programming only ham channels in CHIRP doesn’t change what the hardware can transmit, and the certificates I found for both Baofengs cover them as Part 15B scanning receivers, not as transmitters. Any of these four can get caught by the new marketplace rules, so buy from a seller that still lists them and keep your own memories on the ham bands. If radio is a gateway into receive-only projects, the SDR dongles for Linux I wrote up last week need no licence at all, and a Raspberry Pi kit makes a decent always-on CHIRP or SDR box.
What I’d do differently
If I set this up again from scratch, I’d change the order I did things in:
- Check
modinfo ftdi_siobefore buying anything, not after - Order the FTDI cable with the radio, never an unnamed bundled one
- Skip
apt install chirpand go straight to the AppImage or pipx - Download and save the stock image before the first upload, on every radio
The one thing I’d still like to settle is the UV-5RM Plus power figure, where Baofeng’s 10 W and CHIRP’s 8 W High setting disagree. That takes a real radio and a watt meter, and it is the first test I’d run on one. For a sysadmin, the rest of this is familiar ground: a USB serial chip, a group permission and a Python app, with a two-way radio on the other end of the cable. If you already keep a network go-bag, a UV-5RM Plus and a PC03 fit in the side pocket.



