pages tagged anytoneFeeding the Cloudhttps://feeding.cloud.geek.nz/tags/anytone/Feeding the Cloudikiwiki2023-03-19T07:41:29ZProgramming a DMR radio with its CPShttps://feeding.cloud.geek.nz/posts/programming-dmr-radio-with-cps/
<a href="https://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>
2023-03-19T07:41:29Z2021-01-05T07:40:00Z
<p>Here are some notes I took around programming my <a href="https://www.bridgecomsystems.com/collections/amateur-handheld-radios/products/anytone-at-d878uv-dual-band-dmr-handheld-radio-w-gps-programming-cable">AnyTone AT-D878UV
radio</a>
to operate on <a href="https://en.wikipedia.org/wiki/Digital_mobile_radio">DMR</a>
using the <a href="https://feeding.cloud.geek.nz/posts/programming-anytone-d878uv-on-linux-using-windows10-and-virtualbox/">CPS
software</a>
that comes with it.</p>
<p>Note that you can always <a href="https://www.youtube.com/watch?v=VHapE2wqSMI">tune in to a VFO channel by
hand</a> if you haven't had time
to add it to your codeplug yet.</p>
<h1 id="DMR_terminology">DMR terminology</h1>
<p>First of all, the <a href="https://www.jeffreykopcak.com/2017/05/10/dmr-in-amateur-radio-terminology/">terminology of
DMR</a>
is quite different from that of the regular analog FM world.</p>
<p>Here are the basic terms:</p>
<ul>
<li><strong>Frequency</strong>: <em>same meaning as in the analog world</em></li>
<li><strong>Repeater</strong>: <em>same meaning as in the analog world</em></li>
<li><strong>Timeslot</strong>: Each frequency is split into two timeslots (1 and 2) and what
that means that there can be two simultaneous transmissions on each frequency.</li>
<li><strong>Color code</strong>: This is the digital equivalent of a CTCSS tone (sometimes
called privacy tone) in that using the incorrect code means that you will
tie up one of the timeslots on the frequency, but nobody else will hear
you. These are <a href="https://amateurradionotes.com/dmr.htm#colorcodes">not actually named after
colors</a>, but are instead
just numerical IDs from 0 to 15.</li>
</ul>
<p>There are two different identification mechanisms (both are required):</p>
<ul>
<li><strong>Callsign</strong>: This is the same identifier issued to you by your country's
amateur radio authority. Mine is <a href="https://www.qrz.com/lookup?tquery=VA7GPL&mode=callsign">VA7GPL</a>.</li>
<li><strong>Radio ID</strong>: This is a unique numerical ID tied to your callsign which
you must <a href="https://radioid.net/register">register for</a> ahead of time and
program into your radio. Mine is
<a href="https://database.radioid.net/database/view?id=3027260#!">3027260</a>.</li>
</ul>
<p>The following is where this digital mode becomes most interesting:</p>
<ul>
<li><strong>Talkgroup</strong>: a "chat room" where everything you say will be heard by
anybody listening to that talkgroup</li>
<li><strong>Network</strong>: a group of repeaters connected together over the Internet
(typically) and sharing a common list of talkgroups</li>
<li><strong>Hotspot</strong>: a personal simplex device which allows you to connect to a
network with your handheld and access all of the talkgroups available on
that network</li>
</ul>
<p>The most <a href="https://app.brandmeisteractivity.live/">active</a> network these days
is <a href="https://brandmeister.network/">Brandmeister</a>, but there are several others.</p>
<ul>
<li><strong>Access</strong>: This can either be <em>Always on</em> which means that a talkgroup
will be permanently broadcasting on a timeslot and frequency, or <em>PTT</em>
which means a talkgroup will not be broadcast until it is first "woken up"
by pressing the push-to-talk button and then will broadcast for a certain
amount of time before going to sleep again.</li>
<li><strong>Channel</strong>: As in the analog world, this is what you select on your radio
when you want to talk to a group of people. In the digital world however, it
is tied not only to a frequency (and timeslot) and tone (color code), but
also to a specific talkgroup.</li>
</ul>
<p>Ultimately what you want to do when you program your radio is to find the
talkgroups you are interested in (from the list offered by your local
repeater) and then assign them to specific channel numbers on your radio.
More on that later.</p>
<h1 id="Callsign_and_Radio_IDs">Callsign and Radio IDs</h1>
<p>Before we get to talkgroups, let's set your callsign and <a href="https://radioid.net/database/search">Radio
ID</a>:</p>
<p><img alt="" src="https://feeding.cloud.geek.nz/posts/programming-dmr-radio-with-cps/radioid.png" /></p>
<p>Then you need to download the latest list of Radio IDs so that your radio
can display people's names and callsigns instead of just their numerical IDs.</p>
<p>One approach is to only <a href="https://brandmeister.network/?page=contactsexport">download the list of users who recently
talked</a> on talkgroups you
are interested in. For example, I used to download the contacts for the
following talkgroups:
<code>
91,93,95,913,937,3026,3027,302,30271,30272,530,5301,5302,5303,5304,3100,3153,31330
</code>
but these days, what I normally do is to just download the <a href="https://www.radioid.net/database/dumps">entire worldwide
database</a> (<code>user.csv</code>) since my
radio still has enough storage (200k entries) for it.</p>
<p>In order for the <code>user.csv</code> file to work with the AnyTone CPS, it needs to
have particular columns and use the DOS end-of-line characters (<code>apt install
dos2unix</code> if you want to do it manually). I wrote a
<a href="https://github.com/fmarier/user-scripts/blob/master/dmr-users">script</a> to
do all of the work for me.</p>
<p>If you use <a href="https://github.com/sergev/dmrconfig">dmrconfig</a> to program this
radio instead, then the conversion is unnecessary. The <code>user.csv</code> file can
be used directly, however it will be truncated due to an <a href="https://github.com/sergev/dmrconfig/issues/50">incorrect limit
hard-coded in the software</a>.</p>
<h1 id="Talkgroups">Talkgroups</h1>
<p>Next, you need to pick the talkgroups you would like to allocate to specific
channels on your radio.</p>
<p>Start by looking at the documentation for your local repeaters (e.g.
<a href="http://www.bcfmca.bc.ca/dmr.php">VE7RAG</a> and
<a href="http://www.nwarc.org/cms/?q=node/330">VE7NWR</a> in the Vancouver area).</p>
<p>In addition to telling you the listen and transmit <em>frequencies</em> of the
repeater (again, this works the same way as with analog FM), these will tell
you which <em>talkgroups</em> are available and what <em>timeslots</em> and <em>color codes</em>
they have been set to. It will also tell you the type of <em>access</em> for each
of these talkgroups.</p>
<p>This is how I programmed a channel:</p>
<p><img alt="" src="https://feeding.cloud.geek.nz/posts/programming-dmr-radio-with-cps/ve7rag-bc2.png" /></p>
<p>and a talkgroup on the VE7RAG repeater in my radio:</p>
<p><img alt="" src="https://feeding.cloud.geek.nz/posts/programming-dmr-radio-with-cps/tg-bc2.png" /></p>
<p>If you don't have a local repeater with DMR capability, or if you want to
access talkgroups available on a different network, then you will need to
get a DMR hotspot such as one that's compatible with the
<a href="https://www.pistar.uk/">Pi-Star</a> software.</p>
<p>This is an excerpt from the programming I created for the talkgroups
I made available through my hotspot:</p>
<p><img alt="" src="https://feeding.cloud.geek.nz/posts/programming-dmr-radio-with-cps/brandmeister-nz-national.png" />
<img alt="" src="https://feeding.cloud.geek.nz/posts/programming-dmr-radio-with-cps/tg-zl-national.png" /></p>
<p>One of the unfortunate limitations of the CPS software for the AnyTone 878
is that talkgroup numbers are globally unique identifiers. This means that
if TG1234 (hypothetical example) is <em>Ragchew 3000</em> on DMR-MARC but
<em>Iceland-wide chat</em> on Brandmeister, then you can't have two copies of it
with different names. The solution I found for this was to give that
talkgroup the name "TG1234" instead of "Ragchew3k" or "Iceland". I use a
more memorable name for non-conflicting talkgroups, but for the problematic
ones, I simply repeat the talkgroup number.</p>
<h1 id="Simplex">Simplex</h1>
<p>Talkgroups are not required to operate on DMR. Just like analog FM, you can
talk to another person point-to-point using a simplex channel.</p>
<p>The convention for all simplex channels is the following:</p>
<ul>
<li>Talkgroup: <code>99</code></li>
<li>Color code: <code>1</code></li>
<li>Timeslot: <code>1</code></li>
<li>Admit criteria: <code>Always</code></li>
<li>In Call Criteria: <code>TX</code> or <code>Always</code></li>
</ul>
<p><img alt="" src="https://feeding.cloud.geek.nz/posts/programming-dmr-radio-with-cps/tg-simplex.png" /></p>
<p>After talking to the <a href="https://bcarcc.org/">British Columbia Amateur Radio Coordination
Council</a>, I found that the following frequency ranges are
most suitable for DMR simplex:</p>
<ul>
<li>145.710-145.790 MHz (simplex digital transmissions)</li>
<li>446.000-446.975 MHz (all simplex modes)</li>
</ul>
<p>The <a href="https://docs.google.com/spreadsheets/d/1XNRLnQWY1AJiQQy1umiEBTf4oBMyhrjOc0CIhlLm4pI/edit#gid=0">VECTOR
list</a>
identifies two frequencies in particular:</p>
<ul>
<li>446.075 MHz</li>
<li>446.500 MHz</li>
</ul>
<p><img alt="" src="https://feeding.cloud.geek.nz/posts/programming-dmr-radio-with-cps/vector-dmr-simplex2.png" /></p>
<h1 id="Learn_more">Learn more</h1>
<p>If you'd like to learn more about DMR, I would suggest you start with <a href="https://web.archive.org/web/20210127164034/http://www.k4usd.org/guide.pdf">this
excellent guide</a> (also <a href="https://web.archive.org/web/20210507001057/https://www.raqi.ca/~ve2rae/dmr/Amateur_Radio_Guide_to_DMR.pdf">mirrored
here</a>).</p>
Programming an AnyTone AT-D878UV on Linux using Windows 10 and VirtualBoxhttps://feeding.cloud.geek.nz/posts/programming-anytone-d878uv-on-linux-using-windows10-and-virtualbox/
<a href="https://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>
2022-01-01T04:14:57Z2019-04-17T05:15:00Z
<p>I recently acquired an <a href="https://www.bridgecomsystems.com/collections/amateur-handheld-radios/products/anytone-at-d878uv-dual-band-dmr-handheld-radio-w-gps-programming-cable">AnyTone AT-D878UV DMR
radio</a>
which is unfortunately not supported by
<a href="https://chirp.danplanet.com/projects/chirp/wiki/Home">chirp</a>, my usual
go-to free software package for programming amateur radios.</p>
<p>Instead, I had to setup a Windows 10 virtual machine so that I could setup
the radio using the manufacturer's computer programming software (CPS).</p>
<h1 id="Install_VirtualBox">Install VirtualBox</h1>
<p>Install <a href="https://www.virtualbox.org">VirtualBox</a>:</p>
<pre><code>apt install virtualbox virtualbox-guest-additions-iso
</code></pre>
<p>and add your user account to the <code>vboxusers</code> group:</p>
<pre><code>adduser francois vboxusers
</code></pre>
<p>to make filesharing before the host and the guest work.</p>
<p>Finally, <strong>reboot</strong> to ensure that group membership and kernel modules are
all set.</p>
<h1 id="Create_a_Windows_10_virtual_machine">Create a Windows 10 virtual machine</h1>
<p>Create a new Windows 10 virtual machine within VirtualBox. Then, <a href="https://www.microsoft.com/en-in/software-download/windows10ISO">download Windows
10</a> from
Microsoft then start the virtual machine mounting the <code>.iso</code> file as an
optical drive.</p>
<p>Follow the instructions to install Windows 10, paying attention to the
<a href="https://askleo.com/setting-up-windows-10-for-privacy/">various privacy options you will be
offered</a>.</p>
<p>Once Windows is installed, mount the host's
<code>/usr/share/virtualbox/VBoxGuestAdditions.iso</code> as a virtual optical drive
and install the VirtualBox guest additions.</p>
<h1 id="Installing_the_CPS">Installing the CPS</h1>
<p>With Windows fully setup, it's time to download the latest version of the
<a href="https://www.bridgecomsystems.com/pages/anytone-at-d878uv-support-page">computer programming
software</a>.</p>
<p>Unpack the downloaded file and then install it as Admin (right-click on the
<code>.exe</code>).</p>
<p>Do NOT install the GD driver update or the USB driver, they do not appear to
be necessary.</p>
<h1 id="Program_the_radio">Program the radio</h1>
<p>First, you'll want to download from the radio to get a starting configuration
that you can change.</p>
<p>To do this:</p>
<ol>
<li>Turn the radio on and wait until it has finished booting.</li>
<li>Plug the USB programming cable onto the computer and the radio.</li>
<li>From the CPS menu choose "Set COM port".</li>
<li>From the CPS menu choose "Read from radio".</li>
</ol>
<p><strong>Save this original codeplug to a file as a backup</strong> in case you need to
easily reset back to the factory settings.</p>
<p>To program the radio, follow this <a href="https://www.bridgecomsystems.com/blogs/bridgecom-tx-rx-blog/anytone-868-878-programming-guide-v1-33">handy third-party
guide</a>
since it's much better than the official manual.</p>
<p>You should be able to use the "Write to radio" menu option without any
problems once you're done creating your codeplug.</p>