Category Archives: Tutorials

Tutorial and How-to posts.

DMR In Amateur Radio: Programming a Code Plug

Read the rest of the series in the DMR in Amateur Radio series category.


You picked up a new DMR radio! Congratulations! You maybe thinking, what have I gotten myself into? Good question. DMR is the first commercial mode adopted for ham radio use. Terminology and radio setup are familiar to those who program commercial gear. If you’re coming across this programming example and have not read the first part on terminology, please do so as this will build upon it. Passing around a code plug makes DMR seem plug-and-play and it’s a great way to get started. Doing so tends to leave most of us unable to change the configuration of our own radios. My goal is to demonstrate how to program a DMR ham radio code plug from scratch. This will lead to understanding how code plugs work and how to modify them. I will demonstrate programming a code plug for an example repeater, hotspot, and simplex operation.

In addition to this example, I recommend looking at available code plugs online to get an idea of different ways to improve yours. This is how I learned to program code plugs. There is no central database or repository. Code plugs are scattered around the Internet and shared online. This makes sense because local users would know where to get a code plug. Ask others in the area with similar DMR radios where to find code plugs. The ARRL Ohio site has ones for Ohio’s DMR repeaters: http://arrl-ohio.org/digital/digital.html. Where this works for local hams, a scavenger hunt is required to find working code plugs for an area they’re visiting.

Screen shots and settings referenced in this tutorial are from the TYT MD-380 CPS and radio. Similar settings can be found in other programmers and radios. Functions of not-so-obvious radio settings are described in the appropriate sections.

Software (TYT & Connect Systems)

Updating settings and memories in all DMR radios requires a computer, programming cable, and CPS. Check radio packaging because some include the cable and software, others consider it an additional accessory. Most stock CPSes can’t rearrange entries or import from other sources. If you entered a new contact and wanted to rearrange the order, you can’t. If you want to import thousands of users, you can’t. Third-party code plug editors provide this additional functionality. All are freeware.

Tytera (TYT) MD-380/390/2017 CPS and firmware: http://www.tyt888.com/?mod=download

Connect Systems documentation, CPS, and firmware: http://www.connectsystems.com/software/

MD380 Tools: https://github.com/travisgoodspeed/md380tools
Alternative firmware for the TYT MD-380. Use at your own risk.

TYT MD-380 / 390 Code Plug Editor: http://www.miklor.com/MD380/380-CPEditor.php
Editor for importing/exporting settings, importing from the DMR-MARC user database, and rearranging entries. The TYT CPS is still needed to write the code plug to the radio. This is my preferred MD-380 editor.

N0GSG’s DMR Contact Manager: http://n0gsg.no-ip.org/contact-manager/
Works for certain models of Connect Systems, Tytera, Retevis, and AnyTone radios. Editor can import/export settings and import contacts from the DMR-MARC user database, comma separated file (CSV), or existing code plug. Sorting is accomplished by clicking the header columns. Radio CPS is still needed to write the code plug to the radio.

The last three are free to use but please consider a donation to the developer if you find their work useful.

Radio ID, general settings, and FPP

After installing the CPS, in “Basic Information,” first check the “Frequency Range” is correct for the radio.

First thing to program is your “Radio ID.” You registered for one, right? It is found in the CPS under “General Settings.” Enter your assigned CCS7 ID. When passing around a code plug or loading someone else’s, update the CCS7 ID otherwise you will appear as someone else.

The “Radio Name” can be whatever name you want to give the radio.

I like to have a notification when the transmission is complete and the channel is free. This is known as the ‘CH Free Indication Tone.’ NOTE: this tone did not work with the DV4Mini for some reason.

Enable FPP so the programming can be modified from the radio’s keypad. Remember to read the radio or update changes made through FPP into the CPS. Changes will be overwritten when the code plug is downloaded again to the radio. In the CPS, FPP can be enabled in “Menu Item,” under “Utilities,” check “Program Radio.”

To enter FPP mode on the radio, go to the menu, select “Settings,” and “Program Radio.” The “Radio Program Password” in “General Settings” of the CPS is used when entering FPP on the radio. This is a commercial carryover to keep users from screwing with the radio. Enter the program password, if needed, and voila.

Hang-time, delays, and other adjustments can be made and experimented with at your leisure.

Programming example

In order to successfully program a code plug for a repeater, Color Code, talk group, and time slot configuration must be known. This information can be obtained from RepeaterBook, RFinder, owner/club website, asking another user or the repeater owner. Also ask if the repeater has access to reflectors, if desired. Brandmeister and DMR-MARC repeaters have reflector access.

A configuration example of a factitious repeater is outlined below. I’ve picked common U.S. talk groups for each time slot and will use the “Area 8” reflector as examples. When you become more comfortable, substitute the local repeater’s information.

Private calls to individuals are never a mandatory part of repeater configuration. They are possible and will be shown as an example. I include private call channels for frequent contacts as part of my hotspot code plug.

The “type” column in the table below is for informational/clarification purposes only and would not necessarily be provided by the owner (see the previous terminology write-up).

Labeling and organization of the code plug is user preference. RX Group lists and channels will need an abbreviation or prefix noting to which system it applies. When programming even 10 repeaters, some distinction must be made for clarity. Prefixes help programming because similar items are grouped together in the CPS. Rationale behind this will become clearer as you add repeaters to a code plug. Some might like to have the city spelled out (Cleveland, Dayton, Columbus, Cincinnati, Toledo) while having the talk groups abbreviated (WW, NA, Lcl 9, TAC-311, Statewide). Others like to have the city abbreviated (Cle, Day, Col, Cin, Tol) while the talk group is spelled out (World-Wide, North America, Local 9, TAC-311, Ohio). No two items may have the same exact name in any one area: Contacts, RX Groups, Channels, Zones, or Scan Lists. “SC” will be the prefix used for this example to indicate “Some City.”

Call: K8XXX City: Some City, OH Output: 444.300
Input: 449.300
Color Code: 1
Label Type ID Time Slot
World-Wide Talk group 91 1
North America Talk group 93 1
USA – Nationwide Talk group 3100 1
Local 9 (or Reflector) Talk group 9 2
TAC-310 Talk group 310 2
TAC-311 Talk group 311 2
TAC-312 Talk group 312 2
Midwest (regional) Talk group 3169 2
Ohio (statewide) Talk group 3139 2
USA – Area 8 Talk group 4648 2

Individual contact

Scott N8SY User 3139437 N/A

Contacts

Digital contacts are required to be setup first. These drives the ability to build RX Lists and channels. Every talk group, reflector, or user gets a contact. Relevant information in the table above: Label, Type, and ID.

It’s best to follow the labeling/naming provided by the c-Bridge. Some radios don’t have a lot of display real estate and names must be shortened to something like “WW” for talk group 91, “NA” for 93.

There are four fields per “Digital Contact” record in the CPS:

  • Contact Name
  • Call Type
  • Call ID
  • Call Receive Tone

“Contact Name” is simply the name you give each contact and is the label seen on the radio while receiving a call from that ID. “Call Type” is group/private/all-call setting. “Group” is for talk groups and “Private” is used for radio-to-radio calls or commands. “Call ID” is the numeric talk group, reflector, radio ID, or command number. “Receive Tone” is a per-call setting where a tone is emitted from the radio prior to unmuting the audio. This can be used as notification prior to receiving a call from a contact of interest.

There cannot be two contacts with the same “Call ID” or the same “Contact Name.” When programming different repeaters, potentially on different networks, all talk groups for all c-Bridges are entered as contacts. If two networks label talk group 3333 differently, a generic display name will have to be chosen, such as “3333” or “Group 3333.” On the other hand, “Example talk group” is talk group ID 3333 on one network and ID 3344 on another, then two differently named contacts have to be created for the same talk group (ie: “ExTG 3333” with ID 3333, “ExTG 3344” with ID 3344).

If the repeater owner says they follow K4USD’s talk group layout for example, they have nearly 70 available talk groups on their c-Bridge. Though it seems like a lot of work at the time, I recommend creating contacts for all 70 available talk groups. Having all talk groups programmed will result in less effort changing the code plug later. Brandmeister on the other hand, good luck. You really have to decide which talk groups are of interest because all talk groups are available to all repeaters and hotspots. To keeps things simple, stick with the repeater owner’s suggested Brandmeister groups.

For this programming example, contacts are pre-sorted by ID number. In the CPS software, create Digital Contacts with the listed settings:

  • Contact #1
    • Contact name: Local 9
    • Call type: Group call
    • Call ID: 9
    • Receive tone: No
  • Contact #2
    • Contact name: World-Wide
    • Call type: Group call
    • Call ID: 91
    • Receive tone: No
  • Contact #3
    • Contact name: North America
    • Call type: Group call
    • Call ID: 93
    • Receive tone: No
  • Contact #4
    • Contact name: TAC-310
    • Call type: Group call
    • Call ID: 310
    • Receive tone: No
  • Contact #5
    • Contact name: TAC-311
    • Call type: Group call
    • Call ID: 311
    • Receive tone: No
  • Contact #6
    • Contact name: TAC-312
    • Call type: Group call
    • Call ID: 312
    • Receive tone: No
  • Contact #7
    • Contact name: USA Nationwide
    • Call type: Group call
    • Call ID: 3100
    • Receive tone: No
  • Contact #8
    • Contact name: Ohio
    • Call type: Group call
    • Call ID: 3139
    • Receive tone: No
  • Contact #9
    • Contact name: Midwest
    • Call type: Group call
    • Call ID: 3169
    • Receive tone: No
  • Contact #10
    • Contact name: Ref Disconnect
    • Call type: Private call
    • Call ID: 4000
    • Receive tone: No
  • Contact #11
    • Contact name: USA – Area 8
    • Call type: Private call
    • Call ID: 4648
    • Receive tone: No
  • Contact #12
    • Contact name: Ref Info
    • Call type: Private call
    • Call ID: 5000
    • Receive tone: No
  • Contact #13
    • Contact name: Scott N8SY
    • Call type: Private call
    • Call ID: 3139437
    • Receive tone: No

Notice contacts #10 and #12 are not listed in the example table. These are standard reflector commands. A private call to ID 4000 is required to disconnect the repeater, 5000 checks link status. Talk group 9 is also required for reflector use. See the Reflector section for usage.

(Digital) RX Group lists

Once Contacts are entered, RX Group lists can be created. Relevant information from the example table: Label and Time Slot. RX Group lists are limited to a maximum of 32 talk groups per list. The intent was to monitor all talk group activity on a time slot. Only contacts set to “Group Call” can be added.

There are generally two ways of creating RX Groups. The first uses a one-to-one relationship where each talk group has its own RX Group List. The second includes all available talk groups on a repeater’s time slot into a single list. The latter creates lists unique to a repeater that cannot be reused on another repeater, unless the configuration is exactly the same. If the repeater has less than 32 talk groups on a time slot, put them all in one RX Group list. If there are more than 32, then create one RX list per talk group.

To keep repeater specific group lists unique, name the list: repeater location followed by “TS1/2” for the time slot designation. Example: “Some City TS1,” “Some City TS2.”

RX Group lists and the RX list selected for a channel are the first places to look when there is a suspected radio programming issue or nothing is being heard.

A repeater specific example is provided later. For this programming example, the one-to-one relationship is demonstrated. RX Groups are created in the same order as the repeater listing. In the CPS software, create RX Group lists and include the listed contact(s):

  • Digital RX Group List #1
    • Group List Name: World-Wide
    • Available Contact, select and add: World-Wide
  • Digital RX Group List #2
    • Group List Name: North America
    • Available Contact, select and add: North America
  • Digital RX Group List #3
    • Group List Name: USA Nationwide
    • Available Contact, select and add: USA Nationwide
  • Digital RX Group List #4
    • Group List Name: Local 9
    • Available Contact, select and add: Local 9
  • Digital RX Group List #5
    • Group List Name: TAC-310
    • Available Contact, select and add: TAC-310
  • Digital RX Group List #6
    • Group List Name: TAC-311
    • Available Contact, select and add: TAC-311
  • Digital RX Group List #7
    • Group List Name: TAC-312
    • Available Contact, select and add: TAC-312
  • Digital RX Group List #8
    • Group List Name: Midwest
    • Available Contact, select and add: Midwest
  • Digital RX Group List #9
    • Group List Name: Ohio
    • Available Contact, select and add: Ohio

Notice contacts #10-13 cannot be included because they are set to private call.

 

Repeater specific, all talk groups per time slot example:

  • Digital RX Group List #1
    • Group List Name: Some City TS1
    • Available Contact, select and add (position 1): World-Wide
    • Available Contact, select and add (position 2): North America
    • Available Contact, select and add (position 3): USA Nationwide
  • Digital RX Group List #2
    • Group List Name: Some City TS2
    • Available Contact, select and add (position 1): Local 9
    • Available Contact, select and add (position 2): TAC-310
    • Available Contact, select and add (position 3): TAC-311
    • Available Contact, select and add (position 4): TAC-312
    • Available Contact, select and add (position 5): Midwest
    • Available Contact, select and add (position 6): Ohio

Channels

This is where it all comes together. To create channels, Contacts and RX Group lists need to have been established.

Analog channels are straight forward if you’ve programmed any other analog ham radio. They will not be covered here.

Channels for the same repeater are easier to copy and paste. This depends on the software but usually involves setting up a channel, copying that channel, creating a blank channel, and pasting over the blank channel.

Some settings definitions:

  • Admit Criteria: determines when the radio is allowed to transmit.
    • Always: allows the radio to transmit any time PTT is pressed. This is the most disruptive option and may interrupt another QSO in progress.
    • Channel Free: the radio will only transmit when there is no transmission in progress on the time slot.
    • Color Code (Free): the radio will only transmit when the time slot is free on the repeater matching the color code. This mode pings the repeater at the beginning of each transmission to find a matching color code. This pinging is also an indicator if you’re making the repeater or if it is in use.
    • “Color Code” is recommended for a repeater, “Channel Free” for hotspot & simplex use.
  • In Call Criteria: action taken while receiving a call and the PTT button is pressed. This can be thought of as the ‘interrupt a call’ setting.
    • Follow Admit Criteria: follow the setting defined in “Admit Criteria.”
    • Always: always transmit, even while receiving a call.
    • “Follow Admit Criteria” is recommended for a repeater, “Always” for hotspot & simplex use.
  • Auto Scan: when the channel is selected, the radio begins scanning channels defined in the selected “Scan List.” For this option to function: create channels, add the channels to a Scan List, then create another new channel with the newly created Scan List selected and “Auto Scan” checked.
  • Lone Worker: the user receives an alert from the radio after a specified amount of time and must acknowledge by pressing any button on the radio. If the user does not respond to the alert, it is assumed the user is injured or incapacitated. The radio switches to an emergency mode so the user can be located and assisted. I have not seen this used in ham radio.
  • Allow Talkaround: this allows the radio to operate simplex mode when a repeater is not available or out-of-range. TX and RX frequencies must be different for this option to function. Talkaround is enabled/disabled manually via the radio’s “Utilities” menu, select “Radio Settings,” select “Talkaround,” then select “Turn On/Off.”
  • Emergency System: settings for an emergency alarm. I have not seen this used in ham radio.
  • Privacy: DMR includes the ability to “scramble” transmissions. This is a form of encryption and not allowed in the US.

A clear definition of “RX/TX Ref Frequency” has not been found and understood the default setting is sufficient.

Provided by Rich – G3ZIY:

These two drop-down selections are provided to change the radio’s basic oscillator frequency in the receive or transmit side. Because the radio covers such a wide frequency range, on some specific receive or transmit frequencies there can be a birdie generated internally which interferes with reception or transmission. If this occurs, by simply trying a different setting from the current setting, it should be possible to get clear reception and a clean transmission.

Leave “TX/RX Ref Frequency” at the default unless you experience problems transmitting or receiving and tack the problem down to the radio itself.

These settings will be applied to every digital channel created for this example and is a good template for actual programming:

  • Channel Mode: Digital
  • Band Width: 12.5kHz
  • TOT[s]: 180s (3 min) max for repeater & hotspot, 600s (10 min) max for simplex channels.
  • Power: “High” for repeaters & simplex – unless really close, “Low” for hotspots.
  • Admit Criteria: “Color Code” for repeater, “Channel Free” for hotspot & simplex.
  • Allow Talkaround: yes
  • Emergency System: None
  • Privacy: None
  • In Call Criteria: “Follow Admit Criteria” for repeater, “Always” for hotspot & simplex.

For this programming example, channels are created in the same order as the repeater listing. In the CPS software, create channels with the listed settings including universal settings above. SC = Some City, Ohio:

  • Channel #1
    • Channel Name: SC World-Wide
    • RX Frequency: 444.300
    • TX Frequency: 449.300
    • Contact Name: World-Wide
    • Group List: World-Wide (or Some City TS1)
    • Color Code: 1
    • Repeater Slot: 1
  • Channel #2
    • Channel Name: SC North America
    • RX Frequency: 444.300
    • TX Frequency: 449.300
    • Contact Name: North America
    • Group List: North America (or Some City TS1)
    • Color Code: 1
    • Repeater Slot: 1
  • Channel #3
    • Channel Name: SC USA Nationw
    • RX Frequency: 444.300
    • TX Frequency: 449.300
    • Contact Name: USA Nationwide
    • Group List: USA Nationwide (or Some City TS1)
    • Color Code: 1
    • Repeater Slot: 1
  • Channel #4
    • Channel Name: SC Local 9
    • RX Frequency: 444.300
    • TX Frequency: 449.300
    • Contact Name: Local 9
    • Group List: Local 9 (or Some City TS2)
    • Color Code: 1
    • Repeater Slot: 2
  • Channel #5
    • Channel Name: SC TAC-310
    • RX Frequency: 444.300
    • TX Frequency: 449.300
    • Contact Name: TAC-310
    • Group List: TAC-310 (or Some City TS2)
    • Color Code: 1
    • Repeater Slot: 2
  • Channel #6
    • Channel Name: SC TAC-311
    • RX Frequency: 444.300
    • TX Frequency: 449.300
    • Contact Name: TAC-311
    • Group List: TAC-311 (or Some City TS2)
    • Color Code: 1
    • Repeater Slot: 2
  • Channel #7
    • Channel Name: SC TAC-312
    • RX Frequency: 444.300
    • TX Frequency: 449.300
    • Contact Name: TAC-312
    • Group List: TAC-312 (or Some City TS2)
    • Color Code: 1
    • Repeater Slot: 2
  • Channel #8
    • Channel Name: SC Midwest
    • RX Frequency: 444.300
    • TX Frequency: 449.300
    • Contact Name: Midwest
    • Group List: Midwest (or Some City TS2)
    • Color Code: 1
    • Repeater Slot: 2
  • Channel #9
    • Channel Name: SC Ohio
    • RX Frequency: 444.300
    • TX Frequency: 449.300
    • Contact Name: Ohio
    • Group List: Ohio (or Some City TS2)
    • Color Code: 1
    • Repeater Slot: 2
  • Channel #10
    • Channel Name: SC Ref Disconn
    • RX Frequency: 444.300
    • TX Frequency: 449.300
    • Contact Name: Ref Disconnect
    • Group List: None
    • Color Code: 1
    • Repeater Slot: 2
  • Channel #11
    • Channel Name: SC Ref USA – 8
    • RX Frequency: 444.300
    • TX Frequency: 449.300
    • Contact Name: USA – Area 8
    • Group List: None
    • Color Code: 1
    • Repeater Slot: 2
  • Channel #12
    • Channel Name: SC Ref Info
    • RX Frequency: 444.300
    • TX Frequency: 449.300
    • Contact Name: Ref Info
    • Group List: None
    • Color Code: 1
    • Repeater Slot: 2
  • Channel #13
    • Channel Name: SC Scott N8SY
    • RX Frequency: 444.300
    • TX Frequency: 449.300
    • Contact Name: Scott N8SY
    • Group List: None
    • Color Code: 1
    • Repeater Slot: 2 – though really depends which is available on the repeater.

Zones

To use a Channel on the radio, it needs to be added to a Zone. Zones can contain analog channels too.

Some repeater and c-Bridge owners only made 16 talk groups available on their systems. That’s easy. All 16 go into one zone. Repeaters with more than 16 talk groups must have channels grouped.

Order of channels added to a zone will correspond with the dial position: first added will be position 1, second added will be 2, and so on.

Most use the zone to indicate where the repeater is located. Call signs are not often used because the city provides more detail when selecting an appropriate zone, especially when traveling.

For this programming example, only one zone is utilized. In the CPS software, create a zone with the listed channels:

  • Zone Information #1
    • Zone Name: Some City, OH
    • Available Channel, select and add (position 1): SC World-Wide
    • Available Channel, select and add (position 2): SC North America
    • Available Channel, select and add (position 3): SC USA Nationw
    • Available Channel, select and add (position 4): SC Local 9
    • Available Channel, select and add (position 5): SC TAC-310
    • Available Channel, select and add (position 6): SC TAC-311
    • Available Channel, select and add (position 7): SC TAC-312
    • Available Channel, select and add (position 8): SC Midwest
    • Available Channel, select and add (position 9): SC Ohio
    • Available Channel, select and add (position 10): SC Ref Disconn
    • Available Channel, select and add (position 11): SC Ref USA – 8
    • Available Channel, select and add (position 12): SC Ref Status
    • Available Channel, select and add (position 13): SC Scott N8SY

Scan Lists

Scan Lists are not required for radio operation but are nice for scanner like functionality across repeater time slots and frequencies. Channels have to be established first before it can be added. Scan Lists can contain analog channels too.

Order of channels added to a Scan List will correspond with the scan order. Private Call channels are unnecessary in scan lists because they are infrequent, short, and unnecessarily take up available list entries.

Activating the selected Scan List on the active channel requires assigning the “Scan On/Off” functionality to a programmable button universally in the radio. This is done in “Button Definitions” of the CPS. Another way is to create a channel with the “Auto Scan” feature enabled (see Channels section).

For this programming example, only one Scan List is utilized. In the CPS software, create a Scan List with the listed channels:

  • Scan List #1
    • Scan List name: Some City, OH
    • Available Channel, select and add (position 1): SC World-Wide
    • Available Channel, select and add (position 2): SC North America
    • Available Channel, select and add (position 3): SC USA Nationw
    • Available Channel, select and add (position 4): SC Local 9
    • Available Channel, select and add (position 5): SC TAC-310
    • Available Channel, select and add (position 6): SC TAC-311
    • Available Channel, select and add (position 7): SC TAC-312
    • Available Channel, select and add (position 8): SC Midwest
    • Available Channel, select and add (position 9): SC Ohio

Once a Scan List is created, Channels to which a Scan List applies must be updated. All of the “SC” channels.

 

That’s it! You have successfully programmed a ham radio DMR code plug from scratch! Now, substitute the local repeater’s information and begin having fun!

Suggested talk groups

Here is a suggested list of talk groups to get started on a Brandmeister network U.S. repeater or hotspot. Each bullet can be a separate zone.

  • Wide area groups (World-Wide: 91, North America: 93, USA – Nationwide: 3100)
  • Regional (Midwest: 3169, Southern Plains: 3175, Northeast: 3172, Mountain: 3177, etc.)
  • Ohio & surrounding states (Ohio: 3139, Indiana: 3118, Michigan: 3126, Pennsylvania: 3142, West Virginia: 3154, Kentucky: 3121)
  • Local & tactical (TAC) (1, 2, Local 9, TAC-310, TAC-311, TAC-312, TAC 1: 8951, TAC 2: 8952, …, TAC 9: 8959)
  • Reflectors & commands (Disconnect: 4000, USA – Nationwide: 4639, USA – Area 0: 4640, USA Area 1: 4641, …, USA – Area 9: 4649, Ref Info: 5000)
  • Special use (Parrot: 9990, audio test: 9999)

Reflectors

Reflectors are different than talk groups. With a talk group, keying automatically establishes the connection and is dropped after 15 minutes. Reflectors must be manually linked and unlinked. Time slot 2 is always used for reflectors and associated commands.

At user discretion, programming can include reflectors of interest. It’s a good idea to program the control commands into a code plug regardless of the desire to use reflectors. A repeater maybe connected to a reflector and left abandoned. Having those commands programmed are good for knocking down an abandoned link.

To establish reflector connection, a private call is made to the reflector ID. Some radios can make on-the-fly private calls by entering the ID on the keypad. Others need a channel programmed with the reflector ID in the “Call ID” field with “Call Type” set to “Private Call.”

A “Group Call” channel programmed to time slot 2, talk group 9 is required to carry on the QSO. This is known as “Local 9” on many repeaters.

When the QSO is finished, another “Private Call” is made to ID 4000 to disconnect the reflector. Private Call to ID 5000 will check the status at any time.

For two stations to establish communication on the “USA – Area 8” reflector (4648), both stations initiate a “Private Call” to ID 4648 on time slot 2, for 2 seconds. Switch their radios to “Local 9” for the QSO. When done, both initiate a private call to 4000 to disconnect their nodes.

Simplex

Like any good communication system, DMR doesn’t have to be operated using a repeater.

Standard DMR simplex configuration and frequencies in the U.S.:

  • Talk group (contact ID and RX Group): 99
  • Color Code (channel): 1
  • Time slot (channel): 1
  • Admit Criteria (channel): Always (though I like to use “Channel Free”).
  • In Call Criteria (if applicable, channel): TX or Always.
  • UHF
    • 441.000
    • 446.500
    • 446.075
    • 433.450
  • VHF
    • 145.790
    • 145.510

 

Simplex code plug programming template:

  • Contact
    • Contact name: Simplex
    • Call type: Group call
    • Call ID: 99
    • Receive tone: No
  • Digital RX Group List
    • Group List Name: Simplex
    • Available Contact, select and add: Simplex
  • Channel, common:
    • Channel Mode: Digital
    • Band Width: 12.5kHz
    • TOT[s]: 600s (10 min) max.
    • Power: High
    • Admit Criteria: Always
    • Allow Talkaround: yes
    • Emergency System: None
    • Privacy: None
    • In Call Criteria: Always
    • Contact Name: Simplex
    • Group List: Simplex
    • Color Code: 1
    • Repeater Slot: 1
  • Channel 1
    • Channel Name: Simplex 441.000
    • RX Frequency: 441.000
    • TX Frequency: 441.000
  • Channel 2
    • Channel Name: Simplex 446.500
    • RX Frequency: 446.500
    • TX Frequency: 446.500
  • Channel 3
    • Channel Name: Simplex 446.075
    • RX Frequency: 446.075
    • TX Frequency: 446.075
  • Channel 4
    • Channel Name: Simplex 433.450
    • RX Frequency: 433.450
    • TX Frequency: 433.450

Hotspots

Many hotspots follow very similar programming to that of a repeater. Others offer a ‘simple’ mode utilizing a single talk group in the radio to make programming easier. I prefer my hotspot to function like a repeater.

Hotspot devices like the SharkRF OpenSpot and DVMega act similar to a repeater in terms of the programming. Follow the programming tutorial above with differences being the TX frequency would match the RX frequency (simplex) and time slot is always 2 (though the OpenSpot can use either).

For the OpenSpot, every RX Group will need to include “Local 9” to hear the voice announcements from the OpenSpot. These are the ‘connected’ and ‘profile’ announcements. There are additional control commands that can be used with the OpenSpot, like changing profiles, which are outlined in the manual: https://www.sharkrf.com/products/openspot/manual/

The OpenSpot can alternatively operate in a simple mode where transmissions to and from the Internet are routed to and from talk group 9 for the radio. Example: hotspot is connected to talk group 3139, the radio receives and transmits using talk group 9; connected to talk group 3100, radio still uses 9. Using this method, talk group changes have to be made through the OpenSpot web interface including changing the ‘Reroute ID.’

The DV4Mini will ONLY operate using talk group 9. For this reason, programming talk group 3139 into the radio for the DV4Mini will NOT work. No other talk group configuration will work with the DV4Mini EXCEPT talk group 9!

Brandmeister Extended Routing (XTG) is needed for talk groups not listed in the DV4Mini DV4MF2 application (eg: TAC-310, TAC-311, or TAC-312).

A programming example for OpenSpot in ‘simple’ mode or the DV4Mini. 446.900 is the simplex frequency chosen for the hotspot:

  • Contact (does not need to be created if “Local 9” already exits.)
    • Contact name: OpenSpot/DV4Mini
    • Call type: Group call
    • Call ID: 9
    • Receive tone: No
  • Digital RX Group List (does not need to be created if “Local 9” already exits.)
    • Group List Name: OpenSpot/DV4Mini
    • Available Contact, select and add: OpenSpot/DV4Mini
  • Channel
    • Channel Mode: Digital
    • Band Width: 12.5kHz
    • TOT[s]: 180s (3 min) max.
    • Power: Low
    • Admit Criteria: Always (though I like to use “Channel Free”).
    • Allow Talkaround: yes
    • Emergency System: None
    • Privacy: None
    • In Call Criteria: Always
    • Channel Name: OpenSpot/DV4Mini
    • RX Frequency: 446.900
    • TX Frequency: 446.900
    • Contact Name: OpenSpot/DV4Mini (or Local 9)
    • Group List: OpenSpot/DV4Mini (or Local 9)
    • Color Code: 1
    • Repeater Slot: 2

You’re now setup to use OpenSpot in simple mode or DV4Mini!

DMR in Amateur Radio: Terminology

Read the rest of the series in the DMR in Amateur Radio series category.


Planning on picking up a new DMR radio at Dayton? DMR saw growth due to inexpensive offerings of quality radios at last year’s show. I suspect this year will be no different with new offerings from vendors and many more groups supporting DMR. How many of you know the terminology and could program a radio from scratch?

Passing around a code plug makes the mode seem plug-and-play and it’s a great way to get started. Relying on existing code plugs leaves most of us unable to change the configuration of our own radios. What happens if you need to change programming, add a repeater, the code plug information is old, or wrong?

Here I’ll explain DMR concepts and terminology as it relates to the Ham Radio service. Next, I’ll walk through programming an example repeater and hotspot for devices like the SharkRF OpenSpot, DVMega, and DV4Mini. This series is intended for the beginner to better understand the technology by providing practical reasons and examples. These won’t be tied to a specific radio or repeater though there will be differences between vendors, models, repeaters, networks, and configurations in practice. Consult the repeater owner with specific questions.

About DMR

Digital Mobile Radio is an open digital mode standardized by the European Telecommunications Standards Institute (ETSI). It was first published in 2005 and is used in commercial products around the world. Open means the specifications are available for anyone to use, modify, add, or remove features as one sees fit. DMR uses two-slot Time-Division Multiple Access (TDMA) allowing two channels in 12.5 kHz of bandwidth using the AMBE+2 proprietary codec (or vocoder, voice encoder). TDMA is old cellphone technology in use before LTE and GSM. “Spectrum efficiency of 6.25 kHz” is often used which is ‘blah blah’ marketing speak for ‘it really uses 12.5 kHz, half the time.’

ETSI’s objective was to have a low cost, interoperable, digital system. In reality, manufactures added their own proprietary features that make their radios non-interoperable with other manufactures. Motorola’s system is called MotoTRBO which is a DMR capable radio with their own proprietary features. Motorola did not create nor invent DMR but they help bring it to the U.S.

DMR is the first time a commercial system was adopted for ham use. Most of the terms heard in relation to DMR are carryovers from the commercial world. In comparison, D-STAR and Fusion were specifically designed for ham radio use. D-STAR, Fusion, and DMR are all open standards. This means commercial gear is setup for commercial users while ham gear is setup for the way hams use radios. All three use the proprietary AMBE codec allowing 12.5 kHz wide transmissions. DMR achieves two simultaneous transmissions in the same bandwidth. D-STAR uses the AMBE codec while DMR and Fusion use AMBE+2.

D-STAR has an Internet and networking component accessible by users built into the standard. This includes an APRS-like position reporting system called D-PRS. Fusion can transmit pictures messages, and position information to other stations. DMR data features in ham radio are underutilized. Up to this point, text messaging was the most widely used data feature. The Brandmeister network is the first network to begin taking advantage of position reporting data.

Most associate the openness of a standard with how many vendors sell equipment, which is an inaccurate assumption. There have been devices since D-STAR became popular that could turn any analog radio into a digital radio, including repeaters. Now, how much does that equipment cost is the more likely driving popularity factor.

Is it legal?

I hear this issue come up from time-to-time in the Ohio section. I’m sure many more have the same question. DMR is legal (in the U.S.) under Part 97 as of a decision issued on June 9, 2014 by the FCC in docket FCC-14-74. This decision modified Part 97 rules to allow emission types that cover DMR: FXD, FXE, and F7E into Sections 97.3(c) and 97.307(f)(8). Any further questions, please consult an ARRL legal or technical resource.

Keep in mind however, the DMR ID transmitted by the radio IS NOT a legal FCC ID. It’s analogous to kerchunking a repeater without identifying. There must be an identification using voice or something in the data stream must contain the station’s call sign. This includes identifying when linking and unlinking systems. D-STAR and Fusion transmissions contain the call sign in the data stream. Repeaters ID with CW like analog repeaters. The DMR ID in the data stream does not contain a valid FCC call sign and therefore does not constitute valid identification under Part 97. The transmitting station’s name and call sign may appear on your radio display, it still does not make for valid identification. See “Contacts” for more on displayed names and call signs.

Radios, CPS, and Code plugs

Inexpensive DMR radios are easy to come by. There are over 40 manufactures producing DMR equipment. The TYT (Tytera) MD-380 is the most popular ham friendly option for $100 at R & L and Universal Radio – remember to support your local dealers. Connect Systems radios are pricier but come with actual support and a wider selection, including mobiles. The super-cheap Baofeng DMR radios are just like all other Baofengs, crap.

Repurposed radios or new radios that appear on the market will work with the ham radio infrastructure. The radio must cover the appropriate VHF/UHF band and be “DMR Tier II” compliant. DMR Tier I is unlicensed 446 MHz in Europe, similar to FRS. Tier II, aka conventional, is licensed services needing higher power and IP Site Connectivity (IPSC) using the Internet for site linking. Tier III builds on Tier II adding trunking capability and advanced data services.

It’s estimated that 95% of all DMR repeaters in the U.S. are UHF with few VHF. Popular radios are only single band – a commercial carry over because commercial licenses usually cover a single band. Dual band DMR radios should be available by Dayton (2017). In the state of Ohio as of this writing, RepeaterBook is showing 60 DMR repeaters: 3 VHF, one 900 MHz, and the remaining are UHF… so make sure you pick up a UHF model.

To update settings and memories in all DMR radios requires a computer, programming cable, and Computer (or Customer) Programming Software referred to as “CPS.” CPS is the later version of RSS (Radio Service Software) which was used by radio programming professionals and commercial radio resellers. Front Panel Programming (FPP) is a software enabled setting allowing programming via the radio’s front panel. This method allows modification of important programmed functions but not all, so a computer is still required.

The radio utilizes a code plug which is a small program containing radio settings, repeater configurations, Talk Groups, contacts, power outputs, Color Codes, PL tones, signaling methods, and more. A code plug is similar to programming a ham radio with RT Systems or CHIRP. Settings and memories are programmed into the software then downloaded to the radio. Code plug is a Motorola term when physical jumpers were plugged into old radios enabling certain options. Later microprocessor based radios moved the settings internally but the term still stuck referring to radio settings. Today, they resemble small relational databases where settings and data are interrelated and interdependent. Making a change in one area may impact other settings that rely on that data. Next in this series will be programming a sample code plug.

In general, code plugs are radio specific. A TYT MD-380 will work on a MD-390 because the internals are almost identical. However, Connect Systems is not going to work in a Motorola or Hyterra. The newer a radio or less popular a radio is will make it harder to find preprogrammed code plugs.

DMR radios, unless specifically labeled, are not compatible with other ham radio digital systems like D-STAR and Fusion. Advancements are being made to incorporate all digital modes into a single radio by third-party developers.

Registering

Every user on any DMR network requires a CCS7 ID commonly referred to as a “DMR ID” or “radio ID.” CCS stands for “Callsign Communication System” (or Call Connection Service) and is a subscriber identification containing 7 digits. Users registered in Ohio are assigned 3139xxx, where ‘xxx’ is a 3-digit consecutive ID. Ohio used up all 3139xxx IDs and has rolled over to 1139xxx. One might note that the Ohio Statewide Talk Group has the ID 3139! This radio ID has its place on D-STAR, DMR, and Fusion networks but the reasons are beyond introductory level. The CCS7 is a universal ID that will work on any DMR network.

If you don’t already have a DMR ID, follow the instructions on the DMR-MARC registration site. DO NOT REQUEST multiple IDs for a single callsign! Hotspot devices or different radios don’t need separate IDs. Obtaining an ID may take up to 3 days and the process can be started even before buying a radio. If you think you might already have an ID: on the registration page, click the “Database” link, click “User Database,” and search using your call sign (current or previous). To change the registered information for a call sign, use the “Contact Us” link.

Repeaters, c-Bridges, and Networks

In order to program a DMR repeater into a DMR radio, a couple pieces of information about the repeater are needed. To program an analog FM repeater into a ham radio, a user needs the repeater transmit frequency, offset/receive frequency, and PL/DCS tone configuration to access the repeater. Different information is required for a DMR repeater: Color Code and Talk Group configuration is needed. The functionality of a PL/DCS tone is replaced by a “Color Code” (CC) or “Colour” when in Europe. There are 16 possible Color Codes, 0-15. A DMR repeater cannot be Color Code-less. Like PL, the Color Code must match the repeater or the repeater cannot be accessed.

Configuration of the repeater depends on the c-Bridge or network it is connected to. C-Bridge is a communication device to route calls between different networks. There are many ham radio c-Bridges: DMR-MARC, DCI, NATS, CACTUS, K4USD, Crossroads – for example. Some c-Bridges explicitly define repeater configuration, including limiting available Talk Groups only to certain regions. For example, “Rocky Mountain regional” may not be available on Ohio repeaters. Other c-Bridges allow owners leeway in their configuration. User linking is done via Talk Groups or reflectors. Repeaters cannot be linked to directly by other repeaters or hotspots.

Brandmeister is a decentralized network of master servers. Master servers are different from a c-Bridge but an oversimplification is they both provide similar linking functionality. The Brandmeister name is synonymous with DMR but it cross-links with other networks and digital systems like D-STAR and APRS. Work is being done on linking Fusion and P25. All Talk Groups and reflectors on Brandmeister are available to all repeaters and hotspots connected to that network.

As with any linked repeater system, there are significant time delays in fully establishing connections. On an analog repeater system with multiple voted inputs, it will take two or three seconds for the system to fully come up. From the time the radio is keyed, the signal has to reach the inputs, the inputs reach the voter, voter decides which input is the strongest, bring up the transmitter(s), and all receiving stations pick up the repeater’s signal. Fast-keying is one of my pet-peeves where a transmitting station quickly keys their radio and starts talking. Receiving stations only hear the last letter or two of a callsign. Delays are even longer when networking and routing packets is involved over a wide area. This is true for any networked mode: D-STAR, DMR, Fusion, Echolink, AllStar, or IRLP. When first establishing connection on a repeater, first key up for 2 to 3 seconds before saying or doing anything to being up all links. Once links are established, they tend to react quicker so that delay can be dropped to 2 seconds on subsequent transmissions.

Another note when linking DMR systems, at the time a repeater or hotspot is connected, an existing transmission might be taking place on that Talk Group. Nothing would be heard by the station that linked. They think the Talk Group is free and end up disrupting an in progress QSO by calling another station. At the point the system is linked to a Talk Group with a transmission in progress, nothing will be heard until the first station unkeys. After linking, wait a minute while making sure the Talk Group is not already in use before calling.

At some point, you will be ‘bonked’ from a repeater. This is the tone a radio might emit after attempting to access a repeater. There are many reasons for being bonked: repeater didn’t respond because it is offline, wrong Color Code is programmed for the channel, out-of-range of the repeater, an incorrect Talk Group/time slot configuration is programmed, Talk Group doesn’t exist, someone could be making a private call, or there is some other error in the radio configuration. Most likely reason: another Talk Group is in use on the same time slot.

More information about repeaters and time slots is in the “Talk Group” and “Time Slot” sections.

Repeater owners: one big problem with DMR has been the lack of information on your repeater. It’s pointless going through the trouble of putting up a digital repeater and not telling people how to access it. Post the Talk Group layout, how to access them, and include any other procedures users should follow. Post this information on a website, use RepeaterBook or RFinder as both have provisions for listing Talk Groups. It can make all the difference in attracting new users.

Time slot (TS)

Time slots allow two conversations on the same repeater, on the same frequency, happening at the same time, and be completely separate from each other. This is what people refer to when they say ‘DMR is two repeaters in one.’ A time slot can be thought of as a ‘channel.’ Each repeater has two time slots or two channels. A user can only access one time slot at a time. Two Talk Groups cannot be accessed on the same time slot simultaneously.

Img: http://www.hytera.com/navigation.htm?newsId=1086&columnType=news

Each time slot occupies the signal for less than 30ms at a time. Within a 60ms window on a repeater: time slot 1 is transmitted for 27.5ms, then a gap of 2.5ms, time slot 2 is transmitted for 27.5ms, another 2.5ms gap, and then repeats with time slot 1. The human ear cannot detect that small of a gap in audio. A repeater transmits both time slots even though one channel is in use and the other idle. This cuts down on the on/off keying of the repeater. User radios, on the other hand, transmit for 27.5ms each 60ms window. This results in extended life of the handheld battery.

Talk Group (TG)

A way for groups of users to be separated on each time slot, without distracting or disrupting other users, is to use Talk Groups. A commercial example would be a baseball stadium. The ball park might have services like facilities management, guest services, security, first aid, concessions, traffic, and ushers all using the same radio system but the conversations are completely independent. Not all services would be using the frequency at the same time for the entire game. Each radio stays muted until their assigned Talk Group appears on the frequency, then it would unmute or activate for that transmission. Their radios would have the ability to switch over to another Talk Group. Security might need to alert first aid of a guest injury or guest services may need to notify facilities of an issue in one of the suites.

Ham radio Talk Groups can be created for any purpose and usually fall into the categories of wide-area (worldwide), regional (North America, Midwest), or a particular purpose (Ohio Statewide, XYZ club). There can be many Talk Groups available on a repeater time slot. Time slot 1 could have 5 while time slot 2 may have 25. Some c-Bridges organize wide-area Talk Groups on time slot 1 with regional, local, and special use on time slot 2.

Locals are unique and only heard on that repeater, not routed to the network in most cases. Special use includes Parrot and audio test. Parrot repeats received audio by the repeater. Audio test is a Talk Group linked to an online audio meter by the Northern California DMR Group (NorCal DMR). This has been deprecated because Brandmeister Hoseline has an audio meter for each Talk Group. Hoseline lets anyone listen to any Brandmeister Talk Group with a web browser: https://hose.brandmeister.network/. It is the “firehose” of Talk Group traffic.

The larger an area served by a Talk Group, the more repeaters and time slots are tied up simultaneously. Ohio Statewide keys about 60 repeaters at once. Calling and worldwide Talk Groups could be in the thousands and should be thought of as the 146.520 of DMR. Etiquette is to make contact then move to another Talk Group or a reflector. Tactical or TAC Talk Groups are used for longer QSOs and nets as they tie up the least number of repeaters and are selectively linked-up by repeater users.

Repeater configuration includes static Talk Groups – always connected, and dynamic Talk Groups – commonly referred to as PTT (push-to-talk). Dynamic are linked by a user for a period of about 15 minutes. After 15 minutes of no local activity, that Talk Group is dropped and the repeater returns to the static group on that time slot.

C-Bridges and networks tend to keep the same Talk Group numbering (ID) and allow cross-patching to others to keep things consistent. This means Ohio Statewide is the same group and ID on DMR-MARC, DCI, K4USD, Brandmeister, and others.

Brandmeister offers the flexibility for any two radios to key-up on a random Talk Group ID and essentially create their own Talk Group. This can be done using any Brandmeister connected repeater or hotspot. This Talk Group is not hidden or private because it will show up on Hoseline allowing anyone to listen in and any other stations can join in too. A list of known Brandmeister Talk Groups is provided in the links section.

Reflector

As described in the repeaters section, some c-Bridges severely limit the Talk Groups a repeater can access. What happens when you’re traveling to Florida and want to talk to your buddies back in Ohio? Or worse, talk to a buddy in England? Talk Group options become limited to wide-area ones which tie-up a lot of repeaters for a lengthy QSO. Reflectors are a way to solve this problem.

Similar to D-STAR or IRLP reflectors, nodes are connected in a round-table style configuration. When one station transmits, their signal is transmitted by all other connected nodes. So far, these sound like Talk Groups. The difference is reflectors are available worldwide and repeater users have to specifically link and unlink a reflector. This means only repeaters and hotspots connected to that reflector are tied up during transmissions and not thousands of repeaters on world-wide Talk Groups.

Reflectors are a 4-digit ID that begins with a 4, 4xxx. Not every c-Bridge has granted reflector connectivity. DMR-MARC and Brandmeister have this ability. Some reflectors are cross-patched to Talk Groups on Brandmeister so either the reflector or Talk Group ID can be used. Reflectors are seldom used on Brandmeister because of the availability of all Talk Groups to all repeaters and hotspots on the network. However, reflectors still serve the intended purpose if a station isn’t in range of a Brandmeister repeater.

Contacts

There are three call types in DMR: Group Call, Private Call, and All-Call. Each is a contact within the radio. A Group Call is a transmission from one radio to a group of radios. These instantly link-up dynamic Talk Groups when PTT is pressed. When you press PTT on Ohio Statewide (3139), all other radios configured for 3139 unmute. All-Call is a carryover from commercial and is programed into supervisor radios allowing the ability to make a call to all radios on the same time slot regardless of talk group. All-call is not used in ham radio.

Private Call is a call from one radio to another radio using the other radio ID (see Registering). In ham radio, that ID is associated with an individual. To return a private call, that users’ radio ID must be stored and selected in the radio. These calls are routed to a user’s last known location on the network, like D-STAR call routing. If someone keyed a DMR repeater in Dayton, then travels to Cleveland, the private call is still routed to the Dayton repeater. Private calls are generally discouraged and even disabled on some repeaters. They tie up a time slot and could clobber an existing QSO. Other users will have no idea why they cannot access the time slot. Private calls are acceptable between hotspots because they are lower profile with only a few users. The DV4Mini can receive private calls but didn’t seem to know how to handle returning a private call.

A common issue I hear on DMR all the time is ‘I don’t see your name and call sign on my display. I must be doing something wrong!’ This behavior depends on the contacts stored in the receiving radio. To see the transmitting station’s name or call sign on the radio display, that radio ID must be setup as a contact in the receiving radio. When the radio receives a radio ID in the contact list, the Contact Name is displayed in place of the radio ID. If the radio ID is not in the contact list, the radio displays what it knows which is the seven-digit radio ID that comes across as part of the data stream in the transmission.

The MD-380 for example, has room for 1,000 contacts which is a carryover from commercial. Most police departments and businesses don’t have more than 1,000 radios in their fleet. Ohio has 1,400+ registered users so the MD-380 cannot store all registered users. Modified firmware makes this possible or look for a radio with more memory for contacts.

(Digital) RX Group lists

An RX Group List is a list of Talk Groups that will unmute or activate the radio when received on the same time slot as the current channel. RX lists were created as a way to monitor activity on the repeater regardless of channel. Key thing to remember is these lists are time slot specific. A radio is set to Local9 with Ohio Statewide and Local9 (both on time slot 2) included in the same RX Group list. When a conversation starts up on Ohio Statewide, the radio would unmute even though Local9 is selected. One can turn their radio to Ohio Statewide and join in. These can cause confusion if a station was heard on Ohio Statewide but the reply transmission went out over Local9. Be careful and mindful of the selected channel before transmitting.

If the radio was set to Local9 and a conversation started on North America calling on time slot 1, nothing will happen. The radio would remain muted because the time slot is different – even if they are in the same RX Group list.

As the name implies, these lists only include contacts set to Group Call for their Call Type. Private calls are not included in these because a radio will always unmute when a private call for that radio ID comes over the time slot. RX Groups keep users from interrupting conversations on repeater Talk Groups they are not monitoring. While intended to cut down on interruptions, some will quickly realize they are hearing a lot more Talk Group traffic then they care about.

When a radio does not unmute as a signal is received, the frequency-in-use LED would illuminate or some other ‘in use’ indicator would be seen. This indicates a Talk Group is not in the RX Group list for the channel, another time slot is in use, or a private call is occurring. To scan across time slots and channels, see Scan List.

Channels

This is where it all comes together. Channels are like memory settings of a typical ham radio. These tell the radio which modulation type to use (analog or digital), frequency, time-out-timer setting, power level settings, and scan lists. It ties together DMR specific settings like Color Code, time slot, digital contacts, and RX Groups. Analog channels are programmed here too.

Zones

A Zone is a way of organizing channels. Most radios allow a maximum of 16 channels per zone because that’s how many positions are available on the channel selector knob on top. Channels not included in a zone cannot be selected on the radio. There can be one or many zones per repeater or hotspot. There is no limit to how channels are arranged within a zone.

Zones are selected through the radio’s menu. When a new zone is selected, channels assigned to that zone become positions on the channel selection knob.

An un-programmed position will result in a continuous error-sounding tone from the radio until a valid position is selected. This was probably intended as a notification for commercial users to indicate they are on a channel where no transmissions will be heard, so a continuous tone sounds.

Scan Lists

RX Group lists receive Talk Groups on the same time slot. Scan lists scan different channels. These lists are closely related to the scan functionality of a scanner. Lists can include the different time slots, different frequencies, and include analog channels. Scan lists have a limit of about 32 channels per list. These lists are not required for radio operation.

Roam Lists

Roam lists are similar to when a cell phone switches towers automatically. They are useful when mobile. Though not implemented by many manufactures, the same functionality can be accomplished by creating a Scan List. The scan list would contain a single Talk Group across many repeaters. Roam lists only work well for static Talk Groups. Otherwise, the Talk Group has to be activated on each repeater, essentially defeating the purpose.

Hotspots

Hotspots are low powered (20mW or so) transceiver devices that connect to a network over the Internet. The hotspot becomes the gateway to the network. An Internet connection is required. Some hotspots will require a computer (DV4Mini) or Raspberry Pi (DVMega, DV4Mini) while others are standalone (OpenSpot). Lastly, a transceiver capable of that mode is needed. SharkRF OpenSpot, DVMega, and DV4Mini are all capable of operating D-STAR, DMR, and Fusion. A D-STAR DVAP, for example, would not work with DMR or Fusion.

After trying out the DV4Mini in a number of configurations with different users, the device needs a lot more work. As of this writing, I would personally stay away from it. DVMega’s are good for tinkering or finding a working software image, which can be frustrating. The SharkRF OpenSpot is my recommendation for a hotspot because of stability, ease-of-use, features, and updates.

Communication Examples

Situation: Find any station to make an extended QSO.
Solutions: Call out on any Talk Group: this is K8XXX listening on ‘name of the Talk Group.’ Ie: “This is K8JTK listening on Ohio Statewide.” When on a “Calling” Talk Group and contact is made, keep the QSO relatively short, move to another Talk Group (TAC Talk Groups for example) or Reflector for the duration of the QSO.

Situation: Make a sked with a buddy on the same local repeater.
Solutions: Use Local9 when all stations are on the same local repeater. Use statewide or other Talk Group when you want to bring in other stations not on the local repeater or hotspot.

Situation: Make a sked with another station on a different repeater.
Solutions: Both stations must have both repeaters linked to the same Talk Group or Reflector. Then call the other station as one normally does. For different regions or countries: a common talk group between both repeater networks must be found. Typically, TAC or any Talk Group on Brandmeister.

Situation: Make a sked with a station on a repeater and other on a hotspot.
Solutions: Hotspot access is only available on DMR-MARC and Brandmeister networks. A common talk group between the repeater network and hotspot network needs to be used. Typically, statewide, TAC, or any Talk Group on Brandmeister. Both stations must link to the same Talk Group or Reflector. Then call the other station as one normally does.

 

If you’re still here, you made it through the terminology portion of this series, which is the hardest part. The next will bring it all together as I walk through creating a sample code plug for a DMR repeater and hotspot. DMR has come a long way since I jumped into it at Dayton in 2016. Likely in the next year, explanations here may change slightly and improvements in radio technology may make code plugs unnecessary.

Links

About CCS7 ID system: https://register.ham-digital.org/html/ccs7-ENG.html
List of BrandMeister Talk Groups: http://www.dmr-utah.net/talkgroups.php, https://brandmeister.network/?page=talkgroups
Ham Radio 2.0 podcast (DMR 101 (Greater Houston Hamfest Forum)): http://www.livefromthehamshack.tv/2017/04/18/episode-90-dmr-101-greater-houston-hamfest-forum/

References used for this writeup
Ham Radio 2.0 podcast (DMR 101 (Greater Houston Hamfest Forum)): http://www.livefromthehamshack.tv/2017/04/18/episode-90-dmr-101-greater-houston-hamfest-forum/
BrandMeister Getting Started Guide: http://n8noe.us/DMR/files/BrandMeisterGettingStartedGuide.pdf
Connect Systems CS600/CS700 Programming Guidelines: http://www.connectsystems.com/products/manuals/CS600_CS700_Programming_Guidelines.pdf
Amateur Radio Guide to Digital Mobile Radio (DMR) by John S. Burningham, W2XAB: http://www.trbo.org/docs/Amateur_Radio_Guide_to_DMR.pdf

Flmsg Forms Rendered as Web Pages

You can spice up your Flmsg forms and make them look like web pages!  The option in Fldigi to open a received form in the web browser is an option frequently enabled.  It allows the entire form to be displayed or printed from the browser.  In order for the browser to render the form, HTML code is generated.

Many don’t realize that ANY web coding language included in the form is rendered by the browser: HTML, CSS, JavaScript.  This means background colors can be changed, hyperlinks included, images displayed, audio or video files played, redirected to websites or YouTube videos, etc.

Standard disclaimer, this is not a good idea during a real NBEMS event for many of the reasons mentioned below.

Things to keep in mind:

  • The message sender has to be knowledgeable in programming or use W3Schools to learn web programming languages.
  • For the HTML to be rendered, receiving stations must have the “Open in browser” set in Fldigi (as described here in NBEMS settings).  The Flmsg window on the receiving end will look like gibberish (code).
  • Website contents, audio or video file contents are not being sent over or using Flmsg.  They are being linked to over the Internet.   This means any links or URLs included but be accessible on the public Internet (not a private internal intranet where receiving stations may not be on the same network).
  • Not every receiving station may be connected to the Internet.  They could be in a location without Internet access or because they’re in a temporary/portable situation.

I’m not going to even begin to scratch the surface on everything that can be included so use W3Schools for ideas.   A couple simple examples:

Turn the page background light-blue:

<style>
body {
background: #3399ff; /* light blue */
}
</style>

Include a link to my website:

<a href="http://www.k8jtk.org/">Link to K8JTK.org, a totally awesome website with lots of Ham Radio tutorials!</a>

Include my mug (picture):

<img src="https://www.jeffreykopcak.com/wp-content/uploads/2015/09/DSCF5081-K8JTK-300x284.jpg" width="300" height="284" />

To view or test code as a receiving station might see it, in Flmsg click File.

Select View.

Click Html delivery.

One of my favorites is the redirect to a web page.  When received, the web browser will direct their web browser to load a website.

I say this is my favorite because there is a story behind it.  Every sound card digital training class I present or article I write, I preach DO NOT SET YOUR SOUND INTERFACE TO YOUR RADIO AS DEFAULT!!! as instructed.  One reason is noted in that post.  One day, I decided to see who followed instructions.  I sent an Flmsg with a redirect to a YouTube trailer video.  Once the video loaded, one ham (who will remain nameless) started transmitting the trailer video over the air (which included music).  Don’t be that guy.

<meta http-equiv="refresh" content="0;url=http://wcarc.bgsu.edu/" />

To wait a specified number of sections, change 0 to that number of seconds.  0 means immediately load the included URL.

Web site loaded in the browser.

Recovering a Partially Received Flmsg Message

We’ve all been there.  Part of a Flmsg message was missed because the receiving station was off frequency, in the wrong mode, or not paying attention.  The issue is corrected and most of the message is received.  However, Fldigi doesn’t know what to do with the form because most of the headers are missing – meaning it won’t open in the browser or Flmsg.

I will demonstrate how I recover Flmsg messages that I’ve partially missed.  How much of the message can be decoded depends on how long it took to rectify the situation while the other station was transmitting.  The sooner, the better.

The key is to start decoding the message before the form/message type is transmitted.  This is transmitted fairly early on.

NOTE: re-transmitting incomplete forms in a real event is NOT acceptable!  That is, this (or similar) procedure is used to recover a message, then that message is transmitted in a real event.  Ask for a re-transmit, if possible.

Check out my other Fldigi and Flmsg posts.

Example message

Example plaintext form message used for this tutorial:

The entirety of the message as transmitted through Fldigi:

... start
[WRAP:beg][WRAP:lf][WRAP:fn K8JTK_Recovering_a_partially_missed_Flmsg.p2s]<flmsg>4.0.1
:hdr_fm:21
K8JTK 20172603194239
:hdr_ed:21
K8JTK 20172603172413
<plaintext>
:tt:19 Flmsg recovery demo
:to:24 Digital Net Participants
:fm:5 K8JTK
:dt:10 2017-03-25
:tm:5 1612L
:sb:35 Recovering a partially missed Flmsg
:mg:491 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed tempor mi lectus, at ultrices leo suscipit et. In
aliquet semper pulvinar. Phasellus consequat nisi at orci feugiat euismod ac vitae magna. Proin a nisl est. Sed dignissim
faucibus sagittis. Proin a ornare mauris. Maecenas efficitur ante eu mauris tempus congue. Pellentesque at nulla purus.
Morbi nec pharetra nulla, at bibendum lorem. Donec et libero non ex ultricies porta. Aliquam quis mauris aliquet mi
efficitur ullamcorper.
[WRAP:chksum 780E][WRAP:end]
... end

In this message the form type is <plaintext>.  Everything before that tag could be missed and the message will still open in Flmsg using this process.

Recovering the form

In the Fldigi receive pane, part of the message was lost.  Note that <plaintext> form type is still received.

When the transmission is complete, Fldigi won’t open Flmsg or open the message in the web browser because not all headers were received.

Right-click in the receive pane.

Click Select All.  This will highlight the entire contents of the receive pane.

Right-click again and click Copy.  This will copy the entire contents of the receive pane to the clipboard.

Open a plaintext text editor like Notepad, Notepad++, Vim, or Nano.  Do not use Microsoft Word or LibreOffice Writer.

Right-click in the text document and select Paste.

Remove any other unnecessary text or other messages that are not part of the intended message.  In this case, the lines about ‘reading macros’ are removed.

Save the message someplace easy to remember like the Documents folder or Desktop.  I’ll put them in the same directory as messages extracted from Fldigi: C:\Users\USERNAME\NBEMS.files\WRAP\recv.

Enter a File name.

Leave the extension as “.txt

Click Save.

Open Flmsg.

Click File.

Click Open.

Navigate to the location where the file was saved from the text editor.

Next to the file name box, select All Files.

Click the file name.

Click Open.

The recovered message is open in Flmsg!

If the form type was missed, a message will indicate an error in the data file (see Failed to Receive Form Type below).

To open the Flmsg form in the browser, in Flmsg click File.

Select View.

Click Html delivery.

Failed to Receive Form Type

If the message type was not received, there are still ways to recover the message but the form type must be obtained.  This usually means asking the transmitting station for the form type they sent.

Using our previous message example, paste and clean up the text in the editor as described above.

Notice that <plaintext> tag is not seen.

Above the first line, insert the form type tag for the message.  In this case <plaintext>.  Other common form types:
<blankform>
<csvform>
<ics213>
<plaintext>
<radiogram>



Save the message and open in Flmsg as described above.

Notes:

  • Missing data shows up as blank fields in the Flmsg form – including those parts of the form where the field prefixes are missing (“fm,” “tm,” “sb,” or “mg,” etc.).  In the Plaintext form, if the message prefix is missing, since it’s one of the last prefixes transmitted the entire form will appear blank.
  • If the wrong form type is inserted (<plaintext> when it should have been <radiogram>), the file will open in Flmsg but the fields will not be populated.  The field prefixes are generally not the same from form-to-form.

APRS RX IGate with RTL-SDR and Raspberry Pi

For sometime I wanted to experiment with an APRS IGate. Coverage was spotty at best in my area. There is an IGate in my city but it doesn’t receive so well. Recently there have been more IGates blanketing the area.

APRS stands for Automatic Packet Reporting System and has been developed since the late 1980s by Bob Bruninga – WB4APR. It’s a digital communication mode amateur radio operators use to primarily broadcast location information, though this wasn’t the intended use. It handles text messages, alerts, announcements, bulletins, and information of interest like weather station reports. APRS operates typically on a single frequency.  A system of relay stations and digipeaters repeat messages over a wide area. APRS Internet System (APRS-IS) are Internet connected receivers (IGates).

Any ham can add an icon or information to the APRS map.  The information is available on the Internet or to users on the local RF network.  Data is automatically tracked over time. APRS is frequently used to track mobile stations in a public service event or volunteers in a search and rescue event to visualize locations and track progress.

This project will utilize the Raspberry Pi and RTL-SDR dongle. The Raspberry Pi is a credit-card sized micro-computer intended for teaching computer science to students but became popular with the makers. RTL-SDR dongles are DVB-T (European standard) TV tuner dongles. It was found the signal data could be accessed directly which allowed them to be converted into wide band software defined radio receivers. The Pi costs about $35 and RTL-SDR about $20.

Since the RTL-SDR dongles are meant to receive high power wide bandwidth TV signals, they are not as a sensitive or frequency stable as a ham radio or scanner. Receiver performance will be a little less than an equivalent radio performing the same task but depends on the usual variables: amount of APRS activity, antenna height, antenna gain, propagation, etc, etc. With my antenna about 15 feet high, I get about 5+ miles of coverage. With band openings I’ve heard stations on the opposite side of town and across Lake Erie into Canada.

Even though this IGate will be non-transmitting (cannot relay packets from the Internet), packets are forwarded to APRS-IS. The higher profile – higher power Digitpeaters in the area will relay packets received by your IGate to the local RF network.

Assumptions

This guide is step-by-step in nature, meant for beginners, with brief explanations of the steps. It will help to have an understanding of Linux commands and scripting. Capitalization is important in Linux!

My setup is on my home LAN. The IGate could be installed at a remote site using a shared Internet connection. Be aware that firewalls that might block connection to the APRS-IS network on a shared connection. You may want to request or have port 22 open on your router for SSH to establish a remote connection.

If all wired options fall through, look for a cellular hotspot device such as a MiFi to install along with the Pi. Use the built in WiFi on the Pi 3 or approved WiFi dongles for earlier Pi devices. Associate the MiFi with your Pi (turning on WPA2 so no one else piggybacks on your connection). Test the setup before installing it. Don’t find out after leaving the site that the MiFi times out after a few hours.

Program versions

Applications and versions used in this writeup:

  • Windows 10 64 bit
  • Raspbian Jessie 2016-05-27
  • Win32 Disk Imager 0.9.5
  • PuTTY 0.67
  • SDR Sharp 1.0.0.1444
  • RTL-SDR 0.5.3
  • Multimon-NG ?
  • Pymultimonaprs 1.3.0

Parts list

Listed below are all the parts needed to get this project working. It is noted when items can be left out or substituted.

That’s all the parts needed for this project. Check out the AdaFruit Raspberry Pi page for other hardware that might be useful, like the USB to PS/2 adapter for example. Many of these parts are included in the Raspberry Pi Starter Pack.

Use Soundcard Oscilloscope to understand DSP features of an HF radio

As I continue to use Soundcard Oscilloscope in the shack, I find new uses for it.  In a previous post, I showed how to use it to calibrate receive levels for Ham Radio digital modes.  I’ve used Soundcard Oscilloscope to understand DSP (Digital Signal Processing) features of my radio.  I have an ICOM IC-7000 which doesn’t have any of the features the newer/larger radios: waterfall display, frequency display, or oscilloscope.  As a substitute, I’ll fire up Soundcard Oscilloscope to set filters eliminating loud adjacent stations or set a manual notch filter for annoying stations that tune up on frequency.

Soundcard Oscilloscope is a program that emulates an oscilloscope from signal data received from a sound card. It also has a frequency graph which will be used for this tutorial.

Station setup

  • HF Radio and antenna.
  • SignaLink USB and correct cable for your radio (pictures).  Any audio interface will work or even 1/8″ male-to-male audio cable between the audio out of the radio and Line-in on any regular sound card.
  • PC computer where the radio interface is connected.

Program versions

  • Windows 7 – 64 bit
  • Soundcard Oscilloscope 1.46

Download and Installation

This will install Soundcard Oscilloscope on your PC.

hf_dsp_features-01_install-01_soundcard_oscilloscope_website

Go to https://www.zeitnitz.eu/scope_en.

Click the link to “Download the latest version.” Save it in your Downloads folder.

hf_dsp_features-01_install-02_installer-01

Launch the installer.

Click Yes.

hf_dsp_features-01_install-03_installer-02

Click Next.

hf_dsp_features-01_install-04_installer-03

Click Next.

hf_dsp_features-01_install-05_installer-04

Click Next.

hf_dsp_features-01_install-06_installer-05

Installation will begin.

hf_dsp_features-01_install-07_installer-06

Click OK.

hf_dsp_features-01_install-08_installer-07

Click Finish.

Soundcard Oscilloscope is now installed.

Configuration

This will setup Soundcard Oscilloscope to capture audio coming from your audio interface device.

hf_dsp_features-02_configuration-01_language

Start Soundcard Oscilloscope by clicking the Start orb.

Click All Programs.

Click Scope.

Click Scope.

The first time the program is run, you’ll be prompted to select a language. Select your language and click Continue.

hf_dsp_features-02_configuration-02_license

The program is not free and will ask for a License key. Not entering a license will display this screen each time the program is started. The program is less than $12.50 US. Please support the developers by purchasing a license. This is made at the download site by clicking the “private donation license” link.

Click Continue if you don’t have a license.

hf_dsp_features-02_configuration-03_audio_interface_selection

Click the Settings tab.

Under Windows Sound Parameters, Audio Devices, Input is where you select the audio interface device. For SignaLink USB, this would be Microphone USB Audio Codec. Other interfaces: Line In, or Mic In would be selected appropriately and known from my audio interface setup tutorial.

Soundcard Oscilloscope is now configured.

Loud adjacent station

An example using notch functions and filters to remove a loud and stronger adjacent station.

hf_dsp_features-ration-03_loud_adjacent_station-01_settings

Click the Frequency tab.

These settings will need to be reset after restarting the program. At this point, my radio is off but it doesn’t matter.

Along the bottom is the Frequency graph, click about 1500 Hz (1.5 kHz) on the graph.

Slide the Zoom control over about 5 ticks so that the frequency graph now shows 3000 Hz (3 kHz) near the right edge.

I unchecked Auto-scale.  This is not required and only keeps the vertical graph at the same scale for this tutorial.

Turn on the radio if it is not already.

hf_dsp_features-ration-03_loud_adjacent_station-02_loud_station_2500-3200

Between 2500 Hz and 3200 Hz is a strong adjacent station to the frequency I’m trying to work.  The station is really coming in between 2100 Hz and 3200 Hz as we’ll see in a moment.

hf_dsp_features-ration-03_loud_adjacent_station-03_manual_notch_function

I try a Notch Filter (Manual Notch Function – MNF) to notch out the signal.  The wide setting it not enough to get rid of the signal.  The signal is still peaking between 1750 Hz and 3200 Hz.  You can see the notch between 2750 Hz and 2900 Hz.  I tried adding in the 2nd notch filter and it didn’t fully notch out the entire signal.

hf_dsp_features-ration-03_loud_adjacent_station-04_manual_notch_function_radio

Notch filter settings on the 7000 radio.

hf_dsp_features-ration-03_loud_adjacent_station-05_filter

I am able to knock out the loud adjacent station by choosing a narrower filter and using pass band tuning to shift the filter.

hf_dsp_features-ration-03_loud_adjacent_station-06_filter_radio

Turn off the Notch Function.  Selected a filter bandwidth of 1.8 kHz (FIL) (SSB-3 default on the 7000 is 1.8 kHz).  I used pass band tuning (PBT) to shift both edges of the filter to the left (on screen).  In this case the Shift Frequency was -650 narrowing the bandwidth to 1.7 kHz.  The filter shape was SHARP.

These settings eliminated the adjacent station as shown in the previous image.  Everything higher than 2000 Hz is completely gone.

Calibrate Receive Audio for Ham Radio Soundcard Digital Modes

This tutorial will show to determine an optimal Receive Volume (RX) level on your audio interface for operating (or only receiving) digital modes.  My tutorial showing how to setup your audio interface in Windows is the starting point for this tutorial.  Please review it, specifically the “Recording” settings as this tutorial builds upon it including having an existing audio interface setup.

The audio level from the radio into the audio interface is typically a fixed level.  Once the audio enters the audio interface, the level sent to the computer is adjustable by the RX or Receive Level controls.  This tutorial will help determine the optimal setting for the RX level.

Soundcard Oscilloscope is a program that emulates an oscilloscope from signal data received from a sound card.  The radio will need to monitor active digital transmissions.  Tuning to HF frequencies where PSK31 (7.070/14.070), JT65 (7.076/14.076), or RTTY (7.080-7.125/14.080-14.100) transmissions can be observed are great places.  The 40 and 20 meter frequencies for those are listed as those bands are more active.

This tutorial can help set the transmit level of another station by observing or monitoring their transmissions.  Do this only after you’ve calibrated your receive audio and spent a good amount of time operating with no audio issues of your own.  Use a quiet simplex frequency both can hear the other station.  This way adjustments will not be effected by other stations on the same sideband frequency.  FM won’t matter because only one station can occupy the frequency at a time.

A similar tutorial appeared in QST recently.  They beat me to it, lol!

Program versions

  • Windows 7 – 64 bit
  • Soundcard Oscilloscope 1.46

Download and Installation

This will install Soundcard Oscilloscope on your PC.

receive_level_calibration-01_install-01_soundcard_oscilloscope_website

Go to https://www.zeitnitz.eu/scope_en.

Click the link to “Download the latest version.”  Save it in your Downloads folder.

receive_level_calibration-01_install-02_installer-01

Launch the installer.

Click Yes.

receive_level_calibration-01_install-03_installer-02

Click Next.

receive_level_calibration-01_install-04_installer-03

Click Next.

receive_level_calibration-01_install-05_installer-04

Click Next.

receive_level_calibration-01_install-06_installer-05

Installation will begin.

receive_level_calibration-01_install-07_installer-06

Click OK.

receive_level_calibration-01_install-08_installer-07

Click Finish.

Soundcard Oscilloscope is now installed.

Configuration

This will setup Soundcard Oscilloscope to capture audio coming from your audio interface device.

receive_level_calibration-02_configuration-01_language

Start Soundcard Oscilloscope by clicking the Start orb.

Click All Programs.

Click Scope.

Click Scope.

The first time the program is run, you’ll be prompted to select a language.  Select your language and click Continue.

receive_level_calibration-02_configuration-02_license

The program is not free and will ask for a License key.  Not entering a license will display this screen each time the program is started.  The program is less than $12.50 US.  Please support the developers by purchasing a license.  This is made at the download site by clicking the “private donation license” link.

Click Continue if you don’t have a license.

receive_level_calibration-02_configuration-03_audio_interface_selection

Click the Settings tab.

Under Windows Sound Parameters, Audio Devices, Input is where you select the audio interface device.  For SignaLink USB, this would be Microphone USB Audio Codec.  Other interfaces: Line In, or Mic In would be selected appropriately and known from my audio interface setup tutorial.

Soundcard Oscilloscope is now configured.

Setting receive level audio

These screenshots will help determine optimal audio RX setting for receive audio.  It is important to leave the audio level settings alone in Windows.  These settings were shown in my audio interface setup tutorial.  Adjust the settings in Windows ONLY when where is not enough audio when RX level is at the maximum setting or there is too much audio with RX set to the lowest setting.

receive_level_calibration-03_calibration-01_settings

Click the Oscilloscope tab if you are not there already.

These settings will need to be reset after restarting the program.  At this point, my radio is off but it doesn’t matter.

Set the Amplitude to 250mv.

Set Time to 10ms or less.

Turn on the radio if it is not already.

Examples

Adjust the RX level until there are no peaks with flat-tops on the oscilloscope.  Flat-tops indicate the audio level is too high and digital programs will have a hard time decoding the signal.  These examples were taking monitoring PSK31 on 20 meters.

receive_level_calibration-03_calibration-02_best_example

This is the best example.  No flat-top peaks.  Peaks appear about two divisions from the center line.  There is plenty of headroom for louder signals.  My RX setting was about the 10 o’clock tick-mark on my SignaLink.

Anything lower than two divisions will still work.  There maybe issues pulling out weaker stations.

receive_level_calibration-03_calibration-03_ok_example

Here is a good example but I would not be comfortable with this audio level.  The peaks do not have flat-tops which is good.  However, the peaks are reaching well into the third division.  My RX setting was about the 11 o’clock tick-mark on my SignaLink.

receive_level_calibration-03_calibration-04_bad_example

This is an example of what the scope should not look like.  Peaks have flat-tops at the fourth division.  The audio level is too high into the computer and RX volume needs to be dialed back.  My RX setting was about the 1 o’clock tick-mark on my SignaLink.

When optimal level is reached, the audio interface receive audio level is calibrated!

Bridge a Remote Site Network with OpenVPN Access Server

Having access to your devices over the Internet is a requirement for any admin deploying a project. Instead of running to a remote site to administer devices (making changes, applying updates and patches), it’s easier to connect remotely and make changes. Remote access poses many issues and concerns.

Security

First and foremost is security. You always, always, ALWAYS want devices connected to the Internet behind a router with a built-in firewall (NAT router). A firewall filters traffic between two networks (your ISP and home for example) and will block attempts to connect to your internal (private) network.

Device manufacturers take security for granted. Little testing and auditing takes place because the analysis is expensive for throw-away devices. This is noted in many stories including Bug Exposes IP Cameras, Baby Monitors where simply clicking “OK” on the login dialog allowed access to the Internet connected video camera. It is trivial to find these devices on the Internet because of Shodan. Shodan is dubbed the “Internet of Things Search Engine.” If you’re not familiar, think of it as the Google for devices connected directly to the internet. These could be: web servers, printers, cameras, industrial machines, bitcoin mining… Putting devices behind a firewall minimizes the risk because anything trying to peer into the network would be blocked by the firewall.

This holds true for networks you don’t control (granted access on someone else’s network). Put your stuff behind a router/firewall so they can’t see your devices and you can’t be exploited by devices on the other network.

Port Forwarding is a popular technique to only allow traffic on a specific port to a device you specify in your firewall (router). This provides little security as it still allows a potentially vulnerable service to accept incoming connections from the Internet.

Choose a good router

Couple of tips for a good router:

  • You get what you pay for. Don’t opt for cheap.
  • Opt for ones that support third-party firmware like DD-WRT and Tomato or setup a dedicated computer running pfsense or Untangle. These have proven to be more secure than stock firmware in addition to offering a more complete feature set.
  • Stick with popular models as found on Amazon, Newegg, or other tech store. They’re more likely to be reliable, well updated models.
  • Look for ones that accept USB cellular modem dongles for installations that have no accessible network connection like a remote site.

Virtual Private Network

The preferred way to connect to a remote network is to use a VPN. A VPN connects to a private network securely over the Internet. It allows the user to exchange data, use services, and connect to devices as if they were directly connected to that network. An open-source project that implements VPN technologies security is OpenVPN. OpenVPN is an application that allows for secure point-to-point communication. There are many implementations of OpenVPN including using it in many third-party router firmware (mentioned above). OpenVPN Access Server is one of the many implementations and the one used for this project.

This project was inspired by Hak5 1921 – Access Internal Networks with Reverse VPN Connections. As an Amateur Radio operator into the newer computer and digital technologies, more devices are located at remote sites.

This setup consists of:

  1. A remote network behind a firewall where devices exist you want to access. This will be a Linux server on the remote network that will act as the gateway and persistently connected to the bridge. This could be a full desktop computer purposed for something else or Raspberry Pi. Also on the same network will be a Windows machine.
  2. An unsecure/unknown network, AKA the Internet.
  3. A private server that will act as the bridge between the remote network and a device you choose.
  4. A device in a separate location that will connect to the cloud server and will be able to access the remote network. I will use a Windows machine to act as a ‘home’ computer.

This setup works in nearly all cases because the only device receiving incoming connections is the bridge server in the cloud. Firewalls block incoming connections by default. Very few block connections originating inside the network out to the Internet (egress). If a device along the way filters by content, connection attempts will be blocked. Many corporate networks are doing this kind of filtering. Otherwise the traffic looks the same as secure web traffic on port 443. No port forwarding is used.

Hosting

I recommend using an infrastructure hosting provider for the bridge server. This can cost anywhere from $5-$15 per month. The device can be anywhere on the public Internet. It must accept multiple connections on different ports but only by a couple users at a time are needed. Minimal configuration is more than sufficient. Bandwidth, latency, and up-time of all points in this setup effect reliability. My personal recommendations for infrastructure hosting providers are: Rackspace and DigitalOcean.

IP addressing

All remote networks and the home user networks cannot overlap in address space. That is they need to be differently numbered. For example, typically home networks have addressing as 192.168.1.x. The remote site(s) can’t have the same numbering (192.168.1.x). It must be different. I suggest making the remote site different enough to not cause conflict with any home users’ networks. Remote sites as 192.168.25.x, 192.168.26.x, and 192.168.27.x would work fine when the home users’ networks is addressed 192.168.0.x, 192.168.1.x, 192.168.2.x, and so on (except 25-27). Similarly addressed networks create routing conflicts and the packets will not reach the correct network.

Downsides

Cost.

In addition to hosting, a downside to using OpenVPN Access Server is licensing. While OpenVPN is Open-Source Software and OpenVPN Access Server is free, the license allows for only two concurrent tunnel connections at any one time. This means the remote site counts as one connection and the home device the second. If a second person (third device) needed access to the remote network, they would get a message saying ‘Access Server has reached its concurrent connections limit.’ The first person would need to disconnect first before the second could connect otherwise current connections will begin to be booted. Additionally, connecting two or more remote sites and a home user is not possible without purchasing licenses or running an additional bridge server. Additional licenses can be purchased for “$9.60 License Fee Per Client Connection Per Year. Support & Updates included. 10 Client minimum purchase.” $96 per year.

An alternative to OpenVPN Access Server is to setup your own (roll your own) OpenVPN server which is free. I hope to do an OVPN server setup at some point in the future.

Assumptions

This guide is step-by-step in nature, meant for beginners, with brief explanations of the steps. It will help to have an understanding of Linux commands and scripting. Capitalization is important in Linux! Understanding of basic networking concepts including determining network prefixes and CIDR notation is also required.

Program versions

I used a Windows 7 64 bit PC for configuration (and Home PC). Applications and versions used in this writeup:

  • OpenVPN Access Server 2.0.24
  • Putty 0.67
  • Ubuntu 14.04 x64 (bridge and remote servers)
  • Filezilla 3.16.0

NBEMS/FLDIGI Sound Card Calibration

9/26/2017 update: it has been reported this calibration method CAN make sound card timings worse.  I believe I’ve even experienced this issue.

The officially recommended calibration method is to use a time standard such as WWV and WWVB.  Details are in the Fldigi manual.

I’ll update or create a post as time permits with more details.  This post and instructions below will be left for reference and should be considered archived.  This is a less effective way of calibrating Fldigi.


For a number of years, I recommended the checksr.exe program and pointed users to the pa-sitrep (dot) com website. Recently that site disappeared. Since I had a copy of both the program and the text, I am re-posting both. It is an excellent utility and has great value. Unfortunately it only is available for Windows.

I do not take any credit for the program or instructions. I updated the instructions with screenshots.

Check the Fldigi tag for my posts running it on the Raspberry Pi or how to use Fldigi.

If you’re concerned about downloading the exe, it was analyzed by VirusTotal and showed 0 detections. The hashes are below and the SHA256 can be compared against the VirusTotal link.

SHA1

396A6ADB43BC76CB48E72A532B2E2E8FE9834551

396a6adb43bc76cb48e72a532b2e2e8fe9834551

SHA256

EE8BA2B907CBCF2551899808ECF717BE61CA76971499CD9EF63F53413114F494

ee8ba2b907cbcf2551899808ecf717be61ca76971499cd9ef63f53413114f494


1) Download and save CheckSR.exe to your desktop. This is a small, standalone, application that consist of a single exe file. When you double click on it, once it’s saved to your desktop, it provides the capability of analyzing your sound card offsets and gives you the corrections in parts per million (ppm):

http://www.k8jtk.org/drive/ham_radio/digital_modes/checksr/CheckSR.exe

checksr-01-fldigi_audio_devices

2) Open NBEMS/FLDIGI, go to configure, defaults, sound card, audio devices tab and make sure you have the sound card you use for your interface properly selected from the capture and playback drop down choices. Then click the audio settings tab.

checksr-02-fldigi_audio_settings_native

3) Under the audio settings tab, you should see a sample rate drop down box for capture and playback. Under each drop down box, select the sample rate that has (native) listed after it and take note of this figure. Click save config, then click save. Close FLDIGI.

Note: the ‘capture’ sample rate is the only one that seems to have the ‘native’ designation. The playback and capture should be the same.

checksr-04-checksr_input_output_sample_rate

4) Going back to CheckSR, open the application (if it’s not already open, double click on the desktop icon now) and from the drop down boxes for sound card settings, Input and Output, choose the sound card you are using with FLDIGI. Next, select the sample rate from the drop down box in CheckSR for the sample rate that FLDIGI showed as “Native” then click start.

checksr-05-checksr_stop

5) Let the application run for about 15-20 minutes. You will notice that the numbers will progressively stabilize. After about 15-20 minutes, click stop then write down the resulting figures on input and output for the measurements in Hz and PPM. Keep this record.

checksr-06-fldigi_audio_devices_corrections

6) Open FLDIGI, go to configure, defaults, sound card and click on the audio settings tab. Enter the PPM figures for RX ppm (CheckSR ppm Input figure) and TX ppm (CheckSR ppm Output figure). If you had a figure that resulted in a minus from CheckSR, enter the PPM setting with the minus symbol followed directly by the figure with no space. Then click save config, then close.

Although this procedure does not seem to be necessary for MT63 2k long on FM, it is advisable that anyone using FLDIGI, regardless of modes used, should perform this procedure immediately following setup. Once these calibrations are applied to the software, no changes should ever have to be made again, unless you change your software to radio interface sound card.

Running Fldigi Flmsg and Flwrap on the Raspberry Pi 2

With the popularity of the Raspberry Pi and the growing need of NBEMS, I wondered if it was possible to run NBEMS programs on the Pi. This maybe of interest to those who want to make a Go Kit (box) with digital or a club wants to replace older computers in their operations center with more efficient devices.

Fldigi is the program used and developed for Narrow Band Emergency Messaging System, but it does so much more. It’s also the standard for many Ham Radio operators because of the number of modes the software will operate.

Fldigi stands for Fast Light Digital modem application created by W1HKJ (David Freese, Jr.) and associates. Flmsg is a forms manager with standardized forms like MARS, plaintext messages, Radiograms, Red Cross, and Weather report forms. Flwrap is a file encapsulation and compression tool allowing for reception of a file exactly like the original.

The Fldigi application is open source, public license software meaning it’s free and available for auditing. With the source code available for Linux, I wondered if it was possible to compile the application on the Raspberry Pi.

At first I had some problems with the project. After (wasting) alot of time on it, I had given up. Only to find out the power supply I had been using was the cause of the issues.

Requirements

Work with my SignaLink USB. As a standard with my projects, the Pi can administered through SSH and VNC if needed. On Windows, I use PuTTY and TightVNC.

Assumptions

This guide is step-by-step in nature, meant for beginners, with brief explanations of the steps. It will help to have an understanding of Linux commands and scripting. Capitalization is important in Linux!

Check my other posts for setup guides on using your radio interface (though written for Windows) and Fldigi, Flmsg, and Flwrap.

Program versions

Applications and versions used in this writeup:

  • Windows 7 64 bit
  • Raspbian Jessie 2015-09-24
  • Win32DiskImager 0.9.5
  • PuTTY 0.65
  • TightVNC 2.7.10 64 bit
  • Fldigi 3.23.04
  • Flmsg 2.0.12
  • Flwrap 1.3.4

Build times

I did a face off for build times between the later model Pi versions: B+, 2, and 3. Later iterations will be faster. The results are in the format of the Linux command time, which contrary to it’s name does not set the time. It gives statistics about this program run. They consist of the elapsed real time between invocation and termination, the user CPU time, and the system CPU time. Later versions than listed above were used in this face off: Raspbian Jessie 2016-05-27, Fldigi 3.23.10, Flmsg 3.0.0, Flwrap is the same at 1.3.4.

Raspberry Pi B+

Failed. Apparently there is an issue running the Make command for Fldigi with versions later than the ones I originally used in this writeup. By the error messages this is an internal g++ compiler error. Make does not fail on the Pi 2 and 3 which probably means it’s a hardware issue (out of memory).

The error is “Warning: partial line at end of file ignored” for dialogs/fldigi-confdialog.o.

Raspberry Pi 2

real 21m49.783s
user 72m9.970s
sys 2m39.290s

Raspberry Pi 3

real 12m50.129s
user 42m8.980s
sys 1m19.160s

Parts list

Listed below are all the parts needed to get this project working. It is noted when items can be left out or substituted.

That’s all the parts needed for this project. Check out the AdaFruit Raspberry Pi page for other hardware that might be useful, like the USB to PS/2 adapter for example. Many of these parts are included in the Raspberry Pi Starter Pack.

If the Pi is setup where there may not be Internet, want to consider purchasing a Real Time Clock (RTC) addon. The Pi will keep time after power has been removed. Of course the time would just have to be set each time.

Flmsg custom forms

In order for custom forms to be used in Flmsg, version 2.0.17 or later must be used. There was a bug in previous versions that didn’t allow the forms to be parsed correctly. In addition, another browser needs to be installed as the default is unable to connect to the webserver created by Flmsg. Thanks to Ken – W0KAH for determining this issue and getting it resolved with the program author.

Linux package installer

The version available from the package manager could be installed but that version is several revisions behind which won’t have the latest enhancements. Some repositories don’t have Flmsg and Flwrap which makes it hard for NBEMS operation.

sudo apt-get -y install fldigi

sudo apt-get -y install flmsg flwrap
If it doesn’t work, you’ll get a message like:

E: Unable to locate package flmsg