{"id":199,"date":"2017-01-13T16:31:24","date_gmt":"2017-01-13T21:31:24","guid":{"rendered":"http:\/\/www.k2dls.net\/blog\/?p=199"},"modified":"2017-01-17T10:37:49","modified_gmt":"2017-01-17T15:37:49","slug":"brandmeister-xtg-dialer","status":"publish","type":"post","link":"https:\/\/www.k2ie.net\/blog\/2017\/01\/13\/brandmeister-xtg-dialer\/","title":{"rendered":"Brandmeister XTG Dialer"},"content":{"rendered":"<p>I&#8217;ve long hoped for a way to make it easier to change DMR talkgroups.  I use a <a href=\"http:\/\/www.va2pv.com\/dv4mini\">DV4mini<\/a> and software installed on a Raspberry Pi 3 with a touch screen display.  Wouldn&#8217;t it be nice if I could key in a <a href=\"https:\/\/brandmeister.network\/\">Brandmeister<\/a> 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&#8217;s version of the dashboard allows connection to Brandmeister reflectors and to TG 4999, but doesn&#8217;t directly provide access to the XTGs.<\/p>\n<p>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 <a href=\"https:\/\/www.gtk.org\/\">GTK<\/a> provides support that I could use from within a <a href=\"https:\/\/www.python.org\/\">Python<\/a> program to create windows, buttons and so on in a Linux GUI environment.<\/p>\n<figure id=\"attachment_201\" aria-describedby=\"caption-attachment-201\" style=\"width: 800px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.k2dls.net\/blog\/wp-content\/uploads\/2017\/01\/Brandmeister-XTG-Dialer.png\" alt=\"\" width=\"800\" height=\"517\" class=\"size-full wp-image-201\" \/><figcaption id=\"caption-attachment-201\" class=\"wp-caption-text\">DV4mini control panel in the background with the Brandmeister XTG Dialer in the foreground.<\/figcaption><\/figure>\n<p>To further date myself, most Linux based programming that I&#8217;ve done in the past 20 years has been in <a href=\"https:\/\/www.perl.org\/\">Perl<\/a> or <a href=\"https:\/\/www.gnu.org\/software\/bash\/\">Bash<\/a>.  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&#8217;t going to help me.<\/p>\n<p>Thankfully, a fellow named Kris Occhipinti put together a treasure trove of <a href=\"https:\/\/www.youtube.com\/results?search_query=gtk+kris+occhipinti\">programming instruction videos<\/a>, 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 <a href=\"http:\/\/calleridfaker.com\/\">spoofing caller id<\/a>, but I could borrow what I needed.<\/p>\n<p>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&#8230;or you can just use a preset with a label like &#8220;USA&#8221; or &#8220;Tri State&#8221; instead of a number.  The app makes use of the published <a href=\"https:\/\/bm.pd0zry.nl\/index.php\/Extended_routing_for_DV4mini\">Brandmeister API<\/a>, which is very simple, uses HTTP and returns data in JSON format.  Python very nimbly handles it all.<\/p>\n<p>If you&#8217;re a licensed amateur radio operator, have a DV4mini, and are Linux proficient, please <a href=\"\/ftp\/bmxtg-v1.1.zip\">give it a try<\/a> and leave your feedback below.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;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&#8217;t it be nice if I could key in a Brandmeister extended talkgroup (XTG) number directly on the RPi, rather than use an Android &hellip; <a href=\"https:\/\/www.k2ie.net\/blog\/2017\/01\/13\/brandmeister-xtg-dialer\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Brandmeister XTG Dialer&#8221;<\/span><\/a><\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,6],"tags":[14,16,15,17,13,18],"class_list":["post-199","post","type-post","status-publish","format-standard","hentry","category-radio","category-technology","tag-amateur-radio","tag-brandmeister","tag-dmr","tag-dv4mini","tag-ham-radio","tag-raspberry-pi"],"_links":{"self":[{"href":"https:\/\/www.k2ie.net\/blog\/wp-json\/wp\/v2\/posts\/199","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.k2ie.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.k2ie.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.k2ie.net\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.k2ie.net\/blog\/wp-json\/wp\/v2\/comments?post=199"}],"version-history":[{"count":13,"href":"https:\/\/www.k2ie.net\/blog\/wp-json\/wp\/v2\/posts\/199\/revisions"}],"predecessor-version":[{"id":224,"href":"https:\/\/www.k2ie.net\/blog\/wp-json\/wp\/v2\/posts\/199\/revisions\/224"}],"wp:attachment":[{"href":"https:\/\/www.k2ie.net\/blog\/wp-json\/wp\/v2\/media?parent=199"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.k2ie.net\/blog\/wp-json\/wp\/v2\/categories?post=199"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.k2ie.net\/blog\/wp-json\/wp\/v2\/tags?post=199"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}