{"id":643,"date":"2025-03-21T16:06:52","date_gmt":"2025-03-21T21:06:52","guid":{"rendered":"https:\/\/www.we8chz.org\/?p=643"},"modified":"2025-04-15T10:41:24","modified_gmt":"2025-04-15T15:41:24","slug":"installing-dvswitch-bridge-on-allstarlink3","status":"publish","type":"post","link":"https:\/\/www.we8chz.org\/?p=643","title":{"rendered":"Easily Power Up Your AllStarLink3 with a DVSwitch Bridge"},"content":{"rendered":"\n<p>Here is a rundown on how to install DVSwitch bridge on your AllStarLink3 node to give you access to Brandmeister DMR, TGIF DMR, Yaesu System Fusion (YSF), D-Star, and P25. We&#8217;re assuming you are familiar with Linux Command Line Interface (CLI), and already have a functioning node running ASL3. You should also have a DMR ID from radioID.net and a Brandmeister account from Brandmeister. If you do not have a DMR ID or Brandmeister account. Sign up for them now before going any further. Optionally you can also sign up for a TGIF DMR account, if wanted.<\/p>\n\n\n\n<h6 class=\"wp-block-heading\">Starting the Process<\/h6>\n\n\n\n<p>To start, you&#8217;ll open a CLI on you ASL3 node and give yourself root (You don&#8217;t <em>have<\/em> to give yourself root, but will need to <em>sudo<\/em> most every command from here on out).<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>sudo -s<\/code><\/pre>\n\n\n\n<p style=\"border-style:none;border-width:0px\">Then change directories to Asterisk.<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>cd \/etc\/asterisk<\/code><\/pre>\n\n\n\n<p style=\"border-style:none;border-width:0px\">Check and see if Asterisk is running, if it is (it should be) shut it down and verify it&#8217;s status.<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>systemctl status asterisk\nsystemctl stop asterisk\nsystemctl status asterisk<\/code><\/pre>\n\n\n\n<h6 class=\"wp-block-heading\">Adding the Bridged Node<\/h6>\n\n\n\n<p>Now you&#8217;re going to edit your repeater config file to add a private node named 1999 (This is assuming you don&#8217;t have a private node named 1999 already for some reason, if so, choose a different node number from 1001 to 1999). This node will be the bridge from your ASL3 server to the DVSwitch server. You&#8217;ll do this by copying the stanza below for the &#8220;1999&#8221; node, which is also located on the <a href=\"https:\/\/dvswitch.groups.io\/g\/allstarlink\/wiki\/9671\" data-type=\"link\" data-id=\"https:\/\/dvswitch.groups.io\/g\/allstarlink\/wiki\/9671\">DVSwitch Groups.IO wiki<\/a>, to your <strong>rpt.conf<\/strong> file. You can get at the rept.conf from the <strong>asl-menu<\/strong> in the <strong>Expert Configuration<\/strong> menu or via CLI.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"873\" height=\"418\" src=\"https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image.png\" alt=\"\" class=\"wp-image-646\" style=\"width:656px;height:auto\" srcset=\"https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image.png 873w, https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image-300x144.png 300w, https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image-768x368.png 768w\" sizes=\"auto, (max-width: 873px) 100vw, 873px\" \/><\/figure>\n\n\n\n<p>Copy and paste the below code in the the start of your <strong>rpt.conf<\/strong> file: <\/p>\n\n\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>&#91;1999]\nrxchannel = USRP\/127.0.0.1:34001:32001  ; Use the USRP channel driver. Must be enabled in modules.conf\n\t\t\t\t\t; 127.0.0.1 = IP of the target application\n\t\t\t\t\t; 34001 = UDP port the target application is listening on\n\t\t\t\t\t; 32001 = UDP port ASL is listening on\n\nduplex = 0\t\t\t\t; 0 = Half duplex with no telemetry tones or hang time. Ah, but Allison STILL talks!\n\nhangtime = 0\t\t\t\t; squelch tail hang time 0\nalthangtime = 0\t\t\t\t; longer squelch tail hang time 0\n\nholdofftelem = 1\t\t\t; Hold off all telemetry when signal is present on receiver or from connected nodes\n\t\t\t\t\t; except when an ID needs to be done and there is a signal coming from a connected node.\n\ntelemdefault = 0\t\t\t; 0 = telemetry output off. Don't send Allison to DMR !!!!!!!!!!!!!!!!! Trust me.\n\ntelemdynamic = 0\t\t\t; 0 = disallow users to change the local telemetry setting with a COP command,\n\nlinktolink = no\t\t\t\t; disables forcing physical half-duplex operation of main repeater while\n\t\t\t\t\t; still keeping half-duplex semantics (optional)\n\nnounkeyct = 1\t\t\t\t; Set to a 1 to eliminate courtesy tones and associated delays.\n\ntotime = 180000\t\t\t\t; transmit time-out time (in ms) (optional, default 3 minutes 180000 ms)\n\n; idrecording = |ie\t\t\t; id recording or morse string see http:\/\/ohnosec.org\/drupal\/node\/87\n; idtalkover = |ie\t\t\t; Talkover ID (optional) default is none see http:\/\/ohnosec.org\/drupal\/node\/129<\/code><\/pre>\n<\/div>\n\n\n\n<p>Now that the private node has been added to your <strong>rpt.conf<\/strong> file, you&#8217;ll add the node configuration in the <strong>[nodes]<\/strong> stanza further down in the <strong>rpt.conf<\/strong> file.<\/p>\n\n\n\n<p>Add the line in bold shown below:<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>&#91;nodes]\n; Note, if you are using automatic update for allstar link nodes,\n; no allstar link nodes should be defined here. Only place a definition\n; for your local nodes, and private (off of allstar link) nodes here.\n\n&lt;your main node#&gt; = radio@127.0.0.1:4569\/&lt;your main node #&gt;,NONE   ; This must be changed to your node number\n<strong>1999 = radio@127.0.0.1:4569\/1999,NONE<\/strong><\/code><\/pre>\n\n\n\n<p>Exit rept.conf, you&#8217;re all finished in that file.<\/p>\n\n\n\n<p>The next step is to modify the USRP channel driver to feed audio from one node to the other and vice versa. You&#8217;ll do this by editing the <strong>modules.conf<\/strong> file, which is accessible from the <strong>asl-menu<\/strong> or via CLI.<\/p>\n\n\n\n<p>You&#8217;ll be changing the &#8220;noload =&gt; chan_urp.so&#8221; line to &#8220;load =&gt; chan_usrp.so&#8221;. It will looks like this in the <strong>modules.conf<\/strong> file:<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>load =&gt; chan_usrp.so ;                        GNU Radio interface USRP Channel Driver<\/code><\/pre>\n\n\n\n<p>You can run asterisk in the foreground and check to see both nodes are active and up and running by typing:<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>asterisk -c<\/code><\/pre>\n\n\n\n<p>You should see a couple lines stating the nodes are active:<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>NOTICE&#91;877]: app_rpt.c:22184 rpt_master: Normal Repeater Init  1999\nNOTICE&#91;877]: app_rpt.c:22184 rpt_master: Normal Repeater Init  &lt;your main node #&gt;<\/code><\/pre>\n\n\n\n<p>Hit CTRL-C to exit asterisk and go back to the CLI.<\/p>\n\n\n\n<p>Next, add the 1999 node to your <strong>extensions.conf<\/strong> file:<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>&#91;globals]\nHOMENPA = 999   ; change this to your Area Code\nNODE = 2100     ; change this to your node number\n<strong>NODE1 = 1999    ; This is the private node<\/strong>\n\n&#91;default]\nexten =&gt; i,1,Hangup\n\n&#91;radio-secure]\nexten =&gt; ${NODE},1,rpt,${NODE}\n<strong>exten =&gt; ${NODE1},1,rpt,${NODE1}<\/strong><\/code><\/pre>\n\n\n\n<p>Run asterisk in the foreground again by using the command:<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>asterisk -c<\/code><\/pre>\n\n\n\n<p>Then while in asterisk, type:<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>rpt cmd &lt;your main node #&gt; ilink 3 1999<\/code><\/pre>\n\n\n\n<p>This will link the two nodes in transceive mode. (You can also do this in Allmon or Supermon or Allscan if you want.)<\/p>\n\n\n\n<p>Checking the stats on your main node should show you that they are connected together.  You do this by typing &#8220;rpt stats &lt;your main node #&gt; in the asterisk CLI.<\/p>\n\n\n\n<p>Here is mine, for example. Note the bolded line showing it is connected to 1999.<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>node64393*CLI&gt; rpt stats 64393\n\n************************ NODE 64393 STATISTICS *************************\n\nSelected system state............................: 0\nSignal on input..................................: NO\nSystem...........................................: ENABLED\nParrot Mode......................................: DISABLED\nScheduler........................................: ENABLED\nTail Time........................................: STANDARD\nTime out timer...................................: ENABLED\nIncoming connections.............................: ENABLED\nTime out timer state.............................: RESET\nTime outs since system initialization............: 0\nIdentifier state.................................: QUEUED FOR CLEANUP\nKerchunks today..................................: 0\nKerchunks since system initialization............: 0\nKeyups today.....................................: 434\nKeyups since system initialization...............: 9781\nDTMF commands today..............................: 0\nDTMF commands since system initialization........: 1\nLast DTMF command executed.......................: 31999\nTX time today....................................: 01:41:49:803\nTX time since system initialization..............: 19:05:15:235\nUptime...........................................: 73:27:03\n<strong>Nodes currently connected to us..................: 1999<\/strong>\nAutopatch........................................: ENABLED\nAutopatch state..................................: DOWN\nAutopatch called number..........................: N\/A\nReverse patch\/IAXRPT connected...................: DOWN\nUser linking commands............................: ENABLED\nUser functions...................................: ENABLED\n\n    -- Text Message From 1999:\u0012\/g$\u0013\nnode64393*CLI&gt;<\/code><\/pre>\n\n\n\n<h6 class=\"wp-block-heading\">Installing and Editing the DVSwitch Files<\/h6>\n\n\n\n<p>Now you will install the DVSwitch program. Run an update first from the Linux CLI (not the asterisk CLI).<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>apt-get update<\/code><\/pre>\n\n\n\n<p>Check for errors. You don&#8217;t want to see any. If you&#8217;re good, then isntall DVSwitch next.<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>apt--get install dvswitch -y<\/code><\/pre>\n\n\n\n<p>You may need to answer some prompts with &#8220;yes&#8221; by hitting &#8220;y&#8221;. Make sure you&#8217;re OK to do so. If all goes well by the end of it you&#8217;ll have the MMDVM bridge, analog bridge and md380-emu modules installed on your node. You can check to see if the MMDVM bridge is loaded and will start at boot by entering the command::<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>systemctl status mmdvm_bridge<\/code><\/pre>\n\n\n\n<p>It should output something like this:<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>root@repeater:\/etc\/asterisk# <strong>systemctl status mmdvm_bridge<\/strong>\n\u25cf mmdvm_bridge.service - MMDVM_Bridge Service\n   Loaded: loaded (\/lib\/systemd\/system\/mmdvm_bridge.service; enabled; vendor preset: enabled)\n   Active: inactive (dead)<\/code><\/pre>\n\n\n\n<p>This shows it&#8217;s loaded and will start at boot, but is not active right now.<\/p>\n\n\n\n<p>Move over to the MMDVM Bridge directory by entering the command:<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>cd \/opt\/MMDVM_Bridge<\/code><\/pre>\n\n\n\n<p>Edit the <strong>MMDVM_Bridge.ini<\/strong> file to add your callsign and DMR ID.<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>nano \/opt\/MMDVM_Bridge\/MMDVM_Bridge.ini<\/code><\/pre>\n\n\n\n<p>And change the two spots in the <strong>[General]<\/strong> stanza to your callsign and DMR ID.<\/p>\n\n\n\n<p>IMPORTANT NOTE: You&#8217;re going to want to add a two digit SSID to the end of your DMR ID. It can be any two digit number between 01 and 99. This will make things much easier on you later when you want to control static talkgroups from Brandmeister. So if your DMR ID is 123456 then you would enter 123456<strong>01<\/strong>.<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>&#91;General]\nCallsign=<strong>&lt;your callsign&gt;<\/strong>\nId=<strong>&lt;Your DMR ID + two digit SSID&gt;<\/strong>\nTimeout=180\nDuplex=0<\/code><\/pre>\n\n\n\n<p>Next, while still in the <strong>MMDVM_Bridge.ini <\/strong>you&#8217;ll want to enable DMR mode in the <strong>[DMR]<\/strong> section by changing the &#8220;0&#8221; to a &#8220;1&#8221;:<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>&#91;DMR]\nEnable=<strong>1<\/strong>\nColorCode=1\nEmbeddedLCOnly=1\nDumpTAData=0<\/code><\/pre>\n\n\n\n<p>You can also enable the other modes you want to use, like D-Star, P25, etc in the file. We&#8217;re not going to cover D-Star or P25, but turning them on doesn&#8217;t effect you now.<\/p>\n\n\n\n<h6 class=\"wp-block-heading\">Setting up BrandMeister<\/h6>\n\n\n\n<p>And then moving to the <strong>[DMR Network] <\/strong>stanza, set your BrandMeister Master server up. My server is <strong>3104.repeater.net<\/strong>, but based on your location it may be different. You&#8217;ll want to look it up and make sure you&#8217;re connecting to the right one. You&#8217;ll also need your <strong>hotspot password<\/strong> from Brandmeister for this. It can be found or changed on the &#8220;<strong>SelfCare<\/strong>&#8221; page on your Brandmeister account.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full has-custom-border\"><img loading=\"lazy\" decoding=\"async\" width=\"671\" height=\"171\" src=\"https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image-2.png\" alt=\"\" class=\"wp-image-659\" style=\"border-width:1px\" srcset=\"https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image-2.png 671w, https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image-2-300x76.png 300w\" sizes=\"auto, (max-width: 671px) 100vw, 671px\" \/><figcaption class=\"wp-element-caption\">The Hotspot Security setting box in BrandMeister SelfCare<\/figcaption><\/figure>\n\n\n\n<p>This will set you up for BrandMeister&#8217;s network. You can switch to TGIF later if you want or on the fly. This is covered later on in the article here.<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>&#91;DMR Network]\nEnable=1\nAddress=<strong>3104.repeater.net<\/strong> (or whatever server you're supposed to connect via)\nPort=62031\nJitter=360\nLocal=62032\nPassword=<strong>&lt;your Brandmeister hotspot password&gt;<\/strong>\nSlot1=0\nSlot2=1\nDebug=0<\/code><\/pre>\n\n\n\n<p>Save your edits and exit back to the CLI. You should be able to run the MMDVM Bridge and see if everything is looking good with things by entering the command:<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>.\/MMDVM_Bridge MMDVM_Bridge.ini<\/code><\/pre>\n\n\n\n<p>You&#8217;ll see an output that looks like this below. Note the <strong>highlighted<\/strong> lines and ensure they are correct.<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>levi@node64393:\/opt\/MMDVM_Bridge $ sudo .\/MMDVM_Bridge MMDVM_Bridge.ini\nI: 2025-03-21 19:53:05.259 MMDVM_Bridge:\nI: 2025-03-21 19:53:05.259 Portions Copyright (C) 2018, 2019, 2020, 2021 DVSwitch, INAD.\nI: 2025-03-21 19:53:05.259 Hacks by Mike N4IRR and Steve N4IRS\nI: 2025-03-21 19:53:05.259 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\nI: 2025-03-21 19:53:05.259 This software is for use on amateur radio networks only,\nI: 2025-03-21 19:53:05.259 it is to be used for educational purposes only. Its use on\nI: 2025-03-21 19:53:05.259 commercial networks is strictly prohibited.\nI: 2025-03-21 19:53:05.259 Copyright(C) 2015-2018 by Jonathan Naylor, G4KLX and others\nM: 2025-03-21 19:53:05.259 MMDVM_Bridge-20210520_V1.6.8 is starting\nM: 2025-03-21 19:53:05.259 Built 07:24:51 May 28 2021 (GitID #3cfcf23)\nI: 2025-03-21 19:53:05.259 General Parameters\n<strong>I: 2025-03-21 19:53:05.259     Callsign: N8GMZ\nI: 2025-03-21 19:53:05.259     Id: 320601211<\/strong>\nI: 2025-03-21 19:53:05.259     Duplex: no\nI: 2025-03-21 19:53:05.259     Timeout: 180s\nI: 2025-03-21 19:53:05.259     D-Star: enabled\n<strong>I: 2025-03-21 19:53:05.259     DMR: enabled<\/strong>\nI: 2025-03-21 19:53:05.259     YSF: enabled\nI: 2025-03-21 19:53:05.259     P25: enabled\nI: 2025-03-21 19:53:05.259     NXDN: enabled\nI: 2025-03-21 19:53:05.259 Modem Parameters\nI: 2025-03-21 19:53:05.259     Port: \/dev\/null\nI: 2025-03-21 19:53:05.259     RX Invert: no\nI: 2025-03-21 19:53:05.259     TX Invert: no\nI: 2025-03-21 19:53:05.259     PTT Invert: no\nI: 2025-03-21 19:53:05.260     TX Delay: 100ms\nI: 2025-03-21 19:53:05.260     RX Offset: 0Hz\nI: 2025-03-21 19:53:05.260     TX Offset: 0Hz\nI: 2025-03-21 19:53:05.260     RX DC Offset: 0\nI: 2025-03-21 19:53:05.260     TX DC Offset: 0\nI: 2025-03-21 19:53:05.260     RF Level: 100.0%\nI: 2025-03-21 19:53:05.260     DMR Delay: 0 (0.0ms)\nI: 2025-03-21 19:53:05.260     RX Level: 50.0%\nI: 2025-03-21 19:53:05.260     CW Id TX Level: 50.0%\nI: 2025-03-21 19:53:05.260     D-Star TX Level: 50.0%\nI: 2025-03-21 19:53:05.260     DMR TX Level: 50.0%\nI: 2025-03-21 19:53:05.260     YSF TX Level: 50.0%\nI: 2025-03-21 19:53:05.260     P25 TX Level: 50.0%\nI: 2025-03-21 19:53:05.260     NXDN TX Level: 50.0%\nI: 2025-03-21 19:53:05.260     RX Frequency: 433800000Hz (433800000Hz)\nI: 2025-03-21 19:53:05.260     TX Frequency: 433800000Hz (433800000Hz)\nM: 2025-03-21 19:53:05.260 Opening the MMDVM\nI: 2025-03-21 19:53:05.260 Display Parameters\nI: 2025-03-21 19:53:05.260     Type:\nI: 2025-03-21 19:53:05.260 D-Star Network Parameters\nI: 2025-03-21 19:53:05.260     Gateway Address: 127.0.0.1\nI: 2025-03-21 19:53:05.260     Gateway Port: 20010\nI: 2025-03-21 19:53:05.260     Local Port: 20011\nI: 2025-03-21 19:53:05.260     Mode Hang: 3s\nM: 2025-03-21 19:53:05.260 Opening D-Star network connection\nI: 2025-03-21 19:53:05.261 DMR Network Parameters\n<strong>I: 2025-03-21 19:53:05.261     Address: 3104.repeater.net\nI: 2025-03-21 19:53:05.261     Port: 62031<\/strong>\nI: 2025-03-21 19:53:05.261     Local: 62032\nI: 2025-03-21 19:53:05.261     Jitter: 320ms\nI: 2025-03-21 19:53:05.261     Slot 1: disabled\nI: 2025-03-21 19:53:05.261     Slot 2: enabled\nI: 2025-03-21 19:53:05.261     Mode Hang: 3s\nI: 2025-03-21 19:53:05.402 Info Parameters\nI: 2025-03-21 19:53:05.402     Callsign: N8GMZ\nI: 2025-03-21 19:53:05.402     RX Frequency: 433800000Hz\nI: 2025-03-21 19:53:05.402     TX Frequency: 433800000Hz\nI: 2025-03-21 19:53:05.402     Power: 1W\nI: 2025-03-21 19:53:05.402     Latitude: 43.071602deg N\nI: 2025-03-21 19:53:05.402     Longitude: -86.211853deg E\nI: 2025-03-21 19:53:05.402     Height: 500m\nI: 2025-03-21 19:53:05.402     Location: \"Spring Lake MI\"\nI: 2025-03-21 19:53:05.402     Description: \"ASL_DVS_Bridge\"\nI: 2025-03-21 19:53:05.402     URL: \"https:\/\/W8CSO.org\"\nM: 2025-03-21 19:53:05.402 DMR, Opening DMR Network\nI: 2025-03-21 19:53:05.402 System Fusion Network Parameters\nI: 2025-03-21 19:53:05.402     Local Address: 0\nI: 2025-03-21 19:53:05.402     Local Port: 3200\nI: 2025-03-21 19:53:05.403     Gateway Address: 127.0.0.1\nI: 2025-03-21 19:53:05.403     Gateway Port: 4200\nI: 2025-03-21 19:53:05.403     Mode Hang: 3s\nM: 2025-03-21 19:53:05.403 Opening YSF network connection\nI: 2025-03-21 19:53:05.403 P25 Network Parameters\nI: 2025-03-21 19:53:05.403     Gateway Address: 127.0.0.1\nI: 2025-03-21 19:53:05.403     Gateway Port: 42020\nI: 2025-03-21 19:53:05.403     Local Port: 32010\nI: 2025-03-21 19:53:05.403     Mode Hang: 3s\nM: 2025-03-21 19:53:05.403 P25, Opening INI file: DVSwitch.ini\nM: 2025-03-21 19:53:05.403 P25, Setting &#91;P25] address -&gt; 127.0.0.1\nM: 2025-03-21 19:53:05.403 P25, Setting &#91;P25] txPort -&gt; 34100\nM: 2025-03-21 19:53:05.403 P25, Setting &#91;P25] rxPort -&gt; 34103\nM: 2025-03-21 19:53:05.403 P25, Setting &#91;P25] slot -&gt; 2\nM: 2025-03-21 19:53:05.403 P25, Setting &#91;P25] RemotePort -&gt; 6074\n<strong>M: 2025-03-21 19:53:05.403 MMDVM_Bridge-20180423 is running<\/strong>\nI: 2025-03-21 19:53:05.403 Started the DMR Id lookup reload thread<strong>\nD: 2025-03-21 19:53:05.403 DMR, Sending authorisation\nD: 2025-03-21 19:53:05.403 DMR, Sending configuration\nM: 2025-03-21 19:53:05.403 DMR, Logged into the master successfully<\/strong><\/code><\/pre>\n\n\n\n<p>This verifies your callsign is going through into BrandMeister OK. It also verifies your port and IP with the master server you entered earlier.<br><br>There is also a stanza in the <strong>DVSwitch.ini<\/strong> file that you can enter your BrandMeister info into, called<strong> [STFU]<\/strong>. This is a newer thing, and is in response to BM&#8217;s desire for all software developers to use ODMRTP to connect to BM. I&#8217;m assuming it didn&#8217;t sit well with the DVSwitch devs, because they named the module to handle it &#8220;STFU&#8221; for some reason that I can only assume is a tongue in cheek response. We&#8217;re getting a little deep into the weeds here but let&#8217;s set it up anyways. We&#8217;re not going to use it for now.<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>cd \/opt\/MMDVM_Bridge\nnano DVSwitch.ini<\/code><\/pre>\n\n\n\n<p>Then scroll down to the bottom and set up the <strong>[STFU]<\/strong> stanza, changing the highlighted lines to <strong><em>your<\/em><\/strong> information (IMPORTANT NOTE: Even though it says to enter your DMR ID + SSID, you are going to ONLY enter your DMR ID, seven digits, and not the 9 digit DMR ID + SSID like it says to in the comments):<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>; Configure the BrandMeister connection\n; Simple Terminal Feature Update\n; Audio format is AMBE 72 bit\n&#91;STFU]                          ; Brandmeister Open DMR Terminal (ODMRT) Protocol\nBMAddress = <strong>3104.repeater.net<\/strong>   ; Brandmeister ODMRT server address\nBMPort = 54006                  ; Brandmeister ODMRT port\nBMPassword = &lt;<em>Your BM hotspot password<\/em>&gt;           ; Your Brandmeister password\nAddress = 127.0.0.1             ; Address to send AMBE TLV frames to (export)\ntxPort  = 36100                 ; Port to send AMBE TLV frames to (export)\nrxPort  = 36103                 ; Port to listen on (import)\nUserID  = <strong>3206012<\/strong>               ; Your DMR ID + SSID\nTalkerAlias = <strong>N8GMZ Goose<\/strong>       ; Max 27 characters\nStartTG = <strong>91 <\/strong>                   ; Startup talk group\nLogLevel = 1                    ; STFU log level (0=No logging, 1=Debug, 2=Message, 3=Info, 4=Warning, &gt;<\/code><\/pre>\n\n\n\n<p>Save and exit. If you want to mess with STFU, good luck to you. I haven&#8217;t had time to mess with it and don&#8217;t know much about it. Supposedly it&#8217;s a better way, and I suspect it might give better audio, but meh, it&#8217;s really early on at this point and not a lot of documentation out there to go off of, or is over my head. YMMV.<\/p>\n\n\n\n<p>Now we&#8217;re going to move over to the Brandmeister site and check things out, and set a static talk group.<\/p>\n\n\n\n<p>In the side menu you should see your node listed. Mine is 320601211. It should have a green plug icon next to it, showing that it&#8217;s online and authenticated.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized has-custom-border\"><img loading=\"lazy\" decoding=\"async\" width=\"226\" height=\"196\" src=\"https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image-3.png\" alt=\"\" class=\"wp-image-661\" style=\"border-width:1px;width:387px;height:auto\"\/><\/figure>\n\n\n\n<p>Then scroll down the page until you see the Static Talkgroups menu:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full has-custom-border\"><img loading=\"lazy\" decoding=\"async\" width=\"702\" height=\"261\" src=\"https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image-4.png\" alt=\"\" class=\"wp-image-662\" style=\"border-width:1px\" srcset=\"https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image-4.png 702w, https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image-4-300x112.png 300w\" sizes=\"auto, (max-width: 702px) 100vw, 702px\" \/><\/figure>\n\n\n\n<p>This is where you&#8217;ll enter a static talkgroup. It has been noted that DVSwitch doesn&#8217;t really do well with dynamic talkgroups on Brandmeister. It&#8217;s sort of a pain in the butt to go that route. For now, to keep things simple. You should expect to use the Static Talkgroup menu on the SelfCare page to change the Brandmeister TalkGroup that you want to join or leave. <\/p>\n\n\n\n<h6 class=\"wp-block-heading\">Analog Bridging<\/h6>\n\n\n\n<p>Having successfully set up the DMR side, we&#8217;ll work on the analog bridge now. Get back into the CLI on your ASL3 node if you got out of it. Give yourself root again and check the status of the Analog Bridge with these commands (highlighted below):<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>root@repeater:\/opt\/MMDVM_Bridge# <strong>cd \/opt\/Analog_Bridge\/<\/strong>\nroot@repeater:\/opt\/Analog_Bridge# <strong>systemctl status analog_bridge<\/strong>\n\u25cf analog_bridge.service - Analog_Bridge Service\n   Loaded: loaded (\/lib\/systemd\/system\/analog_bridge.service; enabled; vendor preset: enabled)\n   Active: inactive (dead)\nroot@repeater:\/opt\/Analog_Bridge#<\/code><\/pre>\n\n\n\n<p>Again, like the MMDVM bridge, you&#8217;ll see the module is loaded but not active. In the analog bridge directory you&#8217;re going to need to edit the <strong>Analog_Bridge.ini<\/strong> file:<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>nano .\/Analog_Bridge.ini<\/code><\/pre>\n\n\n\n<p>Then go to the [General] stanza in the file and change the decoder fallback to &#8220;true&#8221;:<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>; General Section describes settings for Analog_Bridge itself.\n&#91;GENERAL]\nlogLevel = 2                            ; Show messages and above 0=No logging, 1=Debug, 2=Message, 3=Info, 4=Warning, 5=Error, 6=Fatal\n\n; Metadata management\nexportMetadata = true                   ; Export metadata to USRP partner (transcode setups require this)\nsubscriberFile = \/var\/lib\/dvswitch\/subscriber_ids.csv   ; DMR ID to callsign lookup data\n\n; General vocoder setup information\ndecoderFallBack = <strong>true<\/strong>                  ; Allow software AMBE decoding if a hardware decoder is not found\nuseEmulator = false                     ; Use the MD380 AMBE emulator for AMBE72 (DMR\/YSFN\/NXDN)\nemulatorAddress = 127.0.0.1:2470        ; IP address and port of the md380 server;s<\/code><\/pre>\n\n\n\n<p>Now go to the [AMBE_AUDIO] stanza and change the TX and RX ports, the gateway DMR ID, and repeater ID. Your DMR ID will your regular DMR ID, while the repeater ID will be the DMR ID + the two digit SSID you added to the end of it. The &#8220;<strong>txTg<\/strong>&#8221; line is the Talkgroup on Brandmeister that your traffic will be sent to. Below are my node settings with my DMR ID&#8217;s. For my node, for testing, I used BM talkgroup 91, which is the Worldwide Call group, which is usually very busy. This should be the static talkgroup you set up in Selfcare as well. You can change it later via selfcare. When you boot up your node, this is the talkground it will default to, and can be anything that works for you.<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>; Information for xx_Bridge (Where xx is MMDVM, Quantar, HB, IPSC)\n&#91;AMBE_AUDIO]\naddress = 127.0.0.1                     ; IP address of xx_Bridge\ntxPort = <strong>31103<\/strong>                          ; Transmit TLV frames to partner on this port\nrxPort = <strong>31100<\/strong>                          ; Listen for TLV frames from partner on this port\nambeMode = DMR                          ; DMR, DMR_IPSC, DSTAR, NXDN, P25, YSFN, YSFW (encode PCM to this format)\nminTxTimeMS = 2000                      ; Minimum time in MS for hang delay (0-10000)\n\n; The metadata below is used when ASL is the source since it does not have any concept of digital modes\ngatewayDmrId = <strong>3206012<\/strong>                  ; ID to use when transmitting from Analog_Bridge\nrepeaterID = <strong>311213801<\/strong>                  ; ID of source repeater\ntxTg = <strong>91<\/strong>                               ; TG to use for all frames sent from Analog_Bridge -&gt; xx_Bridge\ntxTs = 2                                ; Slot to use for frames sent from Analog_Bridge -&gt; xx_Bridge\ncolorCode = 1                           ; Color Code to assign DMR frames<\/code><\/pre>\n\n\n\n<p>While you&#8217;re in the Analog_Bridge.ini check the [USRP] stanza and see if the TX and RX ports are correct. By default they should be, and shouldn&#8217;t need adjustment.<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>&#91;USRP]\naddress = 127.0.0.1                     ; IP address of USRP partner (Analog_Reflector, Allstar\/Asterisk or another Ana&gt;\n<strong>txPort = 32001                         <\/strong> ; Transmit USRP frames on this port<strong>\nrxPort = 34001 <\/strong>                         ; Listen for USRP frames on this port\nusrpAudio = AUDIO_USE_GAIN              ; Digital -&gt; Analog (AUDIO_UNITY, AUDIO_USE_GAIN, AUDIO_USE_AGC)\nusrpGain = 2.50                         ; Gain factor when usrpAudio = AUDIO_USE_GAIN (0.0 to 5.0) (1.0 = AUDIO_UNITY)\nusrpAGC = -20,10,100                    ; Set the agc threshold (db), slope (db) and decay (ms)<\/code><\/pre>\n\n\n\n<p>Save the edits and exit the Analog_Bridge.ini file.<\/p>\n\n\n\n<p>You can run the Analog Bridge and check that it&#8217;s all good with no errors by using the command:<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>.\/Analog_Bridge Analog_Bridge.ini<\/code><\/pre>\n\n\n\n<p>It will output text like this below. Note the highlighted lines:<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>levi@node64393:\/opt\/Analog_Bridge $ .\/Analog_Bridge Analog_Bridge.ini\nI: 2025-03-21 20:24:07.338 Analog_Bridge Version 1.6.4 Mon 17 May 06:21:35 EDT 2021\nI: 2025-03-21 20:24:07.338 Copyright (C) 2018, 2019, 2020 DVSwitch, INAD.\nI: 2025-03-21 20:24:07.338 Created by Mike N4IRR and Steve N4IRS\nI: 2025-03-21 20:24:07.338 Analog_Bridge comes with ABSOLUTELY NO WARRANTY\nI: 2025-03-21 20:24:07.338\nI: 2025-03-21 20:24:07.338 This software is for use on amateur radio networks only,\nI: 2025-03-21 20:24:07.339 it is to be used for educational purposes only. Its use on\nI: 2025-03-21 20:24:07.339 commercial networks is strictly prohibited.\nI: 2025-03-21 20:24:07.339\nI: 2025-03-21 20:24:07.339 Analog_Bridge is starting\nM: 2025-03-21 20:24:07.339 Setting &#91;MACROS] DMR -&gt; \/opt\/MMDVM_Bridge\/dvswitch.sh mode DMR\nM: 2025-03-21 20:24:07.339 Setting &#91;MACROS] DSTAR -&gt; \/opt\/MMDVM_Bridge\/dvswitch.sh mode DSTAR\nM: 2025-03-21 20:24:07.339 Setting &#91;MACROS] NXDN -&gt; \/opt\/MMDVM_Bridge\/dvswitch.sh mode NXDN\nM: 2025-03-21 20:24:07.339 Setting &#91;MACROS] P25 -&gt; \/opt\/MMDVM_Bridge\/dvswitch.sh mode P25\nM: 2025-03-21 20:24:07.339 Setting &#91;MACROS] YSF -&gt; \/opt\/MMDVM_Bridge\/dvswitch.sh mode YSF\nM: 2025-03-21 20:24:07.339 Setting &#91;MACROS] ASL -&gt; \/opt\/MMDVM_Bridge\/dvswitch.sh mode ASL\nM: 2025-03-21 20:24:07.339 Setting &#91;MACROS] STFU -&gt; \/opt\/MMDVM_Bridge\/dvswitch.sh mode STFU\nM: 2025-03-21 20:24:07.339 Setting &#91;MACROS] dbupdate -&gt; \/opt\/MMDVM_Bridge\/dvswitch.sh collectProcessPushDataFiles\nM: 2025-03-21 20:24:07.339 Setting &#91;MACROS] 9876 -&gt; \/opt\/Analog_Bridge\/parrot.sh\nM: 2025-03-21 20:24:07.339 Setting &#91;] include -&gt; dvsm.macro\nM: 2025-03-21 20:24:07.339 Setting &#91;GENERAL] logLevel -&gt; 2\nM: 2025-03-21 20:24:07.339 Setting &#91;GENERAL] exportMetadata -&gt; true\nM: 2025-03-21 20:24:07.339 Setting &#91;GENERAL] transferRootDir -&gt; \/tmp\nM: 2025-03-21 20:24:07.339 Setting &#91;GENERAL] subscriberFile -&gt; \/var\/lib\/dvswitch\/subscriber_ids.csv\nM: 2025-03-21 20:24:07.339 Setting &#91;GENERAL] decoderFallBack -&gt; true\nM: 2025-03-21 20:24:07.339 Setting &#91;GENERAL] useEmulator -&gt; true\nM: 2025-03-21 20:24:07.339 Setting &#91;GENERAL] emulatorAddress -&gt; 127.0.0.1:2470\nM: 2025-03-21 20:24:07.339 Setting &#91;GENERAL] pcmPort -&gt; 2222\n<strong>M: 2025-03-21 20:24:07.339 Setting &#91;AMBE_AUDIO] address -&gt; 127.0.0.1\nM: 2025-03-21 20:24:07.339 Setting &#91;AMBE_AUDIO] txPort -&gt; 31103\nM: 2025-03-21 20:24:07.339 Setting &#91;AMBE_AUDIO] rxPort -&gt; 31100\nM: 2025-03-21 20:24:07.339 Setting &#91;AMBE_AUDIO] ambeMode -&gt; DMR<\/strong>\nM: 2025-03-21 20:24:07.339 Setting &#91;AMBE_AUDIO] minTxTimeMS -&gt; 2500\n<strong>M: 2025-03-21 20:24:07.339 Setting &#91;AMBE_AUDIO] gatewayDmrId -&gt; 3206012\nM: 2025-03-21 20:24:07.339 Setting &#91;AMBE_AUDIO] repeaterID -&gt; 320601211\n<\/strong>M: 2025-03-21 20:24:07.339 Setting &#91;AMBE_AUDIO] txTg -&gt; 91\nM: 2025-03-21 20:24:07.339 Setting &#91;AMBE_AUDIO] txTs -&gt; 2\nM: 2025-03-21 20:24:07.339 Setting &#91;AMBE_AUDIO] colorCode -&gt; 1\n<strong>M: 2025-03-21 20:24:07.339 Setting &#91;USRP] address -&gt; 127.0.0.1\nM: 2025-03-21 20:24:07.339 Setting &#91;USRP] txPort -&gt; 32001\nM: 2025-03-21 20:24:07.340 Setting &#91;USRP] rxPort -&gt; 34001<\/strong>\nM: 2025-03-21 20:24:07.340 Setting &#91;USRP] usrpAudio -&gt; AUDIO_USE_GAIN\nM: 2025-03-21 20:24:07.340 Setting &#91;USRP] usrpGain -&gt; 2.50\nM: 2025-03-21 20:24:07.340 Setting &#91;USRP] usrpAGC -&gt; -20,10,100\nM: 2025-03-21 20:24:07.340 Setting &#91;USRP] tlvAudio -&gt; AUDIO_USE_GAIN\nM: 2025-03-21 20:24:07.340 Setting &#91;USRP] tlvGain -&gt; 1.1\nM: 2025-03-21 20:24:07.340 Setting &#91;DV3000] address -&gt; 127.0.0.1\nM: 2025-03-21 20:24:07.340 Setting &#91;DV3000] rxPort -&gt; 2460\nI: 2025-03-21 20:24:07.340 Open UDP listener on 127.0.0.1:31100\nI: 2025-03-21 20:24:07.340 Open USRP on 127.0.0.1:32001\nM: 2025-03-21 20:24:07.340 Connecting to DV3000 hardware......\nW: 2025-03-21 20:24:07.429 DV3000 did not reset at 127.0.0.1:2460\nW: 2025-03-21 20:24:07.429 DV3000 not found at 127.0.0.1:2460 (Reset failed)\nProject 25 IMBE Encoder\/Decoder Fixed-Point implementation\nDeveloped by Pavel Yazev E-mail: pyazev@gmail.com\nVersion 1.0 (c) Copyright 2009\nThis program comes with ABSOLUTELY NO WARRANTY.\nThis is free software, and you are welcome to redistribute it\nunder certain conditions; see the file ``LICENSE'' for details.\nI: 2025-03-21 20:24:08.480 Subscriber IDs loaded: 279577\nI: 2025-03-21 20:24:08.480 Default extended metadata &lt;N8GMZ&gt;\nI: 2025-03-21 20:24:08.480 Connecting to emulator on host 127.0.0.1:2470\nW: 2025-03-21 20:24:08.480 Using software MBE decoder version 1.2.3\nW: 2025-03-21 20:24:08.480 Using software OP25 IMBE\/AMBE vocoder\nI: 2025-03-21 20:24:08.480 Sending to USRP clients at 127.0.0.1 on port(s) 32001\nI: 2025-03-21 20:24:08.480 Sending PCM to  clients at 127.0.0.1 on port 2222\nI: 2025-03-21 20:24:08.480 Starting TLV --&gt; Analog_Bridge (decoder) --&gt; USRP thread\nI: 2025-03-21 20:24:08.480 Starting USRP --&gt; Analog_Bridge (encoder) -&gt; TLV thread<\/code><\/pre>\n\n\n\n<h6 class=\"wp-block-heading\">Testing the Bridge<\/h6>\n\n\n\n<p>Now that we&#8217;re setup on both the DMR and analog sides, we&#8217;re going to test everything out together. Make sure you&#8217;re running as root here:<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>sudo -s<\/code><\/pre>\n\n\n\n<p>Then switch to the asterisk directory and run asterisk in the foreground:<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>cd \/etc\/asterisk\nasterisk -c<\/code><\/pre>\n\n\n\n<p>Turn on more in-depth logging once you&#8217;re in asterisk by typing this at the asterisk CLI:<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>rpt debug level 6<\/code><\/pre>\n\n\n\n<p>Leave asterisk running in that CLI window and open another CLI window to get into the Analog Bridge:<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>sudo -s\ncd \/opt\/Analog_Bridge\n.\/Analog_Bridge Analog_Bridge.ini<\/code><\/pre>\n\n\n\n<p>This will run the Analog Bridge in the foreground. Leave it open and running and start another CLI instance in a new window for the MMDVM Bridge:<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>sudo -s\ncd \/opt\/MMDVM_Bridge\n.\/MMDVM_Bridge MMDVM_Bridge.ini<\/code><\/pre>\n\n\n\n<p>You should now have three CLI windows open with the services running in them. If there is traffic on the talkgroup, you should see it, without errors. You may see a &#8220;chan_usrp&#8221; warning for &#8220;Receive queue exceeds the threshold of 320&#8221; in the asterisk CLI. You can ignore that error. It is a known issue with ASL and shouldn&#8217;t affect things.<\/p>\n\n\n\n<p>If there is no traffic in the TG that you&#8217;re on, you can make a TX into it on your AllStarLink node. You may need to go into Allmon, Supermon, or Allscan and connect the node to node 1999 first, if it is not already connected.<\/p>\n\n\n\n<p>Check your MMDVM Bridge window and look to see that it&#8217;s showing the TX. Here is the log from another guide for an example:<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>M: 2018-06-04 15:51:24.087 MMDVM_Bridge-20180423 is running\nI: 2018-06-04 15:51:24.087 Started the DMR Id lookup reload thread\nD: 2018-06-04 15:51:34.153 DMR, Sending authorisation\nD: 2018-06-04 15:51:34.210 DMR, Sending configuration\nM: 2018-06-04 15:51:34.246 DMR, Logged into the master successfully\nM: 2018-06-04 15:52:04.825 <strong>DMR Slot 2, received network voice header from N4IRS to TG 311222<\/strong>\nM: 2018-06-04 15:52:05.380 <strong>DMR Slot 2, received network end of voice transmission, 0.5 seconds, 0% packet loss, BER: 0.0%<\/strong>\n<\/code><\/pre>\n\n\n\n<p>In the Analog Bridge window you should see something like this:<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>I: 2018-06-04 15:51:37.781 Starting USRP --&gt; HB_Bridge thread\nI: 2018-06-04 15:52:04.825 Begin TX: src=3112138 rpt=0 dst=311222 slot=2 cc=0<\/code><\/pre>\n\n\n\n<p>And in the asterisk CLI window you should see something like this:<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>&#91;Jun  4 11:26:40] NOTICE&#91;1858]: app_rpt.c:22184 rpt_master: Normal Repeater Init  1999\n&#91;Jun  4 11:26:40] NOTICE&#91;1858]: app_rpt.c:22184 rpt_master: Normal Repeater Init  2100\n\n*CLI&gt;rpt debug level 6\napp_rpt Debugging enabled, previous level: 0, new level: 6\n\n*CLI&gt; &#91;Jun  4 11:52:04] NOTICE&#91;2051]: app_rpt.c:20965 rpt: **** rx key\n&#91;Jun  4 11:52:04] NOTICE&#91;2051]: app_rpt.c:21076 rpt: **** rx un-key\n&#91;Jun  4 11:52:04] NOTICE&#91;2051]: app_rpt.c:20965 rpt: **** rx key\n&#91;Jun  4 11:52:04] NOTICE&#91;2051]: app_rpt.c:21076 rpt: **** rx un-key\n<\/code><\/pre>\n\n\n\n<p>This is letting you know that things are getting to and from where they need to go.<\/p>\n\n\n\n<p>For further testing you can send a tone out and check that it is being received by sending the command below in the asterisk CLI:<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>rpt cmd 1999 cop 4 1999<\/code><\/pre>\n\n\n\n<p>Then move to the Analog Bridge CLI window and look for something like this:<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>M: 2018-06-05 14:03:09.787 PTT on<\/code><\/pre>\n\n\n\n<p>And in the MMDVM Bridge CLI window:<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>M: 2018-06-05 14:05:13.971 DMR, TX state = ON\nI: 2018-06-05 14:05:13.971 DMR, Begin TX: src=3112138 rpt=311213805 dst=311222 slot=2 cc=1 metadata=3112138<\/code><\/pre>\n\n\n\n<p>Now you have to toggle off the tone (It will stay on!) Go back to the asterisk CLI and enter:<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>rpt cmd 1999 cop 4 1999<\/code><\/pre>\n\n\n\n<p>It&#8217;s the same command to turn the tone on as it is to turn it off. <\/p>\n\n\n\n<p>While you&#8217;re in the asterisk CLI, put the logging level back to something that won&#8217;t fill up as fast:<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>rpt debug level 0<\/code><\/pre>\n\n\n\n<p>Now that we know everything is working we can make some other tweaks to things, like having your ASL3 node automatically connect to the DVswitch bridge on startup. This is optional, and you don&#8217;t have to do it if you don&#8217;t want.<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>cd \/etc\/asterisk\nnano .\/rpt.conf<\/code><\/pre>\n\n\n\n<p>Once in the <strong>rpt.conf<\/strong> file edit the stanza for your main node number, which, for me is under [63494]<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>startup_macro = *31999<\/code><\/pre>\n\n\n\n<p>Save and exit the <strong>rpt.conf<\/strong> file.<\/p>\n\n\n\n<p>Now we&#8217;re going to turn all the stuff on at once:<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>systemctl enable asterisk\nsystemctl enable analog_bridge\nsystemctl enable md380-emu\nsystemctl enable mmdvm_bridge<\/code><\/pre>\n\n\n\n<p>If you don&#8217;t see anything pop up, no error messages, then it means you did it right.<\/p>\n\n\n\n<p>And now for one final thing, you&#8217;ll want to reboot the whole thing and see if it comes back up fine.<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>sudo reboot<\/code><\/pre>\n\n\n\n<p>Once the node is back online, connect to node 1999 if you don&#8217;t have it automatically connecting.<\/p>\n\n\n\n<h6 class=\"wp-block-heading\">Using the DVSwitch Dashboard<\/h6>\n\n\n\n<p>Then in a browser window, go to the address &#8220;https:\/\/&lt;your node&#8217;s IP address&gt;\/index.php<\/p>\n\n\n\n<p>This will bring up the DVSwitch Dashboard. You should also be hearing traffic on your Allstar if there are key ups showing in the dashboard.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"950\" height=\"902\" src=\"https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image-1.png\" alt=\"\" class=\"wp-image-653\" style=\"width:680px;height:auto\" srcset=\"https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image-1.png 950w, https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image-1-300x285.png 300w, https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image-1-768x729.png 768w\" sizes=\"auto, (max-width: 950px) 100vw, 950px\" \/><\/figure>\n\n\n\n<p>If you&#8217;re not hearing traffic go into  the CLI for the node and run the MMDVM Bridge, Analog Bridge, and asterisk CLI, and see if there are errors. If you did every thing right, you should be all set to use your DVSwitch bridge to talk on DMR. If you want to go back to using regular analog Allstar, just disconnect from the 1999 node and connect to another Allstar node.<\/p>\n\n\n\n<h6 class=\"wp-block-heading\">Adding TGIF<\/h6>\n\n\n\n<p>OK, now that we&#8217;re up and running, and connected to a Brandmeister DMR server, we&#8217;re going to add in the TGIF server, for the TGIF DMR Network. To do this we&#8217;re going to get in to the DVS menu that I showed you earlier.<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>cd \/usr\/local\/dvs\n.\/dvs<\/code><\/pre>\n\n\n\n<p>Once in the menu go to 02 Advanced Configuration:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"730\" height=\"288\" src=\"https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image-6.png\" alt=\"\" class=\"wp-image-667\" srcset=\"https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image-6.png 730w, https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image-6-300x118.png 300w\" sizes=\"auto, (max-width: 730px) 100vw, 730px\" \/><\/figure>\n\n\n\n<p>And then 24 Additional DMR Networks:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"743\" height=\"297\" src=\"https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image-8.png\" alt=\"\" class=\"wp-image-669\" srcset=\"https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image-8.png 743w, https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image-8-300x120.png 300w\" sizes=\"auto, (max-width: 743px) 100vw, 743px\" \/><\/figure>\n\n\n\n<p>Select 2 Configure DMR Server:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"447\" height=\"240\" src=\"https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image-9.png\" alt=\"\" class=\"wp-image-670\" srcset=\"https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image-9.png 447w, https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image-9-300x161.png 300w\" sizes=\"auto, (max-width: 447px) 100vw, 447px\" \/><\/figure>\n\n\n\n<p>3 TGIF Network:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"457\" height=\"322\" src=\"https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image-10.png\" alt=\"\" class=\"wp-image-671\" srcset=\"https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image-10.png 457w, https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image-10-300x211.png 300w\" sizes=\"auto, (max-width: 457px) 100vw, 457px\" \/><\/figure>\n\n\n\n<p>Once in the setup, enter &#8220;tgif.network&#8221; for the server:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"584\" height=\"242\" src=\"https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image-11.png\" alt=\"\" class=\"wp-image-672\" srcset=\"https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image-11.png 584w, https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image-11-300x124.png 300w\" sizes=\"auto, (max-width: 584px) 100vw, 584px\" \/><\/figure>\n\n\n\n<p>Enter your TGIF server password, found in the TGIF SelfCare on the TGIF&#8217;s website:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"590\" height=\"232\" src=\"https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image-12.png\" alt=\"\" class=\"wp-image-673\" srcset=\"https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image-12.png 590w, https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image-12-300x118.png 300w\" sizes=\"auto, (max-width: 590px) 100vw, 590px\" \/><\/figure>\n\n\n\n<p>Then the port, this should be correct by default:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"722\" height=\"332\" src=\"https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image-13.png\" alt=\"\" class=\"wp-image-674\" srcset=\"https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image-13.png 722w, https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image-13-300x138.png 300w\" sizes=\"auto, (max-width: 722px) 100vw, 722px\" \/><\/figure>\n\n\n\n<p>Then you can pick if the network is the default network for DVSwitch, for me I have BM as default, and only dial in to TGIF when I want to:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"653\" height=\"285\" src=\"https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image-14.png\" alt=\"\" class=\"wp-image-675\" srcset=\"https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image-14.png 653w, https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image-14-300x131.png 300w\" sizes=\"auto, (max-width: 653px) 100vw, 653px\" \/><\/figure>\n\n\n\n<p>It should return you to the DMR Network menu and TGIF should be set up for use. You can dial into a TGIF server from the CLI now to test it out. <\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>\/opt\/MMDVM_Bridge\/dvswitch.sh mode DMR\n\/opt\/MMDVM_Bridge\/dvswitch.sh tune passw0rd@tgif.network:62031!0\n\/opt\/MMDVM_Bridge\/dvswitch.sh tune &lt;<em>TGIF Talk Group #<\/em>&gt;<\/code><\/pre>\n\n\n\n<p>Note that you should use &#8220;passw0rd&#8221; and not your own password here, to connect to TGIF.<\/p>\n\n\n\n<p>To go back to BrandMeister you would enter the following (assuming you are still in DMR mode. If you&#8217;re in a different mode, switch to DMR before this):<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>\/opt\/MMDVM_Bridge\/dvswitch.sh tune &lt;<em>Your BM hotspot password<\/em>&gt;@3104.repeater.net:62031!4000\n\/opt\/MMDVM_Bridge\/dvswitch.sh tune &lt;<em>BM Talk Group #<\/em>&gt;<\/code><\/pre>\n\n\n\n<p>OK, so now you should have DMR on BrandMeister and TGIF working. Switching between DMR masters is a little clunky, and is done via command line. People have wrote scripts to automate this, but I won&#8217;t get into that here. There is also a program called &#8220;DVSwitch Mode Switcher&#8221; that you can install, that makes switching networks and modes easier. I am not going to get into that here, and there are guides already on how to install it. I would say that it is an &#8220;advanced&#8221; thing, and recommend attempting if you feel comfortable using DVSwitch already.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"620\" height=\"523\" src=\"https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image-15.png\" alt=\"\" class=\"wp-image-676\" style=\"width:400px;height:auto\" srcset=\"https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image-15.png 620w, https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image-15-300x253.png 300w\" sizes=\"auto, (max-width: 620px) 100vw, 620px\" \/><figcaption class=\"wp-element-caption\">Screenshot of DVSwitch Mode Switcher<\/figcaption><\/figure>\n\n\n\n<h6 class=\"wp-block-heading\">YSF Fusion Mode<\/h6>\n\n\n\n<p>The final thing I am going to touch on is the Yaesu System Fusion mode and how to use it. First edit your MMDVM_Bridge.ini file:<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>cd \/opt\/MMDVM_Bridge\nnano MMDVM_Bridge.ini<\/code><\/pre>\n\n\n\n<p>Then turn on YSF by setting <strong>Enable<\/strong> to 1 in the below two stanzas:<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>&#91;System Fusion]\n<strong>Enable=1<\/strong>\n\n&#91;System Fusion Network]\n<strong>Enable=1<\/strong>\nLocalAddress=0\nLocalPort=3200\nGatewayAddress=127.0.0.1\nGatewayPort=4200\nDebug=0<\/code><\/pre>\n\n\n\n<p>Save and exit, then restart the MMDVM Bridge:<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>systemctl restart mmdvm_bridge<\/code><\/pre>\n\n\n\n<p>Now you can go into YSF mode and enter a Wires-X room (in this case the popular West Michigan Connect room 21335 that you can find me and many other MIRAT members on) by entering the commands:<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>\/opt\/MMDVM_Bridge\/dvswitch.sh mode YSF\n\/opt\/MMDVM_Bridge\/dvswitch.sh tune 21335<\/code><\/pre>\n\n\n\n<p>Now when you key up you&#8217;ll be talking into the YSF Wires-X room West Michigan Connect.<\/p>\n\n\n\n<p>You can see your activity on the DVSwitch Gateway in the DVSwitch Dashboard.<br>Note that you&#8217;re also still connected to the DMR master, and will see DMR traffic. You don&#8217;t hear it though, while in YSF mode.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"684\" height=\"172\" src=\"https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image-17.png\" alt=\"\" class=\"wp-image-678\" srcset=\"https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image-17.png 684w, https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image-17-300x75.png 300w\" sizes=\"auto, (max-width: 684px) 100vw, 684px\" \/><\/figure>\n\n\n\n<p>If you want to test your audio out on YSF, you can tune the parrot room:<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>\/opt\/MMDVM_Bridge\/dvswitch.sh tune parrot.ysfreflector.de:42020<\/code><\/pre>\n\n\n\n<p>NOTE: DVSwitch Dashboard will sometimes show that YSF is connected to &#8220;null&#8221;. This seems to be a quirk, but you should be connected. Other ASL3 DVSwitch users have reported this as well and although it shows &#8220;null&#8221; it doesn&#8217;t effect things.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"190\" height=\"76\" src=\"https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/image-18.png\" alt=\"\" class=\"wp-image-679\" style=\"width:495px;height:auto\"\/><\/figure>\n\n\n\n<p>To go back to DMR mode you&#8217;ll use the command:<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"border-width:1px\"><code>\/opt\/MMDVM_Bridge\/dvswitch.sh mode DMR<\/code><\/pre>\n\n\n\n<p>So now you should be able to connect to any Allstar node, any BrandMeister node, any TGIF node, or any YSF Wires-X room with your ASL3 node and talk on them.<\/p>\n\n\n\n<p>If you want to add EchoLink to your node, there is a <a href=\"https:\/\/www.we8chz.org\/?p=687\" data-type=\"link\" data-id=\"https:\/\/www.we8chz.org\/?p=687\">guide here.<\/a><\/p>\n\n\n\n<p>73,<br>Levi &#8220;Goose&#8221; N8GMZ<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Here is a rundown on how to install DVSwitch on your AllStarLink3 node.<\/p>\n","protected":false},"author":2,"featured_media":640,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[34,6],"tags":[66,67,68,54,52,69,71,70],"class_list":["post-643","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-digital-modes","category-technical-articles","tag-allstar","tag-allstarlink","tag-allstarlink3","tag-d-star","tag-dmr","tag-dvswitch","tag-p25","tag-ysf"],"blocksy_meta":[],"rttpg_featured_image_url":{"full":["https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/allstarlinklogo.png",500,232,false],"landscape":["https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/allstarlinklogo.png",500,232,false],"portraits":["https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/allstarlinklogo.png",500,232,false],"thumbnail":["https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/allstarlinklogo-150x150.png",150,150,true],"medium":["https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/allstarlinklogo-300x139.png",300,139,true],"large":["https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/allstarlinklogo.png",500,232,false],"1536x1536":["https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/allstarlinklogo.png",500,232,false],"2048x2048":["https:\/\/www.we8chz.org\/wp-content\/uploads\/2025\/03\/allstarlinklogo.png",500,232,false]},"rttpg_author":{"display_name":"N8GMZ","author_link":"https:\/\/www.we8chz.org\/?author=2"},"rttpg_comment":1,"rttpg_category":"<a href=\"https:\/\/www.we8chz.org\/?cat=34\" rel=\"category\">Digital Modes<\/a> <a href=\"https:\/\/www.we8chz.org\/?cat=6\" rel=\"category\">Technical Articles<\/a>","rttpg_excerpt":"Here is a rundown on how to install DVSwitch on your AllStarLink3 node.","_links":{"self":[{"href":"https:\/\/www.we8chz.org\/index.php?rest_route=\/wp\/v2\/posts\/643","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.we8chz.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.we8chz.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.we8chz.org\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.we8chz.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=643"}],"version-history":[{"count":22,"href":"https:\/\/www.we8chz.org\/index.php?rest_route=\/wp\/v2\/posts\/643\/revisions"}],"predecessor-version":[{"id":728,"href":"https:\/\/www.we8chz.org\/index.php?rest_route=\/wp\/v2\/posts\/643\/revisions\/728"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.we8chz.org\/index.php?rest_route=\/wp\/v2\/media\/640"}],"wp:attachment":[{"href":"https:\/\/www.we8chz.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=643"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.we8chz.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=643"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.we8chz.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=643"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}