Baofeng UV-3R+ Repeater Offset Broken

I was recently in search of a small, low power HT that has dual band (2m/70cm) capability. A bit of interwebs reading pointed me in the direction of the now discontinued Baofeng UV-3R+. For less than $25 each, including slow boat shipping from China, I grabbed a pair from Ali Express during the recent 11.11 sales.

The form factor of the radio is just right for my XYL’s purse, so she will carry it as an emergency radio. She also has a tiny Puxing PX2R purchased years ago via eBay, but it is UHF only and we wanted dual band capability so that she could hit KC2GOW’s new machine near her work QTH.

However, programming via software was quite difficult. It turned out that both the native software and CHIRP fail to adequately handle repeater offsets. A bit of reading came up with a couple of references to using .006 MHz rather than .600 as the VHF offset and then using .05 rather than 5.0 as the UHF offset. As you can see, the value has been shifted two decimal places to the left. Anyway, this is how it works with CHIRP.

Even worse is Baofeng’s own software, which requires entry of separate transmit and receive frequencies, rather than an offset. So, for a repeater which transmits of 146.76 and receives on 146.16, the Baofeng software needs a transmit frequency of (146.76 – .006) or 146.754 MHz.

OK, the radio is cheap. It is worth what I paid. But it is no Yaesu or even Alinco. Caveat amateur!

November DV4mini Image Update

The K2DLS DV4mini image for the Raspberry Pi 2 and 3 (only!) has been updated to include the October 12 release of the DV4mini Control Panel.  This includes XRF through letter Z and REF up to 100 for the D-Star users.  The image will fit nicely on an 8 GB SD Card.

BMXTG 1.3 released on Github

I’ve added BMXTG to Github and updated it to version 1.3.  File locations have been formalized for consistency and I’ve created a .deb package for easier install.

Brandmeister XTG Dialer v1.3 by K2DLS

If you have a running DV4mini build and want to add BMXTG, grab the .deb file from the link in the README.

To install:

sudo dpkg -i bmxtg-1.3.deb

After installing, copy the desktop file to your Desktop directory.  This will make the desktop icon available.

cp /usr/local/share/bmxtg/bmxtg.desktop ~/Desktop/

 

Running Brandmeister XTG Dialer

[Update January 17, 2017:

The Brandmeister XTG Dialer (bmxtg.py) is now easier to configure. The program itself no longer needs to be edited to get it up and running. All configuration items have been moved to separate files. Download version 1.1 and be sure to read and understand the README file before you begin.]

I’ve received some inquiries on how to get the Brandmeister XTG Dialer script running. Assumptions here are that you can navigate your way around Linux, you know how to use a text editor, and you can look at the python program and figure out how to make a simple change.

1 — Copy the bmxtg.py program file along with the three configuration files (talkgroups.com, buttons.conf and masters.conf) to your home directory. It doesn’t even need to be on the same computer that your dv4mini is connected to, as long as you are behind the same NAT router.

2 — Figure out the URL for the BM Master that you are currently connected to. To do this look at the Brandmeister Masters page. Looks through the list, locate your master, click the status button and note the URL host portion before the first slash. It could be a name or it could be an IP address.

3 — Edit the bmxtg.py program and look for the bm_master assignment statement. There are currently two, with one of them commented out. You’ll need the bm_master variable to point to the master that your dv4mini is currently connected to.

For example, master 3021 is in Canada. Clicking the status button returns http://158.69.203.89/status/status.htm. The line would read:

bm_master = '158.69.204.89'

Be sure that only one bm_master assginment statement is active. You can leave the others there but comment them out by starting the line with a #.

2 — Carefully read and follow the instructions in the README file.

Brandmeister XTG Dialer

I’ve long hoped for a way to make it easier to change DMR talkgroups. I use a DV4mini and software installed on a Raspberry Pi 3 with a touch screen display. Wouldn’t it be nice if I could key in a Brandmeister extended talkgroup (XTG) number directly on the RPi, rather than use an Android app or a web browser? The now defunct DV4MF2 dashboard was a step in the right direction with XTG support, but its talkgroup list is now hopelessly out of date. Wireless Holding’s version of the dashboard allows connection to Brandmeister reflectors and to TG 4999, but doesn’t directly provide access to the XTGs.

So in the true Amateur Radio spirit, I built my own solution. Long ago, I made my living as a software developer. It was so long ago that we were called computer programmers. Nonetheless, I did some research and found that GTK provides support that I could use from within a Python program to create windows, buttons and so on in a Linux GUI environment.

DV4mini control panel in the background with the Brandmeister XTG Dialer in the foreground.

To further date myself, most Linux based programming that I’ve done in the past 20 years has been in Perl or Bash. I have recently gotten involved in implementing the Open Source Fail2ban host IPS system, which uses Python regular expressions. I have become slightly proficient with regexes, but knowing how to use them to match text in logs wasn’t going to help me.

Thankfully, a fellow named Kris Occhipinti put together a treasure trove of programming instruction videos, some of them covering Python, GTK, and specifically how to create a keypad. His intent in some of the videos was to create an app for spoofing caller id, but I could borrow what I needed.

What I came up with is a Python/GTK app that opens two windows. One window is a dialer keypad and the other window is a memory present keypad. A Brandmeister TGID can be keyed in from a keyboard, pressed on a touchscreen, clicked with a mouse…or you can just use a preset with a label like “USA” or “Tri State” instead of a number. The app makes use of the published Brandmeister API, which is very simple, uses HTTP and returns data in JSON format. Python very nimbly handles it all.

If you’re a licensed amateur radio operator, have a DV4mini, and are Linux proficient, please give it a try and leave your feedback below.