<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.pttlink.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ve7fet</id>
	<title>&quot;PTTLink Wiki&quot; - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.pttlink.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ve7fet"/>
	<link rel="alternate" type="text/html" href="https://wiki.pttlink.org/wiki/Special:Contributions/Ve7fet"/>
	<updated>2026-05-13T10:59:09Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.5</generator>
	<entry>
		<id>https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=2026</id>
		<title>RTCM Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=2026"/>
		<updated>2020-12-07T06:10:03Z</updated>

		<summary type="html">&lt;p&gt;Ve7fet: Add additional TSIP debug information.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Radio Thin Client Module (RTCM) is commercially available hardware for interfacing radios to an AllStarLink computer.&lt;br /&gt;
&lt;br /&gt;
The Micro-Node RTCM and VOTER interfaces are typically used with AllStar in voting/simulcast applications. They MAY be used for ANY repeater interface application, through the chan_voter channel driver. The VOTER is the original through-hole board designed by Jim Dixon for this application. It is open-source, and the relevant Gerber files and BoM to build it are available. The [http://www.micro-node.com/thin-m1.shtml Micro-Node Radio Thin Client Module (RTCM)] is the commercial version of the VOTER. It uses surface mount parts (SMT), but is functionally equivalent to the original VOTER. In general, the two terms (RTCM/VOTER) are used interchangeably, as they operate the same, and use the same firmware (mostly, see below).&lt;br /&gt;
&lt;br /&gt;
This page will highlight some of the operational concerns, quirks, bugs, and other items of interest that relate to these interfaces. Much of the information has been gleaned off the AllStar mail list, comes from personal experience, or comes from notes in the firmware source code.&lt;br /&gt;
&lt;br /&gt;
=Testing=&lt;br /&gt;
RTCM's come preconfigured to login to [http://voter-demo-allstarlink.org voter-demo-allstarlink.org] for out of the box testing.&lt;br /&gt;
&lt;br /&gt;
=Factory Reset=&lt;br /&gt;
A factory reset can be performed by setting SW 1 down and then applying power to the RTCM. Wait for the green LED to stop blinking, power off and set SW 1 back up. &lt;br /&gt;
&lt;br /&gt;
=Firmware=&lt;br /&gt;
The firmware in the RTCM and VOTER is the same, except it is compiled for the specific dsPIC that is installed in each. As such, the firmware is specific to the VOTER or the RTCM, and is NOT interchangeable (it won't boot in the wrong device). Firmware for the RTCM is denoted by &amp;quot;smt&amp;quot; in the filename.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are '''two parts''' to the firmware, a bootloader, and then the actual firmware file. The bootloader starts when power is applied, and allows you to talk to the dsPIC and load new firmware files over ethernet. If the bootloader is not intercepted by the loading tool, it will continue to boot the current firmware file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All new boards will need to have the bootloader installed first, followed by a firmware file. You '''can''' load a firmware file directly (.hex) in to the dsPIC, but then you will not have any of the bootloader remote loading features.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The current bootloader (.cof file) is available here: https://github.com/AllStarLink/voter/tree/master/voter-bootloader (the -smt file is for the RTCM). It needs to be loaded with a PICKit programmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Current firmware (.cry file) is available here: https://github.com/AllStarLink/voter/tree/master/board-firmware . They are loaded with the EBLEX C30 Programmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are multiple &amp;quot;flavors&amp;quot; of firmware available. See below for further explanation of what all the options mean.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The DSPBEW versions have Jim's DSP/BEW feature enabled. Note that due to the size of this feature, the diagnostics menu is NOT available in this version.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CHUCK versions have Chuck Henderson's RSSI and Squelch modifications enabled. This is probably the version that most user's will want to use in production.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Compiling Environment==&lt;br /&gt;
If you look in the [https://github.com/AllStarLink/voter/blob/master/votersystem.pdf votersystem.pdf], you will find a procedure to modify and load the bootloader in to the dsPIC of a VOTER board. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Unfortunately, there is an important step '''missing''' in that procedure, which is covered below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In addition, the old links for the MPLAB software are dead, so let's update this info and get you going.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Currently (Feb 2017), you can get the required software from:&lt;br /&gt;
:http://www.microchip.com/development-tools/downloads-archive&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download MPLAB IDE 32-bit Windows v8.66:&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_IDE_v8_66.zip&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/MPLAB_IDE_v8_66.zip&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download MPLAB C Compiler for PIC24 and dsPIC DSCs v3.31 '''NOT v.3.25''':&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Optionally, install Windows Virtual PC and XP Mode. This is getting to be pretty old software, so running it under XP Mode may be a good idea, so we can keep it isolated (install it in a virtual machine). It does run fine in Windows 7.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To setup the compile/build environment, follow these steps:&lt;br /&gt;
*Run the MPLAB IDE installer. You don't need to install the HI-TECH C Compiler at the end (click no)&lt;br /&gt;
*Run the MPLAB C Compiler installer&lt;br /&gt;
*Select Legacy Directory Name&lt;br /&gt;
*'''Select Lite Compiler'''&lt;br /&gt;
*Go to: https://github.com/AllStarLink&lt;br /&gt;
*Follow the links to: voter --&amp;gt; Clone or Download --&amp;gt; Download Zip. That will get you voter-master.zip which is a download of the whole VOTER tree from GitHub.&lt;br /&gt;
*Extract it somewhere (ie. in the XP Mode Virtual PC)&lt;br /&gt;
*Launch the MPLAB IDE&lt;br /&gt;
*Go to Configure --&amp;gt; Settings --&amp;gt; Projects and de-select one-to-one project mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bootloader==&lt;br /&gt;
If you need to load the bootloader in to a fresh board, you will need to follow these steps:&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; voter-bootloader.mcp --&amp;gt; Open (it is in the voter-bootloader folder of the GitHub source)&lt;br /&gt;
*Go to File --&amp;gt; Import --&amp;gt; voter-bootloader --&amp;gt; ENC_C30.cof --&amp;gt; Open '''This step is missing from the original procedure.'''&lt;br /&gt;
*Remove JP7 on the VOTER Board. This is necessary to allow programming by the PICKit2/PICKit3 device.&lt;br /&gt;
*Attach the PICKIT2/PICKit3 device to J1 on the VOTER board. Note that Pin 1 is closest to the power supply modules (as indicated on the board).&lt;br /&gt;
*If you have not already selected a programming device, go to Programmer --&amp;gt; Select Device and choose PICKit3 (or PICKit2, depending on what you are using).&lt;br /&gt;
*Go to Programmer --&amp;gt; Program. This will program the bootloader firmware into the PIC device on the board.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to change the default IP address from 192.168.1.11 in the bootloader:&lt;br /&gt;
*Select View --&amp;gt; Program Memory (from the top menu bar)&lt;br /&gt;
*Hit Control-F (to &amp;quot;find&amp;quot;) and search for the digits &amp;quot;00A8C0&amp;quot;.&lt;br /&gt;
*These should be found at memory address &amp;quot;03018&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;A8C0&amp;quot; at 03018 represents the hex digits C0 (192) and A8 (168) which are the first two octets of the IP address. The six digits to enter are 00 then the SECOND octet of the IP address in hex then the FIRST octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;0B01&amp;quot; at 0301A represents the hex digits 0B (11) and 01 (1) which are the second two octets of the IP address. The six digits to enter are 00 then the FOURTH octet of the IP address in hex then the THIRD octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you have modified the address to your desired IP, follow the programming procedure (above).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Firmware==&lt;br /&gt;
To compile the firmware (if you want to make custom changes):&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; navigate to board-firmware and open the .mcp file for the flavor of firmware you want to compile. They are in the board-firmware folder of the GitHub source.&lt;br /&gt;
*'''NOTE''': the .mcp files with the &amp;quot;smt&amp;quot; suffix are for the RTCM (built with SMT parts). The non-smt files are for the ORIGINAL through-hole VOTER boards. The difference is that the VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
*Go to Project --&amp;gt; Build Configuration and select &amp;quot;Release&amp;quot;. This may not be necessary (I don't believe that option is used in the firmware), but it removes the compiler option of __DEBUG being passed, so theoretically it would build &amp;quot;normal&amp;quot; firmware.&lt;br /&gt;
*Go to Configure --&amp;gt; Select Device and choose the appropriate device for your board from the Device list. If you don't select the right one, the board will not boot. Select dsPIC33FJ128GP802 for the VOTER, and dsPIC33FJ128GP804 for the RTCM.&lt;br /&gt;
*Now, if you go to Project --&amp;gt; Build All it should compile everything and show you &amp;quot;Build Succeeded&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A .cry file should be in the board-firmware folder. You can load this with the ENC Loader.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is also a .hex file in there that you could load with a programmer... but that would wipe the bootloader... so don't do that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Chuck Squelch==&lt;br /&gt;
If you want to enable &amp;quot;Chuck Squelch&amp;quot;, open the HardwareProfile.h and un-comment #define CHUCK. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may also want to go down to Line 291 in Voter.c (right click on the window, go to Properties --&amp;gt; &amp;quot;C&amp;quot; File Types --&amp;gt; Line Numbers) and tack on CHUCK after 1.60 (the current version number) so that when you load this firmware, the version will be shown as 1.51CHUCK, and you'll know that Chuck Squelch is compiled in. We should probably make that more automagic in the future...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==DSP/BEW==&lt;br /&gt;
If you want to compile the DSPBEW version, open the DSPBEW project file instead.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DSP/BEW Firmware Version=&lt;br /&gt;
DSP BEW Firmware is mutually exclusive with the diagnostic menu. There is not enough space for both, if you load the DSP/BEW firmware, you will '''NOT''' have a diag menu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BEW stands for Baseband Examination Window.&lt;br /&gt;
&lt;br /&gt;
Typically, the discriminator of an FM communications receiver produces results containing audio spectrum from the &amp;quot;sub-audible&amp;quot; range (typically &amp;lt; 100 Hz) to well above frequencies able to be produced by modulating audio. These higher frequencies can be utilized to determine signal quality, since they can only contain noise (or no noise, if a sufficiently strong signal is present).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For receivers (such as the Motorola Quantar, etc) that do not provide sufficient spectral content at these &amp;quot;noise&amp;quot; frequencies (for various reasons), The &amp;quot;DSP/BEW (Digital Signal Processor / Baseband Examination Window)&amp;quot; feature of the RTCM firmware may be utilized. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These receivers are perfectly capable of providing valid &amp;quot;noise&amp;quot; signal with no modulation on the input of the receiver, but with strong modulation (high frequency audio and high deviation), it severely interferes with proper analysis of signal strength.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This feature provides a means by which a &amp;quot;Window&amp;quot; of baseband (normal audio range) signal is examined by a DSP and a determination of whether or not sufficient audio is present to cause interference of proper signal strength is made. During the VERY brief periods of time when it is determined that sufficient audio is present to cause interference, the signal strength value is &amp;quot;held&amp;quot; (the last valid value previous to the time of interference) until such time that the interfering audio is no longer present.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The DSP/BEW feature is selectable, and '''should not''' be used for a receiver that does not need it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A note on the Motorola SLR5700 per VE7FET. DSP/BEW definitely makes a difference on what AllMon reports for the signal strength of received signals. It is less reactive when DSP/BEW = 1 than with it set to 0. We'll have to see what the real world trials show. It might be better to leave it off.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Chuck Squelch=&lt;br /&gt;
&amp;quot;Chuck Squelch&amp;quot; are a couple firmware changes made by Chuck Henderson, WB9UUS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pre-compiled firmware versions including this option are available on [https://github.com/AllStarLink/voter/tree/master/board-firmware GitHub]. See above on how it is enabled/compiled, if you are rolling your own firmware modifications.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
One of the changes fixes an issue with weak signals producing RSSI readings all over the place. It is caused by a 16 bit value that was overflowing (it is the RSSI change in the firmware). It results in rock-solid RSSI values being reported, even on barely or non-readable signals. '''This change will likely be rolled in to a permanent fix in a future firmware release.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The other firmware change changes how the squelch responds (looks at the noise in the last two audio samples) and makes the &amp;quot;Micor squelch&amp;quot; action work better.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may also want to consider the following changes in [[Voter.conf|/etc/asterisk/voter.conf]]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;Comment out:&lt;br /&gt;
;thresholds =&lt;br /&gt;
&lt;br /&gt;
;and set:&lt;br /&gt;
linger = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Squelch Issues=&lt;br /&gt;
*If anyone is off frequency a little bit, that will make the voice talk off worse. Double check that the repeater and the users are all on frequency.&lt;br /&gt;
*Don't use narrow bandwidth on the repeater receiver. &lt;br /&gt;
*Make sure that the discriminator audio is not rolled off even a little bit at the high end. There should not be resistors in series or capacitors to ground between the discriminator chip output pin and the voter board input, for best results.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Motorola Quantar==&lt;br /&gt;
Some things to consider:&lt;br /&gt;
*Install JP1 on the Quantar's RTCM. The squelch should calibrate at around 4 blinks rather than the 12 blinks or so without JP1.&lt;br /&gt;
*Be sure you've done the diode and squelch calibration with the actual attached radio (no antenna). &lt;br /&gt;
*The Quantar firmware should be 20.14.48 as later versions have better noise output. &lt;br /&gt;
*Try the &amp;quot;Chuck Squelch&amp;quot; RTCM version.&lt;br /&gt;
*Each RTCM should have 3 to 5 turns past threshold to prevent the squelch form being too loose. Somewhere around the 350 level seems about right. Chuck Squelch seems to need fewer turns but YMMV.&lt;br /&gt;
*Don't &amp;quot;and&amp;quot; CTCSS with squelch. That may override the RTCM's squelch detection. Compare with CTCSS on and off to see effect if any.&lt;br /&gt;
&lt;br /&gt;
Also check the [[Quantar_RTCM|Quantar RTCM]] page for detailed interfacing and configuration information.&lt;br /&gt;
&lt;br /&gt;
=RTCM/VOTER LED's=&lt;br /&gt;
RX LED on the RTCM/VOTER will flash (same rate as ACT LED) if you have External CTCSS enabled, and the received signal has the wrong (or no) valid PL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Menus=&lt;br /&gt;
==Main Menu==&lt;br /&gt;
This is what a typical Main Menu looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Select the following values to View/Modify:&lt;br /&gt;
&lt;br /&gt;
1  - Serial # (0000) (which is MAC ADDR 00:04:A3:00:00:00)&lt;br /&gt;
2  - VOTER Server Address (FQDN) (44.128.1.1)&lt;br /&gt;
3  - VOTER Server Port (667),  4  - Local Port (Override) (0)&lt;br /&gt;
5  - Client Password (password1),  6  - Host Password (hostpass1)&lt;br /&gt;
7  - Tx Buffer Length (800)&lt;br /&gt;
8  - GPS Data Protocol (0=NMEA, 1=TSIP) (1)&lt;br /&gt;
9  - GPS Serial Polarity (0=Non-Inverted, 1=Inverted) (1)&lt;br /&gt;
10 - GPS PPS Polarity (0=Non-Inverted, 1=Inverted, 2=NONE) (0)&lt;br /&gt;
11 - GPS Baud Rate (9600)&lt;br /&gt;
12 - External CTCSS (0=Ignore, 1=Non-Inverted, 2=Inverted) (0)&lt;br /&gt;
13 - COR Type (0=Normal, 1=IGNORE COR, 2=No Receiver) (0)&lt;br /&gt;
14 - Debug Level (0)&lt;br /&gt;
15  - Alt. VOTER Server Address (FQDN) ()&lt;br /&gt;
16  - Alt. VOTER Server Port (Override) (0)&lt;br /&gt;
17  - DSP/BEW Mode (0)&lt;br /&gt;
18 - &amp;quot;Duplex Mode 3&amp;quot; (0=DISABLED, 1-255 Hang Time) (1/10 secs) (0)&lt;br /&gt;
19 - Simulcast Launch Delay (0) (approx 200 ns, 5 = 1us, &amp;gt; 0 to ENA SC)&lt;br /&gt;
97 - RX Level,  98 - Status,  99 - Save Values to EEPROM&lt;br /&gt;
i - IP Parameters menu, o - Offline Mode Parameters menu&lt;br /&gt;
q - Disconnect Remote Console Session, r - reboot system, d - diagnostics&lt;br /&gt;
&lt;br /&gt;
Enter Selection (1-27,97-99,r,q,d) :&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==IP Parameters Menu==&lt;br /&gt;
This is what a typical IP Parameters Menu looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP Parameters Menu&lt;br /&gt;
&lt;br /&gt;
Select the following values to View/Modify:&lt;br /&gt;
&lt;br /&gt;
1  - (Static) IP Address (44.128.1.2)&lt;br /&gt;
2  - (Static) Netmask (255.255.255.0)&lt;br /&gt;
3  - (Static) Gateway (44.128.1.254)&lt;br /&gt;
4  - (Static) Primary DNS Server (44.128.1.254)&lt;br /&gt;
5  - (Static) Secondary DNS Server (0.0.0.0)&lt;br /&gt;
6  - DHCP Enable (0)&lt;br /&gt;
7  - Telnet Port (23)&lt;br /&gt;
8  - Telnet Username (admin)&lt;br /&gt;
9  - Telnet Password (radios)&lt;br /&gt;
10 - DynDNS Enable (0)&lt;br /&gt;
11 - DynDNS Username (wb6nil)&lt;br /&gt;
12 - DynDNS Password (radios42)&lt;br /&gt;
13 - DynDNS Host (voter-test.dyndns.org)&lt;br /&gt;
14 - BootLoader IP Address (192.168.1.10) (OK)&lt;br /&gt;
15 - Ethernet Duplex (0=Half, 1=Full) (1)&lt;br /&gt;
99 - Save Values to EEPROM&lt;br /&gt;
x  - Exit IP Parameters Menu (back to main menu)&lt;br /&gt;
q  - Disconnect Remote Console Session, r - reboot system&lt;br /&gt;
&lt;br /&gt;
Enter Selection (1-14,99,c,x,q,r) :&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Offline Parameters Menu==&lt;br /&gt;
This is what a typical Offline Parameters Menu looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
OffLine Mode Parameters Menu&lt;br /&gt;
&lt;br /&gt;
Select the following values to View/Modify:&lt;br /&gt;
&lt;br /&gt;
1  - Offline Mode (0=NONE, 1=Simplex, 2=Simplex w/Trigger, 3=Repeater) (3)&lt;br /&gt;
2  - CW Speed (400) (1/8000 secs)&lt;br /&gt;
3  - Pre-CW Delay (4000) (1/8000 secs)&lt;br /&gt;
4  - Post-CW Delay (4000) (1/8000 secs)&lt;br /&gt;
5  - CW &amp;quot;Offline&amp;quot; (ID) String (WB6NIL)&lt;br /&gt;
6  - CW &amp;quot;Online&amp;quot; String (OK)&lt;br /&gt;
7  - &amp;quot;Offline&amp;quot; (CW ID) Period Time (6000) (1/10 secs)&lt;br /&gt;
8  - Offline Repeat Hang Time (15) (1/10 secs)&lt;br /&gt;
9  - Offline CTCSS Tone (0.0) Hz&lt;br /&gt;
10 - Offline CTCSS Level (0-32767) (3000)&lt;br /&gt;
11 - Offline De-Emphasis Override (0=NORMAL, 1=OVERRIDE) (0)&lt;br /&gt;
99 - Save Values to EEPROM&lt;br /&gt;
x  - Exit OffLine Mode Parameter Menu (back to main menu)&lt;br /&gt;
q  - Disconnect Remote Console Session, r - reboot system&lt;br /&gt;
&lt;br /&gt;
Enter Selection (1-9,99,c,x,q,r) :&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Status Menu==&lt;br /&gt;
This is what a typical Status Menu looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
S/W Version: 1.51 BEW 08/07/2017 Chuck&lt;br /&gt;
System Uptime: 19569.3 Secs&lt;br /&gt;
IP Address: 172.16.16.191&lt;br /&gt;
Netmask: 255.255.255.0&lt;br /&gt;
Gateway: 172.16.16.254&lt;br /&gt;
Primary DNS: 172.16.16.254&lt;br /&gt;
Secondary DNS: 0.0.0.0&lt;br /&gt;
DHCP: 0&lt;br /&gt;
VOTER Server IP: 172.16.16.164&lt;br /&gt;
VOTER Server UDP Port: 667&lt;br /&gt;
OUR UDP Port: 667&lt;br /&gt;
GPS Lock: 1&lt;br /&gt;
Connected: 1&lt;br /&gt;
COR: 0&lt;br /&gt;
EXT CTCSS IN: 0&lt;br /&gt;
PTT: 0&lt;br /&gt;
RSSI: 0&lt;br /&gt;
Current Samples / Sec.: 8000&lt;br /&gt;
Current Peak Audio Level: 58112&lt;br /&gt;
Squelch Noise Gain Value: 45, Diode Cal. Value: 56, SQL pot 621&lt;br /&gt;
Current Time: Mon  Dec 07, 2020  02:15:25.120&lt;br /&gt;
Last Rx Pkt System time: 12/07/2020 02:05:32.340, diff: 592780 msec&lt;br /&gt;
Last Rx Pkt Timestamp time: 12/07/2020 02:05:32.340, diff: 0 msec&lt;br /&gt;
Last Rx Pkt index: 320, inbounds: 1&lt;br /&gt;
&lt;br /&gt;
Press The Any Key (Enter) To Continue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Something to note about the &amp;quot;Last Rx Pkt&amp;quot; status. This is the last received packet '''from the network''', not over the air. As such, on your satellite voter receivers that are receive-only, you will likely see something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Last Rx Pkt System time: &amp;lt;System Time Not Set&amp;gt;, diff: 990080296 msec&lt;br /&gt;
Last Rx Pkt Timestamp time: &amp;lt;System Time Not Set&amp;gt;, diff: 0 msec&lt;br /&gt;
Last Rx Pkt index: 0, inbounds: 0&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
The Last Rx Pkt System Time is the last time a packet was sent to this device to be transmitted (diff: is how many msec ago that was).&lt;br /&gt;
&lt;br /&gt;
The Last Rx Pkt Timestamp Time is what the timestamp embedded in that last TX packet was, and the diff: is the difference between the packet timestamp, and the system time.&lt;br /&gt;
&lt;br /&gt;
=Configuration Options=&lt;br /&gt;
==Main Menu Options==&lt;br /&gt;
===Serial #===&lt;br /&gt;
Sets the serial number for the RTCM/VOTER.&lt;br /&gt;
*This sets the MAC address of the unit.&lt;br /&gt;
*Each unit must have a unique serial number on your network segment.&lt;br /&gt;
&lt;br /&gt;
===VOTER Server Address (FQDN)===&lt;br /&gt;
This is the DNS name or IP address of the Asterisk server you are connecting to.&lt;br /&gt;
&lt;br /&gt;
===VOTER Server Port===&lt;br /&gt;
This is the UDP port that the Asterisk server is listening on for clients.&lt;br /&gt;
*Typically it is left at the default of port 667.&lt;br /&gt;
*'''MUST''' match the ''port'' directive in ''voter.conf''.&lt;br /&gt;
&lt;br /&gt;
===Local Port (Override)===&lt;br /&gt;
Sets the local unit UDP port to be something different.&lt;br /&gt;
*This is typically not used and left at default (0).&lt;br /&gt;
&lt;br /&gt;
===Client Password===&lt;br /&gt;
This is the '''unique''' password for this unit.&lt;br /&gt;
*Every unit '''must''' have a '''unique''' password.&lt;br /&gt;
*'''MUST''' match the password on the client configuration line in ''voter.conf''.&lt;br /&gt;
&lt;br /&gt;
===Host Password===&lt;br /&gt;
This is the password of the Asterisk server.&lt;br /&gt;
*Configured with the ''password'' directive in ''voter.conf''.&lt;br /&gt;
&lt;br /&gt;
===Tx Buffer Length===&lt;br /&gt;
This is the size of the TX buffer from the RTCM/VOTER to the Asterisk server.&lt;br /&gt;
*Tuned parameter, set via the tuning instructions based on network configuration.&lt;br /&gt;
&lt;br /&gt;
===GPS Data Protocol (0=NMEA, 1=TSIP)===&lt;br /&gt;
Type of GPS connected.&lt;br /&gt;
*NMEA for all non-Trimble GPS units.&lt;br /&gt;
*TSIP to use with Trimble GPS that use Trimble Serial Interface Protocol (TSIP).&lt;br /&gt;
&lt;br /&gt;
===GPS Serial Polarity (0=Non-Inverted, 1=Inverted)===&lt;br /&gt;
GPS dependent setting. &lt;br /&gt;
*Depends on if you are sending TTL or RS-232 data, adjust as needed.&lt;br /&gt;
&lt;br /&gt;
===GPS PPS Polarity (0=Non-Inverted, 1=Inverted, 2=NONE)===&lt;br /&gt;
GPS dependent setting. &lt;br /&gt;
*Depends on if you are sending TTL or RS-232 data for the PPS signal, adjust as needed.&lt;br /&gt;
*If not using GPS or configuring as a mixed client, set to 2 (None).&lt;br /&gt;
&lt;br /&gt;
===GPS Baud Rate===&lt;br /&gt;
Communication speed for the GPS, default is 9600.&lt;br /&gt;
&lt;br /&gt;
===External CTCSS (0=Ignore, 1=Non-Inverted, 2=Inverted)===&lt;br /&gt;
If you are using the CTCSS input from an external CTCSS decoder, adjust this for your logic polarity, or set to 0 (ignore) if not used.&lt;br /&gt;
&lt;br /&gt;
===COR Type (0=Normal, 1=IGNORE COR, 2=No Receiver)===&lt;br /&gt;
Typically, this is left at Normal. &lt;br /&gt;
*Set to 1 (Ignore COR), if you are using the External CTCSS input.&lt;br /&gt;
&lt;br /&gt;
===Debug Level===&lt;br /&gt;
Set the Debug Level, if needed, based on the [[#Debug Options | Debug Options]] below.&lt;br /&gt;
&lt;br /&gt;
===Alt. VOTER Server Address (FQDN)===&lt;br /&gt;
If you are using redundant Asterisk servers, set the IP/DNS address of the redundant server here.&lt;br /&gt;
&lt;br /&gt;
===Alt. VOTER Server Port (Override)===&lt;br /&gt;
If the redundant Asterisk server UDP port is not 667, set it here.&lt;br /&gt;
&lt;br /&gt;
===DSP/BEW Mode===&lt;br /&gt;
If the firmware supports DSP/BEW Mode, set this to 1 to enable it, if desired.&lt;br /&gt;
*DSP/BEW firmware versions use extra firmware space and will make the diagnostic menu unavailable.&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Duplex Mode 3&amp;quot; (0=DISABLED, 1-255 Hang Time) (1/10 secs)===&lt;br /&gt;
If you are using Duplex Mode 3, set the hang time here to enable the option. Most users leave this disabled.&lt;br /&gt;
&lt;br /&gt;
===Simulcast Launch Delay===&lt;br /&gt;
If you are using Simulcast, set your launch delay here.&lt;br /&gt;
&lt;br /&gt;
===RX Level===&lt;br /&gt;
This opens the RX Level tuning screen to adjust the receive audio level from the repeater.&lt;br /&gt;
&lt;br /&gt;
===Status===&lt;br /&gt;
This opens the status menu, showing some of the current operating parameters.&lt;br /&gt;
&lt;br /&gt;
===Save Values to EEPROM===&lt;br /&gt;
Save all the options to non-volatile EEPROM.&lt;br /&gt;
*Make sure to save after you make any changes.&lt;br /&gt;
&lt;br /&gt;
===IP Parameters menu===&lt;br /&gt;
Open the IP Parameters Menu.&lt;br /&gt;
&lt;br /&gt;
===Offline Mode Parameters menu===&lt;br /&gt;
Open the Offline Mode Parameters Menu.&lt;br /&gt;
&lt;br /&gt;
===Disconnect Remote Console Session===&lt;br /&gt;
If you are connected via Telnet, this will exit your session.&lt;br /&gt;
&lt;br /&gt;
===Reboot System===&lt;br /&gt;
Reboot the VOTER/RTCM.&lt;br /&gt;
*This should be done after making configuration changes.&lt;br /&gt;
*Some setting changes require a reboot to become effective.&lt;br /&gt;
&lt;br /&gt;
===Diagnostics===&lt;br /&gt;
Open the Diagnostics Menu.&lt;br /&gt;
*Diagnostics are unavailable if you are using DSP/BEW firmware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Network Information=&lt;br /&gt;
==RTCM/VOTER Bandwidth==&lt;br /&gt;
Assuming ulaw... The RTCM will require approximately 80kbps of bandwidth for continual usage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Network Quality==&lt;br /&gt;
Your IP Network quality is important. You may wish to add a rule in your routers to prioritize traffic on UDP port 667 so that RTCM audio is given priority over other &lt;br /&gt;
traffic. Also see the [[#Debug Options]] below for notes on how to tag your packets with ToS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==RX/TX Buffers are NOT Both Millisecond Values== &lt;br /&gt;
You might assume an RX buffer (in voter.conf) of 120ms would be equivalent of a TX buffer (in the RTCM) of 120ms. That is not the case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The TX buffer is a number of 125 '''microsecond''' intervals, where the RX buffer is in milliseconds. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you follow the buffer setting instructions, you should be fine, in most cases. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Debug Options=&lt;br /&gt;
The VOTER/RTCM firmware supports some additional debugging information that can be turned on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
From the source code, the different Debug Options are listed as:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1 - Alt/Main Host change notifications&lt;br /&gt;
2 - Ignore HWlock (GGPS only)&lt;br /&gt;
4 - GPS/PPS Failure simulation (GGPS only)&lt;br /&gt;
8 - POCSAG H/W output disable (GGPS only)&lt;br /&gt;
16 - IP TOS Class for Ubiquiti&lt;br /&gt;
32 - GPS Debug&lt;br /&gt;
64 - Fix GPS 1 second off&lt;br /&gt;
128 - Fix GPS 1 month off (WTF,O??)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Not sure what they all do, but that is what they are. Here are the most common ones used:&lt;br /&gt;
*&amp;quot;Alt/Main Host change notifications&amp;quot; &lt;br /&gt;
**shows when the connection to the Asterisk server changes state.&lt;br /&gt;
*&amp;quot;IP TOS Class for Ubiquity&amp;quot; &lt;br /&gt;
**marks the IP headers from the RTCM/VOTER '''TO''' the network with ToS C0/DSCP 48 (UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS latency). Other sources show this as a Network Control TOS.) If you enable this, you also will want to have &amp;quot;utos=y&amp;quot; in your voter.conf to mark the packets from the network '''TO''' the RTCM/VOTER. We will probably change this option to mark the packets by default in a future version.&lt;br /&gt;
*&amp;quot;GPS Debug&amp;quot; &lt;br /&gt;
**will print NMEA or TSIP debug strings from the connected GPS.&lt;br /&gt;
*&amp;quot;Fix GPS 1 second off&amp;quot;&lt;br /&gt;
**this is for NMEA GPS '''only'''. It will add one second to the time.&lt;br /&gt;
*&amp;quot;Fix GPS 1 month off (WTF,O??)&amp;quot;&lt;br /&gt;
**this is for TSIP GPS '''only'''. It will effectively add a month to the date. The mktime function normally needs one month subtracted from the raw month it converts to a time/date string. Maybe there are some GPS out there that do that automatically? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The way this works is you add together the options you want to enable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Want to enable GPS Debug and IP ToS, set debug to 48.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just want to turn on GPS Debug, set debug to 32.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just want ToS turned on, set debug to 16.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Un-documented Menus/Features=&lt;br /&gt;
*Menu 96 - If firmware compiled with DUMPENCREGS enabled, Menu 96 looks like it dumps the registers from the ENC (Ethernet) chip?&lt;br /&gt;
&lt;br /&gt;
*Menu 111 - show the &amp;quot;hidden&amp;quot; option values (normally they should all be 0).&lt;br /&gt;
&lt;br /&gt;
*Menu 11780 - set the &amp;quot;Elkes&amp;quot; value. Developed for Pete Elke WI6H, this is for solar type sites. It shuts off the Tx after a period of no Rx activity.&lt;br /&gt;
&lt;br /&gt;
*Menu 1103 - set the &amp;quot;Glaser&amp;quot; timer value? No idea what this does.&lt;br /&gt;
&lt;br /&gt;
*Menu 1170 - set &amp;quot;Sawyer Mode&amp;quot;. Developed for Tim Sawyer use on Yaesu VXR5000 repeater. Only applicable in OFFLINE mode. Disabled (default) when 0. When set to 1, it forces the PL filter OFF (bypassed) when in OFFLINE mode (not connected to the host), regardless of the state that it normally would be configured in voter.conf. Normally, the PL filter is IN during OFFLINE mode. That should effectively allow you to configure true pass-through (no PL filter or de-emphasis) audio through the device, if you set the rest of the options correctly.&lt;br /&gt;
&lt;br /&gt;
=Audio=&lt;br /&gt;
The RTCM/VOTER is totally flexible regarding emphasis. Although the way it is set is completely obscure. It tries to automatically do the right thing for you, which is great most of the time. But when it’s not, it's hard to know what is going on. &lt;br /&gt;
&lt;br /&gt;
If you are changing the COR Type settings, or nodeemp in voter.conf, make sure you save/reboot the RTCM/VOTER every time you make a change... changes are '''not''' effective until the RTCM/VOTER reboots!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Voting==&lt;br /&gt;
Before we get in to the different ways audio is routed, there is an important consideration you need to make if you are using the RTCM/VOTER for voting. &lt;br /&gt;
&lt;br /&gt;
The way the voting process works, it needs '''discriminator audio''' to determine the signal to noise level from each satellite receiver. As such, you will need to be feeding discriminator audio in to the RX audio pin, so that the hardware/software can vote properly. That means you also need to let the hardware/software do the squelch action.&lt;br /&gt;
&lt;br /&gt;
If you need RX CTCSS, you'll need to feed logic from an external CTCSS decoder in to the CTCSS input pin.&lt;br /&gt;
&lt;br /&gt;
Also, don't disable COR in the RTCM/VOTER... it will cause it to disable the squelch and it will report an RSSI of 255 (full quieting) for all received signals.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Receiver De-emphasis==&lt;br /&gt;
On the RX side the COR Type setting in the RTCM/VOTER determines whether the de-emphasis filter is used for RX audio. 0=Normal means the RTCM/VOTER squelch circuit is in use and it is expecting discriminator audio on the RX pin (to be able to do the squelch action), and therefore it '''will''' provide de-emphasis (audio is routed THROUGH the de-emphasis RC filter circuit) to the receiver audio. COR Type 1=IGNORE COR uses the CTCSS input pin for COR or CTCSS ''logic'' and it then expects de-emphasized receive (line) audio on the RX pin, and therefore will '''not''' provide de-emphasis to the received audio (the RC filter is switched '''out''' and audio passes straight through). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Most of the time, you do NOT need to override the automatic filter selection. However, if you do, and you are sure you have a good reason to, you CAN switch the de-emphasis filter '''out''' of the circuit so that audio passes straight through to the encoder. You would do this by setting the nodeemp=1 option in voter.conf. When you set nodeemp=1, the ''VOTER Protocol'' tells the RTCM/VOTER to switch the filter '''out''', so audio is passed straight through.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Transmitter Pre-emhpasis==&lt;br /&gt;
On the TX side, the RTCM/VOTER expects the repeater to accept ''mic audio''. In other words, the '''repeater''' is providing the pre-emphasis, not the RTCM/VOTER (you are '''not''' directly modulating the TX). This can be overridden by setting CTCSS tone in voter.conf. If a CTCSS tone is defined, the RTCM '''will''' provide pre-emphasis to the audio, and expects that you will be connecting to your repeater's flat audio input (direct modulation). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you don’t want TX CTCSS tone but '''do''' need pre-emphasis, set an arbitrary (any) CTCSS tone in voter.conf, and set the level to 0. This will force the RTCM/VOTER to pre-emphasize the audio it generates on the TX pin, but it won't actually mix in a CTCSS tone. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Level Setting==&lt;br /&gt;
Setting the audio levels for the RTCM/VOTER is pretty straight forward. Just follow these steps:&lt;br /&gt;
*Ensure you have a connection to your host Asterisk server/chan_voter instance&lt;br /&gt;
*Send a 1kHz@3kHz on-channel, full-quieting signal in to the repeater's RX&lt;br /&gt;
*Set the RX up so it reads 3kHz deviation on the RTCM's built in console meter&lt;br /&gt;
*Now set the TX level '''pot''' to get 3kHz out of the transmitter (No PL)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now change the modulation from 1kHz tone to 800Hz followed by 1.8kHz and verify that the deviation level doesn't change as the tone frequency changes. '''Changing levels indicates a pre/de-emphasis issue.''' You will want to read the above sections on how audio is handled, and figure out where your issue is.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If using PL you have to account for that deviation, unless you filter it out with your IFR (test set). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That's it!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Optionally, if you are using the built-in &amp;quot;offline repeat&amp;quot; functions, fail the connection to the host Asterisk server, and make sure your repeat audio performs the same as above.&lt;br /&gt;
&lt;br /&gt;
==== Resolution issues when setting levels using built VOTER boards ====&lt;br /&gt;
Sometimes, depending on what radio is being used getting a good enough resolution with R61 when setting levels is a problem. You move a small amount on the pot and it jumps several hundred KHz of deviation. Inserting a 4:1 voltage divider between the VOTER board and transmitter helps with this. Something such as a 1K and 330 ohm resistor will work. This allows for much finer adjustment on the transmit audio (R61).&lt;br /&gt;
&lt;br /&gt;
==Crappy Transmit Audio==&lt;br /&gt;
&lt;br /&gt;
Does your repeated audio sounded really bassy, muffled, and not very understandable? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There was a situation where, compared to a typical simplex radio-to-radio transmission, the audio through the repeater (RTCM and Asterisk) was unacceptable. What was discovered was that the RTCM has an internal pre-emphasis function that was disabled. The user had intentionally disabled &amp;quot;txctcss&amp;quot; and &amp;quot;txctcsslevel&amp;quot; in voter.conf because he didn't &lt;br /&gt;
want the RTCM transmitting CTCSS (the Quantar was doing that already). He ultimately found a post on the mail list explaining the settings above that said enabling txctcss = some valid tone (114.8 in his case) and setting txctcsslevel = 0 would turn on the pre-emphasis function in the RTCM without transmitting CTCSS tones. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
He did, and it worked like a charm! Audio now had more treble and was less bassy/muffled. So, future RTCM users, be sure not to comment out txctcss and txctcsslevel in voter.conf!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just enable and set the level to 0. You'll thank me later. &lt;br /&gt;
&lt;br /&gt;
== Pulse Noise on Transmit Audio ==&lt;br /&gt;
It has been noticed sometimes on built VOTER boards that it has low level DAC noise which sometimes is apparent as a pulsing noise on the audio output. Adding a 4:1 voltage divider inline between the transmitter and VOTER board helps reduce or eliminate this as described above in Level setting. &lt;br /&gt;
&lt;br /&gt;
=GPS=&lt;br /&gt;
The RTCM/VOTER will work with most GPS available. It requires either NMEA or Trimble TSIP binary data. It only receives data '''from''' the GPS (GPS TX), it does not send anything '''to''' the GPS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The firmware is specifically written to talk to Trimble Thunderbolt receivers using Trimble's TSIP binary data interface, however, other Trimbles GPS receivers that talk TSIP are generally compatible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==RTCM GPS Connections==&lt;br /&gt;
There are some quirks specific to the RTCM that are not well documented.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The GPS connections for the RTCM are on the DB15 connector. Note that the labels for GTX and GRX are misleading. GTX is the data '''FROM''' the GPS '''TO''' the RTCM (GPS TX/RTCM RX). GRX is data from the RTCM to the GPS, but that is currently not used, so it does not need to be connected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PPS is obvious, that is your PPS signal from your GPS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also note, inside the RTCM, there are jumpers to set for TTL or RS-232 data, depending on the type of GPS you are connecting. Set them accordingly. The RS-232 setting loops the data through a MAX3232 converter on the board.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You will still need to set the data and PPS polarity, and baud rate in the configuration menus to get everything to work.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==NMEA Sentences==&lt;br /&gt;
If you are using an NMEA GPS (as opposed to a Trimble using the TSIP binary interface), the RTCM/VOTER is looking for the following NMEA sentences:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$GPGGA&lt;br /&gt;
$GPGSV&lt;br /&gt;
$GPRMC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==TSIP Packets==&lt;br /&gt;
If you are using a Trimble GPS that speaks TSIP, it needs to automatically send out the 0x8F-AB and 0x8F-AC timing packets. Such devices include the Thunderbolt, Resolution T, etc. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Lock==&lt;br /&gt;
The GPS led will go solid regardless of the connection LED. That '''has''' to happen or it won't connect to the Asterisk server. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is not unusual for it to take up to 20 mins to get a GPS lock LED (ie. using a Trimble Thunderbolt) after any reboot. With the Trimble GPS', that is because it is waiting to complete the download of the almanac, and clear the status flags. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS De-sense==&lt;br /&gt;
If you are having odd loss of lock issues, consider you may have interference to your GPS antenna from strong RF nearby. A note from Jesse Lloyd:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I also had crazy problems with poor signal on my GPS when I set it up sitting in a window, and once installed at site I had the GPS antenna maybe 6 ft from the VHF antenna, and after some troubleshooting found it was getting swamped with RF and loosing lock. &lt;br /&gt;
&lt;br /&gt;
I found the debug setting of 32 useful in the RTCM, you can see a hex output of the GPS status.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That has also been observed when trying to use a cheap &amp;quot;patch&amp;quot; antenna in a high RF site (lots of TV/FM transmitters nearby). Switching to a &amp;quot;proper&amp;quot; (commercial) GPS antenna that actually has filtering in it resolved the issue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Issues==&lt;br /&gt;
===Trimble Thunderbolt===&lt;br /&gt;
You may find your Trimble Thunderbolt is showing the incorrect date at the moment. It could be showing the year as 1997. This is due to the date in the Thunderbolt being reported incorrectly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''This can cause some of your voting receivers to not connect, if they are used with other GPS in your system.''' If you have '''ALL''' Thunderbolts, or '''NO''' Thunderbolts, you are probably fine. If you have '''ALL''' Thunderbolts, the date/time is probably wrong, but they will ALL be wrong, so they will connect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GPS Time is a continuous counting time scale beginning at the January 5, 1980 to January 6, 1980 midnight. It is split into two parts: a time of week measured in seconds from midnight Sat/Sun and a week number. The time of week is transmitted in an unambiguous manner by the satellites, but only the bottom 10 bits of the week number are transmitted. This means that a receiver will see a week number count that goes up steadily until it reaches 1023 after which it will “roll over” back to zero, before steadily going up again. Such a week rollover will occur approx. every 20 years. The last week rollover occurred in 1999 and the next one will be in 2019.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Thunderbolt manual states:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The ThunderBolt adjusts for this week rollover by adding 1024 to any week number reported by GPS which is less than week number 936 which began on December 14, 1997. With this technique, the ThunderBolt will provide an accurate translation of GPS week number and TOW to time and date until July 30, 2017.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As such, the Trimble Thunderbolt has a firmware issue with the GPS Week rollover that manifested itself on July 30, 2017, causing the date to become incorrect. The Thunderbolt thinks the week changed from 935 to 936 (actual week 1959-1024=935), so it stopped adding 1024 to the week.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We have added a brute-force fix starting in RTCM/VOTER firmware &amp;gt;=1.51. This fix adds 619315200 seconds (1024 weeks) to the time reported by the GPS. It fixes the Thunderbolts, it breaks other TSIP receivers (Resolution T). A better fix is being tested.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Garmin===&lt;br /&gt;
====Garmin 18x LVC Wiring Issues====&lt;br /&gt;
If you have issues with your GPS 18x LVC not talking to the RTCM/VOTER, it may not be hooked up to the RTCM correctly. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Garmin pin labeling is backwards to what you may think. See below. You probably need to swap pins 6 and 14.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RTCM   	                 GPS 18x LVC      &lt;br /&gt;
6 GRX 	&amp;lt;-- Rx Data 	 6 Green  &lt;br /&gt;
7 GPPS 	&amp;lt;-- Pulse Output 1 Yellow  &lt;br /&gt;
8 GND   Ground 		 3 Black  &lt;br /&gt;
8 GND   Ground 		 5 Black  &lt;br /&gt;
13 +5V 	--&amp;gt;Vin 		 2 Red  &lt;br /&gt;
14 GTX 	--&amp;gt; TX Data 	 4 White&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log into the RTCM and do 98 and you should see something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Current Time: Sun  Apr 20, 2014  04:37:02.820&lt;br /&gt;
Last Rx Pkt System time: 04/20/2014 03:55:35.580, diff: 2487260 msec&lt;br /&gt;
Last Rx Pkt Timestamp time: 04/20/2014 03:55:32.064, diff: 3515 msec&lt;br /&gt;
Last Rx Pkt index: 160, inbounds: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Garmin and the RTCM====&lt;br /&gt;
Beware when buying newer Garmin GPS's to use with the Micro-Node RTCM.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The RTCM expects a 5V PPS signal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Newer Garmin's (GPS 18X, 18X LVC, etc.) MAY NOT output 5V, and can cause issues. '''Check the Garmin datasheet'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER is designed to accept both 3.3V or 5V signals, and ''should'' work fine.&lt;br /&gt;
&lt;br /&gt;
* Some of the Garmin GPS's come with 4800 baud set as default. If you are getting a &amp;quot;Warning: GPS Data time period elapsed&amp;quot; error on your RTCM, change both the GPS and RTCM to use 9600 baud. To do this, interface the GPS to a DB9 connector as per page 8 of the [http://wiki.allstarlink.org/w/images/4/41/GPS_18x_Tech_Specs.pdf manual] (remembering to ONLY use 5V as the power source *facepalm*). Once done, download, extract and open [http://www8.garmin.com/support/download_details.jsp?id=4053 SNSRXCFG_330.exe] and run.&lt;br /&gt;
# Select your GPS (in most cases GPS 18x PC/LVC). Press F10 to switch to NMEA mode (Config &amp;gt; Switch to NMEA Mode)&lt;br /&gt;
# Select Config &amp;gt; Setup and choose the COM port your GPS is connected too. Leave baud rate as auto for now, OK.&lt;br /&gt;
# Select Comm &amp;gt; Connect to connect to the GPS. &lt;br /&gt;
# Go to Config &amp;gt; Get Configuration from GPS to download it's current configuration&lt;br /&gt;
# Click File &amp;gt; Save to save the current configuration&lt;br /&gt;
# In Config &amp;gt; Sensor Configuration change the Baud Rate to 9600. You can also check to make sure 1PPS is enabled here too. Click OK. &lt;br /&gt;
# Hitting F7 when in the main window of the software also brings up the GPS sentences to output if that is of interest.&lt;br /&gt;
# File &amp;gt; Save to a different file than step 5. &lt;br /&gt;
# Press F9 or Config &amp;gt; Send Configuration to GPS. This will then send all the changes you made to the GPS unit (including baud rate so a reconnect may be needed)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===uBlox GPS===&lt;br /&gt;
You can use uBlox GPS modules with the VOTER/RTCM. The ones readily available usually have a 5 pin header on them (5V, GND, TXD, RXD, PPS), as well as an integrated patch antenna, and a SMA connector for an external antenna.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Data is TTL, so make sure to set the jumpers inside the RTCM for TTL data. Baud rate is 9600 by default, and uses NMEA. Set those accordingly in the configuration menu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The RTCM and VOTER require different settings for data and PPS polarity. The VOTER wants '''inverted''' for both, and the RTCM wants '''non-inverted''' for both.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Make sure to save (99) and reboot (r) your VOTER/RTCM after making changes for them to be effective.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===PPS Issues===&lt;br /&gt;
If your VOTER/RTCM connects to your server, but it won't receive anything, check/toggle the PPS polarity, it may be incorrect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===NMEA &amp;lt;--&amp;gt; TSIP Mode Change===&lt;br /&gt;
If you change from NMEA to TSIP (or vice versa), the VOTER/RTCM tries to be smart and change the baud rate for you. For TSIP, it sets it to 9600, and for NMEA it sets it to 4800. However, '''it also resets GPS and PPS polarity to 0'''! This WILL cause you confusion, if you are trying to find the right set of settings for your GPS. This will probably be removed in a future firmware version.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==No GPS/Mixed Mode==&lt;br /&gt;
You do not need a timing source to use an RTCM if you don’t want to vote. That’s called Mix Mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Having the PPS Polarity set to 2 tells the RTCM you do not have a GPS. That forces the RTCM to become a mix (non-voting) client. Turn it on, save it, and restart. A simple voter.conf would look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[general]&lt;br /&gt;
port = 667&lt;br /&gt;
password = BLAH&lt;br /&gt;
&lt;br /&gt;
[1000]&lt;br /&gt;
Site1 = pswrd1,master,transmit&lt;br /&gt;
Site2 = pswrd2,transmit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mixed Client Error==&lt;br /&gt;
&amp;quot;I am getting this error in Asterisk&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WARNING[2368]: chan_voter.c:4511 voter_reader: Voter client master timing source mobile1 attempting to authenticate as mix client!!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A mixed client error means the voter.conf file is expecting an RTCM to try and connect with a GPS IP packet (ie. has '''master''' in it in voter.conf), but the RTCM isn't &lt;br /&gt;
sending a GPS IP packet. So its a mismatch between voter.conf and Option 10 in the RTCM. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to use a mix client (non-voted), make sure that receiver's configuration line in voter.conf '''does not''' have the '''master''' option set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mix Clients with Voted Client Issues==&lt;br /&gt;
&lt;br /&gt;
Situation...&lt;br /&gt;
&amp;quot;I have a private node with 6 voted receivers using RTCMs. I'd like to add a 7th RTCM to this node that is always mixed in rather than voted. I'm able to make this RTCM work as a 7th voted receiver with no problem. Everything I've read seems to indicate that if I change GPS PPS polarity to &amp;quot;none&amp;quot; this will achieve my desired results, however I am unable to get audio out of my transmit RTCM from this 7th site. It does change color to cyan in Allmon indicating it is non voted input but I do not get any indication or audio when that units COR goes active.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Setting voter debug level 3 in Asterisk and I'm seeing the following message repeatedly scrolling by in a blur when the mix client detects COR (COR is active). Sequence numbers are continually incrementing by 1. I'm running software version 1.47 on all my clients:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mix client (Mulaw) my_client index:0 their seq:629 our seq:629&lt;br /&gt;
mix client my_client outa bounds, resetting!!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have a similar situation to the above... check your buflen in voter.conf. Make sure it is at &amp;gt;=160 and see if that fixes it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Debug==&lt;br /&gt;
To turn on GPS Debugging, set the Debug Option Level in the RTCM/VOTER to 32.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [[#Debug Options]] levels for more information on how this works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Trimble Debug Status Decoding==&lt;br /&gt;
The VOTER/RTCM when in TSIP mode (Trimble), assumes it is a Trimble Thunderbolt and is looking for two packets:&lt;br /&gt;
*0x8F-AB - Primary Timing Packet&lt;br /&gt;
*0x8F-AC - Supplemental Timing Packet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Grab a copy of the Thunderbolt User Guide: http://leapsecond.com/pages/tbolt/Thunderbolt-2012-02.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pages 78-83 are the important ones.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Packet 0x8F-AB is what grabs the timing information, and packet 0x8F-AC is what it looks at for everything else (including debug).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The debug string that the VOTER/RTCM reports:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	printf(&amp;quot;GPS-DEBUG: TSIP: ok %d, 9 - 14: %02x %02x %02x %02x %02x %02x\n&amp;quot;,&lt;br /&gt;
					happy,gps_buf[9],gps_buf[10],gps_buf[11],gps_buf[12],gps_buf[13],gps_buf[14]);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, the 1 after ok is the &amp;quot;happy gps&amp;quot; flag. The other 5 bytes are supposed to be bytes 9-14 from the packet... sort of. They are bytes 9-14 of the buffer, but they are actually bytes 8-13 of the binary message. '''Note that array byte 12 is Minor Alarm bits 0-7, and byte 11 is Minor Alarm bits 8-12.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Looking at the message structure, bytes 8-13 are:&lt;br /&gt;
*8-9 Critical Alarms&lt;br /&gt;
*10-11 Minor Alarms&lt;br /&gt;
*12 GPS Decoding Status&lt;br /&gt;
*13 Disciplining Activity&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Therefore, the messages you are seeing break down as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GPS-DEBUG: TSIP: ok 1, 9 - 14: 00 00 00 00 00 00 - everything is good in the 'hood, Doing Fixes, Phase Locking&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 18 08 06 - not happy, Not Tracking Satellites, Not Disciplining Oscillator (0x18 --&amp;gt; 0b00011000, Bits 7--&amp;gt;0 of Minor Alarms), No Usable Sats, Inactive&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 08 08 05 - not happy, Not Tracking Satellites, No Useable Sats, Compensating OXCO (holdover)&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 00 00 05 - not happy, Compensating OXCO (holdover)&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 1, 9 - 14: 00 00 00 00 00 08 - happy, Recovery Mode&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 00 00 04 - not happy, Initializing Loop Filter&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 08 08 08 00 - not happy, Almanac Not Complete, Not Tracking Satellites, No Useable Sats&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 08 00 00 00 - not happy, Almanac Not Complete&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 08 08 01 00 - not happy, Almanac Not Complete, Not Tracking Satellites, Don't Have GPS Time&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 0A 08 00 - not happy, Antenna Open, Not Tracking Satellites, No Useable Sats&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The GPS is flagged as NOT HAPPY in TSIP mode if ANY of the following are TRUE:&lt;br /&gt;
*If GPS Decoding Status is anything other than &amp;quot;Doing Fixes&amp;quot;.&lt;br /&gt;
*If Disciplining Activity is not Phase Locking or Recovery Mode.&lt;br /&gt;
*Any Critical Alarms.&lt;br /&gt;
*Any Minor Alarms.&lt;br /&gt;
&lt;br /&gt;
=Ubiquity ToS=&lt;br /&gt;
See https://help.ubnt.com/hc/en-us/articles/205231750-airMAX-How-is-QoS-and-prioritization-handled-by-airMAX-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, if we set ToS/DSCP in the header to C0, then Ubiquity (and other gear watching ToS) ''should'' prioritize the packets. This sets the DSCP to 110 000 aka 48. UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS latency). Other sources show this as a Network Control TOS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is an option in voter.conf to turn this on (utos=y). However, this only controls packets being sent from Asterisk '''TO''' the RTCM. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to tag packets from the RTCM '''TO''' Asterisk, you need to set the RTCM debug option level to 16 (see [[#Debug Options]] for how this works).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At some point we should probably change the default behaviour of the RTCM firmware to mark the packets and use the debug setting to '''disable''' ToS. That change (if you wanted to compile your own firmware) would be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Change line 90 in IP.c&lt;br /&gt;
&lt;br /&gt;
From:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? 0xc0 : (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY))&lt;br /&gt;
&lt;br /&gt;
To:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY) : 0xc0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This changes the conditional expression from if the debug level is 16 to mark the packets with DSCP 48 to if the debug level is 16, mark the packets routine (DSCP 0).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM Simulcasting=&lt;br /&gt;
The RTCM/VOTER boards do support simulcasting, however, there are a bunch of quirks that one needs to be aware of.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Radio Hardware==&lt;br /&gt;
For best results, you should use all identical RF equipment between your voting RX sites and simulcast TX sites. If you don't, you can end up with strange audio artifacts when different receivers are used, and other strange audio issues when different transmitters are used. The most important thing when setting your levels is that ALL the RX and TX levels match from radio to radio. The best way this is achieved is using a &amp;quot;master&amp;quot; radio and reference from that - all radios might be identical models, but may not have identical audio characteristics so check those levels! Also check CTCSS and audio levels separately to make sure they all match.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==9.6MHz Oscillator==&lt;br /&gt;
If you want reliable simulcast with an acceptable level of overlap warble, you MUST inject a GPS-disciplined or OXCO 9.6MHz signal to the clock of the RTCM's, in lieu of their stock internal crystal. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Otherwise, the inherent internal clock jitter of the RTCM's will cause CTCSS warble, etc. in areas where your transmitters overlap. The 1 PPS feed that you normally feed the RTCM's is acceptable for voting, but naturally, a typical crystal-driven clock will slightly drift in between the pulses every second due to inherent jitter, etc., and that ain't to good for situations like simulcast which demand sample-accurate performance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are some comments from Joe, KC2IRV, on the subject. He has also created his own wiki, specific to simulcast issues, you can find it at: http://rtcmsimulcast.wikifoundry.com/ &lt;br /&gt;
&lt;br /&gt;
:I felt I needed to let those on this mailing list know my findings with simulcasting with the RTCM units since I have received a great deal of help and information from people on this list.&lt;br /&gt;
&lt;br /&gt;
:For the past week I have had a two (2) site simulcast system up and running on UHF using the RTCM units. I have done a great deal of testing and proving on the bench and it is so far working beautifully. &lt;br /&gt;
&lt;br /&gt;
:The one issue that was made apparent to me early on was that in order for the RTCM's to be suitable for simulcast, the processor inside it needed to be clocked to a more accurate source. This source is supposed to be the Programmable Clock Generator Module in order to produce a GPS locked 9.6 MHz reference for the processor. Unfortunately this unit is not currently available.&lt;br /&gt;
&lt;br /&gt;
:Knowing this, I started to go down the road of possibly designing my own, but stumbled upon a cheap, plentiful supply of Symmetricom 9.6 MHz sinewave OCXO's. I took a chance and ordered a few to experiment with to see if the RTCM would be able to use this in place of the supplied crystal for a clock. I found they did, with that I decided to modify the RTCM with an SMA connector just above the audio adjustment pots and use this OCXO. I trimmed the frequency on the units to match each other and used them to produce the processor clock.&lt;br /&gt;
&lt;br /&gt;
:After a week of testing, I have found the results in the overlap areas to be exactly as I would expect them on a public safety/commercial simulcast system. While in an overlap region where both transmitters are within 3dB of one another, to the ear you hear no audio phase wandering. Of course , this has only been a week of testing so I wouldn't call it case closed yet.&lt;br /&gt;
&lt;br /&gt;
:I will say that if this system remains this way after testing for 6 months to a year than using a 9.6 MHz OXCO is a viable alternative to achieve the needed precision and accuracy needed for the processor clock to make it suitable for simulcast.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Comments from Jim Dixon on the issue:&lt;br /&gt;
&lt;br /&gt;
:You have to use '''something''' that will take the precise 10MHz (or whatever it is) from the GPSDO and PLL (phase-locked) convert it to 9.6MHz (square wave at 3.3V for the CPU clock).&lt;br /&gt;
&lt;br /&gt;
:We had to use 9.6MHz mainly because of the DAC in the dsPIC instead of 10MHz. The options for various divide/clock radios in the part are RATHER limited. As I recall, there wasn't even a way of getting the necessary 16kb/s sample rate on the ADC from 10MHZ, either.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Micro-Node RTCM Clock Issue=&lt;br /&gt;
James, KI0KN, had some strange-ness with some of his RTCM's when used for voting. As soon as he changed menu item 10 on the RTCM to either a (1) or a (0) instead of (2), he '''instantly''' got this on the RTCM console:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
04/05/2016 18:44:13.660  Lost GPS Time synchronization&lt;br /&gt;
04/05/2016 18:44:13.660  Host Connection Lost (Pri) (10.16.1.240)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And it sits there forever and never re-establishes connection to the host. The issue was finally traced to a bad batch of 9.6MHz crystals that affected a small run of the RTCM's. The issue was eventually resolved by Micro-Node, but we'll document it here just for record keeping.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
James comments to the list:&lt;br /&gt;
&lt;br /&gt;
:Well, after many of you offered your time and thoughts on my voter problem, Jim, WB6NIL, graciously donated a couple of hours of his time to remotely help me and he uncovered the problem.&lt;br /&gt;
&lt;br /&gt;
:All 5 of my RTCMs were purchased within the last 6 months, and I suspect all 5 have the same problem (will verify that today). The problem is that the microprocessor crystal is running too fast! There is 9.6Mhz crystal that drives the MPU, on the particular unit that Jim helped me diagnose, it's running 2.5 khz too fast.  &lt;br /&gt;
&lt;br /&gt;
:There is a sanity check in the firmware that makes sure the correct number of samples were taken in the last second (it's supposed to be 8000) and fails if the sample is incorrectly sized (mine is taking 8003 samples).  Jim helped adjust the code to be more tolerant of the sampling error and my whole system instantly worked.&lt;br /&gt;
&lt;br /&gt;
:I have since tested it with ALL my GPSs (they all work great!). So I now have everything working, including the voting.&lt;br /&gt;
&lt;br /&gt;
:I haven't contact Micro-Node about it yet. Jim told me that voting should work fine but this clock error would probably not be acceptable for Simulcast (something we have no plans on doing as of now). Since mine are deployed at mountain top sites, I'll probably pursue a crystal that is running at the correct frequency and use &amp;quot;standard&amp;quot; firmware so that if the decision is ever made to play with simulcast, I won't be right back in this same boat.&lt;br /&gt;
&lt;br /&gt;
:Thanks to all that helped out, and a HUGE thanks to Jim for taking the time to troubleshoot this.&lt;br /&gt;
&lt;br /&gt;
:BTW- This clock error will NOT effect the RTCM in mix client mode, it only affects it in voting or simulcast mode!&lt;br /&gt;
&lt;br /&gt;
:In voter.c, the stock line is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if ((samplecnt &amp;gt;= 7999) &amp;amp;&amp;amp; (samplecnt &amp;lt;= 8001))&lt;br /&gt;
&lt;br /&gt;
it needs to be changed to something like:&lt;br /&gt;
&lt;br /&gt;
if ((samplecnt &amp;gt;= 7999) &amp;amp;&amp;amp; (samplecnt &amp;lt;= 8003 ))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:That was just enough to make my first RTCM work. I've had a chance now to check a few more of my RTCMs on the bench this morning and the crystal frequencies are kind of all over.  The next one I had on the bench was 5.2Khz fast. The above code was still not enough to fix it (as would be expected) so it looks like the quality control on whatever manufacturer that crystal is, isn't very good (or a low tolerance crystal is being used). I am going to pursue crystal replacement to get a highly accurate, stable, on-frequency crystal in there as my first choice. Changing the firmware 5 different times doesn't seem like the right answer.&lt;br /&gt;
&lt;br /&gt;
:Jim put that sanity check in there for a reason. Working around it '''may''' allow the device to work, but to me, it seems getting the hardware operating the way it was supposed to originally is the better answer. I will follow up with Micro-node and let you all know how it goes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After following up with Micro-Node:&lt;br /&gt;
:They were all off, some were off a LOT. I talked to Mark @ Micronode. He told me there were 25 units that made it out the door with a crystal from an unapproved source and that was quite likely the reason for the problem. He gladly sent me 5 new crystals to replace (he offered to replace them himself if I sent the units in, but I am comfortable doing it myself to save the time and postage). &lt;br /&gt;
&lt;br /&gt;
:I haven't received them in the mail yet to show that the problem is fixed, but I will post here when that happens. He was great to work with and had no issue getting things set straight. If you are having the same issue and your RTCMs were bought about the same time, I'd suggest you contact him and have him help you resolve the issue!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Duplex Mode 3=&lt;br /&gt;
Does delayed repeat audio bug you? Tired of hearing a bit of yourself after you unkey? Wish you could talk full duplex? Hate the echo chamber effect? Then we have the answer for you.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Duplex Mode 3 in app_rpt allows for &amp;quot;in-cabinet repeat&amp;quot; (where the radio hardware provides repeat audio) and app_rpt adds the hang time, courtesy tones, linking - all the &lt;br /&gt;
things apt_rpt does sans repeat audio. Therefore no repeat audio delay. Cool, eh? This duplex mode has been in app_rpt for a while. Problem has been how to implement it in the RTCM environment. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Duplex Mode 3 support in the RTCM provides in-cabinet repeat functionality. Repeat audio loops through the RTCM and has almost zero delay because it does not have to traverse the network. The delay is not quite zero but it's plenty short enough to eliminate all of the above mentioned annoyances. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Of course Duplex Mode 3 support can't be used with voting or simulcast. You also loose Touch Tone muting, Time Out Timer and Repeater Disable functions because the repeat path is not through app_rpt.&lt;br /&gt;
&lt;br /&gt;
= Setting Voter Buffers =&lt;br /&gt;
Voter ping is useful for end-to-end network evaluation when ICMP ping is turned off and/or the RTCM is behind a firewall and is not ICMP reachable. It can also help with finding the correct RTCM and voter.conf buffer settings.&lt;br /&gt;
&lt;br /&gt;
=== Voter Ping Usage ===&lt;br /&gt;
The voter ping asterisk CLI syntax is:&lt;br /&gt;
 *CLI&amp;gt;voter ping nameOfClient [packetCount]&lt;br /&gt;
If packetCount is not specified 8 pings will be sent. Use packetCount of 0 to stop an in progress voter ping. Set packetCount to at least 100 when evaluating link quality.&lt;br /&gt;
&lt;br /&gt;
The result will be similar to:&lt;br /&gt;
 ...&lt;br /&gt;
 PING (nameOfClient): Packets tx: 100, rx: 100, oos: 0, Avg.: 26.710 ms&lt;br /&gt;
 PING (nameOfClient):  Worst: 38 ms, Best: 22 ms, 100.0% Packets successfully received (0.0% loss)&lt;br /&gt;
The output above is self evident except for oos which is a count of out of sequence packets. Voter ping requires RTCM firmware 1.23 or newer and chan_voter 2013-08-04 or newer.&lt;br /&gt;
&lt;br /&gt;
=== RX Buffer Size ===&lt;br /&gt;
Ping all the receiver sites and look for the worst response of the worst client. As a rough rule of thumb the buflen setting in voter.conf should be set to the worst response + 40ms or 120 whichever is greater. Using the above case the buflen should be set to 120 (38+40&lt;br /&gt;
&lt;br /&gt;
=== TX Buffer Size ===&lt;br /&gt;
Ping all the transmitter sites and look for the worst response of the worst client. The RTCM TX Buffer Length should be set to (worst response + 40ms) * 8 or 480 whichever is greater. Using the above case the RTCM TX Buffer Length should be set to 624 ((38+40)*8).&lt;br /&gt;
&lt;br /&gt;
=== Assumptions ===&lt;br /&gt;
* The minimum TX buffer size is 480 (60ms) and the minimum RX buffer is 120ms. These were derived by testing on a LAN segment with chan_voter 2013-08-04 and RTCM 1.26.&lt;br /&gt;
* The ping times are not round trip times but they are in fact round trip times. Therefore the worst response could (should?) be divided by 2. Ie RX buffer = 38/2+40=59 and TX buffer = (38/2 + 40) * 8 = 472. Minimums still apply.&lt;br /&gt;
* The internet path to and from the RTCM under test is symmetrical.&lt;br /&gt;
* The added 40ms pad is an estimate of buffer ingress and egress.&lt;br /&gt;
As always your milage may vary. Some trial and error may be required to find the optimum settings.&lt;br /&gt;
&lt;br /&gt;
=== Setup ===&lt;br /&gt;
The RX buffer is set with buflen=120 in /etc/asterisk/voter.conf. The value is in milliseconds. The TX buffer is set in the RTCM with menu item 7. The value is in 125 microsecond increments. To match the size of the TX to the RX buffer, use the RX buffer * 8 to get the TX buffer size.&lt;br /&gt;
[[Category:How to]]&lt;br /&gt;
[[Category:Node Configuration]]&lt;/div&gt;</summary>
		<author><name>Ve7fet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=2025</id>
		<title>RTCM Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=2025"/>
		<updated>2020-12-07T05:47:53Z</updated>

		<summary type="html">&lt;p&gt;Ve7fet: /* Un-documented Menus/Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Radio Thin Client Module (RTCM) is commercially available hardware for interfacing radios to an AllStarLink computer.&lt;br /&gt;
&lt;br /&gt;
The Micro-Node RTCM and VOTER interfaces are typically used with AllStar in voting/simulcast applications. They MAY be used for ANY repeater interface application, through the chan_voter channel driver. The VOTER is the original through-hole board designed by Jim Dixon for this application. It is open-source, and the relevant Gerber files and BoM to build it are available. The [http://www.micro-node.com/thin-m1.shtml Micro-Node Radio Thin Client Module (RTCM)] is the commercial version of the VOTER. It uses surface mount parts (SMT), but is functionally equivalent to the original VOTER. In general, the two terms (RTCM/VOTER) are used interchangeably, as they operate the same, and use the same firmware (mostly, see below).&lt;br /&gt;
&lt;br /&gt;
This page will highlight some of the operational concerns, quirks, bugs, and other items of interest that relate to these interfaces. Much of the information has been gleaned off the AllStar mail list, comes from personal experience, or comes from notes in the firmware source code.&lt;br /&gt;
&lt;br /&gt;
=Testing=&lt;br /&gt;
RTCM's come preconfigured to login to [http://voter-demo-allstarlink.org voter-demo-allstarlink.org] for out of the box testing.&lt;br /&gt;
&lt;br /&gt;
=Factory Reset=&lt;br /&gt;
A factory reset can be performed by setting SW 1 down and then applying power to the RTCM. Wait for the green LED to stop blinking, power off and set SW 1 back up. &lt;br /&gt;
&lt;br /&gt;
=Firmware=&lt;br /&gt;
The firmware in the RTCM and VOTER is the same, except it is compiled for the specific dsPIC that is installed in each. As such, the firmware is specific to the VOTER or the RTCM, and is NOT interchangeable (it won't boot in the wrong device). Firmware for the RTCM is denoted by &amp;quot;smt&amp;quot; in the filename.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are '''two parts''' to the firmware, a bootloader, and then the actual firmware file. The bootloader starts when power is applied, and allows you to talk to the dsPIC and load new firmware files over ethernet. If the bootloader is not intercepted by the loading tool, it will continue to boot the current firmware file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All new boards will need to have the bootloader installed first, followed by a firmware file. You '''can''' load a firmware file directly (.hex) in to the dsPIC, but then you will not have any of the bootloader remote loading features.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The current bootloader (.cof file) is available here: https://github.com/AllStarLink/voter/tree/master/voter-bootloader (the -smt file is for the RTCM). It needs to be loaded with a PICKit programmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Current firmware (.cry file) is available here: https://github.com/AllStarLink/voter/tree/master/board-firmware . They are loaded with the EBLEX C30 Programmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are multiple &amp;quot;flavors&amp;quot; of firmware available. See below for further explanation of what all the options mean.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The DSPBEW versions have Jim's DSP/BEW feature enabled. Note that due to the size of this feature, the diagnostics menu is NOT available in this version.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CHUCK versions have Chuck Henderson's RSSI and Squelch modifications enabled. This is probably the version that most user's will want to use in production.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Compiling Environment==&lt;br /&gt;
If you look in the [https://github.com/AllStarLink/voter/blob/master/votersystem.pdf votersystem.pdf], you will find a procedure to modify and load the bootloader in to the dsPIC of a VOTER board. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Unfortunately, there is an important step '''missing''' in that procedure, which is covered below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In addition, the old links for the MPLAB software are dead, so let's update this info and get you going.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Currently (Feb 2017), you can get the required software from:&lt;br /&gt;
:http://www.microchip.com/development-tools/downloads-archive&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download MPLAB IDE 32-bit Windows v8.66:&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_IDE_v8_66.zip&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/MPLAB_IDE_v8_66.zip&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download MPLAB C Compiler for PIC24 and dsPIC DSCs v3.31 '''NOT v.3.25''':&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Optionally, install Windows Virtual PC and XP Mode. This is getting to be pretty old software, so running it under XP Mode may be a good idea, so we can keep it isolated (install it in a virtual machine). It does run fine in Windows 7.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To setup the compile/build environment, follow these steps:&lt;br /&gt;
*Run the MPLAB IDE installer. You don't need to install the HI-TECH C Compiler at the end (click no)&lt;br /&gt;
*Run the MPLAB C Compiler installer&lt;br /&gt;
*Select Legacy Directory Name&lt;br /&gt;
*'''Select Lite Compiler'''&lt;br /&gt;
*Go to: https://github.com/AllStarLink&lt;br /&gt;
*Follow the links to: voter --&amp;gt; Clone or Download --&amp;gt; Download Zip. That will get you voter-master.zip which is a download of the whole VOTER tree from GitHub.&lt;br /&gt;
*Extract it somewhere (ie. in the XP Mode Virtual PC)&lt;br /&gt;
*Launch the MPLAB IDE&lt;br /&gt;
*Go to Configure --&amp;gt; Settings --&amp;gt; Projects and de-select one-to-one project mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bootloader==&lt;br /&gt;
If you need to load the bootloader in to a fresh board, you will need to follow these steps:&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; voter-bootloader.mcp --&amp;gt; Open (it is in the voter-bootloader folder of the GitHub source)&lt;br /&gt;
*Go to File --&amp;gt; Import --&amp;gt; voter-bootloader --&amp;gt; ENC_C30.cof --&amp;gt; Open '''This step is missing from the original procedure.'''&lt;br /&gt;
*Remove JP7 on the VOTER Board. This is necessary to allow programming by the PICKit2/PICKit3 device.&lt;br /&gt;
*Attach the PICKIT2/PICKit3 device to J1 on the VOTER board. Note that Pin 1 is closest to the power supply modules (as indicated on the board).&lt;br /&gt;
*If you have not already selected a programming device, go to Programmer --&amp;gt; Select Device and choose PICKit3 (or PICKit2, depending on what you are using).&lt;br /&gt;
*Go to Programmer --&amp;gt; Program. This will program the bootloader firmware into the PIC device on the board.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to change the default IP address from 192.168.1.11 in the bootloader:&lt;br /&gt;
*Select View --&amp;gt; Program Memory (from the top menu bar)&lt;br /&gt;
*Hit Control-F (to &amp;quot;find&amp;quot;) and search for the digits &amp;quot;00A8C0&amp;quot;.&lt;br /&gt;
*These should be found at memory address &amp;quot;03018&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;A8C0&amp;quot; at 03018 represents the hex digits C0 (192) and A8 (168) which are the first two octets of the IP address. The six digits to enter are 00 then the SECOND octet of the IP address in hex then the FIRST octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;0B01&amp;quot; at 0301A represents the hex digits 0B (11) and 01 (1) which are the second two octets of the IP address. The six digits to enter are 00 then the FOURTH octet of the IP address in hex then the THIRD octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you have modified the address to your desired IP, follow the programming procedure (above).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Firmware==&lt;br /&gt;
To compile the firmware (if you want to make custom changes):&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; navigate to board-firmware and open the .mcp file for the flavor of firmware you want to compile. They are in the board-firmware folder of the GitHub source.&lt;br /&gt;
*'''NOTE''': the .mcp files with the &amp;quot;smt&amp;quot; suffix are for the RTCM (built with SMT parts). The non-smt files are for the ORIGINAL through-hole VOTER boards. The difference is that the VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
*Go to Project --&amp;gt; Build Configuration and select &amp;quot;Release&amp;quot;. This may not be necessary (I don't believe that option is used in the firmware), but it removes the compiler option of __DEBUG being passed, so theoretically it would build &amp;quot;normal&amp;quot; firmware.&lt;br /&gt;
*Go to Configure --&amp;gt; Select Device and choose the appropriate device for your board from the Device list. If you don't select the right one, the board will not boot. Select dsPIC33FJ128GP802 for the VOTER, and dsPIC33FJ128GP804 for the RTCM.&lt;br /&gt;
*Now, if you go to Project --&amp;gt; Build All it should compile everything and show you &amp;quot;Build Succeeded&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A .cry file should be in the board-firmware folder. You can load this with the ENC Loader.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is also a .hex file in there that you could load with a programmer... but that would wipe the bootloader... so don't do that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Chuck Squelch==&lt;br /&gt;
If you want to enable &amp;quot;Chuck Squelch&amp;quot;, open the HardwareProfile.h and un-comment #define CHUCK. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may also want to go down to Line 291 in Voter.c (right click on the window, go to Properties --&amp;gt; &amp;quot;C&amp;quot; File Types --&amp;gt; Line Numbers) and tack on CHUCK after 1.60 (the current version number) so that when you load this firmware, the version will be shown as 1.51CHUCK, and you'll know that Chuck Squelch is compiled in. We should probably make that more automagic in the future...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==DSP/BEW==&lt;br /&gt;
If you want to compile the DSPBEW version, open the DSPBEW project file instead.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DSP/BEW Firmware Version=&lt;br /&gt;
DSP BEW Firmware is mutually exclusive with the diagnostic menu. There is not enough space for both, if you load the DSP/BEW firmware, you will '''NOT''' have a diag menu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BEW stands for Baseband Examination Window.&lt;br /&gt;
&lt;br /&gt;
Typically, the discriminator of an FM communications receiver produces results containing audio spectrum from the &amp;quot;sub-audible&amp;quot; range (typically &amp;lt; 100 Hz) to well above frequencies able to be produced by modulating audio. These higher frequencies can be utilized to determine signal quality, since they can only contain noise (or no noise, if a sufficiently strong signal is present).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For receivers (such as the Motorola Quantar, etc) that do not provide sufficient spectral content at these &amp;quot;noise&amp;quot; frequencies (for various reasons), The &amp;quot;DSP/BEW (Digital Signal Processor / Baseband Examination Window)&amp;quot; feature of the RTCM firmware may be utilized. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These receivers are perfectly capable of providing valid &amp;quot;noise&amp;quot; signal with no modulation on the input of the receiver, but with strong modulation (high frequency audio and high deviation), it severely interferes with proper analysis of signal strength.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This feature provides a means by which a &amp;quot;Window&amp;quot; of baseband (normal audio range) signal is examined by a DSP and a determination of whether or not sufficient audio is present to cause interference of proper signal strength is made. During the VERY brief periods of time when it is determined that sufficient audio is present to cause interference, the signal strength value is &amp;quot;held&amp;quot; (the last valid value previous to the time of interference) until such time that the interfering audio is no longer present.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The DSP/BEW feature is selectable, and '''should not''' be used for a receiver that does not need it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A note on the Motorola SLR5700 per VE7FET. DSP/BEW definitely makes a difference on what AllMon reports for the signal strength of received signals. It is less reactive when DSP/BEW = 1 than with it set to 0. We'll have to see what the real world trials show. It might be better to leave it off.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Chuck Squelch=&lt;br /&gt;
&amp;quot;Chuck Squelch&amp;quot; are a couple firmware changes made by Chuck Henderson, WB9UUS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pre-compiled firmware versions including this option are available on [https://github.com/AllStarLink/voter/tree/master/board-firmware GitHub]. See above on how it is enabled/compiled, if you are rolling your own firmware modifications.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
One of the changes fixes an issue with weak signals producing RSSI readings all over the place. It is caused by a 16 bit value that was overflowing (it is the RSSI change in the firmware). It results in rock-solid RSSI values being reported, even on barely or non-readable signals. '''This change will likely be rolled in to a permanent fix in a future firmware release.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The other firmware change changes how the squelch responds (looks at the noise in the last two audio samples) and makes the &amp;quot;Micor squelch&amp;quot; action work better.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may also want to consider the following changes in [[Voter.conf|/etc/asterisk/voter.conf]]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;Comment out:&lt;br /&gt;
;thresholds =&lt;br /&gt;
&lt;br /&gt;
;and set:&lt;br /&gt;
linger = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Squelch Issues=&lt;br /&gt;
*If anyone is off frequency a little bit, that will make the voice talk off worse. Double check that the repeater and the users are all on frequency.&lt;br /&gt;
*Don't use narrow bandwidth on the repeater receiver. &lt;br /&gt;
*Make sure that the discriminator audio is not rolled off even a little bit at the high end. There should not be resistors in series or capacitors to ground between the discriminator chip output pin and the voter board input, for best results.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Motorola Quantar==&lt;br /&gt;
Some things to consider:&lt;br /&gt;
*Install JP1 on the Quantar's RTCM. The squelch should calibrate at around 4 blinks rather than the 12 blinks or so without JP1.&lt;br /&gt;
*Be sure you've done the diode and squelch calibration with the actual attached radio (no antenna). &lt;br /&gt;
*The Quantar firmware should be 20.14.48 as later versions have better noise output. &lt;br /&gt;
*Try the &amp;quot;Chuck Squelch&amp;quot; RTCM version.&lt;br /&gt;
*Each RTCM should have 3 to 5 turns past threshold to prevent the squelch form being too loose. Somewhere around the 350 level seems about right. Chuck Squelch seems to need fewer turns but YMMV.&lt;br /&gt;
*Don't &amp;quot;and&amp;quot; CTCSS with squelch. That may override the RTCM's squelch detection. Compare with CTCSS on and off to see effect if any.&lt;br /&gt;
&lt;br /&gt;
Also check the [[Quantar_RTCM|Quantar RTCM]] page for detailed interfacing and configuration information.&lt;br /&gt;
&lt;br /&gt;
=RTCM/VOTER LED's=&lt;br /&gt;
RX LED on the RTCM/VOTER will flash (same rate as ACT LED) if you have External CTCSS enabled, and the received signal has the wrong (or no) valid PL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Menus=&lt;br /&gt;
==Main Menu==&lt;br /&gt;
This is what a typical Main Menu looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Select the following values to View/Modify:&lt;br /&gt;
&lt;br /&gt;
1  - Serial # (0000) (which is MAC ADDR 00:04:A3:00:00:00)&lt;br /&gt;
2  - VOTER Server Address (FQDN) (44.128.1.1)&lt;br /&gt;
3  - VOTER Server Port (667),  4  - Local Port (Override) (0)&lt;br /&gt;
5  - Client Password (password1),  6  - Host Password (hostpass1)&lt;br /&gt;
7  - Tx Buffer Length (800)&lt;br /&gt;
8  - GPS Data Protocol (0=NMEA, 1=TSIP) (1)&lt;br /&gt;
9  - GPS Serial Polarity (0=Non-Inverted, 1=Inverted) (1)&lt;br /&gt;
10 - GPS PPS Polarity (0=Non-Inverted, 1=Inverted, 2=NONE) (0)&lt;br /&gt;
11 - GPS Baud Rate (9600)&lt;br /&gt;
12 - External CTCSS (0=Ignore, 1=Non-Inverted, 2=Inverted) (0)&lt;br /&gt;
13 - COR Type (0=Normal, 1=IGNORE COR, 2=No Receiver) (0)&lt;br /&gt;
14 - Debug Level (0)&lt;br /&gt;
15  - Alt. VOTER Server Address (FQDN) ()&lt;br /&gt;
16  - Alt. VOTER Server Port (Override) (0)&lt;br /&gt;
17  - DSP/BEW Mode (0)&lt;br /&gt;
18 - &amp;quot;Duplex Mode 3&amp;quot; (0=DISABLED, 1-255 Hang Time) (1/10 secs) (0)&lt;br /&gt;
19 - Simulcast Launch Delay (0) (approx 200 ns, 5 = 1us, &amp;gt; 0 to ENA SC)&lt;br /&gt;
97 - RX Level,  98 - Status,  99 - Save Values to EEPROM&lt;br /&gt;
i - IP Parameters menu, o - Offline Mode Parameters menu&lt;br /&gt;
q - Disconnect Remote Console Session, r - reboot system, d - diagnostics&lt;br /&gt;
&lt;br /&gt;
Enter Selection (1-27,97-99,r,q,d) :&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==IP Parameters Menu==&lt;br /&gt;
This is what a typical IP Parameters Menu looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP Parameters Menu&lt;br /&gt;
&lt;br /&gt;
Select the following values to View/Modify:&lt;br /&gt;
&lt;br /&gt;
1  - (Static) IP Address (44.128.1.2)&lt;br /&gt;
2  - (Static) Netmask (255.255.255.0)&lt;br /&gt;
3  - (Static) Gateway (44.128.1.254)&lt;br /&gt;
4  - (Static) Primary DNS Server (44.128.1.254)&lt;br /&gt;
5  - (Static) Secondary DNS Server (0.0.0.0)&lt;br /&gt;
6  - DHCP Enable (0)&lt;br /&gt;
7  - Telnet Port (23)&lt;br /&gt;
8  - Telnet Username (admin)&lt;br /&gt;
9  - Telnet Password (radios)&lt;br /&gt;
10 - DynDNS Enable (0)&lt;br /&gt;
11 - DynDNS Username (wb6nil)&lt;br /&gt;
12 - DynDNS Password (radios42)&lt;br /&gt;
13 - DynDNS Host (voter-test.dyndns.org)&lt;br /&gt;
14 - BootLoader IP Address (192.168.1.10) (OK)&lt;br /&gt;
15 - Ethernet Duplex (0=Half, 1=Full) (1)&lt;br /&gt;
99 - Save Values to EEPROM&lt;br /&gt;
x  - Exit IP Parameters Menu (back to main menu)&lt;br /&gt;
q  - Disconnect Remote Console Session, r - reboot system&lt;br /&gt;
&lt;br /&gt;
Enter Selection (1-14,99,c,x,q,r) :&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Offline Parameters Menu==&lt;br /&gt;
This is what a typical Offline Parameters Menu looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
OffLine Mode Parameters Menu&lt;br /&gt;
&lt;br /&gt;
Select the following values to View/Modify:&lt;br /&gt;
&lt;br /&gt;
1  - Offline Mode (0=NONE, 1=Simplex, 2=Simplex w/Trigger, 3=Repeater) (3)&lt;br /&gt;
2  - CW Speed (400) (1/8000 secs)&lt;br /&gt;
3  - Pre-CW Delay (4000) (1/8000 secs)&lt;br /&gt;
4  - Post-CW Delay (4000) (1/8000 secs)&lt;br /&gt;
5  - CW &amp;quot;Offline&amp;quot; (ID) String (WB6NIL)&lt;br /&gt;
6  - CW &amp;quot;Online&amp;quot; String (OK)&lt;br /&gt;
7  - &amp;quot;Offline&amp;quot; (CW ID) Period Time (6000) (1/10 secs)&lt;br /&gt;
8  - Offline Repeat Hang Time (15) (1/10 secs)&lt;br /&gt;
9  - Offline CTCSS Tone (0.0) Hz&lt;br /&gt;
10 - Offline CTCSS Level (0-32767) (3000)&lt;br /&gt;
11 - Offline De-Emphasis Override (0=NORMAL, 1=OVERRIDE) (0)&lt;br /&gt;
99 - Save Values to EEPROM&lt;br /&gt;
x  - Exit OffLine Mode Parameter Menu (back to main menu)&lt;br /&gt;
q  - Disconnect Remote Console Session, r - reboot system&lt;br /&gt;
&lt;br /&gt;
Enter Selection (1-9,99,c,x,q,r) :&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Status Menu==&lt;br /&gt;
This is what a typical Status Menu looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
S/W Version: 1.51 BEW 08/07/2017 Chuck&lt;br /&gt;
System Uptime: 19569.3 Secs&lt;br /&gt;
IP Address: 172.16.16.191&lt;br /&gt;
Netmask: 255.255.255.0&lt;br /&gt;
Gateway: 172.16.16.254&lt;br /&gt;
Primary DNS: 172.16.16.254&lt;br /&gt;
Secondary DNS: 0.0.0.0&lt;br /&gt;
DHCP: 0&lt;br /&gt;
VOTER Server IP: 172.16.16.164&lt;br /&gt;
VOTER Server UDP Port: 667&lt;br /&gt;
OUR UDP Port: 667&lt;br /&gt;
GPS Lock: 1&lt;br /&gt;
Connected: 1&lt;br /&gt;
COR: 0&lt;br /&gt;
EXT CTCSS IN: 0&lt;br /&gt;
PTT: 0&lt;br /&gt;
RSSI: 0&lt;br /&gt;
Current Samples / Sec.: 8000&lt;br /&gt;
Current Peak Audio Level: 58112&lt;br /&gt;
Squelch Noise Gain Value: 45, Diode Cal. Value: 56, SQL pot 621&lt;br /&gt;
Current Time: Mon  Dec 07, 2020  02:15:25.120&lt;br /&gt;
Last Rx Pkt System time: 12/07/2020 02:05:32.340, diff: 592780 msec&lt;br /&gt;
Last Rx Pkt Timestamp time: 12/07/2020 02:05:32.340, diff: 0 msec&lt;br /&gt;
Last Rx Pkt index: 320, inbounds: 1&lt;br /&gt;
&lt;br /&gt;
Press The Any Key (Enter) To Continue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Something to note about the &amp;quot;Last Rx Pkt&amp;quot; status. This is the last received packet '''from the network''', not over the air. As such, on your satellite voter receivers that are receive-only, you will likely see something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Last Rx Pkt System time: &amp;lt;System Time Not Set&amp;gt;, diff: 990080296 msec&lt;br /&gt;
Last Rx Pkt Timestamp time: &amp;lt;System Time Not Set&amp;gt;, diff: 0 msec&lt;br /&gt;
Last Rx Pkt index: 0, inbounds: 0&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
The Last Rx Pkt System Time is the last time a packet was sent to this device to be transmitted (diff: is how many msec ago that was).&lt;br /&gt;
&lt;br /&gt;
The Last Rx Pkt Timestamp Time is what the timestamp embedded in that last TX packet was, and the diff: is the difference between the packet timestamp, and the system time.&lt;br /&gt;
&lt;br /&gt;
=Configuration Options=&lt;br /&gt;
==Main Menu Options==&lt;br /&gt;
===Serial #===&lt;br /&gt;
Sets the serial number for the RTCM/VOTER.&lt;br /&gt;
*This sets the MAC address of the unit.&lt;br /&gt;
*Each unit must have a unique serial number on your network segment.&lt;br /&gt;
&lt;br /&gt;
===VOTER Server Address (FQDN)===&lt;br /&gt;
This is the DNS name or IP address of the Asterisk server you are connecting to.&lt;br /&gt;
&lt;br /&gt;
===VOTER Server Port===&lt;br /&gt;
This is the UDP port that the Asterisk server is listening on for clients.&lt;br /&gt;
*Typically it is left at the default of port 667.&lt;br /&gt;
*'''MUST''' match the ''port'' directive in ''voter.conf''.&lt;br /&gt;
&lt;br /&gt;
===Local Port (Override)===&lt;br /&gt;
Sets the local unit UDP port to be something different.&lt;br /&gt;
*This is typically not used and left at default (0).&lt;br /&gt;
&lt;br /&gt;
===Client Password===&lt;br /&gt;
This is the '''unique''' password for this unit.&lt;br /&gt;
*Every unit '''must''' have a '''unique''' password.&lt;br /&gt;
*'''MUST''' match the password on the client configuration line in ''voter.conf''.&lt;br /&gt;
&lt;br /&gt;
===Host Password===&lt;br /&gt;
This is the password of the Asterisk server.&lt;br /&gt;
*Configured with the ''password'' directive in ''voter.conf''.&lt;br /&gt;
&lt;br /&gt;
===Tx Buffer Length===&lt;br /&gt;
This is the size of the TX buffer from the RTCM/VOTER to the Asterisk server.&lt;br /&gt;
*Tuned parameter, set via the tuning instructions based on network configuration.&lt;br /&gt;
&lt;br /&gt;
===GPS Data Protocol (0=NMEA, 1=TSIP)===&lt;br /&gt;
Type of GPS connected.&lt;br /&gt;
*NMEA for all non-Trimble GPS units.&lt;br /&gt;
*TSIP to use with Trimble GPS that use Trimble Serial Interface Protocol (TSIP).&lt;br /&gt;
&lt;br /&gt;
===GPS Serial Polarity (0=Non-Inverted, 1=Inverted)===&lt;br /&gt;
GPS dependent setting. &lt;br /&gt;
*Depends on if you are sending TTL or RS-232 data, adjust as needed.&lt;br /&gt;
&lt;br /&gt;
===GPS PPS Polarity (0=Non-Inverted, 1=Inverted, 2=NONE)===&lt;br /&gt;
GPS dependent setting. &lt;br /&gt;
*Depends on if you are sending TTL or RS-232 data for the PPS signal, adjust as needed.&lt;br /&gt;
*If not using GPS or configuring as a mixed client, set to 2 (None).&lt;br /&gt;
&lt;br /&gt;
===GPS Baud Rate===&lt;br /&gt;
Communication speed for the GPS, default is 9600.&lt;br /&gt;
&lt;br /&gt;
===External CTCSS (0=Ignore, 1=Non-Inverted, 2=Inverted)===&lt;br /&gt;
If you are using the CTCSS input from an external CTCSS decoder, adjust this for your logic polarity, or set to 0 (ignore) if not used.&lt;br /&gt;
&lt;br /&gt;
===COR Type (0=Normal, 1=IGNORE COR, 2=No Receiver)===&lt;br /&gt;
Typically, this is left at Normal. &lt;br /&gt;
*Set to 1 (Ignore COR), if you are using the External CTCSS input.&lt;br /&gt;
&lt;br /&gt;
===Debug Level===&lt;br /&gt;
Set the Debug Level, if needed, based on the [[#Debug Options | Debug Options]] below.&lt;br /&gt;
&lt;br /&gt;
===Alt. VOTER Server Address (FQDN)===&lt;br /&gt;
If you are using redundant Asterisk servers, set the IP/DNS address of the redundant server here.&lt;br /&gt;
&lt;br /&gt;
===Alt. VOTER Server Port (Override)===&lt;br /&gt;
If the redundant Asterisk server UDP port is not 667, set it here.&lt;br /&gt;
&lt;br /&gt;
===DSP/BEW Mode===&lt;br /&gt;
If the firmware supports DSP/BEW Mode, set this to 1 to enable it, if desired.&lt;br /&gt;
*DSP/BEW firmware versions use extra firmware space and will make the diagnostic menu unavailable.&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Duplex Mode 3&amp;quot; (0=DISABLED, 1-255 Hang Time) (1/10 secs)===&lt;br /&gt;
If you are using Duplex Mode 3, set the hang time here to enable the option. Most users leave this disabled.&lt;br /&gt;
&lt;br /&gt;
===Simulcast Launch Delay===&lt;br /&gt;
If you are using Simulcast, set your launch delay here.&lt;br /&gt;
&lt;br /&gt;
===RX Level===&lt;br /&gt;
This opens the RX Level tuning screen to adjust the receive audio level from the repeater.&lt;br /&gt;
&lt;br /&gt;
===Status===&lt;br /&gt;
This opens the status menu, showing some of the current operating parameters.&lt;br /&gt;
&lt;br /&gt;
===Save Values to EEPROM===&lt;br /&gt;
Save all the options to non-volatile EEPROM.&lt;br /&gt;
*Make sure to save after you make any changes.&lt;br /&gt;
&lt;br /&gt;
===IP Parameters menu===&lt;br /&gt;
Open the IP Parameters Menu.&lt;br /&gt;
&lt;br /&gt;
===Offline Mode Parameters menu===&lt;br /&gt;
Open the Offline Mode Parameters Menu.&lt;br /&gt;
&lt;br /&gt;
===Disconnect Remote Console Session===&lt;br /&gt;
If you are connected via Telnet, this will exit your session.&lt;br /&gt;
&lt;br /&gt;
===Reboot System===&lt;br /&gt;
Reboot the VOTER/RTCM.&lt;br /&gt;
*This should be done after making configuration changes.&lt;br /&gt;
*Some setting changes require a reboot to become effective.&lt;br /&gt;
&lt;br /&gt;
===Diagnostics===&lt;br /&gt;
Open the Diagnostics Menu.&lt;br /&gt;
*Diagnostics are unavailable if you are using DSP/BEW firmware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Network Information=&lt;br /&gt;
==RTCM/VOTER Bandwidth==&lt;br /&gt;
Assuming ulaw... The RTCM will require approximately 80kbps of bandwidth for continual usage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Network Quality==&lt;br /&gt;
Your IP Network quality is important. You may wish to add a rule in your routers to prioritize traffic on UDP port 667 so that RTCM audio is given priority over other &lt;br /&gt;
traffic. Also see the [[#Debug Options]] below for notes on how to tag your packets with ToS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==RX/TX Buffers are NOT Both Millisecond Values== &lt;br /&gt;
You might assume an RX buffer (in voter.conf) of 120ms would be equivalent of a TX buffer (in the RTCM) of 120ms. That is not the case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The TX buffer is a number of 125 '''microsecond''' intervals, where the RX buffer is in milliseconds. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you follow the buffer setting instructions, you should be fine, in most cases. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Debug Options=&lt;br /&gt;
The VOTER/RTCM firmware supports some additional debugging information that can be turned on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
From the source code, the different Debug Options are listed as:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1 - Alt/Main Host change notifications&lt;br /&gt;
2 - Ignore HWlock (GGPS only)&lt;br /&gt;
4 - GPS/PPS Failure simulation (GGPS only)&lt;br /&gt;
8 - POCSAG H/W output disable (GGPS only)&lt;br /&gt;
16 - IP TOS Class for Ubiquiti&lt;br /&gt;
32 - GPS Debug&lt;br /&gt;
64 - Fix GPS 1 second off&lt;br /&gt;
128 - Fix GPS 1 month off (WTF,O??)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Not sure what they all do, but that is what they are. Here are the most common ones used:&lt;br /&gt;
*&amp;quot;Alt/Main Host change notifications&amp;quot; &lt;br /&gt;
**shows when the connection to the Asterisk server changes state.&lt;br /&gt;
*&amp;quot;IP TOS Class for Ubiquity&amp;quot; &lt;br /&gt;
**marks the IP headers from the RTCM/VOTER '''TO''' the network with ToS C0/DSCP 48 (UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS latency). Other sources show this as a Network Control TOS.) If you enable this, you also will want to have &amp;quot;utos=y&amp;quot; in your voter.conf to mark the packets from the network '''TO''' the RTCM/VOTER. We will probably change this option to mark the packets by default in a future version.&lt;br /&gt;
*&amp;quot;GPS Debug&amp;quot; &lt;br /&gt;
**will print NMEA or TSIP debug strings from the connected GPS.&lt;br /&gt;
*&amp;quot;Fix GPS 1 second off&amp;quot;&lt;br /&gt;
**this is for NMEA GPS '''only'''. It will add one second to the time.&lt;br /&gt;
*&amp;quot;Fix GPS 1 month off (WTF,O??)&amp;quot;&lt;br /&gt;
**this is for TSIP GPS '''only'''. It will effectively add a month to the date. The mktime function normally needs one month subtracted from the raw month it converts to a time/date string. Maybe there are some GPS out there that do that automatically? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The way this works is you add together the options you want to enable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Want to enable GPS Debug and IP ToS, set debug to 48.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just want to turn on GPS Debug, set debug to 32.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just want ToS turned on, set debug to 16.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Un-documented Menus/Features=&lt;br /&gt;
*Menu 96 - If firmware compiled with DUMPENCREGS enabled, Menu 96 looks like it dumps the registers from the ENC (Ethernet) chip?&lt;br /&gt;
&lt;br /&gt;
*Menu 111 - show the &amp;quot;hidden&amp;quot; option values (normally they should all be 0).&lt;br /&gt;
&lt;br /&gt;
*Menu 11780 - set the &amp;quot;Elkes&amp;quot; value. Developed for Pete Elke WI6H, this is for solar type sites. It shuts off the Tx after a period of no Rx activity.&lt;br /&gt;
&lt;br /&gt;
*Menu 1103 - set the &amp;quot;Glaser&amp;quot; timer value? No idea what this does.&lt;br /&gt;
&lt;br /&gt;
*Menu 1170 - set &amp;quot;Sawyer Mode&amp;quot;. Developed for Tim Sawyer use on Yaesu VXR5000 repeater. Only applicable in OFFLINE mode. Disabled (default) when 0. When set to 1, it forces the PL filter OFF (bypassed) when in OFFLINE mode (not connected to the host), regardless of the state that it normally would be configured in voter.conf. Normally, the PL filter is IN during OFFLINE mode. That should effectively allow you to configure true pass-through (no PL filter or de-emphasis) audio through the device, if you set the rest of the options correctly.&lt;br /&gt;
&lt;br /&gt;
=Audio=&lt;br /&gt;
The RTCM/VOTER is totally flexible regarding emphasis. Although the way it is set is completely obscure. It tries to automatically do the right thing for you, which is great most of the time. But when it’s not, it's hard to know what is going on. &lt;br /&gt;
&lt;br /&gt;
If you are changing the COR Type settings, or nodeemp in voter.conf, make sure you save/reboot the RTCM/VOTER every time you make a change... changes are '''not''' effective until the RTCM/VOTER reboots!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Voting==&lt;br /&gt;
Before we get in to the different ways audio is routed, there is an important consideration you need to make if you are using the RTCM/VOTER for voting. &lt;br /&gt;
&lt;br /&gt;
The way the voting process works, it needs '''discriminator audio''' to determine the signal to noise level from each satellite receiver. As such, you will need to be feeding discriminator audio in to the RX audio pin, so that the hardware/software can vote properly. That means you also need to let the hardware/software do the squelch action.&lt;br /&gt;
&lt;br /&gt;
If you need RX CTCSS, you'll need to feed logic from an external CTCSS decoder in to the CTCSS input pin.&lt;br /&gt;
&lt;br /&gt;
Also, don't disable COR in the RTCM/VOTER... it will cause it to disable the squelch and it will report an RSSI of 255 (full quieting) for all received signals.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Receiver De-emphasis==&lt;br /&gt;
On the RX side the COR Type setting in the RTCM/VOTER determines whether the de-emphasis filter is used for RX audio. 0=Normal means the RTCM/VOTER squelch circuit is in use and it is expecting discriminator audio on the RX pin (to be able to do the squelch action), and therefore it '''will''' provide de-emphasis (audio is routed THROUGH the de-emphasis RC filter circuit) to the receiver audio. COR Type 1=IGNORE COR uses the CTCSS input pin for COR or CTCSS ''logic'' and it then expects de-emphasized receive (line) audio on the RX pin, and therefore will '''not''' provide de-emphasis to the received audio (the RC filter is switched '''out''' and audio passes straight through). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Most of the time, you do NOT need to override the automatic filter selection. However, if you do, and you are sure you have a good reason to, you CAN switch the de-emphasis filter '''out''' of the circuit so that audio passes straight through to the encoder. You would do this by setting the nodeemp=1 option in voter.conf. When you set nodeemp=1, the ''VOTER Protocol'' tells the RTCM/VOTER to switch the filter '''out''', so audio is passed straight through.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Transmitter Pre-emhpasis==&lt;br /&gt;
On the TX side, the RTCM/VOTER expects the repeater to accept ''mic audio''. In other words, the '''repeater''' is providing the pre-emphasis, not the RTCM/VOTER (you are '''not''' directly modulating the TX). This can be overridden by setting CTCSS tone in voter.conf. If a CTCSS tone is defined, the RTCM '''will''' provide pre-emphasis to the audio, and expects that you will be connecting to your repeater's flat audio input (direct modulation). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you don’t want TX CTCSS tone but '''do''' need pre-emphasis, set an arbitrary (any) CTCSS tone in voter.conf, and set the level to 0. This will force the RTCM/VOTER to pre-emphasize the audio it generates on the TX pin, but it won't actually mix in a CTCSS tone. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Level Setting==&lt;br /&gt;
Setting the audio levels for the RTCM/VOTER is pretty straight forward. Just follow these steps:&lt;br /&gt;
*Ensure you have a connection to your host Asterisk server/chan_voter instance&lt;br /&gt;
*Send a 1kHz@3kHz on-channel, full-quieting signal in to the repeater's RX&lt;br /&gt;
*Set the RX up so it reads 3kHz deviation on the RTCM's built in console meter&lt;br /&gt;
*Now set the TX level '''pot''' to get 3kHz out of the transmitter (No PL)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now change the modulation from 1kHz tone to 800Hz followed by 1.8kHz and verify that the deviation level doesn't change as the tone frequency changes. '''Changing levels indicates a pre/de-emphasis issue.''' You will want to read the above sections on how audio is handled, and figure out where your issue is.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If using PL you have to account for that deviation, unless you filter it out with your IFR (test set). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That's it!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Optionally, if you are using the built-in &amp;quot;offline repeat&amp;quot; functions, fail the connection to the host Asterisk server, and make sure your repeat audio performs the same as above.&lt;br /&gt;
&lt;br /&gt;
==== Resolution issues when setting levels using built VOTER boards ====&lt;br /&gt;
Sometimes, depending on what radio is being used getting a good enough resolution with R61 when setting levels is a problem. You move a small amount on the pot and it jumps several hundred KHz of deviation. Inserting a 4:1 voltage divider between the VOTER board and transmitter helps with this. Something such as a 1K and 330 ohm resistor will work. This allows for much finer adjustment on the transmit audio (R61).&lt;br /&gt;
&lt;br /&gt;
==Crappy Transmit Audio==&lt;br /&gt;
&lt;br /&gt;
Does your repeated audio sounded really bassy, muffled, and not very understandable? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There was a situation where, compared to a typical simplex radio-to-radio transmission, the audio through the repeater (RTCM and Asterisk) was unacceptable. What was discovered was that the RTCM has an internal pre-emphasis function that was disabled. The user had intentionally disabled &amp;quot;txctcss&amp;quot; and &amp;quot;txctcsslevel&amp;quot; in voter.conf because he didn't &lt;br /&gt;
want the RTCM transmitting CTCSS (the Quantar was doing that already). He ultimately found a post on the mail list explaining the settings above that said enabling txctcss = some valid tone (114.8 in his case) and setting txctcsslevel = 0 would turn on the pre-emphasis function in the RTCM without transmitting CTCSS tones. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
He did, and it worked like a charm! Audio now had more treble and was less bassy/muffled. So, future RTCM users, be sure not to comment out txctcss and txctcsslevel in voter.conf!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just enable and set the level to 0. You'll thank me later. &lt;br /&gt;
&lt;br /&gt;
== Pulse Noise on Transmit Audio ==&lt;br /&gt;
It has been noticed sometimes on built VOTER boards that it has low level DAC noise which sometimes is apparent as a pulsing noise on the audio output. Adding a 4:1 voltage divider inline between the transmitter and VOTER board helps reduce or eliminate this as described above in Level setting. &lt;br /&gt;
&lt;br /&gt;
=GPS=&lt;br /&gt;
The RTCM/VOTER will work with most GPS available. It requires either NMEA or Trimble TSIP binary data. It only receives data '''from''' the GPS (GPS TX), it does not send anything '''to''' the GPS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The firmware is specifically written to talk to Trimble Thunderbolt receivers using Trimble's TSIP binary data interface, however, other Trimbles GPS receivers that talk TSIP are generally compatible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==RTCM GPS Connections==&lt;br /&gt;
There are some quirks specific to the RTCM that are not well documented.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The GPS connections for the RTCM are on the DB15 connector. Note that the labels for GTX and GRX are misleading. GTX is the data '''FROM''' the GPS '''TO''' the RTCM (GPS TX/RTCM RX). GRX is data from the RTCM to the GPS, but that is currently not used, so it does not need to be connected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PPS is obvious, that is your PPS signal from your GPS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also note, inside the RTCM, there are jumpers to set for TTL or RS-232 data, depending on the type of GPS you are connecting. Set them accordingly. The RS-232 setting loops the data through a MAX3232 converter on the board.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You will still need to set the data and PPS polarity, and baud rate in the configuration menus to get everything to work.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==NMEA Sentences==&lt;br /&gt;
If you are using an NMEA GPS (as opposed to a Trimble using the TSIP binary interface), the RTCM/VOTER is looking for the following NMEA sentences:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$GPGGA&lt;br /&gt;
$GPGSV&lt;br /&gt;
$GPRMC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==TSIP Packets==&lt;br /&gt;
If you are using a Trimble GPS that speaks TSIP, it needs to automatically send out the 0x8F-AB and 0x8F-AC timing packets. Such devices include the Thunderbolt, Resolution T, etc. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Lock==&lt;br /&gt;
The GPS led will go solid regardless of the connection LED. That '''has''' to happen or it won't connect to the Asterisk server. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is not unusual for it to take up to 20 mins to get a GPS lock LED (ie. using a Trimble Thunderbolt) after any reboot. With the Trimble GPS', that is because it is waiting to complete the download of the almanac, and clear the status flags. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS De-sense==&lt;br /&gt;
If you are having odd loss of lock issues, consider you may have interference to your GPS antenna from strong RF nearby. A note from Jesse Lloyd:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I also had crazy problems with poor signal on my GPS when I set it up sitting in a window, and once installed at site I had the GPS antenna maybe 6 ft from the VHF antenna, and after some troubleshooting found it was getting swamped with RF and loosing lock. &lt;br /&gt;
&lt;br /&gt;
I found the debug setting of 32 useful in the RTCM, you can see a hex output of the GPS status.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That has also been observed when trying to use a cheap &amp;quot;patch&amp;quot; antenna in a high RF site (lots of TV/FM transmitters nearby). Switching to a &amp;quot;proper&amp;quot; (commercial) GPS antenna that actually has filtering in it resolved the issue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Issues==&lt;br /&gt;
===Trimble Thunderbolt===&lt;br /&gt;
You may find your Trimble Thunderbolt is showing the incorrect date at the moment. It could be showing the year as 1997. This is due to the date in the Thunderbolt being reported incorrectly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''This can cause some of your voting receivers to not connect, if they are used with other GPS in your system.''' If you have '''ALL''' Thunderbolts, or '''NO''' Thunderbolts, you are probably fine. If you have '''ALL''' Thunderbolts, the date/time is probably wrong, but they will ALL be wrong, so they will connect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GPS Time is a continuous counting time scale beginning at the January 5, 1980 to January 6, 1980 midnight. It is split into two parts: a time of week measured in seconds from midnight Sat/Sun and a week number. The time of week is transmitted in an unambiguous manner by the satellites, but only the bottom 10 bits of the week number are transmitted. This means that a receiver will see a week number count that goes up steadily until it reaches 1023 after which it will “roll over” back to zero, before steadily going up again. Such a week rollover will occur approx. every 20 years. The last week rollover occurred in 1999 and the next one will be in 2019.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Thunderbolt manual states:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The ThunderBolt adjusts for this week rollover by adding 1024 to any week number reported by GPS which is less than week number 936 which began on December 14, 1997. With this technique, the ThunderBolt will provide an accurate translation of GPS week number and TOW to time and date until July 30, 2017.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As such, the Trimble Thunderbolt has a firmware issue with the GPS Week rollover that manifested itself on July 30, 2017, causing the date to become incorrect. The Thunderbolt thinks the week changed from 935 to 936 (actual week 1959-1024=935), so it stopped adding 1024 to the week.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We have added a brute-force fix starting in RTCM/VOTER firmware &amp;gt;=1.51. This fix adds 619315200 seconds (1024 weeks) to the time reported by the GPS. It fixes the Thunderbolts, it breaks other TSIP receivers (Resolution T). A better fix is being tested.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Garmin===&lt;br /&gt;
====Garmin 18x LVC Wiring Issues====&lt;br /&gt;
If you have issues with your GPS 18x LVC not talking to the RTCM/VOTER, it may not be hooked up to the RTCM correctly. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Garmin pin labeling is backwards to what you may think. See below. You probably need to swap pins 6 and 14.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RTCM   	                 GPS 18x LVC      &lt;br /&gt;
6 GRX 	&amp;lt;-- Rx Data 	 6 Green  &lt;br /&gt;
7 GPPS 	&amp;lt;-- Pulse Output 1 Yellow  &lt;br /&gt;
8 GND   Ground 		 3 Black  &lt;br /&gt;
8 GND   Ground 		 5 Black  &lt;br /&gt;
13 +5V 	--&amp;gt;Vin 		 2 Red  &lt;br /&gt;
14 GTX 	--&amp;gt; TX Data 	 4 White&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log into the RTCM and do 98 and you should see something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Current Time: Sun  Apr 20, 2014  04:37:02.820&lt;br /&gt;
Last Rx Pkt System time: 04/20/2014 03:55:35.580, diff: 2487260 msec&lt;br /&gt;
Last Rx Pkt Timestamp time: 04/20/2014 03:55:32.064, diff: 3515 msec&lt;br /&gt;
Last Rx Pkt index: 160, inbounds: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Garmin and the RTCM====&lt;br /&gt;
Beware when buying newer Garmin GPS's to use with the Micro-Node RTCM.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The RTCM expects a 5V PPS signal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Newer Garmin's (GPS 18X, 18X LVC, etc.) MAY NOT output 5V, and can cause issues. '''Check the Garmin datasheet'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER is designed to accept both 3.3V or 5V signals, and ''should'' work fine.&lt;br /&gt;
&lt;br /&gt;
* Some of the Garmin GPS's come with 4800 baud set as default. If you are getting a &amp;quot;Warning: GPS Data time period elapsed&amp;quot; error on your RTCM, change both the GPS and RTCM to use 9600 baud. To do this, interface the GPS to a DB9 connector as per page 8 of the [http://wiki.allstarlink.org/w/images/4/41/GPS_18x_Tech_Specs.pdf manual] (remembering to ONLY use 5V as the power source *facepalm*). Once done, download, extract and open [http://www8.garmin.com/support/download_details.jsp?id=4053 SNSRXCFG_330.exe] and run.&lt;br /&gt;
# Select your GPS (in most cases GPS 18x PC/LVC). Press F10 to switch to NMEA mode (Config &amp;gt; Switch to NMEA Mode)&lt;br /&gt;
# Select Config &amp;gt; Setup and choose the COM port your GPS is connected too. Leave baud rate as auto for now, OK.&lt;br /&gt;
# Select Comm &amp;gt; Connect to connect to the GPS. &lt;br /&gt;
# Go to Config &amp;gt; Get Configuration from GPS to download it's current configuration&lt;br /&gt;
# Click File &amp;gt; Save to save the current configuration&lt;br /&gt;
# In Config &amp;gt; Sensor Configuration change the Baud Rate to 9600. You can also check to make sure 1PPS is enabled here too. Click OK. &lt;br /&gt;
# Hitting F7 when in the main window of the software also brings up the GPS sentences to output if that is of interest.&lt;br /&gt;
# File &amp;gt; Save to a different file than step 5. &lt;br /&gt;
# Press F9 or Config &amp;gt; Send Configuration to GPS. This will then send all the changes you made to the GPS unit (including baud rate so a reconnect may be needed)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===uBlox GPS===&lt;br /&gt;
You can use uBlox GPS modules with the VOTER/RTCM. The ones readily available usually have a 5 pin header on them (5V, GND, TXD, RXD, PPS), as well as an integrated patch antenna, and a SMA connector for an external antenna.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Data is TTL, so make sure to set the jumpers inside the RTCM for TTL data. Baud rate is 9600 by default, and uses NMEA. Set those accordingly in the configuration menu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The RTCM and VOTER require different settings for data and PPS polarity. The VOTER wants '''inverted''' for both, and the RTCM wants '''non-inverted''' for both.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Make sure to save (99) and reboot (r) your VOTER/RTCM after making changes for them to be effective.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===PPS Issues===&lt;br /&gt;
If your VOTER/RTCM connects to your server, but it won't receive anything, check/toggle the PPS polarity, it may be incorrect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===NMEA &amp;lt;--&amp;gt; TSIP Mode Change===&lt;br /&gt;
If you change from NMEA to TSIP (or vice versa), the VOTER/RTCM tries to be smart and change the baud rate for you. For TSIP, it sets it to 9600, and for NMEA it sets it to 4800. However, '''it also resets GPS and PPS polarity to 0'''! This WILL cause you confusion, if you are trying to find the right set of settings for your GPS. This will probably be removed in a future firmware version.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==No GPS/Mixed Mode==&lt;br /&gt;
You do not need a timing source to use an RTCM if you don’t want to vote. That’s called Mix Mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Having the PPS Polarity set to 2 tells the RTCM you do not have a GPS. That forces the RTCM to become a mix (non-voting) client. Turn it on, save it, and restart. A simple voter.conf would look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[general]&lt;br /&gt;
port = 667&lt;br /&gt;
password = BLAH&lt;br /&gt;
&lt;br /&gt;
[1000]&lt;br /&gt;
Site1 = pswrd1,master,transmit&lt;br /&gt;
Site2 = pswrd2,transmit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mixed Client Error==&lt;br /&gt;
&amp;quot;I am getting this error in Asterisk&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WARNING[2368]: chan_voter.c:4511 voter_reader: Voter client master timing source mobile1 attempting to authenticate as mix client!!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A mixed client error means the voter.conf file is expecting an RTCM to try and connect with a GPS IP packet (ie. has '''master''' in it in voter.conf), but the RTCM isn't &lt;br /&gt;
sending a GPS IP packet. So its a mismatch between voter.conf and Option 10 in the RTCM. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to use a mix client (non-voted), make sure that receiver's configuration line in voter.conf '''does not''' have the '''master''' option set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mix Clients with Voted Client Issues==&lt;br /&gt;
&lt;br /&gt;
Situation...&lt;br /&gt;
&amp;quot;I have a private node with 6 voted receivers using RTCMs. I'd like to add a 7th RTCM to this node that is always mixed in rather than voted. I'm able to make this RTCM work as a 7th voted receiver with no problem. Everything I've read seems to indicate that if I change GPS PPS polarity to &amp;quot;none&amp;quot; this will achieve my desired results, however I am unable to get audio out of my transmit RTCM from this 7th site. It does change color to cyan in Allmon indicating it is non voted input but I do not get any indication or audio when that units COR goes active.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Setting voter debug level 3 in Asterisk and I'm seeing the following message repeatedly scrolling by in a blur when the mix client detects COR (COR is active). Sequence numbers are continually incrementing by 1. I'm running software version 1.47 on all my clients:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mix client (Mulaw) my_client index:0 their seq:629 our seq:629&lt;br /&gt;
mix client my_client outa bounds, resetting!!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have a similar situation to the above... check your buflen in voter.conf. Make sure it is at &amp;gt;=160 and see if that fixes it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Debug==&lt;br /&gt;
To turn on GPS Debugging, set the Debug Option Level in the RTCM/VOTER to 32.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [[#Debug Options]] levels for more information on how this works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Trimble Debug Status Decoding==&lt;br /&gt;
The VOTER/RTCM when in TSIP mode (Trimble), assumes it is a Trimble Thunderbolt and is looking for two packets:&lt;br /&gt;
*0x8F-AB - Primary Timing Packet&lt;br /&gt;
*0x8F-AC - Supplemental Timing Packet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Grab a copy of the Thunderbolt User Guide: http://leapsecond.com/pages/tbolt/Thunderbolt-2012-02.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pages 78-83 are the important ones.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Packet 0x8F-AB is what grabs the timing information, and packet 0x8F-AC is what it looks at for everything else (including debug).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The debug string that the VOTER/RTCM reports:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	printf(&amp;quot;GPS-DEBUG: TSIP: ok %d, 9 - 14: %02x %02x %02x %02x %02x %02x\n&amp;quot;,&lt;br /&gt;
					happy,gps_buf[9],gps_buf[10],gps_buf[11],gps_buf[12],gps_buf[13],gps_buf[14]);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, the 1 after ok is the &amp;quot;happy gps&amp;quot; flag. The other 5 bytes are supposed to be bytes 9-14 from the packet... sort of. They are bytes 9-14 of the buffer, but they are actually bytes 8-13 of the binary message.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Looking at the message structure, bytes 8-13 are:&lt;br /&gt;
*8-9 Critical Alarms&lt;br /&gt;
*10-11 Minor Alarms&lt;br /&gt;
*12 GPS Decoding Status&lt;br /&gt;
*13 Disciplining Activity&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Therefore, the messages you are seeing break down as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GPS-DEBUG: TSIP: ok 1, 9 - 14: 00 00 00 00 00 00 - everything is good in the 'hood, Doing Fixes, Phase Locking&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 18 08 06 - not happy, Not Tracking Satellites, Not Disciplining Oscillator (0x18 --&amp;gt; 0b000000011000), No Usable Sats, Inactive&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 08 08 05 - not happy, Not Tracking Satellites, No Useable Sats, Compensating OXCO (holdover)&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 00 00 05 - not happy, Compensating OXCO (holdover)&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 1, 9 - 14: 00 00 00 00 00 08 - happy, Recovery Mode&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 00 00 04 - not happy, Initializing Loop Filter&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The GPS is flagged as NOT HAPPY in TSIP mode if ANY of the following are TRUE:&lt;br /&gt;
*If GPS Decoding Status is anything other than &amp;quot;Doing Fixes&amp;quot;.&lt;br /&gt;
*If Disciplining Activity is not Phase Locking or Recovery Mode.&lt;br /&gt;
*Any Critical Alarms.&lt;br /&gt;
*Any Minor Alarms.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ubiquity ToS=&lt;br /&gt;
See https://help.ubnt.com/hc/en-us/articles/205231750-airMAX-How-is-QoS-and-prioritization-handled-by-airMAX-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, if we set ToS/DSCP in the header to C0, then Ubiquity (and other gear watching ToS) ''should'' prioritize the packets. This sets the DSCP to 110 000 aka 48. UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS latency). Other sources show this as a Network Control TOS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is an option in voter.conf to turn this on (utos=y). However, this only controls packets being sent from Asterisk '''TO''' the RTCM. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to tag packets from the RTCM '''TO''' Asterisk, you need to set the RTCM debug option level to 16 (see [[#Debug Options]] for how this works).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At some point we should probably change the default behaviour of the RTCM firmware to mark the packets and use the debug setting to '''disable''' ToS. That change (if you wanted to compile your own firmware) would be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Change line 90 in IP.c&lt;br /&gt;
&lt;br /&gt;
From:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? 0xc0 : (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY))&lt;br /&gt;
&lt;br /&gt;
To:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY) : 0xc0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This changes the conditional expression from if the debug level is 16 to mark the packets with DSCP 48 to if the debug level is 16, mark the packets routine (DSCP 0).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM Simulcasting=&lt;br /&gt;
The RTCM/VOTER boards do support simulcasting, however, there are a bunch of quirks that one needs to be aware of.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Radio Hardware==&lt;br /&gt;
For best results, you should use all identical RF equipment between your voting RX sites and simulcast TX sites. If you don't, you can end up with strange audio artifacts when different receivers are used, and other strange audio issues when different transmitters are used. The most important thing when setting your levels is that ALL the RX and TX levels match from radio to radio. The best way this is achieved is using a &amp;quot;master&amp;quot; radio and reference from that - all radios might be identical models, but may not have identical audio characteristics so check those levels! Also check CTCSS and audio levels separately to make sure they all match.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==9.6MHz Oscillator==&lt;br /&gt;
If you want reliable simulcast with an acceptable level of overlap warble, you MUST inject a GPS-disciplined or OXCO 9.6MHz signal to the clock of the RTCM's, in lieu of their stock internal crystal. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Otherwise, the inherent internal clock jitter of the RTCM's will cause CTCSS warble, etc. in areas where your transmitters overlap. The 1 PPS feed that you normally feed the RTCM's is acceptable for voting, but naturally, a typical crystal-driven clock will slightly drift in between the pulses every second due to inherent jitter, etc., and that ain't to good for situations like simulcast which demand sample-accurate performance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are some comments from Joe, KC2IRV, on the subject. He has also created his own wiki, specific to simulcast issues, you can find it at: http://rtcmsimulcast.wikifoundry.com/ &lt;br /&gt;
&lt;br /&gt;
:I felt I needed to let those on this mailing list know my findings with simulcasting with the RTCM units since I have received a great deal of help and information from people on this list.&lt;br /&gt;
&lt;br /&gt;
:For the past week I have had a two (2) site simulcast system up and running on UHF using the RTCM units. I have done a great deal of testing and proving on the bench and it is so far working beautifully. &lt;br /&gt;
&lt;br /&gt;
:The one issue that was made apparent to me early on was that in order for the RTCM's to be suitable for simulcast, the processor inside it needed to be clocked to a more accurate source. This source is supposed to be the Programmable Clock Generator Module in order to produce a GPS locked 9.6 MHz reference for the processor. Unfortunately this unit is not currently available.&lt;br /&gt;
&lt;br /&gt;
:Knowing this, I started to go down the road of possibly designing my own, but stumbled upon a cheap, plentiful supply of Symmetricom 9.6 MHz sinewave OCXO's. I took a chance and ordered a few to experiment with to see if the RTCM would be able to use this in place of the supplied crystal for a clock. I found they did, with that I decided to modify the RTCM with an SMA connector just above the audio adjustment pots and use this OCXO. I trimmed the frequency on the units to match each other and used them to produce the processor clock.&lt;br /&gt;
&lt;br /&gt;
:After a week of testing, I have found the results in the overlap areas to be exactly as I would expect them on a public safety/commercial simulcast system. While in an overlap region where both transmitters are within 3dB of one another, to the ear you hear no audio phase wandering. Of course , this has only been a week of testing so I wouldn't call it case closed yet.&lt;br /&gt;
&lt;br /&gt;
:I will say that if this system remains this way after testing for 6 months to a year than using a 9.6 MHz OXCO is a viable alternative to achieve the needed precision and accuracy needed for the processor clock to make it suitable for simulcast.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Comments from Jim Dixon on the issue:&lt;br /&gt;
&lt;br /&gt;
:You have to use '''something''' that will take the precise 10MHz (or whatever it is) from the GPSDO and PLL (phase-locked) convert it to 9.6MHz (square wave at 3.3V for the CPU clock).&lt;br /&gt;
&lt;br /&gt;
:We had to use 9.6MHz mainly because of the DAC in the dsPIC instead of 10MHz. The options for various divide/clock radios in the part are RATHER limited. As I recall, there wasn't even a way of getting the necessary 16kb/s sample rate on the ADC from 10MHZ, either.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Micro-Node RTCM Clock Issue=&lt;br /&gt;
James, KI0KN, had some strange-ness with some of his RTCM's when used for voting. As soon as he changed menu item 10 on the RTCM to either a (1) or a (0) instead of (2), he '''instantly''' got this on the RTCM console:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
04/05/2016 18:44:13.660  Lost GPS Time synchronization&lt;br /&gt;
04/05/2016 18:44:13.660  Host Connection Lost (Pri) (10.16.1.240)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And it sits there forever and never re-establishes connection to the host. The issue was finally traced to a bad batch of 9.6MHz crystals that affected a small run of the RTCM's. The issue was eventually resolved by Micro-Node, but we'll document it here just for record keeping.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
James comments to the list:&lt;br /&gt;
&lt;br /&gt;
:Well, after many of you offered your time and thoughts on my voter problem, Jim, WB6NIL, graciously donated a couple of hours of his time to remotely help me and he uncovered the problem.&lt;br /&gt;
&lt;br /&gt;
:All 5 of my RTCMs were purchased within the last 6 months, and I suspect all 5 have the same problem (will verify that today). The problem is that the microprocessor crystal is running too fast! There is 9.6Mhz crystal that drives the MPU, on the particular unit that Jim helped me diagnose, it's running 2.5 khz too fast.  &lt;br /&gt;
&lt;br /&gt;
:There is a sanity check in the firmware that makes sure the correct number of samples were taken in the last second (it's supposed to be 8000) and fails if the sample is incorrectly sized (mine is taking 8003 samples).  Jim helped adjust the code to be more tolerant of the sampling error and my whole system instantly worked.&lt;br /&gt;
&lt;br /&gt;
:I have since tested it with ALL my GPSs (they all work great!). So I now have everything working, including the voting.&lt;br /&gt;
&lt;br /&gt;
:I haven't contact Micro-Node about it yet. Jim told me that voting should work fine but this clock error would probably not be acceptable for Simulcast (something we have no plans on doing as of now). Since mine are deployed at mountain top sites, I'll probably pursue a crystal that is running at the correct frequency and use &amp;quot;standard&amp;quot; firmware so that if the decision is ever made to play with simulcast, I won't be right back in this same boat.&lt;br /&gt;
&lt;br /&gt;
:Thanks to all that helped out, and a HUGE thanks to Jim for taking the time to troubleshoot this.&lt;br /&gt;
&lt;br /&gt;
:BTW- This clock error will NOT effect the RTCM in mix client mode, it only affects it in voting or simulcast mode!&lt;br /&gt;
&lt;br /&gt;
:In voter.c, the stock line is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if ((samplecnt &amp;gt;= 7999) &amp;amp;&amp;amp; (samplecnt &amp;lt;= 8001))&lt;br /&gt;
&lt;br /&gt;
it needs to be changed to something like:&lt;br /&gt;
&lt;br /&gt;
if ((samplecnt &amp;gt;= 7999) &amp;amp;&amp;amp; (samplecnt &amp;lt;= 8003 ))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:That was just enough to make my first RTCM work. I've had a chance now to check a few more of my RTCMs on the bench this morning and the crystal frequencies are kind of all over.  The next one I had on the bench was 5.2Khz fast. The above code was still not enough to fix it (as would be expected) so it looks like the quality control on whatever manufacturer that crystal is, isn't very good (or a low tolerance crystal is being used). I am going to pursue crystal replacement to get a highly accurate, stable, on-frequency crystal in there as my first choice. Changing the firmware 5 different times doesn't seem like the right answer.&lt;br /&gt;
&lt;br /&gt;
:Jim put that sanity check in there for a reason. Working around it '''may''' allow the device to work, but to me, it seems getting the hardware operating the way it was supposed to originally is the better answer. I will follow up with Micro-node and let you all know how it goes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After following up with Micro-Node:&lt;br /&gt;
:They were all off, some were off a LOT. I talked to Mark @ Micronode. He told me there were 25 units that made it out the door with a crystal from an unapproved source and that was quite likely the reason for the problem. He gladly sent me 5 new crystals to replace (he offered to replace them himself if I sent the units in, but I am comfortable doing it myself to save the time and postage). &lt;br /&gt;
&lt;br /&gt;
:I haven't received them in the mail yet to show that the problem is fixed, but I will post here when that happens. He was great to work with and had no issue getting things set straight. If you are having the same issue and your RTCMs were bought about the same time, I'd suggest you contact him and have him help you resolve the issue!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Duplex Mode 3=&lt;br /&gt;
Does delayed repeat audio bug you? Tired of hearing a bit of yourself after you unkey? Wish you could talk full duplex? Hate the echo chamber effect? Then we have the answer for you.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Duplex Mode 3 in app_rpt allows for &amp;quot;in-cabinet repeat&amp;quot; (where the radio hardware provides repeat audio) and app_rpt adds the hang time, courtesy tones, linking - all the &lt;br /&gt;
things apt_rpt does sans repeat audio. Therefore no repeat audio delay. Cool, eh? This duplex mode has been in app_rpt for a while. Problem has been how to implement it in the RTCM environment. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Duplex Mode 3 support in the RTCM provides in-cabinet repeat functionality. Repeat audio loops through the RTCM and has almost zero delay because it does not have to traverse the network. The delay is not quite zero but it's plenty short enough to eliminate all of the above mentioned annoyances. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Of course Duplex Mode 3 support can't be used with voting or simulcast. You also loose Touch Tone muting, Time Out Timer and Repeater Disable functions because the repeat path is not through app_rpt.&lt;br /&gt;
&lt;br /&gt;
= Setting Voter Buffers =&lt;br /&gt;
Voter ping is useful for end-to-end network evaluation when ICMP ping is turned off and/or the RTCM is behind a firewall and is not ICMP reachable. It can also help with finding the correct RTCM and voter.conf buffer settings.&lt;br /&gt;
&lt;br /&gt;
=== Voter Ping Usage ===&lt;br /&gt;
The voter ping asterisk CLI syntax is:&lt;br /&gt;
 *CLI&amp;gt;voter ping nameOfClient [packetCount]&lt;br /&gt;
If packetCount is not specified 8 pings will be sent. Use packetCount of 0 to stop an in progress voter ping. Set packetCount to at least 100 when evaluating link quality.&lt;br /&gt;
&lt;br /&gt;
The result will be similar to:&lt;br /&gt;
 ...&lt;br /&gt;
 PING (nameOfClient): Packets tx: 100, rx: 100, oos: 0, Avg.: 26.710 ms&lt;br /&gt;
 PING (nameOfClient):  Worst: 38 ms, Best: 22 ms, 100.0% Packets successfully received (0.0% loss)&lt;br /&gt;
The output above is self evident except for oos which is a count of out of sequence packets. Voter ping requires RTCM firmware 1.23 or newer and chan_voter 2013-08-04 or newer.&lt;br /&gt;
&lt;br /&gt;
=== RX Buffer Size ===&lt;br /&gt;
Ping all the receiver sites and look for the worst response of the worst client. As a rough rule of thumb the buflen setting in voter.conf should be set to the worst response + 40ms or 120 whichever is greater. Using the above case the buflen should be set to 120 (38+40&lt;br /&gt;
&lt;br /&gt;
=== TX Buffer Size ===&lt;br /&gt;
Ping all the transmitter sites and look for the worst response of the worst client. The RTCM TX Buffer Length should be set to (worst response + 40ms) * 8 or 480 whichever is greater. Using the above case the RTCM TX Buffer Length should be set to 624 ((38+40)*8).&lt;br /&gt;
&lt;br /&gt;
=== Assumptions ===&lt;br /&gt;
* The minimum TX buffer size is 480 (60ms) and the minimum RX buffer is 120ms. These were derived by testing on a LAN segment with chan_voter 2013-08-04 and RTCM 1.26.&lt;br /&gt;
* The ping times are not round trip times but they are in fact round trip times. Therefore the worst response could (should?) be divided by 2. Ie RX buffer = 38/2+40=59 and TX buffer = (38/2 + 40) * 8 = 472. Minimums still apply.&lt;br /&gt;
* The internet path to and from the RTCM under test is symmetrical.&lt;br /&gt;
* The added 40ms pad is an estimate of buffer ingress and egress.&lt;br /&gt;
As always your milage may vary. Some trial and error may be required to find the optimum settings.&lt;br /&gt;
&lt;br /&gt;
=== Setup ===&lt;br /&gt;
The RX buffer is set with buflen=120 in /etc/asterisk/voter.conf. The value is in milliseconds. The TX buffer is set in the RTCM with menu item 7. The value is in 125 microsecond increments. To match the size of the TX to the RX buffer, use the RX buffer * 8 to get the TX buffer size.&lt;br /&gt;
[[Category:How to]]&lt;br /&gt;
[[Category:Node Configuration]]&lt;/div&gt;</summary>
		<author><name>Ve7fet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=2024</id>
		<title>RTCM Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=2024"/>
		<updated>2020-12-07T02:53:35Z</updated>

		<summary type="html">&lt;p&gt;Ve7fet: Update some GPS information for the RTCM/VOTER.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Radio Thin Client Module (RTCM) is commercially available hardware for interfacing radios to an AllStarLink computer.&lt;br /&gt;
&lt;br /&gt;
The Micro-Node RTCM and VOTER interfaces are typically used with AllStar in voting/simulcast applications. They MAY be used for ANY repeater interface application, through the chan_voter channel driver. The VOTER is the original through-hole board designed by Jim Dixon for this application. It is open-source, and the relevant Gerber files and BoM to build it are available. The [http://www.micro-node.com/thin-m1.shtml Micro-Node Radio Thin Client Module (RTCM)] is the commercial version of the VOTER. It uses surface mount parts (SMT), but is functionally equivalent to the original VOTER. In general, the two terms (RTCM/VOTER) are used interchangeably, as they operate the same, and use the same firmware (mostly, see below).&lt;br /&gt;
&lt;br /&gt;
This page will highlight some of the operational concerns, quirks, bugs, and other items of interest that relate to these interfaces. Much of the information has been gleaned off the AllStar mail list, comes from personal experience, or comes from notes in the firmware source code.&lt;br /&gt;
&lt;br /&gt;
=Testing=&lt;br /&gt;
RTCM's come preconfigured to login to [http://voter-demo-allstarlink.org voter-demo-allstarlink.org] for out of the box testing.&lt;br /&gt;
&lt;br /&gt;
=Factory Reset=&lt;br /&gt;
A factory reset can be performed by setting SW 1 down and then applying power to the RTCM. Wait for the green LED to stop blinking, power off and set SW 1 back up. &lt;br /&gt;
&lt;br /&gt;
=Firmware=&lt;br /&gt;
The firmware in the RTCM and VOTER is the same, except it is compiled for the specific dsPIC that is installed in each. As such, the firmware is specific to the VOTER or the RTCM, and is NOT interchangeable (it won't boot in the wrong device). Firmware for the RTCM is denoted by &amp;quot;smt&amp;quot; in the filename.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are '''two parts''' to the firmware, a bootloader, and then the actual firmware file. The bootloader starts when power is applied, and allows you to talk to the dsPIC and load new firmware files over ethernet. If the bootloader is not intercepted by the loading tool, it will continue to boot the current firmware file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All new boards will need to have the bootloader installed first, followed by a firmware file. You '''can''' load a firmware file directly (.hex) in to the dsPIC, but then you will not have any of the bootloader remote loading features.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The current bootloader (.cof file) is available here: https://github.com/AllStarLink/voter/tree/master/voter-bootloader (the -smt file is for the RTCM). It needs to be loaded with a PICKit programmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Current firmware (.cry file) is available here: https://github.com/AllStarLink/voter/tree/master/board-firmware . They are loaded with the EBLEX C30 Programmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are multiple &amp;quot;flavors&amp;quot; of firmware available. See below for further explanation of what all the options mean.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The DSPBEW versions have Jim's DSP/BEW feature enabled. Note that due to the size of this feature, the diagnostics menu is NOT available in this version.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CHUCK versions have Chuck Henderson's RSSI and Squelch modifications enabled. This is probably the version that most user's will want to use in production.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Compiling Environment==&lt;br /&gt;
If you look in the [https://github.com/AllStarLink/voter/blob/master/votersystem.pdf votersystem.pdf], you will find a procedure to modify and load the bootloader in to the dsPIC of a VOTER board. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Unfortunately, there is an important step '''missing''' in that procedure, which is covered below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In addition, the old links for the MPLAB software are dead, so let's update this info and get you going.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Currently (Feb 2017), you can get the required software from:&lt;br /&gt;
:http://www.microchip.com/development-tools/downloads-archive&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download MPLAB IDE 32-bit Windows v8.66:&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_IDE_v8_66.zip&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/MPLAB_IDE_v8_66.zip&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download MPLAB C Compiler for PIC24 and dsPIC DSCs v3.31 '''NOT v.3.25''':&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Optionally, install Windows Virtual PC and XP Mode. This is getting to be pretty old software, so running it under XP Mode may be a good idea, so we can keep it isolated (install it in a virtual machine). It does run fine in Windows 7.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To setup the compile/build environment, follow these steps:&lt;br /&gt;
*Run the MPLAB IDE installer. You don't need to install the HI-TECH C Compiler at the end (click no)&lt;br /&gt;
*Run the MPLAB C Compiler installer&lt;br /&gt;
*Select Legacy Directory Name&lt;br /&gt;
*'''Select Lite Compiler'''&lt;br /&gt;
*Go to: https://github.com/AllStarLink&lt;br /&gt;
*Follow the links to: voter --&amp;gt; Clone or Download --&amp;gt; Download Zip. That will get you voter-master.zip which is a download of the whole VOTER tree from GitHub.&lt;br /&gt;
*Extract it somewhere (ie. in the XP Mode Virtual PC)&lt;br /&gt;
*Launch the MPLAB IDE&lt;br /&gt;
*Go to Configure --&amp;gt; Settings --&amp;gt; Projects and de-select one-to-one project mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bootloader==&lt;br /&gt;
If you need to load the bootloader in to a fresh board, you will need to follow these steps:&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; voter-bootloader.mcp --&amp;gt; Open (it is in the voter-bootloader folder of the GitHub source)&lt;br /&gt;
*Go to File --&amp;gt; Import --&amp;gt; voter-bootloader --&amp;gt; ENC_C30.cof --&amp;gt; Open '''This step is missing from the original procedure.'''&lt;br /&gt;
*Remove JP7 on the VOTER Board. This is necessary to allow programming by the PICKit2/PICKit3 device.&lt;br /&gt;
*Attach the PICKIT2/PICKit3 device to J1 on the VOTER board. Note that Pin 1 is closest to the power supply modules (as indicated on the board).&lt;br /&gt;
*If you have not already selected a programming device, go to Programmer --&amp;gt; Select Device and choose PICKit3 (or PICKit2, depending on what you are using).&lt;br /&gt;
*Go to Programmer --&amp;gt; Program. This will program the bootloader firmware into the PIC device on the board.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to change the default IP address from 192.168.1.11 in the bootloader:&lt;br /&gt;
*Select View --&amp;gt; Program Memory (from the top menu bar)&lt;br /&gt;
*Hit Control-F (to &amp;quot;find&amp;quot;) and search for the digits &amp;quot;00A8C0&amp;quot;.&lt;br /&gt;
*These should be found at memory address &amp;quot;03018&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;A8C0&amp;quot; at 03018 represents the hex digits C0 (192) and A8 (168) which are the first two octets of the IP address. The six digits to enter are 00 then the SECOND octet of the IP address in hex then the FIRST octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;0B01&amp;quot; at 0301A represents the hex digits 0B (11) and 01 (1) which are the second two octets of the IP address. The six digits to enter are 00 then the FOURTH octet of the IP address in hex then the THIRD octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you have modified the address to your desired IP, follow the programming procedure (above).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Firmware==&lt;br /&gt;
To compile the firmware (if you want to make custom changes):&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; navigate to board-firmware and open the .mcp file for the flavor of firmware you want to compile. They are in the board-firmware folder of the GitHub source.&lt;br /&gt;
*'''NOTE''': the .mcp files with the &amp;quot;smt&amp;quot; suffix are for the RTCM (built with SMT parts). The non-smt files are for the ORIGINAL through-hole VOTER boards. The difference is that the VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
*Go to Project --&amp;gt; Build Configuration and select &amp;quot;Release&amp;quot;. This may not be necessary (I don't believe that option is used in the firmware), but it removes the compiler option of __DEBUG being passed, so theoretically it would build &amp;quot;normal&amp;quot; firmware.&lt;br /&gt;
*Go to Configure --&amp;gt; Select Device and choose the appropriate device for your board from the Device list. If you don't select the right one, the board will not boot. Select dsPIC33FJ128GP802 for the VOTER, and dsPIC33FJ128GP804 for the RTCM.&lt;br /&gt;
*Now, if you go to Project --&amp;gt; Build All it should compile everything and show you &amp;quot;Build Succeeded&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A .cry file should be in the board-firmware folder. You can load this with the ENC Loader.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is also a .hex file in there that you could load with a programmer... but that would wipe the bootloader... so don't do that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Chuck Squelch==&lt;br /&gt;
If you want to enable &amp;quot;Chuck Squelch&amp;quot;, open the HardwareProfile.h and un-comment #define CHUCK. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may also want to go down to Line 291 in Voter.c (right click on the window, go to Properties --&amp;gt; &amp;quot;C&amp;quot; File Types --&amp;gt; Line Numbers) and tack on CHUCK after 1.60 (the current version number) so that when you load this firmware, the version will be shown as 1.51CHUCK, and you'll know that Chuck Squelch is compiled in. We should probably make that more automagic in the future...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==DSP/BEW==&lt;br /&gt;
If you want to compile the DSPBEW version, open the DSPBEW project file instead.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DSP/BEW Firmware Version=&lt;br /&gt;
DSP BEW Firmware is mutually exclusive with the diagnostic menu. There is not enough space for both, if you load the DSP/BEW firmware, you will '''NOT''' have a diag menu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BEW stands for Baseband Examination Window.&lt;br /&gt;
&lt;br /&gt;
Typically, the discriminator of an FM communications receiver produces results containing audio spectrum from the &amp;quot;sub-audible&amp;quot; range (typically &amp;lt; 100 Hz) to well above frequencies able to be produced by modulating audio. These higher frequencies can be utilized to determine signal quality, since they can only contain noise (or no noise, if a sufficiently strong signal is present).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For receivers (such as the Motorola Quantar, etc) that do not provide sufficient spectral content at these &amp;quot;noise&amp;quot; frequencies (for various reasons), The &amp;quot;DSP/BEW (Digital Signal Processor / Baseband Examination Window)&amp;quot; feature of the RTCM firmware may be utilized. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These receivers are perfectly capable of providing valid &amp;quot;noise&amp;quot; signal with no modulation on the input of the receiver, but with strong modulation (high frequency audio and high deviation), it severely interferes with proper analysis of signal strength.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This feature provides a means by which a &amp;quot;Window&amp;quot; of baseband (normal audio range) signal is examined by a DSP and a determination of whether or not sufficient audio is present to cause interference of proper signal strength is made. During the VERY brief periods of time when it is determined that sufficient audio is present to cause interference, the signal strength value is &amp;quot;held&amp;quot; (the last valid value previous to the time of interference) until such time that the interfering audio is no longer present.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The DSP/BEW feature is selectable, and '''should not''' be used for a receiver that does not need it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A note on the Motorola SLR5700 per VE7FET. DSP/BEW definitely makes a difference on what AllMon reports for the signal strength of received signals. It is less reactive when DSP/BEW = 1 than with it set to 0. We'll have to see what the real world trials show. It might be better to leave it off.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Chuck Squelch=&lt;br /&gt;
&amp;quot;Chuck Squelch&amp;quot; are a couple firmware changes made by Chuck Henderson, WB9UUS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pre-compiled firmware versions including this option are available on [https://github.com/AllStarLink/voter/tree/master/board-firmware GitHub]. See above on how it is enabled/compiled, if you are rolling your own firmware modifications.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
One of the changes fixes an issue with weak signals producing RSSI readings all over the place. It is caused by a 16 bit value that was overflowing (it is the RSSI change in the firmware). It results in rock-solid RSSI values being reported, even on barely or non-readable signals. '''This change will likely be rolled in to a permanent fix in a future firmware release.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The other firmware change changes how the squelch responds (looks at the noise in the last two audio samples) and makes the &amp;quot;Micor squelch&amp;quot; action work better.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may also want to consider the following changes in [[Voter.conf|/etc/asterisk/voter.conf]]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;Comment out:&lt;br /&gt;
;thresholds =&lt;br /&gt;
&lt;br /&gt;
;and set:&lt;br /&gt;
linger = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Squelch Issues=&lt;br /&gt;
*If anyone is off frequency a little bit, that will make the voice talk off worse. Double check that the repeater and the users are all on frequency.&lt;br /&gt;
*Don't use narrow bandwidth on the repeater receiver. &lt;br /&gt;
*Make sure that the discriminator audio is not rolled off even a little bit at the high end. There should not be resistors in series or capacitors to ground between the discriminator chip output pin and the voter board input, for best results.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Motorola Quantar==&lt;br /&gt;
Some things to consider:&lt;br /&gt;
*Install JP1 on the Quantar's RTCM. The squelch should calibrate at around 4 blinks rather than the 12 blinks or so without JP1.&lt;br /&gt;
*Be sure you've done the diode and squelch calibration with the actual attached radio (no antenna). &lt;br /&gt;
*The Quantar firmware should be 20.14.48 as later versions have better noise output. &lt;br /&gt;
*Try the &amp;quot;Chuck Squelch&amp;quot; RTCM version.&lt;br /&gt;
*Each RTCM should have 3 to 5 turns past threshold to prevent the squelch form being too loose. Somewhere around the 350 level seems about right. Chuck Squelch seems to need fewer turns but YMMV.&lt;br /&gt;
*Don't &amp;quot;and&amp;quot; CTCSS with squelch. That may override the RTCM's squelch detection. Compare with CTCSS on and off to see effect if any.&lt;br /&gt;
&lt;br /&gt;
Also check the [[Quantar_RTCM|Quantar RTCM]] page for detailed interfacing and configuration information.&lt;br /&gt;
&lt;br /&gt;
=RTCM/VOTER LED's=&lt;br /&gt;
RX LED on the RTCM/VOTER will flash (same rate as ACT LED) if you have External CTCSS enabled, and the received signal has the wrong (or no) valid PL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Menus=&lt;br /&gt;
==Main Menu==&lt;br /&gt;
This is what a typical Main Menu looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Select the following values to View/Modify:&lt;br /&gt;
&lt;br /&gt;
1  - Serial # (0000) (which is MAC ADDR 00:04:A3:00:00:00)&lt;br /&gt;
2  - VOTER Server Address (FQDN) (44.128.1.1)&lt;br /&gt;
3  - VOTER Server Port (667),  4  - Local Port (Override) (0)&lt;br /&gt;
5  - Client Password (password1),  6  - Host Password (hostpass1)&lt;br /&gt;
7  - Tx Buffer Length (800)&lt;br /&gt;
8  - GPS Data Protocol (0=NMEA, 1=TSIP) (1)&lt;br /&gt;
9  - GPS Serial Polarity (0=Non-Inverted, 1=Inverted) (1)&lt;br /&gt;
10 - GPS PPS Polarity (0=Non-Inverted, 1=Inverted, 2=NONE) (0)&lt;br /&gt;
11 - GPS Baud Rate (9600)&lt;br /&gt;
12 - External CTCSS (0=Ignore, 1=Non-Inverted, 2=Inverted) (0)&lt;br /&gt;
13 - COR Type (0=Normal, 1=IGNORE COR, 2=No Receiver) (0)&lt;br /&gt;
14 - Debug Level (0)&lt;br /&gt;
15  - Alt. VOTER Server Address (FQDN) ()&lt;br /&gt;
16  - Alt. VOTER Server Port (Override) (0)&lt;br /&gt;
17  - DSP/BEW Mode (0)&lt;br /&gt;
18 - &amp;quot;Duplex Mode 3&amp;quot; (0=DISABLED, 1-255 Hang Time) (1/10 secs) (0)&lt;br /&gt;
19 - Simulcast Launch Delay (0) (approx 200 ns, 5 = 1us, &amp;gt; 0 to ENA SC)&lt;br /&gt;
97 - RX Level,  98 - Status,  99 - Save Values to EEPROM&lt;br /&gt;
i - IP Parameters menu, o - Offline Mode Parameters menu&lt;br /&gt;
q - Disconnect Remote Console Session, r - reboot system, d - diagnostics&lt;br /&gt;
&lt;br /&gt;
Enter Selection (1-27,97-99,r,q,d) :&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==IP Parameters Menu==&lt;br /&gt;
This is what a typical IP Parameters Menu looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP Parameters Menu&lt;br /&gt;
&lt;br /&gt;
Select the following values to View/Modify:&lt;br /&gt;
&lt;br /&gt;
1  - (Static) IP Address (44.128.1.2)&lt;br /&gt;
2  - (Static) Netmask (255.255.255.0)&lt;br /&gt;
3  - (Static) Gateway (44.128.1.254)&lt;br /&gt;
4  - (Static) Primary DNS Server (44.128.1.254)&lt;br /&gt;
5  - (Static) Secondary DNS Server (0.0.0.0)&lt;br /&gt;
6  - DHCP Enable (0)&lt;br /&gt;
7  - Telnet Port (23)&lt;br /&gt;
8  - Telnet Username (admin)&lt;br /&gt;
9  - Telnet Password (radios)&lt;br /&gt;
10 - DynDNS Enable (0)&lt;br /&gt;
11 - DynDNS Username (wb6nil)&lt;br /&gt;
12 - DynDNS Password (radios42)&lt;br /&gt;
13 - DynDNS Host (voter-test.dyndns.org)&lt;br /&gt;
14 - BootLoader IP Address (192.168.1.10) (OK)&lt;br /&gt;
15 - Ethernet Duplex (0=Half, 1=Full) (1)&lt;br /&gt;
99 - Save Values to EEPROM&lt;br /&gt;
x  - Exit IP Parameters Menu (back to main menu)&lt;br /&gt;
q  - Disconnect Remote Console Session, r - reboot system&lt;br /&gt;
&lt;br /&gt;
Enter Selection (1-14,99,c,x,q,r) :&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Offline Parameters Menu==&lt;br /&gt;
This is what a typical Offline Parameters Menu looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
OffLine Mode Parameters Menu&lt;br /&gt;
&lt;br /&gt;
Select the following values to View/Modify:&lt;br /&gt;
&lt;br /&gt;
1  - Offline Mode (0=NONE, 1=Simplex, 2=Simplex w/Trigger, 3=Repeater) (3)&lt;br /&gt;
2  - CW Speed (400) (1/8000 secs)&lt;br /&gt;
3  - Pre-CW Delay (4000) (1/8000 secs)&lt;br /&gt;
4  - Post-CW Delay (4000) (1/8000 secs)&lt;br /&gt;
5  - CW &amp;quot;Offline&amp;quot; (ID) String (WB6NIL)&lt;br /&gt;
6  - CW &amp;quot;Online&amp;quot; String (OK)&lt;br /&gt;
7  - &amp;quot;Offline&amp;quot; (CW ID) Period Time (6000) (1/10 secs)&lt;br /&gt;
8  - Offline Repeat Hang Time (15) (1/10 secs)&lt;br /&gt;
9  - Offline CTCSS Tone (0.0) Hz&lt;br /&gt;
10 - Offline CTCSS Level (0-32767) (3000)&lt;br /&gt;
11 - Offline De-Emphasis Override (0=NORMAL, 1=OVERRIDE) (0)&lt;br /&gt;
99 - Save Values to EEPROM&lt;br /&gt;
x  - Exit OffLine Mode Parameter Menu (back to main menu)&lt;br /&gt;
q  - Disconnect Remote Console Session, r - reboot system&lt;br /&gt;
&lt;br /&gt;
Enter Selection (1-9,99,c,x,q,r) :&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Status Menu==&lt;br /&gt;
This is what a typical Status Menu looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
S/W Version: 1.51 BEW 08/07/2017 Chuck&lt;br /&gt;
System Uptime: 19569.3 Secs&lt;br /&gt;
IP Address: 172.16.16.191&lt;br /&gt;
Netmask: 255.255.255.0&lt;br /&gt;
Gateway: 172.16.16.254&lt;br /&gt;
Primary DNS: 172.16.16.254&lt;br /&gt;
Secondary DNS: 0.0.0.0&lt;br /&gt;
DHCP: 0&lt;br /&gt;
VOTER Server IP: 172.16.16.164&lt;br /&gt;
VOTER Server UDP Port: 667&lt;br /&gt;
OUR UDP Port: 667&lt;br /&gt;
GPS Lock: 1&lt;br /&gt;
Connected: 1&lt;br /&gt;
COR: 0&lt;br /&gt;
EXT CTCSS IN: 0&lt;br /&gt;
PTT: 0&lt;br /&gt;
RSSI: 0&lt;br /&gt;
Current Samples / Sec.: 8000&lt;br /&gt;
Current Peak Audio Level: 58112&lt;br /&gt;
Squelch Noise Gain Value: 45, Diode Cal. Value: 56, SQL pot 621&lt;br /&gt;
Current Time: Mon  Dec 07, 2020  02:15:25.120&lt;br /&gt;
Last Rx Pkt System time: 12/07/2020 02:05:32.340, diff: 592780 msec&lt;br /&gt;
Last Rx Pkt Timestamp time: 12/07/2020 02:05:32.340, diff: 0 msec&lt;br /&gt;
Last Rx Pkt index: 320, inbounds: 1&lt;br /&gt;
&lt;br /&gt;
Press The Any Key (Enter) To Continue&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Something to note about the &amp;quot;Last Rx Pkt&amp;quot; status. This is the last received packet '''from the network''', not over the air. As such, on your satellite voter receivers that are receive-only, you will likely see something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Last Rx Pkt System time: &amp;lt;System Time Not Set&amp;gt;, diff: 990080296 msec&lt;br /&gt;
Last Rx Pkt Timestamp time: &amp;lt;System Time Not Set&amp;gt;, diff: 0 msec&lt;br /&gt;
Last Rx Pkt index: 0, inbounds: 0&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
The Last Rx Pkt System Time is the last time a packet was sent to this device to be transmitted (diff: is how many msec ago that was).&lt;br /&gt;
&lt;br /&gt;
The Last Rx Pkt Timestamp Time is what the timestamp embedded in that last TX packet was, and the diff: is the difference between the packet timestamp, and the system time.&lt;br /&gt;
&lt;br /&gt;
=Configuration Options=&lt;br /&gt;
==Main Menu Options==&lt;br /&gt;
===Serial #===&lt;br /&gt;
Sets the serial number for the RTCM/VOTER.&lt;br /&gt;
*This sets the MAC address of the unit.&lt;br /&gt;
*Each unit must have a unique serial number on your network segment.&lt;br /&gt;
&lt;br /&gt;
===VOTER Server Address (FQDN)===&lt;br /&gt;
This is the DNS name or IP address of the Asterisk server you are connecting to.&lt;br /&gt;
&lt;br /&gt;
===VOTER Server Port===&lt;br /&gt;
This is the UDP port that the Asterisk server is listening on for clients.&lt;br /&gt;
*Typically it is left at the default of port 667.&lt;br /&gt;
*'''MUST''' match the ''port'' directive in ''voter.conf''.&lt;br /&gt;
&lt;br /&gt;
===Local Port (Override)===&lt;br /&gt;
Sets the local unit UDP port to be something different.&lt;br /&gt;
*This is typically not used and left at default (0).&lt;br /&gt;
&lt;br /&gt;
===Client Password===&lt;br /&gt;
This is the '''unique''' password for this unit.&lt;br /&gt;
*Every unit '''must''' have a '''unique''' password.&lt;br /&gt;
*'''MUST''' match the password on the client configuration line in ''voter.conf''.&lt;br /&gt;
&lt;br /&gt;
===Host Password===&lt;br /&gt;
This is the password of the Asterisk server.&lt;br /&gt;
*Configured with the ''password'' directive in ''voter.conf''.&lt;br /&gt;
&lt;br /&gt;
===Tx Buffer Length===&lt;br /&gt;
This is the size of the TX buffer from the RTCM/VOTER to the Asterisk server.&lt;br /&gt;
*Tuned parameter, set via the tuning instructions based on network configuration.&lt;br /&gt;
&lt;br /&gt;
===GPS Data Protocol (0=NMEA, 1=TSIP)===&lt;br /&gt;
Type of GPS connected.&lt;br /&gt;
*NMEA for all non-Trimble GPS units.&lt;br /&gt;
*TSIP to use with Trimble GPS that use Trimble Serial Interface Protocol (TSIP).&lt;br /&gt;
&lt;br /&gt;
===GPS Serial Polarity (0=Non-Inverted, 1=Inverted)===&lt;br /&gt;
GPS dependent setting. &lt;br /&gt;
*Depends on if you are sending TTL or RS-232 data, adjust as needed.&lt;br /&gt;
&lt;br /&gt;
===GPS PPS Polarity (0=Non-Inverted, 1=Inverted, 2=NONE)===&lt;br /&gt;
GPS dependent setting. &lt;br /&gt;
*Depends on if you are sending TTL or RS-232 data for the PPS signal, adjust as needed.&lt;br /&gt;
*If not using GPS or configuring as a mixed client, set to 2 (None).&lt;br /&gt;
&lt;br /&gt;
===GPS Baud Rate===&lt;br /&gt;
Communication speed for the GPS, default is 9600.&lt;br /&gt;
&lt;br /&gt;
===External CTCSS (0=Ignore, 1=Non-Inverted, 2=Inverted)===&lt;br /&gt;
If you are using the CTCSS input from an external CTCSS decoder, adjust this for your logic polarity, or set to 0 (ignore) if not used.&lt;br /&gt;
&lt;br /&gt;
===COR Type (0=Normal, 1=IGNORE COR, 2=No Receiver)===&lt;br /&gt;
Typically, this is left at Normal. &lt;br /&gt;
*Set to 1 (Ignore COR), if you are using the External CTCSS input.&lt;br /&gt;
&lt;br /&gt;
===Debug Level===&lt;br /&gt;
Set the Debug Level, if needed, based on the [[#Debug Options | Debug Options]] below.&lt;br /&gt;
&lt;br /&gt;
===Alt. VOTER Server Address (FQDN)===&lt;br /&gt;
If you are using redundant Asterisk servers, set the IP/DNS address of the redundant server here.&lt;br /&gt;
&lt;br /&gt;
===Alt. VOTER Server Port (Override)===&lt;br /&gt;
If the redundant Asterisk server UDP port is not 667, set it here.&lt;br /&gt;
&lt;br /&gt;
===DSP/BEW Mode===&lt;br /&gt;
If the firmware supports DSP/BEW Mode, set this to 1 to enable it, if desired.&lt;br /&gt;
*DSP/BEW firmware versions use extra firmware space and will make the diagnostic menu unavailable.&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Duplex Mode 3&amp;quot; (0=DISABLED, 1-255 Hang Time) (1/10 secs)===&lt;br /&gt;
If you are using Duplex Mode 3, set the hang time here to enable the option. Most users leave this disabled.&lt;br /&gt;
&lt;br /&gt;
===Simulcast Launch Delay===&lt;br /&gt;
If you are using Simulcast, set your launch delay here.&lt;br /&gt;
&lt;br /&gt;
===RX Level===&lt;br /&gt;
This opens the RX Level tuning screen to adjust the receive audio level from the repeater.&lt;br /&gt;
&lt;br /&gt;
===Status===&lt;br /&gt;
This opens the status menu, showing some of the current operating parameters.&lt;br /&gt;
&lt;br /&gt;
===Save Values to EEPROM===&lt;br /&gt;
Save all the options to non-volatile EEPROM.&lt;br /&gt;
*Make sure to save after you make any changes.&lt;br /&gt;
&lt;br /&gt;
===IP Parameters menu===&lt;br /&gt;
Open the IP Parameters Menu.&lt;br /&gt;
&lt;br /&gt;
===Offline Mode Parameters menu===&lt;br /&gt;
Open the Offline Mode Parameters Menu.&lt;br /&gt;
&lt;br /&gt;
===Disconnect Remote Console Session===&lt;br /&gt;
If you are connected via Telnet, this will exit your session.&lt;br /&gt;
&lt;br /&gt;
===Reboot System===&lt;br /&gt;
Reboot the VOTER/RTCM.&lt;br /&gt;
*This should be done after making configuration changes.&lt;br /&gt;
*Some setting changes require a reboot to become effective.&lt;br /&gt;
&lt;br /&gt;
===Diagnostics===&lt;br /&gt;
Open the Diagnostics Menu.&lt;br /&gt;
*Diagnostics are unavailable if you are using DSP/BEW firmware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Network Information=&lt;br /&gt;
==RTCM/VOTER Bandwidth==&lt;br /&gt;
Assuming ulaw... The RTCM will require approximately 80kbps of bandwidth for continual usage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Network Quality==&lt;br /&gt;
Your IP Network quality is important. You may wish to add a rule in your routers to prioritize traffic on UDP port 667 so that RTCM audio is given priority over other &lt;br /&gt;
traffic. Also see the [[#Debug Options]] below for notes on how to tag your packets with ToS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==RX/TX Buffers are NOT Both Millisecond Values== &lt;br /&gt;
You might assume an RX buffer (in voter.conf) of 120ms would be equivalent of a TX buffer (in the RTCM) of 120ms. That is not the case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The TX buffer is a number of 125 '''microsecond''' intervals, where the RX buffer is in milliseconds. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you follow the buffer setting instructions, you should be fine, in most cases. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Debug Options=&lt;br /&gt;
The VOTER/RTCM firmware supports some additional debugging information that can be turned on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
From the source code, the different Debug Options are listed as:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1 - Alt/Main Host change notifications&lt;br /&gt;
2 - Ignore HWlock (GGPS only)&lt;br /&gt;
4 - GPS/PPS Failure simulation (GGPS only)&lt;br /&gt;
8 - POCSAG H/W output disable (GGPS only)&lt;br /&gt;
16 - IP TOS Class for Ubiquiti&lt;br /&gt;
32 - GPS Debug&lt;br /&gt;
64 - Fix GPS 1 second off&lt;br /&gt;
128 - Fix GPS 1 month off (WTF,O??)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Not sure what they all do, but that is what they are. Here are the most common ones used:&lt;br /&gt;
*&amp;quot;Alt/Main Host change notifications&amp;quot; &lt;br /&gt;
**shows when the connection to the Asterisk server changes state.&lt;br /&gt;
*&amp;quot;IP TOS Class for Ubiquity&amp;quot; &lt;br /&gt;
**marks the IP headers from the RTCM/VOTER '''TO''' the network with ToS C0/DSCP 48 (UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS latency). Other sources show this as a Network Control TOS.) If you enable this, you also will want to have &amp;quot;utos=y&amp;quot; in your voter.conf to mark the packets from the network '''TO''' the RTCM/VOTER. We will probably change this option to mark the packets by default in a future version.&lt;br /&gt;
*&amp;quot;GPS Debug&amp;quot; &lt;br /&gt;
**will print NMEA or TSIP debug strings from the connected GPS.&lt;br /&gt;
*&amp;quot;Fix GPS 1 second off&amp;quot;&lt;br /&gt;
**this is for NMEA GPS '''only'''. It will add one second to the time.&lt;br /&gt;
*&amp;quot;Fix GPS 1 month off (WTF,O??)&amp;quot;&lt;br /&gt;
**this is for TSIP GPS '''only'''. It will effectively add a month to the date. The mktime function normally needs one month subtracted from the raw month it converts to a time/date string. Maybe there are some GPS out there that do that automatically? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The way this works is you add together the options you want to enable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Want to enable GPS Debug and IP ToS, set debug to 48.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just want to turn on GPS Debug, set debug to 32.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just want ToS turned on, set debug to 16.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Un-documented Menus/Features=&lt;br /&gt;
*Menu 96 - If firmware compiled with DUMPENCREGS enabled, Menu 96 looks like it dumps the registers from the ENC (Ethernet) chip?&lt;br /&gt;
&lt;br /&gt;
*Menu 111 - show the &amp;quot;hidden&amp;quot; option values (normally they should all be 0).&lt;br /&gt;
&lt;br /&gt;
*Menu 11780 - set the &amp;quot;Elkes&amp;quot; value. Developed for Pete Elke WI6H, this is for solar type sites. It shuts off the Tx after a period of no Rx activity.&lt;br /&gt;
&lt;br /&gt;
*Menu 1103 - set the &amp;quot;Glaser&amp;quot; timer value? No idea what this does.&lt;br /&gt;
&lt;br /&gt;
*Menu 1170 - set &amp;quot;Sawyer Mode&amp;quot;. Developed for Tim Sawyer use on Yaesu VXR5000 repeater. It modifies de-ephasis behavior when on/off line. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Audio=&lt;br /&gt;
The RTCM/VOTER is totally flexible regarding emphasis. Although the way it is set is completely obscure. It tries to automatically do the right thing for you, which is great most of the time. But when it’s not, it's hard to know what is going on. &lt;br /&gt;
&lt;br /&gt;
If you are changing the COR Type settings, or nodeemp in voter.conf, make sure you save/reboot the RTCM/VOTER every time you make a change... changes are '''not''' effective until the RTCM/VOTER reboots!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Voting==&lt;br /&gt;
Before we get in to the different ways audio is routed, there is an important consideration you need to make if you are using the RTCM/VOTER for voting. &lt;br /&gt;
&lt;br /&gt;
The way the voting process works, it needs '''discriminator audio''' to determine the signal to noise level from each satellite receiver. As such, you will need to be feeding discriminator audio in to the RX audio pin, so that the hardware/software can vote properly. That means you also need to let the hardware/software do the squelch action.&lt;br /&gt;
&lt;br /&gt;
If you need RX CTCSS, you'll need to feed logic from an external CTCSS decoder in to the CTCSS input pin.&lt;br /&gt;
&lt;br /&gt;
Also, don't disable COR in the RTCM/VOTER... it will cause it to disable the squelch and it will report an RSSI of 255 (full quieting) for all received signals.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Receiver De-emphasis==&lt;br /&gt;
On the RX side the COR Type setting in the RTCM/VOTER determines whether the de-emphasis filter is used for RX audio. 0=Normal means the RTCM/VOTER squelch circuit is in use and it is expecting discriminator audio on the RX pin (to be able to do the squelch action), and therefore it '''will''' provide de-emphasis (audio is routed THROUGH the de-emphasis RC filter circuit) to the receiver audio. COR Type 1=IGNORE COR uses the CTCSS input pin for COR or CTCSS ''logic'' and it then expects de-emphasized receive (line) audio on the RX pin, and therefore will '''not''' provide de-emphasis to the received audio (the RC filter is switched '''out''' and audio passes straight through). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Most of the time, you do NOT need to override the automatic filter selection. However, if you do, and you are sure you have a good reason to, you CAN switch the de-emphasis filter '''out''' of the circuit so that audio passes straight through to the encoder. You would do this by setting the nodeemp=1 option in voter.conf. When you set nodeemp=1, the ''VOTER Protocol'' tells the RTCM/VOTER to switch the filter '''out''', so audio is passed straight through.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Transmitter Pre-emhpasis==&lt;br /&gt;
On the TX side, the RTCM/VOTER expects the repeater to accept ''mic audio''. In other words, the '''repeater''' is providing the pre-emphasis, not the RTCM/VOTER (you are '''not''' directly modulating the TX). This can be overridden by setting CTCSS tone in voter.conf. If a CTCSS tone is defined, the RTCM '''will''' provide pre-emphasis to the audio, and expects that you will be connecting to your repeater's flat audio input (direct modulation). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you don’t want TX CTCSS tone but '''do''' need pre-emphasis, set an arbitrary (any) CTCSS tone in voter.conf, and set the level to 0. This will force the RTCM/VOTER to pre-emphasize the audio it generates on the TX pin, but it won't actually mix in a CTCSS tone. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Level Setting==&lt;br /&gt;
Setting the audio levels for the RTCM/VOTER is pretty straight forward. Just follow these steps:&lt;br /&gt;
*Ensure you have a connection to your host Asterisk server/chan_voter instance&lt;br /&gt;
*Send a 1kHz@3kHz on-channel, full-quieting signal in to the repeater's RX&lt;br /&gt;
*Set the RX up so it reads 3kHz deviation on the RTCM's built in console meter&lt;br /&gt;
*Now set the TX level '''pot''' to get 3kHz out of the transmitter (No PL)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now change the modulation from 1kHz tone to 800Hz followed by 1.8kHz and verify that the deviation level doesn't change as the tone frequency changes. '''Changing levels indicates a pre/de-emphasis issue.''' You will want to read the above sections on how audio is handled, and figure out where your issue is.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If using PL you have to account for that deviation, unless you filter it out with your IFR (test set). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That's it!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Optionally, if you are using the built-in &amp;quot;offline repeat&amp;quot; functions, fail the connection to the host Asterisk server, and make sure your repeat audio performs the same as above.&lt;br /&gt;
&lt;br /&gt;
==== Resolution issues when setting levels using built VOTER boards ====&lt;br /&gt;
Sometimes, depending on what radio is being used getting a good enough resolution with R61 when setting levels is a problem. You move a small amount on the pot and it jumps several hundred KHz of deviation. Inserting a 4:1 voltage divider between the VOTER board and transmitter helps with this. Something such as a 1K and 330 ohm resistor will work. This allows for much finer adjustment on the transmit audio (R61).&lt;br /&gt;
&lt;br /&gt;
==Crappy Transmit Audio==&lt;br /&gt;
&lt;br /&gt;
Does your repeated audio sounded really bassy, muffled, and not very understandable? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There was a situation where, compared to a typical simplex radio-to-radio transmission, the audio through the repeater (RTCM and Asterisk) was unacceptable. What was discovered was that the RTCM has an internal pre-emphasis function that was disabled. The user had intentionally disabled &amp;quot;txctcss&amp;quot; and &amp;quot;txctcsslevel&amp;quot; in voter.conf because he didn't &lt;br /&gt;
want the RTCM transmitting CTCSS (the Quantar was doing that already). He ultimately found a post on the mail list explaining the settings above that said enabling txctcss = some valid tone (114.8 in his case) and setting txctcsslevel = 0 would turn on the pre-emphasis function in the RTCM without transmitting CTCSS tones. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
He did, and it worked like a charm! Audio now had more treble and was less bassy/muffled. So, future RTCM users, be sure not to comment out txctcss and txctcsslevel in voter.conf!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just enable and set the level to 0. You'll thank me later. &lt;br /&gt;
&lt;br /&gt;
== Pulse Noise on Transmit Audio ==&lt;br /&gt;
It has been noticed sometimes on built VOTER boards that it has low level DAC noise which sometimes is apparent as a pulsing noise on the audio output. Adding a 4:1 voltage divider inline between the transmitter and VOTER board helps reduce or eliminate this as described above in Level setting. &lt;br /&gt;
&lt;br /&gt;
=GPS=&lt;br /&gt;
The RTCM/VOTER will work with most GPS available. It requires either NMEA or Trimble TSIP binary data. It only receives data '''from''' the GPS (GPS TX), it does not send anything '''to''' the GPS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The firmware is specifically written to talk to Trimble Thunderbolt receivers using Trimble's TSIP binary data interface, however, other Trimbles GPS receivers that talk TSIP are generally compatible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==RTCM GPS Connections==&lt;br /&gt;
There are some quirks specific to the RTCM that are not well documented.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The GPS connections for the RTCM are on the DB15 connector. Note that the labels for GTX and GRX are misleading. GTX is the data '''FROM''' the GPS '''TO''' the RTCM (GPS TX/RTCM RX). GRX is data from the RTCM to the GPS, but that is currently not used, so it does not need to be connected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PPS is obvious, that is your PPS signal from your GPS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also note, inside the RTCM, there are jumpers to set for TTL or RS-232 data, depending on the type of GPS you are connecting. Set them accordingly. The RS-232 setting loops the data through a MAX3232 converter on the board.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You will still need to set the data and PPS polarity, and baud rate in the configuration menus to get everything to work.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==NMEA Sentences==&lt;br /&gt;
If you are using an NMEA GPS (as opposed to a Trimble using the TSIP binary interface), the RTCM/VOTER is looking for the following NMEA sentences:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$GPGGA&lt;br /&gt;
$GPGSV&lt;br /&gt;
$GPRMC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==TSIP Packets==&lt;br /&gt;
If you are using a Trimble GPS that speaks TSIP, it needs to automatically send out the 0x8F-AB and 0x8F-AC timing packets. Such devices include the Thunderbolt, Resolution T, etc. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Lock==&lt;br /&gt;
The GPS led will go solid regardless of the connection LED. That '''has''' to happen or it won't connect to the Asterisk server. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is not unusual for it to take up to 20 mins to get a GPS lock LED (ie. using a Trimble Thunderbolt) after any reboot. With the Trimble GPS', that is because it is waiting to complete the download of the almanac, and clear the status flags. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS De-sense==&lt;br /&gt;
If you are having odd loss of lock issues, consider you may have interference to your GPS antenna from strong RF nearby. A note from Jesse Lloyd:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I also had crazy problems with poor signal on my GPS when I set it up sitting in a window, and once installed at site I had the GPS antenna maybe 6 ft from the VHF antenna, and after some troubleshooting found it was getting swamped with RF and loosing lock. &lt;br /&gt;
&lt;br /&gt;
I found the debug setting of 32 useful in the RTCM, you can see a hex output of the GPS status.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That has also been observed when trying to use a cheap &amp;quot;patch&amp;quot; antenna in a high RF site (lots of TV/FM transmitters nearby). Switching to a &amp;quot;proper&amp;quot; (commercial) GPS antenna that actually has filtering in it resolved the issue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Issues==&lt;br /&gt;
===Trimble Thunderbolt===&lt;br /&gt;
You may find your Trimble Thunderbolt is showing the incorrect date at the moment. It could be showing the year as 1997. This is due to the date in the Thunderbolt being reported incorrectly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''This can cause some of your voting receivers to not connect, if they are used with other GPS in your system.''' If you have '''ALL''' Thunderbolts, or '''NO''' Thunderbolts, you are probably fine. If you have '''ALL''' Thunderbolts, the date/time is probably wrong, but they will ALL be wrong, so they will connect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GPS Time is a continuous counting time scale beginning at the January 5, 1980 to January 6, 1980 midnight. It is split into two parts: a time of week measured in seconds from midnight Sat/Sun and a week number. The time of week is transmitted in an unambiguous manner by the satellites, but only the bottom 10 bits of the week number are transmitted. This means that a receiver will see a week number count that goes up steadily until it reaches 1023 after which it will “roll over” back to zero, before steadily going up again. Such a week rollover will occur approx. every 20 years. The last week rollover occurred in 1999 and the next one will be in 2019.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Thunderbolt manual states:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The ThunderBolt adjusts for this week rollover by adding 1024 to any week number reported by GPS which is less than week number 936 which began on December 14, 1997. With this technique, the ThunderBolt will provide an accurate translation of GPS week number and TOW to time and date until July 30, 2017.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As such, the Trimble Thunderbolt has a firmware issue with the GPS Week rollover that manifested itself on July 30, 2017, causing the date to become incorrect. The Thunderbolt thinks the week changed from 935 to 936 (actual week 1959-1024=935), so it stopped adding 1024 to the week.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We have added a brute-force fix starting in RTCM/VOTER firmware &amp;gt;=1.51. This fix adds 619315200 seconds (1024 weeks) to the time reported by the GPS. It fixes the Thunderbolts, it breaks other TSIP receivers (Resolution T). A better fix is being tested.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Garmin===&lt;br /&gt;
====Garmin 18x LVC Wiring Issues====&lt;br /&gt;
If you have issues with your GPS 18x LVC not talking to the RTCM/VOTER, it may not be hooked up to the RTCM correctly. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Garmin pin labeling is backwards to what you may think. See below. You probably need to swap pins 6 and 14.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RTCM   	                 GPS 18x LVC      &lt;br /&gt;
6 GRX 	&amp;lt;-- Rx Data 	 6 Green  &lt;br /&gt;
7 GPPS 	&amp;lt;-- Pulse Output 1 Yellow  &lt;br /&gt;
8 GND   Ground 		 3 Black  &lt;br /&gt;
8 GND   Ground 		 5 Black  &lt;br /&gt;
13 +5V 	--&amp;gt;Vin 		 2 Red  &lt;br /&gt;
14 GTX 	--&amp;gt; TX Data 	 4 White&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log into the RTCM and do 98 and you should see something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Current Time: Sun  Apr 20, 2014  04:37:02.820&lt;br /&gt;
Last Rx Pkt System time: 04/20/2014 03:55:35.580, diff: 2487260 msec&lt;br /&gt;
Last Rx Pkt Timestamp time: 04/20/2014 03:55:32.064, diff: 3515 msec&lt;br /&gt;
Last Rx Pkt index: 160, inbounds: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Garmin and the RTCM====&lt;br /&gt;
Beware when buying newer Garmin GPS's to use with the Micro-Node RTCM.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The RTCM expects a 5V PPS signal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Newer Garmin's (GPS 18X, 18X LVC, etc.) MAY NOT output 5V, and can cause issues. '''Check the Garmin datasheet'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER is designed to accept both 3.3V or 5V signals, and ''should'' work fine.&lt;br /&gt;
&lt;br /&gt;
* Some of the Garmin GPS's come with 4800 baud set as default. If you are getting a &amp;quot;Warning: GPS Data time period elapsed&amp;quot; error on your RTCM, change both the GPS and RTCM to use 9600 baud. To do this, interface the GPS to a DB9 connector as per page 8 of the [http://wiki.allstarlink.org/w/images/4/41/GPS_18x_Tech_Specs.pdf manual] (remembering to ONLY use 5V as the power source *facepalm*). Once done, download, extract and open [http://www8.garmin.com/support/download_details.jsp?id=4053 SNSRXCFG_330.exe] and run.&lt;br /&gt;
# Select your GPS (in most cases GPS 18x PC/LVC). Press F10 to switch to NMEA mode (Config &amp;gt; Switch to NMEA Mode)&lt;br /&gt;
# Select Config &amp;gt; Setup and choose the COM port your GPS is connected too. Leave baud rate as auto for now, OK.&lt;br /&gt;
# Select Comm &amp;gt; Connect to connect to the GPS. &lt;br /&gt;
# Go to Config &amp;gt; Get Configuration from GPS to download it's current configuration&lt;br /&gt;
# Click File &amp;gt; Save to save the current configuration&lt;br /&gt;
# In Config &amp;gt; Sensor Configuration change the Baud Rate to 9600. You can also check to make sure 1PPS is enabled here too. Click OK. &lt;br /&gt;
# Hitting F7 when in the main window of the software also brings up the GPS sentences to output if that is of interest.&lt;br /&gt;
# File &amp;gt; Save to a different file than step 5. &lt;br /&gt;
# Press F9 or Config &amp;gt; Send Configuration to GPS. This will then send all the changes you made to the GPS unit (including baud rate so a reconnect may be needed)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===uBlox GPS===&lt;br /&gt;
You can use uBlox GPS modules with the VOTER/RTCM. The ones readily available usually have a 5 pin header on them (5V, GND, TXD, RXD, PPS), as well as an integrated patch antenna, and a SMA connector for an external antenna.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Data is TTL, so make sure to set the jumpers inside the RTCM for TTL data. Baud rate is 9600 by default, and uses NMEA. Set those accordingly in the configuration menu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The RTCM and VOTER require different settings for data and PPS polarity. The VOTER wants '''inverted''' for both, and the RTCM wants '''non-inverted''' for both.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Make sure to save (99) and reboot (r) your VOTER/RTCM after making changes for them to be effective.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===PPS Issues===&lt;br /&gt;
If your VOTER/RTCM connects to your server, but it won't receive anything, check/toggle the PPS polarity, it may be incorrect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===NMEA &amp;lt;--&amp;gt; TSIP Mode Change===&lt;br /&gt;
If you change from NMEA to TSIP (or vice versa), the VOTER/RTCM tries to be smart and change the baud rate for you. For TSIP, it sets it to 9600, and for NMEA it sets it to 4800. However, '''it also resets GPS and PPS polarity to 0'''! This WILL cause you confusion, if you are trying to find the right set of settings for your GPS. This will probably be removed in a future firmware version.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==No GPS/Mixed Mode==&lt;br /&gt;
You do not need a timing source to use an RTCM if you don’t want to vote. That’s called Mix Mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Having the PPS Polarity set to 2 tells the RTCM you do not have a GPS. That forces the RTCM to become a mix (non-voting) client. Turn it on, save it, and restart. A simple voter.conf would look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[general]&lt;br /&gt;
port = 667&lt;br /&gt;
password = BLAH&lt;br /&gt;
&lt;br /&gt;
[1000]&lt;br /&gt;
Site1 = pswrd1,master,transmit&lt;br /&gt;
Site2 = pswrd2,transmit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mixed Client Error==&lt;br /&gt;
&amp;quot;I am getting this error in Asterisk&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WARNING[2368]: chan_voter.c:4511 voter_reader: Voter client master timing source mobile1 attempting to authenticate as mix client!!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A mixed client error means the voter.conf file is expecting an RTCM to try and connect with a GPS IP packet (ie. has '''master''' in it in voter.conf), but the RTCM isn't &lt;br /&gt;
sending a GPS IP packet. So its a mismatch between voter.conf and Option 10 in the RTCM. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to use a mix client (non-voted), make sure that receiver's configuration line in voter.conf '''does not''' have the '''master''' option set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mix Clients with Voted Client Issues==&lt;br /&gt;
&lt;br /&gt;
Situation...&lt;br /&gt;
&amp;quot;I have a private node with 6 voted receivers using RTCMs. I'd like to add a 7th RTCM to this node that is always mixed in rather than voted. I'm able to make this RTCM work as a 7th voted receiver with no problem. Everything I've read seems to indicate that if I change GPS PPS polarity to &amp;quot;none&amp;quot; this will achieve my desired results, however I am unable to get audio out of my transmit RTCM from this 7th site. It does change color to cyan in Allmon indicating it is non voted input but I do not get any indication or audio when that units COR goes active.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Setting voter debug level 3 in Asterisk and I'm seeing the following message repeatedly scrolling by in a blur when the mix client detects COR (COR is active). Sequence numbers are continually incrementing by 1. I'm running software version 1.47 on all my clients:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mix client (Mulaw) my_client index:0 their seq:629 our seq:629&lt;br /&gt;
mix client my_client outa bounds, resetting!!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have a similar situation to the above... check your buflen in voter.conf. Make sure it is at &amp;gt;=160 and see if that fixes it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Debug==&lt;br /&gt;
To turn on GPS Debugging, set the Debug Option Level in the RTCM/VOTER to 32.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [[#Debug Options]] levels for more information on how this works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Trimble Debug Status Decoding==&lt;br /&gt;
The VOTER/RTCM when in TSIP mode (Trimble), assumes it is a Trimble Thunderbolt and is looking for two packets:&lt;br /&gt;
*0x8F-AB - Primary Timing Packet&lt;br /&gt;
*0x8F-AC - Supplemental Timing Packet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Grab a copy of the Thunderbolt User Guide: http://leapsecond.com/pages/tbolt/Thunderbolt-2012-02.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pages 78-83 are the important ones.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Packet 0x8F-AB is what grabs the timing information, and packet 0x8F-AC is what it looks at for everything else (including debug).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The debug string that the VOTER/RTCM reports:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	printf(&amp;quot;GPS-DEBUG: TSIP: ok %d, 9 - 14: %02x %02x %02x %02x %02x %02x\n&amp;quot;,&lt;br /&gt;
					happy,gps_buf[9],gps_buf[10],gps_buf[11],gps_buf[12],gps_buf[13],gps_buf[14]);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, the 1 after ok is the &amp;quot;happy gps&amp;quot; flag. The other 5 bytes are supposed to be bytes 9-14 from the packet... sort of. They are bytes 9-14 of the buffer, but they are actually bytes 8-13 of the binary message.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Looking at the message structure, bytes 8-13 are:&lt;br /&gt;
*8-9 Critical Alarms&lt;br /&gt;
*10-11 Minor Alarms&lt;br /&gt;
*12 GPS Decoding Status&lt;br /&gt;
*13 Disciplining Activity&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Therefore, the messages you are seeing break down as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GPS-DEBUG: TSIP: ok 1, 9 - 14: 00 00 00 00 00 00 - everything is good in the 'hood, Doing Fixes, Phase Locking&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 18 08 06 - not happy, Not Tracking Satellites, Not Disciplining Oscillator (0x18 --&amp;gt; 0b000000011000), No Usable Sats, Inactive&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 08 08 05 - not happy, Not Tracking Satellites, No Useable Sats, Compensating OXCO (holdover)&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 00 00 05 - not happy, Compensating OXCO (holdover)&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 1, 9 - 14: 00 00 00 00 00 08 - happy, Recovery Mode&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 00 00 04 - not happy, Initializing Loop Filter&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The GPS is flagged as NOT HAPPY in TSIP mode if ANY of the following are TRUE:&lt;br /&gt;
*If GPS Decoding Status is anything other than &amp;quot;Doing Fixes&amp;quot;.&lt;br /&gt;
*If Disciplining Activity is not Phase Locking or Recovery Mode.&lt;br /&gt;
*Any Critical Alarms.&lt;br /&gt;
*Any Minor Alarms.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ubiquity ToS=&lt;br /&gt;
See https://help.ubnt.com/hc/en-us/articles/205231750-airMAX-How-is-QoS-and-prioritization-handled-by-airMAX-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, if we set ToS/DSCP in the header to C0, then Ubiquity (and other gear watching ToS) ''should'' prioritize the packets. This sets the DSCP to 110 000 aka 48. UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS latency). Other sources show this as a Network Control TOS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is an option in voter.conf to turn this on (utos=y). However, this only controls packets being sent from Asterisk '''TO''' the RTCM. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to tag packets from the RTCM '''TO''' Asterisk, you need to set the RTCM debug option level to 16 (see [[#Debug Options]] for how this works).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At some point we should probably change the default behaviour of the RTCM firmware to mark the packets and use the debug setting to '''disable''' ToS. That change (if you wanted to compile your own firmware) would be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Change line 90 in IP.c&lt;br /&gt;
&lt;br /&gt;
From:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? 0xc0 : (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY))&lt;br /&gt;
&lt;br /&gt;
To:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY) : 0xc0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This changes the conditional expression from if the debug level is 16 to mark the packets with DSCP 48 to if the debug level is 16, mark the packets routine (DSCP 0).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM Simulcasting=&lt;br /&gt;
The RTCM/VOTER boards do support simulcasting, however, there are a bunch of quirks that one needs to be aware of.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Radio Hardware==&lt;br /&gt;
For best results, you should use all identical RF equipment between your voting RX sites and simulcast TX sites. If you don't, you can end up with strange audio artifacts when different receivers are used, and other strange audio issues when different transmitters are used. The most important thing when setting your levels is that ALL the RX and TX levels match from radio to radio. The best way this is achieved is using a &amp;quot;master&amp;quot; radio and reference from that - all radios might be identical models, but may not have identical audio characteristics so check those levels! Also check CTCSS and audio levels separately to make sure they all match.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==9.6MHz Oscillator==&lt;br /&gt;
If you want reliable simulcast with an acceptable level of overlap warble, you MUST inject a GPS-disciplined or OXCO 9.6MHz signal to the clock of the RTCM's, in lieu of their stock internal crystal. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Otherwise, the inherent internal clock jitter of the RTCM's will cause CTCSS warble, etc. in areas where your transmitters overlap. The 1 PPS feed that you normally feed the RTCM's is acceptable for voting, but naturally, a typical crystal-driven clock will slightly drift in between the pulses every second due to inherent jitter, etc., and that ain't to good for situations like simulcast which demand sample-accurate performance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are some comments from Joe, KC2IRV, on the subject. He has also created his own wiki, specific to simulcast issues, you can find it at: http://rtcmsimulcast.wikifoundry.com/ &lt;br /&gt;
&lt;br /&gt;
:I felt I needed to let those on this mailing list know my findings with simulcasting with the RTCM units since I have received a great deal of help and information from people on this list.&lt;br /&gt;
&lt;br /&gt;
:For the past week I have had a two (2) site simulcast system up and running on UHF using the RTCM units. I have done a great deal of testing and proving on the bench and it is so far working beautifully. &lt;br /&gt;
&lt;br /&gt;
:The one issue that was made apparent to me early on was that in order for the RTCM's to be suitable for simulcast, the processor inside it needed to be clocked to a more accurate source. This source is supposed to be the Programmable Clock Generator Module in order to produce a GPS locked 9.6 MHz reference for the processor. Unfortunately this unit is not currently available.&lt;br /&gt;
&lt;br /&gt;
:Knowing this, I started to go down the road of possibly designing my own, but stumbled upon a cheap, plentiful supply of Symmetricom 9.6 MHz sinewave OCXO's. I took a chance and ordered a few to experiment with to see if the RTCM would be able to use this in place of the supplied crystal for a clock. I found they did, with that I decided to modify the RTCM with an SMA connector just above the audio adjustment pots and use this OCXO. I trimmed the frequency on the units to match each other and used them to produce the processor clock.&lt;br /&gt;
&lt;br /&gt;
:After a week of testing, I have found the results in the overlap areas to be exactly as I would expect them on a public safety/commercial simulcast system. While in an overlap region where both transmitters are within 3dB of one another, to the ear you hear no audio phase wandering. Of course , this has only been a week of testing so I wouldn't call it case closed yet.&lt;br /&gt;
&lt;br /&gt;
:I will say that if this system remains this way after testing for 6 months to a year than using a 9.6 MHz OXCO is a viable alternative to achieve the needed precision and accuracy needed for the processor clock to make it suitable for simulcast.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Comments from Jim Dixon on the issue:&lt;br /&gt;
&lt;br /&gt;
:You have to use '''something''' that will take the precise 10MHz (or whatever it is) from the GPSDO and PLL (phase-locked) convert it to 9.6MHz (square wave at 3.3V for the CPU clock).&lt;br /&gt;
&lt;br /&gt;
:We had to use 9.6MHz mainly because of the DAC in the dsPIC instead of 10MHz. The options for various divide/clock radios in the part are RATHER limited. As I recall, there wasn't even a way of getting the necessary 16kb/s sample rate on the ADC from 10MHZ, either.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Micro-Node RTCM Clock Issue=&lt;br /&gt;
James, KI0KN, had some strange-ness with some of his RTCM's when used for voting. As soon as he changed menu item 10 on the RTCM to either a (1) or a (0) instead of (2), he '''instantly''' got this on the RTCM console:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
04/05/2016 18:44:13.660  Lost GPS Time synchronization&lt;br /&gt;
04/05/2016 18:44:13.660  Host Connection Lost (Pri) (10.16.1.240)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And it sits there forever and never re-establishes connection to the host. The issue was finally traced to a bad batch of 9.6MHz crystals that affected a small run of the RTCM's. The issue was eventually resolved by Micro-Node, but we'll document it here just for record keeping.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
James comments to the list:&lt;br /&gt;
&lt;br /&gt;
:Well, after many of you offered your time and thoughts on my voter problem, Jim, WB6NIL, graciously donated a couple of hours of his time to remotely help me and he uncovered the problem.&lt;br /&gt;
&lt;br /&gt;
:All 5 of my RTCMs were purchased within the last 6 months, and I suspect all 5 have the same problem (will verify that today). The problem is that the microprocessor crystal is running too fast! There is 9.6Mhz crystal that drives the MPU, on the particular unit that Jim helped me diagnose, it's running 2.5 khz too fast.  &lt;br /&gt;
&lt;br /&gt;
:There is a sanity check in the firmware that makes sure the correct number of samples were taken in the last second (it's supposed to be 8000) and fails if the sample is incorrectly sized (mine is taking 8003 samples).  Jim helped adjust the code to be more tolerant of the sampling error and my whole system instantly worked.&lt;br /&gt;
&lt;br /&gt;
:I have since tested it with ALL my GPSs (they all work great!). So I now have everything working, including the voting.&lt;br /&gt;
&lt;br /&gt;
:I haven't contact Micro-Node about it yet. Jim told me that voting should work fine but this clock error would probably not be acceptable for Simulcast (something we have no plans on doing as of now). Since mine are deployed at mountain top sites, I'll probably pursue a crystal that is running at the correct frequency and use &amp;quot;standard&amp;quot; firmware so that if the decision is ever made to play with simulcast, I won't be right back in this same boat.&lt;br /&gt;
&lt;br /&gt;
:Thanks to all that helped out, and a HUGE thanks to Jim for taking the time to troubleshoot this.&lt;br /&gt;
&lt;br /&gt;
:BTW- This clock error will NOT effect the RTCM in mix client mode, it only affects it in voting or simulcast mode!&lt;br /&gt;
&lt;br /&gt;
:In voter.c, the stock line is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if ((samplecnt &amp;gt;= 7999) &amp;amp;&amp;amp; (samplecnt &amp;lt;= 8001))&lt;br /&gt;
&lt;br /&gt;
it needs to be changed to something like:&lt;br /&gt;
&lt;br /&gt;
if ((samplecnt &amp;gt;= 7999) &amp;amp;&amp;amp; (samplecnt &amp;lt;= 8003 ))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:That was just enough to make my first RTCM work. I've had a chance now to check a few more of my RTCMs on the bench this morning and the crystal frequencies are kind of all over.  The next one I had on the bench was 5.2Khz fast. The above code was still not enough to fix it (as would be expected) so it looks like the quality control on whatever manufacturer that crystal is, isn't very good (or a low tolerance crystal is being used). I am going to pursue crystal replacement to get a highly accurate, stable, on-frequency crystal in there as my first choice. Changing the firmware 5 different times doesn't seem like the right answer.&lt;br /&gt;
&lt;br /&gt;
:Jim put that sanity check in there for a reason. Working around it '''may''' allow the device to work, but to me, it seems getting the hardware operating the way it was supposed to originally is the better answer. I will follow up with Micro-node and let you all know how it goes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After following up with Micro-Node:&lt;br /&gt;
:They were all off, some were off a LOT. I talked to Mark @ Micronode. He told me there were 25 units that made it out the door with a crystal from an unapproved source and that was quite likely the reason for the problem. He gladly sent me 5 new crystals to replace (he offered to replace them himself if I sent the units in, but I am comfortable doing it myself to save the time and postage). &lt;br /&gt;
&lt;br /&gt;
:I haven't received them in the mail yet to show that the problem is fixed, but I will post here when that happens. He was great to work with and had no issue getting things set straight. If you are having the same issue and your RTCMs were bought about the same time, I'd suggest you contact him and have him help you resolve the issue!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Duplex Mode 3=&lt;br /&gt;
Does delayed repeat audio bug you? Tired of hearing a bit of yourself after you unkey? Wish you could talk full duplex? Hate the echo chamber effect? Then we have the answer for you.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Duplex Mode 3 in app_rpt allows for &amp;quot;in-cabinet repeat&amp;quot; (where the radio hardware provides repeat audio) and app_rpt adds the hang time, courtesy tones, linking - all the &lt;br /&gt;
things apt_rpt does sans repeat audio. Therefore no repeat audio delay. Cool, eh? This duplex mode has been in app_rpt for a while. Problem has been how to implement it in the RTCM environment. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Duplex Mode 3 support in the RTCM provides in-cabinet repeat functionality. Repeat audio loops through the RTCM and has almost zero delay because it does not have to traverse the network. The delay is not quite zero but it's plenty short enough to eliminate all of the above mentioned annoyances. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Of course Duplex Mode 3 support can't be used with voting or simulcast. You also loose Touch Tone muting, Time Out Timer and Repeater Disable functions because the repeat path is not through app_rpt.&lt;br /&gt;
&lt;br /&gt;
= Setting Voter Buffers =&lt;br /&gt;
Voter ping is useful for end-to-end network evaluation when ICMP ping is turned off and/or the RTCM is behind a firewall and is not ICMP reachable. It can also help with finding the correct RTCM and voter.conf buffer settings.&lt;br /&gt;
&lt;br /&gt;
=== Voter Ping Usage ===&lt;br /&gt;
The voter ping asterisk CLI syntax is:&lt;br /&gt;
 *CLI&amp;gt;voter ping nameOfClient [packetCount]&lt;br /&gt;
If packetCount is not specified 8 pings will be sent. Use packetCount of 0 to stop an in progress voter ping. Set packetCount to at least 100 when evaluating link quality.&lt;br /&gt;
&lt;br /&gt;
The result will be similar to:&lt;br /&gt;
 ...&lt;br /&gt;
 PING (nameOfClient): Packets tx: 100, rx: 100, oos: 0, Avg.: 26.710 ms&lt;br /&gt;
 PING (nameOfClient):  Worst: 38 ms, Best: 22 ms, 100.0% Packets successfully received (0.0% loss)&lt;br /&gt;
The output above is self evident except for oos which is a count of out of sequence packets. Voter ping requires RTCM firmware 1.23 or newer and chan_voter 2013-08-04 or newer.&lt;br /&gt;
&lt;br /&gt;
=== RX Buffer Size ===&lt;br /&gt;
Ping all the receiver sites and look for the worst response of the worst client. As a rough rule of thumb the buflen setting in voter.conf should be set to the worst response + 40ms or 120 whichever is greater. Using the above case the buflen should be set to 120 (38+40&lt;br /&gt;
&lt;br /&gt;
=== TX Buffer Size ===&lt;br /&gt;
Ping all the transmitter sites and look for the worst response of the worst client. The RTCM TX Buffer Length should be set to (worst response + 40ms) * 8 or 480 whichever is greater. Using the above case the RTCM TX Buffer Length should be set to 624 ((38+40)*8).&lt;br /&gt;
&lt;br /&gt;
=== Assumptions ===&lt;br /&gt;
* The minimum TX buffer size is 480 (60ms) and the minimum RX buffer is 120ms. These were derived by testing on a LAN segment with chan_voter 2013-08-04 and RTCM 1.26.&lt;br /&gt;
* The ping times are not round trip times but they are in fact round trip times. Therefore the worst response could (should?) be divided by 2. Ie RX buffer = 38/2+40=59 and TX buffer = (38/2 + 40) * 8 = 472. Minimums still apply.&lt;br /&gt;
* The internet path to and from the RTCM under test is symmetrical.&lt;br /&gt;
* The added 40ms pad is an estimate of buffer ingress and egress.&lt;br /&gt;
As always your milage may vary. Some trial and error may be required to find the optimum settings.&lt;br /&gt;
&lt;br /&gt;
=== Setup ===&lt;br /&gt;
The RX buffer is set with buflen=120 in /etc/asterisk/voter.conf. The value is in milliseconds. The TX buffer is set in the RTCM with menu item 7. The value is in 125 microsecond increments. To match the size of the TX to the RX buffer, use the RX buffer * 8 to get the TX buffer size.&lt;br /&gt;
[[Category:How to]]&lt;br /&gt;
[[Category:Node Configuration]]&lt;/div&gt;</summary>
		<author><name>Ve7fet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pttlink.org/index.php?title=Radio_Connections&amp;diff=1866</id>
		<title>Radio Connections</title>
		<link rel="alternate" type="text/html" href="https://wiki.pttlink.org/index.php?title=Radio_Connections&amp;diff=1866"/>
		<updated>2020-06-27T20:30:45Z</updated>

		<summary type="html">&lt;p&gt;Ve7fet: /* Quantar */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Instructions for connecting radios, repeaters and AllStarLink interfaces including the RTCM, GPS, URI/URI X and like devices.  &lt;br /&gt;
&lt;br /&gt;
=RTCM/VOTER=&lt;br /&gt;
&lt;br /&gt;
See the [[RTCM_Client|RTCM]] page for detailed information about the RTCM/VOTER interface, used primarily to build a voting repeater system. Also note there is model specific radio information below on this page that also discusses connecting to the RTCM/VOTER.&lt;br /&gt;
&lt;br /&gt;
==GPS==&lt;br /&gt;
* [[Media:RTCM 2 Trimble.pdf|Trimble RTCM Interface Cable]]&lt;br /&gt;
* [[Media:RTCM 321 Cable.graffle.pdf|Trimble to Two RTCMs and Lady Heather Cable]]&lt;br /&gt;
* [[Media:RTCM to BG7TBL Cable.pdf|BG7TBL GPS / RTCM Cable]]&lt;br /&gt;
&lt;br /&gt;
=Motorola=&lt;br /&gt;
&lt;br /&gt;
==CDM==&lt;br /&gt;
CDMs make great nodes. This eBay reseller has very nice cables. Use to connect to URI or RTCM. &lt;br /&gt;
&lt;br /&gt;
[[Media:CDM Cable.pdf|CDM Cable from Kurt Meltzer]] ex-WB9KNX, now KC4NX - Cable 83 has only one output to use for either COS or CTCSS. Use another cable if you need both COS and CTCSS.&lt;br /&gt;
&lt;br /&gt;
==Maxtrac==&lt;br /&gt;
The venerable Maxtrac is a radio that was very well built, apparently has very stable reference LO, and can take a beating. When aligned properly, and sufficient *vectored* cooling is made, this radio will last for a very long, time even under several hours with of transmitting per day.&lt;br /&gt;
&lt;br /&gt;
The radio will need to be aligned, and programmed to the frequenc(y/ies) you want to use. You will also need to program the Accessory Option for PL/DPL &amp;amp; CSQ Output.&lt;br /&gt;
* Most URIs can accept active high or active low for valid RX signal detection, ie, open squelch. It is HIGHLY recommend in any situation COS is set to USB or active high. This will prevent issues. Too many to mention.&lt;br /&gt;
* It is a good idea to program pin 8 on the Maxtrac/GM300 for PL/DPL &amp;amp; CSQ output, active high. This will cause the radio to emit a 5Vdc signal when the squelch is open, and go low when squelch is closed.&lt;br /&gt;
&lt;br /&gt;
===TX/RX audio, COS, and PTT connections===&lt;br /&gt;
With the radio facing you in normal operating positing, volume knob on top left, and mic connection right below it, turn the radio over from the right side. The accessory connector is located on the rear, right top of the radio at this point. Starting from left to right, the pins on the top are / and the pins on the bottom are /. If you want to hear audio from the radios speaker, just a header jumper on the far right pins 15 and 16.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This section is a work in progress. &lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
The GM300 section has the link for further reading; the Maxtrac and GM300, are relatively close in design.&lt;br /&gt;
&lt;br /&gt;
==MTR-2000==&lt;br /&gt;
&lt;br /&gt;
==Quantar==&lt;br /&gt;
&lt;br /&gt;
The Quantar can be tricky to interface as it's extremely programmable and you will need a wireline card for I/O connections.  By default the I/O will not work unless the &amp;quot;wildcard&amp;quot; table is programed.  This wildcard table is Boolean logic of interrupt states in the radio, is extremely flexible and frustrating to debug.  It's a base station in it's own class.&lt;br /&gt;
&lt;br /&gt;
[[File:Front of quantar and controller.jpg|thumb|400px|right|Front of Quantar and controller]]&lt;br /&gt;
&lt;br /&gt;
* [[Media:QUANTAR-RTCM INTERFACE CABLE.pdf|Quantar/RTCM Interface Cable]]&lt;br /&gt;
&lt;br /&gt;
Note you will want to use [[RTCM_Client#DSP.2FBEW_Firmware_Version|BEW mode]] on the RTCM if using the RTCM do squelch.&lt;br /&gt;
&lt;br /&gt;
* [[Media:RTCM 2 Quantar.pdf|Another Quantar/RTCM Interface Cable]]&lt;br /&gt;
* [[Media:RTCM to Astro-TAC Cable.pdf|Astro-TAC/RTCM Interface Cable]]&lt;br /&gt;
* [http://wiki.w9cr.net/index.php/Allstar_and_P25_on_Quantar Interfacing to a Quantar with P25NX]  - Bryan Fields W9CR has page on interfacing the Qunatar using simple USB into Allstar and P25NX linking at the same time.  This is driven by programing on the Quantar Wildcard tables.&lt;br /&gt;
*[[Media:Quantar URI Interface.jpg|Quantar/URI Cable]]&lt;br /&gt;
*[[Media:QuantarMRTI2URI.jpg|Quantar MRTI/URI Cable]]&lt;br /&gt;
&lt;br /&gt;
Also see the dedicated [[Quantar_RTCM|Quantar RTCM]] page for detailed information.&lt;br /&gt;
&lt;br /&gt;
==Syntor X==&lt;br /&gt;
The Motorola Syntor X with an Xcat installed makes a great frequency agile remote base. For more information see this [http://wd6awp.net/xcat/ Syntor Xcat] page. &lt;br /&gt;
&lt;br /&gt;
==VRM-850==&lt;br /&gt;
&lt;br /&gt;
==GM300==&lt;br /&gt;
These older radios are fairly common and easily to come by due to the narrow banding. Probably the hardest part is finding a computer and the RSS to program them. The Gm300 family has many different configurations, from low band VHF, to 800 Mhz. But the easiest variant of the GM300 is ones with the 16 pin connector.&lt;br /&gt;
[http://www.repeater-builder.com/motorola/maxtrac/maxtrac-index.html All about GM300 Radios] &lt;br /&gt;
&lt;br /&gt;
Connections are fairly simple but can be hard to determine which is the correct one to use. This [http://www.repeater-builder.com/motorola/maxtrac/maxtrac-option-plug.html link] is a good place to start.&lt;br /&gt;
&lt;br /&gt;
=Kenwood=&lt;br /&gt;
==TKR720/820==&lt;br /&gt;
Connections to: PTT, COS, RX audio out and MIC audio in&lt;br /&gt;
&lt;br /&gt;
TX/RX board, MIC audio input, pins 4 &amp;amp; 5: floating ground, must not tie to any other ground! Some installations may require a 10dB, resistor L-network consisting of a 4.7k and 470 ohm resistors. The 470 ohm resistor connection across pins four and five, the 4.7k resistor is soldered to pin 5 to which your TX audio from the URI will connect to.&lt;br /&gt;
&lt;br /&gt;
The MIC audio gain, deviation, and balance adjustments are *very* sensitive! &lt;br /&gt;
&lt;br /&gt;
- RA-35 without TX adj. trimmer pots: Using a service monitor with deviation metering, start low and work your way up to 3KHz deviation with 1KHz tone, generated by simpleusb-tune-menu. If enabled, *904 turns this tone on and off by command, ie, no tone time-out as in simpleusb-tune-menu.&lt;br /&gt;
&lt;br /&gt;
== TKR750/850 ==&lt;br /&gt;
[http://www.masterscommunications.com/products/radio-adapter/txt/tkr.txt Using the Masters Communications RA-35 or RA-40 radio adapters with the TKR750/850]&lt;br /&gt;
&lt;br /&gt;
=Repeater Controller=&lt;br /&gt;
&lt;br /&gt;
[[Media:RTCMwithController.pdf|An example of using RTCMs to replace 420 links]]&lt;br /&gt;
&lt;br /&gt;
=Spectra Engineering=&lt;br /&gt;
* [http://wiki.w9cr.net/index.php/MX800#W9CR_alignment_procedure_and_setup_with_Allstar MX800 Base station] - Bryan Fields, W9CR has a complete setup guide for the MX800 Base station which includes fallback to the built in controller and an audio delay module.&lt;br /&gt;
&lt;br /&gt;
=Tait=&lt;br /&gt;
&lt;br /&gt;
=Beagle Board=&lt;br /&gt;
The Beagle Board XM project.&lt;br /&gt;
* [http://beagleboard.org/BeagleBoard-xM BeagleBoard-xM]&lt;br /&gt;
&lt;br /&gt;
=Lox board=&lt;br /&gt;
The Level One eXpansion board.&lt;br /&gt;
* [http://www.dmkeng.com/LOX_Order_Page.htm LOX Board] &lt;br /&gt;
&lt;br /&gt;
=URI / URI X=&lt;br /&gt;
The URI is manufactured and sold by [http://dmkeng.com/URI_Order_Page.htm DMK Engineering]. &lt;br /&gt;
*[[Media:URI Schematic.pdf|URI Schematic]]&lt;br /&gt;
*[[Media:URIx Schematic.pdf|URI X Schematic]]&lt;br /&gt;
&lt;br /&gt;
=Masters Communications RA-Series Radio Adapters=&lt;br /&gt;
Inexpensive but feature rich USB Radio Adapters for AllStar Link.&lt;br /&gt;
&lt;br /&gt;
* [http://www.masterscommunications.com/products/radio-adapter/ra25.html RA-25]&lt;br /&gt;
* [http://www.masterscommunications.com/products/radio-adapter/ra30.html RA-30]&lt;br /&gt;
* [http://www.masterscommunications.com/products/radio-adapter/ra35.html RA-35]&lt;br /&gt;
&lt;br /&gt;
*[http://www.masterscommunications.com/products/radio-adapter/ra40.html RA-40]&lt;br /&gt;
*[http://www.masterscommunications.com/products/radio-adapter/ra42.html RA-42]&lt;br /&gt;
*[http://www.masterscommunications.com/products/radio-adapter/radr1x.html RA-DR1X]&lt;br /&gt;
*[http://www.masterscommunications.com/products/radio-adapter/racase.html RA-Case]&lt;br /&gt;
&lt;br /&gt;
=Vertex=&lt;br /&gt;
* [[Media:RTCM 2 VRX-5000.pdf|VRX-5000 / RTCM Interface Cable]]&lt;br /&gt;
&lt;br /&gt;
=Quad Radio PCI card=&lt;br /&gt;
*[[:File:Ft897 quadpci schematic.pdf|Yaesu FT-897 HF Radio(pdf)]]&lt;br /&gt;
&lt;br /&gt;
*[[:File:Ic706 quadpci schematic.pdf|Icom IC-706 HF Radio(pdf)]]&lt;br /&gt;
&lt;br /&gt;
*[[:File:Tmg707 quadpci schematic.pdf|Kenwood TMG-707 Dual Band FM mobile Radio(pdf)]]&lt;br /&gt;
&lt;br /&gt;
=Modified USB FOB=&lt;br /&gt;
*[[:File:Usb2tmg707.pdf|Kenwood TMG-707 Dual Band FM mobile Radio(pdf)]]&lt;br /&gt;
[[Category:How to]]&lt;/div&gt;</summary>
		<author><name>Ve7fet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=1865</id>
		<title>RTCM Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=1865"/>
		<updated>2020-06-27T20:29:26Z</updated>

		<summary type="html">&lt;p&gt;Ve7fet: Added a link to the new Quantar RTCM page.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Radio Thin Client Module (RTCM) is commercially available hardware for interfacing radios to an AllStarLink computer.&lt;br /&gt;
&lt;br /&gt;
The Micro-Node RTCM and VOTER interfaces are typically used with AllStar in voting/simulcast applications. They MAY be used for ANY repeater interface application, through the chan_voter channel driver. The VOTER is the original through-hole board designed by Jim Dixon for this application. It is open-source, and the relevant Gerber files and BoM to build it are available. The [http://www.micro-node.com/thin-m1.shtml Micro-Node Radio Thin Client Module (RTCM)] is the commercial version of the VOTER. It uses surface mount parts (SMT), but is functionally equivalent to the original VOTER. In general, the two terms (RTCM/VOTER) are used interchangeably, as they operate the same, and use the same firmware (mostly, see below).&lt;br /&gt;
&lt;br /&gt;
This page will highlight some of the operational concerns, quirks, bugs, and other items of interest that relate to these interfaces. Much of the information has been gleaned off the AllStar mail list, comes from personal experience, or comes from notes in the firmware source code.&lt;br /&gt;
&lt;br /&gt;
=Testing=&lt;br /&gt;
RTCM's come preconfigured to login to [http://voter-demo-allstarlink.org voter-demo-allstarlink.org] for out of the box testing.&lt;br /&gt;
&lt;br /&gt;
=Factory Reset=&lt;br /&gt;
A factory reset can be performed by setting SW 1 down and then applying power to the RTCM. Wait for the green LED to stop blinking, power off and set SW 1 back up. &lt;br /&gt;
&lt;br /&gt;
=Firmware=&lt;br /&gt;
The firmware in the RTCM and VOTER is the same, except it is compiled for the specific dsPIC that is installed in each. As such, the firmware is specific to the VOTER or the RTCM, and is NOT interchangeable (it won't boot in the wrong device). Firmware for the RTCM is denoted by &amp;quot;smt&amp;quot; in the filename.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are '''two parts''' to the firmware, a bootloader, and then the actual firmware file. The bootloader starts when power is applied, and allows you to talk to the dsPIC and load new firmware files over ethernet. If the bootloader is not intercepted by the loading tool, it will continue to boot the current firmware file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All new boards will need to have the bootloader installed first, followed by a firmware file. You '''can''' load a firmware file directly (.hex) in to the dsPIC, but then you will not have any of the bootloader remote loading features.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The current bootloader (.cof file) is available here: https://github.com/AllStarLink/voter/tree/master/voter-bootloader (the -smt file is for the RTCM). It needs to be loaded with a PICKit programmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Current firmware (.cry file) is available here: https://github.com/AllStarLink/voter/tree/master/board-firmware . They are loaded with the EBLEX C30 Programmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are multiple &amp;quot;flavors&amp;quot; of firmware available. See below for further explanation of what all the options mean.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The DSPBEW versions have Jim's DSP/BEW feature enabled. Note that due to the size of this feature, the diagnostics menu is NOT available in this version.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CHUCK versions have Chuck Henderson's RSSI and Squelch modifications enabled. This is probably the version that most user's will want to use in production.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Compiling Environment==&lt;br /&gt;
If you look in the [https://github.com/AllStarLink/voter/blob/master/votersystem.pdf votersystem.pdf], you will find a procedure to modify and load the bootloader in to the dsPIC of a VOTER board. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Unfortunately, there is an important step '''missing''' in that procedure, which is covered below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In addition, the old links for the MPLAB software are dead, so let's update this info and get you going.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Currently (Feb 2017), you can get the required software from:&lt;br /&gt;
:http://www.microchip.com/development-tools/downloads-archive&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download MPLAB IDE 32-bit Windows v8.66:&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_IDE_v8_66.zip&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/MPLAB_IDE_v8_66.zip&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download MPLAB C Compiler for PIC24 and dsPIC DSCs v3.31 '''NOT v.3.25''':&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Optionally, install Windows Virtual PC and XP Mode. This is getting to be pretty old software, so running it under XP Mode may be a good idea, so we can keep it isolated (install it in a virtual machine). It does run fine in Windows 7.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To setup the compile/build environment, follow these steps:&lt;br /&gt;
*Run the MPLAB IDE installer. You don't need to install the HI-TECH C Compiler at the end (click no)&lt;br /&gt;
*Run the MPLAB C Compiler installer&lt;br /&gt;
*Select Legacy Directory Name&lt;br /&gt;
*'''Select Lite Compiler'''&lt;br /&gt;
*Go to: https://github.com/AllStarLink&lt;br /&gt;
*Follow the links to: voter --&amp;gt; Clone or Download --&amp;gt; Download Zip. That will get you voter-master.zip which is a download of the whole VOTER tree from GitHub.&lt;br /&gt;
*Extract it somewhere (ie. in the XP Mode Virtual PC)&lt;br /&gt;
*Launch the MPLAB IDE&lt;br /&gt;
*Go to Configure --&amp;gt; Settings --&amp;gt; Projects and de-select one-to-one project mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bootloader==&lt;br /&gt;
If you need to load the bootloader in to a fresh board, you will need to follow these steps:&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; voter-bootloader.mcp --&amp;gt; Open (it is in the voter-bootloader folder of the GitHub source)&lt;br /&gt;
*Go to File --&amp;gt; Import --&amp;gt; voter-bootloader --&amp;gt; ENC_C30.cof --&amp;gt; Open '''This step is missing from the original procedure.'''&lt;br /&gt;
*Remove JP7 on the VOTER Board. This is necessary to allow programming by the PICKit2/PICKit3 device.&lt;br /&gt;
*Attach the PICKIT2/PICKit3 device to J1 on the VOTER board. Note that Pin 1 is closest to the power supply modules (as indicated on the board).&lt;br /&gt;
*If you have not already selected a programming device, go to Programmer --&amp;gt; Select Device and choose PICKit3 (or PICKit2, depending on what you are using).&lt;br /&gt;
*Go to Programmer --&amp;gt; Program. This will program the bootloader firmware into the PIC device on the board.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to change the default IP address from 192.168.1.11 in the bootloader:&lt;br /&gt;
*Select View --&amp;gt; Program Memory (from the top menu bar)&lt;br /&gt;
*Hit Control-F (to &amp;quot;find&amp;quot;) and search for the digits &amp;quot;00A8C0&amp;quot;.&lt;br /&gt;
*These should be found at memory address &amp;quot;03018&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;A8C0&amp;quot; at 03018 represents the hex digits C0 (192) and A8 (168) which are the first two octets of the IP address. The six digits to enter are 00 then the SECOND octet of the IP address in hex then the FIRST octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;0B01&amp;quot; at 0301A represents the hex digits 0B (11) and 01 (1) which are the second two octets of the IP address. The six digits to enter are 00 then the FOURTH octet of the IP address in hex then the THIRD octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you have modified the address to your desired IP, follow the programming procedure (above).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Firmware==&lt;br /&gt;
To compile the firmware (if you want to make custom changes):&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; navigate to board-firmware and open the .mcp file for the flavor of firmware you want to compile. They are in the board-firmware folder of the GitHub source.&lt;br /&gt;
*'''NOTE''': the .mcp files with the &amp;quot;smt&amp;quot; suffix are for the RTCM (built with SMT parts). The non-smt files are for the ORIGINAL through-hole VOTER boards. The difference is that the VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
*Go to Project --&amp;gt; Build Configuration and select &amp;quot;Release&amp;quot;. This may not be necessary (I don't believe that option is used in the firmware), but it removes the compiler option of __DEBUG being passed, so theoretically it would build &amp;quot;normal&amp;quot; firmware.&lt;br /&gt;
*Go to Configure --&amp;gt; Select Device and choose the appropriate device for your board from the Device list. If you don't select the right one, the board will not boot. Select dsPIC33FJ128GP802 for the VOTER, and dsPIC33FJ128GP804 for the RTCM.&lt;br /&gt;
*Now, if you go to Project --&amp;gt; Build All it should compile everything and show you &amp;quot;Build Succeeded&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A .cry file should be in the board-firmware folder. You can load this with the ENC Loader.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is also a .hex file in there that you could load with a programmer... but that would wipe the bootloader... so don't do that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Chuck Squelch==&lt;br /&gt;
If you want to enable &amp;quot;Chuck Squelch&amp;quot;, open the HardwareProfile.h and un-comment #define CHUCK. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may also want to go down to Line 291 in Voter.c (right click on the window, go to Properties --&amp;gt; &amp;quot;C&amp;quot; File Types --&amp;gt; Line Numbers) and tack on CHUCK after 1.60 (the current version number) so that when you load this firmware, the version will be shown as 1.51CHUCK, and you'll know that Chuck Squelch is compiled in. We should probably make that more automagic in the future...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==DSP/BEW==&lt;br /&gt;
If you want to compile the DSPBEW version, open the DSPBEW project file instead.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DSP/BEW Firmware Version=&lt;br /&gt;
DSP BEW Firmware is mutually exclusive with the diagnostic menu. There is not enough space for both, if you load the DSP/BEW firmware, you will '''NOT''' have a diag menu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BEW stands for Baseband Examination Window.&lt;br /&gt;
&lt;br /&gt;
Typically, the discriminator of an FM communications receiver produces results containing audio spectrum from the &amp;quot;sub-audible&amp;quot; range (typically &amp;lt; 100 Hz) to well above frequencies able to be produced by modulating audio. These higher frequencies can be utilized to determine signal quality, since they can only contain noise (or no noise, if a sufficiently strong signal is present).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For receivers (such as the Motorola Quantar, etc) that do not provide sufficient spectral content at these &amp;quot;noise&amp;quot; frequencies (for various reasons), The &amp;quot;DSP/BEW (Digital Signal Processor / Baseband Examination Window)&amp;quot; feature of the RTCM firmware may be utilized. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These receivers are perfectly capable of providing valid &amp;quot;noise&amp;quot; signal with no modulation on the input of the receiver, but with strong modulation (high frequency audio and high deviation), it severely interferes with proper analysis of signal strength.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This feature provides a means by which a &amp;quot;Window&amp;quot; of baseband (normal audio range) signal is examined by a DSP and a determination of whether or not sufficient audio is present to cause interference of proper signal strength is made. During the VERY brief periods of time when it is determined that sufficient audio is present to cause interference, the signal strength value is &amp;quot;held&amp;quot; (the last valid value previous to the time of interference) until such time that the interfering audio is no longer present.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The DSP/BEW feature is selectable, and '''should not''' be used for a receiver that does not need it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A note on the Motorola SLR5700 per VE7FET. DSP/BEW definitely makes a difference on what AllMon reports for the signal strength of received signals. It is less reactive when DSP/BEW = 1 than with it set to 0. We'll have to see what the real world trials show. It might be better to leave it off.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Chuck Squelch=&lt;br /&gt;
&amp;quot;Chuck Squelch&amp;quot; are a couple firmware changes made by Chuck Henderson, WB9UUS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pre-compiled firmware versions including this option are available on [https://github.com/AllStarLink/voter/tree/master/board-firmware GitHub]. See above on how it is enabled/compiled, if you are rolling your own firmware modifications.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
One of the changes fixes an issue with weak signals producing RSSI readings all over the place. It is caused by a 16 bit value that was overflowing (it is the RSSI change in the firmware). It results in rock-solid RSSI values being reported, even on barely or non-readable signals. '''This change will likely be rolled in to a permanent fix in a future firmware release.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The other firmware change changes how the squelch responds (looks at the noise in the last two audio samples) and makes the &amp;quot;Micor squelch&amp;quot; action work better.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may also want to consider the following changes in [[Voter.conf|/etc/asterisk/voter.conf]]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;Comment out:&lt;br /&gt;
;thresholds =&lt;br /&gt;
&lt;br /&gt;
;and set:&lt;br /&gt;
linger = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Squelch Issues=&lt;br /&gt;
*If anyone is off frequency a little bit, that will make the voice talk off worse. Double check that the repeater and the users are all on frequency.&lt;br /&gt;
*Don't use narrow bandwidth on the repeater receiver. &lt;br /&gt;
*Make sure that the discriminator audio is not rolled off even a little bit at the high end. There should not be resistors in series or capacitors to ground between the discriminator chip output pin and the voter board input, for best results.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Motorola Quantar==&lt;br /&gt;
Some things to consider:&lt;br /&gt;
*Install JP1 on the Quantar's RTCM. The squelch should calibrate at around 4 blinks rather than the 12 blinks or so without JP1.&lt;br /&gt;
*Be sure you've done the diode and squelch calibration with the actual attached radio (no antenna). &lt;br /&gt;
*The Quantar firmware should be 20.14.48 as later versions have better noise output. &lt;br /&gt;
*Try the &amp;quot;Chuck Squelch&amp;quot; RTCM version.&lt;br /&gt;
*Each RTCM should have 3 to 5 turns past threshold to prevent the squelch form being too loose. Somewhere around the 350 level seems about right. Chuck Squelch seems to need fewer turns but YMMV.&lt;br /&gt;
*Don't &amp;quot;and&amp;quot; CTCSS with squelch. That may override the RTCM's squelch detection. Compare with CTCSS on and off to see effect if any.&lt;br /&gt;
&lt;br /&gt;
Also check the [[Quantar_RTCM|Quantar RTCM]] page for detailed interfacing and configuration information.&lt;br /&gt;
&lt;br /&gt;
=RTCM/VOTER LED's=&lt;br /&gt;
RX LED on the RTCM/VOTER will flash (same rate as ACT LED) if you have External CTCSS enabled, and the received signal has the wrong (or no) valid PL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Menus=&lt;br /&gt;
==Main Menu==&lt;br /&gt;
This is what a typical Main Menu looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Select the following values to View/Modify:&lt;br /&gt;
&lt;br /&gt;
1  - Serial # (0000) (which is MAC ADDR 00:04:A3:00:00:00)&lt;br /&gt;
2  - VOTER Server Address (FQDN) (44.128.1.1)&lt;br /&gt;
3  - VOTER Server Port (667),  4  - Local Port (Override) (0)&lt;br /&gt;
5  - Client Password (password1),  6  - Host Password (hostpass1)&lt;br /&gt;
7  - Tx Buffer Length (800)&lt;br /&gt;
8  - GPS Data Protocol (0=NMEA, 1=TSIP) (1)&lt;br /&gt;
9  - GPS Serial Polarity (0=Non-Inverted, 1=Inverted) (1)&lt;br /&gt;
10 - GPS PPS Polarity (0=Non-Inverted, 1=Inverted, 2=NONE) (0)&lt;br /&gt;
11 - GPS Baud Rate (9600)&lt;br /&gt;
12 - External CTCSS (0=Ignore, 1=Non-Inverted, 2=Inverted) (0)&lt;br /&gt;
13 - COR Type (0=Normal, 1=IGNORE COR, 2=No Receiver) (0)&lt;br /&gt;
14 - Debug Level (0)&lt;br /&gt;
15  - Alt. VOTER Server Address (FQDN) ()&lt;br /&gt;
16  - Alt. VOTER Server Port (Override) (0)&lt;br /&gt;
17  - DSP/BEW Mode (0)&lt;br /&gt;
18 - &amp;quot;Duplex Mode 3&amp;quot; (0=DISABLED, 1-255 Hang Time) (1/10 secs) (0)&lt;br /&gt;
19 - Simulcast Launch Delay (0) (approx 200 ns, 5 = 1us, &amp;gt; 0 to ENA SC)&lt;br /&gt;
97 - RX Level,  98 - Status,  99 - Save Values to EEPROM&lt;br /&gt;
i - IP Parameters menu, o - Offline Mode Parameters menu&lt;br /&gt;
q - Disconnect Remote Console Session, r - reboot system, d - diagnostics&lt;br /&gt;
&lt;br /&gt;
Enter Selection (1-27,97-99,r,q,d) :&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==IP Parameters Menu==&lt;br /&gt;
This is what a typical IP Parameters Menu looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP Parameters Menu&lt;br /&gt;
&lt;br /&gt;
Select the following values to View/Modify:&lt;br /&gt;
&lt;br /&gt;
1  - (Static) IP Address (44.128.1.2)&lt;br /&gt;
2  - (Static) Netmask (255.255.255.0)&lt;br /&gt;
3  - (Static) Gateway (44.128.1.254)&lt;br /&gt;
4  - (Static) Primary DNS Server (44.128.1.254)&lt;br /&gt;
5  - (Static) Secondary DNS Server (0.0.0.0)&lt;br /&gt;
6  - DHCP Enable (0)&lt;br /&gt;
7  - Telnet Port (23)&lt;br /&gt;
8  - Telnet Username (admin)&lt;br /&gt;
9  - Telnet Password (radios)&lt;br /&gt;
10 - DynDNS Enable (0)&lt;br /&gt;
11 - DynDNS Username (wb6nil)&lt;br /&gt;
12 - DynDNS Password (radios42)&lt;br /&gt;
13 - DynDNS Host (voter-test.dyndns.org)&lt;br /&gt;
14 - BootLoader IP Address (192.168.1.10) (OK)&lt;br /&gt;
15 - Ethernet Duplex (0=Half, 1=Full) (1)&lt;br /&gt;
99 - Save Values to EEPROM&lt;br /&gt;
x  - Exit IP Parameters Menu (back to main menu)&lt;br /&gt;
q  - Disconnect Remote Console Session, r - reboot system&lt;br /&gt;
&lt;br /&gt;
Enter Selection (1-14,99,c,x,q,r) :&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Offline Parameters Menu==&lt;br /&gt;
This is what a typical Offline Parameters Menu looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
OffLine Mode Parameters Menu&lt;br /&gt;
&lt;br /&gt;
Select the following values to View/Modify:&lt;br /&gt;
&lt;br /&gt;
1  - Offline Mode (0=NONE, 1=Simplex, 2=Simplex w/Trigger, 3=Repeater) (3)&lt;br /&gt;
2  - CW Speed (400) (1/8000 secs)&lt;br /&gt;
3  - Pre-CW Delay (4000) (1/8000 secs)&lt;br /&gt;
4  - Post-CW Delay (4000) (1/8000 secs)&lt;br /&gt;
5  - CW &amp;quot;Offline&amp;quot; (ID) String (WB6NIL)&lt;br /&gt;
6  - CW &amp;quot;Online&amp;quot; String (OK)&lt;br /&gt;
7  - &amp;quot;Offline&amp;quot; (CW ID) Period Time (6000) (1/10 secs)&lt;br /&gt;
8  - Offline Repeat Hang Time (15) (1/10 secs)&lt;br /&gt;
9  - Offline CTCSS Tone (0.0) Hz&lt;br /&gt;
10 - Offline CTCSS Level (0-32767) (3000)&lt;br /&gt;
11 - Offline De-Emphasis Override (0=NORMAL, 1=OVERRIDE) (0)&lt;br /&gt;
99 - Save Values to EEPROM&lt;br /&gt;
x  - Exit OffLine Mode Parameter Menu (back to main menu)&lt;br /&gt;
q  - Disconnect Remote Console Session, r - reboot system&lt;br /&gt;
&lt;br /&gt;
Enter Selection (1-9,99,c,x,q,r) :&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Configuration Options=&lt;br /&gt;
==Main Menu Options==&lt;br /&gt;
===Serial #===&lt;br /&gt;
Sets the serial number for the RTCM/VOTER.&lt;br /&gt;
*This sets the MAC address of the unit.&lt;br /&gt;
*Each unit must have a unique serial number on your network segment.&lt;br /&gt;
&lt;br /&gt;
===VOTER Server Address (FQDN)===&lt;br /&gt;
This is the DNS name or IP address of the Asterisk server you are connecting to.&lt;br /&gt;
&lt;br /&gt;
===VOTER Server Port===&lt;br /&gt;
This is the UDP port that the Asterisk server is listening on for clients.&lt;br /&gt;
*Typically it is left at the default of port 667.&lt;br /&gt;
*'''MUST''' match the ''port'' directive in ''voter.conf''.&lt;br /&gt;
&lt;br /&gt;
===Local Port (Override)===&lt;br /&gt;
Sets the local unit UDP port to be something different.&lt;br /&gt;
*This is typically not used and left at default (0).&lt;br /&gt;
&lt;br /&gt;
===Client Password===&lt;br /&gt;
This is the '''unique''' password for this unit.&lt;br /&gt;
*Every unit '''must''' have a '''unique''' password.&lt;br /&gt;
*'''MUST''' match the password on the client configuration line in ''voter.conf''.&lt;br /&gt;
&lt;br /&gt;
===Host Password===&lt;br /&gt;
This is the password of the Asterisk server.&lt;br /&gt;
*Configured with the ''password'' directive in ''voter.conf''.&lt;br /&gt;
&lt;br /&gt;
===Tx Buffer Length===&lt;br /&gt;
This is the size of the TX buffer from the RTCM/VOTER to the Asterisk server.&lt;br /&gt;
*Tuned parameter, set via the tuning instructions based on network configuration.&lt;br /&gt;
&lt;br /&gt;
===GPS Data Protocol (0=NMEA, 1=TSIP)===&lt;br /&gt;
Type of GPS connected.&lt;br /&gt;
*NMEA for all non-Trimble GPS units.&lt;br /&gt;
*TSIP to use with Trimble GPS that use Trimble Serial Interface Protocol (TSIP).&lt;br /&gt;
&lt;br /&gt;
===GPS Serial Polarity (0=Non-Inverted, 1=Inverted)===&lt;br /&gt;
GPS dependent setting. &lt;br /&gt;
*Depends on if you are sending TTL or RS-232 data, adjust as needed.&lt;br /&gt;
&lt;br /&gt;
===GPS PPS Polarity (0=Non-Inverted, 1=Inverted, 2=NONE)===&lt;br /&gt;
GPS dependent setting. &lt;br /&gt;
*Depends on if you are sending TTL or RS-232 data for the PPS signal, adjust as needed.&lt;br /&gt;
*If not using GPS or configuring as a mixed client, set to 2 (None).&lt;br /&gt;
&lt;br /&gt;
===GPS Baud Rate===&lt;br /&gt;
Communication speed for the GPS, default is 9600.&lt;br /&gt;
&lt;br /&gt;
===External CTCSS (0=Ignore, 1=Non-Inverted, 2=Inverted)===&lt;br /&gt;
If you are using the CTCSS input from an external CTCSS decoder, adjust this for your logic polarity, or set to 0 (ignore) if not used.&lt;br /&gt;
&lt;br /&gt;
===COR Type (0=Normal, 1=IGNORE COR, 2=No Receiver)===&lt;br /&gt;
Typically, this is left at Normal. &lt;br /&gt;
*Set to 1 (Ignore COR), if you are using the External CTCSS input.&lt;br /&gt;
&lt;br /&gt;
===Debug Level===&lt;br /&gt;
Set the Debug Level, if needed, based on the [[#Debug Options | Debug Options]] below.&lt;br /&gt;
&lt;br /&gt;
===Alt. VOTER Server Address (FQDN)===&lt;br /&gt;
If you are using redundant Asterisk servers, set the IP/DNS address of the redundant server here.&lt;br /&gt;
&lt;br /&gt;
===Alt. VOTER Server Port (Override)===&lt;br /&gt;
If the redundant Asterisk server UDP port is not 667, set it here.&lt;br /&gt;
&lt;br /&gt;
===DSP/BEW Mode===&lt;br /&gt;
If the firmware supports DSP/BEW Mode, set this to 1 to enable it, if desired.&lt;br /&gt;
*DSP/BEW firmware versions use extra firmware space and will make the diagnostic menu unavailable.&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Duplex Mode 3&amp;quot; (0=DISABLED, 1-255 Hang Time) (1/10 secs)===&lt;br /&gt;
If you are using Duplex Mode 3, set the hang time here to enable the option. Most users leave this disabled.&lt;br /&gt;
&lt;br /&gt;
===Simulcast Launch Delay===&lt;br /&gt;
If you are using Simulcast, set your launch delay here.&lt;br /&gt;
&lt;br /&gt;
===RX Level===&lt;br /&gt;
This opens the RX Level tuning screen to adjust the receive audio level from the repeater.&lt;br /&gt;
&lt;br /&gt;
===Status===&lt;br /&gt;
This opens the status menu, showing some of the current operating parameters.&lt;br /&gt;
&lt;br /&gt;
===Save Values to EEPROM===&lt;br /&gt;
Save all the options to non-volatile EEPROM.&lt;br /&gt;
*Make sure to save after you make any changes.&lt;br /&gt;
&lt;br /&gt;
===IP Parameters menu===&lt;br /&gt;
Open the IP Parameters Menu.&lt;br /&gt;
&lt;br /&gt;
===Offline Mode Parameters menu===&lt;br /&gt;
Open the Offline Mode Parameters Menu.&lt;br /&gt;
&lt;br /&gt;
===Disconnect Remote Console Session===&lt;br /&gt;
If you are connected via Telnet, this will exit your session.&lt;br /&gt;
&lt;br /&gt;
===Reboot System===&lt;br /&gt;
Reboot the VOTER/RTCM.&lt;br /&gt;
*This should be done after making configuration changes.&lt;br /&gt;
*Some setting changes require a reboot to become effective.&lt;br /&gt;
&lt;br /&gt;
===Diagnostics===&lt;br /&gt;
Open the Diagnostics Menu.&lt;br /&gt;
*Diagnostics are unavailable if you are using DSP/BEW firmware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Network Information=&lt;br /&gt;
==RTCM/VOTER Bandwidth==&lt;br /&gt;
Assuming ulaw... The RTCM will require approximately 80kbps of bandwidth for continual usage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Network Quality==&lt;br /&gt;
Your IP Network quality is important. You may wish to add a rule in your routers to prioritize traffic on UDP port 667 so that RTCM audio is given priority over other &lt;br /&gt;
traffic. Also see the [[#Debug Options]] below for notes on how to tag your packets with ToS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==RX/TX Buffers are NOT Both Millisecond Values== &lt;br /&gt;
You might assume an RX buffer (in voter.conf) of 120ms would be equivalent of a TX buffer (in the RTCM) of 120ms. That is not the case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The TX buffer is a number of 125 '''microsecond''' intervals, where the RX buffer is in milliseconds. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you follow the buffer setting instructions, you should be fine, in most cases. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Debug Options=&lt;br /&gt;
The VOTER/RTCM firmware supports some additional debugging information that can be turned on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
From the source code, the different Debug Options are listed as:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1 - Alt/Main Host change notifications&lt;br /&gt;
2 - Ignore HWlock (GGPS only)&lt;br /&gt;
4 - GPS/PPS Failure simulation (GGPS only)&lt;br /&gt;
8 - POCSAG H/W output disable (GGPS only)&lt;br /&gt;
16 - IP TOS Class for Ubiquiti&lt;br /&gt;
32 - GPS Debug&lt;br /&gt;
64 - Fix GPS 1 second off&lt;br /&gt;
128 - Fix GPS 1 month off (WTF,O??)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Not sure what they all do, but that is what they are. Here are the most common ones used:&lt;br /&gt;
*&amp;quot;Alt/Main Host change notifications&amp;quot; &lt;br /&gt;
**shows when the connection to the Asterisk server changes state.&lt;br /&gt;
*&amp;quot;IP TOS Class for Ubiquity&amp;quot; &lt;br /&gt;
**marks the IP headers from the RTCM/VOTER '''TO''' the network with ToS C0/DSCP 48 (UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS latency). Other sources show this as a Network Control TOS.) If you enable this, you also will want to have &amp;quot;utos=y&amp;quot; in your voter.conf to mark the packets from the network '''TO''' the RTCM/VOTER. We will probably change this option to mark the packets by default in a future version.&lt;br /&gt;
*&amp;quot;GPS Debug&amp;quot; &lt;br /&gt;
**will print NMEA or TSIP debug strings from the connected GPS.&lt;br /&gt;
*&amp;quot;Fix GPS 1 second off&amp;quot;&lt;br /&gt;
**this is for NMEA GPS '''only'''. It will add one second to the time.&lt;br /&gt;
*&amp;quot;Fix GPS 1 month off (WTF,O??)&amp;quot;&lt;br /&gt;
**this is for TSIP GPS '''only'''. It will effectively add a month to the date. The mktime function normally needs one month subtracted from the raw month it converts to a time/date string. Maybe there are some GPS out there that do that automatically? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The way this works is you add together the options you want to enable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Want to enable GPS Debug and IP ToS, set debug to 48.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just want to turn on GPS Debug, set debug to 32.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just want ToS turned on, set debug to 16.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Un-documented Menus/Features=&lt;br /&gt;
*Menu 96 - If firmware compiled with DUMPENCREGS enabled, Menu 96 looks like it dumps the registers from the ENC (Ethernet) chip?&lt;br /&gt;
&lt;br /&gt;
*Menu 111 - show the &amp;quot;hidden&amp;quot; option values (normally they should all be 0).&lt;br /&gt;
&lt;br /&gt;
*Menu 11780 - set the &amp;quot;Elkes&amp;quot; value. Developed for Pete Elke WI6H, this is for solar type sites. It shuts off the Tx after a period of no Rx activity.&lt;br /&gt;
&lt;br /&gt;
*Menu 1103 - set the &amp;quot;Glaser&amp;quot; timer value? No idea what this does.&lt;br /&gt;
&lt;br /&gt;
*Menu 1170 - set &amp;quot;Sawyer Mode&amp;quot;. Developed for Tim Sawyer use on Yaesu VXR5000 repeater. It modifies de-ephasis behavior when on/off line. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Audio=&lt;br /&gt;
The RTCM/VOTER is totally flexible regarding emphasis. Although the way it is set is completely obscure. It tries to automatically do the right thing for you, which is great most of the time. But when it’s not, it's hard to know what is going on. &lt;br /&gt;
&lt;br /&gt;
If you are changing the COR Type settings, or nodeemp in voter.conf, make sure you save/reboot the RTCM/VOTER every time you make a change... changes are '''not''' effective until the RTCM/VOTER reboots!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Voting==&lt;br /&gt;
Before we get in to the different ways audio is routed, there is an important consideration you need to make if you are using the RTCM/VOTER for voting. &lt;br /&gt;
&lt;br /&gt;
The way the voting process works, it needs '''discriminator audio''' to determine the signal to noise level from each satellite receiver. As such, you will need to be feeding discriminator audio in to the RX audio pin, so that the hardware/software can vote properly. That means you also need to let the hardware/software do the squelch action.&lt;br /&gt;
&lt;br /&gt;
If you need RX CTCSS, you'll need to feed logic from an external CTCSS decoder in to the CTCSS input pin.&lt;br /&gt;
&lt;br /&gt;
Also, don't disable COR in the RTCM/VOTER... it will cause it to disable the squelch and it will report an RSSI of 255 (full quieting) for all received signals.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Receiver De-emphasis==&lt;br /&gt;
On the RX side the COR Type setting in the RTCM/VOTER determines whether the de-emphasis filter is used for RX audio. 0=Normal means the RTCM/VOTER squelch circuit is in use and it is expecting discriminator audio on the RX pin (to be able to do the squelch action), and therefore it '''will''' provide de-emphasis (audio is routed THROUGH the de-emphasis RC filter circuit) to the receiver audio. COR Type 1=IGNORE COR uses the CTCSS input pin for COR or CTCSS ''logic'' and it then expects de-emphasized receive (line) audio on the RX pin, and therefore will '''not''' provide de-emphasis to the received audio (the RC filter is switched '''out''' and audio passes straight through). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Most of the time, you do NOT need to override the automatic filter selection. However, if you do, and you are sure you have a good reason to, you CAN switch the de-emphasis filter '''out''' of the circuit so that audio passes straight through to the encoder. You would do this by setting the nodeemp=1 option in voter.conf. When you set nodeemp=1, the ''VOTER Protocol'' tells the RTCM/VOTER to switch the filter '''out''', so audio is passed straight through.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Transmitter Pre-emhpasis==&lt;br /&gt;
On the TX side, the RTCM/VOTER expects the repeater to accept ''mic audio''. In other words, the '''repeater''' is providing the pre-emphasis, not the RTCM/VOTER (you are '''not''' directly modulating the TX). This can be overridden by setting CTCSS tone in voter.conf. If a CTCSS tone is defined, the RTCM '''will''' provide pre-emphasis to the audio, and expects that you will be connecting to your repeater's flat audio input (direct modulation). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you don’t want TX CTCSS tone but '''do''' need pre-emphasis, set an arbitrary (any) CTCSS tone in voter.conf, and set the level to 0. This will force the RTCM/VOTER to pre-emphasize the audio it generates on the TX pin, but it won't actually mix in a CTCSS tone. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Level Setting==&lt;br /&gt;
Setting the audio levels for the RTCM/VOTER is pretty straight forward. Just follow these steps:&lt;br /&gt;
*Ensure you have a connection to your host Asterisk server/chan_voter instance&lt;br /&gt;
*Send a 1kHz@3kHz on-channel, full-quieting signal in to the repeater's RX&lt;br /&gt;
*Set the RX up so it reads 3kHz deviation on the RTCM's built in console meter&lt;br /&gt;
*Now set the TX level '''pot''' to get 3kHz out of the transmitter (No PL)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now change the modulation from 1kHz tone to 800Hz followed by 1.8kHz and verify that the deviation level doesn't change as the tone frequency changes. '''Changing levels indicates a pre/de-emphasis issue.''' You will want to read the above sections on how audio is handled, and figure out where your issue is.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If using PL you have to account for that deviation, unless you filter it out with your IFR (test set). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That's it!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Optionally, if you are using the built-in &amp;quot;offline repeat&amp;quot; functions, fail the connection to the host Asterisk server, and make sure your repeat audio performs the same as above.&lt;br /&gt;
&lt;br /&gt;
==== Resolution issues when setting levels using built VOTER boards ====&lt;br /&gt;
Sometimes, depending on what radio is being used getting a good enough resolution with R61 when setting levels is a problem. You move a small amount on the pot and it jumps several hundred KHz of deviation. Inserting a 4:1 voltage divider between the VOTER board and transmitter helps with this. Something such as a 1K and 330 ohm resistor will work. This allows for much finer adjustment on the transmit audio (R61).&lt;br /&gt;
&lt;br /&gt;
==Crappy Transmit Audio==&lt;br /&gt;
&lt;br /&gt;
Does your repeated audio sounded really bassy, muffled, and not very understandable? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There was a situation where, compared to a typical simplex radio-to-radio transmission, the audio through the repeater (RTCM and Asterisk) was unacceptable. What was discovered was that the RTCM has an internal pre-emphasis function that was disabled. The user had intentionally disabled &amp;quot;txctcss&amp;quot; and &amp;quot;txctcsslevel&amp;quot; in voter.conf because he didn't &lt;br /&gt;
want the RTCM transmitting CTCSS (the Quantar was doing that already). He ultimately found a post on the mail list explaining the settings above that said enabling txctcss = some valid tone (114.8 in his case) and setting txctcsslevel = 0 would turn on the pre-emphasis function in the RTCM without transmitting CTCSS tones. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
He did, and it worked like a charm! Audio now had more treble and was less bassy/muffled. So, future RTCM users, be sure not to comment out txctcss and txctcsslevel in voter.conf!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just enable and set the level to 0. You'll thank me later. &lt;br /&gt;
&lt;br /&gt;
== Pulse Noise on Transmit Audio ==&lt;br /&gt;
It has been noticed sometimes on built VOTER boards that it has low level DAC noise which sometimes is apparent as a pulsing noise on the audio output. Adding a 4:1 voltage divider inline between the transmitter and VOTER board helps reduce or eliminate this as described above in Level setting. &lt;br /&gt;
&lt;br /&gt;
=GPS=&lt;br /&gt;
The RTCM/VOTER will work with most GPS available. It requires either NMEA or Trimble TSIP binary data. It only receives data '''from''' the GPS (GPS TX), it does not send anything '''to''' the GPS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The firmware is specifically written to talk to Trimble Thunderbolt receivers using Trimble's TSIP binary data interface, however, other Trimbles GPS receivers that talk TSIP are generally compatible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==RTCM GPS Connections==&lt;br /&gt;
There are some quirks specific to the RTCM that are not well documented.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The GPS connections for the RTCM are on the DB15 connector. Note that the labels for GTX and GRX are misleading. GTX is the data '''FROM''' the GPS '''TO''' the RTCM (GPS TX/RTCM RX). GRX is data from the RTCM to the GPS, but that is currently not used, so it does not need to be connected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PPS is obvious, that is your PPS signal from your GPS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also note, inside the RTCM, there are jumpers to set for TTL or RS-232 data, depending on the type of GPS you are connecting. Set them accordingly. The RS-232 setting loops the data through a MAX3232 converter on the board.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You will still need to set the data and PPS polarity, and baud rate in the configuration menus to get everything to work.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==NMEA Sentences==&lt;br /&gt;
If you are using an NMEA GPS (as opposed to a Trimble using the TSIP binary interface), the RTCM/VOTER is looking for the following NMEA sentences:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$GPGGA&lt;br /&gt;
$GPGSV&lt;br /&gt;
$GPRMC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Lock==&lt;br /&gt;
The GPS led will go solid regardless of the connection LED. That '''has''' to happen or it won't connect to the Asterisk server. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is not unusual for it to take up to 20 mins to get a GPS lock LED (ie. using a Trimble Thunderbolt) after any reboot. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS De-sense==&lt;br /&gt;
If you are having odd loss of lock issues, consider you may have interference to your GPS antenna from strong RF nearby. A note from Jesse Lloyd:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I also had crazy problems with poor signal on my GPS when I set it up sitting in a window, and once installed at site I had the GPS antenna maybe 6 ft from the VHF antenna, and after some troubleshooting found it was getting swamped with RF and loosing lock. &lt;br /&gt;
&lt;br /&gt;
I found the debug setting of 32 useful in the RTCM, you can see a hex output of the GPS status.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Issues==&lt;br /&gt;
===Trimble Thunderbolt===&lt;br /&gt;
You may find your Trimble Thunderbolt is showing the incorrect date at the moment. It could be showing the year as 1997. This is due to the date in the Thunderbolt being reported incorrectly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''This can cause some of your voting receivers to not connect, if they are used with other GPS in your system.''' If you have '''ALL''' Thunderbolts, or '''NO''' Thunderbolts, you are probably fine. If you have '''ALL''' Thunderbolts, the date/time is probably wrong, but they will ALL be wrong, so they will connect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GPS Time is a continuous counting time scale beginning at the January 5, 1980 to January 6, 1980 midnight. It is split into two parts: a time of week measured in seconds from midnight Sat/Sun and a week number. The time of week is transmitted in an unambiguous manner by the satellites, but only the bottom 10 bits of the week number are transmitted. This means that a receiver will see a week number count that goes up steadily until it reaches 1023 after which it will “roll over” back to zero, before steadily going up again. Such a week rollover will occur approx. every 20 years. The last week rollover occurred in 1999 and the next one will be in 2019.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Thunderbolt manual states:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The ThunderBolt adjusts for this week rollover by adding 1024 to any week number reported by GPS which is less than week number 936 which began on December 14, 1997. With this technique, the ThunderBolt will provide an accurate translation of GPS week number and TOW to time and date until July 30, 2017.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As such, the Trimble Thunderbolt has a firmware issue with the GPS Week rollover that manifested itself on July 30, 2017, causing the date to become incorrect. The Thunderbolt thinks the week changed from 935 to 936 (actual week 1959-1024=935), so it stopped adding 1024 to the week.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We have added a brute-force fix starting in RTCM/VOTER firmware &amp;gt;=1.51. This fix adds 619315200 seconds (1024 weeks) to the time reported by the GPS. It fixes the Thunderbolts, we have not done extensive testing to see how it affects other TSIP receivers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Garmin===&lt;br /&gt;
====Garmin 18x LVC Wiring Issues====&lt;br /&gt;
If you have issues with your GPS 18x LVC not talking to the RTCM/VOTER, it may not be hooked up to the RTCM correctly. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Garmin pin labeling is backwards to what you may think. See below. You probably need to swap pins 6 and 14.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RTCM   	                 GPS 18x LVC      &lt;br /&gt;
6 GRX 	&amp;lt;-- Rx Data 	 6 Green  &lt;br /&gt;
7 GPPS 	&amp;lt;-- Pulse Output 1 Yellow  &lt;br /&gt;
8 GND   Ground 		 3 Black  &lt;br /&gt;
8 GND   Ground 		 5 Black  &lt;br /&gt;
13 +5V 	--&amp;gt;Vin 		 2 Red  &lt;br /&gt;
14 GTX 	--&amp;gt; TX Data 	 4 White&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log into the RTCM and do 98 and you should see something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Current Time: Sun  Apr 20, 2014  04:37:02.820&lt;br /&gt;
Last Rx Pkt System time: 04/20/2014 03:55:35.580, diff: 2487260 msec&lt;br /&gt;
Last Rx Pkt Timestamp time: 04/20/2014 03:55:32.064, diff: 3515 msec&lt;br /&gt;
Last Rx Pkt index: 160, inbounds: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Garmin and the RTCM====&lt;br /&gt;
Beware when buying newer Garmin GPS's to use with the Micro-Node RTCM.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The RTCM expects a 5V PPS signal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Newer Garmin's (GPS 18X, 18X LVC, etc.) MAY NOT output 5V, and can cause issues. '''Check the Garmin datasheet'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER is designed to accept both 3.3V or 5V signals, and ''should'' work fine.&lt;br /&gt;
&lt;br /&gt;
* Some of the Garmin GPS's come with 4800 baud set as default. If you are getting a &amp;quot;Warning: GPS Data time period elapsed&amp;quot; error on your RTCM, change both the GPS and RTCM to use 9600 baud. To do this, interface the GPS to a DB9 connector as per page 8 of the [http://wiki.allstarlink.org/w/images/4/41/GPS_18x_Tech_Specs.pdf manual] (remembering to ONLY use 5V as the power source *facepalm*). Once done, download, extract and open [http://www8.garmin.com/support/download_details.jsp?id=4053 SNSRXCFG_330.exe] and run.&lt;br /&gt;
# Select your GPS (in most cases GPS 18x PC/LVC). Press F10 to switch to NMEA mode (Config &amp;gt; Switch to NMEA Mode)&lt;br /&gt;
# Select Config &amp;gt; Setup and choose the COM port your GPS is connected too. Leave baud rate as auto for now, OK.&lt;br /&gt;
# Select Comm &amp;gt; Connect to connect to the GPS. &lt;br /&gt;
# Go to Config &amp;gt; Get Configuration from GPS to download it's current configuration&lt;br /&gt;
# Click File &amp;gt; Save to save the current configuration&lt;br /&gt;
# In Config &amp;gt; Sensor Configuration change the Baud Rate to 9600. You can also check to make sure 1PPS is enabled here too. Click OK. &lt;br /&gt;
# Hitting F7 when in the main window of the software also brings up the GPS sentences to output if that is of interest.&lt;br /&gt;
# File &amp;gt; Save to a different file than step 5. &lt;br /&gt;
# Press F9 or Config &amp;gt; Send Configuration to GPS. This will then send all the changes you made to the GPS unit (including baud rate so a reconnect may be needed)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===uBlox GPS===&lt;br /&gt;
You can use uBlox GPS modules with the VOTER/RTCM. The ones readily available usually have a 5 pin header on them (5V, GND, TXD, RXD, PPS), as well as an integrated patch antenna, and a SMA connector for an external antenna.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Data is TTL, so make sure to set the jumpers inside the RTCM for TTL data. Baud rate is 9600 by default, and uses NMEA. Set those accordingly in the configuration menu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The RTCM and VOTER require different settings for data and PPS polarity. The VOTER wants '''inverted''' for both, and the RTCM wants '''non-inverted''' for both.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Make sure to save (99) and reboot (r) your VOTER/RTCM after making changes for them to be effective.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==No GPS/Mixed Mode==&lt;br /&gt;
You do not need a timing source to use an RTCM if you don’t want to vote. That’s called Mix Mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Having the PPS Polarity set to 2 tells the RTCM you do not have a GPS. That forces the RTCM to become a mix (non-voting) client. Turn it on, save it, and restart. A simple voter.conf would look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[general]&lt;br /&gt;
port = 667&lt;br /&gt;
password = BLAH&lt;br /&gt;
&lt;br /&gt;
[1000]&lt;br /&gt;
Site1 = pswrd1,master,transmit&lt;br /&gt;
Site2 = pswrd2,transmit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mixed Client Error==&lt;br /&gt;
&amp;quot;I am getting this error in Asterisk&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WARNING[2368]: chan_voter.c:4511 voter_reader: Voter client master timing source mobile1 attempting to authenticate as mix client!!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A mixed client error means the voter.conf file is expecting an RTCM to try and connect with a GPS IP packet (ie. has '''master''' in it in voter.conf), but the RTCM isn't &lt;br /&gt;
sending a GPS IP packet. So its a mismatch between voter.conf and Option 10 in the RTCM. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to use a mix client (non-voted), make sure that receiver's configuration line in voter.conf '''does not''' have the '''master''' option set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mix Clients with Voted Client Issues==&lt;br /&gt;
&lt;br /&gt;
Situation...&lt;br /&gt;
&amp;quot;I have a private node with 6 voted receivers using RTCMs. I'd like to add a 7th RTCM to this node that is always mixed in rather than voted. I'm able to make this RTCM work as a 7th voted receiver with no problem. Everything I've read seems to indicate that if I change GPS PPS polarity to &amp;quot;none&amp;quot; this will achieve my desired results, however I am unable to get audio out of my transmit RTCM from this 7th site. It does change color to cyan in Allmon indicating it is non voted input but I do not get any indication or audio when that units COR goes active.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Setting voter debug level 3 in Asterisk and I'm seeing the following message repeatedly scrolling by in a blur when the mix client detects COR (COR is active). Sequence numbers are continually incrementing by 1. I'm running software version 1.47 on all my clients:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mix client (Mulaw) my_client index:0 their seq:629 our seq:629&lt;br /&gt;
mix client my_client outa bounds, resetting!!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have a similar situation to the above... check your buflen in voter.conf. Make sure it is at &amp;gt;=160 and see if that fixes it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Debug==&lt;br /&gt;
To turn on GPS Debugging, set the Debug Option Level in the RTCM/VOTER to 32.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [[#Debug Options]] levels for more information on how this works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Trimble Debug Status Decoding==&lt;br /&gt;
The VOTER/RTCM when in TSIP mode (Trimble), assumes it is a Trimble Thunderbolt and is looking for two packets:&lt;br /&gt;
*0x8F-AB - Primary Timing Packet&lt;br /&gt;
*0x8F-AC - Supplemental Timing Packet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Grab a copy of the Thunderbolt User Guide: http://leapsecond.com/pages/tbolt/Thunderbolt-2012-02.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pages 78-83 are the important ones.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Packet 0x8F-AB is what grabs the timing information, and packet 0x8F-AC is what it looks at for everything else (including debug).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The debug string that the VOTER/RTCM reports:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	printf(&amp;quot;GPS-DEBUG: TSIP: ok %d, 9 - 14: %02x %02x %02x %02x %02x %02x\n&amp;quot;,&lt;br /&gt;
					happy,gps_buf[9],gps_buf[10],gps_buf[11],gps_buf[12],gps_buf[13],gps_buf[14]);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, the 1 after ok is the &amp;quot;happy gps&amp;quot; flag. The other 5 bytes are supposed to be bytes 9-14 from the packet... sort of. They are bytes 9-14 of the buffer, but they are actually bytes 8-13 of the binary message.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Looking at the message structure, bytes 8-13 are:&lt;br /&gt;
*8-9 Critical Alarms&lt;br /&gt;
*10-11 Minor Alarms&lt;br /&gt;
*12 GPS Decoding Status&lt;br /&gt;
*13 Disciplining Activity&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Therefore, the messages you are seeing break down as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GPS-DEBUG: TSIP: ok 1, 9 - 14: 00 00 00 00 00 00 - everything is good in the 'hood, Doing Fixes, Phase Locking&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 18 08 06 - not happy, Not Tracking Satellites, Not Disciplining Oscillator (0x18 --&amp;gt; 0b000000011000), No Usable Sats, Inactive&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 08 08 05 - not happy, Not Tracking Satellites, No Useable Sats, Compensating OXCO (holdover)&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 00 00 05 - not happy, Compensating OXCO (holdover)&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 1, 9 - 14: 00 00 00 00 00 08 - happy, Recovery Mode&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 00 00 04 - not happy, Initializing Loop Filter&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The GPS is flagged as NOT HAPPY in TSIP mode if ANY of the following are TRUE:&lt;br /&gt;
*If GPS Decoding Status is anything other than &amp;quot;Doing Fixes&amp;quot;.&lt;br /&gt;
*If Disciplining Activity is not Phase Locking or Recovery Mode.&lt;br /&gt;
*Any Critical Alarms.&lt;br /&gt;
*Any Minor Alarms.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ubiquity ToS=&lt;br /&gt;
See https://help.ubnt.com/hc/en-us/articles/205231750-airMAX-How-is-QoS-and-prioritization-handled-by-airMAX-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, if we set ToS/DSCP in the header to C0, then Ubiquity (and other gear watching ToS) ''should'' prioritize the packets. This sets the DSCP to 110 000 aka 48. UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS latency). Other sources show this as a Network Control TOS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is an option in voter.conf to turn this on (utos=y). However, this only controls packets being sent from Asterisk '''TO''' the RTCM. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to tag packets from the RTCM '''TO''' Asterisk, you need to set the RTCM debug option level to 16 (see [[#Debug Options]] for how this works).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At some point we should probably change the default behaviour of the RTCM firmware to mark the packets and use the debug setting to '''disable''' ToS. That change (if you wanted to compile your own firmware) would be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Change line 90 in IP.c&lt;br /&gt;
&lt;br /&gt;
From:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? 0xc0 : (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY))&lt;br /&gt;
&lt;br /&gt;
To:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY) : 0xc0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This changes the conditional expression from if the debug level is 16 to mark the packets with DSCP 48 to if the debug level is 16, mark the packets routine (DSCP 0).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM Simulcasting=&lt;br /&gt;
The RTCM/VOTER boards do support simulcasting, however, there are a bunch of quirks that one needs to be aware of.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Radio Hardware==&lt;br /&gt;
For best results, you should use all identical RF equipment between your voting RX sites and simulcast TX sites. If you don't, you can end up with strange audio artifacts when different receivers are used, and other strange audio issues when different transmitters are used. The most important thing when setting your levels is that ALL the RX and TX levels match from radio to radio. The best way this is achieved is using a &amp;quot;master&amp;quot; radio and reference from that - all radios might be identical models, but may not have identical audio characteristics so check those levels! Also check CTCSS and audio levels separately to make sure they all match.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==9.6MHz Oscillator==&lt;br /&gt;
If you want reliable simulcast with an acceptable level of overlap warble, you MUST inject a GPS-disciplined or OXCO 9.6MHz signal to the clock of the RTCM's, in lieu of their stock internal crystal. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Otherwise, the inherent internal clock jitter of the RTCM's will cause CTCSS warble, etc. in areas where your transmitters overlap. The 1 PPS feed that you normally feed the RTCM's is acceptable for voting, but naturally, a typical crystal-driven clock will slightly drift in between the pulses every second due to inherent jitter, etc., and that ain't to good for situations like simulcast which demand sample-accurate performance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are some comments from Joe, KC2IRV, on the subject. He has also created his own wiki, specific to simulcast issues, you can find it at: http://rtcmsimulcast.wikifoundry.com/ &lt;br /&gt;
&lt;br /&gt;
:I felt I needed to let those on this mailing list know my findings with simulcasting with the RTCM units since I have received a great deal of help and information from people on this list.&lt;br /&gt;
&lt;br /&gt;
:For the past week I have had a two (2) site simulcast system up and running on UHF using the RTCM units. I have done a great deal of testing and proving on the bench and it is so far working beautifully. &lt;br /&gt;
&lt;br /&gt;
:The one issue that was made apparent to me early on was that in order for the RTCM's to be suitable for simulcast, the processor inside it needed to be clocked to a more accurate source. This source is supposed to be the Programmable Clock Generator Module in order to produce a GPS locked 9.6 MHz reference for the processor. Unfortunately this unit is not currently available.&lt;br /&gt;
&lt;br /&gt;
:Knowing this, I started to go down the road of possibly designing my own, but stumbled upon a cheap, plentiful supply of Symmetricom 9.6 MHz sinewave OCXO's. I took a chance and ordered a few to experiment with to see if the RTCM would be able to use this in place of the supplied crystal for a clock. I found they did, with that I decided to modify the RTCM with an SMA connector just above the audio adjustment pots and use this OCXO. I trimmed the frequency on the units to match each other and used them to produce the processor clock.&lt;br /&gt;
&lt;br /&gt;
:After a week of testing, I have found the results in the overlap areas to be exactly as I would expect them on a public safety/commercial simulcast system. While in an overlap region where both transmitters are within 3dB of one another, to the ear you hear no audio phase wandering. Of course , this has only been a week of testing so I wouldn't call it case closed yet.&lt;br /&gt;
&lt;br /&gt;
:I will say that if this system remains this way after testing for 6 months to a year than using a 9.6 MHz OXCO is a viable alternative to achieve the needed precision and accuracy needed for the processor clock to make it suitable for simulcast.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Comments from Jim Dixon on the issue:&lt;br /&gt;
&lt;br /&gt;
:You have to use '''something''' that will take the precise 10MHz (or whatever it is) from the GPSDO and PLL (phase-locked) convert it to 9.6MHz (square wave at 3.3V for the CPU clock).&lt;br /&gt;
&lt;br /&gt;
:We had to use 9.6MHz mainly because of the DAC in the dsPIC instead of 10MHz. The options for various divide/clock radios in the part are RATHER limited. As I recall, there wasn't even a way of getting the necessary 16kb/s sample rate on the ADC from 10MHZ, either.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Micro-Node RTCM Clock Issue=&lt;br /&gt;
James, KI0KN, had some strange-ness with some of his RTCM's when used for voting. As soon as he changed menu item 10 on the RTCM to either a (1) or a (0) instead of (2), he '''instantly''' got this on the RTCM console:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
04/05/2016 18:44:13.660  Lost GPS Time synchronization&lt;br /&gt;
04/05/2016 18:44:13.660  Host Connection Lost (Pri) (10.16.1.240)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And it sits there forever and never re-establishes connection to the host. The issue was finally traced to a bad batch of 9.6MHz crystals that affected a small run of the RTCM's. The issue was eventually resolved by Micro-Node, but we'll document it here just for record keeping.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
James comments to the list:&lt;br /&gt;
&lt;br /&gt;
:Well, after many of you offered your time and thoughts on my voter problem, Jim, WB6NIL, graciously donated a couple of hours of his time to remotely help me and he uncovered the problem.&lt;br /&gt;
&lt;br /&gt;
:All 5 of my RTCMs were purchased within the last 6 months, and I suspect all 5 have the same problem (will verify that today). The problem is that the microprocessor crystal is running too fast! There is 9.6Mhz crystal that drives the MPU, on the particular unit that Jim helped me diagnose, it's running 2.5 khz too fast.  &lt;br /&gt;
&lt;br /&gt;
:There is a sanity check in the firmware that makes sure the correct number of samples were taken in the last second (it's supposed to be 8000) and fails if the sample is incorrectly sized (mine is taking 8003 samples).  Jim helped adjust the code to be more tolerant of the sampling error and my whole system instantly worked.&lt;br /&gt;
&lt;br /&gt;
:I have since tested it with ALL my GPSs (they all work great!). So I now have everything working, including the voting.&lt;br /&gt;
&lt;br /&gt;
:I haven't contact Micro-Node about it yet. Jim told me that voting should work fine but this clock error would probably not be acceptable for Simulcast (something we have no plans on doing as of now). Since mine are deployed at mountain top sites, I'll probably pursue a crystal that is running at the correct frequency and use &amp;quot;standard&amp;quot; firmware so that if the decision is ever made to play with simulcast, I won't be right back in this same boat.&lt;br /&gt;
&lt;br /&gt;
:Thanks to all that helped out, and a HUGE thanks to Jim for taking the time to troubleshoot this.&lt;br /&gt;
&lt;br /&gt;
:BTW- This clock error will NOT effect the RTCM in mix client mode, it only affects it in voting or simulcast mode!&lt;br /&gt;
&lt;br /&gt;
:In voter.c, the stock line is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if ((samplecnt &amp;gt;= 7999) &amp;amp;&amp;amp; (samplecnt &amp;lt;= 8001))&lt;br /&gt;
&lt;br /&gt;
it needs to be changed to something like:&lt;br /&gt;
&lt;br /&gt;
if ((samplecnt &amp;gt;= 7999) &amp;amp;&amp;amp; (samplecnt &amp;lt;= 8003 ))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:That was just enough to make my first RTCM work. I've had a chance now to check a few more of my RTCMs on the bench this morning and the crystal frequencies are kind of all over.  The next one I had on the bench was 5.2Khz fast. The above code was still not enough to fix it (as would be expected) so it looks like the quality control on whatever manufacturer that crystal is, isn't very good (or a low tolerance crystal is being used). I am going to pursue crystal replacement to get a highly accurate, stable, on-frequency crystal in there as my first choice. Changing the firmware 5 different times doesn't seem like the right answer.&lt;br /&gt;
&lt;br /&gt;
:Jim put that sanity check in there for a reason. Working around it '''may''' allow the device to work, but to me, it seems getting the hardware operating the way it was supposed to originally is the better answer. I will follow up with Micro-node and let you all know how it goes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After following up with Micro-Node:&lt;br /&gt;
:They were all off, some were off a LOT. I talked to Mark @ Micronode. He told me there were 25 units that made it out the door with a crystal from an unapproved source and that was quite likely the reason for the problem. He gladly sent me 5 new crystals to replace (he offered to replace them himself if I sent the units in, but I am comfortable doing it myself to save the time and postage). &lt;br /&gt;
&lt;br /&gt;
:I haven't received them in the mail yet to show that the problem is fixed, but I will post here when that happens. He was great to work with and had no issue getting things set straight. If you are having the same issue and your RTCMs were bought about the same time, I'd suggest you contact him and have him help you resolve the issue!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Duplex Mode 3=&lt;br /&gt;
Does delayed repeat audio bug you? Tired of hearing a bit of yourself after you unkey? Wish you could talk full duplex? Hate the echo chamber effect? Then we have the answer for you.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Duplex Mode 3 in app_rpt allows for &amp;quot;in-cabinet repeat&amp;quot; (where the radio hardware provides repeat audio) and app_rpt adds the hang time, courtesy tones, linking - all the &lt;br /&gt;
things apt_rpt does sans repeat audio. Therefore no repeat audio delay. Cool, eh? This duplex mode has been in app_rpt for a while. Problem has been how to implement it in the RTCM environment. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Duplex Mode 3 support in the RTCM provides in-cabinet repeat functionality. Repeat audio loops through the RTCM and has almost zero delay because it does not have to traverse the network. The delay is not quite zero but it's plenty short enough to eliminate all of the above mentioned annoyances. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Of course Duplex Mode 3 support can't be used with voting or simulcast. You also loose Touch Tone muting, Time Out Timer and Repeater Disable functions because the repeat path is not through app_rpt.&lt;br /&gt;
&lt;br /&gt;
= Setting Voter Buffers =&lt;br /&gt;
Voter ping is useful for end-to-end network evaluation when ICMP ping is turned off and/or the RTCM is behind a firewall and is not ICMP reachable. It can also help with finding the correct RTCM and voter.conf buffer settings.&lt;br /&gt;
&lt;br /&gt;
=== Voter Ping Usage ===&lt;br /&gt;
The voter ping asterisk CLI syntax is:&lt;br /&gt;
 *CLI&amp;gt;voter ping nameOfClient [packetCount]&lt;br /&gt;
If packetCount is not specified 8 pings will be sent. Use packetCount of 0 to stop an in progress voter ping. Set packetCount to at least 100 when evaluating link quality.&lt;br /&gt;
&lt;br /&gt;
The result will be similar to:&lt;br /&gt;
 ...&lt;br /&gt;
 PING (nameOfClient): Packets tx: 100, rx: 100, oos: 0, Avg.: 26.710 ms&lt;br /&gt;
 PING (nameOfClient):  Worst: 38 ms, Best: 22 ms, 100.0% Packets successfully received (0.0% loss)&lt;br /&gt;
The output above is self evident except for oos which is a count of out of sequence packets. Voter ping requires RTCM firmware 1.23 or newer and chan_voter 2013-08-04 or newer.&lt;br /&gt;
&lt;br /&gt;
=== RX Buffer Size ===&lt;br /&gt;
Ping all the receiver sites and look for the worst response of the worst client. As a rough rule of thumb the buflen setting in voter.conf should be set to the worst response + 40ms or 120 whichever is greater. Using the above case the buflen should be set to 120 (38+40&lt;br /&gt;
&lt;br /&gt;
=== TX Buffer Size ===&lt;br /&gt;
Ping all the transmitter sites and look for the worst response of the worst client. The RTCM TX Buffer Length should be set to (worst response + 40ms) * 8 or 480 whichever is greater. Using the above case the RTCM TX Buffer Length should be set to 624 ((38+40)*8).&lt;br /&gt;
&lt;br /&gt;
=== Assumptions ===&lt;br /&gt;
* The minimum TX buffer size is 480 (60ms) and the minimum RX buffer is 120ms. These were derived by testing on a LAN segment with chan_voter 2013-08-04 and RTCM 1.26.&lt;br /&gt;
* The ping times are not round trip times but they are in fact round trip times. Therefore the worst response could (should?) be divided by 2. Ie RX buffer = 38/2+40=59 and TX buffer = (38/2 + 40) * 8 = 472. Minimums still apply.&lt;br /&gt;
* The internet path to and from the RTCM under test is symmetrical.&lt;br /&gt;
* The added 40ms pad is an estimate of buffer ingress and egress.&lt;br /&gt;
As always your milage may vary. Some trial and error may be required to find the optimum settings.&lt;br /&gt;
&lt;br /&gt;
=== Setup ===&lt;br /&gt;
The RX buffer is set with buflen=120 in /etc/asterisk/voter.conf. The value is in milliseconds. The TX buffer is set in the RTCM with menu item 7. The value is in 125 microsecond increments. To match the size of the TX to the RX buffer, use the RX buffer * 8 to get the TX buffer size.&lt;br /&gt;
[[Category:How to]]&lt;br /&gt;
[[Category:Node Configuration]]&lt;/div&gt;</summary>
		<author><name>Ve7fet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pttlink.org/index.php?title=Quantar_RTCM&amp;diff=1864</id>
		<title>Quantar RTCM</title>
		<link rel="alternate" type="text/html" href="https://wiki.pttlink.org/index.php?title=Quantar_RTCM&amp;diff=1864"/>
		<updated>2020-06-27T20:26:05Z</updated>

		<summary type="html">&lt;p&gt;Ve7fet: Created Quantar RTCM page with detailed configuration information.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page discusses interfacing the Motorola Quantar to the RTCM/VOTER interface, for use with AllStar.&lt;br /&gt;
&lt;br /&gt;
=Background=&lt;br /&gt;
This page should get you up and running with how to connect an RTCM to a Motorola Quantar (Quantro should be similar). These are just the basic configuration steps, based on the following scenario:&lt;br /&gt;
&lt;br /&gt;
*Analog repeater&lt;br /&gt;
*Receive Carrier Squelch (with AllStar generating a TX-only PL)&lt;br /&gt;
*Main repeater in a voting system&lt;br /&gt;
*Supporting &amp;quot;offline&amp;quot; repeater mode&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Supporting Documentation=&lt;br /&gt;
&lt;br /&gt;
The following links are useful for reference:&lt;br /&gt;
&lt;br /&gt;
*[https://wiki.w9cr.net/index.php/Quantar W9CR Quantar Site] Bryan has a LOT of useful and relevant info on his page including manuals and firmware&lt;br /&gt;
*[http://www.repeater-builder.com/motorola/quantar/quantar-index.html Repeater Builder Quantar Site] Go here for additional documentation&lt;br /&gt;
*[[RTCM_Client | RTCM]] The RTCM page on this site&lt;br /&gt;
*[[Radio_Connections#Quantar | Quantar Connections]] The Quantar section on this site&lt;br /&gt;
*[[Media:QUANTAR-RTCM INTERFACE CABLE.pdf|Quantar/RTCM Interface Cable]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Firmware=&lt;br /&gt;
==Quantar Firmware==&lt;br /&gt;
You will want to have newer (ie R020.014.048) firmware in the Station Control Module (SCM). Head on over to [https://wiki.w9cr.net/index.php/Quantar Bryan's site] to download the firmware files. You will also want to get the RSS manual and Service Manual when you are there. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Upgrade the firmware in your SCM and Wireline module, using the instructions in your RSS manual. You should end up with something like this when you go look at the versions screen in the RSS:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Station Control Firmware	R020.14.048&lt;br /&gt;
Station Wireline Firmware	R020.14.003&lt;br /&gt;
Station Exciter Firmware	R020.09.018&lt;br /&gt;
Station Boot2 Firmware		R020.14.015&lt;br /&gt;
Station Boot1 Firmware		R020.09.011&lt;br /&gt;
Codeplug Version		14&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note, you will want to update your codeplug too, that is under the Tools --&amp;gt; Codeplug Upgrade menu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The firmware in the Exciter is not automatically upgraded. You will need to do that by burning a 27C512 EPROM, popping the cover off the exciter, and swapping the chip out. You DO want to do this, as there are a number of fixes in later firmware (apparently), especially if you plan on running P25 mixed mode at some point later.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==RTCM Firmware==&lt;br /&gt;
The Quantar is special in that the &amp;quot;discriminator&amp;quot; audio isn't really conventional analog discriminator audio as you would normally find in any other radio. The true discriminator audio is filtered through a 6kHz LPF filter, digitized, and then moved around the backplane buss to different cards.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The RTCM traditionally uses high frequency (above the passband) discriminator audio to do it's RSSI calculations. Since the audio response is limited to &amp;lt;6kHz on the Quantar, this presents a challenge. To combat this, additional code was added to the RTCM firmware called the &amp;quot;DSP/BEW&amp;quot; option. Read about it more on the [[RTCM_Client | RTCM]] page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Regardless, you will need to upgrade the firmware in your RTCM (it likely comes with vanilla V1.50 firmware), to use one of the versions with DSP/BEW. Note that due to space constraints, the DSP/BEW firmware is mutually exclusive with the Diagnostics Mode in the RTCM (not enough room for both).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You will also likely want to install the version with &amp;quot;Chuck&amp;quot; squelch... this is really a buffer overflow fix that makes the squelch reporting behave a bit better.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The RTCM needs the &amp;quot;smt&amp;quot; version files, the VOTER uses the non-smt version files.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Firmware is available at [https://github.com/AllStarLink/voter/tree/master/board-firmware Github]. Instructions and the other utility needed are all listed on the [[RTCM_Client | RTCM]] page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Wiring/Connections=&lt;br /&gt;
A good primer on the connections available on the backplane can be found over on [http://www.repeater-builder.com/motorola/quantar/q-interfacing/quantar-interfacing.html Repeater Builder], or dig through the various manuals.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is best to use the &amp;quot;Telco&amp;quot; connector, J17, to make the interface cable. This requires a 50-pin MALE Amphenol connector and 90 degree hood. Carefully solder the connections if you have to, or find your local communications installer buddy with an Amphenol &amp;quot;butterfly&amp;quot; tool to crimp one for you. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A good cable to use is this one:&lt;br /&gt;
[[Media:QUANTAR-RTCM INTERFACE CABLE.pdf|Quantar/RTCM Interface Cable]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are a couple minor notes when using this cable. The connection to Pins 26/27 are not required (those are Line 1- and Line 2-, which aren't used), instead, connect Pin 43 (RDSTAT-) to Pin 32 (GND).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In reality, if you are using the RTCM to do squelch (which you should be), then the RDSTAT connection isn't even necessary.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Build the necessary breakout cable for the DB15 to split out the serial console, and the connections to your GPS. Note that you will need to configure JP4 and JP5 inside the RTCM for TTL/RS-232, as required. '''Be aware''' the label on the RTCM is misleading, you want to use the GTX Pin (14) for data '''from''' your GPS '''to''' the RTCM. The GRX (data '''from''' the RTCM '''to''' the GPS is not required, as it is not used).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Quantar Audio=&lt;br /&gt;
The biggest headache in the Quantar is audio.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As mentioned above, you don't get &amp;quot;true&amp;quot; discriminator audio out of the shelf, but you do get a reasonable facsimile.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you go dig DEEP in the Quantar Digital-Capable Station Instruction manual, p/n 6881095E05, (on [http://www.repeater-builder.com/motorola/quantar/quantar-index.html Repeater Builder]), and dive in to [http://www.repeater-builder.com/motorola/quantar/qim/part-14-station-configuration.pdf Part 14 - Station Configuration], you will find a section called &amp;quot;Fast Keyup Feature&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is where it talks about using Pins 5 and 30 on J17 to get audio in and out of the station, using the &amp;quot;Splatter Filter Connection Configuration&amp;quot;. It also talks about using Pin 23 on the MRTI connector for PTT, but ignore that, we'll use the EXT PTT input on J17 instead.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that the actual &amp;quot;Fast Keyup&amp;quot; feature only shows up in the RSS if you enable WildCard=Enhanced, then it shows up on the RF Configuration screen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The audio that shows up on J17 30, J14 7, and J14 22 is all the same. They are also all gated audio. You can't get un-squelched (ie open discriminator) audio unless you either configure the station for Un-squelched Audio on the Channel Information screen, or program the WildCard. Also know that if the WildCard is not programmed, you will not get ANY audio out on the back, unless you turn on the Phone Patch option.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We are going to do all the pre-emphasis and de-emphasis in the RTCM/AllStar, so we want to make sure to disable any audio filtering on the channel inside the Quantar. If you don't your audio is going to sound like garbage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Important Audio RSS Settings==&lt;br /&gt;
The following settings are needed to make the audio behave the way we want:&lt;br /&gt;
&lt;br /&gt;
'''Hardware Configuration Screen'''&lt;br /&gt;
*Wireline: 8-wire&lt;br /&gt;
*WildCard: Enhanced&lt;br /&gt;
*Phone Patch Interface: Disabled&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Channel Information Basic'''&lt;br /&gt;
*Analog RX Activation: S=Carrier Sql.&lt;br /&gt;
*Analog Rptr Activation: OFF&lt;br /&gt;
*Analog Rptr Hold-In: OFF&lt;br /&gt;
*Analog Rptr Access: NONE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Channel Information Advanced'''&lt;br /&gt;
*Pre-emphasis: DISABLED&lt;br /&gt;
*De-emphasis: DISABLED&lt;br /&gt;
*High-Pass Filter: DISABLED&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''RF Configuration'''&lt;br /&gt;
Repeater Operation: BASE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==WildCard Programming==&lt;br /&gt;
This is how you actually get the audio and logic to work. Without this, you can get audio out of the shelf using other configurations, but you can't key or or get modulation in.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The WildCard Input and Output screens should be fine at defaults. Just make sure that Aux Input 9 is set for LO (this is our PTT).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The important configuration is in the WildCard Tables.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Delete any existing WildCard Tables, you are going to create two new ones. Configure them as shown below:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is the important one to actually turn on the discriminator audio output on the backplane when the station boots/reboots:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Description: DISC AUDIO ON&lt;br /&gt;
State: COLD RESET Cond: OR State: WARM RESET&lt;br /&gt;
Action: RXDSC-AUXRX-ON&lt;br /&gt;
Inaction: NULL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is how we allow external PTT, and gate the AUX TX audio from Pin 5 to the Exciter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Description: TX AUDIO&lt;br /&gt;
State: INPUT 9&lt;br /&gt;
Action: DEKEY FROM WL; AUXTX-TX OFF&lt;br /&gt;
Inaction: KEY FROM WL; AUXTX-TX ON&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=AllStar (Asterisk) Configuration=&lt;br /&gt;
The RTCM/VOTER connect to AllStar (Asterisk) using the voter channel driver. Make sure you have that set up in rpt.conf, something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rxchannel=voter/&amp;lt;nodenumber&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The rest of the configuration is done in voter.conf. We won't go in to all the details on the options here, but will go through some basic settings to get on the air and levels lined up.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You are going to want to start with something basic in voter.conf like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[general]&lt;br /&gt;
port = 667&lt;br /&gt;
buflen = 500&lt;br /&gt;
password = mypass ; This is the HOST PASSWORD in the RTCM&lt;br /&gt;
utos = y ; Turns on TOS packet marking from AllStar TOWARDS the RTCM&lt;br /&gt;
&lt;br /&gt;
[1694] ; your node number, referenced by the channel driver in rpt.conf&lt;br /&gt;
MAIN_SITE = clientpass,transmit,master ; clientpass is the CLIENT PASSWORD in the RTCM&lt;br /&gt;
&lt;br /&gt;
plfilter = 0 ; leave off for now&lt;br /&gt;
txctcss = 100.0 ; set to your desired TRANSMIT PL tone, MUST set it to SOMETHING&lt;br /&gt;
txctcsslevel = 0 ; set to 0 for now, until audio alignment is done later&lt;br /&gt;
txtoctype = phase ; the type of &amp;quot;reverse burst&amp;quot; to send when de-keying&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That takes care of the basic settings required in AllStar. During the audio alignment, the txctcsslevel will be adjusted for the correct deviation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM/VOTER Configuration=&lt;br /&gt;
There is lots of stuff to configure in the RTCM too. You will want to establish a serial console connection (through the DB15), using 57600/8N1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Remember to Save Values to EEPROM (99) and Reboot (r) when you make changes, or you will have unpredictable results'''. Some changes are immediate, but many are not, and will confuse you when things you expect to happen, don't.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Start with the IP Parameters Menu. This should be all straight forward. This will get your RTCM on the network.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Back on the Main Menu, you will want to make sure your VOTER Server Address, Port, and Passwords are set. See the notes above about which password is which. You will also need to configure your GPS settings. Make sure to set the jumpers inside the RTCM for RS-232 or TTL, as needed. You may need to play with the GPS Serial Polarity and GPS PPS Polarity until you get data flowing. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you set the Debug Level to 32, you will know right away if you are getting GPS data in to the RTCM, as this setting will print the NMEA or TSIP strings being received. This is an immediate setting, no need to save and reboot. '''Set the Debug Level to 16 for normal operation, this marks the packets from the RTCM towards AllStar with TOS bits'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We want External CTCSS set to Ignore (this is where the RDSTAT would be connected, but we are not using that).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We want COR Type set to Normal. This is an important setting, as it also determines whether de-emphasis takes place, or not. See [[RTCM_Client#Receiver_De-emphasis|here]] for an explanation of how that works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We want DSP/BEW Mode set to 1 to enable it. See [[RTCM_Client#DSP.2FBEW_Firmware_Version|here]] for a reminder of what this is.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finally, we will configure the Offline Mode Parameters Menu. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We want to fail over to repeater mode, if we lose connection to the host, so set Offline Mode to 3.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CW &amp;quot;Offline&amp;quot; setting is what the RTCM will send when it goes in to offline mode, the repeater callsign should go here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Offline&amp;quot; (CW ID) Period Time is how often the repeater will ID in offline mode, set to 18000 to ID every 30 minutes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Set the Offline CTCSS Tone for 100.0Hz (or your desired TX PL tone). You will want this to be the same as you set in voter.conf.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Leave the Offline CTCSS Level, for now, it will be adjusted later.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Set the Offline De-Emphasis Override to 1 (OVERRIDE). 1 is the correct setting for this application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That should be it for software configuration, remember to save and reboot the RTCM.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For hardware settings, in the RTCM you will want to make sure that JP1 is IN and JP2 is OUT. When you do the squelch calibration, the RTCM should calibrate in about 4-6 blinks, instead of around 12. The Squelch Noise Gain Value should be around 43 (versus 93). JP3 can remain at 1-2, as there is plenty of audio drive by default.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Alignment=&lt;br /&gt;
This section is based on using an HP8920 (HP8921) for alignment. Other test sets will differ. You '''must''' use a test set to properly tune the system... no &amp;quot;doing it by ear&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Prerequisites==&lt;br /&gt;
With the configuration above, you should have GPS lock, and the RTCM should be connected to the AllStar Host.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You should have already tuned the pre-selector on the receiver in the station. If not, follow the instructions in the manuals. Pro tip, with the station powered on, look in to the receive port with your return loss bridge, and tune for a null (best match).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Do the squelch and diode calibration on the RTCM: &lt;br /&gt;
&lt;br /&gt;
*Ensure the station receive cable is disconnected&lt;br /&gt;
&lt;br /&gt;
*Turn on DIP switches 2 and 3 on the RTCM (down)&lt;br /&gt;
&lt;br /&gt;
*Reset the RTCM&lt;br /&gt;
&lt;br /&gt;
*Observe the RX LED blink slowly 4-6 times before going solid&lt;br /&gt;
&lt;br /&gt;
*Turn off DIP switches 2 and 3. The RTCM should reset. Confirm on the status screen (98) that the Squelch Noise Gain Value is around 43, and the Diode Cal. Value is around 39.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Set up your test set for Duplex Test.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Connect the RF IN/OUT to the Exciter output. Connect the Duplex Out to the Receiver input.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Duplex Screen Settings:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Tune Mode: Manual&lt;br /&gt;
Tune Freq: repeater TX frequency&lt;br /&gt;
Input Port: RF In&lt;br /&gt;
RF Gen Freq: repeater RX frequency&lt;br /&gt;
Amplitude: -80dBm (off)&lt;br /&gt;
Output Port: Dupl&lt;br /&gt;
AFGen1 Freq: 1kHz&lt;br /&gt;
AFGen1 To: FM 3.00kHz&lt;br /&gt;
AF Anl In: FM Demod&lt;br /&gt;
Filter 1: 50Hz HPF&lt;br /&gt;
Filter 2: 15kHz LPF&lt;br /&gt;
De-emphasis: 750uS&lt;br /&gt;
Detector: Pk+-Max&lt;br /&gt;
SINAD meter changed to AF Freq meter&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Confirm that when you turn on the RF Gen, the station keys, and you should get audio demodulating on the test set as audio goes through the AllStar host and back out. If not, troubleshoot your AllStar configuration, check your RSS settings, wiring, etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==AllStar (Asterisk) Alignment==&lt;br /&gt;
As mentioned above, we are starting by sending audio through the AllStar host. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Send 1kHz @ 3kHz on-channel in to the receiver&lt;br /&gt;
&lt;br /&gt;
*TX should key and audio should come back&lt;br /&gt;
&lt;br /&gt;
*Use Menu 97 in the RTCM to display audio level. Adjust the RX pot on the RTCM until the bar graph hits the 3kHz mark&lt;br /&gt;
&lt;br /&gt;
*Adjust the TX pot on the RTCM for 3kHz measured transmitter deviation on the test set&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sweep the AFGen1 Freq up and down from 1kHz, leaving the deviation at 3kHz, and observe that the transmitter deviation remains around 3kHz between 400-3kHz. The Quantar has pretty sharp filters, so you will see the deviation drop off below 400Hz (very sharply below 300Hz), and it will start to roll off slowly around 1.9kHz (measures around 2.7kHz deviation), but will drop sharply at 3kHz. If the deviation rolls off wildly, you have a setting wrong somewhere, either in the Channel Information in the RSS, or you didn't set the CTCSS tone and a level of 0 in voter.conf. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
De-key the station (turn off the RF Gen), and disconnect the GPS to force the RTCM in to offline mode. Temporarily set the CTCSS tone to 0.0Hz, save and reboot.&lt;br /&gt;
&lt;br /&gt;
*Turn on the RF Gen&lt;br /&gt;
&lt;br /&gt;
*Send 1kHz at 3kHz deviation in to the receiver&lt;br /&gt;
&lt;br /&gt;
*Confirm TX Deviation is still about 3kHz, tweak the TX pot if needed (or just leave it, it should be close)&lt;br /&gt;
&lt;br /&gt;
*Sweep the AFGen1 Freq up and down as above, and confirm relatively flat deviation of the TX from 400Hz-3kHz, as noted above.&lt;br /&gt;
&lt;br /&gt;
*Turn off AFGen1 modulation (set AFGen1 To to OFF)&lt;br /&gt;
&lt;br /&gt;
*Set Filter 1 to &amp;lt;20Hz HPF and Filter 2 to 300Hz LPF to filter on CTCSS only&lt;br /&gt;
&lt;br /&gt;
*Set CTCSS tone in RTCM to desired TX CTCSS tone, save and reboot if necessary&lt;br /&gt;
&lt;br /&gt;
*Adjust Offline CTCSS Level as needed to measure around 0.5kHz TX deviation on the test set&lt;br /&gt;
&lt;br /&gt;
*De-key the station, save and reboot the RTCM with the final setting&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lastly, we will set the PL deviation from the AllStar host. Restore the GPS connection to the RTCM, and ensure it locks and connects back to the host. The test set should still have the 1kHz modulation turned off, and filters set up to measure PL deviation.&lt;br /&gt;
&lt;br /&gt;
*Key the station&lt;br /&gt;
&lt;br /&gt;
*Set the txctcsslevel to around 55 (should have started at 0). Reload Asterisk to pick up the change&lt;br /&gt;
&lt;br /&gt;
*Measure TX deviation of the PL tone&lt;br /&gt;
&lt;br /&gt;
*Adjust txctcsslevel (and reload Asterisk) until around 0.5kHz TX deviation is measured on the test set&lt;br /&gt;
&lt;br /&gt;
*De-key the station&lt;br /&gt;
&lt;br /&gt;
*Turn on the plfilter option in voter.conf (if desired), to filter out user's PL tones, if they are transmitting one&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finally, with nothing connected to the receiver (or probably better, with the station antenna connected to pick up all the site noise), turn the SQL pot on the RTCM CCW until the squelch opens. Then, turn the pot about 5 turns CW to tighten the squelch. Adjust as desired from there, you can note the squelch level setting in the Status Menu (98).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Conclusion=&lt;br /&gt;
That should be it, you should now have a fully functioning RTCM/AllStar interface. Your audio should sound great, and you can customize from here.&lt;br /&gt;
&lt;br /&gt;
If you happen to be lucky enough to have Quantar Satellite Receivers, the process is pretty much the same, except you won't need to do any of the transmitter settings, nor the associated wiring. You really only need power and Aux RX Audio out of J17 to the RTCM.&lt;br /&gt;
&lt;br /&gt;
Once you get everything installed, the final thing you will need to do is configure all the buffer settings. See [[RTCM_Client#Setting_Voter_Buffers|setting buffers]] on the process to do that.&lt;/div&gt;</summary>
		<author><name>Ve7fet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=1863</id>
		<title>RTCM Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=1863"/>
		<updated>2020-06-27T16:08:38Z</updated>

		<summary type="html">&lt;p&gt;Ve7fet: Add info about RTCM GPS connections and connecting uBlox GPS modules.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Radio Thin Client Module (RTCM) is commercially available hardware for interfacing radios to an AllStarLink computer.&lt;br /&gt;
&lt;br /&gt;
The Micro-Node RTCM and VOTER interfaces are typically used with AllStar in voting/simulcast applications. They MAY be used for ANY repeater interface application, through the chan_voter channel driver. The VOTER is the original through-hole board designed by Jim Dixon for this application. It is open-source, and the relevant Gerber files and BoM to build it are available. The [http://www.micro-node.com/thin-m1.shtml Micro-Node Radio Thin Client Module (RTCM)] is the commercial version of the VOTER. It uses surface mount parts (SMT), but is functionally equivalent to the original VOTER. In general, the two terms (RTCM/VOTER) are used interchangeably, as they operate the same, and use the same firmware (mostly, see below).&lt;br /&gt;
&lt;br /&gt;
This page will highlight some of the operational concerns, quirks, bugs, and other items of interest that relate to these interfaces. Much of the information has been gleaned off the AllStar mail list, comes from personal experience, or comes from notes in the firmware source code.&lt;br /&gt;
&lt;br /&gt;
=Testing=&lt;br /&gt;
RTCM's come preconfigured to login to [http://voter-demo-allstarlink.org voter-demo-allstarlink.org] for out of the box testing.&lt;br /&gt;
&lt;br /&gt;
=Factory Reset=&lt;br /&gt;
A factory reset can be performed by setting SW 1 down and then applying power to the RTCM. Wait for the green LED to stop blinking, power off and set SW 1 back up. &lt;br /&gt;
&lt;br /&gt;
=Firmware=&lt;br /&gt;
The firmware in the RTCM and VOTER is the same, except it is compiled for the specific dsPIC that is installed in each. As such, the firmware is specific to the VOTER or the RTCM, and is NOT interchangeable (it won't boot in the wrong device). Firmware for the RTCM is denoted by &amp;quot;smt&amp;quot; in the filename.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are '''two parts''' to the firmware, a bootloader, and then the actual firmware file. The bootloader starts when power is applied, and allows you to talk to the dsPIC and load new firmware files over ethernet. If the bootloader is not intercepted by the loading tool, it will continue to boot the current firmware file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All new boards will need to have the bootloader installed first, followed by a firmware file. You '''can''' load a firmware file directly (.hex) in to the dsPIC, but then you will not have any of the bootloader remote loading features.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The current bootloader (.cof file) is available here: https://github.com/AllStarLink/voter/tree/master/voter-bootloader (the -smt file is for the RTCM). It needs to be loaded with a PICKit programmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Current firmware (.cry file) is available here: https://github.com/AllStarLink/voter/tree/master/board-firmware . They are loaded with the EBLEX C30 Programmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are multiple &amp;quot;flavors&amp;quot; of firmware available. See below for further explanation of what all the options mean.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The DSPBEW versions have Jim's DSP/BEW feature enabled. Note that due to the size of this feature, the diagnostics menu is NOT available in this version.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CHUCK versions have Chuck Henderson's RSSI and Squelch modifications enabled. This is probably the version that most user's will want to use in production.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Compiling Environment==&lt;br /&gt;
If you look in the [https://github.com/AllStarLink/voter/blob/master/votersystem.pdf votersystem.pdf], you will find a procedure to modify and load the bootloader in to the dsPIC of a VOTER board. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Unfortunately, there is an important step '''missing''' in that procedure, which is covered below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In addition, the old links for the MPLAB software are dead, so let's update this info and get you going.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Currently (Feb 2017), you can get the required software from:&lt;br /&gt;
:http://www.microchip.com/development-tools/downloads-archive&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download MPLAB IDE 32-bit Windows v8.66:&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_IDE_v8_66.zip&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/MPLAB_IDE_v8_66.zip&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download MPLAB C Compiler for PIC24 and dsPIC DSCs v3.31 '''NOT v.3.25''':&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Optionally, install Windows Virtual PC and XP Mode. This is getting to be pretty old software, so running it under XP Mode may be a good idea, so we can keep it isolated (install it in a virtual machine). It does run fine in Windows 7.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To setup the compile/build environment, follow these steps:&lt;br /&gt;
*Run the MPLAB IDE installer. You don't need to install the HI-TECH C Compiler at the end (click no)&lt;br /&gt;
*Run the MPLAB C Compiler installer&lt;br /&gt;
*Select Legacy Directory Name&lt;br /&gt;
*'''Select Lite Compiler'''&lt;br /&gt;
*Go to: https://github.com/AllStarLink&lt;br /&gt;
*Follow the links to: voter --&amp;gt; Clone or Download --&amp;gt; Download Zip. That will get you voter-master.zip which is a download of the whole VOTER tree from GitHub.&lt;br /&gt;
*Extract it somewhere (ie. in the XP Mode Virtual PC)&lt;br /&gt;
*Launch the MPLAB IDE&lt;br /&gt;
*Go to Configure --&amp;gt; Settings --&amp;gt; Projects and de-select one-to-one project mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bootloader==&lt;br /&gt;
If you need to load the bootloader in to a fresh board, you will need to follow these steps:&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; voter-bootloader.mcp --&amp;gt; Open (it is in the voter-bootloader folder of the GitHub source)&lt;br /&gt;
*Go to File --&amp;gt; Import --&amp;gt; voter-bootloader --&amp;gt; ENC_C30.cof --&amp;gt; Open '''This step is missing from the original procedure.'''&lt;br /&gt;
*Remove JP7 on the VOTER Board. This is necessary to allow programming by the PICKit2/PICKit3 device.&lt;br /&gt;
*Attach the PICKIT2/PICKit3 device to J1 on the VOTER board. Note that Pin 1 is closest to the power supply modules (as indicated on the board).&lt;br /&gt;
*If you have not already selected a programming device, go to Programmer --&amp;gt; Select Device and choose PICKit3 (or PICKit2, depending on what you are using).&lt;br /&gt;
*Go to Programmer --&amp;gt; Program. This will program the bootloader firmware into the PIC device on the board.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to change the default IP address from 192.168.1.11 in the bootloader:&lt;br /&gt;
*Select View --&amp;gt; Program Memory (from the top menu bar)&lt;br /&gt;
*Hit Control-F (to &amp;quot;find&amp;quot;) and search for the digits &amp;quot;00A8C0&amp;quot;.&lt;br /&gt;
*These should be found at memory address &amp;quot;03018&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;A8C0&amp;quot; at 03018 represents the hex digits C0 (192) and A8 (168) which are the first two octets of the IP address. The six digits to enter are 00 then the SECOND octet of the IP address in hex then the FIRST octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;0B01&amp;quot; at 0301A represents the hex digits 0B (11) and 01 (1) which are the second two octets of the IP address. The six digits to enter are 00 then the FOURTH octet of the IP address in hex then the THIRD octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you have modified the address to your desired IP, follow the programming procedure (above).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Firmware==&lt;br /&gt;
To compile the firmware (if you want to make custom changes):&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; navigate to board-firmware and open the .mcp file for the flavor of firmware you want to compile. They are in the board-firmware folder of the GitHub source.&lt;br /&gt;
*'''NOTE''': the .mcp files with the &amp;quot;smt&amp;quot; suffix are for the RTCM (built with SMT parts). The non-smt files are for the ORIGINAL through-hole VOTER boards. The difference is that the VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
*Go to Project --&amp;gt; Build Configuration and select &amp;quot;Release&amp;quot;. This may not be necessary (I don't believe that option is used in the firmware), but it removes the compiler option of __DEBUG being passed, so theoretically it would build &amp;quot;normal&amp;quot; firmware.&lt;br /&gt;
*Go to Configure --&amp;gt; Select Device and choose the appropriate device for your board from the Device list. If you don't select the right one, the board will not boot. Select dsPIC33FJ128GP802 for the VOTER, and dsPIC33FJ128GP804 for the RTCM.&lt;br /&gt;
*Now, if you go to Project --&amp;gt; Build All it should compile everything and show you &amp;quot;Build Succeeded&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A .cry file should be in the board-firmware folder. You can load this with the ENC Loader.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is also a .hex file in there that you could load with a programmer... but that would wipe the bootloader... so don't do that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Chuck Squelch==&lt;br /&gt;
If you want to enable &amp;quot;Chuck Squelch&amp;quot;, open the HardwareProfile.h and un-comment #define CHUCK. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may also want to go down to Line 291 in Voter.c (right click on the window, go to Properties --&amp;gt; &amp;quot;C&amp;quot; File Types --&amp;gt; Line Numbers) and tack on CHUCK after 1.60 (the current version number) so that when you load this firmware, the version will be shown as 1.51CHUCK, and you'll know that Chuck Squelch is compiled in. We should probably make that more automagic in the future...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==DSP/BEW==&lt;br /&gt;
If you want to compile the DSPBEW version, open the DSPBEW project file instead.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DSP/BEW Firmware Version=&lt;br /&gt;
DSP BEW Firmware is mutually exclusive with the diagnostic menu. There is not enough space for both, if you load the DSP/BEW firmware, you will '''NOT''' have a diag menu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BEW stands for Baseband Examination Window.&lt;br /&gt;
&lt;br /&gt;
Typically, the discriminator of an FM communications receiver produces results containing audio spectrum from the &amp;quot;sub-audible&amp;quot; range (typically &amp;lt; 100 Hz) to well above frequencies able to be produced by modulating audio. These higher frequencies can be utilized to determine signal quality, since they can only contain noise (or no noise, if a sufficiently strong signal is present).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For receivers (such as the Motorola Quantar, etc) that do not provide sufficient spectral content at these &amp;quot;noise&amp;quot; frequencies (for various reasons), The &amp;quot;DSP/BEW (Digital Signal Processor / Baseband Examination Window)&amp;quot; feature of the RTCM firmware may be utilized. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These receivers are perfectly capable of providing valid &amp;quot;noise&amp;quot; signal with no modulation on the input of the receiver, but with strong modulation (high frequency audio and high deviation), it severely interferes with proper analysis of signal strength.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This feature provides a means by which a &amp;quot;Window&amp;quot; of baseband (normal audio range) signal is examined by a DSP and a determination of whether or not sufficient audio is present to cause interference of proper signal strength is made. During the VERY brief periods of time when it is determined that sufficient audio is present to cause interference, the signal strength value is &amp;quot;held&amp;quot; (the last valid value previous to the time of interference) until such time that the interfering audio is no longer present.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The DSP/BEW feature is selectable, and '''should not''' be used for a receiver that does not need it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A note on the Motorola SLR5700 per VE7FET. DSP/BEW definitely makes a difference on what AllMon reports for the signal strength of received signals. It is less reactive when DSP/BEW = 1 than with it set to 0. We'll have to see what the real world trials show. It might be better to leave it off.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Chuck Squelch=&lt;br /&gt;
&amp;quot;Chuck Squelch&amp;quot; are a couple firmware changes made by Chuck Henderson, WB9UUS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pre-compiled firmware versions including this option are available on [https://github.com/AllStarLink/voter/tree/master/board-firmware GitHub]. See above on how it is enabled/compiled, if you are rolling your own firmware modifications.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
One of the changes fixes an issue with weak signals producing RSSI readings all over the place. It is caused by a 16 bit value that was overflowing (it is the RSSI change in the firmware). It results in rock-solid RSSI values being reported, even on barely or non-readable signals. '''This change will likely be rolled in to a permanent fix in a future firmware release.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The other firmware change changes how the squelch responds (looks at the noise in the last two audio samples) and makes the &amp;quot;Micor squelch&amp;quot; action work better.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may also want to consider the following changes in [[Voter.conf|/etc/asterisk/voter.conf]]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;Comment out:&lt;br /&gt;
;thresholds =&lt;br /&gt;
&lt;br /&gt;
;and set:&lt;br /&gt;
linger = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Squelch Issues=&lt;br /&gt;
*If anyone is off frequency a little bit, that will make the voice talk off worse. Double check that the repeater and the users are all on frequency.&lt;br /&gt;
*Don't use narrow bandwidth on the repeater receiver. &lt;br /&gt;
*Make sure that the discriminator audio is not rolled off even a little bit at the high end. There should not be resistors in series or capacitors to ground between the discriminator chip output pin and the voter board input, for best results.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Motorola Quantar==&lt;br /&gt;
Some things to consider:&lt;br /&gt;
*Install JP1 on the Quantar's RTCM. The squelch should calibrate at around 4 blinks rather than the 12 blinks or so without JP1.&lt;br /&gt;
*Be sure you've done the diode and squelch calibration with the actual attached radio (no antenna). &lt;br /&gt;
*The Quantar firmware should be 20.14.48 as later versions have better noise output. &lt;br /&gt;
*Try the &amp;quot;Chuck Squelch&amp;quot; RTCM version.&lt;br /&gt;
*Each RTCM should have 3 to 5 turns past threshold to prevent the squelch form being too loose. Somewhere around the 350 level seems about right. Chuck Squelch seems to need fewer turns but YMMV.&lt;br /&gt;
*Don't &amp;quot;and&amp;quot; CTCSS with squelch. That may override the RTCM's squelch detection. Compare with CTCSS on and off to see effect if any.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM/VOTER LED's=&lt;br /&gt;
RX LED on the RTCM/VOTER will flash (same rate as ACT LED) if you have External CTCSS enabled, and the received signal has the wrong (or no) valid PL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Menus=&lt;br /&gt;
==Main Menu==&lt;br /&gt;
This is what a typical Main Menu looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Select the following values to View/Modify:&lt;br /&gt;
&lt;br /&gt;
1  - Serial # (0000) (which is MAC ADDR 00:04:A3:00:00:00)&lt;br /&gt;
2  - VOTER Server Address (FQDN) (44.128.1.1)&lt;br /&gt;
3  - VOTER Server Port (667),  4  - Local Port (Override) (0)&lt;br /&gt;
5  - Client Password (password1),  6  - Host Password (hostpass1)&lt;br /&gt;
7  - Tx Buffer Length (800)&lt;br /&gt;
8  - GPS Data Protocol (0=NMEA, 1=TSIP) (1)&lt;br /&gt;
9  - GPS Serial Polarity (0=Non-Inverted, 1=Inverted) (1)&lt;br /&gt;
10 - GPS PPS Polarity (0=Non-Inverted, 1=Inverted, 2=NONE) (0)&lt;br /&gt;
11 - GPS Baud Rate (9600)&lt;br /&gt;
12 - External CTCSS (0=Ignore, 1=Non-Inverted, 2=Inverted) (0)&lt;br /&gt;
13 - COR Type (0=Normal, 1=IGNORE COR, 2=No Receiver) (0)&lt;br /&gt;
14 - Debug Level (0)&lt;br /&gt;
15  - Alt. VOTER Server Address (FQDN) ()&lt;br /&gt;
16  - Alt. VOTER Server Port (Override) (0)&lt;br /&gt;
17  - DSP/BEW Mode (0)&lt;br /&gt;
18 - &amp;quot;Duplex Mode 3&amp;quot; (0=DISABLED, 1-255 Hang Time) (1/10 secs) (0)&lt;br /&gt;
19 - Simulcast Launch Delay (0) (approx 200 ns, 5 = 1us, &amp;gt; 0 to ENA SC)&lt;br /&gt;
97 - RX Level,  98 - Status,  99 - Save Values to EEPROM&lt;br /&gt;
i - IP Parameters menu, o - Offline Mode Parameters menu&lt;br /&gt;
q - Disconnect Remote Console Session, r - reboot system, d - diagnostics&lt;br /&gt;
&lt;br /&gt;
Enter Selection (1-27,97-99,r,q,d) :&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==IP Parameters Menu==&lt;br /&gt;
This is what a typical IP Parameters Menu looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP Parameters Menu&lt;br /&gt;
&lt;br /&gt;
Select the following values to View/Modify:&lt;br /&gt;
&lt;br /&gt;
1  - (Static) IP Address (44.128.1.2)&lt;br /&gt;
2  - (Static) Netmask (255.255.255.0)&lt;br /&gt;
3  - (Static) Gateway (44.128.1.254)&lt;br /&gt;
4  - (Static) Primary DNS Server (44.128.1.254)&lt;br /&gt;
5  - (Static) Secondary DNS Server (0.0.0.0)&lt;br /&gt;
6  - DHCP Enable (0)&lt;br /&gt;
7  - Telnet Port (23)&lt;br /&gt;
8  - Telnet Username (admin)&lt;br /&gt;
9  - Telnet Password (radios)&lt;br /&gt;
10 - DynDNS Enable (0)&lt;br /&gt;
11 - DynDNS Username (wb6nil)&lt;br /&gt;
12 - DynDNS Password (radios42)&lt;br /&gt;
13 - DynDNS Host (voter-test.dyndns.org)&lt;br /&gt;
14 - BootLoader IP Address (192.168.1.10) (OK)&lt;br /&gt;
15 - Ethernet Duplex (0=Half, 1=Full) (1)&lt;br /&gt;
99 - Save Values to EEPROM&lt;br /&gt;
x  - Exit IP Parameters Menu (back to main menu)&lt;br /&gt;
q  - Disconnect Remote Console Session, r - reboot system&lt;br /&gt;
&lt;br /&gt;
Enter Selection (1-14,99,c,x,q,r) :&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Offline Parameters Menu==&lt;br /&gt;
This is what a typical Offline Parameters Menu looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
OffLine Mode Parameters Menu&lt;br /&gt;
&lt;br /&gt;
Select the following values to View/Modify:&lt;br /&gt;
&lt;br /&gt;
1  - Offline Mode (0=NONE, 1=Simplex, 2=Simplex w/Trigger, 3=Repeater) (3)&lt;br /&gt;
2  - CW Speed (400) (1/8000 secs)&lt;br /&gt;
3  - Pre-CW Delay (4000) (1/8000 secs)&lt;br /&gt;
4  - Post-CW Delay (4000) (1/8000 secs)&lt;br /&gt;
5  - CW &amp;quot;Offline&amp;quot; (ID) String (WB6NIL)&lt;br /&gt;
6  - CW &amp;quot;Online&amp;quot; String (OK)&lt;br /&gt;
7  - &amp;quot;Offline&amp;quot; (CW ID) Period Time (6000) (1/10 secs)&lt;br /&gt;
8  - Offline Repeat Hang Time (15) (1/10 secs)&lt;br /&gt;
9  - Offline CTCSS Tone (0.0) Hz&lt;br /&gt;
10 - Offline CTCSS Level (0-32767) (3000)&lt;br /&gt;
11 - Offline De-Emphasis Override (0=NORMAL, 1=OVERRIDE) (0)&lt;br /&gt;
99 - Save Values to EEPROM&lt;br /&gt;
x  - Exit OffLine Mode Parameter Menu (back to main menu)&lt;br /&gt;
q  - Disconnect Remote Console Session, r - reboot system&lt;br /&gt;
&lt;br /&gt;
Enter Selection (1-9,99,c,x,q,r) :&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Configuration Options=&lt;br /&gt;
==Main Menu Options==&lt;br /&gt;
===Serial #===&lt;br /&gt;
Sets the serial number for the RTCM/VOTER.&lt;br /&gt;
*This sets the MAC address of the unit.&lt;br /&gt;
*Each unit must have a unique serial number on your network segment.&lt;br /&gt;
&lt;br /&gt;
===VOTER Server Address (FQDN)===&lt;br /&gt;
This is the DNS name or IP address of the Asterisk server you are connecting to.&lt;br /&gt;
&lt;br /&gt;
===VOTER Server Port===&lt;br /&gt;
This is the UDP port that the Asterisk server is listening on for clients.&lt;br /&gt;
*Typically it is left at the default of port 667.&lt;br /&gt;
*'''MUST''' match the ''port'' directive in ''voter.conf''.&lt;br /&gt;
&lt;br /&gt;
===Local Port (Override)===&lt;br /&gt;
Sets the local unit UDP port to be something different.&lt;br /&gt;
*This is typically not used and left at default (0).&lt;br /&gt;
&lt;br /&gt;
===Client Password===&lt;br /&gt;
This is the '''unique''' password for this unit.&lt;br /&gt;
*Every unit '''must''' have a '''unique''' password.&lt;br /&gt;
*'''MUST''' match the password on the client configuration line in ''voter.conf''.&lt;br /&gt;
&lt;br /&gt;
===Host Password===&lt;br /&gt;
This is the password of the Asterisk server.&lt;br /&gt;
*Configured with the ''password'' directive in ''voter.conf''.&lt;br /&gt;
&lt;br /&gt;
===Tx Buffer Length===&lt;br /&gt;
This is the size of the TX buffer from the RTCM/VOTER to the Asterisk server.&lt;br /&gt;
*Tuned parameter, set via the tuning instructions based on network configuration.&lt;br /&gt;
&lt;br /&gt;
===GPS Data Protocol (0=NMEA, 1=TSIP)===&lt;br /&gt;
Type of GPS connected.&lt;br /&gt;
*NMEA for all non-Trimble GPS units.&lt;br /&gt;
*TSIP to use with Trimble GPS that use Trimble Serial Interface Protocol (TSIP).&lt;br /&gt;
&lt;br /&gt;
===GPS Serial Polarity (0=Non-Inverted, 1=Inverted)===&lt;br /&gt;
GPS dependent setting. &lt;br /&gt;
*Depends on if you are sending TTL or RS-232 data, adjust as needed.&lt;br /&gt;
&lt;br /&gt;
===GPS PPS Polarity (0=Non-Inverted, 1=Inverted, 2=NONE)===&lt;br /&gt;
GPS dependent setting. &lt;br /&gt;
*Depends on if you are sending TTL or RS-232 data for the PPS signal, adjust as needed.&lt;br /&gt;
*If not using GPS or configuring as a mixed client, set to 2 (None).&lt;br /&gt;
&lt;br /&gt;
===GPS Baud Rate===&lt;br /&gt;
Communication speed for the GPS, default is 9600.&lt;br /&gt;
&lt;br /&gt;
===External CTCSS (0=Ignore, 1=Non-Inverted, 2=Inverted)===&lt;br /&gt;
If you are using the CTCSS input from an external CTCSS decoder, adjust this for your logic polarity, or set to 0 (ignore) if not used.&lt;br /&gt;
&lt;br /&gt;
===COR Type (0=Normal, 1=IGNORE COR, 2=No Receiver)===&lt;br /&gt;
Typically, this is left at Normal. &lt;br /&gt;
*Set to 1 (Ignore COR), if you are using the External CTCSS input.&lt;br /&gt;
&lt;br /&gt;
===Debug Level===&lt;br /&gt;
Set the Debug Level, if needed, based on the [[#Debug Options | Debug Options]] below.&lt;br /&gt;
&lt;br /&gt;
===Alt. VOTER Server Address (FQDN)===&lt;br /&gt;
If you are using redundant Asterisk servers, set the IP/DNS address of the redundant server here.&lt;br /&gt;
&lt;br /&gt;
===Alt. VOTER Server Port (Override)===&lt;br /&gt;
If the redundant Asterisk server UDP port is not 667, set it here.&lt;br /&gt;
&lt;br /&gt;
===DSP/BEW Mode===&lt;br /&gt;
If the firmware supports DSP/BEW Mode, set this to 1 to enable it, if desired.&lt;br /&gt;
*DSP/BEW firmware versions use extra firmware space and will make the diagnostic menu unavailable.&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Duplex Mode 3&amp;quot; (0=DISABLED, 1-255 Hang Time) (1/10 secs)===&lt;br /&gt;
If you are using Duplex Mode 3, set the hang time here to enable the option. Most users leave this disabled.&lt;br /&gt;
&lt;br /&gt;
===Simulcast Launch Delay===&lt;br /&gt;
If you are using Simulcast, set your launch delay here.&lt;br /&gt;
&lt;br /&gt;
===RX Level===&lt;br /&gt;
This opens the RX Level tuning screen to adjust the receive audio level from the repeater.&lt;br /&gt;
&lt;br /&gt;
===Status===&lt;br /&gt;
This opens the status menu, showing some of the current operating parameters.&lt;br /&gt;
&lt;br /&gt;
===Save Values to EEPROM===&lt;br /&gt;
Save all the options to non-volatile EEPROM.&lt;br /&gt;
*Make sure to save after you make any changes.&lt;br /&gt;
&lt;br /&gt;
===IP Parameters menu===&lt;br /&gt;
Open the IP Parameters Menu.&lt;br /&gt;
&lt;br /&gt;
===Offline Mode Parameters menu===&lt;br /&gt;
Open the Offline Mode Parameters Menu.&lt;br /&gt;
&lt;br /&gt;
===Disconnect Remote Console Session===&lt;br /&gt;
If you are connected via Telnet, this will exit your session.&lt;br /&gt;
&lt;br /&gt;
===Reboot System===&lt;br /&gt;
Reboot the VOTER/RTCM.&lt;br /&gt;
*This should be done after making configuration changes.&lt;br /&gt;
*Some setting changes require a reboot to become effective.&lt;br /&gt;
&lt;br /&gt;
===Diagnostics===&lt;br /&gt;
Open the Diagnostics Menu.&lt;br /&gt;
*Diagnostics are unavailable if you are using DSP/BEW firmware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Network Information=&lt;br /&gt;
==RTCM/VOTER Bandwidth==&lt;br /&gt;
Assuming ulaw... The RTCM will require approximately 80kbps of bandwidth for continual usage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Network Quality==&lt;br /&gt;
Your IP Network quality is important. You may wish to add a rule in your routers to prioritize traffic on UDP port 667 so that RTCM audio is given priority over other &lt;br /&gt;
traffic. Also see the [[#Debug Options]] below for notes on how to tag your packets with ToS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==RX/TX Buffers are NOT Both Millisecond Values== &lt;br /&gt;
You might assume an RX buffer (in voter.conf) of 120ms would be equivalent of a TX buffer (in the RTCM) of 120ms. That is not the case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The TX buffer is a number of 125 '''microsecond''' intervals, where the RX buffer is in milliseconds. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you follow the buffer setting instructions, you should be fine, in most cases. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Debug Options=&lt;br /&gt;
The VOTER/RTCM firmware supports some additional debugging information that can be turned on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
From the source code, the different Debug Options are listed as:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1 - Alt/Main Host change notifications&lt;br /&gt;
2 - Ignore HWlock (GGPS only)&lt;br /&gt;
4 - GPS/PPS Failure simulation (GGPS only)&lt;br /&gt;
8 - POCSAG H/W output disable (GGPS only)&lt;br /&gt;
16 - IP TOS Class for Ubiquiti&lt;br /&gt;
32 - GPS Debug&lt;br /&gt;
64 - Fix GPS 1 second off&lt;br /&gt;
128 - Fix GPS 1 month off (WTF,O??)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Not sure what they all do, but that is what they are. Here are the most common ones used:&lt;br /&gt;
*&amp;quot;Alt/Main Host change notifications&amp;quot; &lt;br /&gt;
**shows when the connection to the Asterisk server changes state.&lt;br /&gt;
*&amp;quot;IP TOS Class for Ubiquity&amp;quot; &lt;br /&gt;
**marks the IP headers from the RTCM/VOTER '''TO''' the network with ToS C0/DSCP 48 (UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS latency). Other sources show this as a Network Control TOS.) If you enable this, you also will want to have &amp;quot;utos=y&amp;quot; in your voter.conf to mark the packets from the network '''TO''' the RTCM/VOTER. We will probably change this option to mark the packets by default in a future version.&lt;br /&gt;
*&amp;quot;GPS Debug&amp;quot; &lt;br /&gt;
**will print NMEA or TSIP debug strings from the connected GPS.&lt;br /&gt;
*&amp;quot;Fix GPS 1 second off&amp;quot;&lt;br /&gt;
**this is for NMEA GPS '''only'''. It will add one second to the time.&lt;br /&gt;
*&amp;quot;Fix GPS 1 month off (WTF,O??)&amp;quot;&lt;br /&gt;
**this is for TSIP GPS '''only'''. It will effectively add a month to the date. The mktime function normally needs one month subtracted from the raw month it converts to a time/date string. Maybe there are some GPS out there that do that automatically? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The way this works is you add together the options you want to enable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Want to enable GPS Debug and IP ToS, set debug to 48.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just want to turn on GPS Debug, set debug to 32.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just want ToS turned on, set debug to 16.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Un-documented Menus/Features=&lt;br /&gt;
*Menu 96 - If firmware compiled with DUMPENCREGS enabled, Menu 96 looks like it dumps the registers from the ENC (Ethernet) chip?&lt;br /&gt;
&lt;br /&gt;
*Menu 111 - show the &amp;quot;hidden&amp;quot; option values (normally they should all be 0).&lt;br /&gt;
&lt;br /&gt;
*Menu 11780 - set the &amp;quot;Elkes&amp;quot; value. Developed for Pete Elke WI6H, this is for solar type sites. It shuts off the Tx after a period of no Rx activity.&lt;br /&gt;
&lt;br /&gt;
*Menu 1103 - set the &amp;quot;Glaser&amp;quot; timer value? No idea what this does.&lt;br /&gt;
&lt;br /&gt;
*Menu 1170 - set &amp;quot;Sawyer Mode&amp;quot;. Developed for Tim Sawyer use on Yaesu VXR5000 repeater. It modifies de-ephasis behavior when on/off line. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Audio=&lt;br /&gt;
The RTCM/VOTER is totally flexible regarding emphasis. Although the way it is set is completely obscure. It tries to automatically do the right thing for you, which is great most of the time. But when it’s not, it's hard to know what is going on. &lt;br /&gt;
&lt;br /&gt;
If you are changing the COR Type settings, or nodeemp in voter.conf, make sure you save/reboot the RTCM/VOTER every time you make a change... changes are '''not''' effective until the RTCM/VOTER reboots!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Voting==&lt;br /&gt;
Before we get in to the different ways audio is routed, there is an important consideration you need to make if you are using the RTCM/VOTER for voting. &lt;br /&gt;
&lt;br /&gt;
The way the voting process works, it needs '''discriminator audio''' to determine the signal to noise level from each satellite receiver. As such, you will need to be feeding discriminator audio in to the RX audio pin, so that the hardware/software can vote properly. That means you also need to let the hardware/software do the squelch action.&lt;br /&gt;
&lt;br /&gt;
If you need RX CTCSS, you'll need to feed logic from an external CTCSS decoder in to the CTCSS input pin.&lt;br /&gt;
&lt;br /&gt;
Also, don't disable COR in the RTCM/VOTER... it will cause it to disable the squelch and it will report an RSSI of 255 (full quieting) for all received signals.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Receiver De-emphasis==&lt;br /&gt;
On the RX side the COR Type setting in the RTCM/VOTER determines whether the de-emphasis filter is used for RX audio. 0=Normal means the RTCM/VOTER squelch circuit is in use and it is expecting discriminator audio on the RX pin (to be able to do the squelch action), and therefore it '''will''' provide de-emphasis (audio is routed THROUGH the de-emphasis RC filter circuit) to the receiver audio. COR Type 1=IGNORE COR uses the CTCSS input pin for COR or CTCSS ''logic'' and it then expects de-emphasized receive (line) audio on the RX pin, and therefore will '''not''' provide de-emphasis to the received audio (the RC filter is switched '''out''' and audio passes straight through). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Most of the time, you do NOT need to override the automatic filter selection. However, if you do, and you are sure you have a good reason to, you CAN switch the de-emphasis filter '''out''' of the circuit so that audio passes straight through to the encoder. You would do this by setting the nodeemp=1 option in voter.conf. When you set nodeemp=1, the ''VOTER Protocol'' tells the RTCM/VOTER to switch the filter '''out''', so audio is passed straight through.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Transmitter Pre-emhpasis==&lt;br /&gt;
On the TX side, the RTCM/VOTER expects the repeater to accept ''mic audio''. In other words, the '''repeater''' is providing the pre-emphasis, not the RTCM/VOTER (you are '''not''' directly modulating the TX). This can be overridden by setting CTCSS tone in voter.conf. If a CTCSS tone is defined, the RTCM '''will''' provide pre-emphasis to the audio, and expects that you will be connecting to your repeater's flat audio input (direct modulation). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you don’t want TX CTCSS tone but '''do''' need pre-emphasis, set an arbitrary (any) CTCSS tone in voter.conf, and set the level to 0. This will force the RTCM/VOTER to pre-emphasize the audio it generates on the TX pin, but it won't actually mix in a CTCSS tone. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Level Setting==&lt;br /&gt;
Setting the audio levels for the RTCM/VOTER is pretty straight forward. Just follow these steps:&lt;br /&gt;
*Ensure you have a connection to your host Asterisk server/chan_voter instance&lt;br /&gt;
*Send a 1kHz@3kHz on-channel, full-quieting signal in to the repeater's RX&lt;br /&gt;
*Set the RX up so it reads 3kHz deviation on the RTCM's built in console meter&lt;br /&gt;
*Now set the TX level '''pot''' to get 3kHz out of the transmitter (No PL)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now change the modulation from 1kHz tone to 800Hz followed by 1.8kHz and verify that the deviation level doesn't change as the tone frequency changes. '''Changing levels indicates a pre/de-emphasis issue.''' You will want to read the above sections on how audio is handled, and figure out where your issue is.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If using PL you have to account for that deviation, unless you filter it out with your IFR (test set). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That's it!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Optionally, if you are using the built-in &amp;quot;offline repeat&amp;quot; functions, fail the connection to the host Asterisk server, and make sure your repeat audio performs the same as above.&lt;br /&gt;
&lt;br /&gt;
==== Resolution issues when setting levels using built VOTER boards ====&lt;br /&gt;
Sometimes, depending on what radio is being used getting a good enough resolution with R61 when setting levels is a problem. You move a small amount on the pot and it jumps several hundred KHz of deviation. Inserting a 4:1 voltage divider between the VOTER board and transmitter helps with this. Something such as a 1K and 330 ohm resistor will work. This allows for much finer adjustment on the transmit audio (R61).&lt;br /&gt;
&lt;br /&gt;
==Crappy Transmit Audio==&lt;br /&gt;
&lt;br /&gt;
Does your repeated audio sounded really bassy, muffled, and not very understandable? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There was a situation where, compared to a typical simplex radio-to-radio transmission, the audio through the repeater (RTCM and Asterisk) was unacceptable. What was discovered was that the RTCM has an internal pre-emphasis function that was disabled. The user had intentionally disabled &amp;quot;txctcss&amp;quot; and &amp;quot;txctcsslevel&amp;quot; in voter.conf because he didn't &lt;br /&gt;
want the RTCM transmitting CTCSS (the Quantar was doing that already). He ultimately found a post on the mail list explaining the settings above that said enabling txctcss = some valid tone (114.8 in his case) and setting txctcsslevel = 0 would turn on the pre-emphasis function in the RTCM without transmitting CTCSS tones. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
He did, and it worked like a charm! Audio now had more treble and was less bassy/muffled. So, future RTCM users, be sure not to comment out txctcss and txctcsslevel in voter.conf!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just enable and set the level to 0. You'll thank me later. &lt;br /&gt;
&lt;br /&gt;
== Pulse Noise on Transmit Audio ==&lt;br /&gt;
It has been noticed sometimes on built VOTER boards that it has low level DAC noise which sometimes is apparent as a pulsing noise on the audio output. Adding a 4:1 voltage divider inline between the transmitter and VOTER board helps reduce or eliminate this as described above in Level setting. &lt;br /&gt;
&lt;br /&gt;
=GPS=&lt;br /&gt;
The RTCM/VOTER will work with most GPS available. It requires either NMEA or Trimble TSIP binary data. It only receives data '''from''' the GPS (GPS TX), it does not send anything '''to''' the GPS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The firmware is specifically written to talk to Trimble Thunderbolt receivers using Trimble's TSIP binary data interface, however, other Trimbles GPS receivers that talk TSIP are generally compatible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==RTCM GPS Connections==&lt;br /&gt;
There are some quirks specific to the RTCM that are not well documented.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The GPS connections for the RTCM are on the DB15 connector. Note that the labels for GTX and GRX are misleading. GTX is the data '''FROM''' the GPS '''TO''' the RTCM (GPS TX/RTCM RX). GRX is data from the RTCM to the GPS, but that is currently not used, so it does not need to be connected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PPS is obvious, that is your PPS signal from your GPS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also note, inside the RTCM, there are jumpers to set for TTL or RS-232 data, depending on the type of GPS you are connecting. Set them accordingly. The RS-232 setting loops the data through a MAX3232 converter on the board.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You will still need to set the data and PPS polarity, and baud rate in the configuration menus to get everything to work.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==NMEA Sentences==&lt;br /&gt;
If you are using an NMEA GPS (as opposed to a Trimble using the TSIP binary interface), the RTCM/VOTER is looking for the following NMEA sentences:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$GPGGA&lt;br /&gt;
$GPGSV&lt;br /&gt;
$GPRMC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Lock==&lt;br /&gt;
The GPS led will go solid regardless of the connection LED. That '''has''' to happen or it won't connect to the Asterisk server. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is not unusual for it to take up to 20 mins to get a GPS lock LED (ie. using a Trimble Thunderbolt) after any reboot. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS De-sense==&lt;br /&gt;
If you are having odd loss of lock issues, consider you may have interference to your GPS antenna from strong RF nearby. A note from Jesse Lloyd:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I also had crazy problems with poor signal on my GPS when I set it up sitting in a window, and once installed at site I had the GPS antenna maybe 6 ft from the VHF antenna, and after some troubleshooting found it was getting swamped with RF and loosing lock. &lt;br /&gt;
&lt;br /&gt;
I found the debug setting of 32 useful in the RTCM, you can see a hex output of the GPS status.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Issues==&lt;br /&gt;
===Trimble Thunderbolt===&lt;br /&gt;
You may find your Trimble Thunderbolt is showing the incorrect date at the moment. It could be showing the year as 1997. This is due to the date in the Thunderbolt being reported incorrectly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''This can cause some of your voting receivers to not connect, if they are used with other GPS in your system.''' If you have '''ALL''' Thunderbolts, or '''NO''' Thunderbolts, you are probably fine. If you have '''ALL''' Thunderbolts, the date/time is probably wrong, but they will ALL be wrong, so they will connect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GPS Time is a continuous counting time scale beginning at the January 5, 1980 to January 6, 1980 midnight. It is split into two parts: a time of week measured in seconds from midnight Sat/Sun and a week number. The time of week is transmitted in an unambiguous manner by the satellites, but only the bottom 10 bits of the week number are transmitted. This means that a receiver will see a week number count that goes up steadily until it reaches 1023 after which it will “roll over” back to zero, before steadily going up again. Such a week rollover will occur approx. every 20 years. The last week rollover occurred in 1999 and the next one will be in 2019.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Thunderbolt manual states:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The ThunderBolt adjusts for this week rollover by adding 1024 to any week number reported by GPS which is less than week number 936 which began on December 14, 1997. With this technique, the ThunderBolt will provide an accurate translation of GPS week number and TOW to time and date until July 30, 2017.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As such, the Trimble Thunderbolt has a firmware issue with the GPS Week rollover that manifested itself on July 30, 2017, causing the date to become incorrect. The Thunderbolt thinks the week changed from 935 to 936 (actual week 1959-1024=935), so it stopped adding 1024 to the week.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We have added a brute-force fix starting in RTCM/VOTER firmware &amp;gt;=1.51. This fix adds 619315200 seconds (1024 weeks) to the time reported by the GPS. It fixes the Thunderbolts, we have not done extensive testing to see how it affects other TSIP receivers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Garmin===&lt;br /&gt;
====Garmin 18x LVC Wiring Issues====&lt;br /&gt;
If you have issues with your GPS 18x LVC not talking to the RTCM/VOTER, it may not be hooked up to the RTCM correctly. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Garmin pin labeling is backwards to what you may think. See below. You probably need to swap pins 6 and 14.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RTCM   	                 GPS 18x LVC      &lt;br /&gt;
6 GRX 	&amp;lt;-- Rx Data 	 6 Green  &lt;br /&gt;
7 GPPS 	&amp;lt;-- Pulse Output 1 Yellow  &lt;br /&gt;
8 GND   Ground 		 3 Black  &lt;br /&gt;
8 GND   Ground 		 5 Black  &lt;br /&gt;
13 +5V 	--&amp;gt;Vin 		 2 Red  &lt;br /&gt;
14 GTX 	--&amp;gt; TX Data 	 4 White&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log into the RTCM and do 98 and you should see something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Current Time: Sun  Apr 20, 2014  04:37:02.820&lt;br /&gt;
Last Rx Pkt System time: 04/20/2014 03:55:35.580, diff: 2487260 msec&lt;br /&gt;
Last Rx Pkt Timestamp time: 04/20/2014 03:55:32.064, diff: 3515 msec&lt;br /&gt;
Last Rx Pkt index: 160, inbounds: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Garmin and the RTCM====&lt;br /&gt;
Beware when buying newer Garmin GPS's to use with the Micro-Node RTCM.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The RTCM expects a 5V PPS signal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Newer Garmin's (GPS 18X, 18X LVC, etc.) MAY NOT output 5V, and can cause issues. '''Check the Garmin datasheet'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER is designed to accept both 3.3V or 5V signals, and ''should'' work fine.&lt;br /&gt;
&lt;br /&gt;
* Some of the Garmin GPS's come with 4800 baud set as default. If you are getting a &amp;quot;Warning: GPS Data time period elapsed&amp;quot; error on your RTCM, change both the GPS and RTCM to use 9600 baud. To do this, interface the GPS to a DB9 connector as per page 8 of the [http://wiki.allstarlink.org/w/images/4/41/GPS_18x_Tech_Specs.pdf manual] (remembering to ONLY use 5V as the power source *facepalm*). Once done, download, extract and open [http://www8.garmin.com/support/download_details.jsp?id=4053 SNSRXCFG_330.exe] and run.&lt;br /&gt;
# Select your GPS (in most cases GPS 18x PC/LVC). Press F10 to switch to NMEA mode (Config &amp;gt; Switch to NMEA Mode)&lt;br /&gt;
# Select Config &amp;gt; Setup and choose the COM port your GPS is connected too. Leave baud rate as auto for now, OK.&lt;br /&gt;
# Select Comm &amp;gt; Connect to connect to the GPS. &lt;br /&gt;
# Go to Config &amp;gt; Get Configuration from GPS to download it's current configuration&lt;br /&gt;
# Click File &amp;gt; Save to save the current configuration&lt;br /&gt;
# In Config &amp;gt; Sensor Configuration change the Baud Rate to 9600. You can also check to make sure 1PPS is enabled here too. Click OK. &lt;br /&gt;
# Hitting F7 when in the main window of the software also brings up the GPS sentences to output if that is of interest.&lt;br /&gt;
# File &amp;gt; Save to a different file than step 5. &lt;br /&gt;
# Press F9 or Config &amp;gt; Send Configuration to GPS. This will then send all the changes you made to the GPS unit (including baud rate so a reconnect may be needed)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===uBlox GPS===&lt;br /&gt;
You can use uBlox GPS modules with the VOTER/RTCM. The ones readily available usually have a 5 pin header on them (5V, GND, TXD, RXD, PPS), as well as an integrated patch antenna, and a SMA connector for an external antenna.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Data is TTL, so make sure to set the jumpers inside the RTCM for TTL data. Baud rate is 9600 by default, and uses NMEA. Set those accordingly in the configuration menu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The RTCM and VOTER require different settings for data and PPS polarity. The VOTER wants '''inverted''' for both, and the RTCM wants '''non-inverted''' for both.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Make sure to save (99) and reboot (r) your VOTER/RTCM after making changes for them to be effective.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==No GPS/Mixed Mode==&lt;br /&gt;
You do not need a timing source to use an RTCM if you don’t want to vote. That’s called Mix Mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Having the PPS Polarity set to 2 tells the RTCM you do not have a GPS. That forces the RTCM to become a mix (non-voting) client. Turn it on, save it, and restart. A simple voter.conf would look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[general]&lt;br /&gt;
port = 667&lt;br /&gt;
password = BLAH&lt;br /&gt;
&lt;br /&gt;
[1000]&lt;br /&gt;
Site1 = pswrd1,master,transmit&lt;br /&gt;
Site2 = pswrd2,transmit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mixed Client Error==&lt;br /&gt;
&amp;quot;I am getting this error in Asterisk&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WARNING[2368]: chan_voter.c:4511 voter_reader: Voter client master timing source mobile1 attempting to authenticate as mix client!!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A mixed client error means the voter.conf file is expecting an RTCM to try and connect with a GPS IP packet (ie. has '''master''' in it in voter.conf), but the RTCM isn't &lt;br /&gt;
sending a GPS IP packet. So its a mismatch between voter.conf and Option 10 in the RTCM. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to use a mix client (non-voted), make sure that receiver's configuration line in voter.conf '''does not''' have the '''master''' option set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mix Clients with Voted Client Issues==&lt;br /&gt;
&lt;br /&gt;
Situation...&lt;br /&gt;
&amp;quot;I have a private node with 6 voted receivers using RTCMs. I'd like to add a 7th RTCM to this node that is always mixed in rather than voted. I'm able to make this RTCM work as a 7th voted receiver with no problem. Everything I've read seems to indicate that if I change GPS PPS polarity to &amp;quot;none&amp;quot; this will achieve my desired results, however I am unable to get audio out of my transmit RTCM from this 7th site. It does change color to cyan in Allmon indicating it is non voted input but I do not get any indication or audio when that units COR goes active.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Setting voter debug level 3 in Asterisk and I'm seeing the following message repeatedly scrolling by in a blur when the mix client detects COR (COR is active). Sequence numbers are continually incrementing by 1. I'm running software version 1.47 on all my clients:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mix client (Mulaw) my_client index:0 their seq:629 our seq:629&lt;br /&gt;
mix client my_client outa bounds, resetting!!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have a similar situation to the above... check your buflen in voter.conf. Make sure it is at &amp;gt;=160 and see if that fixes it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Debug==&lt;br /&gt;
To turn on GPS Debugging, set the Debug Option Level in the RTCM/VOTER to 32.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [[#Debug Options]] levels for more information on how this works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Trimble Debug Status Decoding==&lt;br /&gt;
The VOTER/RTCM when in TSIP mode (Trimble), assumes it is a Trimble Thunderbolt and is looking for two packets:&lt;br /&gt;
*0x8F-AB - Primary Timing Packet&lt;br /&gt;
*0x8F-AC - Supplemental Timing Packet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Grab a copy of the Thunderbolt User Guide: http://leapsecond.com/pages/tbolt/Thunderbolt-2012-02.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pages 78-83 are the important ones.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Packet 0x8F-AB is what grabs the timing information, and packet 0x8F-AC is what it looks at for everything else (including debug).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The debug string that the VOTER/RTCM reports:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	printf(&amp;quot;GPS-DEBUG: TSIP: ok %d, 9 - 14: %02x %02x %02x %02x %02x %02x\n&amp;quot;,&lt;br /&gt;
					happy,gps_buf[9],gps_buf[10],gps_buf[11],gps_buf[12],gps_buf[13],gps_buf[14]);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, the 1 after ok is the &amp;quot;happy gps&amp;quot; flag. The other 5 bytes are supposed to be bytes 9-14 from the packet... sort of. They are bytes 9-14 of the buffer, but they are actually bytes 8-13 of the binary message.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Looking at the message structure, bytes 8-13 are:&lt;br /&gt;
*8-9 Critical Alarms&lt;br /&gt;
*10-11 Minor Alarms&lt;br /&gt;
*12 GPS Decoding Status&lt;br /&gt;
*13 Disciplining Activity&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Therefore, the messages you are seeing break down as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GPS-DEBUG: TSIP: ok 1, 9 - 14: 00 00 00 00 00 00 - everything is good in the 'hood, Doing Fixes, Phase Locking&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 18 08 06 - not happy, Not Tracking Satellites, Not Disciplining Oscillator (0x18 --&amp;gt; 0b000000011000), No Usable Sats, Inactive&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 08 08 05 - not happy, Not Tracking Satellites, No Useable Sats, Compensating OXCO (holdover)&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 00 00 05 - not happy, Compensating OXCO (holdover)&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 1, 9 - 14: 00 00 00 00 00 08 - happy, Recovery Mode&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 00 00 04 - not happy, Initializing Loop Filter&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The GPS is flagged as NOT HAPPY in TSIP mode if ANY of the following are TRUE:&lt;br /&gt;
*If GPS Decoding Status is anything other than &amp;quot;Doing Fixes&amp;quot;.&lt;br /&gt;
*If Disciplining Activity is not Phase Locking or Recovery Mode.&lt;br /&gt;
*Any Critical Alarms.&lt;br /&gt;
*Any Minor Alarms.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ubiquity ToS=&lt;br /&gt;
See https://help.ubnt.com/hc/en-us/articles/205231750-airMAX-How-is-QoS-and-prioritization-handled-by-airMAX-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, if we set ToS/DSCP in the header to C0, then Ubiquity (and other gear watching ToS) ''should'' prioritize the packets. This sets the DSCP to 110 000 aka 48. UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS latency). Other sources show this as a Network Control TOS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is an option in voter.conf to turn this on (utos=y). However, this only controls packets being sent from Asterisk '''TO''' the RTCM. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to tag packets from the RTCM '''TO''' Asterisk, you need to set the RTCM debug option level to 16 (see [[#Debug Options]] for how this works).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At some point we should probably change the default behaviour of the RTCM firmware to mark the packets and use the debug setting to '''disable''' ToS. That change (if you wanted to compile your own firmware) would be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Change line 90 in IP.c&lt;br /&gt;
&lt;br /&gt;
From:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? 0xc0 : (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY))&lt;br /&gt;
&lt;br /&gt;
To:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY) : 0xc0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This changes the conditional expression from if the debug level is 16 to mark the packets with DSCP 48 to if the debug level is 16, mark the packets routine (DSCP 0).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM Simulcasting=&lt;br /&gt;
The RTCM/VOTER boards do support simulcasting, however, there are a bunch of quirks that one needs to be aware of.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Radio Hardware==&lt;br /&gt;
For best results, you should use all identical RF equipment between your voting RX sites and simulcast TX sites. If you don't, you can end up with strange audio artifacts when different receivers are used, and other strange audio issues when different transmitters are used. The most important thing when setting your levels is that ALL the RX and TX levels match from radio to radio. The best way this is achieved is using a &amp;quot;master&amp;quot; radio and reference from that - all radios might be identical models, but may not have identical audio characteristics so check those levels! Also check CTCSS and audio levels separately to make sure they all match.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==9.6MHz Oscillator==&lt;br /&gt;
If you want reliable simulcast with an acceptable level of overlap warble, you MUST inject a GPS-disciplined or OXCO 9.6MHz signal to the clock of the RTCM's, in lieu of their stock internal crystal. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Otherwise, the inherent internal clock jitter of the RTCM's will cause CTCSS warble, etc. in areas where your transmitters overlap. The 1 PPS feed that you normally feed the RTCM's is acceptable for voting, but naturally, a typical crystal-driven clock will slightly drift in between the pulses every second due to inherent jitter, etc., and that ain't to good for situations like simulcast which demand sample-accurate performance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are some comments from Joe, KC2IRV, on the subject. He has also created his own wiki, specific to simulcast issues, you can find it at: http://rtcmsimulcast.wikifoundry.com/ &lt;br /&gt;
&lt;br /&gt;
:I felt I needed to let those on this mailing list know my findings with simulcasting with the RTCM units since I have received a great deal of help and information from people on this list.&lt;br /&gt;
&lt;br /&gt;
:For the past week I have had a two (2) site simulcast system up and running on UHF using the RTCM units. I have done a great deal of testing and proving on the bench and it is so far working beautifully. &lt;br /&gt;
&lt;br /&gt;
:The one issue that was made apparent to me early on was that in order for the RTCM's to be suitable for simulcast, the processor inside it needed to be clocked to a more accurate source. This source is supposed to be the Programmable Clock Generator Module in order to produce a GPS locked 9.6 MHz reference for the processor. Unfortunately this unit is not currently available.&lt;br /&gt;
&lt;br /&gt;
:Knowing this, I started to go down the road of possibly designing my own, but stumbled upon a cheap, plentiful supply of Symmetricom 9.6 MHz sinewave OCXO's. I took a chance and ordered a few to experiment with to see if the RTCM would be able to use this in place of the supplied crystal for a clock. I found they did, with that I decided to modify the RTCM with an SMA connector just above the audio adjustment pots and use this OCXO. I trimmed the frequency on the units to match each other and used them to produce the processor clock.&lt;br /&gt;
&lt;br /&gt;
:After a week of testing, I have found the results in the overlap areas to be exactly as I would expect them on a public safety/commercial simulcast system. While in an overlap region where both transmitters are within 3dB of one another, to the ear you hear no audio phase wandering. Of course , this has only been a week of testing so I wouldn't call it case closed yet.&lt;br /&gt;
&lt;br /&gt;
:I will say that if this system remains this way after testing for 6 months to a year than using a 9.6 MHz OXCO is a viable alternative to achieve the needed precision and accuracy needed for the processor clock to make it suitable for simulcast.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Comments from Jim Dixon on the issue:&lt;br /&gt;
&lt;br /&gt;
:You have to use '''something''' that will take the precise 10MHz (or whatever it is) from the GPSDO and PLL (phase-locked) convert it to 9.6MHz (square wave at 3.3V for the CPU clock).&lt;br /&gt;
&lt;br /&gt;
:We had to use 9.6MHz mainly because of the DAC in the dsPIC instead of 10MHz. The options for various divide/clock radios in the part are RATHER limited. As I recall, there wasn't even a way of getting the necessary 16kb/s sample rate on the ADC from 10MHZ, either.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Micro-Node RTCM Clock Issue=&lt;br /&gt;
James, KI0KN, had some strange-ness with some of his RTCM's when used for voting. As soon as he changed menu item 10 on the RTCM to either a (1) or a (0) instead of (2), he '''instantly''' got this on the RTCM console:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
04/05/2016 18:44:13.660  Lost GPS Time synchronization&lt;br /&gt;
04/05/2016 18:44:13.660  Host Connection Lost (Pri) (10.16.1.240)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And it sits there forever and never re-establishes connection to the host. The issue was finally traced to a bad batch of 9.6MHz crystals that affected a small run of the RTCM's. The issue was eventually resolved by Micro-Node, but we'll document it here just for record keeping.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
James comments to the list:&lt;br /&gt;
&lt;br /&gt;
:Well, after many of you offered your time and thoughts on my voter problem, Jim, WB6NIL, graciously donated a couple of hours of his time to remotely help me and he uncovered the problem.&lt;br /&gt;
&lt;br /&gt;
:All 5 of my RTCMs were purchased within the last 6 months, and I suspect all 5 have the same problem (will verify that today). The problem is that the microprocessor crystal is running too fast! There is 9.6Mhz crystal that drives the MPU, on the particular unit that Jim helped me diagnose, it's running 2.5 khz too fast.  &lt;br /&gt;
&lt;br /&gt;
:There is a sanity check in the firmware that makes sure the correct number of samples were taken in the last second (it's supposed to be 8000) and fails if the sample is incorrectly sized (mine is taking 8003 samples).  Jim helped adjust the code to be more tolerant of the sampling error and my whole system instantly worked.&lt;br /&gt;
&lt;br /&gt;
:I have since tested it with ALL my GPSs (they all work great!). So I now have everything working, including the voting.&lt;br /&gt;
&lt;br /&gt;
:I haven't contact Micro-Node about it yet. Jim told me that voting should work fine but this clock error would probably not be acceptable for Simulcast (something we have no plans on doing as of now). Since mine are deployed at mountain top sites, I'll probably pursue a crystal that is running at the correct frequency and use &amp;quot;standard&amp;quot; firmware so that if the decision is ever made to play with simulcast, I won't be right back in this same boat.&lt;br /&gt;
&lt;br /&gt;
:Thanks to all that helped out, and a HUGE thanks to Jim for taking the time to troubleshoot this.&lt;br /&gt;
&lt;br /&gt;
:BTW- This clock error will NOT effect the RTCM in mix client mode, it only affects it in voting or simulcast mode!&lt;br /&gt;
&lt;br /&gt;
:In voter.c, the stock line is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if ((samplecnt &amp;gt;= 7999) &amp;amp;&amp;amp; (samplecnt &amp;lt;= 8001))&lt;br /&gt;
&lt;br /&gt;
it needs to be changed to something like:&lt;br /&gt;
&lt;br /&gt;
if ((samplecnt &amp;gt;= 7999) &amp;amp;&amp;amp; (samplecnt &amp;lt;= 8003 ))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:That was just enough to make my first RTCM work. I've had a chance now to check a few more of my RTCMs on the bench this morning and the crystal frequencies are kind of all over.  The next one I had on the bench was 5.2Khz fast. The above code was still not enough to fix it (as would be expected) so it looks like the quality control on whatever manufacturer that crystal is, isn't very good (or a low tolerance crystal is being used). I am going to pursue crystal replacement to get a highly accurate, stable, on-frequency crystal in there as my first choice. Changing the firmware 5 different times doesn't seem like the right answer.&lt;br /&gt;
&lt;br /&gt;
:Jim put that sanity check in there for a reason. Working around it '''may''' allow the device to work, but to me, it seems getting the hardware operating the way it was supposed to originally is the better answer. I will follow up with Micro-node and let you all know how it goes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After following up with Micro-Node:&lt;br /&gt;
:They were all off, some were off a LOT. I talked to Mark @ Micronode. He told me there were 25 units that made it out the door with a crystal from an unapproved source and that was quite likely the reason for the problem. He gladly sent me 5 new crystals to replace (he offered to replace them himself if I sent the units in, but I am comfortable doing it myself to save the time and postage). &lt;br /&gt;
&lt;br /&gt;
:I haven't received them in the mail yet to show that the problem is fixed, but I will post here when that happens. He was great to work with and had no issue getting things set straight. If you are having the same issue and your RTCMs were bought about the same time, I'd suggest you contact him and have him help you resolve the issue!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Duplex Mode 3=&lt;br /&gt;
Does delayed repeat audio bug you? Tired of hearing a bit of yourself after you unkey? Wish you could talk full duplex? Hate the echo chamber effect? Then we have the answer for you.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Duplex Mode 3 in app_rpt allows for &amp;quot;in-cabinet repeat&amp;quot; (where the radio hardware provides repeat audio) and app_rpt adds the hang time, courtesy tones, linking - all the &lt;br /&gt;
things apt_rpt does sans repeat audio. Therefore no repeat audio delay. Cool, eh? This duplex mode has been in app_rpt for a while. Problem has been how to implement it in the RTCM environment. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Duplex Mode 3 support in the RTCM provides in-cabinet repeat functionality. Repeat audio loops through the RTCM and has almost zero delay because it does not have to traverse the network. The delay is not quite zero but it's plenty short enough to eliminate all of the above mentioned annoyances. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Of course Duplex Mode 3 support can't be used with voting or simulcast. You also loose Touch Tone muting, Time Out Timer and Repeater Disable functions because the repeat path is not through app_rpt.&lt;br /&gt;
&lt;br /&gt;
= Setting Voter Buffers =&lt;br /&gt;
Voter ping is useful for end-to-end network evaluation when ICMP ping is turned off and/or the RTCM is behind a firewall and is not ICMP reachable. It can also help with finding the correct RTCM and voter.conf buffer settings.&lt;br /&gt;
&lt;br /&gt;
=== Voter Ping Usage ===&lt;br /&gt;
The voter ping asterisk CLI syntax is:&lt;br /&gt;
 *CLI&amp;gt;voter ping nameOfClient [packetCount]&lt;br /&gt;
If packetCount is not specified 8 pings will be sent. Use packetCount of 0 to stop an in progress voter ping. Set packetCount to at least 100 when evaluating link quality.&lt;br /&gt;
&lt;br /&gt;
The result will be similar to:&lt;br /&gt;
 ...&lt;br /&gt;
 PING (nameOfClient): Packets tx: 100, rx: 100, oos: 0, Avg.: 26.710 ms&lt;br /&gt;
 PING (nameOfClient):  Worst: 38 ms, Best: 22 ms, 100.0% Packets successfully received (0.0% loss)&lt;br /&gt;
The output above is self evident except for oos which is a count of out of sequence packets. Voter ping requires RTCM firmware 1.23 or newer and chan_voter 2013-08-04 or newer.&lt;br /&gt;
&lt;br /&gt;
=== RX Buffer Size ===&lt;br /&gt;
Ping all the receiver sites and look for the worst response of the worst client. As a rough rule of thumb the buflen setting in voter.conf should be set to the worst response + 40ms or 120 whichever is greater. Using the above case the buflen should be set to 120 (38+40&lt;br /&gt;
&lt;br /&gt;
=== TX Buffer Size ===&lt;br /&gt;
Ping all the transmitter sites and look for the worst response of the worst client. The RTCM TX Buffer Length should be set to (worst response + 40ms) * 8 or 480 whichever is greater. Using the above case the RTCM TX Buffer Length should be set to 624 ((38+40)*8).&lt;br /&gt;
&lt;br /&gt;
=== Assumptions ===&lt;br /&gt;
* The minimum TX buffer size is 480 (60ms) and the minimum RX buffer is 120ms. These were derived by testing on a LAN segment with chan_voter 2013-08-04 and RTCM 1.26.&lt;br /&gt;
* The ping times are not round trip times but they are in fact round trip times. Therefore the worst response could (should?) be divided by 2. Ie RX buffer = 38/2+40=59 and TX buffer = (38/2 + 40) * 8 = 472. Minimums still apply.&lt;br /&gt;
* The internet path to and from the RTCM under test is symmetrical.&lt;br /&gt;
* The added 40ms pad is an estimate of buffer ingress and egress.&lt;br /&gt;
As always your milage may vary. Some trial and error may be required to find the optimum settings.&lt;br /&gt;
&lt;br /&gt;
=== Setup ===&lt;br /&gt;
The RX buffer is set with buflen=120 in /etc/asterisk/voter.conf. The value is in milliseconds. The TX buffer is set in the RTCM with menu item 7. The value is in 125 microsecond increments. To match the size of the TX to the RX buffer, use the RX buffer * 8 to get the TX buffer size.&lt;br /&gt;
[[Category:How to]]&lt;br /&gt;
[[Category:Node Configuration]]&lt;/div&gt;</summary>
		<author><name>Ve7fet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pttlink.org/index.php?title=Radio_Connections&amp;diff=1862</id>
		<title>Radio Connections</title>
		<link rel="alternate" type="text/html" href="https://wiki.pttlink.org/index.php?title=Radio_Connections&amp;diff=1862"/>
		<updated>2020-06-27T15:46:00Z</updated>

		<summary type="html">&lt;p&gt;Ve7fet: Add link to RTCM page off the Radio Connections page.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Instructions for connecting radios, repeaters and AllStarLink interfaces including the RTCM, GPS, URI/URI X and like devices.  &lt;br /&gt;
&lt;br /&gt;
=RTCM/VOTER=&lt;br /&gt;
&lt;br /&gt;
See the [[RTCM_Client|RTCM]] page for detailed information about the RTCM/VOTER interface, used primarily to build a voting repeater system. Also note there is model specific radio information below on this page that also discusses connecting to the RTCM/VOTER.&lt;br /&gt;
&lt;br /&gt;
==GPS==&lt;br /&gt;
* [[Media:RTCM 2 Trimble.pdf|Trimble RTCM Interface Cable]]&lt;br /&gt;
* [[Media:RTCM 321 Cable.graffle.pdf|Trimble to Two RTCMs and Lady Heather Cable]]&lt;br /&gt;
* [[Media:RTCM to BG7TBL Cable.pdf|BG7TBL GPS / RTCM Cable]]&lt;br /&gt;
&lt;br /&gt;
=Motorola=&lt;br /&gt;
&lt;br /&gt;
==CDM==&lt;br /&gt;
CDMs make great nodes. This eBay reseller has very nice cables. Use to connect to URI or RTCM. &lt;br /&gt;
&lt;br /&gt;
[[Media:CDM Cable.pdf|CDM Cable from Kurt Meltzer]] ex-WB9KNX, now KC4NX - Cable 83 has only one output to use for either COS or CTCSS. Use another cable if you need both COS and CTCSS.&lt;br /&gt;
&lt;br /&gt;
==Maxtrac==&lt;br /&gt;
The venerable Maxtrac is a radio that was very well built, apparently has very stable reference LO, and can take a beating. When aligned properly, and sufficient *vectored* cooling is made, this radio will last for a very long, time even under several hours with of transmitting per day.&lt;br /&gt;
&lt;br /&gt;
The radio will need to be aligned, and programmed to the frequenc(y/ies) you want to use. You will also need to program the Accessory Option for PL/DPL &amp;amp; CSQ Output.&lt;br /&gt;
* Most URIs can accept active high or active low for valid RX signal detection, ie, open squelch. It is HIGHLY recommend in any situation COS is set to USB or active high. This will prevent issues. Too many to mention.&lt;br /&gt;
* It is a good idea to program pin 8 on the Maxtrac/GM300 for PL/DPL &amp;amp; CSQ output, active high. This will cause the radio to emit a 5Vdc signal when the squelch is open, and go low when squelch is closed.&lt;br /&gt;
&lt;br /&gt;
===TX/RX audio, COS, and PTT connections===&lt;br /&gt;
With the radio facing you in normal operating positing, volume knob on top left, and mic connection right below it, turn the radio over from the right side. The accessory connector is located on the rear, right top of the radio at this point. Starting from left to right, the pins on the top are / and the pins on the bottom are /. If you want to hear audio from the radios speaker, just a header jumper on the far right pins 15 and 16.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This section is a work in progress. &lt;br /&gt;
&lt;br /&gt;
References:&lt;br /&gt;
The GM300 section has the link for further reading; the Maxtrac and GM300, are relatively close in design.&lt;br /&gt;
&lt;br /&gt;
==MTR-2000==&lt;br /&gt;
&lt;br /&gt;
==Quantar==&lt;br /&gt;
&lt;br /&gt;
The Quantar can be tricky to interface as it's extremely programmable and you will need a wireline card for I/O connections.  By default the I/O will not work unless the &amp;quot;wildcard&amp;quot; table is programed.  This wildcard table is Boolean logic of interrupt states in the radio, is extremely flexible and frustrating to debug.  It's a base station in it's own class.&lt;br /&gt;
&lt;br /&gt;
[[File:Front of quantar and controller.jpg|thumb|400px|right|Front of Quantar and controller]]&lt;br /&gt;
&lt;br /&gt;
* [[Media:QUANTAR-RTCM INTERFACE CABLE.pdf|Quantar/RTCM Interface Cable]]&lt;br /&gt;
&lt;br /&gt;
Note you will want to use [[RTCM_Client#DSP.2FBEW_Firmware_Version|BEW mode]] on the RTCM if using the RTCM do squelch.&lt;br /&gt;
&lt;br /&gt;
* [[Media:RTCM 2 Quantar.pdf|Another Quantar/RTCM Interface Cable]]&lt;br /&gt;
* [[Media:RTCM to Astro-TAC Cable.pdf|Astro-TAC/RTCM Interface Cable]]&lt;br /&gt;
* [http://wiki.w9cr.net/index.php/Allstar_and_P25_on_Quantar Interfacing to a Quantar with P25NX]  - Bryan Fields W9CR has page on interfacing the Qunatar using simple USB into Allstar and P25NX linking at the same time.  This is driven by programing on the Quantar Wildcard tables.&lt;br /&gt;
*[[Media:Quantar URI Interface.jpg|Quantar/URI Cable]]&lt;br /&gt;
*[[Media:QuantarMRTI2URI.jpg|Quantar MRTI/URI Cable]]&lt;br /&gt;
&lt;br /&gt;
==Syntor X==&lt;br /&gt;
The Motorola Syntor X with an Xcat installed makes a great frequency agile remote base. For more information see this [http://wd6awp.net/xcat/ Syntor Xcat] page. &lt;br /&gt;
&lt;br /&gt;
==VRM-850==&lt;br /&gt;
&lt;br /&gt;
==GM300==&lt;br /&gt;
These older radios are fairly common and easily to come by due to the narrow banding. Probably the hardest part is finding a computer and the RSS to program them. The Gm300 family has many different configurations, from low band VHF, to 800 Mhz. But the easiest variant of the GM300 is ones with the 16 pin connector.&lt;br /&gt;
[http://www.repeater-builder.com/motorola/maxtrac/maxtrac-index.html All about GM300 Radios] &lt;br /&gt;
&lt;br /&gt;
Connections are fairly simple but can be hard to determine which is the correct one to use. This [http://www.repeater-builder.com/motorola/maxtrac/maxtrac-option-plug.html link] is a good place to start.&lt;br /&gt;
&lt;br /&gt;
=Kenwood=&lt;br /&gt;
==TKR720/820==&lt;br /&gt;
Connections to: PTT, COS, RX audio out and MIC audio in&lt;br /&gt;
&lt;br /&gt;
TX/RX board, MIC audio input, pins 4 &amp;amp; 5: floating ground, must not tie to any other ground! Some installations may require a 10dB, resistor L-network consisting of a 4.7k and 470 ohm resistors. The 470 ohm resistor connection across pins four and five, the 4.7k resistor is soldered to pin 5 to which your TX audio from the URI will connect to.&lt;br /&gt;
&lt;br /&gt;
The MIC audio gain, deviation, and balance adjustments are *very* sensitive! &lt;br /&gt;
&lt;br /&gt;
- RA-35 without TX adj. trimmer pots: Using a service monitor with deviation metering, start low and work your way up to 3KHz deviation with 1KHz tone, generated by simpleusb-tune-menu. If enabled, *904 turns this tone on and off by command, ie, no tone time-out as in simpleusb-tune-menu.&lt;br /&gt;
&lt;br /&gt;
== TKR750/850 ==&lt;br /&gt;
[http://www.masterscommunications.com/products/radio-adapter/txt/tkr.txt Using the Masters Communications RA-35 or RA-40 radio adapters with the TKR750/850]&lt;br /&gt;
&lt;br /&gt;
=Repeater Controller=&lt;br /&gt;
&lt;br /&gt;
[[Media:RTCMwithController.pdf|An example of using RTCMs to replace 420 links]]&lt;br /&gt;
&lt;br /&gt;
=Spectra Engineering=&lt;br /&gt;
* [http://wiki.w9cr.net/index.php/MX800#W9CR_alignment_procedure_and_setup_with_Allstar MX800 Base station] - Bryan Fields, W9CR has a complete setup guide for the MX800 Base station which includes fallback to the built in controller and an audio delay module.&lt;br /&gt;
&lt;br /&gt;
=Tait=&lt;br /&gt;
&lt;br /&gt;
=Beagle Board=&lt;br /&gt;
The Beagle Board XM project.&lt;br /&gt;
* [http://beagleboard.org/BeagleBoard-xM BeagleBoard-xM]&lt;br /&gt;
&lt;br /&gt;
=Lox board=&lt;br /&gt;
The Level One eXpansion board.&lt;br /&gt;
* [http://www.dmkeng.com/LOX_Order_Page.htm LOX Board] &lt;br /&gt;
&lt;br /&gt;
=URI / URI X=&lt;br /&gt;
The URI is manufactured and sold by [http://dmkeng.com/URI_Order_Page.htm DMK Engineering]. &lt;br /&gt;
*[[Media:URI Schematic.pdf|URI Schematic]]&lt;br /&gt;
*[[Media:URIx Schematic.pdf|URI X Schematic]]&lt;br /&gt;
&lt;br /&gt;
=Masters Communications RA-Series Radio Adapters=&lt;br /&gt;
Inexpensive but feature rich USB Radio Adapters for AllStar Link.&lt;br /&gt;
&lt;br /&gt;
* [http://www.masterscommunications.com/products/radio-adapter/ra25.html RA-25]&lt;br /&gt;
* [http://www.masterscommunications.com/products/radio-adapter/ra30.html RA-30]&lt;br /&gt;
* [http://www.masterscommunications.com/products/radio-adapter/ra35.html RA-35]&lt;br /&gt;
&lt;br /&gt;
*[http://www.masterscommunications.com/products/radio-adapter/ra40.html RA-40]&lt;br /&gt;
*[http://www.masterscommunications.com/products/radio-adapter/ra42.html RA-42]&lt;br /&gt;
*[http://www.masterscommunications.com/products/radio-adapter/radr1x.html RA-DR1X]&lt;br /&gt;
*[http://www.masterscommunications.com/products/radio-adapter/racase.html RA-Case]&lt;br /&gt;
&lt;br /&gt;
=Vertex=&lt;br /&gt;
* [[Media:RTCM 2 VRX-5000.pdf|VRX-5000 / RTCM Interface Cable]]&lt;br /&gt;
&lt;br /&gt;
=Quad Radio PCI card=&lt;br /&gt;
*[[:File:Ft897 quadpci schematic.pdf|Yaesu FT-897 HF Radio(pdf)]]&lt;br /&gt;
&lt;br /&gt;
*[[:File:Ic706 quadpci schematic.pdf|Icom IC-706 HF Radio(pdf)]]&lt;br /&gt;
&lt;br /&gt;
*[[:File:Tmg707 quadpci schematic.pdf|Kenwood TMG-707 Dual Band FM mobile Radio(pdf)]]&lt;br /&gt;
&lt;br /&gt;
=Modified USB FOB=&lt;br /&gt;
*[[:File:Usb2tmg707.pdf|Kenwood TMG-707 Dual Band FM mobile Radio(pdf)]]&lt;br /&gt;
[[Category:How to]]&lt;/div&gt;</summary>
		<author><name>Ve7fet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=609</id>
		<title>RTCM Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=609"/>
		<updated>2017-10-24T02:32:56Z</updated>

		<summary type="html">&lt;p&gt;Ve7fet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Micro-Node RTCM and VOTER interfaces are typically used with AllStar in voting/simulcast applications. They MAY be used for ANY repeater interface application, through the chan_voter channel driver. The VOTER is the original through-hole board designed by Jim Dixon for this application. It is open-source, and the relevant Gerber files and BoM to build it are available. The [http://www.micro-node.com/thin-m1.shtml Micro-Node Radio Thin Client Module (RTCM)] is the commercial version of the VOTER. It uses surface mount parts (SMT), but is functionally equivalent to the original VOTER. In general, the two terms (RTCM/VOTER) are used interchangeably, as they operate the same, and use the same firmware (mostly, see below).&lt;br /&gt;
&lt;br /&gt;
This page will highlight some of the operational concerns, quirks, bugs, and other items of interest that relate to these interfaces. Much of the information has been gleaned off the AllStar mail list, comes from personal experience, or comes from notes in the firmware source code.&lt;br /&gt;
&lt;br /&gt;
=Firmware=&lt;br /&gt;
The firmware in the RTCM and VOTER is the same, except it is compiled for the specific dsPIC that is installed in each. As such, the firmware is specific to the VOTER or the RTCM, and is NOT interchangeable (it won't boot in the wrong device). Firmware for the RTCM is denoted by &amp;quot;smt&amp;quot; in the filename.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are '''two parts''' to the firmware, a bootloader, and then the actual firmware file. The bootloader starts when power is applied, and allows you to talk to the dsPIC and load new firmware files over ethernet. If the bootloader is not intercepted by the loading tool, it will continue to boot the current firmware file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All new boards will need to have the bootloader installed first, followed by a firmware file. You '''can''' load a firmware file directly (.hex) in to the dsPIC, but then you will not have any of the bootloader remote loading features.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The current bootloader (.cof file) is available here: https://github.com/AllStarLink/voter/tree/master/voter-bootloader (the -smt file is for the RTCM). It needs to be loaded with a PICKit programmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Current firmware (.cry file) is available here: https://github.com/AllStarLink/voter/tree/master/board-firmware . They are loaded with the EBLEX C30 Programmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are multiple &amp;quot;flavors&amp;quot; of firmware available. See below for further explanation of what all the options mean.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The DSPBEW versions have Jim's DSP/BEW feature enabled. Note that due to the size of this feature, the diagnostics menu is NOT available in this version.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CHUCK versions have Chuck Henderson's RSSI and Squelch modifications enabled. This is probably the version that most user's will want to use in production.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Compiling Environment==&lt;br /&gt;
If you look in the [https://github.com/AllStarLink/voter/blob/master/votersystem.pdf votersystem.pdf], you will find a procedure to modify and load the bootloader in to the dsPIC of a VOTER board. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Unfortunately, there is an important step '''missing''' in that procedure, which is covered below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In addition, the old links for the MPLAB software are dead, so let's update this info and get you going.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Currently (Feb 2017), you can get the required software from:&lt;br /&gt;
:http://www.microchip.com/development-tools/downloads-archive&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download MPLAB IDE 32-bit Windows v8.66:&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_IDE_v8_66.zip&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/MPLAB_IDE_v8_66.zip&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download MPLAB C Compiler for PIC24 and dsPIC DSCs v3.31 '''NOT v.3.25''':&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Optionally, install Windows Virtual PC and XP Mode. This is getting to be pretty old software, so running it under XP Mode may be a good idea, so we can keep it isolated (install it in a virtual machine). It does run fine in Windows 7.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To setup the compile/build environment, follow these steps:&lt;br /&gt;
*Run the MPLAB IDE installer. You don't need to install the HI-TECH C Compiler at the end (click no)&lt;br /&gt;
*Run the MPLAB C Compiler installer&lt;br /&gt;
*Select Legacy Directory Name&lt;br /&gt;
*'''Select Lite Compiler'''&lt;br /&gt;
*Go to: https://github.com/AllStarLink&lt;br /&gt;
*Follow the links to: voter --&amp;gt; Clone or Download --&amp;gt; Download Zip. That will get you voter-master.zip which is a download of the whole VOTER tree from GitHub.&lt;br /&gt;
*Extract it somewhere (ie. in the XP Mode Virtual PC)&lt;br /&gt;
*Launch the MPLAB IDE&lt;br /&gt;
*Go to Configure --&amp;gt; Settings --&amp;gt; Projects and de-select one-to-one project mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bootloader==&lt;br /&gt;
If you need to load the bootloader in to a fresh board, you will need to follow these steps:&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; voter-bootloader.mcp --&amp;gt; Open (it is in the voter-bootloader folder of the GitHub source)&lt;br /&gt;
*Go to File --&amp;gt; Import --&amp;gt; voter-bootloader --&amp;gt; ENC_C30.cof --&amp;gt; Open '''This step is missing from the original procedure.'''&lt;br /&gt;
*Remove JP7 on the VOTER Board. This is necessary to allow programming by the PICKit2/PICKit3 device.&lt;br /&gt;
*Attach the PICKIT2/PICKit3 device to J1 on the VOTER board. Note that Pin 1 is closest to the power supply modules (as indicated on the board).&lt;br /&gt;
*If you have not already selected a programming device, go to Programmer --&amp;gt; Select Device and choose PICKit3 (or PICKit2, depending on what you are using).&lt;br /&gt;
*Go to Programmer --&amp;gt; Program. This will program the bootloader firmware into the PIC device on the board.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to change the default IP address from 192.168.1.11 in the bootloader:&lt;br /&gt;
*Select View --&amp;gt; Program Memory (from the top menu bar)&lt;br /&gt;
*Hit Control-F (to &amp;quot;find&amp;quot;) and search for the digits &amp;quot;00A8C0&amp;quot;.&lt;br /&gt;
*These should be found at memory address &amp;quot;03018&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;A8C0&amp;quot; at 03018 represents the hex digits C0 (192) and A8 (168) which are the first two octets of the IP address. The six digits to enter are 00 then the SECOND octet of the IP address in hex then the FIRST octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;0B01&amp;quot; at 0301A represents the hex digits 0B (11) and 01 (1) which are the second two octets of the IP address. The six digits to enter are 00 then the FOURTH octet of the IP address in hex then the THIRD octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you have modified the address to your desired IP, follow the programming procedure (above).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Firmware==&lt;br /&gt;
To compile the firmware (if you want to make custom changes):&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; navigate to board-firmware and open the .mcp file for the flavor of firmware you want to compile. They are in the board-firmware folder of the GitHub source.&lt;br /&gt;
*'''NOTE''': the .mcp files with the &amp;quot;smt&amp;quot; suffix are for the RTCM (built with SMT parts). The non-smt files are for the ORIGINAL through-hole VOTER boards. The difference is that the VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
*Go to Project --&amp;gt; Build Configuration and select &amp;quot;Release&amp;quot;. This may not be necessary (I don't believe that option is used in the firmware), but it removes the compiler option of __DEBUG being passed, so theoretically it would build &amp;quot;normal&amp;quot; firmware.&lt;br /&gt;
*Go to Configure --&amp;gt; Select Device and choose the appropriate device for your board from the Device list. If you don't select the right one, the board will not boot. Select dsPIC33FJ128GP802 for the VOTER, and dsPIC33FJ128GP804 for the RTCM.&lt;br /&gt;
*Now, if you go to Project --&amp;gt; Build All it should compile everything and show you &amp;quot;Build Succeeded&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A .cry file should be in the board-firmware folder. You can load this with the ENC Loader.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is also a .hex file in there that you could load with a programmer... but that would wipe the bootloader... so don't do that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Chuck Squelch==&lt;br /&gt;
If you want to enable &amp;quot;Chuck Squelch&amp;quot;, open the HardwareProfile.h and un-comment #define CHUCK. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may also want to go down to Line 291 in Voter.c (right click on the window, go to Properties --&amp;gt; &amp;quot;C&amp;quot; File Types --&amp;gt; Line Numbers) and tack on CHUCK after 1.60 (the current version number) so that when you load this firmware, the version will be shown as 1.51CHUCK, and you'll know that Chuck Squelch is compiled in. We should probably make that more automagic in the future...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==DSP/BEW==&lt;br /&gt;
If you want to compile the DSPBEW version, open the DSPBEW project file instead.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DSP/BEW Firmware Version=&lt;br /&gt;
DSP BEW Firmware is mutually exclusive with the diagnostic menu. There is not enough space for both, if you load the DSP/BEW firmware, you will '''NOT''' have a diag menu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BEW stands for Baseband Examination Window.&lt;br /&gt;
&lt;br /&gt;
Typically, the discriminator of an FM communications receiver produces results containing audio spectrum from the &amp;quot;sub-audible&amp;quot; range (typically &amp;lt; 100 Hz) to well above frequencies able to be produced by modulating audio. These higher frequencies can be utilized to determine signal quality, since they can only contain noise (or no noise, if a sufficiently strong signal is present).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For receivers (such as the Motorola Quantar, etc) that do not provide sufficient spectral content at these &amp;quot;noise&amp;quot; frequencies (for various reasons), The &amp;quot;DSP/BEW (Digital Signal Processor / Baseband Examination Window)&amp;quot; feature of the RTCM firmware may be utilized. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These receivers are perfectly capable of providing valid &amp;quot;noise&amp;quot; signal with no modulation on the input of the receiver, but with strong modulation (high frequency audio and high deviation), it severely interferes with proper analysis of signal strength.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This feature provides a means by which a &amp;quot;Window&amp;quot; of baseband (normal audio range) signal is examined by a DSP and a determination of whether or not sufficient audio is present to cause interference of proper signal strength is made. During the VERY brief periods of time when it is determined that sufficient audio is present to cause interference, the signal strength value is &amp;quot;held&amp;quot; (the last valid value previous to the time of interference) until such time that the interfering audio is no longer present.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The DSP/BEW feature is selectable, and '''should not''' be used for a receiver that does not need it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A note on the Motorola SLR5700 per VE7FET. DSP/BEW definitely makes a difference on what AllMon reports for the signal strength of received signals. It is less reactive when DSP/BEW = 1 than with it set to 0. We'll have to see what the real world trials show. It might be better to leave it off.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Chuck Squelch=&lt;br /&gt;
&amp;quot;Chuck Squelch&amp;quot; are a couple firmware changes made by Chuck Henderson, WB9UUS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pre-compiled firmware versions including this option are available on [https://github.com/AllStarLink/voter/tree/master/board-firmware GitHub]. See above on how it is enabled/compiled, if you are rolling your own firmware modifications.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
One of the changes fixes an issue with weak signals producing RSSI readings all over the place. It is caused by a 16 bit value that was overflowing (it is the RSSI change in the firmware). It results in rock-solid RSSI values being reported, even on barely or non-readable signals. '''This change will likely be rolled in to a permanent fix in a future firmware release.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The other firmware change changes how the squelch responds (looks at the noise in the last two audio samples) and makes the &amp;quot;Micor squelch&amp;quot; action work better.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may also want to consider the following changes in /etc/asterisk/voter.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;Comment out:&lt;br /&gt;
;thresholds =&lt;br /&gt;
&lt;br /&gt;
;and set:&lt;br /&gt;
linger = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Squelch Issues=&lt;br /&gt;
*If anyone is off frequency a little bit, that will make the voice talk off worse. Double check that the repeater and the users are all on frequency.&lt;br /&gt;
*Don't use narrow bandwidth on the repeater receiver. &lt;br /&gt;
*Make sure that the discriminator audio is not rolled off even a little bit at the high end. There should not be resistors in series or capacitors to ground between the discriminator chip output pin and the voter board input, for best results.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Motorola Quantar==&lt;br /&gt;
Some things to consider:&lt;br /&gt;
*Install JP1 on the Quantar's RTCM. The squelch should calibrate at around 4 blinks rather than the 12 blinks or so without JP1.&lt;br /&gt;
*Be sure you've done the diode and squelch calibration with the actual attached radio (no antenna). &lt;br /&gt;
*The Quantar firmware should be 20.14.48 as later versions have better noise output. &lt;br /&gt;
*Try the &amp;quot;Chuck Squelch&amp;quot; RTCM version.&lt;br /&gt;
*Each RTCM should have 3 to 5 turns past threshold to prevent the squelch form being too loose. Somewhere around the 350 level seems about right. Chuck Squelch seems to need fewer turns but YMMV.&lt;br /&gt;
*Don't &amp;quot;and&amp;quot; CTCSS with squelch. That may override the RTCM's squelch detection. Compare with CTCSS on and off to see effect if any.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM/VOTER LED's=&lt;br /&gt;
RX LED on the RTCM/VOTER will flash (same rate as ACT LED) if you have External CTCSS enabled, and the received signal has the wrong (or no) valid PL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Menus=&lt;br /&gt;
==Main Menu==&lt;br /&gt;
This is what a typical Main Menu looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Select the following values to View/Modify:&lt;br /&gt;
&lt;br /&gt;
1  - Serial # (0000) (which is MAC ADDR 00:04:A3:00:00:00)&lt;br /&gt;
2  - VOTER Server Address (FQDN) (44.128.1.1)&lt;br /&gt;
3  - VOTER Server Port (667),  4  - Local Port (Override) (0)&lt;br /&gt;
5  - Client Password (password1),  6  - Host Password (hostpass1)&lt;br /&gt;
7  - Tx Buffer Length (800)&lt;br /&gt;
8  - GPS Data Protocol (0=NMEA, 1=TSIP) (1)&lt;br /&gt;
9  - GPS Serial Polarity (0=Non-Inverted, 1=Inverted) (1)&lt;br /&gt;
10 - GPS PPS Polarity (0=Non-Inverted, 1=Inverted, 2=NONE) (0)&lt;br /&gt;
11 - GPS Baud Rate (9600)&lt;br /&gt;
12 - External CTCSS (0=Ignore, 1=Non-Inverted, 2=Inverted) (0)&lt;br /&gt;
13 - COR Type (0=Normal, 1=IGNORE COR, 2=No Receiver) (0)&lt;br /&gt;
14 - Debug Level (0)&lt;br /&gt;
15  - Alt. VOTER Server Address (FQDN) ()&lt;br /&gt;
16  - Alt. VOTER Server Port (Override) (0)&lt;br /&gt;
17  - DSP/BEW Mode (0)&lt;br /&gt;
18 - &amp;quot;Duplex Mode 3&amp;quot; (0=DISABLED, 1-255 Hang Time) (1/10 secs) (0)&lt;br /&gt;
19 - Simulcast Launch Delay (0) (approx 200 ns, 5 = 1us, &amp;gt; 0 to ENA SC)&lt;br /&gt;
97 - RX Level,  98 - Status,  99 - Save Values to EEPROM&lt;br /&gt;
i - IP Parameters menu, o - Offline Mode Parameters menu&lt;br /&gt;
q - Disconnect Remote Console Session, r - reboot system, d - diagnostics&lt;br /&gt;
&lt;br /&gt;
Enter Selection (1-27,97-99,r,q,d) :&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==IP Parameters Menu==&lt;br /&gt;
This is what a typical IP Parameters Menu looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP Parameters Menu&lt;br /&gt;
&lt;br /&gt;
Select the following values to View/Modify:&lt;br /&gt;
&lt;br /&gt;
1  - (Static) IP Address (44.128.1.2)&lt;br /&gt;
2  - (Static) Netmask (255.255.255.0)&lt;br /&gt;
3  - (Static) Gateway (44.128.1.254)&lt;br /&gt;
4  - (Static) Primary DNS Server (44.128.1.254)&lt;br /&gt;
5  - (Static) Secondary DNS Server (0.0.0.0)&lt;br /&gt;
6  - DHCP Enable (0)&lt;br /&gt;
7  - Telnet Port (23)&lt;br /&gt;
8  - Telnet Username (admin)&lt;br /&gt;
9  - Telnet Password (radios)&lt;br /&gt;
10 - DynDNS Enable (0)&lt;br /&gt;
11 - DynDNS Username (wb6nil)&lt;br /&gt;
12 - DynDNS Password (radios42)&lt;br /&gt;
13 - DynDNS Host (voter-test.dyndns.org)&lt;br /&gt;
14 - BootLoader IP Address (192.168.1.10) (OK)&lt;br /&gt;
15 - Ethernet Duplex (0=Half, 1=Full) (1)&lt;br /&gt;
99 - Save Values to EEPROM&lt;br /&gt;
x  - Exit IP Parameters Menu (back to main menu)&lt;br /&gt;
q  - Disconnect Remote Console Session, r - reboot system&lt;br /&gt;
&lt;br /&gt;
Enter Selection (1-14,99,c,x,q,r) :&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Offline Parameters Menu==&lt;br /&gt;
This is what a typical Offline Parameters Menu looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
OffLine Mode Parameters Menu&lt;br /&gt;
&lt;br /&gt;
Select the following values to View/Modify:&lt;br /&gt;
&lt;br /&gt;
1  - Offline Mode (0=NONE, 1=Simplex, 2=Simplex w/Trigger, 3=Repeater) (3)&lt;br /&gt;
2  - CW Speed (400) (1/8000 secs)&lt;br /&gt;
3  - Pre-CW Delay (4000) (1/8000 secs)&lt;br /&gt;
4  - Post-CW Delay (4000) (1/8000 secs)&lt;br /&gt;
5  - CW &amp;quot;Offline&amp;quot; (ID) String (WB6NIL)&lt;br /&gt;
6  - CW &amp;quot;Online&amp;quot; String (OK)&lt;br /&gt;
7  - &amp;quot;Offline&amp;quot; (CW ID) Period Time (6000) (1/10 secs)&lt;br /&gt;
8  - Offline Repeat Hang Time (15) (1/10 secs)&lt;br /&gt;
9  - Offline CTCSS Tone (0.0) Hz&lt;br /&gt;
10 - Offline CTCSS Level (0-32767) (3000)&lt;br /&gt;
11 - Offline De-Emphasis Override (0=NORMAL, 1=OVERRIDE) (0)&lt;br /&gt;
99 - Save Values to EEPROM&lt;br /&gt;
x  - Exit OffLine Mode Parameter Menu (back to main menu)&lt;br /&gt;
q  - Disconnect Remote Console Session, r - reboot system&lt;br /&gt;
&lt;br /&gt;
Enter Selection (1-9,99,c,x,q,r) :&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Configuration Options=&lt;br /&gt;
==Main Menu Options==&lt;br /&gt;
===Serial #===&lt;br /&gt;
Sets the serial number for the RTCM/VOTER.&lt;br /&gt;
*This sets the MAC address of the unit.&lt;br /&gt;
*Each unit must have a unique serial number on your network segment.&lt;br /&gt;
&lt;br /&gt;
===VOTER Server Address (FQDN)===&lt;br /&gt;
This is the DNS name or IP address of the Asterisk server you are connecting to.&lt;br /&gt;
&lt;br /&gt;
===VOTER Server Port===&lt;br /&gt;
This is the UDP port that the Asterisk server is listening on for clients.&lt;br /&gt;
*Typically it is left at the default of port 667.&lt;br /&gt;
*'''MUST''' match the ''port'' directive in ''voter.conf''.&lt;br /&gt;
&lt;br /&gt;
===Local Port (Override)===&lt;br /&gt;
Sets the local unit UDP port to be something different.&lt;br /&gt;
*This is typically not used and left at default (0).&lt;br /&gt;
&lt;br /&gt;
===Client Password===&lt;br /&gt;
This is the '''unique''' password for this unit.&lt;br /&gt;
*Every unit '''must''' have a '''unique''' password.&lt;br /&gt;
*'''MUST''' match the password on the client configuration line in ''voter.conf''.&lt;br /&gt;
&lt;br /&gt;
===Host Password===&lt;br /&gt;
This is the password of the Asterisk server.&lt;br /&gt;
*Configured with the ''password'' directive in ''voter.conf''.&lt;br /&gt;
&lt;br /&gt;
===Tx Buffer Length===&lt;br /&gt;
This is the size of the TX buffer from the RTCM/VOTER to the Asterisk server.&lt;br /&gt;
*Tuned parameter, set via the tuning instructions based on network configuration.&lt;br /&gt;
&lt;br /&gt;
===GPS Data Protocol (0=NMEA, 1=TSIP)===&lt;br /&gt;
Type of GPS connected.&lt;br /&gt;
*NMEA for all non-Trimble GPS units.&lt;br /&gt;
*TSIP to use with Trimble GPS that use Trimble Serial Interface Protocol (TSIP).&lt;br /&gt;
&lt;br /&gt;
===GPS Serial Polarity (0=Non-Inverted, 1=Inverted)===&lt;br /&gt;
GPS dependent setting. &lt;br /&gt;
*Depends on if you are sending TTL or RS-232 data, adjust as needed.&lt;br /&gt;
&lt;br /&gt;
===GPS PPS Polarity (0=Non-Inverted, 1=Inverted, 2=NONE)===&lt;br /&gt;
GPS dependent setting. &lt;br /&gt;
*Depends on if you are sending TTL or RS-232 data for the PPS signal, adjust as needed.&lt;br /&gt;
*If not using GPS or configuring as a mixed client, set to 2 (None).&lt;br /&gt;
&lt;br /&gt;
===GPS Baud Rate===&lt;br /&gt;
Communication speed for the GPS, default is 9600.&lt;br /&gt;
&lt;br /&gt;
===External CTCSS (0=Ignore, 1=Non-Inverted, 2=Inverted)===&lt;br /&gt;
If you are using the CTCSS input from an external CTCSS decoder, adjust this for your logic polarity, or set to 0 (ignore) if not used.&lt;br /&gt;
&lt;br /&gt;
===COR Type (0=Normal, 1=IGNORE COR, 2=No Receiver)===&lt;br /&gt;
Typically, this is left at Normal. &lt;br /&gt;
*Set to 1 (Ignore COR), if you are using the External CTCSS input.&lt;br /&gt;
&lt;br /&gt;
===Debug Level===&lt;br /&gt;
Set the Debug Level, if needed, based on the [[#Debug Options | Debug Options]] below.&lt;br /&gt;
&lt;br /&gt;
===Alt. VOTER Server Address (FQDN)===&lt;br /&gt;
If you are using redundant Asterisk servers, set the IP/DNS address of the redundant server here.&lt;br /&gt;
&lt;br /&gt;
===Alt. VOTER Server Port (Override)===&lt;br /&gt;
If the redundant Asterisk server UDP port is not 667, set it here.&lt;br /&gt;
&lt;br /&gt;
===DSP/BEW Mode===&lt;br /&gt;
If the firmware supports DSP/BEW Mode, set this to 1 to enable it, if desired.&lt;br /&gt;
*DSP/BEW firmware versions use extra firmware space and will make the diagnostic menu unavailable.&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Duplex Mode 3&amp;quot; (0=DISABLED, 1-255 Hang Time) (1/10 secs)===&lt;br /&gt;
If you are using Duplex Mode 3, set the hang time here to enable the option. Most users leave this disabled.&lt;br /&gt;
&lt;br /&gt;
===Simulcast Launch Delay===&lt;br /&gt;
If you are using Simulcast, set your launch delay here.&lt;br /&gt;
&lt;br /&gt;
===RX Level===&lt;br /&gt;
This opens the RX Level tuning screen to adjust the receive audio level from the repeater.&lt;br /&gt;
&lt;br /&gt;
===Status===&lt;br /&gt;
This opens the status menu, showing some of the current operating parameters.&lt;br /&gt;
&lt;br /&gt;
===Save Values to EEPROM===&lt;br /&gt;
Save all the options to non-volatile EEPROM.&lt;br /&gt;
*Make sure to save after you make any changes.&lt;br /&gt;
&lt;br /&gt;
===IP Parameters menu===&lt;br /&gt;
Open the IP Parameters Menu.&lt;br /&gt;
&lt;br /&gt;
===Offline Mode Parameters menu===&lt;br /&gt;
Open the Offline Mode Parameters Menu.&lt;br /&gt;
&lt;br /&gt;
===Disconnect Remote Console Session===&lt;br /&gt;
If you are connected via Telnet, this will exit your session.&lt;br /&gt;
&lt;br /&gt;
===Reboot System===&lt;br /&gt;
Reboot the VOTER/RTCM.&lt;br /&gt;
*This should be done after making configuration changes.&lt;br /&gt;
*Some setting changes require a reboot to become effective.&lt;br /&gt;
&lt;br /&gt;
===Diagnostics===&lt;br /&gt;
Open the Diagnostics Menu.&lt;br /&gt;
*Diagnostics are unavailable if you are using DSP/BEW firmware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Network Information=&lt;br /&gt;
==RTCM/VOTER Bandwidth==&lt;br /&gt;
Assuming ulaw... The RTCM will require approximately 80kbps of bandwidth for continual usage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Network Quality==&lt;br /&gt;
Your IP Network quality is important. You may wish to add a rule in your routers to prioritize traffic on UDP port 667 so that RTCM audio is given priority over other &lt;br /&gt;
traffic. Also see the [[#Debug Options]] below for notes on how to tag your packets with ToS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==RX/TX Buffers are NOT Both Millisecond Values== &lt;br /&gt;
You might assume an RX buffer (in voter.conf) of 120ms would be equivalent of a TX buffer (in the RTCM) of 120ms. That is not the case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The TX buffer is a number of 125 '''microsecond''' intervals, where the RX buffer is in milliseconds. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you follow the buffer setting instructions, you should be fine, in most cases. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Debug Options=&lt;br /&gt;
The VOTER/RTCM firmware supports some additional debugging information that can be turned on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
From the source code, the different Debug Options are listed as:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1 - Alt/Main Host change notifications&lt;br /&gt;
2 - Ignore HWlock (GGPS only)&lt;br /&gt;
4 - GPS/PPS Failure simulation (GGPS only)&lt;br /&gt;
8 - POCSAG H/W output disable (GGPS only)&lt;br /&gt;
16 - IP TOS Class for Ubiquiti&lt;br /&gt;
32 - GPS Debug&lt;br /&gt;
64 - Fix GPS 1 second off&lt;br /&gt;
128 - Fix GPS 1 month off (WTF,O??)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Not sure what they all do, but that is what they are. Here are the most common ones used:&lt;br /&gt;
*&amp;quot;Alt/Main Host change notifications&amp;quot; &lt;br /&gt;
**shows when the connection to the Asterisk server changes state.&lt;br /&gt;
*&amp;quot;IP TOS Class for Ubiquity&amp;quot; &lt;br /&gt;
**marks the IP headers from the RTCM/VOTER '''TO''' the network with ToS C0/DSCP 48 (UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS latency). Other sources show this as a Network Control TOS.) If you enable this, you also will want to have &amp;quot;utos=y&amp;quot; in your voter.conf to mark the packets from the network '''TO''' the RTCM/VOTER. We will probably change this option to mark the packets by default in a future version.&lt;br /&gt;
*&amp;quot;GPS Debug&amp;quot; &lt;br /&gt;
**will print NMEA or TSIP debug strings from the connected GPS.&lt;br /&gt;
*&amp;quot;Fix GPS 1 second off&amp;quot;&lt;br /&gt;
**this is for NMEA GPS '''only'''. It will add one second to the time.&lt;br /&gt;
*&amp;quot;Fix GPS 1 month off (WTF,O??)&amp;quot;&lt;br /&gt;
**this is for TSIP GPS '''only'''. It will effectively add a month to the date. The mktime function normally needs one month subtracted from the raw month it converts to a time/date string. Maybe there are some GPS out there that do that automatically? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The way this works is you add together the options you want to enable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Want to enable GPS Debug and IP ToS, set debug to 48.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just want to turn on GPS Debug, set debug to 32.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just want ToS turned on, set debug to 16.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Un-documented Menus/Features=&lt;br /&gt;
*Menu 96 - If firmware compiled with DUMPENCREGS enabled, Menu 96 looks like it dumps the registers from the ENC (Ethernet) chip?&lt;br /&gt;
&lt;br /&gt;
*Menu 111 - show the &amp;quot;hidden&amp;quot; option values (normally they should all be 0).&lt;br /&gt;
&lt;br /&gt;
*Menu 11780 - set the &amp;quot;Elkes&amp;quot; value. Developed for Pete Elkes, this is for solar type sites. It shuts off the Tx after a period of no Rx activity.&lt;br /&gt;
&lt;br /&gt;
*Menu 1103 - set the &amp;quot;Glaser&amp;quot; timer value? No idea what this does.&lt;br /&gt;
&lt;br /&gt;
*Menu 1170 - set &amp;quot;Sawyer Mode&amp;quot;. Developed for Tim Sawyer use on Yaesu VXR5000 repeater. It modifies de-ephasis behavior when on/off line. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Audio=&lt;br /&gt;
The RTCM/VOTER is totally flexible regarding emphasis. Although the way it is set is completely obscure. It tries to automatically do the right thing for you, which is great most of the time. But when it’s not, it's hard to know what is going on. &lt;br /&gt;
&lt;br /&gt;
If you are changing the COR Type settings, or nodeemp in voter.conf, make sure you save/reboot the RTCM/VOTER every time you make a change... changes are '''not''' effective until the RTCM/VOTER reboots!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Voting==&lt;br /&gt;
Before we get in to the different ways audio is routed, there is an important consideration you need to make if you are using the RTCM/VOTER for voting. &lt;br /&gt;
&lt;br /&gt;
The way the voting process works, it needs '''discriminator audio''' to determine the signal to noise level from each satellite receiver. As such, you will need to be feeding discriminator audio in to the RX audio pin, so that the hardware/software can vote properly. That means you also need to let the hardware/software do the squelch action.&lt;br /&gt;
&lt;br /&gt;
If you need RX CTCSS, you'll need to feed logic from an external CTCSS decoder in to the CTCSS input pin.&lt;br /&gt;
&lt;br /&gt;
Also, don't disable COR in the RTCM/VOTER... it will cause it to disable the squelch and it will report an RSSI of 255 (full quieting) for all received signals.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Receiver De-emphasis==&lt;br /&gt;
On the RX side the COR Type setting in the RTCM/VOTER determines whether the de-emphasis filter is used for RX audio. 0=Normal means the RTCM/VOTER squelch circuit is in use and it is expecting discriminator audio on the RX pin (to be able to do the squelch action), and therefore it '''will''' provide de-emphasis (audio is routed THROUGH the de-emphasis RC filter circuit) to the receiver audio. COR Type 1=IGNORE COR uses the CTCSS input pin for COR or CTCSS ''logic'' and it then expects de-emphasized receive (line) audio on the RX pin, and therefore will '''not''' provide de-emphasis to the received audio (the RC filter is switched '''out''' and audio passes straight through). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Most of the time, you do NOT need to override the automatic filter selection. However, if you do, and you are sure you have a good reason to, you CAN switch the de-emphasis filter '''out''' of the circuit so that audio passes straight through to the encoder. You would do this by setting the nodeemp=1 option in voter.conf. When you set nodeemp=1, the ''VOTER Protocol'' tells the RTCM/VOTER to switch the filter '''out''', so audio is passed straight through.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Transmitter Pre-emhpasis==&lt;br /&gt;
On the TX side, the RTCM/VOTER expects the repeater to accept ''mic audio''. In other words, the '''repeater''' is providing the pre-emphasis, not the RTCM/VOTER (you are '''not''' directly modulating the TX). This can be overridden by setting CTCSS tone in voter.conf. If a CTCSS tone is defined, the RTCM '''will''' provide pre-emphasis to the audio, and expects that you will be connecting to your repeater's flat audio input (direct modulation). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you don’t want TX CTCSS tone but '''do''' need pre-emphasis, set an arbitrary (any) CTCSS tone in voter.conf, and set the level to 0. This will force the RTCM/VOTER to pre-emphasize the audio it generates on the TX pin, but it won't actually mix in a CTCSS tone. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Level Setting==&lt;br /&gt;
Setting the audio levels for the RTCM/VOTER is pretty straight forward. Just follow these steps:&lt;br /&gt;
*Ensure you have a connection to your host Asterisk server/chan_voter instance&lt;br /&gt;
*Send a 1kHz@3kHz on-channel, full-quieting signal in to the repeater's RX&lt;br /&gt;
*Set the RX up so it reads 3kHz deviation on the RTCM's built in console meter&lt;br /&gt;
*Now set the TX level '''pot''' to get 3kHz out of the transmitter (No PL)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now change the modulation from 1kHz tone to 800Hz followed by 1.8kHz and verify that the deviation level doesn't change as the tone frequency changes. '''Changing levels indicates a pre/de-emphasis issue.''' You will want to read the above sections on how audio is handled, and figure out where your issue is.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If using PL you have to account for that deviation, unless you filter it out with your IFR (test set). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That's it!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Optionally, if you are using the built-in &amp;quot;offline repeat&amp;quot; functions, fail the connection to the host Asterisk server, and make sure your repeat audio performs the same as above.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Crappy Transmit Audio==&lt;br /&gt;
&lt;br /&gt;
Does your repeated audio sounded really bassy, muffled, and not very understandable? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There was a situation where, compared to a typical simplex radio-to-radio transmission, the audio through the repeater (RTCM and Asterisk) was unacceptable. What was discovered was that the RTCM has an internal pre-emphasis function that was disabled. The user had intentionally disabled &amp;quot;txctcss&amp;quot; and &amp;quot;txctcsslevel&amp;quot; in voter.conf because he didn't &lt;br /&gt;
want the RTCM transmitting CTCSS (the Quantar was doing that already). He ultimately found a post on the mail list explaining the settings above that said enabling txctcss = some valid tone (114.8 in his case) and setting txctcsslevel = 0 would turn on the pre-emphasis function in the RTCM without transmitting CTCSS tones. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
He did, and it worked like a charm! Audio now had more treble and was less bassy/muffled. So, future RTCM users, be sure not to comment out txctcss and txctcsslevel in voter.conf!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just enable and set the level to 0. You'll thank me later. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=GPS=&lt;br /&gt;
The RTCM/VOTER will work with most GPS available. It requires either NMEA or Trimble TSIP binary data. It only receives data '''from''' the GPS (GPS TX), it does not send anything '''to''' the GPS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The firmware is specifically written to talk to Trimble Thunderbolt receivers using Trimble's TSIP binary data interface, however, other Trimbles GPS receivers that talk TSIP are generally compatible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==NMEA Sentences==&lt;br /&gt;
If you are using an NMEA GPS (as opposed to a Trimble using the TSIP binary interface), the RTCM/VOTER is looking for the following NMEA sentences:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$GPGGA&lt;br /&gt;
$GPGSV&lt;br /&gt;
$GPRMC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Lock==&lt;br /&gt;
The GPS led will go solid regardless of the connection LED. That '''has''' to happen or it won't connect to the Asterisk server. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is not unusual for it to take up to 20 mins to get a GPS lock LED (ie. using a Trimble Thunderbolt) after any reboot. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS De-sense==&lt;br /&gt;
If you are having odd loss of lock issues, consider you may have interference to your GPS antenna from strong RF nearby. A note from Jesse Lloyd:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I also had crazy problems with poor signal on my GPS when I set it up sitting in a window, and once installed at site I had the GPS antenna maybe 6 ft from the VHF antenna, and after some troubleshooting found it was getting swamped with RF and loosing lock. &lt;br /&gt;
&lt;br /&gt;
I found the debug setting of 32 useful in the RTCM, you can see a hex output of the GPS status.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Issues==&lt;br /&gt;
===Trimble Thunderbolt===&lt;br /&gt;
You may find your Trimble Thunderbolt is showing the incorrect date at the moment. It could be showing the year as 1997. This is due to the date in the Thunderbolt being reported incorrectly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''This can cause some of your voting receivers to not connect, if they are used with other GPS in your system.''' If you have '''ALL''' Thunderbolts, or '''NO''' Thunderbolts, you are probably fine. If you have '''ALL''' Thunderbolts, the date/time is probably wrong, but they will ALL be wrong, so they will connect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GPS Time is a continuous counting time scale beginning at the January 5, 1980 to January 6, 1980 midnight. It is split into two parts: a time of week measured in seconds from midnight Sat/Sun and a week number. The time of week is transmitted in an unambiguous manner by the satellites, but only the bottom 10 bits of the week number are transmitted. This means that a receiver will see a week number count that goes up steadily until it reaches 1023 after which it will “roll over” back to zero, before steadily going up again. Such a week rollover will occur approx. every 20 years. The last week rollover occurred in 1999 and the next one will be in 2019.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Thunderbolt manual states:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The ThunderBolt adjusts for this week rollover by adding 1024 to any week number reported by GPS which is less than week number 936 which began on December 14, 1997. With this technique, the ThunderBolt will provide an accurate translation of GPS week number and TOW to time and date until July 30, 2017.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As such, the Trimble Thunderbolt has a firmware issue with the GPS Week rollover that manifested itself on July 30, 2017, causing the date to become incorrect. The Thunderbolt thinks the week changed from 935 to 936 (actual week 1959-1024=935), so it stopped adding 1024 to the week.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We have added a brute-force fix starting in RTCM/VOTER firmware &amp;gt;=1.51. This fix adds 619315200 seconds (1024 weeks) to the time reported by the GPS. It fixes the Thunderbolts, we have not done extensive testing to see how it affects other TSIP receivers.&lt;br /&gt;
&lt;br /&gt;
===Garmin===&lt;br /&gt;
====Garmin 18x LVC Wiring Issues====&lt;br /&gt;
If you have issues with your GPS 18x LVC not talking to the RTCM/VOTER, it may not be hooked up to the RTCM correctly. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Garmin pin labeling is backwards to what you may think. See below. You probably need to swap pins 6 and 14.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RTCM   	                 GPS 18x LVC      &lt;br /&gt;
6 GRX 	&amp;lt;-- Rx Data 	 6 Green  &lt;br /&gt;
7 GPPS 	&amp;lt;-- Pulse Output 1 Yellow  &lt;br /&gt;
8 GND   Ground 		 3 Black  &lt;br /&gt;
8 GND   Ground 		 5 Black  &lt;br /&gt;
13 +5V 	--&amp;gt;Vin 		 2 Red  &lt;br /&gt;
14 GTX 	--&amp;gt; TX Data 	 4 White&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log into the RTCM and do 98 and you should see something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Current Time: Sun  Apr 20, 2014  04:37:02.820&lt;br /&gt;
Last Rx Pkt System time: 04/20/2014 03:55:35.580, diff: 2487260 msec&lt;br /&gt;
Last Rx Pkt Timestamp time: 04/20/2014 03:55:32.064, diff: 3515 msec&lt;br /&gt;
Last Rx Pkt index: 160, inbounds: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Garmin and the RTCM====&lt;br /&gt;
Beware when buying newer Garmin GPS's to use with the Micro-Node RTCM.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The RTCM expects a 5V PPS signal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Newer Garmin's (GPS 18X, 18X LVC, etc.) MAY NOT output 5V, and can cause issues. '''Check the Garmin datasheet'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER is designed to accept both 3.3V or 5V signals, and ''should'' work fine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==No GPS/Mixed Mode==&lt;br /&gt;
You do not need a timing source to use an RTCM if you don’t want to vote. That’s called Mix Mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Having the PPS Polarity set to 2 tells the RTCM you do not have a GPS. That forces the RTCM to become a mix (non-voting) client. Turn it on, save it, and restart. A simple voter.conf would look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[general]&lt;br /&gt;
port = 667&lt;br /&gt;
password = BLAH&lt;br /&gt;
&lt;br /&gt;
[1000]&lt;br /&gt;
Site1 = pswrd1,master,transmit&lt;br /&gt;
Site2 = pswrd2,transmit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mixed Client Error==&lt;br /&gt;
&amp;quot;I am getting this error in Asterisk&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WARNING[2368]: chan_voter.c:4511 voter_reader: Voter client master timing source mobile1 attempting to authenticate as mix client!!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A mixed client error means the voter.conf file is expecting an RTCM to try and connect with a GPS IP packet (ie. has '''master''' in it in voter.conf), but the RTCM isn't &lt;br /&gt;
sending a GPS IP packet. So its a mismatch between voter.conf and Option 10 in the RTCM. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to use a mix client (non-voted), make sure that receiver's configuration line in voter.conf '''does not''' have the '''master''' option set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mix Clients with Voted Client Issues==&lt;br /&gt;
&lt;br /&gt;
Situation...&lt;br /&gt;
&amp;quot;I have a private node with 6 voted receivers using RTCMs. I'd like to add a 7th RTCM to this node that is always mixed in rather than voted. I'm able to make this RTCM work as a 7th voted receiver with no problem. Everything I've read seems to indicate that if I change GPS PPS polarity to &amp;quot;none&amp;quot; this will achieve my desired results, however I am unable to get audio out of my transmit RTCM from this 7th site. It does change color to cyan in Allmon indicating it is non voted input but I do not get any indication or audio when that units COR goes active.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Setting voter debug level 3 in Asterisk and I'm seeing the following message repeatedly scrolling by in a blur when the mix client detects COR (COR is active). Sequence numbers are continually incrementing by 1. I'm running software version 1.47 on all my clients:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mix client (Mulaw) my_client index:0 their seq:629 our seq:629&lt;br /&gt;
mix client my_client outa bounds, resetting!!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have a similar situation to the above... check your buflen in voter.conf. Make sure it is at &amp;gt;=160 and see if that fixes it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Debug==&lt;br /&gt;
To turn on GPS Debugging, set the Debug Option Level in the RTCM/VOTER to 32.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [[#Debug Options]] levels for more information on how this works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Trimble Debug Status Decoding==&lt;br /&gt;
The VOTER/RTCM when in TSIP mode (Trimble), assumes it is a Trimble Thunderbolt and is looking for two packets:&lt;br /&gt;
*0x8F-AB - Primary Timing Packet&lt;br /&gt;
*0x8F-AC - Supplemental Timing Packet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Grab a copy of the Thunderbolt User Guide: http://leapsecond.com/pages/tbolt/Thunderbolt-2012-02.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pages 78-83 are the important ones.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Packet 0x8F-AB is what grabs the timing information, and packet 0x8F-AC is what it looks at for everything else (including debug).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The debug string that the VOTER/RTCM reports:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	printf(&amp;quot;GPS-DEBUG: TSIP: ok %d, 9 - 14: %02x %02x %02x %02x %02x %02x\n&amp;quot;,&lt;br /&gt;
					happy,gps_buf[9],gps_buf[10],gps_buf[11],gps_buf[12],gps_buf[13],gps_buf[14]);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, the 1 after ok is the &amp;quot;happy gps&amp;quot; flag. The other 5 bytes are supposed to be bytes 9-14 from the packet... sort of. They are bytes 9-14 of the buffer, but they are actually bytes 8-13 of the binary message.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Looking at the message structure, bytes 8-13 are:&lt;br /&gt;
*8-9 Critical Alarms&lt;br /&gt;
*10-11 Minor Alarms&lt;br /&gt;
*12 GPS Decoding Status&lt;br /&gt;
*13 Disciplining Activity&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Therefore, the messages you are seeing break down as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GPS-DEBUG: TSIP: ok 1, 9 - 14: 00 00 00 00 00 00 - everything is good in the 'hood, Doing Fixes, Phase Locking&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 18 08 06 - not happy, Not Tracking Satellites, Not Disciplining Oscillator (0x18 --&amp;gt; 0b000000011000), No Usable Sats, Inactive&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 08 08 05 - not happy, Not Tracking Satellites, No Useable Sats, Compensating OXCO (holdover)&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 00 00 05 - not happy, Compensating OXCO (holdover)&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 1, 9 - 14: 00 00 00 00 00 08 - happy, Recovery Mode&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 00 00 04 - not happy, Initializing Loop Filter&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The GPS is flagged as NOT HAPPY in TSIP mode if ANY of the following are TRUE:&lt;br /&gt;
*If GPS Decoding Status is anything other than &amp;quot;Doing Fixes&amp;quot;.&lt;br /&gt;
*If Disciplining Activity is not Phase Locking or Recovery Mode.&lt;br /&gt;
*Any Critical Alarms.&lt;br /&gt;
*Any Minor Alarms.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ubiquity ToS=&lt;br /&gt;
See https://help.ubnt.com/hc/en-us/articles/205231750-airMAX-How-is-QoS-and-prioritization-handled-by-airMAX-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, if we set ToS/DSCP in the header to C0, then Ubiquity (and other gear watching ToS) ''should'' prioritize the packets. This sets the DSCP to 110 000 aka 48. UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS latency). Other sources show this as a Network Control TOS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is an option in voter.conf to turn this on (utos=y). However, this only controls packets being sent from Asterisk '''TO''' the RTCM. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to tag packets from the RTCM '''TO''' Asterisk, you need to set the RTCM debug option level to 16 (see [[#Debug Options]] for how this works).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At some point we should probably change the default behaviour of the RTCM firmware to mark the packets and use the debug setting to '''disable''' ToS. That change (if you wanted to compile your own firmware) would be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Change line 90 in IP.c&lt;br /&gt;
&lt;br /&gt;
From:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? 0xc0 : (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY))&lt;br /&gt;
&lt;br /&gt;
To:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY) : 0xc0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This changes the conditional expression from if the debug level is 16 to mark the packets with DSCP 48 to if the debug level is 16, mark the packets routine (DSCP 0).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM Simulcasting=&lt;br /&gt;
The RTCM/VOTER boards do support simulcasting, however, there are a bunch of quirks that one needs to be aware of.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Radio Hardware==&lt;br /&gt;
For best results, you should use all identical RF equipment between your voting RX sites and simulcast TX sites. If you don't, you can end up with strange audio artifacts when different receivers are used, and other strange audio issues when different transmitters are used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==9.6MHz Oscillator==&lt;br /&gt;
If you want reliable simulcast with an acceptable level of overlap warble, you MUST inject a GPS-disciplined or OXCO 9.6MHz signal to the clock of the RTCM's, in lieu of their stock internal crystal. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Otherwise, the inherent internal clock jitter of the RTCM's will cause CTCSS warble, etc. in areas where your transmitters overlap. The 1 PPS feed that you normally feed the RTCM's is acceptable for voting, but naturally, a typical crystal-driven clock will slightly drift in between the pulses every second due to inherent jitter, etc., and that ain't to good for situations like simulcast which demand sample-accurate performance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are some comments from Joe, KC2IRV, on the subject. He has also created his own wiki, specific to simulcast issues, you can find it at: http://rtcmsimulcast.wikifoundry.com/ &lt;br /&gt;
&lt;br /&gt;
:I felt I needed to let those on this mailing list know my findings with simulcasting with the RTCM units since I have received a great deal of help and information from people on this list.&lt;br /&gt;
&lt;br /&gt;
:For the past week I have had a two (2) site simulcast system up and running on UHF using the RTCM units. I have done a great deal of testing and proving on the bench and it is so far working beautifully. &lt;br /&gt;
&lt;br /&gt;
:The one issue that was made apparent to me early on was that in order for the RTCM's to be suitable for simulcast, the processor inside it needed to be clocked to a more accurate source. This source is supposed to be the Programmable Clock Generator Module in order to produce a GPS locked 9.6 MHz reference for the processor. Unfortunately this unit is not currently available.&lt;br /&gt;
&lt;br /&gt;
:Knowing this, I started to go down the road of possibly designing my own, but stumbled upon a cheap, plentiful supply of Symmetricom 9.6 MHz sinewave OCXO's. I took a chance and ordered a few to experiment with to see if the RTCM would be able to use this in place of the supplied crystal for a clock. I found they did, with that I decided to modify the RTCM with an SMA connector just above the audio adjustment pots and use this OCXO. I trimmed the frequency on the units to match each other and used them to produce the processor clock.&lt;br /&gt;
&lt;br /&gt;
:After a week of testing, I have found the results in the overlap areas to be exactly as I would expect them on a public safety/commercial simulcast system. While in an overlap region where both transmitters are within 3dB of one another, to the ear you hear no audio phase wandering. Of course , this has only been a week of testing so I wouldn't call it case closed yet.&lt;br /&gt;
&lt;br /&gt;
:I will say that if this system remains this way after testing for 6 months to a year than using a 9.6 MHz OXCO is a viable alternative to achieve the needed precision and accuracy needed for the processor clock to make it suitable for simulcast.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Comments from Jim Dixon on the issue:&lt;br /&gt;
&lt;br /&gt;
:You have to use '''something''' that will take the precise 10MHz (or whatever it is) from the GPSDO and PLL (phase-locked) convert it to 9.6MHz (square wave at 3.3V for the CPU clock).&lt;br /&gt;
&lt;br /&gt;
:We had to use 9.6MHz mainly because of the DAC in the dsPIC instead of 10MHz. The options for various divide/clock radios in the part are RATHER limited. As I recall, there wasn't even a way of getting the necessary 16kb/s sample rate on the ADC from 10MHZ, either.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Micro-Node RTCM Clock Issue=&lt;br /&gt;
James, KI0KN, had some strange-ness with some of his RTCM's when used for voting. As soon as he changed menu item 10 on the RTCM to either a (1) or a (0) instead of (2), he '''instantly''' got this on the RTCM console:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
04/05/2016 18:44:13.660  Lost GPS Time synchronization&lt;br /&gt;
04/05/2016 18:44:13.660  Host Connection Lost (Pri) (10.16.1.240)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And it sits there forever and never re-establishes connection to the host. The issue was finally traced to a bad batch of 9.6MHz crystals that affected a small run of the RTCM's. The issue was eventually resolved by Micro-Node, but we'll document it here just for record keeping.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
James comments to the list:&lt;br /&gt;
&lt;br /&gt;
:Well, after many of you offered your time and thoughts on my voter problem, Jim, WB6NIL, graciously donated a couple of hours of his time to remotely help me and he uncovered the problem.&lt;br /&gt;
&lt;br /&gt;
:All 5 of my RTCMs were purchased within the last 6 months, and I suspect all 5 have the same problem (will verify that today). The problem is that the microprocessor crystal is running too fast! There is 9.6Mhz crystal that drives the MPU, on the particular unit that Jim helped me diagnose, it's running 2.5 khz too fast.  &lt;br /&gt;
&lt;br /&gt;
:There is a sanity check in the firmware that makes sure the correct number of samples were taken in the last second (it's supposed to be 8000) and fails if the sample is incorrectly sized (mine is taking 8003 samples).  Jim helped adjust the code to be more tolerant of the sampling error and my whole system instantly worked.&lt;br /&gt;
&lt;br /&gt;
:I have since tested it with ALL my GPSs (they all work great!). So I now have everything working, including the voting.&lt;br /&gt;
&lt;br /&gt;
:I haven't contact Micro-Node about it yet. Jim told me that voting should work fine but this clock error would probably not be acceptable for Simulcast (something we have no plans on doing as of now). Since mine are deployed at mountain top sites, I'll probably pursue a crystal that is running at the correct frequency and use &amp;quot;standard&amp;quot; firmware so that if the decision is ever made to play with simulcast, I won't be right back in this same boat.&lt;br /&gt;
&lt;br /&gt;
:Thanks to all that helped out, and a HUGE thanks to Jim for taking the time to troubleshoot this.&lt;br /&gt;
&lt;br /&gt;
:BTW- This clock error will NOT effect the RTCM in mix client mode, it only affects it in voting or simulcast mode!&lt;br /&gt;
&lt;br /&gt;
:In voter.c, the stock line is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if ((samplecnt &amp;gt;= 7999) &amp;amp;&amp;amp; (samplecnt &amp;lt;= 8001))&lt;br /&gt;
&lt;br /&gt;
it needs to be changed to something like:&lt;br /&gt;
&lt;br /&gt;
if ((samplecnt &amp;gt;= 7999) &amp;amp;&amp;amp; (samplecnt &amp;lt;= 8003 ))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:That was just enough to make my first RTCM work. I've had a chance now to check a few more of my RTCMs on the bench this morning and the crystal frequencies are kind of all over.  The next one I had on the bench was 5.2Khz fast. The above code was still not enough to fix it (as would be expected) so it looks like the quality control on whatever manufacturer that crystal is, isn't very good (or a low tolerance crystal is being used). I am going to pursue crystal replacement to get a highly accurate, stable, on-frequency crystal in there as my first choice. Changing the firmware 5 different times doesn't seem like the right answer.&lt;br /&gt;
&lt;br /&gt;
:Jim put that sanity check in there for a reason. Working around it '''may''' allow the device to work, but to me, it seems getting the hardware operating the way it was supposed to originally is the better answer. I will follow up with Micro-node and let you all know how it goes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After following up with Micro-Node:&lt;br /&gt;
:They were all off, some were off a LOT. I talked to Mark @ Micronode. He told me there were 25 units that made it out the door with a crystal from an unapproved source and that was quite likely the reason for the problem. He gladly sent me 5 new crystals to replace (he offered to replace them himself if I sent the units in, but I am comfortable doing it myself to save the time and postage). &lt;br /&gt;
&lt;br /&gt;
:I haven't received them in the mail yet to show that the problem is fixed, but I will post here when that happens. He was great to work with and had no issue getting things set straight. If you are having the same issue and your RTCMs were bought about the same time, I'd suggest you contact him and have him help you resolve the issue!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Duplex Mode 3=&lt;br /&gt;
Does delayed repeat audio bug you? Tired of hearing a bit of yourself after you unkey? Wish you could talk full duplex? Hate the echo chamber effect? Then we have the answer for you.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Duplex Mode 3 in app_rpt allows for &amp;quot;in-cabinet repeat&amp;quot; (where the radio hardware provides repeat audio) and app_rpt adds the hang time, courtesy tones, linking - all the &lt;br /&gt;
things apt_rpt does sans repeat audio. Therefore no repeat audio delay. Cool, eh? This duplex mode has been in app_rpt for a while. Problem has been how to implement it in the RTCM environment. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Duplex Mode 3 support in the RTCM provides in-cabinet repeat functionality. Repeat audio loops through the RTCM and has almost zero delay because it does not have to traverse the network. The delay is not quite zero but it's plenty short enough to eliminate all of the above mentioned annoyances. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Of course Duplex Mode 3 support can't be used with voting or simulcast. You also loose Touch Tone muting, Time Out Timer and Repeater Disable functions because the repeat path is not through app_rpt.&lt;/div&gt;</summary>
		<author><name>Ve7fet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=608</id>
		<title>RTCM Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=608"/>
		<updated>2017-10-24T02:27:11Z</updated>

		<summary type="html">&lt;p&gt;Ve7fet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Micro-Node RTCM and VOTER interfaces are typically used with AllStar in voting/simulcast applications. They MAY be used for ANY repeater interface application, through the chan_voter channel driver. The VOTER is the original through-hole board designed by Jim Dixon for this application. It is open-source, and the relevant Gerber files and BoM to build it are available. The [http://www.micro-node.com/thin-m1.shtml Micro-Node Radio Thin Client Module (RTCM)] is the commercial version of the VOTER. It uses surface mount parts (SMT), but is functionally equivalent to the original VOTER. In general, the two terms (RTCM/VOTER) are used interchangeably, as they operate the same, and use the same firmware (mostly, see below).&lt;br /&gt;
&lt;br /&gt;
This page will highlight some of the operational concerns, quirks, bugs, and other items of interest that relate to these interfaces. Much of the information has been gleaned off the AllStar mail list, comes from personal experience, or comes from notes in the firmware source code.&lt;br /&gt;
&lt;br /&gt;
=Firmware=&lt;br /&gt;
The firmware in the RTCM and VOTER is the same, except it is compiled for the specific dsPIC that is installed in each. As such, the firmware is specific to the VOTER or the RTCM, and is NOT interchangeable (it won't boot in the wrong device). Firmware for the RTCM is denoted by &amp;quot;smt&amp;quot; in the filename.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are '''two parts''' to the firmware, a bootloader, and then the actual firmware file. The bootloader starts when power is applied, and allows you to talk to the dsPIC and load new firmware files over ethernet. If the bootloader is not intercepted by the loading tool, it will continue to boot the current firmware file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All new boards will need to have the bootloader installed first, followed by a firmware file. You '''can''' load a firmware file directly (.hex) in to the dsPIC, but then you will not have any of the bootloader remote loading features.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The current bootloader (.cof file) is available here: https://github.com/AllStarLink/voter/tree/master/voter-bootloader (the -smt file is for the RTCM). It needs to be loaded with a PICKit programmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Current firmware (.cry file) is available here: https://github.com/AllStarLink/voter/tree/master/board-firmware . They are loaded with the EBLEX C30 Programmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are multiple &amp;quot;flavors&amp;quot; of firmware available. See below for further explanation of what all the options mean.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The DSPBEW versions have Jim's DSP/BEW feature enabled. Note that due to the size of this feature, the diagnostics menu is NOT available in this version.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CHUCK versions have Chuck Henderson's RSSI and Squelch modifications enabled. This is probably the version that most user's will want to use in production.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Compiling Environment==&lt;br /&gt;
If you look in the [https://github.com/AllStarLink/voter/blob/master/votersystem.pdf votersystem.pdf], you will find a procedure to modify and load the bootloader in to the dsPIC of a VOTER board. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Unfortunately, there is an important step '''missing''' in that procedure, which is covered below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In addition, the old links for the MPLAB software are dead, so let's update this info and get you going.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Currently (Feb 2017), you can get the required software from:&lt;br /&gt;
:http://www.microchip.com/development-tools/downloads-archive&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download MPLAB IDE 32-bit Windows v8.66:&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_IDE_v8_66.zip&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/MPLAB_IDE_v8_66.zip&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download MPLAB C Compiler for PIC24 and dsPIC DSCs v3.31 '''NOT v.3.25''':&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Optionally, install Windows Virtual PC and XP Mode. This is getting to be pretty old software, so running it under XP Mode may be a good idea, so we can keep it isolated (install it in a virtual machine). It does run fine in Windows 7.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To setup the compile/build environment, follow these steps:&lt;br /&gt;
*Run the MPLAB IDE installer. You don't need to install the HI-TECH C Compiler at the end (click no)&lt;br /&gt;
*Run the MPLAB C Compiler installer&lt;br /&gt;
*Select Legacy Directory Name&lt;br /&gt;
*'''Select Lite Compiler'''&lt;br /&gt;
*Go to: https://github.com/AllStarLink&lt;br /&gt;
*Follow the links to: voter --&amp;gt; Clone or Download --&amp;gt; Download Zip. That will get you voter-master.zip which is a download of the whole VOTER tree from GitHub.&lt;br /&gt;
*Extract it somewhere (ie. in the XP Mode Virtual PC)&lt;br /&gt;
*Launch the MPLAB IDE&lt;br /&gt;
*Go to Configure --&amp;gt; Settings --&amp;gt; Projects and de-select one-to-one project mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bootloader==&lt;br /&gt;
If you need to load the bootloader in to a fresh board, you will need to follow these steps:&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; voter-bootloader.mcp --&amp;gt; Open (it is in the voter-bootloader folder of the GitHub source)&lt;br /&gt;
*Go to File --&amp;gt; Import --&amp;gt; voter-bootloader --&amp;gt; ENC_C30.cof --&amp;gt; Open '''This step is missing from the original procedure.'''&lt;br /&gt;
*Remove JP7 on the VOTER Board. This is necessary to allow programming by the PICKit2/PICKit3 device.&lt;br /&gt;
*Attach the PICKIT2/PICKit3 device to J1 on the VOTER board. Note that Pin 1 is closest to the power supply modules (as indicated on the board).&lt;br /&gt;
*If you have not already selected a programming device, go to Programmer --&amp;gt; Select Device and choose PICKit3 (or PICKit2, depending on what you are using).&lt;br /&gt;
*Go to Programmer --&amp;gt; Program. This will program the bootloader firmware into the PIC device on the board.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to change the default IP address from 192.168.1.11 in the bootloader:&lt;br /&gt;
*Select View --&amp;gt; Program Memory (from the top menu bar)&lt;br /&gt;
*Hit Control-F (to &amp;quot;find&amp;quot;) and search for the digits &amp;quot;00A8C0&amp;quot;.&lt;br /&gt;
*These should be found at memory address &amp;quot;03018&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;A8C0&amp;quot; at 03018 represents the hex digits C0 (192) and A8 (168) which are the first two octets of the IP address. The six digits to enter are 00 then the SECOND octet of the IP address in hex then the FIRST octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;0B01&amp;quot; at 0301A represents the hex digits 0B (11) and 01 (1) which are the second two octets of the IP address. The six digits to enter are 00 then the FOURTH octet of the IP address in hex then the THIRD octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you have modified the address to your desired IP, follow the programming procedure (above).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Firmware==&lt;br /&gt;
To compile the firmware (if you want to make custom changes):&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; navigate to board-firmware and open the .mcp file for the flavor of firmware you want to compile. They are in the board-firmware folder of the GitHub source.&lt;br /&gt;
*'''NOTE''': the .mcp files with the &amp;quot;smt&amp;quot; suffix are for the RTCM (built with SMT parts). The non-smt files are for the ORIGINAL through-hole VOTER boards. The difference is that the VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
*Go to Project --&amp;gt; Build Configuration and select &amp;quot;Release&amp;quot;. This may not be necessary (I don't believe that option is used in the firmware), but it removes the compiler option of __DEBUG being passed, so theoretically it would build &amp;quot;normal&amp;quot; firmware.&lt;br /&gt;
*Go to Configure --&amp;gt; Select Device and choose the appropriate device for your board from the Device list. If you don't select the right one, the board will not boot. Select dsPIC33FJ128GP802 for the VOTER, and dsPIC33FJ128GP804 for the RTCM.&lt;br /&gt;
*Now, if you go to Project --&amp;gt; Build All it should compile everything and show you &amp;quot;Build Succeeded&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A .cry file should be in the board-firmware folder. You can load this with the ENC Loader.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is also a .hex file in there that you could load with a programmer... but that would wipe the bootloader... so don't do that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Chuck Squelch==&lt;br /&gt;
If you want to enable &amp;quot;Chuck Squelch&amp;quot;, open the HardwareProfile.h and un-comment #define CHUCK. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may also want to go down to Line 291 in Voter.c (right click on the window, go to Properties --&amp;gt; &amp;quot;C&amp;quot; File Types --&amp;gt; Line Numbers) and tack on CHUCK after 1.60 (the current version number) so that when you load this firmware, the version will be shown as 1.51CHUCK, and you'll know that Chuck Squelch is compiled in. We should probably make that more automagic in the future...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==DSP/BEW==&lt;br /&gt;
If you want to compile the DSPBEW version, open the DSPBEW project file instead.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DSP/BEW Firmware Version=&lt;br /&gt;
DSP BEW Firmware is mutually exclusive with the diagnostic menu. There is not enough space for both, if you load the DSP/BEW firmware, you will '''NOT''' have a diag menu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BEW stands for Baseband Examination Window.&lt;br /&gt;
&lt;br /&gt;
Typically, the discriminator of an FM communications receiver produces results containing audio spectrum from the &amp;quot;sub-audible&amp;quot; range (typically &amp;lt; 100 Hz) to well above frequencies able to be produced by modulating audio. These higher frequencies can be utilized to determine signal quality, since they can only contain noise (or no noise, if a sufficiently strong signal is present).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For receivers (such as the Motorola Quantar, etc) that do not provide sufficient spectral content at these &amp;quot;noise&amp;quot; frequencies (for various reasons), The &amp;quot;DSP/BEW (Digital Signal Processor / Baseband Examination Window)&amp;quot; feature of the RTCM firmware may be utilized. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These receivers are perfectly capable of providing valid &amp;quot;noise&amp;quot; signal with no modulation on the input of the receiver, but with strong modulation (high frequency audio and high deviation), it severely interferes with proper analysis of signal strength.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This feature provides a means by which a &amp;quot;Window&amp;quot; of baseband (normal audio range) signal is examined by a DSP and a determination of whether or not sufficient audio is present to cause interference of proper signal strength is made. During the VERY brief periods of time when it is determined that sufficient audio is present to cause interference, the signal strength value is &amp;quot;held&amp;quot; (the last valid value previous to the time of interference) until such time that the interfering audio is no longer present.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The DSP/BEW feature is selectable, and '''should not''' be used for a receiver that does not need it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A note on the Motorola SLR5700 per VE7FET. DSP/BEW definitely makes a difference on what AllMon reports for the signal strength of received signals. It is less reactive when DSP/BEW = 1 than with it set to 0. We'll have to see what the real world trials show. It might be better to leave it off.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Chuck Squelch=&lt;br /&gt;
&amp;quot;Chuck Squelch&amp;quot; are a couple firmware changes made by Chuck Henderson, WB9UUS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pre-compiled firmware versions including this option are available on [https://github.com/AllStarLink/voter/tree/master/board-firmware GitHub]. See above on how it is enabled/compiled, if you are rolling your own firmware modifications.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
One of the changes fixes an issue with weak signals producing RSSI readings all over the place. It is caused by a 16 bit value that was overflowing (it is the RSSI change in the firmware). It results in rock-solid RSSI values being reported, even on barely or non-readable signals. '''This change will likely be rolled in to a permanent fix in a future firmware release.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The other firmware change changes how the squelch responds (looks at the noise in the last two audio samples) and makes the &amp;quot;Micor squelch&amp;quot; action work better.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may also want to consider the following changes in /etc/asterisk/voter.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;Comment out:&lt;br /&gt;
;thresholds =&lt;br /&gt;
&lt;br /&gt;
;and set:&lt;br /&gt;
linger = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Squelch Issues==&lt;br /&gt;
*If anyone is off frequency a little bit, that will make the voice talk off worse. Double check that the repeater and the users are all on frequency.&lt;br /&gt;
*Don't use narrow bandwidth on the repeater receiver. &lt;br /&gt;
*Make sure that the discriminator audio is not rolled off even a little bit at the high end. There should not be resistors in series or capacitors to ground between the discriminator chip output pin and the voter board input, for best results.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM/VOTER LED's=&lt;br /&gt;
RX LED on the RTCM/VOTER will flash (same rate as ACT LED) if you have External CTCSS enabled, and the received signal has the wrong (or no) valid PL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Menus=&lt;br /&gt;
==Main Menu==&lt;br /&gt;
This is what a typical Main Menu looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Select the following values to View/Modify:&lt;br /&gt;
&lt;br /&gt;
1  - Serial # (0000) (which is MAC ADDR 00:04:A3:00:00:00)&lt;br /&gt;
2  - VOTER Server Address (FQDN) (44.128.1.1)&lt;br /&gt;
3  - VOTER Server Port (667),  4  - Local Port (Override) (0)&lt;br /&gt;
5  - Client Password (password1),  6  - Host Password (hostpass1)&lt;br /&gt;
7  - Tx Buffer Length (800)&lt;br /&gt;
8  - GPS Data Protocol (0=NMEA, 1=TSIP) (1)&lt;br /&gt;
9  - GPS Serial Polarity (0=Non-Inverted, 1=Inverted) (1)&lt;br /&gt;
10 - GPS PPS Polarity (0=Non-Inverted, 1=Inverted, 2=NONE) (0)&lt;br /&gt;
11 - GPS Baud Rate (9600)&lt;br /&gt;
12 - External CTCSS (0=Ignore, 1=Non-Inverted, 2=Inverted) (0)&lt;br /&gt;
13 - COR Type (0=Normal, 1=IGNORE COR, 2=No Receiver) (0)&lt;br /&gt;
14 - Debug Level (0)&lt;br /&gt;
15  - Alt. VOTER Server Address (FQDN) ()&lt;br /&gt;
16  - Alt. VOTER Server Port (Override) (0)&lt;br /&gt;
17  - DSP/BEW Mode (0)&lt;br /&gt;
18 - &amp;quot;Duplex Mode 3&amp;quot; (0=DISABLED, 1-255 Hang Time) (1/10 secs) (0)&lt;br /&gt;
19 - Simulcast Launch Delay (0) (approx 200 ns, 5 = 1us, &amp;gt; 0 to ENA SC)&lt;br /&gt;
97 - RX Level,  98 - Status,  99 - Save Values to EEPROM&lt;br /&gt;
i - IP Parameters menu, o - Offline Mode Parameters menu&lt;br /&gt;
q - Disconnect Remote Console Session, r - reboot system, d - diagnostics&lt;br /&gt;
&lt;br /&gt;
Enter Selection (1-27,97-99,r,q,d) :&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==IP Parameters Menu==&lt;br /&gt;
This is what a typical IP Parameters Menu looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP Parameters Menu&lt;br /&gt;
&lt;br /&gt;
Select the following values to View/Modify:&lt;br /&gt;
&lt;br /&gt;
1  - (Static) IP Address (44.128.1.2)&lt;br /&gt;
2  - (Static) Netmask (255.255.255.0)&lt;br /&gt;
3  - (Static) Gateway (44.128.1.254)&lt;br /&gt;
4  - (Static) Primary DNS Server (44.128.1.254)&lt;br /&gt;
5  - (Static) Secondary DNS Server (0.0.0.0)&lt;br /&gt;
6  - DHCP Enable (0)&lt;br /&gt;
7  - Telnet Port (23)&lt;br /&gt;
8  - Telnet Username (admin)&lt;br /&gt;
9  - Telnet Password (radios)&lt;br /&gt;
10 - DynDNS Enable (0)&lt;br /&gt;
11 - DynDNS Username (wb6nil)&lt;br /&gt;
12 - DynDNS Password (radios42)&lt;br /&gt;
13 - DynDNS Host (voter-test.dyndns.org)&lt;br /&gt;
14 - BootLoader IP Address (192.168.1.10) (OK)&lt;br /&gt;
15 - Ethernet Duplex (0=Half, 1=Full) (1)&lt;br /&gt;
99 - Save Values to EEPROM&lt;br /&gt;
x  - Exit IP Parameters Menu (back to main menu)&lt;br /&gt;
q  - Disconnect Remote Console Session, r - reboot system&lt;br /&gt;
&lt;br /&gt;
Enter Selection (1-14,99,c,x,q,r) :&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Offline Parameters Menu==&lt;br /&gt;
This is what a typical Offline Parameters Menu looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
OffLine Mode Parameters Menu&lt;br /&gt;
&lt;br /&gt;
Select the following values to View/Modify:&lt;br /&gt;
&lt;br /&gt;
1  - Offline Mode (0=NONE, 1=Simplex, 2=Simplex w/Trigger, 3=Repeater) (3)&lt;br /&gt;
2  - CW Speed (400) (1/8000 secs)&lt;br /&gt;
3  - Pre-CW Delay (4000) (1/8000 secs)&lt;br /&gt;
4  - Post-CW Delay (4000) (1/8000 secs)&lt;br /&gt;
5  - CW &amp;quot;Offline&amp;quot; (ID) String (WB6NIL)&lt;br /&gt;
6  - CW &amp;quot;Online&amp;quot; String (OK)&lt;br /&gt;
7  - &amp;quot;Offline&amp;quot; (CW ID) Period Time (6000) (1/10 secs)&lt;br /&gt;
8  - Offline Repeat Hang Time (15) (1/10 secs)&lt;br /&gt;
9  - Offline CTCSS Tone (0.0) Hz&lt;br /&gt;
10 - Offline CTCSS Level (0-32767) (3000)&lt;br /&gt;
11 - Offline De-Emphasis Override (0=NORMAL, 1=OVERRIDE) (0)&lt;br /&gt;
99 - Save Values to EEPROM&lt;br /&gt;
x  - Exit OffLine Mode Parameter Menu (back to main menu)&lt;br /&gt;
q  - Disconnect Remote Console Session, r - reboot system&lt;br /&gt;
&lt;br /&gt;
Enter Selection (1-9,99,c,x,q,r) :&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Configuration Options=&lt;br /&gt;
==Main Menu Options==&lt;br /&gt;
===Serial #===&lt;br /&gt;
Sets the serial number for the RTCM/VOTER.&lt;br /&gt;
*This sets the MAC address of the unit.&lt;br /&gt;
*Each unit must have a unique serial number on your network segment.&lt;br /&gt;
&lt;br /&gt;
===VOTER Server Address (FQDN)===&lt;br /&gt;
This is the DNS name or IP address of the Asterisk server you are connecting to.&lt;br /&gt;
&lt;br /&gt;
===VOTER Server Port===&lt;br /&gt;
This is the UDP port that the Asterisk server is listening on for clients.&lt;br /&gt;
*Typically it is left at the default of port 667.&lt;br /&gt;
*'''MUST''' match the ''port'' directive in ''voter.conf''.&lt;br /&gt;
&lt;br /&gt;
===Local Port (Override)===&lt;br /&gt;
Sets the local unit UDP port to be something different.&lt;br /&gt;
*This is typically not used and left at default (0).&lt;br /&gt;
&lt;br /&gt;
===Client Password===&lt;br /&gt;
This is the '''unique''' password for this unit.&lt;br /&gt;
*Every unit '''must''' have a '''unique''' password.&lt;br /&gt;
*'''MUST''' match the password on the client configuration line in ''voter.conf''.&lt;br /&gt;
&lt;br /&gt;
===Host Password===&lt;br /&gt;
This is the password of the Asterisk server.&lt;br /&gt;
*Configured with the ''password'' directive in ''voter.conf''.&lt;br /&gt;
&lt;br /&gt;
===Tx Buffer Length===&lt;br /&gt;
This is the size of the TX buffer from the RTCM/VOTER to the Asterisk server.&lt;br /&gt;
*Tuned parameter, set via the tuning instructions based on network configuration.&lt;br /&gt;
&lt;br /&gt;
===GPS Data Protocol (0=NMEA, 1=TSIP)===&lt;br /&gt;
Type of GPS connected.&lt;br /&gt;
*NMEA for all non-Trimble GPS units.&lt;br /&gt;
*TSIP to use with Trimble GPS that use Trimble Serial Interface Protocol (TSIP).&lt;br /&gt;
&lt;br /&gt;
===GPS Serial Polarity (0=Non-Inverted, 1=Inverted)===&lt;br /&gt;
GPS dependent setting. &lt;br /&gt;
*Depends on if you are sending TTL or RS-232 data, adjust as needed.&lt;br /&gt;
&lt;br /&gt;
===GPS PPS Polarity (0=Non-Inverted, 1=Inverted, 2=NONE)===&lt;br /&gt;
GPS dependent setting. &lt;br /&gt;
*Depends on if you are sending TTL or RS-232 data for the PPS signal, adjust as needed.&lt;br /&gt;
*If not using GPS or configuring as a mixed client, set to 2 (None).&lt;br /&gt;
&lt;br /&gt;
===GPS Baud Rate===&lt;br /&gt;
Communication speed for the GPS, default is 9600.&lt;br /&gt;
&lt;br /&gt;
===External CTCSS (0=Ignore, 1=Non-Inverted, 2=Inverted)===&lt;br /&gt;
If you are using the CTCSS input from an external CTCSS decoder, adjust this for your logic polarity, or set to 0 (ignore) if not used.&lt;br /&gt;
&lt;br /&gt;
===COR Type (0=Normal, 1=IGNORE COR, 2=No Receiver)===&lt;br /&gt;
Typically, this is left at Normal. &lt;br /&gt;
*Set to 1 (Ignore COR), if you are using the External CTCSS input.&lt;br /&gt;
&lt;br /&gt;
===Debug Level===&lt;br /&gt;
Set the Debug Level, if needed, based on the [[#Debug Options | Debug Options]] below.&lt;br /&gt;
&lt;br /&gt;
===Alt. VOTER Server Address (FQDN)===&lt;br /&gt;
If you are using redundant Asterisk servers, set the IP/DNS address of the redundant server here.&lt;br /&gt;
&lt;br /&gt;
===Alt. VOTER Server Port (Override)===&lt;br /&gt;
If the redundant Asterisk server UDP port is not 667, set it here.&lt;br /&gt;
&lt;br /&gt;
===DSP/BEW Mode===&lt;br /&gt;
If the firmware supports DSP/BEW Mode, set this to 1 to enable it, if desired.&lt;br /&gt;
*DSP/BEW firmware versions use extra firmware space and will make the diagnostic menu unavailable.&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Duplex Mode 3&amp;quot; (0=DISABLED, 1-255 Hang Time) (1/10 secs)===&lt;br /&gt;
If you are using Duplex Mode 3, set the hang time here to enable the option. Most users leave this disabled.&lt;br /&gt;
&lt;br /&gt;
===Simulcast Launch Delay===&lt;br /&gt;
If you are using Simulcast, set your launch delay here.&lt;br /&gt;
&lt;br /&gt;
===RX Level===&lt;br /&gt;
This opens the RX Level tuning screen to adjust the receive audio level from the repeater.&lt;br /&gt;
&lt;br /&gt;
===Status===&lt;br /&gt;
This opens the status menu, showing some of the current operating parameters.&lt;br /&gt;
&lt;br /&gt;
===Save Values to EEPROM===&lt;br /&gt;
Save all the options to non-volatile EEPROM.&lt;br /&gt;
*Make sure to save after you make any changes.&lt;br /&gt;
&lt;br /&gt;
===IP Parameters menu===&lt;br /&gt;
Open the IP Parameters Menu.&lt;br /&gt;
&lt;br /&gt;
===Offline Mode Parameters menu===&lt;br /&gt;
Open the Offline Mode Parameters Menu.&lt;br /&gt;
&lt;br /&gt;
===Disconnect Remote Console Session===&lt;br /&gt;
If you are connected via Telnet, this will exit your session.&lt;br /&gt;
&lt;br /&gt;
===Reboot System===&lt;br /&gt;
Reboot the VOTER/RTCM.&lt;br /&gt;
*This should be done after making configuration changes.&lt;br /&gt;
*Some setting changes require a reboot to become effective.&lt;br /&gt;
&lt;br /&gt;
===Diagnostics===&lt;br /&gt;
Open the Diagnostics Menu.&lt;br /&gt;
*Diagnostics are unavailable if you are using DSP/BEW firmware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Network Information=&lt;br /&gt;
==RTCM/VOTER Bandwidth==&lt;br /&gt;
Assuming ulaw... The RTCM will require approximately 80kbps of bandwidth for continual usage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Network Quality==&lt;br /&gt;
Your IP Network quality is important. You may wish to add a rule in your routers to prioritize traffic on UDP port 667 so that RTCM audio is given priority over other &lt;br /&gt;
traffic. Also see the [[#Debug Options]] below for notes on how to tag your packets with ToS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==RX/TX Buffers are NOT Both Millisecond Values== &lt;br /&gt;
You might assume an RX buffer (in voter.conf) of 120ms would be equivalent of a TX buffer (in the RTCM) of 120ms. That is not the case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The TX buffer is a number of 125 '''microsecond''' intervals, where the RX buffer is in milliseconds. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you follow the buffer setting instructions, you should be fine, in most cases. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Debug Options=&lt;br /&gt;
The VOTER/RTCM firmware supports some additional debugging information that can be turned on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
From the source code, the different Debug Options are listed as:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1 - Alt/Main Host change notifications&lt;br /&gt;
2 - Ignore HWlock (GGPS only)&lt;br /&gt;
4 - GPS/PPS Failure simulation (GGPS only)&lt;br /&gt;
8 - POCSAG H/W output disable (GGPS only)&lt;br /&gt;
16 - IP TOS Class for Ubiquiti&lt;br /&gt;
32 - GPS Debug&lt;br /&gt;
64 - Fix GPS 1 second off&lt;br /&gt;
128 - Fix GPS 1 month off (WTF,O??)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Not sure what they all do, but that is what they are. Here are the most common ones used:&lt;br /&gt;
*&amp;quot;Alt/Main Host change notifications&amp;quot; &lt;br /&gt;
**shows when the connection to the Asterisk server changes state.&lt;br /&gt;
*&amp;quot;IP TOS Class for Ubiquity&amp;quot; &lt;br /&gt;
**marks the IP headers from the RTCM/VOTER '''TO''' the network with ToS C0/DSCP 48 (UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS latency). Other sources show this as a Network Control TOS.) If you enable this, you also will want to have &amp;quot;utos=y&amp;quot; in your voter.conf to mark the packets from the network '''TO''' the RTCM/VOTER. We will probably change this option to mark the packets by default in a future version.&lt;br /&gt;
*&amp;quot;GPS Debug&amp;quot; &lt;br /&gt;
**will print NMEA or TSIP debug strings from the connected GPS.&lt;br /&gt;
*&amp;quot;Fix GPS 1 second off&amp;quot;&lt;br /&gt;
**this is for NMEA GPS '''only'''. It will add one second to the time.&lt;br /&gt;
*&amp;quot;Fix GPS 1 month off (WTF,O??)&amp;quot;&lt;br /&gt;
**this is for TSIP GPS '''only'''. It will effectively add a month to the date. The mktime function normally needs one month subtracted from the raw month it converts to a time/date string. Maybe there are some GPS out there that do that automatically? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The way this works is you add together the options you want to enable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Want to enable GPS Debug and IP ToS, set debug to 48.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just want to turn on GPS Debug, set debug to 32.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just want ToS turned on, set debug to 16.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Un-documented Menus/Features=&lt;br /&gt;
*Menu 96 - If firmware compiled with DUMPENCREGS enabled, Menu 96 looks like it dumps the registers from the ENC (Ethernet) chip?&lt;br /&gt;
&lt;br /&gt;
*Menu 111 - show the &amp;quot;hidden&amp;quot; option values (normally they should all be 0).&lt;br /&gt;
&lt;br /&gt;
*Menu 11780 - set the &amp;quot;Elkes&amp;quot; value. Developed for Pete Elkes, this is for solar type sites. It shuts off the Tx after a period of no Rx activity.&lt;br /&gt;
&lt;br /&gt;
*Menu 1103 - set the &amp;quot;Glaser&amp;quot; timer value? No idea what this does.&lt;br /&gt;
&lt;br /&gt;
*Menu 1170 - set &amp;quot;Sawyer Mode&amp;quot;. Developed for Tim Sawyer use on Yaesu VXR5000 repeater. It modifies de-ephasis behavior when on/off line. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Audio=&lt;br /&gt;
The RTCM/VOTER is totally flexible regarding emphasis. Although the way it is set is completely obscure. It tries to automatically do the right thing for you, which is great most of the time. But when it’s not, it's hard to know what is going on. &lt;br /&gt;
&lt;br /&gt;
If you are changing the COR Type settings, or nodeemp in voter.conf, make sure you save/reboot the RTCM/VOTER every time you make a change... changes are '''not''' effective until the RTCM/VOTER reboots!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Voting==&lt;br /&gt;
Before we get in to the different ways audio is routed, there is an important consideration you need to make if you are using the RTCM/VOTER for voting. &lt;br /&gt;
&lt;br /&gt;
The way the voting process works, it needs '''discriminator audio''' to determine the signal to noise level from each satellite receiver. As such, you will need to be feeding discriminator audio in to the RX audio pin, so that the hardware/software can vote properly. That means you also need to let the hardware/software do the squelch action.&lt;br /&gt;
&lt;br /&gt;
If you need RX CTCSS, you'll need to feed logic from an external CTCSS decoder in to the CTCSS input pin.&lt;br /&gt;
&lt;br /&gt;
Also, don't disable COR in the RTCM/VOTER... it will cause it to disable the squelch and it will report an RSSI of 255 (full quieting) for all received signals.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Receiver De-emphasis==&lt;br /&gt;
On the RX side the COR Type setting in the RTCM/VOTER determines whether the de-emphasis filter is used for RX audio. 0=Normal means the RTCM/VOTER squelch circuit is in use and it is expecting discriminator audio on the RX pin (to be able to do the squelch action), and therefore it '''will''' provide de-emphasis (audio is routed THROUGH the de-emphasis RC filter circuit) to the receiver audio. COR Type 1=IGNORE COR uses the CTCSS input pin for COR or CTCSS ''logic'' and it then expects de-emphasized receive (line) audio on the RX pin, and therefore will '''not''' provide de-emphasis to the received audio (the RC filter is switched '''out''' and audio passes straight through). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Most of the time, you do NOT need to override the automatic filter selection. However, if you do, and you are sure you have a good reason to, you CAN switch the de-emphasis filter '''out''' of the circuit so that audio passes straight through to the encoder. You would do this by setting the nodeemp=1 option in voter.conf. When you set nodeemp=1, the ''VOTER Protocol'' tells the RTCM/VOTER to switch the filter '''out''', so audio is passed straight through.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Transmitter Pre-emhpasis==&lt;br /&gt;
On the TX side, the RTCM/VOTER expects the repeater to accept ''mic audio''. In other words, the '''repeater''' is providing the pre-emphasis, not the RTCM/VOTER (you are '''not''' directly modulating the TX). This can be overridden by setting CTCSS tone in voter.conf. If a CTCSS tone is defined, the RTCM '''will''' provide pre-emphasis to the audio, and expects that you will be connecting to your repeater's flat audio input (direct modulation). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you don’t want TX CTCSS tone but '''do''' need pre-emphasis, set an arbitrary (any) CTCSS tone in voter.conf, and set the level to 0. This will force the RTCM/VOTER to pre-emphasize the audio it generates on the TX pin, but it won't actually mix in a CTCSS tone. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Level Setting==&lt;br /&gt;
Setting the audio levels for the RTCM/VOTER is pretty straight forward. Just follow these steps:&lt;br /&gt;
*Ensure you have a connection to your host Asterisk server/chan_voter instance&lt;br /&gt;
*Send a 1kHz@3kHz on-channel, full-quieting signal in to the repeater's RX&lt;br /&gt;
*Set the RX up so it reads 3kHz deviation on the RTCM's built in console meter&lt;br /&gt;
*Now set the TX level '''pot''' to get 3kHz out of the transmitter (No PL)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now change the modulation from 1kHz tone to 800Hz followed by 1.8kHz and verify that the deviation level doesn't change as the tone frequency changes. '''Changing levels indicates a pre/de-emphasis issue.''' You will want to read the above sections on how audio is handled, and figure out where your issue is.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If using PL you have to account for that deviation, unless you filter it out with your IFR (test set). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That's it!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Optionally, if you are using the built-in &amp;quot;offline repeat&amp;quot; functions, fail the connection to the host Asterisk server, and make sure your repeat audio performs the same as above.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Crappy Transmit Audio==&lt;br /&gt;
&lt;br /&gt;
Does your repeated audio sounded really bassy, muffled, and not very understandable? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There was a situation where, compared to a typical simplex radio-to-radio transmission, the audio through the repeater (RTCM and Asterisk) was unacceptable. What was discovered was that the RTCM has an internal pre-emphasis function that was disabled. The user had intentionally disabled &amp;quot;txctcss&amp;quot; and &amp;quot;txctcsslevel&amp;quot; in voter.conf because he didn't &lt;br /&gt;
want the RTCM transmitting CTCSS (the Quantar was doing that already). He ultimately found a post on the mail list explaining the settings above that said enabling txctcss = some valid tone (114.8 in his case) and setting txctcsslevel = 0 would turn on the pre-emphasis function in the RTCM without transmitting CTCSS tones. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
He did, and it worked like a charm! Audio now had more treble and was less bassy/muffled. So, future RTCM users, be sure not to comment out txctcss and txctcsslevel in voter.conf!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just enable and set the level to 0. You'll thank me later. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=GPS=&lt;br /&gt;
The RTCM/VOTER will work with most GPS available. It requires either NMEA or Trimble TSIP binary data. It only receives data '''from''' the GPS (GPS TX), it does not send anything '''to''' the GPS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The firmware is specifically written to talk to Trimble Thunderbolt receivers using Trimble's TSIP binary data interface, however, other Trimbles GPS receivers that talk TSIP are generally compatible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==NMEA Sentences==&lt;br /&gt;
If you are using an NMEA GPS (as opposed to a Trimble using the TSIP binary interface), the RTCM/VOTER is looking for the following NMEA sentences:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$GPGGA&lt;br /&gt;
$GPGSV&lt;br /&gt;
$GPRMC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Lock==&lt;br /&gt;
The GPS led will go solid regardless of the connection LED. That '''has''' to happen or it won't connect to the Asterisk server. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is not unusual for it to take up to 20 mins to get a GPS lock LED (ie. using a Trimble Thunderbolt) after any reboot. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS De-sense==&lt;br /&gt;
If you are having odd loss of lock issues, consider you may have interference to your GPS antenna from strong RF nearby. A note from Jesse Lloyd:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I also had crazy problems with poor signal on my GPS when I set it up sitting in a window, and once installed at site I had the GPS antenna maybe 6 ft from the VHF antenna, and after some troubleshooting found it was getting swamped with RF and loosing lock. &lt;br /&gt;
&lt;br /&gt;
I found the debug setting of 32 useful in the RTCM, you can see a hex output of the GPS status.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Issues==&lt;br /&gt;
===Trimble Thunderbolt===&lt;br /&gt;
You may find your Trimble Thunderbolt is showing the incorrect date at the moment. It could be showing the year as 1997. This is due to the date in the Thunderbolt being reported incorrectly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''This can cause some of your voting receivers to not connect, if they are used with other GPS in your system.''' If you have '''ALL''' Thunderbolts, or '''NO''' Thunderbolts, you are probably fine. If you have '''ALL''' Thunderbolts, the date/time is probably wrong, but they will ALL be wrong, so they will connect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GPS Time is a continuous counting time scale beginning at the January 5, 1980 to January 6, 1980 midnight. It is split into two parts: a time of week measured in seconds from midnight Sat/Sun and a week number. The time of week is transmitted in an unambiguous manner by the satellites, but only the bottom 10 bits of the week number are transmitted. This means that a receiver will see a week number count that goes up steadily until it reaches 1023 after which it will “roll over” back to zero, before steadily going up again. Such a week rollover will occur approx. every 20 years. The last week rollover occurred in 1999 and the next one will be in 2019.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Thunderbolt manual states:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The ThunderBolt adjusts for this week rollover by adding 1024 to any week number reported by GPS which is less than week number 936 which began on December 14, 1997. With this technique, the ThunderBolt will provide an accurate translation of GPS week number and TOW to time and date until July 30, 2017.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As such, the Trimble Thunderbolt has a firmware issue with the GPS Week rollover that manifested itself on July 30, 2017, causing the date to become incorrect. The Thunderbolt thinks the week changed from 935 to 936 (actual week 1959-1024=935), so it stopped adding 1024 to the week.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We have added a brute-force fix starting in RTCM/VOTER firmware &amp;gt;=1.51. This fix adds 619315200 seconds (1024 weeks) to the time reported by the GPS. It fixes the Thunderbolts, we have not done extensive testing to see how it affects other TSIP receivers.&lt;br /&gt;
&lt;br /&gt;
===Garmin===&lt;br /&gt;
====Garmin 18x LVC Wiring Issues====&lt;br /&gt;
If you have issues with your GPS 18x LVC not talking to the RTCM/VOTER, it may not be hooked up to the RTCM correctly. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Garmin pin labeling is backwards to what you may think. See below. You probably need to swap pins 6 and 14.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RTCM   	                 GPS 18x LVC      &lt;br /&gt;
6 GRX 	&amp;lt;-- Rx Data 	 6 Green  &lt;br /&gt;
7 GPPS 	&amp;lt;-- Pulse Output 1 Yellow  &lt;br /&gt;
8 GND   Ground 		 3 Black  &lt;br /&gt;
8 GND   Ground 		 5 Black  &lt;br /&gt;
13 +5V 	--&amp;gt;Vin 		 2 Red  &lt;br /&gt;
14 GTX 	--&amp;gt; TX Data 	 4 White&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log into the RTCM and do 98 and you should see something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Current Time: Sun  Apr 20, 2014  04:37:02.820&lt;br /&gt;
Last Rx Pkt System time: 04/20/2014 03:55:35.580, diff: 2487260 msec&lt;br /&gt;
Last Rx Pkt Timestamp time: 04/20/2014 03:55:32.064, diff: 3515 msec&lt;br /&gt;
Last Rx Pkt index: 160, inbounds: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Garmin and the RTCM====&lt;br /&gt;
Beware when buying newer Garmin GPS's to use with the Micro-Node RTCM.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The RTCM expects a 5V PPS signal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Newer Garmin's (GPS 18X, 18X LVC, etc.) MAY NOT output 5V, and can cause issues. '''Check the Garmin datasheet'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER is designed to accept both 3.3V or 5V signals, and ''should'' work fine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==No GPS/Mixed Mode==&lt;br /&gt;
You do not need a timing source to use an RTCM if you don’t want to vote. That’s called Mix Mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Having the PPS Polarity set to 2 tells the RTCM you do not have a GPS. That forces the RTCM to become a mix (non-voting) client. Turn it on, save it, and restart. A simple voter.conf would look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[general]&lt;br /&gt;
port = 667&lt;br /&gt;
password = BLAH&lt;br /&gt;
&lt;br /&gt;
[1000]&lt;br /&gt;
Site1 = pswrd1,master,transmit&lt;br /&gt;
Site2 = pswrd2,transmit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mixed Client Error==&lt;br /&gt;
&amp;quot;I am getting this error in Asterisk&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WARNING[2368]: chan_voter.c:4511 voter_reader: Voter client master timing source mobile1 attempting to authenticate as mix client!!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A mixed client error means the voter.conf file is expecting an RTCM to try and connect with a GPS IP packet (ie. has '''master''' in it in voter.conf), but the RTCM isn't &lt;br /&gt;
sending a GPS IP packet. So its a mismatch between voter.conf and Option 10 in the RTCM. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to use a mix client (non-voted), make sure that receiver's configuration line in voter.conf '''does not''' have the '''master''' option set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mix Clients with Voted Client Issues==&lt;br /&gt;
&lt;br /&gt;
Situation...&lt;br /&gt;
&amp;quot;I have a private node with 6 voted receivers using RTCMs. I'd like to add a 7th RTCM to this node that is always mixed in rather than voted. I'm able to make this RTCM work as a 7th voted receiver with no problem. Everything I've read seems to indicate that if I change GPS PPS polarity to &amp;quot;none&amp;quot; this will achieve my desired results, however I am unable to get audio out of my transmit RTCM from this 7th site. It does change color to cyan in Allmon indicating it is non voted input but I do not get any indication or audio when that units COR goes active.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Setting voter debug level 3 in Asterisk and I'm seeing the following message repeatedly scrolling by in a blur when the mix client detects COR (COR is active). Sequence numbers are continually incrementing by 1. I'm running software version 1.47 on all my clients:&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mix client (Mulaw) my_client index:0 their seq:629 our seq:629&lt;br /&gt;
mix client my_client outa bounds, resetting!!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have a similar situation to the above... check your buflen in voter.conf. Make sure it is at &amp;gt;=160 and see if that fixes it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Debug==&lt;br /&gt;
To turn on GPS Debugging, set the Debug Option Level in the RTCM/VOTER to 32.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [[#Debug Options]] levels for more information on how this works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Trimble Debug Status Decoding==&lt;br /&gt;
The VOTER/RTCM when in TSIP mode (Trimble), assumes it is a Trimble Thunderbolt and is looking for two packets:&lt;br /&gt;
*0x8F-AB - Primary Timing Packet&lt;br /&gt;
*0x8F-AC - Supplemental Timing Packet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Grab a copy of the Thunderbolt User Guide: http://leapsecond.com/pages/tbolt/Thunderbolt-2012-02.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pages 78-83 are the important ones.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Packet 0x8F-AB is what grabs the timing information, and packet 0x8F-AC is what it looks at for everything else (including debug).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The debug string that the VOTER/RTCM reports:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	printf(&amp;quot;GPS-DEBUG: TSIP: ok %d, 9 - 14: %02x %02x %02x %02x %02x %02x\n&amp;quot;,&lt;br /&gt;
					happy,gps_buf[9],gps_buf[10],gps_buf[11],gps_buf[12],gps_buf[13],gps_buf[14]);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, the 1 after ok is the &amp;quot;happy gps&amp;quot; flag. The other 5 bytes are supposed to be bytes 9-14 from the packet... sort of. They are bytes 9-14 of the buffer, but they are actually bytes 8-13 of the binary message.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Looking at the message structure, bytes 8-13 are:&lt;br /&gt;
*8-9 Critical Alarms&lt;br /&gt;
*10-11 Minor Alarms&lt;br /&gt;
*12 GPS Decoding Status&lt;br /&gt;
*13 Disciplining Activity&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Therefore, the messages you are seeing break down as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GPS-DEBUG: TSIP: ok 1, 9 - 14: 00 00 00 00 00 00 - everything is good in the 'hood, Doing Fixes, Phase Locking&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 18 08 06 - not happy, Not Tracking Satellites, Not Disciplining Oscillator (0x18 --&amp;gt; 0b000000011000), No Usable Sats, Inactive&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 08 08 05 - not happy, Not Tracking Satellites, No Useable Sats, Compensating OXCO (holdover)&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 00 00 05 - not happy, Compensating OXCO (holdover)&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 1, 9 - 14: 00 00 00 00 00 08 - happy, Recovery Mode&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 00 00 04 - not happy, Initializing Loop Filter&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The GPS is flagged as NOT HAPPY in TSIP mode if ANY of the following are TRUE:&lt;br /&gt;
*If GPS Decoding Status is anything other than &amp;quot;Doing Fixes&amp;quot;.&lt;br /&gt;
*If Disciplining Activity is not Phase Locking or Recovery Mode.&lt;br /&gt;
*Any Critical Alarms.&lt;br /&gt;
*Any Minor Alarms.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ubiquity ToS=&lt;br /&gt;
See https://help.ubnt.com/hc/en-us/articles/205231750-airMAX-How-is-QoS-and-prioritization-handled-by-airMAX-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, if we set ToS/DSCP in the header to C0, then Ubiquity (and other gear watching ToS) ''should'' prioritize the packets. This sets the DSCP to 110 000 aka 48. UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS latency). Other sources show this as a Network Control TOS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is an option in voter.conf to turn this on (utos=y). However, this only controls packets being sent from Asterisk '''TO''' the RTCM. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to tag packets from the RTCM '''TO''' Asterisk, you need to set the RTCM debug option level to 16 (see [[#Debug Options]] for how this works).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At some point we should probably change the default behaviour of the RTCM firmware to mark the packets and use the debug setting to '''disable''' ToS. That change (if you wanted to compile your own firmware) would be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Change line 90 in IP.c&lt;br /&gt;
&lt;br /&gt;
From:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? 0xc0 : (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY))&lt;br /&gt;
&lt;br /&gt;
To:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY) : 0xc0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This changes the conditional expression from if the debug level is 16 to mark the packets with DSCP 48 to if the debug level is 16, mark the packets routine (DSCP 0).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM Simulcasting=&lt;br /&gt;
The RTCM/VOTER boards do support simulcasting, however, there are a bunch of quirks that one needs to be aware of.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Radio Hardware==&lt;br /&gt;
For best results, you should use all identical RF equipment between your voting RX sites and simulcast TX sites. If you don't, you can end up with strange audio artifacts when different receivers are used, and other strange audio issues when different transmitters are used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==9.6MHz Oscillator==&lt;br /&gt;
If you want reliable simulcast with an acceptable level of overlap warble, you MUST inject a GPS-disciplined or OXCO 9.6MHz signal to the clock of the RTCM's, in lieu of their stock internal crystal. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Otherwise, the inherent internal clock jitter of the RTCM's will cause CTCSS warble, etc. in areas where your transmitters overlap. The 1 PPS feed that you normally feed the RTCM's is acceptable for voting, but naturally, a typical crystal-driven clock will slightly drift in between the pulses every second due to inherent jitter, etc., and that ain't to good for situations like simulcast which demand sample-accurate performance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are some comments from Joe, KC2IRV, on the subject. He has also created his own wiki, specific to simulcast issues, you can find it at: http://rtcmsimulcast.wikifoundry.com/ &lt;br /&gt;
&lt;br /&gt;
:I felt I needed to let those on this mailing list know my findings with simulcasting with the RTCM units since I have received a great deal of help and information from people on this list.&lt;br /&gt;
&lt;br /&gt;
:For the past week I have had a two (2) site simulcast system up and running on UHF using the RTCM units. I have done a great deal of testing and proving on the bench and it is so far working beautifully. &lt;br /&gt;
&lt;br /&gt;
:The one issue that was made apparent to me early on was that in order for the RTCM's to be suitable for simulcast, the processor inside it needed to be clocked to a more accurate source. This source is supposed to be the Programmable Clock Generator Module in order to produce a GPS locked 9.6 MHz reference for the processor. Unfortunately this unit is not currently available.&lt;br /&gt;
&lt;br /&gt;
:Knowing this, I started to go down the road of possibly designing my own, but stumbled upon a cheap, plentiful supply of Symmetricom 9.6 MHz sinewave OCXO's. I took a chance and ordered a few to experiment with to see if the RTCM would be able to use this in place of the supplied crystal for a clock. I found they did, with that I decided to modify the RTCM with an SMA connector just above the audio adjustment pots and use this OCXO. I trimmed the frequency on the units to match each other and used them to produce the processor clock.&lt;br /&gt;
&lt;br /&gt;
:After a week of testing, I have found the results in the overlap areas to be exactly as I would expect them on a public safety/commercial simulcast system. While in an overlap region where both transmitters are within 3dB of one another, to the ear you hear no audio phase wandering. Of course , this has only been a week of testing so I wouldn't call it case closed yet.&lt;br /&gt;
&lt;br /&gt;
:I will say that if this system remains this way after testing for 6 months to a year than using a 9.6 MHz OXCO is a viable alternative to achieve the needed precision and accuracy needed for the processor clock to make it suitable for simulcast.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Comments from Jim Dixon on the issue:&lt;br /&gt;
&lt;br /&gt;
:You have to use '''something''' that will take the precise 10MHz (or whatever it is) from the GPSDO and PLL (phase-locked) convert it to 9.6MHz (square wave at 3.3V for the CPU clock).&lt;br /&gt;
&lt;br /&gt;
:We had to use 9.6MHz mainly because of the DAC in the dsPIC instead of 10MHz. The options for various divide/clock radios in the part are RATHER limited. As I recall, there wasn't even a way of getting the necessary 16kb/s sample rate on the ADC from 10MHZ, either.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Micro-Node RTCM Clock Issue=&lt;br /&gt;
James, KI0KN, had some strange-ness with some of his RTCM's when used for voting. As soon as he changed menu item 10 on the RTCM to either a (1) or a (0) instead of (2), he '''instantly''' got this on the RTCM console:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
04/05/2016 18:44:13.660  Lost GPS Time synchronization&lt;br /&gt;
04/05/2016 18:44:13.660  Host Connection Lost (Pri) (10.16.1.240)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And it sits there forever and never re-establishes connection to the host. The issue was finally traced to a bad batch of 9.6MHz crystals that affected a small run of the RTCM's. The issue was eventually resolved by Micro-Node, but we'll document it here just for record keeping.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
James comments to the list:&lt;br /&gt;
&lt;br /&gt;
:Well, after many of you offered your time and thoughts on my voter problem, Jim, WB6NIL, graciously donated a couple of hours of his time to remotely help me and he uncovered the problem.&lt;br /&gt;
&lt;br /&gt;
:All 5 of my RTCMs were purchased within the last 6 months, and I suspect all 5 have the same problem (will verify that today). The problem is that the microprocessor crystal is running too fast! There is 9.6Mhz crystal that drives the MPU, on the particular unit that Jim helped me diagnose, it's running 2.5 khz too fast.  &lt;br /&gt;
&lt;br /&gt;
:There is a sanity check in the firmware that makes sure the correct number of samples were taken in the last second (it's supposed to be 8000) and fails if the sample is incorrectly sized (mine is taking 8003 samples).  Jim helped adjust the code to be more tolerant of the sampling error and my whole system instantly worked.&lt;br /&gt;
&lt;br /&gt;
:I have since tested it with ALL my GPSs (they all work great!). So I now have everything working, including the voting.&lt;br /&gt;
&lt;br /&gt;
:I haven't contact Micro-Node about it yet. Jim told me that voting should work fine but this clock error would probably not be acceptable for Simulcast (something we have no plans on doing as of now). Since mine are deployed at mountain top sites, I'll probably pursue a crystal that is running at the correct frequency and use &amp;quot;standard&amp;quot; firmware so that if the decision is ever made to play with simulcast, I won't be right back in this same boat.&lt;br /&gt;
&lt;br /&gt;
:Thanks to all that helped out, and a HUGE thanks to Jim for taking the time to troubleshoot this.&lt;br /&gt;
&lt;br /&gt;
:BTW- This clock error will NOT effect the RTCM in mix client mode, it only affects it in voting or simulcast mode!&lt;br /&gt;
&lt;br /&gt;
:In voter.c, the stock line is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if ((samplecnt &amp;gt;= 7999) &amp;amp;&amp;amp; (samplecnt &amp;lt;= 8001))&lt;br /&gt;
&lt;br /&gt;
it needs to be changed to something like:&lt;br /&gt;
&lt;br /&gt;
if ((samplecnt &amp;gt;= 7999) &amp;amp;&amp;amp; (samplecnt &amp;lt;= 8003 ))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:That was just enough to make my first RTCM work. I've had a chance now to check a few more of my RTCMs on the bench this morning and the crystal frequencies are kind of all over.  The next one I had on the bench was 5.2Khz fast. The above code was still not enough to fix it (as would be expected) so it looks like the quality control on whatever manufacturer that crystal is, isn't very good (or a low tolerance crystal is being used). I am going to pursue crystal replacement to get a highly accurate, stable, on-frequency crystal in there as my first choice. Changing the firmware 5 different times doesn't seem like the right answer.&lt;br /&gt;
&lt;br /&gt;
:Jim put that sanity check in there for a reason. Working around it '''may''' allow the device to work, but to me, it seems getting the hardware operating the way it was supposed to originally is the better answer. I will follow up with Micro-node and let you all know how it goes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After following up with Micro-Node:&lt;br /&gt;
:They were all off, some were off a LOT. I talked to Mark @ Micronode. He told me there were 25 units that made it out the door with a crystal from an unapproved source and that was quite likely the reason for the problem. He gladly sent me 5 new crystals to replace (he offered to replace them himself if I sent the units in, but I am comfortable doing it myself to save the time and postage). &lt;br /&gt;
&lt;br /&gt;
:I haven't received them in the mail yet to show that the problem is fixed, but I will post here when that happens. He was great to work with and had no issue getting things set straight. If you are having the same issue and your RTCMs were bought about the same time, I'd suggest you contact him and have him help you resolve the issue!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Duplex Mode 3=&lt;br /&gt;
Does delayed repeat audio bug you? Tired of hearing a bit of yourself after you unkey? Wish you could talk full duplex? Hate the echo chamber effect? Then we have the answer for you.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Duplex Mode 3 in app_rpt allows for &amp;quot;in-cabinet repeat&amp;quot; (where the radio hardware provides repeat audio) and app_rpt adds the hang time, courtesy tones, linking - all the &lt;br /&gt;
things apt_rpt does sans repeat audio. Therefore no repeat audio delay. Cool, eh? This duplex mode has been in app_rpt for a while. Problem has been how to implement it in the RTCM environment. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Duplex Mode 3 support in the RTCM provides in-cabinet repeat functionality. Repeat audio loops through the RTCM and has almost zero delay because it does not have to traverse the network. The delay is not quite zero but it's plenty short enough to eliminate all of the above mentioned annoyances. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Of course Duplex Mode 3 support can't be used with voting or simulcast. You also loose Touch Tone muting, Time Out Timer and Repeater Disable functions because the repeat path is not through app_rpt.&lt;/div&gt;</summary>
		<author><name>Ve7fet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=54</id>
		<title>RTCM Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=54"/>
		<updated>2017-08-16T15:29:03Z</updated>

		<summary type="html">&lt;p&gt;Ve7fet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Micro-Node RTCM and VOTER interfaces are typically used with AllStar in voting/simulcast applications. They MAY be used for ANY repeater interface application, through the chan/voter channel driver. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER is the original through-hole board designed by Jim Dixon for this application. It is open-source, and the relevant Gerber files and BoM to build it are available. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The [http://www.micro-node.com/thin-m1.shtml Micro-Node Radio Thin Client Module (RTCM)] is the commercial version of the VOTER. It uses surface mount parts (SMT), but is functionally equivalent to the original VOTER. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In general, the two terms (RTCM/VOTER) are used interchangeably, as they operate the same, and use the same firmware (mostly, see below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This page will highlight some of the operational concerns, quirks, bugs, and other items of interest that relate to these interfaces. Much of the information has been gleaned off the AllStar mail list, comes from personal experience, or comes from notes in the firmware source code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Firmware=&lt;br /&gt;
The firmware in the RTCM and VOTER is the same, except it is compiled for the specific dsPIC that is installed in each. As such, the firmware is specific to the VOTER or the RTCM, and is NOT interchangeable (it won't boot in the wrong device). Firmware for the RTCM is denoted by &amp;quot;smt&amp;quot; in the filename.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are '''two parts''' to the firmware, a bootloader, and then the actual firmware file. The bootloader starts when power is applied, and allows you to talk to the dsPIC and load new firmware files over ethernet. If the bootloader is not intercepted by the loading tool, it will continue to boot the current firmware file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All new boards will need to have the bootloader installed first, followed by a firmware file. You '''can''' load a firmware file directly (.hex) in to the dsPIC, but then you will not have any of the bootloader remote loading features.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The current bootloader (.cof file) is available here: https://github.com/AllStarLink/voter/tree/master/voter-bootloader (the -smt file is for the RTCM). It needs to be loaded with a PICKit programmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Current firmware (.cry file) is available here: https://github.com/AllStarLink/voter/tree/master/board-firmware . They are loaded with the EBLEX C30 Programmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are multiple &amp;quot;flavors&amp;quot; of firmware available. See below for further explanation of what all the options mean.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The DSPBEW versions have Jim's DSP/BEW feature enabled. Note that due to the size of this feature, the diagnostics menu is NOT available in this version.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CHUCK versions have Chuck Henderson's RSSI and Squelch modifications enabled. This is probably the version that most user's will want to use in production.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Compiling Environment==&lt;br /&gt;
If you look in the [https://github.com/AllStarLink/voter/blob/master/votersystem.pdf votersystem.pdf], you will find a procedure to modify and load the bootloader in to the dsPIC of a VOTER board. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Unfortunately, there is an important step '''missing''' in that procedure, which is covered below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In addition, the old links for the MPLAB software are dead, so let's update this info and get you going.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Currently (Feb 2017), you can get the required software from:&lt;br /&gt;
:http://www.microchip.com/development-tools/downloads-archive&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download MPLAB IDE 32-bit Windows v8.66:&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_IDE_v8_66.zip&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/MPLAB_IDE_v8_66.zip&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download MPLAB C Compiler for PIC24 and dsPIC DSCs v3.31 '''NOT v.3.25''':&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Optionally, install Windows Virtual PC and XP Mode. This is getting to be pretty old software, so running it under XP Mode may be a good idea, so we can keep it isolated (install it in a virtual machine). It does run fine in Windows 7.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To setup the compile/build environment, follow these steps:&lt;br /&gt;
*Run the MPLAB IDE installer. You don't need to install the HI-TECH C Compiler at the end (click no)&lt;br /&gt;
*Run the MPLAB C Compiler installer&lt;br /&gt;
*Select Legacy Directory Name&lt;br /&gt;
*'''Select Lite Compiler'''&lt;br /&gt;
*Go to: https://github.com/AllStarLink&lt;br /&gt;
*Follow the links to: voter --&amp;gt; Clone or Download --&amp;gt; Download Zip. That will get you voter-master.zip which is a download of the whole VOTER tree from GitHub.&lt;br /&gt;
*Extract it somewhere (ie. in the XP Mode Virtual PC)&lt;br /&gt;
*Launch the MPLAB IDE&lt;br /&gt;
*Go to Configure --&amp;gt; Settings --&amp;gt; Projects and de-select one-to-one project mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bootloader==&lt;br /&gt;
If you need to load the bootloader in to a fresh board, you will need to follow these steps:&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; voter-bootloader.mcp --&amp;gt; Open (it is in the voter-bootloader folder of the GitHub source)&lt;br /&gt;
*Go to File --&amp;gt; Import --&amp;gt; voter-bootloader --&amp;gt; ENC_C30.cof --&amp;gt; Open '''This step is missing from the original procedure.'''&lt;br /&gt;
*Remove JP7 on the VOTER Board. This is necessary to allow programming by the PICKit2/PICKit3 device.&lt;br /&gt;
*Attach the PICKIT2/PICKit3 device to J1 on the VOTER board. Note that Pin 1 is closest to the power supply modules (as indicated on the board).&lt;br /&gt;
*If you have not already selected a programming device, go to Programmer --&amp;gt; Select Device and choose PICKit3 (or PICKit2, depending on what you are using).&lt;br /&gt;
*Go to Programmer --&amp;gt; Program. This will program the bootloader firmware into the PIC device on the board.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to change the default IP address from 192.168.1.11 in the bootloader:&lt;br /&gt;
*Select View --&amp;gt; Program Memory (from the top menu bar)&lt;br /&gt;
*Hit Control-F (to &amp;quot;find&amp;quot;) and search for the digits &amp;quot;00A8C0&amp;quot;.&lt;br /&gt;
*These should be found at memory address &amp;quot;03018&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;A8C0&amp;quot; at 03018 represents the hex digits C0 (192) and A8 (168) which are the first two octets of the IP address. The six digits to enter are 00 then the SECOND octet of the IP address in hex then the FIRST octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;0B01&amp;quot; at 0301A represents the hex digits 0B (11) and 01 (1) which are the second two octets of the IP address. The six digits to enter are 00 then the FOURTH octet of the IP address in hex then the THIRD octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you have modified the address to your desired IP, follow the programming procedure (above).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Firmware==&lt;br /&gt;
To compile the firmware (if you want to make custom changes):&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; navigate to board-firmware and open the .mcp file for the flavor of firmware you want to compile. They are in the board-firmware folder of the GitHub source.&lt;br /&gt;
*'''NOTE''': the .mcp files with the &amp;quot;smt&amp;quot; suffix are for the RTCM (built with SMT parts). The non-smt files are for the ORIGINAL through-hole VOTER boards. The difference is that the VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
*Go to Project --&amp;gt; Build Configuration and select &amp;quot;Release&amp;quot;. This may not be necessary (I don't believe that option is used in the firmware), but it removes the compiler option of __DEBUG being passed, so theoretically it would build &amp;quot;normal&amp;quot; firmware.&lt;br /&gt;
*Go to Configure --&amp;gt; Select Device and choose the appropriate device for your board from the Device list. If you don't select the right one, the board will not boot. Select dsPIC33FJ128GP802 for the VOTER, and dsPIC33FJ128GP804 for the RTCM.&lt;br /&gt;
*Now, if you go to Project --&amp;gt; Build All it should compile everything and show you &amp;quot;Build Succeeded&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A .cry file should be in the board-firmware folder. You can load this with the ENC Loader.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is also a .hex file in there that you could load with a programmer... but that would wipe the bootloader... so don't do that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Chuck Squelch==&lt;br /&gt;
If you want to enable &amp;quot;Chuck Squelch&amp;quot;, open the HardwareProfile.h and un-comment #define CHUCK. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may also want to go down to Line 291 in Voter.c (right click on the window, go to Properties --&amp;gt; &amp;quot;C&amp;quot; File Types --&amp;gt; Line Numbers) and tack on CHUCK after 1.60 (the current version number) so that when you load this firmware, the version will be shown as 1.51CHUCK, and you'll know that Chuck Squelch is compiled in. We should probably make that more automagic in the future...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==DSP/BEW==&lt;br /&gt;
If you want to compile the DSPBEW version, open the DSPBEW project file instead.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DSP/BEW Firmware Version=&lt;br /&gt;
DSP BEW Firmware is mutually exclusive with the diagnostic menu. There is not enough space for both, if you load the DSP/BEW firmware, you will '''NOT''' have a diag menu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BEW stands for Baseband Examination Window.&lt;br /&gt;
&lt;br /&gt;
Typically, the discriminator of an FM communications receiver produces results containing audio spectrum from the &amp;quot;sub-audible&amp;quot; range (typically &amp;lt; 100 Hz) to well above frequencies able to be produced by modulating audio. These higher frequencies can be utilized to determine signal quality, since they can only contain noise (or no noise, if a sufficiently strong signal is present).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For receivers (such as the Motorola Quantar, etc) that do not provide sufficient spectral content at these &amp;quot;noise&amp;quot; frequencies (for various reasons), The &amp;quot;DSP/BEW (Digital Signal Processor / Baseband Examination Window)&amp;quot; feature of the RTCM firmware may be utilized. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These receivers are perfectly capable of providing valid &amp;quot;noise&amp;quot; signal with no modulation on the input of the receiver, but with strong modulation (high frequency audio and high deviation), it severely interferes with proper analysis of signal strength.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This feature provides a means by which a &amp;quot;Window&amp;quot; of baseband (normal audio range) signal is examined by a DSP and a determination of whether or not sufficient audio is present to cause interference of proper signal strength is made. During the VERY brief periods of time when it is determined that sufficient audio is present to cause interference, the signal strength value is &amp;quot;held&amp;quot; (the last valid value previous to the time of interference) until such time that the interfering audio is no longer present.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The DSP/BEW feature is selectable, and '''should not''' be used for a receiver that does not need it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A note on the Motorola SLR5700 per VE7FET. DSP/BEW definitely makes a difference on what AllMon reports for the signal strength of received signals. It is less reactive when DSP/BEW = 1 than with it set to 0. We'll have to see what the real world trials show. It might be better to leave it off.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Chuck Squelch=&lt;br /&gt;
&amp;quot;Chuck Squelch&amp;quot; are a couple firmware changes made by Chuck Henderson, WB9UUS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pre-compiled firmware versions including this option are available on [https://github.com/AllStarLink/voter/tree/master/board-firmware GitHub]. See above on how it is enabled/compiled, if you are rolling your own firmware modifications.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
One of the changes fixes an issue with weak signals producing RSSI readings all over the place. It is caused by a 16 bit value that was overflowing (it is the RSSI change in the firmware). It results in rock-solid RSSI values being reported, even on barely or non-readable signals. '''This change will likely be rolled in to a permanent fix in a future firmware release.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The other firmware change changes how the squelch responds (looks at the noise in the last two audio samples) and makes the &amp;quot;Micor squelch&amp;quot; action work better.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may also want to consider the following changes in /etc/asterisk/voter.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;Comment out:&lt;br /&gt;
;thresholds =&lt;br /&gt;
&lt;br /&gt;
;and set:&lt;br /&gt;
linger = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Squelch Issues==&lt;br /&gt;
*If anyone is off frequency a little bit, that will make the voice talk off worse. Double check that the repeater and the users are all on frequency.&lt;br /&gt;
*Don't use narrow bandwidth on the repeater receiver. &lt;br /&gt;
*Make sure that the discriminator audio is not rolled off even a little bit at the high end. There should not be resistors in series or capacitors to ground between the discriminator chip output pin and the voter board input, for best results.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM/VOTER LED's=&lt;br /&gt;
RX LED on the RTCM/VOTER will flash (same rate as ACT LED) if you have External CTCSS enabled, and the received signal has the wrong (or no) valid PL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Menus=&lt;br /&gt;
==Main Menu==&lt;br /&gt;
This is what a typical Main Menu looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Select the following values to View/Modify:&lt;br /&gt;
&lt;br /&gt;
1  - Serial # (0000) (which is MAC ADDR 00:04:A3:00:00:00)&lt;br /&gt;
2  - VOTER Server Address (FQDN) (44.128.1.1)&lt;br /&gt;
3  - VOTER Server Port (667),  4  - Local Port (Override) (0)&lt;br /&gt;
5  - Client Password (password1),  6  - Host Password (hostpass1)&lt;br /&gt;
7  - Tx Buffer Length (800)&lt;br /&gt;
8  - GPS Data Protocol (0=NMEA, 1=TSIP) (1)&lt;br /&gt;
9  - GPS Serial Polarity (0=Non-Inverted, 1=Inverted) (1)&lt;br /&gt;
10 - GPS PPS Polarity (0=Non-Inverted, 1=Inverted, 2=NONE) (0)&lt;br /&gt;
11 - GPS Baud Rate (9600)&lt;br /&gt;
12 - External CTCSS (0=Ignore, 1=Non-Inverted, 2=Inverted) (0)&lt;br /&gt;
13 - COR Type (0=Normal, 1=IGNORE COR, 2=No Receiver) (0)&lt;br /&gt;
14 - Debug Level (0)&lt;br /&gt;
15  - Alt. VOTER Server Address (FQDN) ()&lt;br /&gt;
16  - Alt. VOTER Server Port (Override) (0)&lt;br /&gt;
17  - DSP/BEW Mode (0)&lt;br /&gt;
18 - &amp;quot;Duplex Mode 3&amp;quot; (0=DISABLED, 1-255 Hang Time) (1/10 secs) (0)&lt;br /&gt;
19 - Simulcast Launch Delay (0) (approx 200 ns, 5 = 1us, &amp;gt; 0 to ENA SC)&lt;br /&gt;
97 - RX Level,  98 - Status,  99 - Save Values to EEPROM&lt;br /&gt;
i - IP Parameters menu, o - Offline Mode Parameters menu&lt;br /&gt;
q - Disconnect Remote Console Session, r - reboot system, d - diagnostics&lt;br /&gt;
&lt;br /&gt;
Enter Selection (1-27,97-99,r,q,d) :&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==IP Parameters Menu==&lt;br /&gt;
This is what a typical IP Parameters Menu looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP Parameters Menu&lt;br /&gt;
&lt;br /&gt;
Select the following values to View/Modify:&lt;br /&gt;
&lt;br /&gt;
1  - (Static) IP Address (44.128.1.2)&lt;br /&gt;
2  - (Static) Netmask (255.255.255.0)&lt;br /&gt;
3  - (Static) Gateway (44.128.1.254)&lt;br /&gt;
4  - (Static) Primary DNS Server (44.128.1.254)&lt;br /&gt;
5  - (Static) Secondary DNS Server (0.0.0.0)&lt;br /&gt;
6  - DHCP Enable (0)&lt;br /&gt;
7  - Telnet Port (23)&lt;br /&gt;
8  - Telnet Username (admin)&lt;br /&gt;
9  - Telnet Password (radios)&lt;br /&gt;
10 - DynDNS Enable (0)&lt;br /&gt;
11 - DynDNS Username (wb6nil)&lt;br /&gt;
12 - DynDNS Password (radios42)&lt;br /&gt;
13 - DynDNS Host (voter-test.dyndns.org)&lt;br /&gt;
14 - BootLoader IP Address (192.168.1.10) (OK)&lt;br /&gt;
15 - Ethernet Duplex (0=Half, 1=Full) (1)&lt;br /&gt;
99 - Save Values to EEPROM&lt;br /&gt;
x  - Exit IP Parameters Menu (back to main menu)&lt;br /&gt;
q  - Disconnect Remote Console Session, r - reboot system&lt;br /&gt;
&lt;br /&gt;
Enter Selection (1-14,99,c,x,q,r) :&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Offline Parameters Menu==&lt;br /&gt;
This is what a typical Offline Parameters Menu looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
OffLine Mode Parameters Menu&lt;br /&gt;
&lt;br /&gt;
Select the following values to View/Modify:&lt;br /&gt;
&lt;br /&gt;
1  - Offline Mode (0=NONE, 1=Simplex, 2=Simplex w/Trigger, 3=Repeater) (3)&lt;br /&gt;
2  - CW Speed (400) (1/8000 secs)&lt;br /&gt;
3  - Pre-CW Delay (4000) (1/8000 secs)&lt;br /&gt;
4  - Post-CW Delay (4000) (1/8000 secs)&lt;br /&gt;
5  - CW &amp;quot;Offline&amp;quot; (ID) String (WB6NIL)&lt;br /&gt;
6  - CW &amp;quot;Online&amp;quot; String (OK)&lt;br /&gt;
7  - &amp;quot;Offline&amp;quot; (CW ID) Period Time (6000) (1/10 secs)&lt;br /&gt;
8  - Offline Repeat Hang Time (15) (1/10 secs)&lt;br /&gt;
9  - Offline CTCSS Tone (0.0) Hz&lt;br /&gt;
10 - Offline CTCSS Level (0-32767) (3000)&lt;br /&gt;
11 - Offline De-Emphasis Override (0=NORMAL, 1=OVERRIDE) (0)&lt;br /&gt;
99 - Save Values to EEPROM&lt;br /&gt;
x  - Exit OffLine Mode Parameter Menu (back to main menu)&lt;br /&gt;
q  - Disconnect Remote Console Session, r - reboot system&lt;br /&gt;
&lt;br /&gt;
Enter Selection (1-9,99,c,x,q,r) :&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Configuration Options=&lt;br /&gt;
==Main Menu Options==&lt;br /&gt;
===Serial #===&lt;br /&gt;
Sets the serial number for the RTCM/VOTER.&lt;br /&gt;
*This sets the MAC address of the unit.&lt;br /&gt;
*Each unit must have a unique serial number on your network segment.&lt;br /&gt;
&lt;br /&gt;
===VOTER Server Address (FQDN)===&lt;br /&gt;
This is the DNS name or IP address of the Asterisk server you are connecting to.&lt;br /&gt;
&lt;br /&gt;
===VOTER Server Port===&lt;br /&gt;
This is the UDP port that the Asterisk server is listening on for clients.&lt;br /&gt;
*Typically it is left at the default of port 667.&lt;br /&gt;
*'''MUST''' match the ''port'' directive in ''voter.conf''.&lt;br /&gt;
&lt;br /&gt;
===Local Port (Override)===&lt;br /&gt;
Sets the local unit UDP port to be something different.&lt;br /&gt;
*This is typically not used and left at default (0).&lt;br /&gt;
&lt;br /&gt;
===Client Password===&lt;br /&gt;
This is the '''unique''' password for this unit.&lt;br /&gt;
*Every unit '''must''' have a '''unique''' password.&lt;br /&gt;
*'''MUST''' match the password on the client configuration line in ''voter.conf''.&lt;br /&gt;
&lt;br /&gt;
===Host Password===&lt;br /&gt;
This is the password of the Asterisk server.&lt;br /&gt;
*Configured with the ''password'' directive in ''voter.conf''.&lt;br /&gt;
&lt;br /&gt;
===Tx Buffer Length===&lt;br /&gt;
This is the size of the TX buffer from the RTCM/VOTER to the Asterisk server.&lt;br /&gt;
*Tuned parameter, set via the tuning instructions based on network configuration.&lt;br /&gt;
&lt;br /&gt;
===GPS Data Protocol (0=NMEA, 1=TSIP)===&lt;br /&gt;
Type of GPS connected.&lt;br /&gt;
*NMEA for all non-Trimble GPS units.&lt;br /&gt;
*TSIP to use with Trimble GPS that use Trimble Serial Interface Protocol (TSIP).&lt;br /&gt;
&lt;br /&gt;
===GPS Serial Polarity (0=Non-Inverted, 1=Inverted)===&lt;br /&gt;
GPS dependent setting. &lt;br /&gt;
*Depends on if you are sending TTL or RS-232 data, adjust as needed.&lt;br /&gt;
&lt;br /&gt;
===GPS PPS Polarity (0=Non-Inverted, 1=Inverted, 2=NONE)===&lt;br /&gt;
GPS dependent setting. &lt;br /&gt;
*Depends on if you are sending TTL or RS-232 data for the PPS signal, adjust as needed.&lt;br /&gt;
*If not using GPS or configuring as a mixed client, set to 2 (None).&lt;br /&gt;
&lt;br /&gt;
===GPS Baud Rate===&lt;br /&gt;
Communication speed for the GPS, default is 9600.&lt;br /&gt;
&lt;br /&gt;
===External CTCSS (0=Ignore, 1=Non-Inverted, 2=Inverted)===&lt;br /&gt;
If you are using the CTCSS input from an external CTCSS decoder, adjust this for your logic polarity, or set to 0 (ignore) if not used.&lt;br /&gt;
&lt;br /&gt;
===COR Type (0=Normal, 1=IGNORE COR, 2=No Receiver)===&lt;br /&gt;
Typically, this is left at Normal. &lt;br /&gt;
*Set to 1 (Ignore COR), if you are using the External CTCSS input.&lt;br /&gt;
&lt;br /&gt;
===Debug Level===&lt;br /&gt;
Set the Debug Level, if needed, based on the [[#Debug Options | Debug Options]] below.&lt;br /&gt;
&lt;br /&gt;
===Alt. VOTER Server Address (FQDN)===&lt;br /&gt;
If you are using redundant Asterisk servers, set the IP/DNS address of the redundant server here.&lt;br /&gt;
&lt;br /&gt;
===Alt. VOTER Server Port (Override)===&lt;br /&gt;
If the redundant Asterisk server UDP port is not 667, set it here.&lt;br /&gt;
&lt;br /&gt;
===DSP/BEW Mode===&lt;br /&gt;
If the firmware supports DSP/BEW Mode, set this to 1 to enable it, if desired.&lt;br /&gt;
*DSP/BEW firmware versions use extra firmware space and will make the diagnostic menu unavailable.&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Duplex Mode 3&amp;quot; (0=DISABLED, 1-255 Hang Time) (1/10 secs)===&lt;br /&gt;
If you are using Duplex Mode 3, set the hang time here to enable the option. Most users leave this disabled.&lt;br /&gt;
&lt;br /&gt;
===Simulcast Launch Delay===&lt;br /&gt;
If you are using Simulcast, set your launch delay here.&lt;br /&gt;
&lt;br /&gt;
===RX Level===&lt;br /&gt;
This opens the RX Level tuning screen to adjust the receive audio level from the repeater.&lt;br /&gt;
&lt;br /&gt;
===Status===&lt;br /&gt;
This opens the status menu, showing some of the current operating parameters.&lt;br /&gt;
&lt;br /&gt;
===Save Values to EEPROM===&lt;br /&gt;
Save all the options to non-volatile EEPROM.&lt;br /&gt;
*Make sure to save after you make any changes.&lt;br /&gt;
&lt;br /&gt;
===IP Parameters menu===&lt;br /&gt;
Open the IP Parameters Menu.&lt;br /&gt;
&lt;br /&gt;
===Offline Mode Parameters menu===&lt;br /&gt;
Open the Offline Mode Parameters Menu.&lt;br /&gt;
&lt;br /&gt;
===Disconnect Remote Console Session===&lt;br /&gt;
If you are connected via Telnet, this will exit your session.&lt;br /&gt;
&lt;br /&gt;
===Reboot System===&lt;br /&gt;
Reboot the VOTER/RTCM.&lt;br /&gt;
*This should be done after making configuration changes.&lt;br /&gt;
*Some setting changes require a reboot to become effective.&lt;br /&gt;
&lt;br /&gt;
===Diagnostics===&lt;br /&gt;
Open the Diagnostics Menu.&lt;br /&gt;
*Diagnostics are unavailable if you are using DSP/BEW firmware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Network Information=&lt;br /&gt;
==RTCM/VOTER Bandwidth==&lt;br /&gt;
Assuming ulaw... The RTCM will require approximately 80kbps of bandwidth for continual usage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Network Quality==&lt;br /&gt;
Your IP Network quality is important. You may wish to add a rule in your routers to prioritize traffic on UDP port 667 so that RTCM audio is given priority over other &lt;br /&gt;
traffic. Also see the [[#Debug Options]] below for notes on how to tag your packets with ToS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==RX/TX Buffers are NOT Both Millisecond Values== &lt;br /&gt;
You might assume an RX buffer (in voter.conf) of 120ms would be equivalent of a TX buffer (in the RTCM) of 120ms. That is not the case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The TX buffer is a number of 125 '''microsecond''' intervals, where the RX buffer is in milliseconds. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you follow the buffer setting instructions, you should be fine, in most cases. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Debug Options=&lt;br /&gt;
The VOTER/RTCM firmware supports some additional debugging information that can be turned on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
From the source code, the different Debug Options are listed as:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1 - Alt/Main Host change notifications&lt;br /&gt;
2 - Ignore HWlock (GGPS only)&lt;br /&gt;
4 - GPS/PPS Failure simulation (GGPS only)&lt;br /&gt;
8 - POCSAG H/W output disable (GGPS only)&lt;br /&gt;
16 - IP TOS Class for Ubiquiti&lt;br /&gt;
32 - GPS Debug&lt;br /&gt;
64 - Fix GPS 1 second off&lt;br /&gt;
128 - Fix GPS 1 month off (WTF,O??)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Not sure what they all do, but that is what they are. Here are the most common ones used:&lt;br /&gt;
*&amp;quot;Alt/Main Host change notifications&amp;quot; &lt;br /&gt;
**shows when the connection to the Asterisk server changes state.&lt;br /&gt;
*&amp;quot;IP TOS Class for Ubiquity&amp;quot; &lt;br /&gt;
**marks the IP headers from the RTCM/VOTER '''TO''' the network with ToS C0/DSCP 48 (UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS latency). Other sources show this as a Network Control TOS.) If you enable this, you also will want to have &amp;quot;utos=y&amp;quot; in your voter.conf to mark the packets from the network '''TO''' the RTCM/VOTER. We will probably change this option to mark the packets by default in a future version.&lt;br /&gt;
*&amp;quot;GPS Debug&amp;quot; &lt;br /&gt;
**will print NMEA or TSIP debug strings from the connected GPS.&lt;br /&gt;
*&amp;quot;Fix GPS 1 second off&amp;quot;&lt;br /&gt;
**this is for NMEA GPS '''only'''. It will add one second to the time.&lt;br /&gt;
*&amp;quot;Fix GPS 1 month off (WTF,O??)&amp;quot;&lt;br /&gt;
**this is for TSIP GPS '''only'''. It will effectively add a month to the date. The mktime function normally needs one month subtracted from the raw month it converts to a time/date string. Maybe there are some GPS out there that do that automatically? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The way this works is you add together the options you want to enable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Want to enable GPS Debug and IP ToS, set debug to 48.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just want to turn on GPS Debug, set debug to 32.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just want ToS turned on, set debug to 16.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Un-documented Menus/Features=&lt;br /&gt;
*Menu 96 - If firmware compiled with DUMPENCREGS enabled, Menu 96 looks like it dumps the registers from the ENC (Ethernet) chip?&lt;br /&gt;
&lt;br /&gt;
*Menu 111 - show the &amp;quot;hidden&amp;quot; option values (normally they should all be 0).&lt;br /&gt;
&lt;br /&gt;
*Menu 11780 - set the &amp;quot;Elkes&amp;quot; value. Developed for Pete Elkes, this is for solar type sites. It shuts off the Tx after a period of no Rx activity.&lt;br /&gt;
&lt;br /&gt;
*Menu 1103 - set the &amp;quot;Glaser&amp;quot; timer value? No idea what this does.&lt;br /&gt;
&lt;br /&gt;
*Menu 1170 - set &amp;quot;Sawyer Mode&amp;quot;. Developed for Tim Sawyer use on Yaesu VXR5000 repeater. It modifies de-ephasis behavior when on/off line. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Audio=&lt;br /&gt;
The RTCM/VOTER is totally flexible regarding emphasis. Although the way it is set is completely obscure. It tries to automatically do the right thing for you, which is great most of the time. But when it’s not, it's hard to know what is going on. &lt;br /&gt;
&lt;br /&gt;
If you are changing the COR Type settings, or nodeemp in voter.conf, make sure you save/reboot the RTCM/VOTER every time you make a change... changes are '''not''' effective until the RTCM/VOTER reboots!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Voting==&lt;br /&gt;
Before we get in to the different ways audio is routed, there is an important consideration you need to make if you are using the RTCM/VOTER for voting. &lt;br /&gt;
&lt;br /&gt;
The way the voting process works, it needs '''discriminator audio''' to determine the signal to noise level from each satellite receiver. As such, you will need to be feeding discriminator audio in to the RX audio pin, so that the hardware/software can vote properly. That means you also need to let the hardware/software do the squelch action.&lt;br /&gt;
&lt;br /&gt;
If you need RX CTCSS, you'll need to feed logic from an external CTCSS decoder in to the CTCSS input pin.&lt;br /&gt;
&lt;br /&gt;
Also, don't disable COR in the RTCM/VOTER... it will cause it to disable the squelch and it will report an RSSI of 255 (full quieting) for all received signals.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Receiver De-emphasis==&lt;br /&gt;
On the RX side the COR Type setting in the RTCM/VOTER determines whether the de-emphasis filter is used for RX audio. 0=Normal means the RTCM/VOTER squelch circuit is in use and it is expecting discriminator audio on the RX pin (to be able to do the squelch action), and therefore it '''will''' provide de-emphasis (audio is routed THROUGH the de-emphasis RC filter circuit) to the receiver audio. COR Type 1=IGNORE COR uses the CTCSS input pin for COR or CTCSS ''logic'' and it then expects de-emphasized receive (line) audio on the RX pin, and therefore will '''not''' provide de-emphasis to the received audio (the RC filter is switched '''out''' and audio passes straight through). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Most of the time, you do NOT need to override the automatic filter selection. However, if you do, and you are sure you have a good reason to, you CAN switch the de-emphasis filter '''out''' of the circuit so that audio passes straight through to the encoder. You would do this by setting the nodeemp=1 option in voter.conf. When you set nodeemp=1, the ''VOTER Protocol'' tells the RTCM/VOTER to switch the filter '''out''', so audio is passed straight through.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Transmitter Pre-emhpasis==&lt;br /&gt;
On the TX side, the RTCM/VOTER expects the repeater to accept ''mic audio''. In other words, the '''repeater''' is providing the pre-emphasis, not the RTCM/VOTER (you are '''not''' directly modulating the TX). This can be overridden by setting CTCSS tone in voter.conf. If a CTCSS tone is defined, the RTCM '''will''' provide pre-emphasis to the audio, and expects that you will be connecting to your repeater's flat audio input (direct modulation). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you don’t want TX CTCSS tone but '''do''' need pre-emphasis, set an arbitrary (any) CTCSS tone in voter.conf, and set the level to 0. This will force the RTCM/VOTER to pre-emphasize the audio it generates on the TX pin, but it won't actually mix in a CTCSS tone. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Level Setting==&lt;br /&gt;
Setting the audio levels for the RTCM/VOTER is pretty straight forward. Just follow these steps:&lt;br /&gt;
*Ensure you have a connection to your host Asterisk server/chan_voter instance&lt;br /&gt;
*Send a 1kHz@3kHz on-channel, full-quieting signal in to the repeater's RX&lt;br /&gt;
*Set the RX up so it reads 3kHz deviation on the RTCM's built in console meter&lt;br /&gt;
*Now set the TX level '''pot''' to get 3kHz out of the transmitter (No PL)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now change the modulation from 1kHz tone to 800Hz followed by 1.8kHz and verify that the deviation level doesn't change as the tone frequency changes. '''Changing levels indicates a pre/de-emphasis issue.''' You will want to read the above sections on how audio is handled, and figure out where your issue is.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If using PL you have to account for that deviation, unless you filter it out with your IFR (test set). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That's it!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Optionally, if you are using the built-in &amp;quot;offline repeat&amp;quot; functions, fail the connection to the host Asterisk server, and make sure your repeat audio performs the same as above.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Crappy Transmit Audio==&lt;br /&gt;
&lt;br /&gt;
Does your repeated audio sounded really bassy, muffled, and not very understandable? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There was a situation where, compared to a typical simplex radio-to-radio transmission, the audio through the repeater (RTCM and Asterisk) was unacceptable. What was discovered was that the RTCM has an internal pre-emphasis function that was disabled. The user had intentionally disabled &amp;quot;txctcss&amp;quot; and &amp;quot;txctcsslevel&amp;quot; in voter.conf because he didn't &lt;br /&gt;
want the RTCM transmitting CTCSS (the Quantar was doing that already). He ultimately found a post on the mail list explaining the settings above that said enabling txctcss = some valid tone (114.8 in his case) and setting txctcsslevel = 0 would turn on the pre-emphasis function in the RTCM without transmitting CTCSS tones. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
He did, and it worked like a charm! Audio now had more treble and was less bassy/muffled. So, future RTCM users, be sure not to comment out txctcss and txctcsslevel in voter.conf!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just enable and set the level to 0. You'll thank me later. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=GPS=&lt;br /&gt;
The RTCM/VOTER will work with most GPS available. It requires either NMEA or Trimble TSIP binary data. It only receives data '''from''' the GPS (GPS TX), it does not send anything '''to''' the GPS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The firmware is specifically written to talk to Trimble Thunderbolt receivers using Trimble's TSIP binary data interface, however, other Trimbles GPS receivers that talk TSIP are generally compatible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==NMEA Sentences==&lt;br /&gt;
If you are using an NMEA GPS (as opposed to a Trimble using the TSIP binary interface), the RTCM/VOTER is looking for the following NMEA sentences:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$GPGGA&lt;br /&gt;
$GPGSV&lt;br /&gt;
$GPRMC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Lock==&lt;br /&gt;
The GPS led will go solid regardless of the connection LED. That '''has''' to happen or it won't connect to the Asterisk server. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is not unusual for it to take up to 20 mins to get a GPS lock LED (ie. using a Trimble Thunderbolt) after any reboot. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS De-sense==&lt;br /&gt;
If you are having odd loss of lock issues, consider you may have interference to your GPS antenna from strong RF nearby. A note from Jesse Lloyd:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I also had crazy problems with poor signal on my GPS when I set it up sitting in a window, and once installed at site I had the GPS antenna maybe 6 ft from the VHF antenna, and after some troubleshooting found it was getting swamped with RF and loosing lock. &lt;br /&gt;
&lt;br /&gt;
I found the debug setting of 32 useful in the RTCM, you can see a hex output of the GPS status.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Issues==&lt;br /&gt;
===Trimble Thunderbolt===&lt;br /&gt;
You may find your Trimble Thunderbolt is showing the incorrect date at the moment. It could be showing the year as 1997. This is due to the date in the Thunderbolt being reported incorrectly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''This can cause some of your voting receivers to not connect, if they are used with other GPS in your system.''' If you have '''ALL''' Thunderbolts, or '''NO''' Thunderbolts, you are probably fine. If you have '''ALL''' Thunderbolts, the date/time is probably wrong, but they will ALL be wrong, so they will connect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GPS Time is a continuous counting time scale beginning at the January 5, 1980 to January 6, 1980 midnight. It is split into two parts: a time of week measured in seconds from midnight Sat/Sun and a week number. The time of week is transmitted in an unambiguous manner by the satellites, but only the bottom 10 bits of the week number are transmitted. This means that a receiver will see a week number count that goes up steadily until it reaches 1023 after which it will “roll over” back to zero, before steadily going up again. Such a week rollover will occur approx. every 20 years. The last week rollover occurred in 1999 and the next one will be in 2019.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Thunderbolt manual states:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The ThunderBolt adjusts for this week rollover by adding 1024 to any week number reported by GPS which is less than week number 936 which began on December 14, 1997. With this technique, the ThunderBolt will provide an accurate translation of GPS week number and TOW to time and date until July 30, 2017.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As such, the Trimble Thunderbolt has a firmware issue with the GPS Week rollover that manifested itself on July 30, 2017, causing the date to become incorrect. The Thunderbolt thinks the week changed from 935 to 936 (actual week 1959-1024=935), so it stopped adding 1024 to the week.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We have added a brute-force fix starting in RTCM/VOTER firmware &amp;gt;=1.51. This fix adds 619315200 seconds (1024 weeks) to the time reported by the GPS. It fixes the Thunderbolts, we have not done extensive testing to see how it affects other TSIP receivers.&lt;br /&gt;
&lt;br /&gt;
===Garmin===&lt;br /&gt;
====Garmin 18x LVC Wiring Issues====&lt;br /&gt;
If you have issues with your GPS 18x LVC not talking to the RTCM/VOTER, it may not be hooked up to the RTCM correctly. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Garmin pin labeling is backwards to what you may think. See below. You probably need to swap pins 6 and 14.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RTCM   	                 GPS 18x LVC      &lt;br /&gt;
6 GRX 	&amp;lt;-- Rx Data 	 6 Green  &lt;br /&gt;
7 GPPS 	&amp;lt;-- Pulse Output 1 Yellow  &lt;br /&gt;
8 GND   Ground 		 3 Black  &lt;br /&gt;
8 GND   Ground 		 5 Black  &lt;br /&gt;
13 +5V 	--&amp;gt;Vin 		 2 Red  &lt;br /&gt;
14 GTX 	--&amp;gt; TX Data 	 4 White&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log into the RTCM and do 98 and you should see something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Current Time: Sun  Apr 20, 2014  04:37:02.820&lt;br /&gt;
Last Rx Pkt System time: 04/20/2014 03:55:35.580, diff: 2487260 msec&lt;br /&gt;
Last Rx Pkt Timestamp time: 04/20/2014 03:55:32.064, diff: 3515 msec&lt;br /&gt;
Last Rx Pkt index: 160, inbounds: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Garmin and the RTCM====&lt;br /&gt;
Beware when buying newer Garmin GPS's to use with the Micro-Node RTCM.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The RTCM expects a 5V PPS signal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Newer Garmin's (GPS 18X, 18X LVC, etc.) MAY NOT output 5V, and can cause issues. '''Check the Garmin datasheet'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER is designed to accept both 3.3V or 5V signals, and ''should'' work fine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==No GPS/Mixed Mode==&lt;br /&gt;
You do not need a timing source to use an RTCM if you don’t want to vote. That’s called Mix Mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Having the PPS Polarity set to 2 tells the RTCM you do not have a GPS. That forces the RTCM to become a mix (non-voting) client. Turn it on, save it, and restart. A simple voter.conf would look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[general]&lt;br /&gt;
port = 667&lt;br /&gt;
password = BLAH&lt;br /&gt;
&lt;br /&gt;
[1000]&lt;br /&gt;
Site1 = pswrd1,master,transmit&lt;br /&gt;
Site2 = pswrd2,transmit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mixed Client Error==&lt;br /&gt;
&amp;quot;I am getting this error in Asterisk&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WARNING[2368]: chan_voter.c:4511 voter_reader: Voter client master timing source mobile1 attempting to authenticate as mix client!!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A mixed client error means the voter.conf file is expecting an RTCM to try and connect with a GPS IP packet (ie. has '''master''' in it in voter.conf), but the RTCM isn't &lt;br /&gt;
sending a GPS IP packet. So its a mismatch between voter.conf and Option 10 in the RTCM. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to use a mix client (non-voted), make sure that receiver's configuration line in voter.conf '''does not''' have the '''master''' option set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Debug==&lt;br /&gt;
To turn on GPS Debugging, set the Debug Option Level in the RTCM/VOTER to 32.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [[#Debug Options]] levels for more information on how this works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Trimble Debug Status Decoding==&lt;br /&gt;
The VOTER/RTCM when in TSIP mode (Trimble), assumes it is a Trimble Thunderbolt and is looking for two packets:&lt;br /&gt;
*0x8F-AB - Primary Timing Packet&lt;br /&gt;
*0x8F-AC - Supplemental Timing Packet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Grab a copy of the Thunderbolt User Guide: http://leapsecond.com/pages/tbolt/Thunderbolt-2012-02.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pages 78-83 are the important ones.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Packet 0x8F-AB is what grabs the timing information, and packet 0x8F-AC is what it looks at for everything else (including debug).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The debug string that the VOTER/RTCM reports:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	printf(&amp;quot;GPS-DEBUG: TSIP: ok %d, 9 - 14: %02x %02x %02x %02x %02x %02x\n&amp;quot;,&lt;br /&gt;
					happy,gps_buf[9],gps_buf[10],gps_buf[11],gps_buf[12],gps_buf[13],gps_buf[14]);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, the 1 after ok is the &amp;quot;happy gps&amp;quot; flag. The other 5 bytes are supposed to be bytes 9-14 from the packet... sort of. They are bytes 9-14 of the buffer, but they are actually bytes 8-13 of the binary message.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Looking at the message structure, bytes 8-13 are:&lt;br /&gt;
*8-9 Critical Alarms&lt;br /&gt;
*10-11 Minor Alarms&lt;br /&gt;
*12 GPS Decoding Status&lt;br /&gt;
*13 Disciplining Activity&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Therefore, the messages you are seeing break down as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GPS-DEBUG: TSIP: ok 1, 9 - 14: 00 00 00 00 00 00 - everything is good in the 'hood, Doing Fixes, Phase Locking&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 18 08 06 - not happy, Not Tracking Satellites, Not Disciplining Oscillator (0x18 --&amp;gt; 0b000000011000), No Usable Sats, Inactive&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 08 08 05 - not happy, Not Tracking Satellites, No Useable Sats, Compensating OXCO (holdover)&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 00 00 05 - not happy, Compensating OXCO (holdover)&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 1, 9 - 14: 00 00 00 00 00 08 - happy, Recovery Mode&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 00 00 04 - not happy, Initializing Loop Filter&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The GPS is flagged as NOT HAPPY in TSIP mode if ANY of the following are TRUE:&lt;br /&gt;
*If GPS Decoding Status is anything other than &amp;quot;Doing Fixes&amp;quot;.&lt;br /&gt;
*If Disciplining Activity is not Phase Locking or Recovery Mode.&lt;br /&gt;
*Any Critical Alarms.&lt;br /&gt;
*Any Minor Alarms.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ubiquity ToS=&lt;br /&gt;
See https://help.ubnt.com/hc/en-us/articles/205231750-airMAX-How-is-QoS-and-prioritization-handled-by-airMAX-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, if we set ToS/DSCP in the header to C0, then Ubiquity (and other gear watching ToS) ''should'' prioritize the packets. This sets the DSCP to 110 000 aka 48. UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS latency). Other sources show this as a Network Control TOS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is an option in voter.conf to turn this on (utos=y). However, this only controls packets being sent from Asterisk '''TO''' the RTCM. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to tag packets from the RTCM '''TO''' Asterisk, you need to set the RTCM debug option level to 16 (see [[#Debug Options]] for how this works).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At some point we should probably change the default behaviour of the RTCM firmware to mark the packets and use the debug setting to '''disable''' ToS. That change (if you wanted to compile your own firmware) would be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Change line 90 in IP.c&lt;br /&gt;
&lt;br /&gt;
From:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? 0xc0 : (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY))&lt;br /&gt;
&lt;br /&gt;
To:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY) : 0xc0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This changes the conditional expression from if the debug level is 16 to mark the packets with DSCP 48 to if the debug level is 16, mark the packets routine (DSCP 0).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM Simulcasting=&lt;br /&gt;
The RTCM/VOTER boards do support simulcasting, however, there are a bunch of quirks that one needs to be aware of.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Radio Hardware==&lt;br /&gt;
For best results, you should use all identical RF equipment between your voting RX sites and simulcast TX sites. If you don't, you can end up with strange audio artifacts when different receivers are used, and other strange audio issues when different transmitters are used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==9.6MHz Oscillator==&lt;br /&gt;
If you want reliable simulcast with an acceptable level of overlap warble, you MUST inject a GPS-disciplined or OXCO 9.6MHz signal to the clock of the RTCM's, in lieu of their stock internal crystal. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Otherwise, the inherent internal clock jitter of the RTCM's will cause CTCSS warble, etc. in areas where your transmitters overlap. The 1 PPS feed that you normally feed the RTCM's is acceptable for voting, but naturally, a typical crystal-driven clock will slightly drift in between the pulses every second due to inherent jitter, etc., and that ain't to good for situations like simulcast which demand sample-accurate performance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are some comments from Joe, KC2IRV, on the subject. He has also created his own wiki, specific to simulcast issues, you can find it at: http://rtcmsimulcast.wikifoundry.com/ &lt;br /&gt;
&lt;br /&gt;
:I felt I needed to let those on this mailing list know my findings with simulcasting with the RTCM units since I have received a great deal of help and information from people on this list.&lt;br /&gt;
&lt;br /&gt;
:For the past week I have had a two (2) site simulcast system up and running on UHF using the RTCM units. I have done a great deal of testing and proving on the bench and it is so far working beautifully. &lt;br /&gt;
&lt;br /&gt;
:The one issue that was made apparent to me early on was that in order for the RTCM's to be suitable for simulcast, the processor inside it needed to be clocked to a more accurate source. This source is supposed to be the Programmable Clock Generator Module in order to produce a GPS locked 9.6 MHz reference for the processor. Unfortunately this unit is not currently available.&lt;br /&gt;
&lt;br /&gt;
:Knowing this, I started to go down the road of possibly designing my own, but stumbled upon a cheap, plentiful supply of Symmetricom 9.6 MHz sinewave OCXO's. I took a chance and ordered a few to experiment with to see if the RTCM would be able to use this in place of the supplied crystal for a clock. I found they did, with that I decided to modify the RTCM with an SMA connector just above the audio adjustment pots and use this OCXO. I trimmed the frequency on the units to match each other and used them to produce the processor clock.&lt;br /&gt;
&lt;br /&gt;
:After a week of testing, I have found the results in the overlap areas to be exactly as I would expect them on a public safety/commercial simulcast system. While in an overlap region where both transmitters are within 3dB of one another, to the ear you hear no audio phase wandering. Of course , this has only been a week of testing so I wouldn't call it case closed yet.&lt;br /&gt;
&lt;br /&gt;
:I will say that if this system remains this way after testing for 6 months to a year than using a 9.6 MHz OXCO is a viable alternative to achieve the needed precision and accuracy needed for the processor clock to make it suitable for simulcast.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Comments from Jim Dixon on the issue:&lt;br /&gt;
&lt;br /&gt;
:You have to use '''something''' that will take the precise 10MHz (or whatever it is) from the GPSDO and PLL (phase-locked) convert it to 9.6MHz (square wave at 3.3V for the CPU clock).&lt;br /&gt;
&lt;br /&gt;
:We had to use 9.6MHz mainly because of the DAC in the dsPIC instead of 10MHz. The options for various divide/clock radios in the part are RATHER limited. As I recall, there wasn't even a way of getting the necessary 16kb/s sample rate on the ADC from 10MHZ, either.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Micro-Node RTCM Clock Issue=&lt;br /&gt;
James, KI0KN, had some strange-ness with some of his RTCM's when used for voting. As soon as he changed menu item 10 on the RTCM to either a (1) or a (0) instead of (2), he '''instantly''' got this on the RTCM console:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
04/05/2016 18:44:13.660  Lost GPS Time synchronization&lt;br /&gt;
04/05/2016 18:44:13.660  Host Connection Lost (Pri) (10.16.1.240)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And it sits there forever and never re-establishes connection to the host. The issue was finally traced to a bad batch of 9.6MHz crystals that affected a small run of the RTCM's. The issue was eventually resolved by Micro-Node, but we'll document it here just for record keeping.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
James comments to the list:&lt;br /&gt;
&lt;br /&gt;
:Well, after many of you offered your time and thoughts on my voter problem, Jim, WB6NIL, graciously donated a couple of hours of his time to remotely help me and he uncovered the problem.&lt;br /&gt;
&lt;br /&gt;
:All 5 of my RTCMs were purchased within the last 6 months, and I suspect all 5 have the same problem (will verify that today). The problem is that the microprocessor crystal is running too fast! There is 9.6Mhz crystal that drives the MPU, on the particular unit that Jim helped me diagnose, it's running 2.5 khz too fast.  &lt;br /&gt;
&lt;br /&gt;
:There is a sanity check in the firmware that makes sure the correct number of samples were taken in the last second (it's supposed to be 8000) and fails if the sample is incorrectly sized (mine is taking 8003 samples).  Jim helped adjust the code to be more tolerant of the sampling error and my whole system instantly worked.&lt;br /&gt;
&lt;br /&gt;
:I have since tested it with ALL my GPSs (they all work great!). So I now have everything working, including the voting.&lt;br /&gt;
&lt;br /&gt;
:I haven't contact Micro-Node about it yet. Jim told me that voting should work fine but this clock error would probably not be acceptable for Simulcast (something we have no plans on doing as of now). Since mine are deployed at mountain top sites, I'll probably pursue a crystal that is running at the correct frequency and use &amp;quot;standard&amp;quot; firmware so that if the decision is ever made to play with simulcast, I won't be right back in this same boat.&lt;br /&gt;
&lt;br /&gt;
:Thanks to all that helped out, and a HUGE thanks to Jim for taking the time to troubleshoot this.&lt;br /&gt;
&lt;br /&gt;
:BTW- This clock error will NOT effect the RTCM in mix client mode, it only affects it in voting or simulcast mode!&lt;br /&gt;
&lt;br /&gt;
:In voter.c, the stock line is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if ((samplecnt &amp;gt;= 7999) &amp;amp;&amp;amp; (samplecnt &amp;lt;= 8001))&lt;br /&gt;
&lt;br /&gt;
it needs to be changed to something like:&lt;br /&gt;
&lt;br /&gt;
if ((samplecnt &amp;gt;= 7999) &amp;amp;&amp;amp; (samplecnt &amp;lt;= 8003 ))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:That was just enough to make my first RTCM work. I've had a chance now to check a few more of my RTCMs on the bench this morning and the crystal frequencies are kind of all over.  The next one I had on the bench was 5.2Khz fast. The above code was still not enough to fix it (as would be expected) so it looks like the quality control on whatever manufacturer that crystal is, isn't very good (or a low tolerance crystal is being used). I am going to pursue crystal replacement to get a highly accurate, stable, on-frequency crystal in there as my first choice. Changing the firmware 5 different times doesn't seem like the right answer.&lt;br /&gt;
&lt;br /&gt;
:Jim put that sanity check in there for a reason. Working around it '''may''' allow the device to work, but to me, it seems getting the hardware operating the way it was supposed to originally is the better answer. I will follow up with Micro-node and let you all know how it goes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After following up with Micro-Node:&lt;br /&gt;
:They were all off, some were off a LOT. I talked to Mark @ Micronode. He told me there were 25 units that made it out the door with a crystal from an unapproved source and that was quite likely the reason for the problem. He gladly sent me 5 new crystals to replace (he offered to replace them himself if I sent the units in, but I am comfortable doing it myself to save the time and postage). &lt;br /&gt;
&lt;br /&gt;
:I haven't received them in the mail yet to show that the problem is fixed, but I will post here when that happens. He was great to work with and had no issue getting things set straight. If you are having the same issue and your RTCMs were bought about the same time, I'd suggest you contact him and have him help you resolve the issue!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Duplex Mode 3=&lt;br /&gt;
Does delayed repeat audio bug you? Tired of hearing a bit of yourself after you unkey? Wish you could talk full duplex? Hate the echo chamber effect? Then we have the answer for you.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Duplex Mode 3 in app_rpt allows for &amp;quot;in-cabinet repeat&amp;quot; (where the radio hardware provides repeat audio) and app_rpt adds the hang time, courtesy tones, linking - all the &lt;br /&gt;
things apt_rpt does sans repeat audio. Therefore no repeat audio delay. Cool, eh? This duplex mode has been in app_rpt for a while. Problem has been how to implement it in the RTCM environment. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Duplex Mode 3 support in the RTCM provides in-cabinet repeat functionality. Repeat audio loops through the RTCM and has almost zero delay because it does not have to traverse the network. The delay is not quite zero but it's plenty short enough to eliminate all of the above mentioned annoyances. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Of course Duplex Mode 3 support can't be used with voting or simulcast. You also loose Touch Tone muting, Time Out Timer and Repeater Disable functions because the repeat path is not through app_rpt.&lt;/div&gt;</summary>
		<author><name>Ve7fet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=53</id>
		<title>RTCM Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=53"/>
		<updated>2017-08-16T15:27:44Z</updated>

		<summary type="html">&lt;p&gt;Ve7fet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Micro-Node RTCM and VOTER interfaces are typically used with AllStar in voting/simulcast applications. They MAY be used for ANY repeater interface application, through the chan/voter channel driver. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER is the original through-hole board designed by Jim Dixon for this application. It is open-source, and the relevant Gerber files and BoM to build it are available. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The [http://www.micro-node.com/thin-m1.shtml Micro-Node Radio Thin Client Module (RTCM)] is the commercial version of the VOTER. It uses surface mount parts (SMT), but is functionally equivalent to the original VOTER. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In general, the two terms (RTCM/VOTER) are used interchangeably, as they operate the same, and use the same firmware (mostly, see below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This page will highlight some of the operational concerns, quirks, bugs, and other items of interest that relate to these interfaces. Much of the information has been gleaned off the AllStar mail list, comes from personal experience, or comes from notes in the firmware source code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Firmware=&lt;br /&gt;
The firmware in the RTCM and VOTER is the same, except it is compiled for the specific dsPIC that is installed in each. As such, the firmware is specific to the VOTER or the RTCM, and is NOT interchangeable (it won't boot in the wrong device). Firmware for the RTCM is denoted by &amp;quot;smt&amp;quot; in the filename.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are '''two parts''' to the firmware, a bootloader, and then the actual firmware file. The bootloader starts when power is applied, and allows you to talk to the dsPIC and load new firmware files over ethernet. If the bootloader is not intercepted by the loading tool, it will continue to boot the current firmware file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All new boards will need to have the bootloader installed first, followed by a firmware file. You '''can''' load a firmware file directly (.hex) in to the dsPIC, but then you will not have any of the bootloader remote loading features.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The current bootloader (.cof file) is available here: https://github.com/AllStarLink/voter/tree/master/voter-bootloader (the -smt file is for the RTCM). It needs to be loaded with a PICKit programmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Current firmware (.cry file) is available here: https://github.com/AllStarLink/voter/tree/master/board-firmware . They are loaded with the EBLEX C30 Programmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are multiple &amp;quot;flavors&amp;quot; of firmware available. See below for further explanation of what all the options mean.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The DSPBEW versions have Jim's DSP/BEW feature enabled. Note that due to the size of this feature, the diagnostics menu is NOT available in this version.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CHUCK versions have Chuck Henderson's RSSI and Squelch modifications enabled. This is probably the version that most user's will want to use in production.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Compiling Environment==&lt;br /&gt;
If you look in the [https://github.com/AllStarLink/voter/blob/master/votersystem.pdf votersystem.pdf], you will find a procedure to modify and load the bootloader in to the dsPIC of a VOTER board. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Unfortunately, there is an important step '''missing''' in that procedure, which is covered below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In addition, the old links for the MPLAB software are dead, so let's update this info and get you going.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Currently (Feb 2017), you can get the required software from:&lt;br /&gt;
:http://www.microchip.com/development-tools/downloads-archive&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download MPLAB IDE 32-bit Windows v8.66:&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_IDE_v8_66.zip&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/MPLAB_IDE_v8_66.zip&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download MPLAB C Compiler for PIC24 and dsPIC DSCs v3.31 '''NOT v.3.25''':&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Optionally, install Windows Virtual PC and XP Mode. This is getting to be pretty old software, so running it under XP Mode may be a good idea, so we can keep it isolated (install it in a virtual machine). It does run fine in Windows 7.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To setup the compile/build environment, follow these steps:&lt;br /&gt;
*Run the MPLAB IDE installer. You don't need to install the HI-TECH C Compiler at the end (click no)&lt;br /&gt;
*Run the MPLAB C Compiler installer&lt;br /&gt;
*Select Legacy Directory Name&lt;br /&gt;
*'''Select Lite Compiler'''&lt;br /&gt;
*Go to: https://github.com/AllStarLink&lt;br /&gt;
*Follow the links to: voter --&amp;gt; Clone or Download --&amp;gt; Download Zip. That will get you voter-master.zip which is a download of the whole VOTER tree from GitHub.&lt;br /&gt;
*Extract it somewhere (ie. in the XP Mode Virtual PC)&lt;br /&gt;
*Launch the MPLAB IDE&lt;br /&gt;
*Go to Configure --&amp;gt; Settings --&amp;gt; Projects and de-select one-to-one project mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bootloader==&lt;br /&gt;
If you need to load the bootloader in to a fresh board, you will need to follow these steps:&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; voter-bootloader.mcp --&amp;gt; Open (it is in the voter-bootloader folder of the GitHub source)&lt;br /&gt;
*Go to File --&amp;gt; Import --&amp;gt; voter-bootloader --&amp;gt; ENC_C30.cof --&amp;gt; Open '''This step is missing from the original procedure.'''&lt;br /&gt;
*Remove JP7 on the VOTER Board. This is necessary to allow programming by the PICKit2/PICKit3 device.&lt;br /&gt;
*Attach the PICKIT2/PICKit3 device to J1 on the VOTER board. Note that Pin 1 is closest to the power supply modules (as indicated on the board).&lt;br /&gt;
*If you have not already selected a programming device, go to Programmer --&amp;gt; Select Device and choose PICKit3 (or PICKit2, depending on what you are using).&lt;br /&gt;
*Go to Programmer --&amp;gt; Program. This will program the bootloader firmware into the PIC device on the board.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to change the default IP address from 192.168.1.11 in the bootloader:&lt;br /&gt;
*Select View --&amp;gt; Program Memory (from the top menu bar)&lt;br /&gt;
*Hit Control-F (to &amp;quot;find&amp;quot;) and search for the digits &amp;quot;00A8C0&amp;quot;.&lt;br /&gt;
*These should be found at memory address &amp;quot;03018&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;A8C0&amp;quot; at 03018 represents the hex digits C0 (192) and A8 (168) which are the first two octets of the IP address. The six digits to enter are 00 then the SECOND octet of the IP address in hex then the FIRST octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;0B01&amp;quot; at 0301A represents the hex digits 0B (11) and 01 (1) which are the second two octets of the IP address. The six digits to enter are 00 then the FOURTH octet of the IP address in hex then the THIRD octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you have modified the address to your desired IP, follow the programming procedure (above).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Firmware==&lt;br /&gt;
To compile the firmware (if you want to make custom changes):&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; navigate to board-firmware and open the .mcp file for the flavor of firmware you want to compile. They are in the board-firmware folder of the GitHub source.&lt;br /&gt;
*'''NOTE''': the .mcp files with the &amp;quot;smt&amp;quot; suffix are for the RTCM (built with SMT parts). The non-smt files are for the ORIGINAL through-hole VOTER boards. The difference is that the VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
*Go to Project --&amp;gt; Build Configuration and select &amp;quot;Release&amp;quot;. This may not be necessary (I don't believe that option is used in the firmware), but it removes the compiler option of __DEBUG being passed, so theoretically it would build &amp;quot;normal&amp;quot; firmware.&lt;br /&gt;
*Go to Configure --&amp;gt; Select Device and choose the appropriate device for your board from the Device list. If you don't select the right one, the board will not boot. Select dsPIC33FJ128GP802 for the VOTER, and dsPIC33FJ128GP804 for the RTCM.&lt;br /&gt;
*Now, if you go to Project --&amp;gt; Build All it should compile everything and show you &amp;quot;Build Succeeded&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A .cry file should be in the board-firmware folder. You can load this with the ENC Loader.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is also a .hex file in there that you could load with a programmer... but that would wipe the bootloader... so don't do that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Chuck Squelch==&lt;br /&gt;
If you want to enable &amp;quot;Chuck Squelch&amp;quot;, open the HardwareProfile.h and un-comment #define CHUCK. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may also want to go down to Line 291 in Voter.c (right click on the window, go to Properties --&amp;gt; &amp;quot;C&amp;quot; File Types --&amp;gt; Line Numbers) and tack on CHUCK after 1.60 (the current version number) so that when you load this firmware, the version will be shown as 1.51CHUCK, and you'll know that Chuck Squelch is compiled in. We should probably make that more automagic in the future...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==DSP/BEW==&lt;br /&gt;
If you want to compile the DSPBEW version, open the DSPBEW project file instead.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DSP/BEW Firmware Version=&lt;br /&gt;
DSP BEW Firmware is mutually exclusive with the diagnostic menu. There is not enough space for both, if you load the DSP/BEW firmware, you will '''NOT''' have a diag menu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BEW stands for Baseband Examination Window.&lt;br /&gt;
&lt;br /&gt;
Typically, the discriminator of an FM communications receiver produces results containing audio spectrum from the &amp;quot;sub-audible&amp;quot; range (typically &amp;lt; 100 Hz) to well above frequencies able to be produced by modulating audio. These higher frequencies can be utilized to determine signal quality, since they can only contain noise (or no noise, if a sufficiently strong signal is present).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For receivers (such as the Motorola Quantar, etc) that do not provide sufficient spectral content at these &amp;quot;noise&amp;quot; frequencies (for various reasons), The &amp;quot;DSP/BEW (Digital Signal Processor / Baseband Examination Window)&amp;quot; feature of the RTCM firmware may be utilized. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These receivers are perfectly capable of providing valid &amp;quot;noise&amp;quot; signal with no modulation on the input of the receiver, but with strong modulation (high frequency audio and high deviation), it severely interferes with proper analysis of signal strength.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This feature provides a means by which a &amp;quot;Window&amp;quot; of baseband (normal audio range) signal is examined by a DSP and a determination of whether or not sufficient audio is present to cause interference of proper signal strength is made. During the VERY brief periods of time when it is determined that sufficient audio is present to cause interference, the signal strength value is &amp;quot;held&amp;quot; (the last valid value previous to the time of interference) until such time that the interfering audio is no longer present.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The DSP/BEW feature is selectable, and '''should not''' be used for a receiver that does not need it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A note on the Motorola SLR5700 per VE7FET. DSP/BEW definitely makes a difference on what AllMon reports for the signal strength of received signals. It is less reactive when DSP/BEW = 1 than with it set to 0. We'll have to see what the real world trials show. It might be better to leave it off.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Chuck Squelch=&lt;br /&gt;
&amp;quot;Chuck Squelch&amp;quot; are a couple firmware changes made by Chuck Henderson, WB9UUS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pre-compiled firmware versions including this option are available on [https://github.com/AllStarLink/voter/tree/master/board-firmware GitHub]. See above on how it is enabled/compiled, if you are rolling your own firmware modifications.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
One of the changes fixes an issue with weak signals producing RSSI readings all over the place. It is caused by a 16 bit value that was overflowing (it is the RSSI change in the firmware). It results in rock-solid RSSI values being reported, even on barely or non-readable signals. '''This change will likely be rolled in to a permanent fix in a future firmware release.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The other firmware change changes how the squelch responds (looks at the noise in the last two audio samples) and makes the &amp;quot;Micor squelch&amp;quot; action work better.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may also want to consider the following changes in /etc/asterisk/voter.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;Comment out:&lt;br /&gt;
;thresholds =&lt;br /&gt;
&lt;br /&gt;
;and set:&lt;br /&gt;
linger = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Squelch Issues==&lt;br /&gt;
*If anyone is off frequency a little bit, that will make the voice talk off worse. Double check that the repeater and the users are all on frequency.&lt;br /&gt;
*Don't use narrow bandwidth on the repeater receiver. &lt;br /&gt;
*Make sure that the discriminator audio is not rolled off even a little bit at the high end. There should not be resistors in series or capacitors to ground between the discriminator chip output pin and the voter board input, for best results.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM/VOTER LED's=&lt;br /&gt;
RX LED on the RTCM/VOTER will flash (same rate as ACT LED) if you have External CTCSS enabled, and the received signal has the wrong (or no) valid PL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Menus=&lt;br /&gt;
==Main Menu==&lt;br /&gt;
This is what a typical Main Menu looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Select the following values to View/Modify:&lt;br /&gt;
&lt;br /&gt;
1  - Serial # (0000) (which is MAC ADDR 00:04:A3:00:00:00)&lt;br /&gt;
2  - VOTER Server Address (FQDN) (44.128.1.1)&lt;br /&gt;
3  - VOTER Server Port (667),  4  - Local Port (Override) (0)&lt;br /&gt;
5  - Client Password (password1),  6  - Host Password (hostpass1)&lt;br /&gt;
7  - Tx Buffer Length (800)&lt;br /&gt;
8  - GPS Data Protocol (0=NMEA, 1=TSIP) (1)&lt;br /&gt;
9  - GPS Serial Polarity (0=Non-Inverted, 1=Inverted) (1)&lt;br /&gt;
10 - GPS PPS Polarity (0=Non-Inverted, 1=Inverted, 2=NONE) (0)&lt;br /&gt;
11 - GPS Baud Rate (9600)&lt;br /&gt;
12 - External CTCSS (0=Ignore, 1=Non-Inverted, 2=Inverted) (0)&lt;br /&gt;
13 - COR Type (0=Normal, 1=IGNORE COR, 2=No Receiver) (0)&lt;br /&gt;
14 - Debug Level (0)&lt;br /&gt;
15  - Alt. VOTER Server Address (FQDN) ()&lt;br /&gt;
16  - Alt. VOTER Server Port (Override) (0)&lt;br /&gt;
17  - DSP/BEW Mode (0)&lt;br /&gt;
18 - &amp;quot;Duplex Mode 3&amp;quot; (0=DISABLED, 1-255 Hang Time) (1/10 secs) (0)&lt;br /&gt;
19 - Simulcast Launch Delay (0) (approx 200 ns, 5 = 1us, &amp;gt; 0 to ENA SC)&lt;br /&gt;
97 - RX Level,  98 - Status,  99 - Save Values to EEPROM&lt;br /&gt;
i - IP Parameters menu, o - Offline Mode Parameters menu&lt;br /&gt;
q - Disconnect Remote Console Session, r - reboot system, d - diagnostics&lt;br /&gt;
&lt;br /&gt;
Enter Selection (1-27,97-99,r,q,d) :&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==IP Parameters Menu==&lt;br /&gt;
This is what a typical IP Parameters Menu looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP Parameters Menu&lt;br /&gt;
&lt;br /&gt;
Select the following values to View/Modify:&lt;br /&gt;
&lt;br /&gt;
1  - (Static) IP Address (44.128.1.2)&lt;br /&gt;
2  - (Static) Netmask (255.255.255.0)&lt;br /&gt;
3  - (Static) Gateway (44.128.1.254)&lt;br /&gt;
4  - (Static) Primary DNS Server (44.128.1.254)&lt;br /&gt;
5  - (Static) Secondary DNS Server (0.0.0.0)&lt;br /&gt;
6  - DHCP Enable (0)&lt;br /&gt;
7  - Telnet Port (23)&lt;br /&gt;
8  - Telnet Username (admin)&lt;br /&gt;
9  - Telnet Password (radios)&lt;br /&gt;
10 - DynDNS Enable (0)&lt;br /&gt;
11 - DynDNS Username (wb6nil)&lt;br /&gt;
12 - DynDNS Password (radios42)&lt;br /&gt;
13 - DynDNS Host (voter-test.dyndns.org)&lt;br /&gt;
14 - BootLoader IP Address (192.168.1.10) (OK)&lt;br /&gt;
15 - Ethernet Duplex (0=Half, 1=Full) (1)&lt;br /&gt;
99 - Save Values to EEPROM&lt;br /&gt;
x  - Exit IP Parameters Menu (back to main menu)&lt;br /&gt;
q  - Disconnect Remote Console Session, r - reboot system&lt;br /&gt;
&lt;br /&gt;
Enter Selection (1-14,99,c,x,q,r) :&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Offline Parameters Menu==&lt;br /&gt;
This is what a typical Offline Parameters Menu looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
OffLine Mode Parameters Menu&lt;br /&gt;
&lt;br /&gt;
Select the following values to View/Modify:&lt;br /&gt;
&lt;br /&gt;
1  - Offline Mode (0=NONE, 1=Simplex, 2=Simplex w/Trigger, 3=Repeater) (3)&lt;br /&gt;
2  - CW Speed (400) (1/8000 secs)&lt;br /&gt;
3  - Pre-CW Delay (4000) (1/8000 secs)&lt;br /&gt;
4  - Post-CW Delay (4000) (1/8000 secs)&lt;br /&gt;
5  - CW &amp;quot;Offline&amp;quot; (ID) String (WB6NIL)&lt;br /&gt;
6  - CW &amp;quot;Online&amp;quot; String (OK)&lt;br /&gt;
7  - &amp;quot;Offline&amp;quot; (CW ID) Period Time (6000) (1/10 secs)&lt;br /&gt;
8  - Offline Repeat Hang Time (15) (1/10 secs)&lt;br /&gt;
9  - Offline CTCSS Tone (0.0) Hz&lt;br /&gt;
10 - Offline CTCSS Level (0-32767) (3000)&lt;br /&gt;
11 - Offline De-Emphasis Override (0=NORMAL, 1=OVERRIDE) (0)&lt;br /&gt;
99 - Save Values to EEPROM&lt;br /&gt;
x  - Exit OffLine Mode Parameter Menu (back to main menu)&lt;br /&gt;
q  - Disconnect Remote Console Session, r - reboot system&lt;br /&gt;
&lt;br /&gt;
Enter Selection (1-9,99,c,x,q,r) :&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Configuration Options=&lt;br /&gt;
==Main Menu Options==&lt;br /&gt;
===Serial #===&lt;br /&gt;
Sets the serial number for the RTCM/VOTER.&lt;br /&gt;
*This sets the MAC address of the unit.&lt;br /&gt;
*Each unit must have a unique serial number on your network segment.&lt;br /&gt;
&lt;br /&gt;
===VOTER Server Address (FQDN)===&lt;br /&gt;
This is the DNS name or IP address of the Asterisk server you are connecting to.&lt;br /&gt;
&lt;br /&gt;
===VOTER Server Port===&lt;br /&gt;
This is the UDP port that the Asterisk server is listening on for clients.&lt;br /&gt;
*Typically it is left at the default of port 667.&lt;br /&gt;
*'''MUST''' match the ''port'' directive in ''voter.conf''.&lt;br /&gt;
&lt;br /&gt;
===Local Port (Override)===&lt;br /&gt;
Sets the local unit UDP port to be something different.&lt;br /&gt;
*This is typically not used and left at default (0).&lt;br /&gt;
&lt;br /&gt;
===Client Password===&lt;br /&gt;
This is the '''unique''' password for this unit.&lt;br /&gt;
*Every unit '''must''' have a '''unique''' password.&lt;br /&gt;
*'''MUST''' match the password on the client configuration line in ''voter.conf''.&lt;br /&gt;
&lt;br /&gt;
===Host Password===&lt;br /&gt;
This is the password of the Asterisk server.&lt;br /&gt;
*Configured with the ''password'' directive in ''voter.conf''.&lt;br /&gt;
&lt;br /&gt;
===Tx Buffer Length===&lt;br /&gt;
This is the size of the TX buffer from the RTCM/VOTER to the Asterisk server.&lt;br /&gt;
*Tuned parameter, set via the tuning instructions based on network configuration.&lt;br /&gt;
&lt;br /&gt;
===GPS Data Protocol (0=NMEA, 1=TSIP)===&lt;br /&gt;
Type of GPS connected.&lt;br /&gt;
*NMEA for all non-Trimble GPS units.&lt;br /&gt;
*TSIP to use with Trimble GPS that use Trimble Serial Interface Protocol (TSIP).&lt;br /&gt;
&lt;br /&gt;
===GPS Serial Polarity (0=Non-Inverted, 1=Inverted)===&lt;br /&gt;
GPS dependent setting. &lt;br /&gt;
*Depends on if you are sending TTL or RS-232 data, adjust as needed.&lt;br /&gt;
&lt;br /&gt;
===GPS PPS Polarity (0=Non-Inverted, 1=Inverted, 2=NONE)===&lt;br /&gt;
GPS dependent setting. &lt;br /&gt;
*Depends on if you are sending TTL or RS-232 data for the PPS signal, adjust as needed.&lt;br /&gt;
*If not using GPS or configuring as a mixed client, set to 2 (None).&lt;br /&gt;
&lt;br /&gt;
===GPS Baud Rate===&lt;br /&gt;
Communication speed for the GPS, default is 9600.&lt;br /&gt;
&lt;br /&gt;
===External CTCSS (0=Ignore, 1=Non-Inverted, 2=Inverted)===&lt;br /&gt;
If you are using the CTCSS input from an external CTCSS decoder, adjust this for your logic polarity, or set to 0 (ignore) if not used.&lt;br /&gt;
&lt;br /&gt;
===COR Type (0=Normal, 1=IGNORE COR, 2=No Receiver)===&lt;br /&gt;
Typically, this is left at Normal. &lt;br /&gt;
*Set to 1 (Ignore COR), if you are using the External CTCSS input.&lt;br /&gt;
&lt;br /&gt;
===Debug Level===&lt;br /&gt;
Set the Debug Level, if needed, based on the [[#Debug Options | Debug Options]] below.&lt;br /&gt;
&lt;br /&gt;
===Alt. VOTER Server Address (FQDN)===&lt;br /&gt;
If you are using redundant Asterisk servers, set the IP/DNS address of the redundant server here.&lt;br /&gt;
&lt;br /&gt;
===Alt. VOTER Server Port (Override)===&lt;br /&gt;
If the redundant Asterisk server UDP port is not 667, set it here.&lt;br /&gt;
&lt;br /&gt;
===DSP/BEW Mode===&lt;br /&gt;
If the firmware supports DSP/BEW Mode, set this to 1 to enable it, if desired.&lt;br /&gt;
*DSP/BEW firmware versions use extra firmware space and will make the diagnostic menu unavailable.&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Duplex Mode 3&amp;quot; (0=DISABLED, 1-255 Hang Time) (1/10 secs)===&lt;br /&gt;
If you are using Duplex Mode 3, set the hang time here to enable the option. Most users leave this disabled.&lt;br /&gt;
&lt;br /&gt;
===Simulcast Launch Delay===&lt;br /&gt;
If you are using Simulcast, set your launch delay here.&lt;br /&gt;
&lt;br /&gt;
===RX Level===&lt;br /&gt;
This opens the RX Level tuning screen to adjust the receive audio level from the repeater.&lt;br /&gt;
&lt;br /&gt;
===Status===&lt;br /&gt;
This opens the status menu, showing some of the current operating parameters.&lt;br /&gt;
&lt;br /&gt;
===Save Values to EEPROM===&lt;br /&gt;
Save all the options to non-volatile EEPROM.&lt;br /&gt;
*Make sure to save after you make any changes.&lt;br /&gt;
&lt;br /&gt;
===IP Parameters menu===&lt;br /&gt;
Open the IP Parameters Menu.&lt;br /&gt;
&lt;br /&gt;
===Offline Mode Parameters menu===&lt;br /&gt;
Open the Offline Mode Parameters Menu.&lt;br /&gt;
&lt;br /&gt;
===Disconnect Remote Console Session===&lt;br /&gt;
If you are connected via Telnet, this will exit your session.&lt;br /&gt;
&lt;br /&gt;
===Reboot System===&lt;br /&gt;
Reboot the VOTER/RTCM.&lt;br /&gt;
*This should be done after making configuration changes.&lt;br /&gt;
*Some setting changes require a reboot to become effective.&lt;br /&gt;
&lt;br /&gt;
===Diagnostics===&lt;br /&gt;
Open the Diagnostics Menu.&lt;br /&gt;
*Diagnostics are unavailable if you are using DSP/BEW firmware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Network Information=&lt;br /&gt;
==RTCM/VOTER Bandwidth==&lt;br /&gt;
Assuming ulaw... The RTCM will require approximately 80kbps of bandwidth for continual usage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Network Quality==&lt;br /&gt;
Your IP Network quality is important. You may wish to add a rule in your routers to prioritize traffic on UDP port 667 so that RTCM audio is given priority over other &lt;br /&gt;
traffic. Also see the [[#Debug Options]] below for notes on how to tag your packets with ToS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==RX/TX Buffers are NOT Both Millisecond Values== &lt;br /&gt;
You might assume an RX buffer (in voter.conf) of 120ms would be equivalent of a TX buffer (in the RTCM) of 120ms. That is not the case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The TX buffer is a number of 125 '''microsecond''' intervals, where the RX buffer is in milliseconds. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you follow the buffer setting instructions, you should be fine, in most cases. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Debug Options=&lt;br /&gt;
The VOTER/RTCM firmware supports some additional debugging information that can be turned on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
From the source code, the different Debug Options are listed as:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1 - Alt/Main Host change notifications&lt;br /&gt;
2 - Ignore HWlock (GGPS only)&lt;br /&gt;
4 - GPS/PPS Failure simulation (GGPS only)&lt;br /&gt;
8 - POCSAG H/W output disable (GGPS only)&lt;br /&gt;
16 - IP TOS Class for Ubiquiti&lt;br /&gt;
32 - GPS Debug&lt;br /&gt;
64 - Fix GPS 1 second off&lt;br /&gt;
128 - Fix GPS 1 month off (WTF,O??)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Not sure what they all do, but that is what they are. Here are the most common ones used:&lt;br /&gt;
*&amp;quot;Alt/Main Host change notifications&amp;quot; &lt;br /&gt;
**shows when the connection to the Asterisk server changes state.&lt;br /&gt;
*&amp;quot;IP TOS Class for Ubiquity&amp;quot; &lt;br /&gt;
**marks the IP headers from the RTCM/VOTER '''TO''' the network with ToS C0/DSCP 48 (UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS latency). Other sources show this as a Network Control TOS.) If you enable this, you also will want to have &amp;quot;utos=y&amp;quot; in your voter.conf to mark the packets from the network '''TO''' the RTCM/VOTER. We will probably change this option to mark the packets by default in a future version.&lt;br /&gt;
*&amp;quot;GPS Debug&amp;quot; &lt;br /&gt;
**will print NMEA or TSIP debug strings from the connected GPS.&lt;br /&gt;
*&amp;quot;Fix GPS 1 second off&amp;quot;&lt;br /&gt;
**this is for NMEA GPS '''only'''. It will add one second to the time.&lt;br /&gt;
*&amp;quot;Fix GPS 1 month off (WTF,O??)&amp;quot;&lt;br /&gt;
**this is for TSIP GPS '''only'''. It will effectively add a month to the date. The mktime function normally needs one month subtracted from the raw month it converts to a time/date string. Maybe there are some GPS out there that do that automatically? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The way this works is you add together the options you want to enable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Want to enable GPS Debug and IP ToS, set debug to 48.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just want to turn on GPS Debug, set debug to 32.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just want ToS turned on, set debug to 16.&lt;br /&gt;
&lt;br /&gt;
=Un-documented Menus/Features=&lt;br /&gt;
*Menu 96 - If firmware compiled with DUMPENCREGS enabled, Menu 96 looks like it dumps the registers from the ENC (Ethernet) chip?&lt;br /&gt;
&lt;br /&gt;
*Menu 111 - show the &amp;quot;hidden&amp;quot; option values (normally they should all be 0).&lt;br /&gt;
&lt;br /&gt;
*Menu 11780 - set the &amp;quot;Elkes&amp;quot; value. Developed for Pete Elkes, this is for solar type sites. It shuts off the Tx after a period of no Rx activity.&lt;br /&gt;
&lt;br /&gt;
*Menu 1103 - set the &amp;quot;Glaser&amp;quot; timer value? No idea what this does.&lt;br /&gt;
&lt;br /&gt;
*Menu 1170 - set &amp;quot;Sawyer Mode&amp;quot;. Developed for Tim Sawyer use on Yaesu VXR5000 repeater. It modifies de-ephasis behavior when on/off line. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Audio=&lt;br /&gt;
The RTCM/VOTER is totally flexible regarding emphasis. Although the way it is set is completely obscure. It tries to automatically do the right thing for you, which is great most of the time. But when it’s not, it's hard to know what is going on. &lt;br /&gt;
&lt;br /&gt;
If you are changing the COR Type settings, or nodeemp in voter.conf, make sure you save/reboot the RTCM/VOTER every time you make a change... changes are '''not''' effective until the RTCM/VOTER reboots!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Voting==&lt;br /&gt;
Before we get in to the different ways audio is routed, there is an important consideration you need to make if you are using the RTCM/VOTER for voting. &lt;br /&gt;
&lt;br /&gt;
The way the voting process works, it needs '''discriminator audio''' to determine the signal to noise level from each satellite receiver. As such, you will need to be feeding discriminator audio in to the RX audio pin, so that the hardware/software can vote properly. That means you also need to let the hardware/software do the squelch action.&lt;br /&gt;
&lt;br /&gt;
If you need RX CTCSS, you'll need to feed logic from an external CTCSS decoder in to the CTCSS input pin.&lt;br /&gt;
&lt;br /&gt;
Also, don't disable COR in the RTCM/VOTER... it will cause it to disable the squelch and it will report an RSSI of 255 (full quieting) for all received signals.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Receiver De-emphasis==&lt;br /&gt;
On the RX side the COR Type setting in the RTCM/VOTER determines whether the de-emphasis filter is used for RX audio. 0=Normal means the RTCM/VOTER squelch circuit is in use and it is expecting discriminator audio on the RX pin (to be able to do the squelch action), and therefore it '''will''' provide de-emphasis (audio is routed THROUGH the de-emphasis RC filter circuit) to the receiver audio. COR Type 1=IGNORE COR uses the CTCSS input pin for COR or CTCSS ''logic'' and it then expects de-emphasized receive (line) audio on the RX pin, and therefore will '''not''' provide de-emphasis to the received audio (the RC filter is switched '''out''' and audio passes straight through). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Most of the time, you do NOT need to override the automatic filter selection. However, if you do, and you are sure you have a good reason to, you CAN switch the de-emphasis filter '''out''' of the circuit so that audio passes straight through to the encoder. You would do this by setting the nodeemp=1 option in voter.conf. When you set nodeemp=1, the ''VOTER Protocol'' tells the RTCM/VOTER to switch the filter '''out''', so audio is passed straight through.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Transmitter Pre-emhpasis==&lt;br /&gt;
On the TX side, the RTCM/VOTER expects the repeater to accept ''mic audio''. In other words, the '''repeater''' is providing the pre-emphasis, not the RTCM/VOTER (you are '''not''' directly modulating the TX). This can be overridden by setting CTCSS tone in voter.conf. If a CTCSS tone is defined, the RTCM '''will''' provide pre-emphasis to the audio, and expects that you will be connecting to your repeater's flat audio input (direct modulation). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you don’t want TX CTCSS tone but '''do''' need pre-emphasis, set an arbitrary (any) CTCSS tone in voter.conf, and set the level to 0. This will force the RTCM/VOTER to pre-emphasize the audio it generates on the TX pin, but it won't actually mix in a CTCSS tone. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Level Setting==&lt;br /&gt;
Setting the audio levels for the RTCM/VOTER is pretty straight forward. Just follow these steps:&lt;br /&gt;
*Ensure you have a connection to your host Asterisk server/chan_voter instance&lt;br /&gt;
*Send a 1kHz@3kHz on-channel, full-quieting signal in to the repeater's RX&lt;br /&gt;
*Set the RX up so it reads 3kHz deviation on the RTCM's built in console meter&lt;br /&gt;
*Now set the TX level '''pot''' to get 3kHz out of the transmitter (No PL)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now change the modulation from 1kHz tone to 800Hz followed by 1.8kHz and verify that the deviation level doesn't change as the tone frequency changes. '''Changing levels indicates a pre/de-emphasis issue.''' You will want to read the above sections on how audio is handled, and figure out where your issue is.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If using PL you have to account for that deviation, unless you filter it out with your IFR (test set). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That's it!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Optionally, if you are using the built-in &amp;quot;offline repeat&amp;quot; functions, fail the connection to the host Asterisk server, and make sure your repeat audio performs the same as above.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Crappy Transmit Audio==&lt;br /&gt;
&lt;br /&gt;
Does your repeated audio sounded really bassy, muffled, and not very understandable? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There was a situation where, compared to a typical simplex radio-to-radio transmission, the audio through the repeater (RTCM and Asterisk) was unacceptable. What was discovered was that the RTCM has an internal pre-emphasis function that was disabled. The user had intentionally disabled &amp;quot;txctcss&amp;quot; and &amp;quot;txctcsslevel&amp;quot; in voter.conf because he didn't &lt;br /&gt;
want the RTCM transmitting CTCSS (the Quantar was doing that already). He ultimately found a post on the mail list explaining the settings above that said enabling txctcss = some valid tone (114.8 in his case) and setting txctcsslevel = 0 would turn on the pre-emphasis function in the RTCM without transmitting CTCSS tones. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
He did, and it worked like a charm! Audio now had more treble and was less bassy/muffled. So, future RTCM users, be sure not to comment out txctcss and txctcsslevel in voter.conf!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just enable and set the level to 0. You'll thank me later. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=GPS=&lt;br /&gt;
The RTCM/VOTER will work with most GPS available. It requires either NMEA or Trimble TSIP binary data. It only receives data '''from''' the GPS (GPS TX), it does not send anything '''to''' the GPS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The firmware is specifically written to talk to Trimble Thunderbolt receivers using Trimble's TSIP binary data interface, however, other Trimbles GPS receivers that talk TSIP are generally compatible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==NMEA Sentences==&lt;br /&gt;
If you are using an NMEA GPS (as opposed to a Trimble using the TSIP binary interface), the RTCM/VOTER is looking for the following NMEA sentences:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$GPGGA&lt;br /&gt;
$GPGSV&lt;br /&gt;
$GPRMC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Lock==&lt;br /&gt;
The GPS led will go solid regardless of the connection LED. That '''has''' to happen or it won't connect to the Asterisk server. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is not unusual for it to take up to 20 mins to get a GPS lock LED (ie. using a Trimble Thunderbolt) after any reboot. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS De-sense==&lt;br /&gt;
If you are having odd loss of lock issues, consider you may have interference to your GPS antenna from strong RF nearby. A note from Jesse Lloyd:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I also had crazy problems with poor signal on my GPS when I set it up sitting in a window, and once installed at site I had the GPS antenna maybe 6 ft from the VHF antenna, and after some troubleshooting found it was getting swamped with RF and loosing lock. &lt;br /&gt;
&lt;br /&gt;
I found the debug setting of 32 useful in the RTCM, you can see a hex output of the GPS status.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Issues==&lt;br /&gt;
===Trimble Thunderbolt===&lt;br /&gt;
You may find your Trimble Thunderbolt is showing the incorrect date at the moment. It could be showing the year as 1997. This is due to the date in the Thunderbolt being reported incorrectly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''This can cause some of your voting receivers to not connect, if they are used with other GPS in your system.''' If you have '''ALL''' Thunderbolts, or '''NO''' Thunderbolts, you are probably fine. If you have '''ALL''' Thunderbolts, the date/time is probably wrong, but they will ALL be wrong, so they will connect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GPS Time is a continuous counting time scale beginning at the January 5, 1980 to January 6, 1980 midnight. It is split into two parts: a time of week measured in seconds from midnight Sat/Sun and a week number. The time of week is transmitted in an unambiguous manner by the satellites, but only the bottom 10 bits of the week number are transmitted. This means that a receiver will see a week number count that goes up steadily until it reaches 1023 after which it will “roll over” back to zero, before steadily going up again. Such a week rollover will occur approx. every 20 years. The last week rollover occurred in 1999 and the next one will be in 2019.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Thunderbolt manual states:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The ThunderBolt adjusts for this week rollover by adding 1024 to any week number reported by GPS which is less than week number 936 which began on December 14, 1997. With this technique, the ThunderBolt will provide an accurate translation of GPS week number and TOW to time and date until July 30, 2017.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As such, the Trimble Thunderbolt has a firmware issue with the GPS Week rollover that manifested itself on July 30, 2017, causing the date to become incorrect. The Thunderbolt thinks the week changed from 935 to 936 (actual week 1959-1024=935), so it stopped adding 1024 to the week.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We have added a brute-force fix starting in RTCM/VOTER firmware &amp;gt;=1.51. This fix adds 619315200 seconds (1024 weeks) to the time reported by the GPS. It fixes the Thunderbolts, we have not done extensive testing to see how it affects other TSIP receivers.&lt;br /&gt;
&lt;br /&gt;
===Garmin===&lt;br /&gt;
====Garmin 18x LVC Wiring Issues====&lt;br /&gt;
If you have issues with your GPS 18x LVC not talking to the RTCM/VOTER, it may not be hooked up to the RTCM correctly. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Garmin pin labeling is backwards to what you may think. See below. You probably need to swap pins 6 and 14.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RTCM   	                 GPS 18x LVC      &lt;br /&gt;
6 GRX 	&amp;lt;-- Rx Data 	 6 Green  &lt;br /&gt;
7 GPPS 	&amp;lt;-- Pulse Output 1 Yellow  &lt;br /&gt;
8 GND   Ground 		 3 Black  &lt;br /&gt;
8 GND   Ground 		 5 Black  &lt;br /&gt;
13 +5V 	--&amp;gt;Vin 		 2 Red  &lt;br /&gt;
14 GTX 	--&amp;gt; TX Data 	 4 White&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log into the RTCM and do 98 and you should see something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Current Time: Sun  Apr 20, 2014  04:37:02.820&lt;br /&gt;
Last Rx Pkt System time: 04/20/2014 03:55:35.580, diff: 2487260 msec&lt;br /&gt;
Last Rx Pkt Timestamp time: 04/20/2014 03:55:32.064, diff: 3515 msec&lt;br /&gt;
Last Rx Pkt index: 160, inbounds: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Garmin and the RTCM====&lt;br /&gt;
Beware when buying newer Garmin GPS's to use with the Micro-Node RTCM.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The RTCM expects a 5V PPS signal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Newer Garmin's (GPS 18X, 18X LVC, etc.) MAY NOT output 5V, and can cause issues. '''Check the Garmin datasheet'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER is designed to accept both 3.3V or 5V signals, and ''should'' work fine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==No GPS/Mixed Mode==&lt;br /&gt;
You do not need a timing source to use an RTCM if you don’t want to vote. That’s called Mix Mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Having the PPS Polarity set to 2 tells the RTCM you do not have a GPS. That forces the RTCM to become a mix (non-voting) client. Turn it on, save it, and restart. A simple voter.conf would look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[general]&lt;br /&gt;
port = 667&lt;br /&gt;
password = BLAH&lt;br /&gt;
&lt;br /&gt;
[1000]&lt;br /&gt;
Site1 = pswrd1,master,transmit&lt;br /&gt;
Site2 = pswrd2,transmit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mixed Client Error==&lt;br /&gt;
&amp;quot;I am getting this error in Asterisk&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WARNING[2368]: chan_voter.c:4511 voter_reader: Voter client master timing source mobile1 attempting to authenticate as mix client!!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A mixed client error means the voter.conf file is expecting an RTCM to try and connect with a GPS IP packet (ie. has '''master''' in it in voter.conf), but the RTCM isn't &lt;br /&gt;
sending a GPS IP packet. So its a mismatch between voter.conf and Option 10 in the RTCM. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to use a mix client (non-voted), make sure that receiver's configuration line in voter.conf '''does not''' have the '''master''' option set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Debug==&lt;br /&gt;
To turn on GPS Debugging, set the Debug Option Level in the RTCM/VOTER to 32.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [[#Debug Options]] levels for more information on how this works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Trimble Debug Status Decoding==&lt;br /&gt;
The VOTER/RTCM when in TSIP mode (Trimble), assumes it is a Trimble Thunderbolt and is looking for two packets:&lt;br /&gt;
*0x8F-AB - Primary Timing Packet&lt;br /&gt;
*0x8F-AC - Supplemental Timing Packet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Grab a copy of the Thunderbolt User Guide: http://leapsecond.com/pages/tbolt/Thunderbolt-2012-02.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pages 78-83 are the important ones.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Packet 0x8F-AB is what grabs the timing information, and packet 0x8F-AC is what it looks at for everything else (including debug).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The debug string that the VOTER/RTCM reports:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	printf(&amp;quot;GPS-DEBUG: TSIP: ok %d, 9 - 14: %02x %02x %02x %02x %02x %02x\n&amp;quot;,&lt;br /&gt;
					happy,gps_buf[9],gps_buf[10],gps_buf[11],gps_buf[12],gps_buf[13],gps_buf[14]);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, the 1 after ok is the &amp;quot;happy gps&amp;quot; flag. The other 5 bytes are supposed to be bytes 9-14 from the packet... sort of. They are bytes 9-14 of the buffer, but they are actually bytes 8-13 of the binary message.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Looking at the message structure, bytes 8-13 are:&lt;br /&gt;
*8-9 Critical Alarms&lt;br /&gt;
*10-11 Minor Alarms&lt;br /&gt;
*12 GPS Decoding Status&lt;br /&gt;
*13 Disciplining Activity&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Therefore, the messages you are seeing break down as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GPS-DEBUG: TSIP: ok 1, 9 - 14: 00 00 00 00 00 00 - everything is good in the 'hood, Doing Fixes, Phase Locking&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 18 08 06 - not happy, Not Tracking Satellites, Not Disciplining Oscillator (0x18 --&amp;gt; 0b000000011000), No Usable Sats, Inactive&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 08 08 05 - not happy, Not Tracking Satellites, No Useable Sats, Compensating OXCO (holdover)&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 00 00 05 - not happy, Compensating OXCO (holdover)&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 1, 9 - 14: 00 00 00 00 00 08 - happy, Recovery Mode&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 00 00 04 - not happy, Initializing Loop Filter&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The GPS is flagged as NOT HAPPY in TSIP mode if ANY of the following are TRUE:&lt;br /&gt;
*If GPS Decoding Status is anything other than &amp;quot;Doing Fixes&amp;quot;.&lt;br /&gt;
*If Disciplining Activity is not Phase Locking or Recovery Mode.&lt;br /&gt;
*Any Critical Alarms.&lt;br /&gt;
*Any Minor Alarms.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ubiquity ToS=&lt;br /&gt;
See https://help.ubnt.com/hc/en-us/articles/205231750-airMAX-How-is-QoS-and-prioritization-handled-by-airMAX-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, if we set ToS/DSCP in the header to C0, then Ubiquity (and other gear watching ToS) ''should'' prioritize the packets. This sets the DSCP to 110 000 aka 48. UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS latency). Other sources show this as a Network Control TOS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is an option in voter.conf to turn this on (utos=y). However, this only controls packets being sent from Asterisk '''TO''' the RTCM. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to tag packets from the RTCM '''TO''' Asterisk, you need to set the RTCM debug option level to 16 (see [[#Debug Options]] for how this works).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At some point we should probably change the default behaviour of the RTCM firmware to mark the packets and use the debug setting to '''disable''' ToS. That change (if you wanted to compile your own firmware) would be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Change line 90 in IP.c&lt;br /&gt;
&lt;br /&gt;
From:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? 0xc0 : (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY))&lt;br /&gt;
&lt;br /&gt;
To:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY) : 0xc0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This changes the conditional expression from if the debug level is 16 to mark the packets with DSCP 48 to if the debug level is 16, mark the packets routine (DSCP 0).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM Simulcasting=&lt;br /&gt;
The RTCM/VOTER boards do support simulcasting, however, there are a bunch of quirks that one needs to be aware of.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Radio Hardware==&lt;br /&gt;
For best results, you should use all identical RF equipment between your voting RX sites and simulcast TX sites. If you don't, you can end up with strange audio artifacts when different receivers are used, and other strange audio issues when different transmitters are used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==9.6MHz Oscillator==&lt;br /&gt;
If you want reliable simulcast with an acceptable level of overlap warble, you MUST inject a GPS-disciplined or OXCO 9.6MHz signal to the clock of the RTCM's, in lieu of their stock internal crystal. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Otherwise, the inherent internal clock jitter of the RTCM's will cause CTCSS warble, etc. in areas where your transmitters overlap. The 1 PPS feed that you normally feed the RTCM's is acceptable for voting, but naturally, a typical crystal-driven clock will slightly drift in between the pulses every second due to inherent jitter, etc., and that ain't to good for situations like simulcast which demand sample-accurate performance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are some comments from Joe, KC2IRV, on the subject. He has also created his own wiki, specific to simulcast issues, you can find it at: http://rtcmsimulcast.wikifoundry.com/ &lt;br /&gt;
&lt;br /&gt;
:I felt I needed to let those on this mailing list know my findings with simulcasting with the RTCM units since I have received a great deal of help and information from people on this list.&lt;br /&gt;
&lt;br /&gt;
:For the past week I have had a two (2) site simulcast system up and running on UHF using the RTCM units. I have done a great deal of testing and proving on the bench and it is so far working beautifully. &lt;br /&gt;
&lt;br /&gt;
:The one issue that was made apparent to me early on was that in order for the RTCM's to be suitable for simulcast, the processor inside it needed to be clocked to a more accurate source. This source is supposed to be the Programmable Clock Generator Module in order to produce a GPS locked 9.6 MHz reference for the processor. Unfortunately this unit is not currently available.&lt;br /&gt;
&lt;br /&gt;
:Knowing this, I started to go down the road of possibly designing my own, but stumbled upon a cheap, plentiful supply of Symmetricom 9.6 MHz sinewave OCXO's. I took a chance and ordered a few to experiment with to see if the RTCM would be able to use this in place of the supplied crystal for a clock. I found they did, with that I decided to modify the RTCM with an SMA connector just above the audio adjustment pots and use this OCXO. I trimmed the frequency on the units to match each other and used them to produce the processor clock.&lt;br /&gt;
&lt;br /&gt;
:After a week of testing, I have found the results in the overlap areas to be exactly as I would expect them on a public safety/commercial simulcast system. While in an overlap region where both transmitters are within 3dB of one another, to the ear you hear no audio phase wandering. Of course , this has only been a week of testing so I wouldn't call it case closed yet.&lt;br /&gt;
&lt;br /&gt;
:I will say that if this system remains this way after testing for 6 months to a year than using a 9.6 MHz OXCO is a viable alternative to achieve the needed precision and accuracy needed for the processor clock to make it suitable for simulcast.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Comments from Jim Dixon on the issue:&lt;br /&gt;
&lt;br /&gt;
:You have to use '''something''' that will take the precise 10MHz (or whatever it is) from the GPSDO and PLL (phase-locked) convert it to 9.6MHz (square wave at 3.3V for the CPU clock).&lt;br /&gt;
&lt;br /&gt;
:We had to use 9.6MHz mainly because of the DAC in the dsPIC instead of 10MHz. The options for various divide/clock radios in the part are RATHER limited. As I recall, there wasn't even a way of getting the necessary 16kb/s sample rate on the ADC from 10MHZ, either.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Micro-Node RTCM Clock Issue=&lt;br /&gt;
James, KI0KN, had some strange-ness with some of his RTCM's when used for voting. As soon as he changed menu item 10 on the RTCM to either a (1) or a (0) instead of (2), he '''instantly''' got this on the RTCM console:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
04/05/2016 18:44:13.660  Lost GPS Time synchronization&lt;br /&gt;
04/05/2016 18:44:13.660  Host Connection Lost (Pri) (10.16.1.240)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And it sits there forever and never re-establishes connection to the host. The issue was finally traced to a bad batch of 9.6MHz crystals that affected a small run of the RTCM's. The issue was eventually resolved by Micro-Node, but we'll document it here just for record keeping.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
James comments to the list:&lt;br /&gt;
&lt;br /&gt;
:Well, after many of you offered your time and thoughts on my voter problem, Jim, WB6NIL, graciously donated a couple of hours of his time to remotely help me and he uncovered the problem.&lt;br /&gt;
&lt;br /&gt;
:All 5 of my RTCMs were purchased within the last 6 months, and I suspect all 5 have the same problem (will verify that today). The problem is that the microprocessor crystal is running too fast! There is 9.6Mhz crystal that drives the MPU, on the particular unit that Jim helped me diagnose, it's running 2.5 khz too fast.  &lt;br /&gt;
&lt;br /&gt;
:There is a sanity check in the firmware that makes sure the correct number of samples were taken in the last second (it's supposed to be 8000) and fails if the sample is incorrectly sized (mine is taking 8003 samples).  Jim helped adjust the code to be more tolerant of the sampling error and my whole system instantly worked.&lt;br /&gt;
&lt;br /&gt;
:I have since tested it with ALL my GPSs (they all work great!). So I now have everything working, including the voting.&lt;br /&gt;
&lt;br /&gt;
:I haven't contact Micro-Node about it yet. Jim told me that voting should work fine but this clock error would probably not be acceptable for Simulcast (something we have no plans on doing as of now). Since mine are deployed at mountain top sites, I'll probably pursue a crystal that is running at the correct frequency and use &amp;quot;standard&amp;quot; firmware so that if the decision is ever made to play with simulcast, I won't be right back in this same boat.&lt;br /&gt;
&lt;br /&gt;
:Thanks to all that helped out, and a HUGE thanks to Jim for taking the time to troubleshoot this.&lt;br /&gt;
&lt;br /&gt;
:BTW- This clock error will NOT effect the RTCM in mix client mode, it only affects it in voting or simulcast mode!&lt;br /&gt;
&lt;br /&gt;
:In voter.c, the stock line is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if ((samplecnt &amp;gt;= 7999) &amp;amp;&amp;amp; (samplecnt &amp;lt;= 8001))&lt;br /&gt;
&lt;br /&gt;
it needs to be changed to something like:&lt;br /&gt;
&lt;br /&gt;
if ((samplecnt &amp;gt;= 7999) &amp;amp;&amp;amp; (samplecnt &amp;lt;= 8003 ))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:That was just enough to make my first RTCM work. I've had a chance now to check a few more of my RTCMs on the bench this morning and the crystal frequencies are kind of all over.  The next one I had on the bench was 5.2Khz fast. The above code was still not enough to fix it (as would be expected) so it looks like the quality control on whatever manufacturer that crystal is, isn't very good (or a low tolerance crystal is being used). I am going to pursue crystal replacement to get a highly accurate, stable, on-frequency crystal in there as my first choice. Changing the firmware 5 different times doesn't seem like the right answer.&lt;br /&gt;
&lt;br /&gt;
:Jim put that sanity check in there for a reason. Working around it '''may''' allow the device to work, but to me, it seems getting the hardware operating the way it was supposed to originally is the better answer. I will follow up with Micro-node and let you all know how it goes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After following up with Micro-Node:&lt;br /&gt;
:They were all off, some were off a LOT. I talked to Mark @ Micronode. He told me there were 25 units that made it out the door with a crystal from an unapproved source and that was quite likely the reason for the problem. He gladly sent me 5 new crystals to replace (he offered to replace them himself if I sent the units in, but I am comfortable doing it myself to save the time and postage). &lt;br /&gt;
&lt;br /&gt;
:I haven't received them in the mail yet to show that the problem is fixed, but I will post here when that happens. He was great to work with and had no issue getting things set straight. If you are having the same issue and your RTCMs were bought about the same time, I'd suggest you contact him and have him help you resolve the issue!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Duplex Mode 3=&lt;br /&gt;
Does delayed repeat audio bug you? Tired of hearing a bit of yourself after you unkey? Wish you could talk full duplex? Hate the echo chamber effect? Then we have the answer for you.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Duplex Mode 3 in app_rpt allows for &amp;quot;in-cabinet repeat&amp;quot; (where the radio hardware provides repeat audio) and app_rpt adds the hang time, courtesy tones, linking - all the &lt;br /&gt;
things apt_rpt does sans repeat audio. Therefore no repeat audio delay. Cool, eh? This duplex mode has been in app_rpt for a while. Problem has been how to implement it in the RTCM environment. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Duplex Mode 3 support in the RTCM provides in-cabinet repeat functionality. Repeat audio loops through the RTCM and has almost zero delay because it does not have to traverse the network. The delay is not quite zero but it's plenty short enough to eliminate all of the above mentioned annoyances. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Of course Duplex Mode 3 support can't be used with voting or simulcast. You also loose Touch Tone muting, Time Out Timer and Repeater Disable functions because the repeat path is not through app_rpt.&lt;/div&gt;</summary>
		<author><name>Ve7fet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=52</id>
		<title>RTCM Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=52"/>
		<updated>2017-08-16T15:25:22Z</updated>

		<summary type="html">&lt;p&gt;Ve7fet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Micro-Node RTCM and VOTER interfaces are typically used with AllStar in voting/simulcast applications. They MAY be used for ANY repeater interface application, through the chan/voter channel driver. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER is the original through-hole board designed by Jim Dixon for this application. It is open-source, and the relevant Gerber files and BoM to build it are available. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The [http://www.micro-node.com/thin-m1.shtml Micro-Node Radio Thin Client Module (RTCM)] is the commercial version of the VOTER. It uses surface mount parts (SMT), but is functionally equivalent to the original VOTER. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In general, the two terms (RTCM/VOTER) are used interchangeably, as they operate the same, and use the same firmware (mostly, see below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This page will highlight some of the operational concerns, quirks, bugs, and other items of interest that relate to these interfaces. Much of the information has been gleaned off the AllStar mail list, comes from personal experience, or comes from notes in the firmware source code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Firmware=&lt;br /&gt;
The firmware in the RTCM and VOTER is the same, except it is compiled for the specific dsPIC that is installed in each. As such, the firmware is specific to the VOTER or the RTCM, and is NOT interchangeable (it won't boot in the wrong device). Firmware for the RTCM is denoted by &amp;quot;smt&amp;quot; in the filename.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are '''two parts''' to the firmware, a bootloader, and then the actual firmware file. The bootloader starts when power is applied, and allows you to talk to the dsPIC and load new firmware files over ethernet. If the bootloader is not intercepted by the loading tool, it will continue to boot the current firmware file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All new boards will need to have the bootloader installed first, followed by a firmware file. You '''can''' load a firmware file directly (.hex) in to the dsPIC, but then you will not have any of the bootloader remote loading features.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The current bootloader (.cof file) is available here: https://github.com/AllStarLink/voter/tree/master/voter-bootloader (the -smt file is for the RTCM). It needs to be loaded with a PICKit programmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Current firmware (.cry file) is available here: https://github.com/AllStarLink/voter/tree/master/board-firmware . They are loaded with the EBLEX C30 Programmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are multiple &amp;quot;flavors&amp;quot; of firmware available. See below for further explanation of what all the options mean.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The DSPBEW versions have Jim's DSP/BEW feature enabled. Note that due to the size of this feature, the diagnostics menu is NOT available in this version.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CHUCK versions have Chuck Henderson's RSSI and Squelch modifications enabled. This is probably the version that most user's will want to use in production.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Compiling Environment==&lt;br /&gt;
If you look in the [https://github.com/AllStarLink/voter/blob/master/votersystem.pdf votersystem.pdf], you will find a procedure to modify and load the bootloader in to the dsPIC of a VOTER board. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Unfortunately, there is an important step '''missing''' in that procedure, which is covered below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In addition, the old links for the MPLAB software are dead, so let's update this info and get you going.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Currently (Feb 2017), you can get the required software from:&lt;br /&gt;
:http://www.microchip.com/development-tools/downloads-archive&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download MPLAB IDE 32-bit Windows v8.66:&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_IDE_v8_66.zip&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/MPLAB_IDE_v8_66.zip&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download MPLAB C Compiler for PIC24 and dsPIC DSCs v3.31 '''NOT v.3.25''':&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Optionally, install Windows Virtual PC and XP Mode. This is getting to be pretty old software, so running it under XP Mode may be a good idea, so we can keep it isolated (install it in a virtual machine). It does run fine in Windows 7.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To setup the compile/build environment, follow these steps:&lt;br /&gt;
*Run the MPLAB IDE installer. You don't need to install the HI-TECH C Compiler at the end (click no)&lt;br /&gt;
*Run the MPLAB C Compiler installer&lt;br /&gt;
*Select Legacy Directory Name&lt;br /&gt;
*'''Select Lite Compiler'''&lt;br /&gt;
*Go to: https://github.com/AllStarLink&lt;br /&gt;
*Follow the links to: voter --&amp;gt; Clone or Download --&amp;gt; Download Zip. That will get you voter-master.zip which is a download of the whole VOTER tree from GitHub.&lt;br /&gt;
*Extract it somewhere (ie. in the XP Mode Virtual PC)&lt;br /&gt;
*Launch the MPLAB IDE&lt;br /&gt;
*Go to Configure --&amp;gt; Settings --&amp;gt; Projects and de-select one-to-one project mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bootloader==&lt;br /&gt;
If you need to load the bootloader in to a fresh board, you will need to follow these steps:&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; voter-bootloader.mcp --&amp;gt; Open (it is in the voter-bootloader folder of the GitHub source)&lt;br /&gt;
*Go to File --&amp;gt; Import --&amp;gt; voter-bootloader --&amp;gt; ENC_C30.cof --&amp;gt; Open '''This step is missing from the original procedure.'''&lt;br /&gt;
*Remove JP7 on the VOTER Board. This is necessary to allow programming by the PICKit2/PICKit3 device.&lt;br /&gt;
*Attach the PICKIT2/PICKit3 device to J1 on the VOTER board. Note that Pin 1 is closest to the power supply modules (as indicated on the board).&lt;br /&gt;
*If you have not already selected a programming device, go to Programmer --&amp;gt; Select Device and choose PICKit3 (or PICKit2, depending on what you are using).&lt;br /&gt;
*Go to Programmer --&amp;gt; Program. This will program the bootloader firmware into the PIC device on the board.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to change the default IP address from 192.168.1.11 in the bootloader:&lt;br /&gt;
*Select View --&amp;gt; Program Memory (from the top menu bar)&lt;br /&gt;
*Hit Control-F (to &amp;quot;find&amp;quot;) and search for the digits &amp;quot;00A8C0&amp;quot;.&lt;br /&gt;
*These should be found at memory address &amp;quot;03018&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;A8C0&amp;quot; at 03018 represents the hex digits C0 (192) and A8 (168) which are the first two octets of the IP address. The six digits to enter are 00 then the SECOND octet of the IP address in hex then the FIRST octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;0B01&amp;quot; at 0301A represents the hex digits 0B (11) and 01 (1) which are the second two octets of the IP address. The six digits to enter are 00 then the FOURTH octet of the IP address in hex then the THIRD octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you have modified the address to your desired IP, follow the programming procedure (above).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Firmware==&lt;br /&gt;
To compile the firmware (if you want to make custom changes):&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; navigate to board-firmware and open the .mcp file for the flavor of firmware you want to compile. They are in the board-firmware folder of the GitHub source.&lt;br /&gt;
*'''NOTE''': the .mcp files with the &amp;quot;smt&amp;quot; suffix are for the RTCM (built with SMT parts). The non-smt files are for the ORIGINAL through-hole VOTER boards. The difference is that the VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
*Go to Project --&amp;gt; Build Configuration and select &amp;quot;Release&amp;quot;. This may not be necessary (I don't believe that option is used in the firmware), but it removes the compiler option of __DEBUG being passed, so theoretically it would build &amp;quot;normal&amp;quot; firmware.&lt;br /&gt;
*Go to Configure --&amp;gt; Select Device and choose the appropriate device for your board from the Device list. If you don't select the right one, the board will not boot. Select dsPIC33FJ128GP802 for the VOTER, and dsPIC33FJ128GP804 for the RTCM.&lt;br /&gt;
*Now, if you go to Project --&amp;gt; Build All it should compile everything and show you &amp;quot;Build Succeeded&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A .cry file should be in the board-firmware folder. You can load this with the ENC Loader.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is also a .hex file in there that you could load with a programmer... but that would wipe the bootloader... so don't do that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Chuck Squelch==&lt;br /&gt;
If you want to enable &amp;quot;Chuck Squelch&amp;quot;, open the HardwareProfile.h and un-comment #define CHUCK. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may also want to go down to Line 291 in Voter.c (right click on the window, go to Properties --&amp;gt; &amp;quot;C&amp;quot; File Types --&amp;gt; Line Numbers) and tack on CHUCK after 1.60 (the current version number) so that when you load this firmware, the version will be shown as 1.51CHUCK, and you'll know that Chuck Squelch is compiled in. We should probably make that more automagic in the future...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==DSP/BEW==&lt;br /&gt;
If you want to compile the DSPBEW version, open the DSPBEW project file instead.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DSP/BEW Firmware Version=&lt;br /&gt;
DSP BEW Firmware is mutually exclusive with the diagnostic menu. There is not enough space for both, if you load the DSP/BEW firmware, you will '''NOT''' have a diag menu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BEW stands for Baseband Examination Window.&lt;br /&gt;
&lt;br /&gt;
Typically, the discriminator of an FM communications receiver produces results containing audio spectrum from the &amp;quot;sub-audible&amp;quot; range (typically &amp;lt; 100 Hz) to well above frequencies able to be produced by modulating audio. These higher frequencies can be utilized to determine signal quality, since they can only contain noise (or no noise, if a sufficiently strong signal is present).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For receivers (such as the Motorola Quantar, etc) that do not provide sufficient spectral content at these &amp;quot;noise&amp;quot; frequencies (for various reasons), The &amp;quot;DSP/BEW (Digital Signal Processor / Baseband Examination Window)&amp;quot; feature of the RTCM firmware may be utilized. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These receivers are perfectly capable of providing valid &amp;quot;noise&amp;quot; signal with no modulation on the input of the receiver, but with strong modulation (high frequency audio and high deviation), it severely interferes with proper analysis of signal strength.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This feature provides a means by which a &amp;quot;Window&amp;quot; of baseband (normal audio range) signal is examined by a DSP and a determination of whether or not sufficient audio is present to cause interference of proper signal strength is made. During the VERY brief periods of time when it is determined that sufficient audio is present to cause interference, the signal strength value is &amp;quot;held&amp;quot; (the last valid value previous to the time of interference) until such time that the interfering audio is no longer present.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The DSP/BEW feature is selectable, and '''should not''' be used for a receiver that does not need it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A note on the Motorola SLR5700 per VE7FET. DSP/BEW definitely makes a difference on what AllMon reports for the signal strength of received signals. It is less reactive when DSP/BEW = 1 than with it set to 0. We'll have to see what the real world trials show. It might be better to leave it off.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Chuck Squelch=&lt;br /&gt;
&amp;quot;Chuck Squelch&amp;quot; are a couple firmware changes made by Chuck Henderson, WB9UUS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pre-compiled firmware versions including this option are available on [https://github.com/AllStarLink/voter/tree/master/board-firmware GitHub]. See above on how it is enabled/compiled, if you are rolling your own firmware modifications.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
One of the changes fixes an issue with weak signals producing RSSI readings all over the place. It is caused by a 16 bit value that was overflowing (it is the RSSI change in the firmware). It results in rock-solid RSSI values being reported, even on barely or non-readable signals. '''This change will likely be rolled in to a permanent fix in a future firmware release.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The other firmware change changes how the squelch responds (looks at the noise in the last two audio samples) and makes the &amp;quot;Micor squelch&amp;quot; action work better.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may also want to consider the following changes in /etc/asterisk/voter.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;Comment out:&lt;br /&gt;
;thresholds =&lt;br /&gt;
&lt;br /&gt;
;and set:&lt;br /&gt;
linger = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Squelch Issues==&lt;br /&gt;
*If anyone is off frequency a little bit, that will make the voice talk off worse. Double check that the repeater and the users are all on frequency.&lt;br /&gt;
*Don't use narrow bandwidth on the repeater receiver. &lt;br /&gt;
*Make sure that the discriminator audio is not rolled off even a little bit at the high end. There should not be resistors in series or capacitors to ground between the discriminator chip output pin and the voter board input, for best results.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM/VOTER LED's=&lt;br /&gt;
RX LED on the RTCM/VOTER will flash (same rate as ACT LED) if you have External CTCSS enabled, and the received signal has the wrong (or no) valid PL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Menus=&lt;br /&gt;
==Main Menu==&lt;br /&gt;
This is what a typical Main Menu looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Select the following values to View/Modify:&lt;br /&gt;
&lt;br /&gt;
1  - Serial # (0000) (which is MAC ADDR 00:04:A3:00:00:00)&lt;br /&gt;
2  - VOTER Server Address (FQDN) (44.128.1.1)&lt;br /&gt;
3  - VOTER Server Port (667),  4  - Local Port (Override) (0)&lt;br /&gt;
5  - Client Password (password1),  6  - Host Password (hostpass1)&lt;br /&gt;
7  - Tx Buffer Length (800)&lt;br /&gt;
8  - GPS Data Protocol (0=NMEA, 1=TSIP) (1)&lt;br /&gt;
9  - GPS Serial Polarity (0=Non-Inverted, 1=Inverted) (1)&lt;br /&gt;
10 - GPS PPS Polarity (0=Non-Inverted, 1=Inverted, 2=NONE) (0)&lt;br /&gt;
11 - GPS Baud Rate (9600)&lt;br /&gt;
12 - External CTCSS (0=Ignore, 1=Non-Inverted, 2=Inverted) (0)&lt;br /&gt;
13 - COR Type (0=Normal, 1=IGNORE COR, 2=No Receiver) (0)&lt;br /&gt;
14 - Debug Level (0)&lt;br /&gt;
15  - Alt. VOTER Server Address (FQDN) ()&lt;br /&gt;
16  - Alt. VOTER Server Port (Override) (0)&lt;br /&gt;
17  - DSP/BEW Mode (0)&lt;br /&gt;
18 - &amp;quot;Duplex Mode 3&amp;quot; (0=DISABLED, 1-255 Hang Time) (1/10 secs) (0)&lt;br /&gt;
19 - Simulcast Launch Delay (0) (approx 200 ns, 5 = 1us, &amp;gt; 0 to ENA SC)&lt;br /&gt;
97 - RX Level,  98 - Status,  99 - Save Values to EEPROM&lt;br /&gt;
i - IP Parameters menu, o - Offline Mode Parameters menu&lt;br /&gt;
q - Disconnect Remote Console Session, r - reboot system, d - diagnostics&lt;br /&gt;
&lt;br /&gt;
Enter Selection (1-27,97-99,r,q,d) :&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==IP Parameters Menu==&lt;br /&gt;
This is what a typical IP Parameters Menu looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP Parameters Menu&lt;br /&gt;
&lt;br /&gt;
Select the following values to View/Modify:&lt;br /&gt;
&lt;br /&gt;
1  - (Static) IP Address (44.128.1.2)&lt;br /&gt;
2  - (Static) Netmask (255.255.255.0)&lt;br /&gt;
3  - (Static) Gateway (44.128.1.254)&lt;br /&gt;
4  - (Static) Primary DNS Server (44.128.1.254)&lt;br /&gt;
5  - (Static) Secondary DNS Server (0.0.0.0)&lt;br /&gt;
6  - DHCP Enable (0)&lt;br /&gt;
7  - Telnet Port (23)&lt;br /&gt;
8  - Telnet Username (admin)&lt;br /&gt;
9  - Telnet Password (radios)&lt;br /&gt;
10 - DynDNS Enable (0)&lt;br /&gt;
11 - DynDNS Username (wb6nil)&lt;br /&gt;
12 - DynDNS Password (radios42)&lt;br /&gt;
13 - DynDNS Host (voter-test.dyndns.org)&lt;br /&gt;
14 - BootLoader IP Address (192.168.1.10) (OK)&lt;br /&gt;
15 - Ethernet Duplex (0=Half, 1=Full) (1)&lt;br /&gt;
99 - Save Values to EEPROM&lt;br /&gt;
x  - Exit IP Parameters Menu (back to main menu)&lt;br /&gt;
q  - Disconnect Remote Console Session, r - reboot system&lt;br /&gt;
&lt;br /&gt;
Enter Selection (1-14,99,c,x,q,r) :&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Offline Parameters Menu==&lt;br /&gt;
This is what a typical Offline Parameters Menu looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
OffLine Mode Parameters Menu&lt;br /&gt;
&lt;br /&gt;
Select the following values to View/Modify:&lt;br /&gt;
&lt;br /&gt;
1  - Offline Mode (0=NONE, 1=Simplex, 2=Simplex w/Trigger, 3=Repeater) (3)&lt;br /&gt;
2  - CW Speed (400) (1/8000 secs)&lt;br /&gt;
3  - Pre-CW Delay (4000) (1/8000 secs)&lt;br /&gt;
4  - Post-CW Delay (4000) (1/8000 secs)&lt;br /&gt;
5  - CW &amp;quot;Offline&amp;quot; (ID) String (WB6NIL)&lt;br /&gt;
6  - CW &amp;quot;Online&amp;quot; String (OK)&lt;br /&gt;
7  - &amp;quot;Offline&amp;quot; (CW ID) Period Time (6000) (1/10 secs)&lt;br /&gt;
8  - Offline Repeat Hang Time (15) (1/10 secs)&lt;br /&gt;
9  - Offline CTCSS Tone (0.0) Hz&lt;br /&gt;
10 - Offline CTCSS Level (0-32767) (3000)&lt;br /&gt;
11 - Offline De-Emphasis Override (0=NORMAL, 1=OVERRIDE) (0)&lt;br /&gt;
99 - Save Values to EEPROM&lt;br /&gt;
x  - Exit OffLine Mode Parameter Menu (back to main menu)&lt;br /&gt;
q  - Disconnect Remote Console Session, r - reboot system&lt;br /&gt;
&lt;br /&gt;
Enter Selection (1-9,99,c,x,q,r) :&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Configuration Options=&lt;br /&gt;
==Main Menu Options==&lt;br /&gt;
===Serial #===&lt;br /&gt;
Sets the serial number for the RTCM/VOTER.&lt;br /&gt;
*This sets the MAC address of the unit&lt;br /&gt;
*Each unit must have a unique serial number on your network segment&lt;br /&gt;
&lt;br /&gt;
===VOTER Server Address (FQDN)===&lt;br /&gt;
This is the DNS name or IP address of the Asterisk server you are connecting to.&lt;br /&gt;
&lt;br /&gt;
===VOTER Server Port===&lt;br /&gt;
This is the UDP port that the Asterisk server is listening on for clients.&lt;br /&gt;
*Typically it is left at the default of port 667&lt;br /&gt;
*'''MUST''' match the ''port'' directive in ''voter.conf''&lt;br /&gt;
&lt;br /&gt;
===Local Port (Override)===&lt;br /&gt;
Sets the local unit UDP port to be something different.&lt;br /&gt;
*This is typically not used and left at default (0)&lt;br /&gt;
&lt;br /&gt;
===Client Password===&lt;br /&gt;
This is the '''unique''' password for this unit.&lt;br /&gt;
*Every unit '''must''' have a '''unique''' password&lt;br /&gt;
*'''MUST''' match the password on the client configuration line in ''voter.conf''&lt;br /&gt;
&lt;br /&gt;
===Host Password===&lt;br /&gt;
This is the password of the Asterisk server.&lt;br /&gt;
*Configured with the ''password'' directive in ''voter.conf''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Tx Buffer Length===&lt;br /&gt;
This is the size of the TX buffer from the RTCM/VOTER to the Asterisk server.&lt;br /&gt;
*Tuned parameter, set via the tuning instructions based on network configuration&lt;br /&gt;
&lt;br /&gt;
===GPS Data Protocol (0=NMEA, 1=TSIP)===&lt;br /&gt;
Type of GPS connected.&lt;br /&gt;
*NMEA for all non-Trimble GPS units&lt;br /&gt;
*TSIP to use with Trimble GPS that use Trimble Serial Interface Protocol (TSIP)&lt;br /&gt;
&lt;br /&gt;
===GPS Serial Polarity (0=Non-Inverted, 1=Inverted)===&lt;br /&gt;
GPS dependent setting. &lt;br /&gt;
*Depends on if you are sending TTL or RS-232 data, adjust as needed.&lt;br /&gt;
&lt;br /&gt;
===GPS PPS Polarity (0=Non-Inverted, 1=Inverted, 2=NONE)===&lt;br /&gt;
GPS dependent setting. &lt;br /&gt;
*Depends on if you are sending TTL or RS-232 data for the PPS signal, adjust as needed.&lt;br /&gt;
*If not using GPS or configuring as a mixed client, set to 2 (None).&lt;br /&gt;
&lt;br /&gt;
===GPS Baud Rate===&lt;br /&gt;
Communication speed for the GPS, default is 9600.&lt;br /&gt;
&lt;br /&gt;
===External CTCSS (0=Ignore, 1=Non-Inverted, 2=Inverted)===&lt;br /&gt;
If you are using the CTCSS input from an external CTCSS decoder, adjust this for your logic polarity, or set to 0 (ignore) if not used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===COR Type (0=Normal, 1=IGNORE COR, 2=No Receiver)===&lt;br /&gt;
Typically, this is left at Normal. &lt;br /&gt;
*Set to 1 (Ignore COR), if you are using the External CTCSS input.&lt;br /&gt;
&lt;br /&gt;
===Debug Level===&lt;br /&gt;
Set the Debug Level, if needed, based on the [[#Debug Options | Debug Options]] below&lt;br /&gt;
&lt;br /&gt;
===Alt. VOTER Server Address (FQDN)===&lt;br /&gt;
If you are using redundant Asterisk servers, set the IP/DNS address of the redundant server here.&lt;br /&gt;
&lt;br /&gt;
===Alt. VOTER Server Port (Override)===&lt;br /&gt;
If the redundant Asterisk server UDP port is not 667, set it here.&lt;br /&gt;
&lt;br /&gt;
===DSP/BEW Mode===&lt;br /&gt;
If the firmware supports DSP/BEW Mode, set this to 1 to enable it, if desired.&lt;br /&gt;
*DSP/BEW firmware versions use extra firmware space and will make the diagnostic menu unavailable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;Duplex Mode 3&amp;quot; (0=DISABLED, 1-255 Hang Time) (1/10 secs)===&lt;br /&gt;
If you are using Duplex Mode 3, set the hang time here to enable the option. Most users leave this disabled.&lt;br /&gt;
&lt;br /&gt;
===Simulcast Launch Delay===&lt;br /&gt;
If you are using Simulcast, set your launch delay here.&lt;br /&gt;
&lt;br /&gt;
===RX Level===&lt;br /&gt;
This opens the RX Level tuning screen to adjust the receive audio level from the repeater.&lt;br /&gt;
&lt;br /&gt;
===Status===&lt;br /&gt;
This opens the status menu, showing some of the current operating parameters.&lt;br /&gt;
&lt;br /&gt;
===Save Values to EEPROM===&lt;br /&gt;
Save all the options to non-volatile EEPROM.&lt;br /&gt;
*Make sure to save after you make any changes.&lt;br /&gt;
&lt;br /&gt;
===IP Parameters menu===&lt;br /&gt;
Open the IP Parameters Menu.&lt;br /&gt;
&lt;br /&gt;
===Offline Mode Parameters menu===&lt;br /&gt;
Open the Offline Mode Parameters Menu.&lt;br /&gt;
&lt;br /&gt;
===Disconnect Remote Console Session===&lt;br /&gt;
If you are connected via Telnet, this will exit your session.&lt;br /&gt;
&lt;br /&gt;
===Reboot System===&lt;br /&gt;
Reboot the VOTER/RTCM.&lt;br /&gt;
*This should be done after making configuration changes.&lt;br /&gt;
*Some setting changes require a reboot to become effective.&lt;br /&gt;
&lt;br /&gt;
===Diagnostics===&lt;br /&gt;
Open the Diagnostics Menu.&lt;br /&gt;
*Diagnostics are unavailable if you are using DSP/BEW firmware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Network Information=&lt;br /&gt;
==RTCM/VOTER Bandwidth==&lt;br /&gt;
Assuming ulaw... The RTCM will require approximately 80kbps of bandwidth for continual usage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Network Quality==&lt;br /&gt;
Your IP Network quality is important. You may wish to add a rule in your routers to prioritize traffic on UDP port 667 so that RTCM audio is given priority over other &lt;br /&gt;
traffic. Also see the [[#Debug Options]] below for notes on how to tag your packets with ToS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==RX/TX Buffers are NOT Both Millisecond Values== &lt;br /&gt;
You might assume an RX buffer (in voter.conf) of 120ms would be equivalent of a TX buffer (in the RTCM) of 120ms. That is not the case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The TX buffer is a number of 125 '''microsecond''' intervals, where the RX buffer is in milliseconds. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you follow the buffer setting instructions, you should be fine, in most cases. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Debug Options=&lt;br /&gt;
The VOTER/RTCM firmware supports some additional debugging information that can be turned on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
From the source code, the different Debug Options are listed as:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1 - Alt/Main Host change notifications&lt;br /&gt;
2 - Ignore HWlock (GGPS only)&lt;br /&gt;
4 - GPS/PPS Failure simulation (GGPS only)&lt;br /&gt;
8 - POCSAG H/W output disable (GGPS only)&lt;br /&gt;
16 - IP TOS Class for Ubiquiti&lt;br /&gt;
32 - GPS Debug&lt;br /&gt;
64 - Fix GPS 1 second off&lt;br /&gt;
128 - Fix GPS 1 month off (WTF,O??)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Not sure what they all do, but that is what they are. Here are the most common ones used:&lt;br /&gt;
*&amp;quot;Alt/Main Host change notifications&amp;quot; &lt;br /&gt;
**shows when the connection to the Asterisk server changes state.&lt;br /&gt;
*&amp;quot;IP TOS Class for Ubiquity&amp;quot; &lt;br /&gt;
**marks the IP headers from the RTCM/VOTER '''TO''' the network with ToS C0/DSCP 48 (UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS latency). Other sources show this as a Network Control TOS.) If you enable this, you also will want to have &amp;quot;utos=y&amp;quot; in your voter.conf to mark the packets from the network '''TO''' the RTCM/VOTER. We will probably change this option to mark the packets by default in a future version.&lt;br /&gt;
*&amp;quot;GPS Debug&amp;quot; &lt;br /&gt;
**will print NMEA or TSIP debug strings from the connected GPS.&lt;br /&gt;
*&amp;quot;Fix GPS 1 second off&amp;quot;&lt;br /&gt;
**this is for NMEA GPS '''only'''. It will add one second to the time.&lt;br /&gt;
*&amp;quot;Fix GPS 1 month off (WTF,O??)&amp;quot;&lt;br /&gt;
**this is for TSIP GPS '''only'''. It will effectively add a month to the date. The mktime function normally needs one month subtracted from the raw month it converts to a time/date string. Maybe there are some GPS out there that do that automatically? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The way this works is you add together the options you want to enable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Want to enable GPS Debug and IP ToS, set debug to 48.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just want to turn on GPS Debug, set debug to 32.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just want ToS turned on, set debug to 16.&lt;br /&gt;
&lt;br /&gt;
=Un-documented Menus/Features=&lt;br /&gt;
*Menu 96 - If firmware compiled with DUMPENCREGS enabled, Menu 96 looks like it dumps the registers from the ENC (Ethernet) chip?&lt;br /&gt;
&lt;br /&gt;
*Menu 111 - show the &amp;quot;hidden&amp;quot; option values (normally they should all be 0).&lt;br /&gt;
&lt;br /&gt;
*Menu 11780 - set the &amp;quot;Elkes&amp;quot; value. Developed for Pete Elkes, this is for solar type sites. It shuts off the Tx after a period of no Rx activity.&lt;br /&gt;
&lt;br /&gt;
*Menu 1103 - set the &amp;quot;Glaser&amp;quot; timer value? No idea what this does.&lt;br /&gt;
&lt;br /&gt;
*Menu 1170 - set &amp;quot;Sawyer Mode&amp;quot;. Developed for Tim Sawyer use on Yaesu VXR5000 repeater. It modifies de-ephasis behavior when on/off line. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Audio=&lt;br /&gt;
The RTCM/VOTER is totally flexible regarding emphasis. Although the way it is set is completely obscure. It tries to automatically do the right thing for you, which is great most of the time. But when it’s not, it's hard to know what is going on. &lt;br /&gt;
&lt;br /&gt;
If you are changing the COR Type settings, or nodeemp in voter.conf, make sure you save/reboot the RTCM/VOTER every time you make a change... changes are '''not''' effective until the RTCM/VOTER reboots!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Voting==&lt;br /&gt;
Before we get in to the different ways audio is routed, there is an important consideration you need to make if you are using the RTCM/VOTER for voting. &lt;br /&gt;
&lt;br /&gt;
The way the voting process works, it needs '''discriminator audio''' to determine the signal to noise level from each satellite receiver. As such, you will need to be feeding discriminator audio in to the RX audio pin, so that the hardware/software can vote properly. That means you also need to let the hardware/software do the squelch action.&lt;br /&gt;
&lt;br /&gt;
If you need RX CTCSS, you'll need to feed logic from an external CTCSS decoder in to the CTCSS input pin.&lt;br /&gt;
&lt;br /&gt;
Also, don't disable COR in the RTCM/VOTER... it will cause it to disable the squelch and it will report an RSSI of 255 (full quieting) for all received signals.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Receiver De-emphasis==&lt;br /&gt;
On the RX side the COR Type setting in the RTCM/VOTER determines whether the de-emphasis filter is used for RX audio. 0=Normal means the RTCM/VOTER squelch circuit is in use and it is expecting discriminator audio on the RX pin (to be able to do the squelch action), and therefore it '''will''' provide de-emphasis (audio is routed THROUGH the de-emphasis RC filter circuit) to the receiver audio. COR Type 1=IGNORE COR uses the CTCSS input pin for COR or CTCSS ''logic'' and it then expects de-emphasized receive (line) audio on the RX pin, and therefore will '''not''' provide de-emphasis to the received audio (the RC filter is switched '''out''' and audio passes straight through). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Most of the time, you do NOT need to override the automatic filter selection. However, if you do, and you are sure you have a good reason to, you CAN switch the de-emphasis filter '''out''' of the circuit so that audio passes straight through to the encoder. You would do this by setting the nodeemp=1 option in voter.conf. When you set nodeemp=1, the ''VOTER Protocol'' tells the RTCM/VOTER to switch the filter '''out''', so audio is passed straight through.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Transmitter Pre-emhpasis==&lt;br /&gt;
On the TX side, the RTCM/VOTER expects the repeater to accept ''mic audio''. In other words, the '''repeater''' is providing the pre-emphasis, not the RTCM/VOTER (you are '''not''' directly modulating the TX). This can be overridden by setting CTCSS tone in voter.conf. If a CTCSS tone is defined, the RTCM '''will''' provide pre-emphasis to the audio, and expects that you will be connecting to your repeater's flat audio input (direct modulation). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you don’t want TX CTCSS tone but '''do''' need pre-emphasis, set an arbitrary (any) CTCSS tone in voter.conf, and set the level to 0. This will force the RTCM/VOTER to pre-emphasize the audio it generates on the TX pin, but it won't actually mix in a CTCSS tone. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Level Setting==&lt;br /&gt;
Setting the audio levels for the RTCM/VOTER is pretty straight forward. Just follow these steps:&lt;br /&gt;
*Ensure you have a connection to your host Asterisk server/chan_voter instance&lt;br /&gt;
*Send a 1kHz@3kHz on-channel, full-quieting signal in to the repeater's RX&lt;br /&gt;
*Set the RX up so it reads 3kHz deviation on the RTCM's built in console meter&lt;br /&gt;
*Now set the TX level '''pot''' to get 3kHz out of the transmitter (No PL)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now change the modulation from 1kHz tone to 800Hz followed by 1.8kHz and verify that the deviation level doesn't change as the tone frequency changes. '''Changing levels indicates a pre/de-emphasis issue.''' You will want to read the above sections on how audio is handled, and figure out where your issue is.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If using PL you have to account for that deviation, unless you filter it out with your IFR (test set). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That's it!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Optionally, if you are using the built-in &amp;quot;offline repeat&amp;quot; functions, fail the connection to the host Asterisk server, and make sure your repeat audio performs the same as above.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Crappy Transmit Audio==&lt;br /&gt;
&lt;br /&gt;
Does your repeated audio sounded really bassy, muffled, and not very understandable? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There was a situation where, compared to a typical simplex radio-to-radio transmission, the audio through the repeater (RTCM and Asterisk) was unacceptable. What was discovered was that the RTCM has an internal pre-emphasis function that was disabled. The user had intentionally disabled &amp;quot;txctcss&amp;quot; and &amp;quot;txctcsslevel&amp;quot; in voter.conf because he didn't &lt;br /&gt;
want the RTCM transmitting CTCSS (the Quantar was doing that already). He ultimately found a post on the mail list explaining the settings above that said enabling txctcss = some valid tone (114.8 in his case) and setting txctcsslevel = 0 would turn on the pre-emphasis function in the RTCM without transmitting CTCSS tones. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
He did, and it worked like a charm! Audio now had more treble and was less bassy/muffled. So, future RTCM users, be sure not to comment out txctcss and txctcsslevel in voter.conf!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just enable and set the level to 0. You'll thank me later. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=GPS=&lt;br /&gt;
The RTCM/VOTER will work with most GPS available. It requires either NMEA or Trimble TSIP binary data. It only receives data '''from''' the GPS (GPS TX), it does not send anything '''to''' the GPS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The firmware is specifically written to talk to Trimble Thunderbolt receivers using Trimble's TSIP binary data interface, however, other Trimbles GPS receivers that talk TSIP are generally compatible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==NMEA Sentences==&lt;br /&gt;
If you are using an NMEA GPS (as opposed to a Trimble using the TSIP binary interface), the RTCM/VOTER is looking for the following NMEA sentences:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$GPGGA&lt;br /&gt;
$GPGSV&lt;br /&gt;
$GPRMC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Lock==&lt;br /&gt;
The GPS led will go solid regardless of the connection LED. That '''has''' to happen or it won't connect to the Asterisk server. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is not unusual for it to take up to 20 mins to get a GPS lock LED (ie. using a Trimble Thunderbolt) after any reboot. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS De-sense==&lt;br /&gt;
If you are having odd loss of lock issues, consider you may have interference to your GPS antenna from strong RF nearby. A note from Jesse Lloyd:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I also had crazy problems with poor signal on my GPS when I set it up sitting in a window, and once installed at site I had the GPS antenna maybe 6 ft from the VHF antenna, and after some troubleshooting found it was getting swamped with RF and loosing lock. &lt;br /&gt;
&lt;br /&gt;
I found the debug setting of 32 useful in the RTCM, you can see a hex output of the GPS status.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Issues==&lt;br /&gt;
===Trimble Thunderbolt===&lt;br /&gt;
You may find your Trimble Thunderbolt is showing the incorrect date at the moment. It could be showing the year as 1997. This is due to the date in the Thunderbolt being reported incorrectly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''This can cause some of your voting receivers to not connect, if they are used with other GPS in your system.''' If you have '''ALL''' Thunderbolts, or '''NO''' Thunderbolts, you are probably fine. If you have '''ALL''' Thunderbolts, the date/time is probably wrong, but they will ALL be wrong, so they will connect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GPS Time is a continuous counting time scale beginning at the January 5, 1980 to January 6, 1980 midnight. It is split into two parts: a time of week measured in seconds from midnight Sat/Sun and a week number. The time of week is transmitted in an unambiguous manner by the satellites, but only the bottom 10 bits of the week number are transmitted. This means that a receiver will see a week number count that goes up steadily until it reaches 1023 after which it will “roll over” back to zero, before steadily going up again. Such a week rollover will occur approx. every 20 years. The last week rollover occurred in 1999 and the next one will be in 2019.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Thunderbolt manual states:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The ThunderBolt adjusts for this week rollover by adding 1024 to any week number reported by GPS which is less than week number 936 which began on December 14, 1997. With this technique, the ThunderBolt will provide an accurate translation of GPS week number and TOW to time and date until July 30, 2017.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As such, the Trimble Thunderbolt has a firmware issue with the GPS Week rollover that manifested itself on July 30, 2017, causing the date to become incorrect. The Thunderbolt thinks the week changed from 935 to 936 (actual week 1959-1024=935), so it stopped adding 1024 to the week.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We have added a brute-force fix starting in RTCM/VOTER firmware &amp;gt;=1.51. This fix adds 619315200 seconds (1024 weeks) to the time reported by the GPS. It fixes the Thunderbolts, we have not done extensive testing to see how it affects other TSIP receivers.&lt;br /&gt;
&lt;br /&gt;
===Garmin===&lt;br /&gt;
====Garmin 18x LVC Wiring Issues====&lt;br /&gt;
If you have issues with your GPS 18x LVC not talking to the RTCM/VOTER, it may not be hooked up to the RTCM correctly. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Garmin pin labeling is backwards to what you may think. See below. You probably need to swap pins 6 and 14.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RTCM   	                 GPS 18x LVC      &lt;br /&gt;
6 GRX 	&amp;lt;-- Rx Data 	 6 Green  &lt;br /&gt;
7 GPPS 	&amp;lt;-- Pulse Output 1 Yellow  &lt;br /&gt;
8 GND   Ground 		 3 Black  &lt;br /&gt;
8 GND   Ground 		 5 Black  &lt;br /&gt;
13 +5V 	--&amp;gt;Vin 		 2 Red  &lt;br /&gt;
14 GTX 	--&amp;gt; TX Data 	 4 White&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log into the RTCM and do 98 and you should see something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Current Time: Sun  Apr 20, 2014  04:37:02.820&lt;br /&gt;
Last Rx Pkt System time: 04/20/2014 03:55:35.580, diff: 2487260 msec&lt;br /&gt;
Last Rx Pkt Timestamp time: 04/20/2014 03:55:32.064, diff: 3515 msec&lt;br /&gt;
Last Rx Pkt index: 160, inbounds: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Garmin and the RTCM====&lt;br /&gt;
Beware when buying newer Garmin GPS's to use with the Micro-Node RTCM.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The RTCM expects a 5V PPS signal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Newer Garmin's (GPS 18X, 18X LVC, etc.) MAY NOT output 5V, and can cause issues. '''Check the Garmin datasheet'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER is designed to accept both 3.3V or 5V signals, and ''should'' work fine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==No GPS/Mixed Mode==&lt;br /&gt;
You do not need a timing source to use an RTCM if you don’t want to vote. That’s called Mix Mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Having the PPS Polarity set to 2 tells the RTCM you do not have a GPS. That forces the RTCM to become a mix (non-voting) client. Turn it on, save it, and restart. A simple voter.conf would look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[general]&lt;br /&gt;
port = 667&lt;br /&gt;
password = BLAH&lt;br /&gt;
&lt;br /&gt;
[1000]&lt;br /&gt;
Site1 = pswrd1,master,transmit&lt;br /&gt;
Site2 = pswrd2,transmit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mixed Client Error==&lt;br /&gt;
&amp;quot;I am getting this error in Asterisk&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WARNING[2368]: chan_voter.c:4511 voter_reader: Voter client master timing source mobile1 attempting to authenticate as mix client!!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A mixed client error means the voter.conf file is expecting an RTCM to try and connect with a GPS IP packet (ie. has '''master''' in it in voter.conf), but the RTCM isn't &lt;br /&gt;
sending a GPS IP packet. So its a mismatch between voter.conf and Option 10 in the RTCM. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to use a mix client (non-voted), make sure that receiver's configuration line in voter.conf '''does not''' have the '''master''' option set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Debug==&lt;br /&gt;
To turn on GPS Debugging, set the Debug Option Level in the RTCM/VOTER to 32.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [[#Debug Options]] levels for more information on how this works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Trimble Debug Status Decoding==&lt;br /&gt;
The VOTER/RTCM when in TSIP mode (Trimble), assumes it is a Trimble Thunderbolt and is looking for two packets:&lt;br /&gt;
*0x8F-AB - Primary Timing Packet&lt;br /&gt;
*0x8F-AC - Supplemental Timing Packet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Grab a copy of the Thunderbolt User Guide: http://leapsecond.com/pages/tbolt/Thunderbolt-2012-02.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pages 78-83 are the important ones.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Packet 0x8F-AB is what grabs the timing information, and packet 0x8F-AC is what it looks at for everything else (including debug).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The debug string that the VOTER/RTCM reports:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	printf(&amp;quot;GPS-DEBUG: TSIP: ok %d, 9 - 14: %02x %02x %02x %02x %02x %02x\n&amp;quot;,&lt;br /&gt;
					happy,gps_buf[9],gps_buf[10],gps_buf[11],gps_buf[12],gps_buf[13],gps_buf[14]);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, the 1 after ok is the &amp;quot;happy gps&amp;quot; flag. The other 5 bytes are supposed to be bytes 9-14 from the packet... sort of. They are bytes 9-14 of the buffer, but they are actually bytes 8-13 of the binary message.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Looking at the message structure, bytes 8-13 are:&lt;br /&gt;
*8-9 Critical Alarms&lt;br /&gt;
*10-11 Minor Alarms&lt;br /&gt;
*12 GPS Decoding Status&lt;br /&gt;
*13 Disciplining Activity&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Therefore, the messages you are seeing break down as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GPS-DEBUG: TSIP: ok 1, 9 - 14: 00 00 00 00 00 00 - everything is good in the 'hood, Doing Fixes, Phase Locking&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 18 08 06 - not happy, Not Tracking Satellites, Not Disciplining Oscillator (0x18 --&amp;gt; 0b000000011000), No Usable Sats, Inactive&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 08 08 05 - not happy, Not Tracking Satellites, No Useable Sats, Compensating OXCO (holdover)&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 00 00 05 - not happy, Compensating OXCO (holdover)&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 1, 9 - 14: 00 00 00 00 00 08 - happy, Recovery Mode&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 00 00 04 - not happy, Initializing Loop Filter&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The GPS is flagged as NOT HAPPY in TSIP mode if ANY of the following are TRUE:&lt;br /&gt;
*If GPS Decoding Status is anything other than &amp;quot;Doing Fixes&amp;quot;.&lt;br /&gt;
*If Disciplining Activity is not Phase Locking or Recovery Mode.&lt;br /&gt;
*Any Critical Alarms.&lt;br /&gt;
*Any Minor Alarms.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ubiquity ToS=&lt;br /&gt;
See https://help.ubnt.com/hc/en-us/articles/205231750-airMAX-How-is-QoS-and-prioritization-handled-by-airMAX-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, if we set ToS/DSCP in the header to C0, then Ubiquity (and other gear watching ToS) ''should'' prioritize the packets. This sets the DSCP to 110 000 aka 48. UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS latency). Other sources show this as a Network Control TOS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is an option in voter.conf to turn this on (utos=y). However, this only controls packets being sent from Asterisk '''TO''' the RTCM. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to tag packets from the RTCM '''TO''' Asterisk, you need to set the RTCM debug option level to 16 (see [[#Debug Options]] for how this works).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At some point we should probably change the default behaviour of the RTCM firmware to mark the packets and use the debug setting to '''disable''' ToS. That change (if you wanted to compile your own firmware) would be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Change line 90 in IP.c&lt;br /&gt;
&lt;br /&gt;
From:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? 0xc0 : (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY))&lt;br /&gt;
&lt;br /&gt;
To:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY) : 0xc0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This changes the conditional expression from if the debug level is 16 to mark the packets with DSCP 48 to if the debug level is 16, mark the packets routine (DSCP 0).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM Simulcasting=&lt;br /&gt;
The RTCM/VOTER boards do support simulcasting, however, there are a bunch of quirks that one needs to be aware of.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Radio Hardware==&lt;br /&gt;
For best results, you should use all identical RF equipment between your voting RX sites and simulcast TX sites. If you don't, you can end up with strange audio artifacts when different receivers are used, and other strange audio issues when different transmitters are used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==9.6MHz Oscillator==&lt;br /&gt;
If you want reliable simulcast with an acceptable level of overlap warble, you MUST inject a GPS-disciplined or OXCO 9.6MHz signal to the clock of the RTCM's, in lieu of their stock internal crystal. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Otherwise, the inherent internal clock jitter of the RTCM's will cause CTCSS warble, etc. in areas where your transmitters overlap. The 1 PPS feed that you normally feed the RTCM's is acceptable for voting, but naturally, a typical crystal-driven clock will slightly drift in between the pulses every second due to inherent jitter, etc., and that ain't to good for situations like simulcast which demand sample-accurate performance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are some comments from Joe, KC2IRV, on the subject. He has also created his own wiki, specific to simulcast issues, you can find it at: http://rtcmsimulcast.wikifoundry.com/ &lt;br /&gt;
&lt;br /&gt;
:I felt I needed to let those on this mailing list know my findings with simulcasting with the RTCM units since I have received a great deal of help and information from people on this list.&lt;br /&gt;
&lt;br /&gt;
:For the past week I have had a two (2) site simulcast system up and running on UHF using the RTCM units. I have done a great deal of testing and proving on the bench and it is so far working beautifully. &lt;br /&gt;
&lt;br /&gt;
:The one issue that was made apparent to me early on was that in order for the RTCM's to be suitable for simulcast, the processor inside it needed to be clocked to a more accurate source. This source is supposed to be the Programmable Clock Generator Module in order to produce a GPS locked 9.6 MHz reference for the processor. Unfortunately this unit is not currently available.&lt;br /&gt;
&lt;br /&gt;
:Knowing this, I started to go down the road of possibly designing my own, but stumbled upon a cheap, plentiful supply of Symmetricom 9.6 MHz sinewave OCXO's. I took a chance and ordered a few to experiment with to see if the RTCM would be able to use this in place of the supplied crystal for a clock. I found they did, with that I decided to modify the RTCM with an SMA connector just above the audio adjustment pots and use this OCXO. I trimmed the frequency on the units to match each other and used them to produce the processor clock.&lt;br /&gt;
&lt;br /&gt;
:After a week of testing, I have found the results in the overlap areas to be exactly as I would expect them on a public safety/commercial simulcast system. While in an overlap region where both transmitters are within 3dB of one another, to the ear you hear no audio phase wandering. Of course , this has only been a week of testing so I wouldn't call it case closed yet.&lt;br /&gt;
&lt;br /&gt;
:I will say that if this system remains this way after testing for 6 months to a year than using a 9.6 MHz OXCO is a viable alternative to achieve the needed precision and accuracy needed for the processor clock to make it suitable for simulcast.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Comments from Jim Dixon on the issue:&lt;br /&gt;
&lt;br /&gt;
:You have to use '''something''' that will take the precise 10MHz (or whatever it is) from the GPSDO and PLL (phase-locked) convert it to 9.6MHz (square wave at 3.3V for the CPU clock).&lt;br /&gt;
&lt;br /&gt;
:We had to use 9.6MHz mainly because of the DAC in the dsPIC instead of 10MHz. The options for various divide/clock radios in the part are RATHER limited. As I recall, there wasn't even a way of getting the necessary 16kb/s sample rate on the ADC from 10MHZ, either.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Micro-Node RTCM Clock Issue=&lt;br /&gt;
James, KI0KN, had some strange-ness with some of his RTCM's when used for voting. As soon as he changed menu item 10 on the RTCM to either a (1) or a (0) instead of (2), he '''instantly''' got this on the RTCM console:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
04/05/2016 18:44:13.660  Lost GPS Time synchronization&lt;br /&gt;
04/05/2016 18:44:13.660  Host Connection Lost (Pri) (10.16.1.240)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And it sits there forever and never re-establishes connection to the host. The issue was finally traced to a bad batch of 9.6MHz crystals that affected a small run of the RTCM's. The issue was eventually resolved by Micro-Node, but we'll document it here just for record keeping.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
James comments to the list:&lt;br /&gt;
&lt;br /&gt;
:Well, after many of you offered your time and thoughts on my voter problem, Jim, WB6NIL, graciously donated a couple of hours of his time to remotely help me and he uncovered the problem.&lt;br /&gt;
&lt;br /&gt;
:All 5 of my RTCMs were purchased within the last 6 months, and I suspect all 5 have the same problem (will verify that today). The problem is that the microprocessor crystal is running too fast! There is 9.6Mhz crystal that drives the MPU, on the particular unit that Jim helped me diagnose, it's running 2.5 khz too fast.  &lt;br /&gt;
&lt;br /&gt;
:There is a sanity check in the firmware that makes sure the correct number of samples were taken in the last second (it's supposed to be 8000) and fails if the sample is incorrectly sized (mine is taking 8003 samples).  Jim helped adjust the code to be more tolerant of the sampling error and my whole system instantly worked.&lt;br /&gt;
&lt;br /&gt;
:I have since tested it with ALL my GPSs (they all work great!). So I now have everything working, including the voting.&lt;br /&gt;
&lt;br /&gt;
:I haven't contact Micro-Node about it yet. Jim told me that voting should work fine but this clock error would probably not be acceptable for Simulcast (something we have no plans on doing as of now). Since mine are deployed at mountain top sites, I'll probably pursue a crystal that is running at the correct frequency and use &amp;quot;standard&amp;quot; firmware so that if the decision is ever made to play with simulcast, I won't be right back in this same boat.&lt;br /&gt;
&lt;br /&gt;
:Thanks to all that helped out, and a HUGE thanks to Jim for taking the time to troubleshoot this.&lt;br /&gt;
&lt;br /&gt;
:BTW- This clock error will NOT effect the RTCM in mix client mode, it only affects it in voting or simulcast mode!&lt;br /&gt;
&lt;br /&gt;
:In voter.c, the stock line is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if ((samplecnt &amp;gt;= 7999) &amp;amp;&amp;amp; (samplecnt &amp;lt;= 8001))&lt;br /&gt;
&lt;br /&gt;
it needs to be changed to something like:&lt;br /&gt;
&lt;br /&gt;
if ((samplecnt &amp;gt;= 7999) &amp;amp;&amp;amp; (samplecnt &amp;lt;= 8003 ))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:That was just enough to make my first RTCM work. I've had a chance now to check a few more of my RTCMs on the bench this morning and the crystal frequencies are kind of all over.  The next one I had on the bench was 5.2Khz fast. The above code was still not enough to fix it (as would be expected) so it looks like the quality control on whatever manufacturer that crystal is, isn't very good (or a low tolerance crystal is being used). I am going to pursue crystal replacement to get a highly accurate, stable, on-frequency crystal in there as my first choice. Changing the firmware 5 different times doesn't seem like the right answer.&lt;br /&gt;
&lt;br /&gt;
:Jim put that sanity check in there for a reason. Working around it '''may''' allow the device to work, but to me, it seems getting the hardware operating the way it was supposed to originally is the better answer. I will follow up with Micro-node and let you all know how it goes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After following up with Micro-Node:&lt;br /&gt;
:They were all off, some were off a LOT. I talked to Mark @ Micronode. He told me there were 25 units that made it out the door with a crystal from an unapproved source and that was quite likely the reason for the problem. He gladly sent me 5 new crystals to replace (he offered to replace them himself if I sent the units in, but I am comfortable doing it myself to save the time and postage). &lt;br /&gt;
&lt;br /&gt;
:I haven't received them in the mail yet to show that the problem is fixed, but I will post here when that happens. He was great to work with and had no issue getting things set straight. If you are having the same issue and your RTCMs were bought about the same time, I'd suggest you contact him and have him help you resolve the issue!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Duplex Mode 3=&lt;br /&gt;
Does delayed repeat audio bug you? Tired of hearing a bit of yourself after you unkey? Wish you could talk full duplex? Hate the echo chamber effect? Then we have the answer for you.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Duplex Mode 3 in app_rpt allows for &amp;quot;in-cabinet repeat&amp;quot; (where the radio hardware provides repeat audio) and app_rpt adds the hang time, courtesy tones, linking - all the &lt;br /&gt;
things apt_rpt does sans repeat audio. Therefore no repeat audio delay. Cool, eh? This duplex mode has been in app_rpt for a while. Problem has been how to implement it in the RTCM environment. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Duplex Mode 3 support in the RTCM provides in-cabinet repeat functionality. Repeat audio loops through the RTCM and has almost zero delay because it does not have to traverse the network. The delay is not quite zero but it's plenty short enough to eliminate all of the above mentioned annoyances. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Of course Duplex Mode 3 support can't be used with voting or simulcast. You also loose Touch Tone muting, Time Out Timer and Repeater Disable functions because the repeat path is not through app_rpt.&lt;/div&gt;</summary>
		<author><name>Ve7fet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=51</id>
		<title>RTCM Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=51"/>
		<updated>2017-08-16T14:40:29Z</updated>

		<summary type="html">&lt;p&gt;Ve7fet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Micro-Node RTCM and VOTER interfaces are typically used with AllStar in voting/simulcast applications. They MAY be used for ANY repeater interface application, through the chan/voter channel driver. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER is the original through-hole board designed by Jim Dixon for this application. It is open-source, and the relevant Gerber files and BoM to build it are available. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The [http://www.micro-node.com/thin-m1.shtml Micro-Node Radio Thin Client Module (RTCM)] is the commercial version of the VOTER. It uses surface mount parts (SMT), but is functionally equivalent to the original VOTER. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In general, the two terms (RTCM/VOTER) are used interchangeably, as they operate the same, and use the same firmware (mostly, see below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This page will highlight some of the operational concerns, quirks, bugs, and other items of interest that relate to these interfaces. Much of the information has been gleaned off the AllStar mail list, comes from personal experience, or comes from notes in the firmware source code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Firmware=&lt;br /&gt;
The firmware in the RTCM and VOTER is the same, except it is compiled for the specific dsPIC that is installed in each. As such, the firmware is specific to the VOTER or the RTCM, and is NOT interchangeable (it won't boot in the wrong device). Firmware for the RTCM is denoted by &amp;quot;smt&amp;quot; in the filename.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are '''two parts''' to the firmware, a bootloader, and then the actual firmware file. The bootloader starts when power is applied, and allows you to talk to the dsPIC and load new firmware files over ethernet. If the bootloader is not intercepted by the loading tool, it will continue to boot the current firmware file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All new boards will need to have the bootloader installed first, followed by a firmware file. You '''can''' load a firmware file directly (.hex) in to the dsPIC, but then you will not have any of the bootloader remote loading features.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The current bootloader (.cof file) is available here: https://github.com/AllStarLink/voter/tree/master/voter-bootloader (the -smt file is for the RTCM). It needs to be loaded with a PICKit programmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Current firmware (.cry file) is available here: https://github.com/AllStarLink/voter/tree/master/board-firmware . They are loaded with the EBLEX C30 Programmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are multiple &amp;quot;flavors&amp;quot; of firmware available. See below for further explanation of what all the options mean.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The DSPBEW versions have Jim's DSP/BEW feature enabled. Note that due to the size of this feature, the diagnostics menu is NOT available in this version.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CHUCK versions have Chuck Henderson's RSSI and Squelch modifications enabled. This is probably the version that most user's will want to use in production.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Compiling Environment==&lt;br /&gt;
If you look in the [https://github.com/AllStarLink/voter/blob/master/votersystem.pdf votersystem.pdf], you will find a procedure to modify and load the bootloader in to the dsPIC of a VOTER board. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Unfortunately, there is an important step '''missing''' in that procedure, which is covered below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In addition, the old links for the MPLAB software are dead, so let's update this info and get you going.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Currently (Feb 2017), you can get the required software from:&lt;br /&gt;
:http://www.microchip.com/development-tools/downloads-archive&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download MPLAB IDE 32-bit Windows v8.66:&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_IDE_v8_66.zip&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/MPLAB_IDE_v8_66.zip&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download MPLAB C Compiler for PIC24 and dsPIC DSCs v3.31 '''NOT v.3.25''':&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Optionally, install Windows Virtual PC and XP Mode. This is getting to be pretty old software, so running it under XP Mode may be a good idea, so we can keep it isolated (install it in a virtual machine). It does run fine in Windows 7.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To setup the compile/build environment, follow these steps:&lt;br /&gt;
*Run the MPLAB IDE installer. You don't need to install the HI-TECH C Compiler at the end (click no)&lt;br /&gt;
*Run the MPLAB C Compiler installer&lt;br /&gt;
*Select Legacy Directory Name&lt;br /&gt;
*'''Select Lite Compiler'''&lt;br /&gt;
*Go to: https://github.com/AllStarLink&lt;br /&gt;
*Follow the links to: voter --&amp;gt; Clone or Download --&amp;gt; Download Zip. That will get you voter-master.zip which is a download of the whole VOTER tree from GitHub.&lt;br /&gt;
*Extract it somewhere (ie. in the XP Mode Virtual PC)&lt;br /&gt;
*Launch the MPLAB IDE&lt;br /&gt;
*Go to Configure --&amp;gt; Settings --&amp;gt; Projects and de-select one-to-one project mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bootloader==&lt;br /&gt;
If you need to load the bootloader in to a fresh board, you will need to follow these steps:&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; voter-bootloader.mcp --&amp;gt; Open (it is in the voter-bootloader folder of the GitHub source)&lt;br /&gt;
*Go to File --&amp;gt; Import --&amp;gt; voter-bootloader --&amp;gt; ENC_C30.cof --&amp;gt; Open '''This step is missing from the original procedure.'''&lt;br /&gt;
*Remove JP7 on the VOTER Board. This is necessary to allow programming by the PICKit2/PICKit3 device.&lt;br /&gt;
*Attach the PICKIT2/PICKit3 device to J1 on the VOTER board. Note that Pin 1 is closest to the power supply modules (as indicated on the board).&lt;br /&gt;
*If you have not already selected a programming device, go to Programmer --&amp;gt; Select Device and choose PICKit3 (or PICKit2, depending on what you are using).&lt;br /&gt;
*Go to Programmer --&amp;gt; Program. This will program the bootloader firmware into the PIC device on the board.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to change the default IP address from 192.168.1.11 in the bootloader:&lt;br /&gt;
*Select View --&amp;gt; Program Memory (from the top menu bar)&lt;br /&gt;
*Hit Control-F (to &amp;quot;find&amp;quot;) and search for the digits &amp;quot;00A8C0&amp;quot;.&lt;br /&gt;
*These should be found at memory address &amp;quot;03018&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;A8C0&amp;quot; at 03018 represents the hex digits C0 (192) and A8 (168) which are the first two octets of the IP address. The six digits to enter are 00 then the SECOND octet of the IP address in hex then the FIRST octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;0B01&amp;quot; at 0301A represents the hex digits 0B (11) and 01 (1) which are the second two octets of the IP address. The six digits to enter are 00 then the FOURTH octet of the IP address in hex then the THIRD octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you have modified the address to your desired IP, follow the programming procedure (above).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Firmware==&lt;br /&gt;
To compile the firmware (if you want to make custom changes):&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; navigate to board-firmware and open the .mcp file for the flavor of firmware you want to compile. They are in the board-firmware folder of the GitHub source.&lt;br /&gt;
*'''NOTE''': the .mcp files with the &amp;quot;smt&amp;quot; suffix are for the RTCM (built with SMT parts). The non-smt files are for the ORIGINAL through-hole VOTER boards. The difference is that the VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
*Go to Project --&amp;gt; Build Configuration and select &amp;quot;Release&amp;quot;. This may not be necessary (I don't believe that option is used in the firmware), but it removes the compiler option of __DEBUG being passed, so theoretically it would build &amp;quot;normal&amp;quot; firmware.&lt;br /&gt;
*Go to Configure --&amp;gt; Select Device and choose the appropriate device for your board from the Device list. If you don't select the right one, the board will not boot. Select dsPIC33FJ128GP802 for the VOTER, and dsPIC33FJ128GP804 for the RTCM.&lt;br /&gt;
*Now, if you go to Project --&amp;gt; Build All it should compile everything and show you &amp;quot;Build Succeeded&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A .cry file should be in the board-firmware folder. You can load this with the ENC Loader.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is also a .hex file in there that you could load with a programmer... but that would wipe the bootloader... so don't do that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Chuck Squelch==&lt;br /&gt;
If you want to enable &amp;quot;Chuck Squelch&amp;quot;, open the HardwareProfile.h and un-comment #define CHUCK. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may also want to go down to Line 291 in Voter.c (right click on the window, go to Properties --&amp;gt; &amp;quot;C&amp;quot; File Types --&amp;gt; Line Numbers) and tack on CHUCK after 1.60 (the current version number) so that when you load this firmware, the version will be shown as 1.51CHUCK, and you'll know that Chuck Squelch is compiled in. We should probably make that more automagic in the future...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==DSP/BEW==&lt;br /&gt;
If you want to compile the DSPBEW version, open the DSPBEW project file instead.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DSP/BEW Firmware Version=&lt;br /&gt;
DSP BEW Firmware is mutually exclusive with the diagnostic menu. There is not enough space for both, if you load the DSP/BEW firmware, you will '''NOT''' have a diag menu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BEW stands for Baseband Examination Window.&lt;br /&gt;
&lt;br /&gt;
Typically, the discriminator of an FM communications receiver produces results containing audio spectrum from the &amp;quot;sub-audible&amp;quot; range (typically &amp;lt; 100 Hz) to well above frequencies able to be produced by modulating audio. These higher frequencies can be utilized to determine signal quality, since they can only contain noise (or no noise, if a sufficiently strong signal is present).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For receivers (such as the Motorola Quantar, etc) that do not provide sufficient spectral content at these &amp;quot;noise&amp;quot; frequencies (for various reasons), The &amp;quot;DSP/BEW (Digital Signal Processor / Baseband Examination Window)&amp;quot; feature of the RTCM firmware may be utilized. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These receivers are perfectly capable of providing valid &amp;quot;noise&amp;quot; signal with no modulation on the input of the receiver, but with strong modulation (high frequency audio and high deviation), it severely interferes with proper analysis of signal strength.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This feature provides a means by which a &amp;quot;Window&amp;quot; of baseband (normal audio range) signal is examined by a DSP and a determination of whether or not sufficient audio is present to cause interference of proper signal strength is made. During the VERY brief periods of time when it is determined that sufficient audio is present to cause interference, the signal strength value is &amp;quot;held&amp;quot; (the last valid value previous to the time of interference) until such time that the interfering audio is no longer present.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The DSP/BEW feature is selectable, and '''should not''' be used for a receiver that does not need it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A note on the Motorola SLR5700 per VE7FET. DSP/BEW definitely makes a difference on what AllMon reports for the signal strength of received signals. It is less reactive when DSP/BEW = 1 than with it set to 0. We'll have to see what the real world trials show. It might be better to leave it off.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Chuck Squelch=&lt;br /&gt;
&amp;quot;Chuck Squelch&amp;quot; are a couple firmware changes made by Chuck Henderson, WB9UUS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pre-compiled firmware versions including this option are available on [https://github.com/AllStarLink/voter/tree/master/board-firmware GitHub]. See above on how it is enabled/compiled, if you are rolling your own firmware modifications.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
One of the changes fixes an issue with weak signals producing RSSI readings all over the place. It is caused by a 16 bit value that was overflowing (it is the RSSI change in the firmware). It results in rock-solid RSSI values being reported, even on barely or non-readable signals. '''This change will likely be rolled in to a permanent fix in a future firmware release.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The other firmware change changes how the squelch responds (looks at the noise in the last two audio samples) and makes the &amp;quot;Micor squelch&amp;quot; action work better.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may also want to consider the following changes in /etc/asterisk/voter.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;Comment out:&lt;br /&gt;
;thresholds =&lt;br /&gt;
&lt;br /&gt;
;and set:&lt;br /&gt;
linger = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Squelch Issues==&lt;br /&gt;
*If anyone is off frequency a little bit, that will make the voice talk off worse. Double check that the repeater and the users are all on frequency.&lt;br /&gt;
*Don't use narrow bandwidth on the repeater receiver. &lt;br /&gt;
*Make sure that the discriminator audio is not rolled off even a little bit at the high end. There should not be resistors in series or capacitors to ground between the discriminator chip output pin and the voter board input, for best results.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM/VOTER LED's=&lt;br /&gt;
RX LED on the RTCM/VOTER will flash (same rate as ACT LED) if you have External CTCSS enabled, and the received signal has the wrong (or no) valid PL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Menus=&lt;br /&gt;
==Main Menu==&lt;br /&gt;
This is what a typical Main Menu looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Select the following values to View/Modify:&lt;br /&gt;
&lt;br /&gt;
1  - Serial # (0000) (which is MAC ADDR 00:04:A3:00:00:00)&lt;br /&gt;
2  - VOTER Server Address (FQDN) (44.128.1.1)&lt;br /&gt;
3  - VOTER Server Port (667),  4  - Local Port (Override) (0)&lt;br /&gt;
5  - Client Password (password1),  6  - Host Password (hostpass1)&lt;br /&gt;
7  - Tx Buffer Length (800)&lt;br /&gt;
8  - GPS Data Protocol (0=NMEA, 1=TSIP) (1)&lt;br /&gt;
9  - GPS Serial Polarity (0=Non-Inverted, 1=Inverted) (1)&lt;br /&gt;
10 - GPS PPS Polarity (0=Non-Inverted, 1=Inverted, 2=NONE) (0)&lt;br /&gt;
11 - GPS Baud Rate (9600)&lt;br /&gt;
12 - External CTCSS (0=Ignore, 1=Non-Inverted, 2=Inverted) (0)&lt;br /&gt;
13 - COR Type (0=Normal, 1=IGNORE COR, 2=No Receiver) (0)&lt;br /&gt;
14 - Debug Level (0)&lt;br /&gt;
15  - Alt. VOTER Server Address (FQDN) ()&lt;br /&gt;
16  - Alt. VOTER Server Port (Override) (0)&lt;br /&gt;
17  - DSP/BEW Mode (0)&lt;br /&gt;
18 - &amp;quot;Duplex Mode 3&amp;quot; (0=DISABLED, 1-255 Hang Time) (1/10 secs) (0)&lt;br /&gt;
19 - Simulcast Launch Delay (0) (approx 200 ns, 5 = 1us, &amp;gt; 0 to ENA SC)&lt;br /&gt;
97 - RX Level,  98 - Status,  99 - Save Values to EEPROM&lt;br /&gt;
i - IP Parameters menu, o - Offline Mode Parameters menu&lt;br /&gt;
q - Disconnect Remote Console Session, r - reboot system, d - diagnostics&lt;br /&gt;
&lt;br /&gt;
Enter Selection (1-27,97-99,r,q,d) :&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==IP Parameters Menu==&lt;br /&gt;
This is what a typical IP Parameters Menu looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
IP Parameters Menu&lt;br /&gt;
&lt;br /&gt;
Select the following values to View/Modify:&lt;br /&gt;
&lt;br /&gt;
1  - (Static) IP Address (44.128.1.2)&lt;br /&gt;
2  - (Static) Netmask (255.255.255.0)&lt;br /&gt;
3  - (Static) Gateway (44.128.1.254)&lt;br /&gt;
4  - (Static) Primary DNS Server (44.128.1.254)&lt;br /&gt;
5  - (Static) Secondary DNS Server (0.0.0.0)&lt;br /&gt;
6  - DHCP Enable (0)&lt;br /&gt;
7  - Telnet Port (23)&lt;br /&gt;
8  - Telnet Username (admin)&lt;br /&gt;
9  - Telnet Password (radios)&lt;br /&gt;
10 - DynDNS Enable (0)&lt;br /&gt;
11 - DynDNS Username (wb6nil)&lt;br /&gt;
12 - DynDNS Password (radios42)&lt;br /&gt;
13 - DynDNS Host (voter-test.dyndns.org)&lt;br /&gt;
14 - BootLoader IP Address (192.168.1.10) (OK)&lt;br /&gt;
15 - Ethernet Duplex (0=Half, 1=Full) (1)&lt;br /&gt;
99 - Save Values to EEPROM&lt;br /&gt;
x  - Exit IP Parameters Menu (back to main menu)&lt;br /&gt;
q  - Disconnect Remote Console Session, r - reboot system&lt;br /&gt;
&lt;br /&gt;
Enter Selection (1-14,99,c,x,q,r) :&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Offline Parameters Menu==&lt;br /&gt;
This is what a typical Offline Parameters Menu looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
OffLine Mode Parameters Menu&lt;br /&gt;
&lt;br /&gt;
Select the following values to View/Modify:&lt;br /&gt;
&lt;br /&gt;
1  - Offline Mode (0=NONE, 1=Simplex, 2=Simplex w/Trigger, 3=Repeater) (3)&lt;br /&gt;
2  - CW Speed (400) (1/8000 secs)&lt;br /&gt;
3  - Pre-CW Delay (4000) (1/8000 secs)&lt;br /&gt;
4  - Post-CW Delay (4000) (1/8000 secs)&lt;br /&gt;
5  - CW &amp;quot;Offline&amp;quot; (ID) String (WB6NIL)&lt;br /&gt;
6  - CW &amp;quot;Online&amp;quot; String (OK)&lt;br /&gt;
7  - &amp;quot;Offline&amp;quot; (CW ID) Period Time (6000) (1/10 secs)&lt;br /&gt;
8  - Offline Repeat Hang Time (15) (1/10 secs)&lt;br /&gt;
9  - Offline CTCSS Tone (0.0) Hz&lt;br /&gt;
10 - Offline CTCSS Level (0-32767) (3000)&lt;br /&gt;
11 - Offline De-Emphasis Override (0=NORMAL, 1=OVERRIDE) (0)&lt;br /&gt;
99 - Save Values to EEPROM&lt;br /&gt;
x  - Exit OffLine Mode Parameter Menu (back to main menu)&lt;br /&gt;
q  - Disconnect Remote Console Session, r - reboot system&lt;br /&gt;
&lt;br /&gt;
Enter Selection (1-9,99,c,x,q,r) :&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Network Information=&lt;br /&gt;
==RTCM/VOTER Bandwidth==&lt;br /&gt;
Assuming ulaw... The RTCM will require approximately 80kbps of bandwidth for continual usage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Network Quality==&lt;br /&gt;
Your IP Network quality is important. You may wish to add a rule in your routers to prioritize traffic on UDP port 667 so that RTCM audio is given priority over other &lt;br /&gt;
traffic. Also see the [[#Debug Options]] below for notes on how to tag your packets with ToS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==RX/TX Buffers are NOT Both Millisecond Values== &lt;br /&gt;
You might assume an RX buffer (in voter.conf) of 120ms would be equivalent of a TX buffer (in the RTCM) of 120ms. That is not the case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The TX buffer is a number of 125 '''microsecond''' intervals, where the RX buffer is in milliseconds. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you follow the buffer setting instructions, you should be fine, in most cases. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Debug Options=&lt;br /&gt;
The VOTER/RTCM firmware supports some additional debugging information that can be turned on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
From the source code, the different Debug Options are listed as:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1 - Alt/Main Host change notifications&lt;br /&gt;
2 - Ignore HWlock (GGPS only)&lt;br /&gt;
4 - GPS/PPS Failure simulation (GGPS only)&lt;br /&gt;
8 - POCSAG H/W output disable (GGPS only)&lt;br /&gt;
16 - IP TOS Class for Ubiquiti&lt;br /&gt;
32 - GPS Debug&lt;br /&gt;
64 - Fix GPS 1 second off&lt;br /&gt;
128 - Fix GPS 1 month off (WTF,O??)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Not sure what they all do, but that is what they are. Here are the most common ones used:&lt;br /&gt;
*&amp;quot;Alt/Main Host change notifications&amp;quot; &lt;br /&gt;
**shows when the connection to the Asterisk server changes state.&lt;br /&gt;
*&amp;quot;IP TOS Class for Ubiquity&amp;quot; &lt;br /&gt;
**marks the IP headers from the RTCM/VOTER '''TO''' the network with ToS C0/DSCP 48 (UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS latency). Other sources show this as a Network Control TOS.) If you enable this, you also will want to have &amp;quot;utos=y&amp;quot; in your voter.conf to mark the packets from the network '''TO''' the RTCM/VOTER. We will probably change this option to mark the packets by default in a future version.&lt;br /&gt;
*&amp;quot;GPS Debug&amp;quot; &lt;br /&gt;
**will print NMEA or TSIP debug strings from the connected GPS.&lt;br /&gt;
*&amp;quot;Fix GPS 1 second off&amp;quot;&lt;br /&gt;
**this is for NMEA GPS '''only'''. It will add one second to the time.&lt;br /&gt;
*&amp;quot;Fix GPS 1 month off (WTF,O??)&amp;quot;&lt;br /&gt;
**this is for TSIP GPS '''only'''. It will effectively add a month to the date. The mktime function normally needs one month subtracted from the raw month it converts to a time/date string. Maybe there are some GPS out there that do that automatically? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The way this works is you add together the options you want to enable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Want to enable GPS Debug and IP ToS, set debug to 48.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just want to turn on GPS Debug, set debug to 32.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just want ToS turned on, set debug to 16.&lt;br /&gt;
&lt;br /&gt;
=Un-documented Menus/Features=&lt;br /&gt;
*Menu 96 - If firmware compiled with DUMPENCREGS enabled, Menu 96 looks like it dumps the registers from the ENC (Ethernet) chip?&lt;br /&gt;
&lt;br /&gt;
*Menu 111 - show the &amp;quot;hidden&amp;quot; option values (normally they should all be 0).&lt;br /&gt;
&lt;br /&gt;
*Menu 11780 - set the &amp;quot;Elkes&amp;quot; value. Developed for Pete Elkes, this is for solar type sites. It shuts off the Tx after a period of no Rx activity.&lt;br /&gt;
&lt;br /&gt;
*Menu 1103 - set the &amp;quot;Glaser&amp;quot; timer value? No idea what this does.&lt;br /&gt;
&lt;br /&gt;
*Menu 1170 - set &amp;quot;Sawyer Mode&amp;quot;. Developed for Tim Sawyer use on Yaesu VXR5000 repeater. It modifies de-ephasis behavior when on/off line. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Audio=&lt;br /&gt;
The RTCM/VOTER is totally flexible regarding emphasis. Although the way it is set is completely obscure. It tries to automatically do the right thing for you, which is great most of the time. But when it’s not, it's hard to know what is going on. &lt;br /&gt;
&lt;br /&gt;
If you are changing the COR Type settings, or nodeemp in voter.conf, make sure you save/reboot the RTCM/VOTER every time you make a change... changes are '''not''' effective until the RTCM/VOTER reboots!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Voting==&lt;br /&gt;
Before we get in to the different ways audio is routed, there is an important consideration you need to make if you are using the RTCM/VOTER for voting. &lt;br /&gt;
&lt;br /&gt;
The way the voting process works, it needs '''discriminator audio''' to determine the signal to noise level from each satellite receiver. As such, you will need to be feeding discriminator audio in to the RX audio pin, so that the hardware/software can vote properly. That means you also need to let the hardware/software do the squelch action.&lt;br /&gt;
&lt;br /&gt;
If you need RX CTCSS, you'll need to feed logic from an external CTCSS decoder in to the CTCSS input pin.&lt;br /&gt;
&lt;br /&gt;
Also, don't disable COR in the RTCM/VOTER... it will cause it to disable the squelch and it will report an RSSI of 255 (full quieting) for all received signals.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Receiver De-emphasis==&lt;br /&gt;
On the RX side the COR Type setting in the RTCM/VOTER determines whether the de-emphasis filter is used for RX audio. 0=Normal means the RTCM/VOTER squelch circuit is in use and it is expecting discriminator audio on the RX pin (to be able to do the squelch action), and therefore it '''will''' provide de-emphasis (audio is routed THROUGH the de-emphasis RC filter circuit) to the receiver audio. COR Type 1=IGNORE COR uses the CTCSS input pin for COR or CTCSS ''logic'' and it then expects de-emphasized receive (line) audio on the RX pin, and therefore will '''not''' provide de-emphasis to the received audio (the RC filter is switched '''out''' and audio passes straight through). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Most of the time, you do NOT need to override the automatic filter selection. However, if you do, and you are sure you have a good reason to, you CAN switch the de-emphasis filter '''out''' of the circuit so that audio passes straight through to the encoder. You would do this by setting the nodeemp=1 option in voter.conf. When you set nodeemp=1, the ''VOTER Protocol'' tells the RTCM/VOTER to switch the filter '''out''', so audio is passed straight through.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Transmitter Pre-emhpasis==&lt;br /&gt;
On the TX side, the RTCM/VOTER expects the repeater to accept ''mic audio''. In other words, the '''repeater''' is providing the pre-emphasis, not the RTCM/VOTER (you are '''not''' directly modulating the TX). This can be overridden by setting CTCSS tone in voter.conf. If a CTCSS tone is defined, the RTCM '''will''' provide pre-emphasis to the audio, and expects that you will be connecting to your repeater's flat audio input (direct modulation). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you don’t want TX CTCSS tone but '''do''' need pre-emphasis, set an arbitrary (any) CTCSS tone in voter.conf, and set the level to 0. This will force the RTCM/VOTER to pre-emphasize the audio it generates on the TX pin, but it won't actually mix in a CTCSS tone. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Level Setting==&lt;br /&gt;
Setting the audio levels for the RTCM/VOTER is pretty straight forward. Just follow these steps:&lt;br /&gt;
*Ensure you have a connection to your host Asterisk server/chan_voter instance&lt;br /&gt;
*Send a 1kHz@3kHz on-channel, full-quieting signal in to the repeater's RX&lt;br /&gt;
*Set the RX up so it reads 3kHz deviation on the RTCM's built in console meter&lt;br /&gt;
*Now set the TX level '''pot''' to get 3kHz out of the transmitter (No PL)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now change the modulation from 1kHz tone to 800Hz followed by 1.8kHz and verify that the deviation level doesn't change as the tone frequency changes. '''Changing levels indicates a pre/de-emphasis issue.''' You will want to read the above sections on how audio is handled, and figure out where your issue is.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If using PL you have to account for that deviation, unless you filter it out with your IFR (test set). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That's it!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Optionally, if you are using the built-in &amp;quot;offline repeat&amp;quot; functions, fail the connection to the host Asterisk server, and make sure your repeat audio performs the same as above.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Crappy Transmit Audio==&lt;br /&gt;
&lt;br /&gt;
Does your repeated audio sounded really bassy, muffled, and not very understandable? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There was a situation where, compared to a typical simplex radio-to-radio transmission, the audio through the repeater (RTCM and Asterisk) was unacceptable. What was discovered was that the RTCM has an internal pre-emphasis function that was disabled. The user had intentionally disabled &amp;quot;txctcss&amp;quot; and &amp;quot;txctcsslevel&amp;quot; in voter.conf because he didn't &lt;br /&gt;
want the RTCM transmitting CTCSS (the Quantar was doing that already). He ultimately found a post on the mail list explaining the settings above that said enabling txctcss = some valid tone (114.8 in his case) and setting txctcsslevel = 0 would turn on the pre-emphasis function in the RTCM without transmitting CTCSS tones. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
He did, and it worked like a charm! Audio now had more treble and was less bassy/muffled. So, future RTCM users, be sure not to comment out txctcss and txctcsslevel in voter.conf!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just enable and set the level to 0. You'll thank me later. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=GPS=&lt;br /&gt;
The RTCM/VOTER will work with most GPS available. It requires either NMEA or Trimble TSIP binary data. It only receives data '''from''' the GPS (GPS TX), it does not send anything '''to''' the GPS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The firmware is specifically written to talk to Trimble Thunderbolt receivers using Trimble's TSIP binary data interface, however, other Trimbles GPS receivers that talk TSIP are generally compatible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==NMEA Sentences==&lt;br /&gt;
If you are using an NMEA GPS (as opposed to a Trimble using the TSIP binary interface), the RTCM/VOTER is looking for the following NMEA sentences:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$GPGGA&lt;br /&gt;
$GPGSV&lt;br /&gt;
$GPRMC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Lock==&lt;br /&gt;
The GPS led will go solid regardless of the connection LED. That '''has''' to happen or it won't connect to the Asterisk server. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is not unusual for it to take up to 20 mins to get a GPS lock LED (ie. using a Trimble Thunderbolt) after any reboot. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS De-sense==&lt;br /&gt;
If you are having odd loss of lock issues, consider you may have interference to your GPS antenna from strong RF nearby. A note from Jesse Lloyd:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I also had crazy problems with poor signal on my GPS when I set it up sitting in a window, and once installed at site I had the GPS antenna maybe 6 ft from the VHF antenna, and after some troubleshooting found it was getting swamped with RF and loosing lock. &lt;br /&gt;
&lt;br /&gt;
I found the debug setting of 32 useful in the RTCM, you can see a hex output of the GPS status.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Issues==&lt;br /&gt;
===Trimble Thunderbolt===&lt;br /&gt;
You may find your Trimble Thunderbolt is showing the incorrect date at the moment. It could be showing the year as 1997. This is due to the date in the Thunderbolt being reported incorrectly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''This can cause some of your voting receivers to not connect, if they are used with other GPS in your system.''' If you have '''ALL''' Thunderbolts, or '''NO''' Thunderbolts, you are probably fine. If you have '''ALL''' Thunderbolts, the date/time is probably wrong, but they will ALL be wrong, so they will connect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GPS Time is a continuous counting time scale beginning at the January 5, 1980 to January 6, 1980 midnight. It is split into two parts: a time of week measured in seconds from midnight Sat/Sun and a week number. The time of week is transmitted in an unambiguous manner by the satellites, but only the bottom 10 bits of the week number are transmitted. This means that a receiver will see a week number count that goes up steadily until it reaches 1023 after which it will “roll over” back to zero, before steadily going up again. Such a week rollover will occur approx. every 20 years. The last week rollover occurred in 1999 and the next one will be in 2019.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Thunderbolt manual states:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The ThunderBolt adjusts for this week rollover by adding 1024 to any week number reported by GPS which is less than week number 936 which began on December 14, 1997. With this technique, the ThunderBolt will provide an accurate translation of GPS week number and TOW to time and date until July 30, 2017.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As such, the Trimble Thunderbolt has a firmware issue with the GPS Week rollover that manifested itself on July 30, 2017, causing the date to become incorrect. The Thunderbolt thinks the week changed from 935 to 936 (actual week 1959-1024=935), so it stopped adding 1024 to the week.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We have added a brute-force fix starting in RTCM/VOTER firmware &amp;gt;=1.51. This fix adds 619315200 seconds (1024 weeks) to the time reported by the GPS. It fixes the Thunderbolts, we have not done extensive testing to see how it affects other TSIP receivers.&lt;br /&gt;
&lt;br /&gt;
===Garmin===&lt;br /&gt;
====Garmin 18x LVC Wiring Issues====&lt;br /&gt;
If you have issues with your GPS 18x LVC not talking to the RTCM/VOTER, it may not be hooked up to the RTCM correctly. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Garmin pin labeling is backwards to what you may think. See below. You probably need to swap pins 6 and 14.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RTCM   	                 GPS 18x LVC      &lt;br /&gt;
6 GRX 	&amp;lt;-- Rx Data 	 6 Green  &lt;br /&gt;
7 GPPS 	&amp;lt;-- Pulse Output 1 Yellow  &lt;br /&gt;
8 GND   Ground 		 3 Black  &lt;br /&gt;
8 GND   Ground 		 5 Black  &lt;br /&gt;
13 +5V 	--&amp;gt;Vin 		 2 Red  &lt;br /&gt;
14 GTX 	--&amp;gt; TX Data 	 4 White&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log into the RTCM and do 98 and you should see something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Current Time: Sun  Apr 20, 2014  04:37:02.820&lt;br /&gt;
Last Rx Pkt System time: 04/20/2014 03:55:35.580, diff: 2487260 msec&lt;br /&gt;
Last Rx Pkt Timestamp time: 04/20/2014 03:55:32.064, diff: 3515 msec&lt;br /&gt;
Last Rx Pkt index: 160, inbounds: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Garmin and the RTCM====&lt;br /&gt;
Beware when buying newer Garmin GPS's to use with the Micro-Node RTCM.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The RTCM expects a 5V PPS signal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Newer Garmin's (GPS 18X, 18X LVC, etc.) MAY NOT output 5V, and can cause issues. '''Check the Garmin datasheet'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER is designed to accept both 3.3V or 5V signals, and ''should'' work fine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==No GPS/Mixed Mode==&lt;br /&gt;
You do not need a timing source to use an RTCM if you don’t want to vote. That’s called Mix Mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Having the PPS Polarity set to 2 tells the RTCM you do not have a GPS. That forces the RTCM to become a mix (non-voting) client. Turn it on, save it, and restart. A simple voter.conf would look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[general]&lt;br /&gt;
port = 667&lt;br /&gt;
password = BLAH&lt;br /&gt;
&lt;br /&gt;
[1000]&lt;br /&gt;
Site1 = pswrd1,master,transmit&lt;br /&gt;
Site2 = pswrd2,transmit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mixed Client Error==&lt;br /&gt;
&amp;quot;I am getting this error in Asterisk&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WARNING[2368]: chan_voter.c:4511 voter_reader: Voter client master timing source mobile1 attempting to authenticate as mix client!!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A mixed client error means the voter.conf file is expecting an RTCM to try and connect with a GPS IP packet (ie. has '''master''' in it in voter.conf), but the RTCM isn't &lt;br /&gt;
sending a GPS IP packet. So its a mismatch between voter.conf and Option 10 in the RTCM. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to use a mix client (non-voted), make sure that receiver's configuration line in voter.conf '''does not''' have the '''master''' option set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Debug==&lt;br /&gt;
To turn on GPS Debugging, set the Debug Option Level in the RTCM/VOTER to 32.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [[#Debug Options]] levels for more information on how this works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Trimble Debug Status Decoding==&lt;br /&gt;
The VOTER/RTCM when in TSIP mode (Trimble), assumes it is a Trimble Thunderbolt and is looking for two packets:&lt;br /&gt;
*0x8F-AB - Primary Timing Packet&lt;br /&gt;
*0x8F-AC - Supplemental Timing Packet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Grab a copy of the Thunderbolt User Guide: http://leapsecond.com/pages/tbolt/Thunderbolt-2012-02.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pages 78-83 are the important ones.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Packet 0x8F-AB is what grabs the timing information, and packet 0x8F-AC is what it looks at for everything else (including debug).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The debug string that the VOTER/RTCM reports:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	printf(&amp;quot;GPS-DEBUG: TSIP: ok %d, 9 - 14: %02x %02x %02x %02x %02x %02x\n&amp;quot;,&lt;br /&gt;
					happy,gps_buf[9],gps_buf[10],gps_buf[11],gps_buf[12],gps_buf[13],gps_buf[14]);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, the 1 after ok is the &amp;quot;happy gps&amp;quot; flag. The other 5 bytes are supposed to be bytes 9-14 from the packet... sort of. They are bytes 9-14 of the buffer, but they are actually bytes 8-13 of the binary message.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Looking at the message structure, bytes 8-13 are:&lt;br /&gt;
*8-9 Critical Alarms&lt;br /&gt;
*10-11 Minor Alarms&lt;br /&gt;
*12 GPS Decoding Status&lt;br /&gt;
*13 Disciplining Activity&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Therefore, the messages you are seeing break down as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GPS-DEBUG: TSIP: ok 1, 9 - 14: 00 00 00 00 00 00 - everything is good in the 'hood, Doing Fixes, Phase Locking&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 18 08 06 - not happy, Not Tracking Satellites, Not Disciplining Oscillator (0x18 --&amp;gt; 0b000000011000), No Usable Sats, Inactive&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 08 08 05 - not happy, Not Tracking Satellites, No Useable Sats, Compensating OXCO (holdover)&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 00 00 05 - not happy, Compensating OXCO (holdover)&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 1, 9 - 14: 00 00 00 00 00 08 - happy, Recovery Mode&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 00 00 04 - not happy, Initializing Loop Filter&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The GPS is flagged as NOT HAPPY in TSIP mode if ANY of the following are TRUE:&lt;br /&gt;
*If GPS Decoding Status is anything other than &amp;quot;Doing Fixes&amp;quot;.&lt;br /&gt;
*If Disciplining Activity is not Phase Locking or Recovery Mode.&lt;br /&gt;
*Any Critical Alarms.&lt;br /&gt;
*Any Minor Alarms.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ubiquity ToS=&lt;br /&gt;
See https://help.ubnt.com/hc/en-us/articles/205231750-airMAX-How-is-QoS-and-prioritization-handled-by-airMAX-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, if we set ToS/DSCP in the header to C0, then Ubiquity (and other gear watching ToS) ''should'' prioritize the packets. This sets the DSCP to 110 000 aka 48. UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS latency). Other sources show this as a Network Control TOS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is an option in voter.conf to turn this on (utos=y). However, this only controls packets being sent from Asterisk '''TO''' the RTCM. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to tag packets from the RTCM '''TO''' Asterisk, you need to set the RTCM debug option level to 16 (see [[#Debug Options]] for how this works).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At some point we should probably change the default behaviour of the RTCM firmware to mark the packets and use the debug setting to '''disable''' ToS. That change (if you wanted to compile your own firmware) would be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Change line 90 in IP.c&lt;br /&gt;
&lt;br /&gt;
From:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? 0xc0 : (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY))&lt;br /&gt;
&lt;br /&gt;
To:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY) : 0xc0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This changes the conditional expression from if the debug level is 16 to mark the packets with DSCP 48 to if the debug level is 16, mark the packets routine (DSCP 0).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM Simulcasting=&lt;br /&gt;
The RTCM/VOTER boards do support simulcasting, however, there are a bunch of quirks that one needs to be aware of.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Radio Hardware==&lt;br /&gt;
For best results, you should use all identical RF equipment between your voting RX sites and simulcast TX sites. If you don't, you can end up with strange audio artifacts when different receivers are used, and other strange audio issues when different transmitters are used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==9.6MHz Oscillator==&lt;br /&gt;
If you want reliable simulcast with an acceptable level of overlap warble, you MUST inject a GPS-disciplined or OXCO 9.6MHz signal to the clock of the RTCM's, in lieu of their stock internal crystal. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Otherwise, the inherent internal clock jitter of the RTCM's will cause CTCSS warble, etc. in areas where your transmitters overlap. The 1 PPS feed that you normally feed the RTCM's is acceptable for voting, but naturally, a typical crystal-driven clock will slightly drift in between the pulses every second due to inherent jitter, etc., and that ain't to good for situations like simulcast which demand sample-accurate performance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are some comments from Joe, KC2IRV, on the subject. He has also created his own wiki, specific to simulcast issues, you can find it at: http://rtcmsimulcast.wikifoundry.com/ &lt;br /&gt;
&lt;br /&gt;
:I felt I needed to let those on this mailing list know my findings with simulcasting with the RTCM units since I have received a great deal of help and information from people on this list.&lt;br /&gt;
&lt;br /&gt;
:For the past week I have had a two (2) site simulcast system up and running on UHF using the RTCM units. I have done a great deal of testing and proving on the bench and it is so far working beautifully. &lt;br /&gt;
&lt;br /&gt;
:The one issue that was made apparent to me early on was that in order for the RTCM's to be suitable for simulcast, the processor inside it needed to be clocked to a more accurate source. This source is supposed to be the Programmable Clock Generator Module in order to produce a GPS locked 9.6 MHz reference for the processor. Unfortunately this unit is not currently available.&lt;br /&gt;
&lt;br /&gt;
:Knowing this, I started to go down the road of possibly designing my own, but stumbled upon a cheap, plentiful supply of Symmetricom 9.6 MHz sinewave OCXO's. I took a chance and ordered a few to experiment with to see if the RTCM would be able to use this in place of the supplied crystal for a clock. I found they did, with that I decided to modify the RTCM with an SMA connector just above the audio adjustment pots and use this OCXO. I trimmed the frequency on the units to match each other and used them to produce the processor clock.&lt;br /&gt;
&lt;br /&gt;
:After a week of testing, I have found the results in the overlap areas to be exactly as I would expect them on a public safety/commercial simulcast system. While in an overlap region where both transmitters are within 3dB of one another, to the ear you hear no audio phase wandering. Of course , this has only been a week of testing so I wouldn't call it case closed yet.&lt;br /&gt;
&lt;br /&gt;
:I will say that if this system remains this way after testing for 6 months to a year than using a 9.6 MHz OXCO is a viable alternative to achieve the needed precision and accuracy needed for the processor clock to make it suitable for simulcast.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Comments from Jim Dixon on the issue:&lt;br /&gt;
&lt;br /&gt;
:You have to use '''something''' that will take the precise 10MHz (or whatever it is) from the GPSDO and PLL (phase-locked) convert it to 9.6MHz (square wave at 3.3V for the CPU clock).&lt;br /&gt;
&lt;br /&gt;
:We had to use 9.6MHz mainly because of the DAC in the dsPIC instead of 10MHz. The options for various divide/clock radios in the part are RATHER limited. As I recall, there wasn't even a way of getting the necessary 16kb/s sample rate on the ADC from 10MHZ, either.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Micro-Node RTCM Clock Issue=&lt;br /&gt;
James, KI0KN, had some strange-ness with some of his RTCM's when used for voting. As soon as he changed menu item 10 on the RTCM to either a (1) or a (0) instead of (2), he '''instantly''' got this on the RTCM console:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
04/05/2016 18:44:13.660  Lost GPS Time synchronization&lt;br /&gt;
04/05/2016 18:44:13.660  Host Connection Lost (Pri) (10.16.1.240)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And it sits there forever and never re-establishes connection to the host. The issue was finally traced to a bad batch of 9.6MHz crystals that affected a small run of the RTCM's. The issue was eventually resolved by Micro-Node, but we'll document it here just for record keeping.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
James comments to the list:&lt;br /&gt;
&lt;br /&gt;
:Well, after many of you offered your time and thoughts on my voter problem, Jim, WB6NIL, graciously donated a couple of hours of his time to remotely help me and he uncovered the problem.&lt;br /&gt;
&lt;br /&gt;
:All 5 of my RTCMs were purchased within the last 6 months, and I suspect all 5 have the same problem (will verify that today). The problem is that the microprocessor crystal is running too fast! There is 9.6Mhz crystal that drives the MPU, on the particular unit that Jim helped me diagnose, it's running 2.5 khz too fast.  &lt;br /&gt;
&lt;br /&gt;
:There is a sanity check in the firmware that makes sure the correct number of samples were taken in the last second (it's supposed to be 8000) and fails if the sample is incorrectly sized (mine is taking 8003 samples).  Jim helped adjust the code to be more tolerant of the sampling error and my whole system instantly worked.&lt;br /&gt;
&lt;br /&gt;
:I have since tested it with ALL my GPSs (they all work great!). So I now have everything working, including the voting.&lt;br /&gt;
&lt;br /&gt;
:I haven't contact Micro-Node about it yet. Jim told me that voting should work fine but this clock error would probably not be acceptable for Simulcast (something we have no plans on doing as of now). Since mine are deployed at mountain top sites, I'll probably pursue a crystal that is running at the correct frequency and use &amp;quot;standard&amp;quot; firmware so that if the decision is ever made to play with simulcast, I won't be right back in this same boat.&lt;br /&gt;
&lt;br /&gt;
:Thanks to all that helped out, and a HUGE thanks to Jim for taking the time to troubleshoot this.&lt;br /&gt;
&lt;br /&gt;
:BTW- This clock error will NOT effect the RTCM in mix client mode, it only affects it in voting or simulcast mode!&lt;br /&gt;
&lt;br /&gt;
:In voter.c, the stock line is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if ((samplecnt &amp;gt;= 7999) &amp;amp;&amp;amp; (samplecnt &amp;lt;= 8001))&lt;br /&gt;
&lt;br /&gt;
it needs to be changed to something like:&lt;br /&gt;
&lt;br /&gt;
if ((samplecnt &amp;gt;= 7999) &amp;amp;&amp;amp; (samplecnt &amp;lt;= 8003 ))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:That was just enough to make my first RTCM work. I've had a chance now to check a few more of my RTCMs on the bench this morning and the crystal frequencies are kind of all over.  The next one I had on the bench was 5.2Khz fast. The above code was still not enough to fix it (as would be expected) so it looks like the quality control on whatever manufacturer that crystal is, isn't very good (or a low tolerance crystal is being used). I am going to pursue crystal replacement to get a highly accurate, stable, on-frequency crystal in there as my first choice. Changing the firmware 5 different times doesn't seem like the right answer.&lt;br /&gt;
&lt;br /&gt;
:Jim put that sanity check in there for a reason. Working around it '''may''' allow the device to work, but to me, it seems getting the hardware operating the way it was supposed to originally is the better answer. I will follow up with Micro-node and let you all know how it goes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After following up with Micro-Node:&lt;br /&gt;
:They were all off, some were off a LOT. I talked to Mark @ Micronode. He told me there were 25 units that made it out the door with a crystal from an unapproved source and that was quite likely the reason for the problem. He gladly sent me 5 new crystals to replace (he offered to replace them himself if I sent the units in, but I am comfortable doing it myself to save the time and postage). &lt;br /&gt;
&lt;br /&gt;
:I haven't received them in the mail yet to show that the problem is fixed, but I will post here when that happens. He was great to work with and had no issue getting things set straight. If you are having the same issue and your RTCMs were bought about the same time, I'd suggest you contact him and have him help you resolve the issue!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Duplex Mode 3=&lt;br /&gt;
Does delayed repeat audio bug you? Tired of hearing a bit of yourself after you unkey? Wish you could talk full duplex? Hate the echo chamber effect? Then we have the answer for you.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Duplex Mode 3 in app_rpt allows for &amp;quot;in-cabinet repeat&amp;quot; (where the radio hardware provides repeat audio) and app_rpt adds the hang time, courtesy tones, linking - all the &lt;br /&gt;
things apt_rpt does sans repeat audio. Therefore no repeat audio delay. Cool, eh? This duplex mode has been in app_rpt for a while. Problem has been how to implement it in the RTCM environment. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Duplex Mode 3 support in the RTCM provides in-cabinet repeat functionality. Repeat audio loops through the RTCM and has almost zero delay because it does not have to traverse the network. The delay is not quite zero but it's plenty short enough to eliminate all of the above mentioned annoyances. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Of course Duplex Mode 3 support can't be used with voting or simulcast. You also loose Touch Tone muting, Time Out Timer and Repeater Disable functions because the repeat path is not through app_rpt.&lt;/div&gt;</summary>
		<author><name>Ve7fet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=48</id>
		<title>RTCM Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=48"/>
		<updated>2017-08-11T16:11:06Z</updated>

		<summary type="html">&lt;p&gt;Ve7fet: /* Trimble Thunderbolt */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Micro-Node RTCM and VOTER interfaces are typically used with AllStar in voting/simulcast applications. They MAY be used for ANY repeater interface application, through the chan/voter channel driver. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER is the original through-hole board designed by Jim Dixon for this application. It is open-source, and the relevant Gerber files and BoM to build it are available. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The [http://www.micro-node.com/thin-m1.shtml Micro-Node Radio Thin Client Module (RTCM)] is the commercial version of the VOTER. It uses surface mount parts (SMT), but is functionally equivalent to the original VOTER. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In general, the two terms (RTCM/VOTER) are used interchangeably, as they operate the same, and use the same firmware (mostly, see below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This page will highlight some of the operational concerns, quirks, bugs, and other items of interest that relate to these interfaces. Much of the information has been gleaned off the AllStar mail list, comes from personal experience, or comes from notes in the firmware source code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Firmware=&lt;br /&gt;
The firmware in the RTCM and VOTER is the same, except it is compiled for the specific dsPIC that is installed in each. As such, the firmware is specific to the VOTER or the RTCM, and is NOT interchangeable (it won't boot in the wrong device). Firmware for the RTCM is denoted by &amp;quot;smt&amp;quot; in the filename.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are '''two parts''' to the firmware, a bootloader, and then the actual firmware file. The bootloader starts when power is applied, and allows you to talk to the dsPIC and load new firmware files over ethernet. If the bootloader is not intercepted by the loading tool, it will continue to boot the current firmware file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All new boards will need to have the bootloader installed first, followed by a firmware file. You '''can''' load a firmware file directly (.hex) in to the dsPIC, but then you will not have any of the bootloader remote loading features.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The current bootloader (.cof file) is available here: https://github.com/AllStarLink/voter/tree/master/voter-bootloader (the -smt file is for the RTCM). It needs to be loaded with a PICKit programmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Current firmware (.cry file) is available here: https://github.com/AllStarLink/voter/tree/master/board-firmware . They are loaded with the EBLEX C30 Programmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are multiple &amp;quot;flavors&amp;quot; of firmware available. See below for further explanation of what all the options mean.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The DSPBEW versions have Jim's DSP/BEW feature enabled. Note that due to the size of this feature, the diagnostics menu is NOT available in this version.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CHUCK versions have Chuck Henderson's RSSI and Squelch modifications enabled. This is probably the version that most user's will want to use in production.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Compiling Environment==&lt;br /&gt;
If you look in the [https://github.com/AllStarLink/voter/blob/master/votersystem.pdf votersystem.pdf], you will find a procedure to modify and load the bootloader in to the dsPIC of a VOTER board. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Unfortunately, there is an important step '''missing''' in that procedure, which is covered below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In addition, the old links for the MPLAB software are dead, so let's update this info and get you going.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Currently (Feb 2017), you can get the required software from:&lt;br /&gt;
:http://www.microchip.com/development-tools/downloads-archive&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download MPLAB IDE 32-bit Windows v8.66:&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_IDE_v8_66.zip&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/MPLAB_IDE_v8_66.zip&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download MPLAB C Compiler for PIC24 and dsPIC DSCs v3.31 '''NOT v.3.25''':&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Optionally, install Windows Virtual PC and XP Mode. This is getting to be pretty old software, so running it under XP Mode may be a good idea, so we can keep it isolated (install it in a virtual machine). It does run fine in Windows 7.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To setup the compile/build environment, follow these steps:&lt;br /&gt;
*Run the MPLAB IDE installer. You don't need to install the HI-TECH C Compiler at the end (click no)&lt;br /&gt;
*Run the MPLAB C Compiler installer&lt;br /&gt;
*Select Legacy Directory Name&lt;br /&gt;
*'''Select Lite Compiler'''&lt;br /&gt;
*Go to: https://github.com/AllStarLink&lt;br /&gt;
*Follow the links to: voter --&amp;gt; Clone or Download --&amp;gt; Download Zip. That will get you voter-master.zip which is a download of the whole VOTER tree from GitHub.&lt;br /&gt;
*Extract it somewhere (ie. in the XP Mode Virtual PC)&lt;br /&gt;
*Launch the MPLAB IDE&lt;br /&gt;
*Go to Configure --&amp;gt; Settings --&amp;gt; Projects and de-select one-to-one project mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bootloader==&lt;br /&gt;
If you need to load the bootloader in to a fresh board, you will need to follow these steps:&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; voter-bootloader.mcp --&amp;gt; Open (it is in the voter-bootloader folder of the GitHub source)&lt;br /&gt;
*Go to File --&amp;gt; Import --&amp;gt; voter-bootloader --&amp;gt; ENC_C30.cof --&amp;gt; Open '''This step is missing from the original procedure.'''&lt;br /&gt;
*Remove JP7 on the VOTER Board. This is necessary to allow programming by the PICKit2/PICKit3 device.&lt;br /&gt;
*Attach the PICKIT2/PICKit3 device to J1 on the VOTER board. Note that Pin 1 is closest to the power supply modules (as indicated on the board).&lt;br /&gt;
*If you have not already selected a programming device, go to Programmer --&amp;gt; Select Device and choose PICKit3 (or PICKit2, depending on what you are using).&lt;br /&gt;
*Go to Programmer --&amp;gt; Program. This will program the bootloader firmware into the PIC device on the board.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to change the default IP address from 192.168.1.11 in the bootloader:&lt;br /&gt;
*Select View --&amp;gt; Program Memory (from the top menu bar)&lt;br /&gt;
*Hit Control-F (to &amp;quot;find&amp;quot;) and search for the digits &amp;quot;00A8C0&amp;quot;.&lt;br /&gt;
*These should be found at memory address &amp;quot;03018&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;A8C0&amp;quot; at 03018 represents the hex digits C0 (192) and A8 (168) which are the first two octets of the IP address. The six digits to enter are 00 then the SECOND octet of the IP address in hex then the FIRST octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;0B01&amp;quot; at 0301A represents the hex digits 0B (11) and 01 (1) which are the second two octets of the IP address. The six digits to enter are 00 then the FOURTH octet of the IP address in hex then the THIRD octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you have modified the address to your desired IP, follow the programming procedure (above).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Firmware==&lt;br /&gt;
To compile the firmware (if you want to make custom changes):&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; navigate to board-firmware and open the .mcp file for the flavor of firmware you want to compile. They are in the board-firmware folder of the GitHub source.&lt;br /&gt;
*'''NOTE''': the .mcp files with the &amp;quot;smt&amp;quot; suffix are for the RTCM (built with SMT parts). The non-smt files are for the ORIGINAL through-hole VOTER boards. The difference is that the VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
*Go to Project --&amp;gt; Build Configuration and select &amp;quot;Release&amp;quot;. This may not be necessary (I don't believe that option is used in the firmware), but it removes the compiler option of __DEBUG being passed, so theoretically it would build &amp;quot;normal&amp;quot; firmware.&lt;br /&gt;
*Go to Configure --&amp;gt; Select Device and choose the appropriate device for your board from the Device list. If you don't select the right one, the board will not boot. Select dsPIC33FJ128GP802 for the VOTER, and dsPIC33FJ128GP804 for the RTCM.&lt;br /&gt;
*Now, if you go to Project --&amp;gt; Build All it should compile everything and show you &amp;quot;Build Succeeded&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A .cry file should be in the board-firmware folder. You can load this with the ENC Loader.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is also a .hex file in there that you could load with a programmer... but that would wipe the bootloader... so don't do that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Chuck Squelch==&lt;br /&gt;
If you want to enable &amp;quot;Chuck Squelch&amp;quot;, open the HardwareProfile.h and un-comment #define CHUCK. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may also want to go down to Line 291 in Voter.c (right click on the window, go to Properties --&amp;gt; &amp;quot;C&amp;quot; File Types --&amp;gt; Line Numbers) and tack on CHUCK after 1.60 (the current version number) so that when you load this firmware, the version will be shown as 1.51CHUCK, and you'll know that Chuck Squelch is compiled in. We should probably make that more automagic in the future...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==DSP/BEW==&lt;br /&gt;
If you want to compile the DSPBEW version, open the DSPBEW project file instead.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DSP/BEW Firmware Version=&lt;br /&gt;
DSP BEW Firmware is mutually exclusive with the diagnostic menu. There is not enough space for both, if you load the DSP/BEW firmware, you will '''NOT''' have a diag menu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BEW stands for Baseband Examination Window.&lt;br /&gt;
&lt;br /&gt;
Typically, the discriminator of an FM communications receiver produces results containing audio spectrum from the &amp;quot;sub-audible&amp;quot; range (typically &amp;lt; 100 Hz) to well above frequencies able to be produced by modulating audio. These higher frequencies can be utilized to determine signal quality, since they can only contain noise (or no noise, if a sufficiently strong signal is present).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For receivers (such as the Motorola Quantar, etc) that do not provide sufficient spectral content at these &amp;quot;noise&amp;quot; frequencies (for various reasons), The &amp;quot;DSP/BEW (Digital Signal Processor / Baseband Examination Window)&amp;quot; feature of the RTCM firmware may be utilized. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These receivers are perfectly capable of providing valid &amp;quot;noise&amp;quot; signal with no modulation on the input of the receiver, but with strong modulation (high frequency audio and high deviation), it severely interferes with proper analysis of signal strength.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This feature provides a means by which a &amp;quot;Window&amp;quot; of baseband (normal audio range) signal is examined by a DSP and a determination of whether or not sufficient audio is present to cause interference of proper signal strength is made. During the VERY brief periods of time when it is determined that sufficient audio is present to cause interference, the signal strength value is &amp;quot;held&amp;quot; (the last valid value previous to the time of interference) until such time that the interfering audio is no longer present.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The DSP/BEW feature is selectable, and '''should not''' be used for a receiver that does not need it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A note on the Motorola SLR5700 per VE7FET. DSP/BEW definitely makes a difference on what AllMon reports for the signal strength of received signals. It is less reactive when DSP/BEW = 1 than with it set to 0. We'll have to see what the real world trials show. It might be better to leave it off.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Chuck Squelch=&lt;br /&gt;
&amp;quot;Chuck Squelch&amp;quot; are a couple firmware changes made by Chuck Henderson, WB9UUS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pre-compiled firmware versions including this option are available on [https://github.com/AllStarLink/voter/tree/master/board-firmware GitHub]. See above on how it is enabled/compiled, if you are rolling your own firmware modifications.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
One of the changes fixes an issue with weak signals producing RSSI readings all over the place. It is caused by a 16 bit value that was overflowing (it is the RSSI change in the firmware). It results in rock-solid RSSI values being reported, even on barely or non-readable signals. '''This change will likely be rolled in to a permanent fix in a future firmware release.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The other firmware change changes how the squelch responds (looks at the noise in the last two audio samples) and makes the &amp;quot;Micor squelch&amp;quot; action work better.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may also want to consider the following changes in /etc/asterisk/voter.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;Comment out:&lt;br /&gt;
;thresholds =&lt;br /&gt;
&lt;br /&gt;
;and set:&lt;br /&gt;
linger = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Squelch Issues==&lt;br /&gt;
*If anyone is off frequency a little bit, that will make the voice talk off worse. Double check that the repeater and the users are all on frequency.&lt;br /&gt;
*Don't use narrow bandwidth on the repeater receiver. &lt;br /&gt;
*Make sure that the discriminator audio is not rolled off even a little bit at the high end. There should not be resistors in series or capacitors to ground between the discriminator chip output pin and the voter board input, for best results.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM/VOTER LED's=&lt;br /&gt;
RX LED on the RTCM/VOTER will flash (same rate as ACT LED) if you have External CTCSS enabled, and the received signal has the wrong (or no) valid PL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Network Information=&lt;br /&gt;
==RTCM/VOTER Bandwidth==&lt;br /&gt;
Assuming ulaw... The RTCM will require approximately 80kbps of bandwidth for continual usage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Network Quality==&lt;br /&gt;
Your IP Network quality is important. You may wish to add a rule in your routers to prioritize traffic on UDP port 667 so that RTCM audio is given priority over other &lt;br /&gt;
traffic. Also see the [[#Debug Options]] below for notes on how to tag your packets with ToS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==RX/TX Buffers are NOT Both Millisecond Values== &lt;br /&gt;
You might assume an RX buffer (in voter.conf) of 120ms would be equivalent of a TX buffer (in the RTCM) of 120ms. That is not the case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The TX buffer is a number of 125 '''microsecond''' intervals, where the RX buffer is in milliseconds. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you follow the buffer setting instructions, you should be fine, in most cases. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Debug Options=&lt;br /&gt;
The VOTER/RTCM firmware supports some additional debugging information that can be turned on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
From the source code, the different Debug Options are listed as:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1 - Alt/Main Host change notifications&lt;br /&gt;
2 - Ignore HWlock (GGPS only)&lt;br /&gt;
4 - GPS/PPS Failure simulation (GGPS only)&lt;br /&gt;
8 - POCSAG H/W output disable (GGPS only)&lt;br /&gt;
16 - IP TOS Class for Ubiquiti&lt;br /&gt;
32 - GPS Debug&lt;br /&gt;
64 - Fix GPS 1 second off&lt;br /&gt;
128 - Fix GPS 1 month off (WTF,O??)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Not sure what they all do, but that is what they are. Here are the most common ones used:&lt;br /&gt;
*&amp;quot;Alt/Main Host change notifications&amp;quot; &lt;br /&gt;
**shows when the connection to the Asterisk server changes state.&lt;br /&gt;
*&amp;quot;IP TOS Class for Ubiquity&amp;quot; &lt;br /&gt;
**marks the IP headers from the RTCM/VOTER '''TO''' the network with ToS C0/DSCP 48 (UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS latency). Other sources show this as a Network Control TOS.) If you enable this, you also will want to have &amp;quot;utos=y&amp;quot; in your voter.conf to mark the packets from the network '''TO''' the RTCM/VOTER. We will probably change this option to mark the packets by default in a future version.&lt;br /&gt;
*&amp;quot;GPS Debug&amp;quot; &lt;br /&gt;
**will print NMEA or TSIP debug strings from the connected GPS.&lt;br /&gt;
*&amp;quot;Fix GPS 1 second off&amp;quot;&lt;br /&gt;
**this is for NMEA GPS '''only'''. It will add one second to the time.&lt;br /&gt;
*&amp;quot;Fix GPS 1 month off (WTF,O??)&amp;quot;&lt;br /&gt;
**this is for TSIP GPS '''only'''. It will effectively add a month to the date. The mktime function normally needs one month subtracted from the raw month it converts to a time/date string. Maybe there are some GPS out there that do that automatically? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The way this works is you add together the options you want to enable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Want to enable GPS Debug and IP ToS, set debug to 48.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just want to turn on GPS Debug, set debug to 32.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just want ToS turned on, set debug to 16.&lt;br /&gt;
&lt;br /&gt;
=Un-documented Menus/Features=&lt;br /&gt;
*Menu 96 - If firmware compiled with DUMPENCREGS enabled, Menu 96 looks like it dumps the registers from the ENC (Ethernet) chip?&lt;br /&gt;
&lt;br /&gt;
*Menu 111 - show the &amp;quot;hidden&amp;quot; option values (normally they should all be 0).&lt;br /&gt;
&lt;br /&gt;
*Menu 11780 - set the &amp;quot;Elkes&amp;quot; value? No idea what this does.&lt;br /&gt;
&lt;br /&gt;
*Menu 1103 - set the &amp;quot;Glaser&amp;quot; timer value? No idea what this does.&lt;br /&gt;
&lt;br /&gt;
*Menu 1170 - set &amp;quot;Sawyer Mode&amp;quot;. No idea what this does, it was a modification Jim made for Tim Sawyer, but Tim doesn't recall what it was for. :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Audio=&lt;br /&gt;
The RTCM/VOTER is totally flexible regarding emphasis. Although the way it is set is completely obscure. It tries to automatically do the right thing for you, which is great most of the time. But when it’s not, it's hard to know what is going on. &lt;br /&gt;
&lt;br /&gt;
If you are changing the COR Type settings, or nodeemp in voter.conf, make sure you save/reboot the RTCM/VOTER every time you make a change... changes are '''not''' effective until the RTCM/VOTER reboots!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Voting==&lt;br /&gt;
Before we get in to the different ways audio is routed, there is an important consideration you need to make if you are using the RTCM/VOTER for voting. &lt;br /&gt;
&lt;br /&gt;
The way the voting process works, it needs '''discriminator audio''' to determine the signal to noise level from each satellite receiver. As such, you will need to be feeding discriminator audio in to the RX audio pin, so that the hardware/software can vote properly. That means you also need to let the hardware/software do the squelch action.&lt;br /&gt;
&lt;br /&gt;
If you need RX CTCSS, you'll need to feed logic from an external CTCSS decoder in to the CTCSS input pin.&lt;br /&gt;
&lt;br /&gt;
Also, don't disable COR in the RTCM/VOTER... it will cause it to disable the squelch and it will report an RSSI of 255 (full quieting) for all received signals.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Receiver De-emphasis==&lt;br /&gt;
On the RX side the COR Type setting in the RTCM/VOTER determines whether the de-emphasis filter is used for RX audio. 0=Normal means the RTCM/VOTER squelch circuit is in use and it is expecting discriminator audio on the RX pin (to be able to do the squelch action), and therefore it '''will''' provide de-emphasis (audio is routed THROUGH the de-emphasis RC filter circuit) to the receiver audio. COR Type 1=IGNORE COR uses the CTCSS input pin for COR or CTCSS ''logic'' and it then expects de-emphasized receive (line) audio on the RX pin, and therefore will '''not''' provide de-emphasis to the received audio (the RC filter is switched '''out''' and audio passes straight through). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Most of the time, you do NOT need to override the automatic filter selection. However, if you do, and you are sure you have a good reason to, you CAN switch the de-emphasis filter '''out''' of the circuit so that audio passes straight through to the encoder. You would do this by setting the nodeemp=1 option in voter.conf. When you set nodeemp=1, the ''VOTER Protocol'' tells the RTCM/VOTER to switch the filter '''out''', so audio is passed straight through.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Transmitter Pre-emhpasis==&lt;br /&gt;
On the TX side, the RTCM/VOTER expects the repeater to accept ''mic audio''. In other words, the '''repeater''' is providing the pre-emphasis, not the RTCM/VOTER (you are '''not''' directly modulating the TX). This can be overridden by setting CTCSS tone in voter.conf. If a CTCSS tone is defined, the RTCM '''will''' provide pre-emphasis to the audio, and expects that you will be connecting to your repeater's flat audio input (direct modulation). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you don’t want TX CTCSS tone but '''do''' need pre-emphasis, set an arbitrary (any) CTCSS tone in voter.conf, and set the level to 0. This will force the RTCM/VOTER to pre-emphasize the audio it generates on the TX pin, but it won't actually mix in a CTCSS tone. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Level Setting==&lt;br /&gt;
Setting the audio levels for the RTCM/VOTER is pretty straight forward. Just follow these steps:&lt;br /&gt;
*Ensure you have a connection to your host Asterisk server/chan_voter instance&lt;br /&gt;
*Send a 1kHz@3kHz on-channel, full-quieting signal in to the repeater's RX&lt;br /&gt;
*Set the RX up so it reads 3kHz deviation on the RTCM's built in console meter&lt;br /&gt;
*Now set the TX level '''pot''' to get 3kHz out of the transmitter (No PL)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now change the modulation from 1kHz tone to 800Hz followed by 1.8kHz and verify that the deviation level doesn't change as the tone frequency changes. '''Changing levels indicates a pre/de-emphasis issue.''' You will want to read the above sections on how audio is handled, and figure out where your issue is.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If using PL you have to account for that deviation, unless you filter it out with your IFR (test set). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That's it!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Optionally, if you are using the built-in &amp;quot;offline repeat&amp;quot; functions, fail the connection to the host Asterisk server, and make sure your repeat audio performs the same as above.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Crappy Transmit Audio==&lt;br /&gt;
&lt;br /&gt;
Does your repeated audio sounded really bassy, muffled, and not very understandable? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There was a situation where, compared to a typical simplex radio-to-radio transmission, the audio through the repeater (RTCM and Asterisk) was unacceptable. What was discovered was that the RTCM has an internal pre-emphasis function that was disabled. The user had intentionally disabled &amp;quot;txctcss&amp;quot; and &amp;quot;txctcsslevel&amp;quot; in voter.conf because he didn't &lt;br /&gt;
want the RTCM transmitting CTCSS (the Quantar was doing that already). He ultimately found a post on the mail list explaining the settings above that said enabling txctcss = some valid tone (114.8 in his case) and setting txctcsslevel = 0 would turn on the pre-emphasis function in the RTCM without transmitting CTCSS tones. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
He did, and it worked like a charm! Audio now had more treble and was less bassy/muffled. So, future RTCM users, be sure not to comment out txctcss and txctcsslevel in voter.conf!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just enable and set the level to 0. You'll thank me later. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=GPS=&lt;br /&gt;
The RTCM/VOTER will work with most GPS available. It requires either NMEA or Trimble TSIP binary data. It only receives data '''from''' the GPS (GPS TX), it does not send anything '''to''' the GPS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The firmware is specifically written to talk to Trimble Thunderbolt receivers using Trimble's TSIP binary data interface, however, other Trimbles GPS receivers that talk TSIP are generally compatible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==NMEA Sentences==&lt;br /&gt;
If you are using an NMEA GPS (as opposed to a Trimble using the TSIP binary interface), the RTCM/VOTER is looking for the following NMEA sentences:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$GPGGA&lt;br /&gt;
$GPGSV&lt;br /&gt;
$GPRMC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Lock==&lt;br /&gt;
The GPS led will go solid regardless of the connection LED. That '''has''' to happen or it won't connect to the Asterisk server. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is not unusual for it to take up to 20 mins to get a GPS lock LED (ie. using a Trimble Thunderbolt) after any reboot. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS De-sense==&lt;br /&gt;
If you are having odd loss of lock issues, consider you may have interference to your GPS antenna from strong RF nearby. A note from Jesse Lloyd:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I also had crazy problems with poor signal on my GPS when I set it up sitting in a window, and once installed at site I had the GPS antenna maybe 6 ft from the VHF antenna, and after some troubleshooting found it was getting swamped with RF and loosing lock. &lt;br /&gt;
&lt;br /&gt;
I found the debug setting of 32 useful in the RTCM, you can see a hex output of the GPS status.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Issues==&lt;br /&gt;
===Trimble Thunderbolt===&lt;br /&gt;
You may find your Trimble Thunderbolt is showing the incorrect date at the moment. It could be showing the year as 1997. This is due to the date in the Thunderbolt being reported incorrectly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''This can cause some of your voting receivers to not connect, if they are used with other GPS in your system.''' If you have '''ALL''' Thunderbolts, or '''NO''' Thunderbolts, you are probably fine. If you have '''ALL''' Thunderbolts, the date/time is probably wrong, but they will ALL be wrong, so they will connect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GPS Time is a continuous counting time scale beginning at the January 5, 1980 to January 6, 1980 midnight. It is split into two parts: a time of week measured in seconds from midnight Sat/Sun and a week number. The time of week is transmitted in an unambiguous manner by the satellites, but only the bottom 10 bits of the week number are transmitted. This means that a receiver will see a week number count that goes up steadily until it reaches 1023 after which it will “roll over” back to zero, before steadily going up again. Such a week rollover will occur approx. every 20 years. The last week rollover occurred in 1999 and the next one will be in 2019.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Thunderbolt manual states:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The ThunderBolt adjusts for this week rollover by adding 1024 to any week number reported by GPS which is less than week number 936 which began on December 14, 1997. With this technique, the ThunderBolt will provide an accurate translation of GPS week number and TOW to time and date until July 30, 2017.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As such, the Trimble Thunderbolt has a firmware issue with the GPS Week rollover that manifested itself on July 30, 2017, causing the date to become incorrect. The Thunderbolt thinks the week changed from 935 to 936 (actual week 1959-1024=935), so it stopped adding 1024 to the week.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We have added a brute-force fix starting in RTCM/VOTER firmware &amp;gt;=1.51. This fix adds 619315200 seconds (1024 weeks) to the time reported by the GPS. It fixes the Thunderbolts, we have not done extensive testing to see how it affects other TSIP receivers.&lt;br /&gt;
&lt;br /&gt;
===Garmin===&lt;br /&gt;
====Garmin 18x LVC Wiring Issues====&lt;br /&gt;
If you have issues with your GPS 18x LVC not talking to the RTCM/VOTER, it may not be hooked up to the RTCM correctly. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Garmin pin labeling is backwards to what you may think. See below. You probably need to swap pins 6 and 14.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RTCM   	                 GPS 18x LVC      &lt;br /&gt;
6 GRX 	&amp;lt;-- Rx Data 	 6 Green  &lt;br /&gt;
7 GPPS 	&amp;lt;-- Pulse Output 1 Yellow  &lt;br /&gt;
8 GND   Ground 		 3 Black  &lt;br /&gt;
8 GND   Ground 		 5 Black  &lt;br /&gt;
13 +5V 	--&amp;gt;Vin 		 2 Red  &lt;br /&gt;
14 GTX 	--&amp;gt; TX Data 	 4 White&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log into the RTCM and do 98 and you should see something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Current Time: Sun  Apr 20, 2014  04:37:02.820&lt;br /&gt;
Last Rx Pkt System time: 04/20/2014 03:55:35.580, diff: 2487260 msec&lt;br /&gt;
Last Rx Pkt Timestamp time: 04/20/2014 03:55:32.064, diff: 3515 msec&lt;br /&gt;
Last Rx Pkt index: 160, inbounds: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Garmin and the RTCM====&lt;br /&gt;
Beware when buying newer Garmin GPS's to use with the Micro-Node RTCM.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The RTCM expects a 5V PPS signal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Newer Garmin's (GPS 18X, 18X LVC, etc.) MAY NOT output 5V, and can cause issues. '''Check the Garmin datasheet'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER is designed to accept both 3.3V or 5V signals, and ''should'' work fine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==No GPS/Mixed Mode==&lt;br /&gt;
You do not need a timing source to use an RTCM if you don’t want to vote. That’s called Mix Mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Having the PPS Polarity set to 2 tells the RTCM you do not have a GPS. That forces the RTCM to become a mix (non-voting) client. Turn it on, save it, and restart. A simple voter.conf would look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[general]&lt;br /&gt;
port = 667&lt;br /&gt;
password = BLAH&lt;br /&gt;
&lt;br /&gt;
[1000]&lt;br /&gt;
Site1 = pswrd1,master,transmit&lt;br /&gt;
Site2 = pswrd2,transmit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mixed Client Error==&lt;br /&gt;
&amp;quot;I am getting this error in Asterisk&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WARNING[2368]: chan_voter.c:4511 voter_reader: Voter client master timing source mobile1 attempting to authenticate as mix client!!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A mixed client error means the voter.conf file is expecting an RTCM to try and connect with a GPS IP packet (ie. has '''master''' in it in voter.conf), but the RTCM isn't &lt;br /&gt;
sending a GPS IP packet. So its a mismatch between voter.conf and Option 10 in the RTCM. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to use a mix client (non-voted), make sure that receiver's configuration line in voter.conf '''does not''' have the '''master''' option set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Debug==&lt;br /&gt;
To turn on GPS Debugging, set the Debug Option Level in the RTCM/VOTER to 32.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [[#Debug Options]] levels for more information on how this works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Trimble Debug Status Decoding==&lt;br /&gt;
The VOTER/RTCM when in TSIP mode (Trimble), assumes it is a Trimble Thunderbolt and is looking for two packets:&lt;br /&gt;
*0x8F-AB - Primary Timing Packet&lt;br /&gt;
*0x8F-AC - Supplemental Timing Packet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Grab a copy of the Thunderbolt User Guide: http://leapsecond.com/pages/tbolt/Thunderbolt-2012-02.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pages 78-83 are the important ones.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Packet 0x8F-AB is what grabs the timing information, and packet 0x8F-AC is what it looks at for everything else (including debug).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The debug string that the VOTER/RTCM reports:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	printf(&amp;quot;GPS-DEBUG: TSIP: ok %d, 9 - 14: %02x %02x %02x %02x %02x %02x\n&amp;quot;,&lt;br /&gt;
					happy,gps_buf[9],gps_buf[10],gps_buf[11],gps_buf[12],gps_buf[13],gps_buf[14]);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, the 1 after ok is the &amp;quot;happy gps&amp;quot; flag. The other 5 bytes are supposed to be bytes 9-14 from the packet... sort of. They are bytes 9-14 of the buffer, but they are actually bytes 8-13 of the binary message.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Looking at the message structure, bytes 8-13 are:&lt;br /&gt;
*8-9 Critical Alarms&lt;br /&gt;
*10-11 Minor Alarms&lt;br /&gt;
*12 GPS Decoding Status&lt;br /&gt;
*13 Disciplining Activity&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Therefore, the messages you are seeing break down as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GPS-DEBUG: TSIP: ok 1, 9 - 14: 00 00 00 00 00 00 - everything is good in the 'hood, Doing Fixes, Phase Locking&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 18 08 06 - not happy, Not Tracking Satellites, Not Disciplining Oscillator (0x18 --&amp;gt; 0b000000011000), No Usable Sats, Inactive&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 08 08 05 - not happy, Not Tracking Satellites, No Useable Sats, Compensating OXCO (holdover)&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 00 00 05 - not happy, Compensating OXCO (holdover)&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 1, 9 - 14: 00 00 00 00 00 08 - happy, Recovery Mode&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 00 00 04 - not happy, Initializing Loop Filter&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The GPS is flagged as NOT HAPPY in TSIP mode if ANY of the following are TRUE:&lt;br /&gt;
*If GPS Decoding Status is anything other than &amp;quot;Doing Fixes&amp;quot;.&lt;br /&gt;
*If Disciplining Activity is not Phase Locking or Recovery Mode.&lt;br /&gt;
*Any Critical Alarms.&lt;br /&gt;
*Any Minor Alarms.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ubiquity ToS=&lt;br /&gt;
See https://help.ubnt.com/hc/en-us/articles/205231750-airMAX-How-is-QoS-and-prioritization-handled-by-airMAX-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, if we set ToS/DSCP in the header to C0, then Ubiquity (and other gear watching ToS) ''should'' prioritize the packets. This sets the DSCP to 110 000 aka 48. UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS latency). Other sources show this as a Network Control TOS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is an option in voter.conf to turn this on (utos=y). However, this only controls packets being sent from Asterisk '''TO''' the RTCM. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to tag packets from the RTCM '''TO''' Asterisk, you need to set the RTCM debug option level to 16 (see [[#Debug Options]] for how this works).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At some point we should probably change the default behaviour of the RTCM firmware to mark the packets and use the debug setting to '''disable''' ToS. That change (if you wanted to compile your own firmware) would be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Change line 90 in IP.c&lt;br /&gt;
&lt;br /&gt;
From:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? 0xc0 : (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY))&lt;br /&gt;
&lt;br /&gt;
To:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY) : 0xc0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This changes the conditional expression from if the debug level is 16 to mark the packets with DSCP 48 to if the debug level is 16, mark the packets routine (DSCP 0).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM Simulcasting=&lt;br /&gt;
The RTCM/VOTER boards do support simulcasting, however, there are a bunch of quirks that one needs to be aware of.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Radio Hardware==&lt;br /&gt;
For best results, you should use all identical RF equipment between your voting RX sites and simulcast TX sites. If you don't, you can end up with strange audio artifacts when different receivers are used, and other strange audio issues when different transmitters are used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==9.6MHz Oscillator==&lt;br /&gt;
If you want reliable simulcast with an acceptable level of overlap warble, you MUST inject a GPS-disciplined or OXCO 9.6MHz signal to the clock of the RTCM's, in lieu of their stock internal crystal. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Otherwise, the inherent internal clock jitter of the RTCM's will cause CTCSS warble, etc. in areas where your transmitters overlap. The 1 PPS feed that you normally feed the RTCM's is acceptable for voting, but naturally, a typical crystal-driven clock will slightly drift in between the pulses every second due to inherent jitter, etc., and that ain't to good for situations like simulcast which demand sample-accurate performance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are some comments from Joe, KC2IRV, on the subject. He has also created his own wiki, specific to simulcast issues, you can find it at: http://rtcmsimulcast.wikifoundry.com/ &lt;br /&gt;
&lt;br /&gt;
:I felt I needed to let those on this mailing list know my findings with simulcasting with the RTCM units since I have received a great deal of help and information from people on this list.&lt;br /&gt;
&lt;br /&gt;
:For the past week I have had a two (2) site simulcast system up and running on UHF using the RTCM units. I have done a great deal of testing and proving on the bench and it is so far working beautifully. &lt;br /&gt;
&lt;br /&gt;
:The one issue that was made apparent to me early on was that in order for the RTCM's to be suitable for simulcast, the processor inside it needed to be clocked to a more accurate source. This source is supposed to be the Programmable Clock Generator Module in order to produce a GPS locked 9.6 MHz reference for the processor. Unfortunately this unit is not currently available.&lt;br /&gt;
&lt;br /&gt;
:Knowing this, I started to go down the road of possibly designing my own, but stumbled upon a cheap, plentiful supply of Symmetricom 9.6 MHz sinewave OCXO's. I took a chance and ordered a few to experiment with to see if the RTCM would be able to use this in place of the supplied crystal for a clock. I found they did, with that I decided to modify the RTCM with an SMA connector just above the audio adjustment pots and use this OCXO. I trimmed the frequency on the units to match each other and used them to produce the processor clock.&lt;br /&gt;
&lt;br /&gt;
:After a week of testing, I have found the results in the overlap areas to be exactly as I would expect them on a public safety/commercial simulcast system. While in an overlap region where both transmitters are within 3dB of one another, to the ear you hear no audio phase wandering. Of course , this has only been a week of testing so I wouldn't call it case closed yet.&lt;br /&gt;
&lt;br /&gt;
:I will say that if this system remains this way after testing for 6 months to a year than using a 9.6 MHz OXCO is a viable alternative to achieve the needed precision and accuracy needed for the processor clock to make it suitable for simulcast.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Comments from Jim Dixon on the issue:&lt;br /&gt;
&lt;br /&gt;
:You have to use '''something''' that will take the precise 10MHz (or whatever it is) from the GPSDO and PLL (phase-locked) convert it to 9.6MHz (square wave at 3.3V for the CPU clock).&lt;br /&gt;
&lt;br /&gt;
:We had to use 9.6MHz mainly because of the DAC in the dsPIC instead of 10MHz. The options for various divide/clock radios in the part are RATHER limited. As I recall, there wasn't even a way of getting the necessary 16kb/s sample rate on the ADC from 10MHZ, either.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Micro-Node RTCM Clock Issue=&lt;br /&gt;
James, KI0KN, had some strange-ness with some of his RTCM's when used for voting. As soon as he changed menu item 10 on the RTCM to either a (1) or a (0) instead of (2), he '''instantly''' got this on the RTCM console:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
04/05/2016 18:44:13.660  Lost GPS Time synchronization&lt;br /&gt;
04/05/2016 18:44:13.660  Host Connection Lost (Pri) (10.16.1.240)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And it sits there forever and never re-establishes connection to the host. The issue was finally traced to a bad batch of 9.6MHz crystals that affected a small run of the RTCM's. The issue was eventually resolved by Micro-Node, but we'll document it here just for record keeping.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
James comments to the list:&lt;br /&gt;
&lt;br /&gt;
:Well, after many of you offered your time and thoughts on my voter problem, Jim, WB6NIL, graciously donated a couple of hours of his time to remotely help me and he uncovered the problem.&lt;br /&gt;
&lt;br /&gt;
:All 5 of my RTCMs were purchased within the last 6 months, and I suspect all 5 have the same problem (will verify that today). The problem is that the microprocessor crystal is running too fast! There is 9.6Mhz crystal that drives the MPU, on the particular unit that Jim helped me diagnose, it's running 2.5 khz too fast.  &lt;br /&gt;
&lt;br /&gt;
:There is a sanity check in the firmware that makes sure the correct number of samples were taken in the last second (it's supposed to be 8000) and fails if the sample is incorrectly sized (mine is taking 8003 samples).  Jim helped adjust the code to be more tolerant of the sampling error and my whole system instantly worked.&lt;br /&gt;
&lt;br /&gt;
:I have since tested it with ALL my GPSs (they all work great!). So I now have everything working, including the voting.&lt;br /&gt;
&lt;br /&gt;
:I haven't contact Micro-Node about it yet. Jim told me that voting should work fine but this clock error would probably not be acceptable for Simulcast (something we have no plans on doing as of now). Since mine are deployed at mountain top sites, I'll probably pursue a crystal that is running at the correct frequency and use &amp;quot;standard&amp;quot; firmware so that if the decision is ever made to play with simulcast, I won't be right back in this same boat.&lt;br /&gt;
&lt;br /&gt;
:Thanks to all that helped out, and a HUGE thanks to Jim for taking the time to troubleshoot this.&lt;br /&gt;
&lt;br /&gt;
:BTW- This clock error will NOT effect the RTCM in mix client mode, it only affects it in voting or simulcast mode!&lt;br /&gt;
&lt;br /&gt;
:In voter.c, the stock line is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if ((samplecnt &amp;gt;= 7999) &amp;amp;&amp;amp; (samplecnt &amp;lt;= 8001))&lt;br /&gt;
&lt;br /&gt;
it needs to be changed to something like:&lt;br /&gt;
&lt;br /&gt;
if ((samplecnt &amp;gt;= 7999) &amp;amp;&amp;amp; (samplecnt &amp;lt;= 8003 ))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:That was just enough to make my first RTCM work. I've had a chance now to check a few more of my RTCMs on the bench this morning and the crystal frequencies are kind of all over.  The next one I had on the bench was 5.2Khz fast. The above code was still not enough to fix it (as would be expected) so it looks like the quality control on whatever manufacturer that crystal is, isn't very good (or a low tolerance crystal is being used). I am going to pursue crystal replacement to get a highly accurate, stable, on-frequency crystal in there as my first choice. Changing the firmware 5 different times doesn't seem like the right answer.&lt;br /&gt;
&lt;br /&gt;
:Jim put that sanity check in there for a reason. Working around it '''may''' allow the device to work, but to me, it seems getting the hardware operating the way it was supposed to originally is the better answer. I will follow up with Micro-node and let you all know how it goes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After following up with Micro-Node:&lt;br /&gt;
:They were all off, some were off a LOT. I talked to Mark @ Micronode. He told me there were 25 units that made it out the door with a crystal from an unapproved source and that was quite likely the reason for the problem. He gladly sent me 5 new crystals to replace (he offered to replace them himself if I sent the units in, but I am comfortable doing it myself to save the time and postage). &lt;br /&gt;
&lt;br /&gt;
:I haven't received them in the mail yet to show that the problem is fixed, but I will post here when that happens. He was great to work with and had no issue getting things set straight. If you are having the same issue and your RTCMs were bought about the same time, I'd suggest you contact him and have him help you resolve the issue!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Duplex Mode 3=&lt;br /&gt;
Does delayed repeat audio bug you? Tired of hearing a bit of yourself after you unkey? Wish you could talk full duplex? Hate the echo chamber effect? Then we have the answer for you.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Duplex Mode 3 in app_rpt allows for &amp;quot;in-cabinet repeat&amp;quot; (where the radio hardware provides repeat audio) and app_rpt adds the hang time, courtesy tones, linking - all the &lt;br /&gt;
things apt_rpt does sans repeat audio. Therefore no repeat audio delay. Cool, eh? This duplex mode has been in app_rpt for a while. Problem has been how to implement it in the RTCM environment. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Duplex Mode 3 support in the RTCM provides in-cabinet repeat functionality. Repeat audio loops through the RTCM and has almost zero delay because it does not have to traverse the network. The delay is not quite zero but it's plenty short enough to eliminate all of the above mentioned annoyances. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Of course Duplex Mode 3 support can't be used with voting or simulcast.&lt;/div&gt;</summary>
		<author><name>Ve7fet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=47</id>
		<title>RTCM Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=47"/>
		<updated>2017-08-11T15:01:21Z</updated>

		<summary type="html">&lt;p&gt;Ve7fet: /* Debug Options */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Micro-Node RTCM and VOTER interfaces are typically used with AllStar in voting/simulcast applications. They MAY be used for ANY repeater interface application, through the chan/voter channel driver. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER is the original through-hole board designed by Jim Dixon for this application. It is open-source, and the relevant Gerber files and BoM to build it are available. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The [http://www.micro-node.com/thin-m1.shtml Micro-Node Radio Thin Client Module (RTCM)] is the commercial version of the VOTER. It uses surface mount parts (SMT), but is functionally equivalent to the original VOTER. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In general, the two terms (RTCM/VOTER) are used interchangeably, as they operate the same, and use the same firmware (mostly, see below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This page will highlight some of the operational concerns, quirks, bugs, and other items of interest that relate to these interfaces. Much of the information has been gleaned off the AllStar mail list, comes from personal experience, or comes from notes in the firmware source code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Firmware=&lt;br /&gt;
The firmware in the RTCM and VOTER is the same, except it is compiled for the specific dsPIC that is installed in each. As such, the firmware is specific to the VOTER or the RTCM, and is NOT interchangeable (it won't boot in the wrong device). Firmware for the RTCM is denoted by &amp;quot;smt&amp;quot; in the filename.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are '''two parts''' to the firmware, a bootloader, and then the actual firmware file. The bootloader starts when power is applied, and allows you to talk to the dsPIC and load new firmware files over ethernet. If the bootloader is not intercepted by the loading tool, it will continue to boot the current firmware file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All new boards will need to have the bootloader installed first, followed by a firmware file. You '''can''' load a firmware file directly (.hex) in to the dsPIC, but then you will not have any of the bootloader remote loading features.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The current bootloader (.cof file) is available here: https://github.com/AllStarLink/voter/tree/master/voter-bootloader (the -smt file is for the RTCM). It needs to be loaded with a PICKit programmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Current firmware (.cry file) is available here: https://github.com/AllStarLink/voter/tree/master/board-firmware . They are loaded with the EBLEX C30 Programmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are multiple &amp;quot;flavors&amp;quot; of firmware available. See below for further explanation of what all the options mean.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The DSPBEW versions have Jim's DSP/BEW feature enabled. Note that due to the size of this feature, the diagnostics menu is NOT available in this version.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CHUCK versions have Chuck Henderson's RSSI and Squelch modifications enabled. This is probably the version that most user's will want to use in production.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Compiling Environment==&lt;br /&gt;
If you look in the [https://github.com/AllStarLink/voter/blob/master/votersystem.pdf votersystem.pdf], you will find a procedure to modify and load the bootloader in to the dsPIC of a VOTER board. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Unfortunately, there is an important step '''missing''' in that procedure, which is covered below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In addition, the old links for the MPLAB software are dead, so let's update this info and get you going.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Currently (Feb 2017), you can get the required software from:&lt;br /&gt;
:http://www.microchip.com/development-tools/downloads-archive&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download MPLAB IDE 32-bit Windows v8.66:&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_IDE_v8_66.zip&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/MPLAB_IDE_v8_66.zip&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download MPLAB C Compiler for PIC24 and dsPIC DSCs v3.31 '''NOT v.3.25''':&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Optionally, install Windows Virtual PC and XP Mode. This is getting to be pretty old software, so running it under XP Mode may be a good idea, so we can keep it isolated (install it in a virtual machine). It does run fine in Windows 7.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To setup the compile/build environment, follow these steps:&lt;br /&gt;
*Run the MPLAB IDE installer. You don't need to install the HI-TECH C Compiler at the end (click no)&lt;br /&gt;
*Run the MPLAB C Compiler installer&lt;br /&gt;
*Select Legacy Directory Name&lt;br /&gt;
*'''Select Lite Compiler'''&lt;br /&gt;
*Go to: https://github.com/AllStarLink&lt;br /&gt;
*Follow the links to: voter --&amp;gt; Clone or Download --&amp;gt; Download Zip. That will get you voter-master.zip which is a download of the whole VOTER tree from GitHub.&lt;br /&gt;
*Extract it somewhere (ie. in the XP Mode Virtual PC)&lt;br /&gt;
*Launch the MPLAB IDE&lt;br /&gt;
*Go to Configure --&amp;gt; Settings --&amp;gt; Projects and de-select one-to-one project mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bootloader==&lt;br /&gt;
If you need to load the bootloader in to a fresh board, you will need to follow these steps:&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; voter-bootloader.mcp --&amp;gt; Open (it is in the voter-bootloader folder of the GitHub source)&lt;br /&gt;
*Go to File --&amp;gt; Import --&amp;gt; voter-bootloader --&amp;gt; ENC_C30.cof --&amp;gt; Open '''This step is missing from the original procedure.'''&lt;br /&gt;
*Remove JP7 on the VOTER Board. This is necessary to allow programming by the PICKit2/PICKit3 device.&lt;br /&gt;
*Attach the PICKIT2/PICKit3 device to J1 on the VOTER board. Note that Pin 1 is closest to the power supply modules (as indicated on the board).&lt;br /&gt;
*If you have not already selected a programming device, go to Programmer --&amp;gt; Select Device and choose PICKit3 (or PICKit2, depending on what you are using).&lt;br /&gt;
*Go to Programmer --&amp;gt; Program. This will program the bootloader firmware into the PIC device on the board.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to change the default IP address from 192.168.1.11 in the bootloader:&lt;br /&gt;
*Select View --&amp;gt; Program Memory (from the top menu bar)&lt;br /&gt;
*Hit Control-F (to &amp;quot;find&amp;quot;) and search for the digits &amp;quot;00A8C0&amp;quot;.&lt;br /&gt;
*These should be found at memory address &amp;quot;03018&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;A8C0&amp;quot; at 03018 represents the hex digits C0 (192) and A8 (168) which are the first two octets of the IP address. The six digits to enter are 00 then the SECOND octet of the IP address in hex then the FIRST octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;0B01&amp;quot; at 0301A represents the hex digits 0B (11) and 01 (1) which are the second two octets of the IP address. The six digits to enter are 00 then the FOURTH octet of the IP address in hex then the THIRD octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you have modified the address to your desired IP, follow the programming procedure (above).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Firmware==&lt;br /&gt;
To compile the firmware (if you want to make custom changes):&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; navigate to board-firmware and open the .mcp file for the flavor of firmware you want to compile. They are in the board-firmware folder of the GitHub source.&lt;br /&gt;
*'''NOTE''': the .mcp files with the &amp;quot;smt&amp;quot; suffix are for the RTCM (built with SMT parts). The non-smt files are for the ORIGINAL through-hole VOTER boards. The difference is that the VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
*Go to Project --&amp;gt; Build Configuration and select &amp;quot;Release&amp;quot;. This may not be necessary (I don't believe that option is used in the firmware), but it removes the compiler option of __DEBUG being passed, so theoretically it would build &amp;quot;normal&amp;quot; firmware.&lt;br /&gt;
*Go to Configure --&amp;gt; Select Device and choose the appropriate device for your board from the Device list. If you don't select the right one, the board will not boot. Select dsPIC33FJ128GP802 for the VOTER, and dsPIC33FJ128GP804 for the RTCM.&lt;br /&gt;
*Now, if you go to Project --&amp;gt; Build All it should compile everything and show you &amp;quot;Build Succeeded&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A .cry file should be in the board-firmware folder. You can load this with the ENC Loader.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is also a .hex file in there that you could load with a programmer... but that would wipe the bootloader... so don't do that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Chuck Squelch==&lt;br /&gt;
If you want to enable &amp;quot;Chuck Squelch&amp;quot;, open the HardwareProfile.h and un-comment #define CHUCK. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may also want to go down to Line 291 in Voter.c (right click on the window, go to Properties --&amp;gt; &amp;quot;C&amp;quot; File Types --&amp;gt; Line Numbers) and tack on CHUCK after 1.60 (the current version number) so that when you load this firmware, the version will be shown as 1.51CHUCK, and you'll know that Chuck Squelch is compiled in. We should probably make that more automagic in the future...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==DSP/BEW==&lt;br /&gt;
If you want to compile the DSPBEW version, open the DSPBEW project file instead.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DSP/BEW Firmware Version=&lt;br /&gt;
DSP BEW Firmware is mutually exclusive with the diagnostic menu. There is not enough space for both, if you load the DSP/BEW firmware, you will '''NOT''' have a diag menu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BEW stands for Baseband Examination Window.&lt;br /&gt;
&lt;br /&gt;
Typically, the discriminator of an FM communications receiver produces results containing audio spectrum from the &amp;quot;sub-audible&amp;quot; range (typically &amp;lt; 100 Hz) to well above frequencies able to be produced by modulating audio. These higher frequencies can be utilized to determine signal quality, since they can only contain noise (or no noise, if a sufficiently strong signal is present).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For receivers (such as the Motorola Quantar, etc) that do not provide sufficient spectral content at these &amp;quot;noise&amp;quot; frequencies (for various reasons), The &amp;quot;DSP/BEW (Digital Signal Processor / Baseband Examination Window)&amp;quot; feature of the RTCM firmware may be utilized. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These receivers are perfectly capable of providing valid &amp;quot;noise&amp;quot; signal with no modulation on the input of the receiver, but with strong modulation (high frequency audio and high deviation), it severely interferes with proper analysis of signal strength.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This feature provides a means by which a &amp;quot;Window&amp;quot; of baseband (normal audio range) signal is examined by a DSP and a determination of whether or not sufficient audio is present to cause interference of proper signal strength is made. During the VERY brief periods of time when it is determined that sufficient audio is present to cause interference, the signal strength value is &amp;quot;held&amp;quot; (the last valid value previous to the time of interference) until such time that the interfering audio is no longer present.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The DSP/BEW feature is selectable, and '''should not''' be used for a receiver that does not need it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A note on the Motorola SLR5700 per VE7FET. DSP/BEW definitely makes a difference on what AllMon reports for the signal strength of received signals. It is less reactive when DSP/BEW = 1 than with it set to 0. We'll have to see what the real world trials show. It might be better to leave it off.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Chuck Squelch=&lt;br /&gt;
&amp;quot;Chuck Squelch&amp;quot; are a couple firmware changes made by Chuck Henderson, WB9UUS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pre-compiled firmware versions including this option are available on [https://github.com/AllStarLink/voter/tree/master/board-firmware GitHub]. See above on how it is enabled/compiled, if you are rolling your own firmware modifications.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
One of the changes fixes an issue with weak signals producing RSSI readings all over the place. It is caused by a 16 bit value that was overflowing (it is the RSSI change in the firmware). It results in rock-solid RSSI values being reported, even on barely or non-readable signals. '''This change will likely be rolled in to a permanent fix in a future firmware release.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The other firmware change changes how the squelch responds (looks at the noise in the last two audio samples) and makes the &amp;quot;Micor squelch&amp;quot; action work better.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may also want to consider the following changes in /etc/asterisk/voter.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;Comment out:&lt;br /&gt;
;thresholds =&lt;br /&gt;
&lt;br /&gt;
;and set:&lt;br /&gt;
linger = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Squelch Issues==&lt;br /&gt;
*If anyone is off frequency a little bit, that will make the voice talk off worse. Double check that the repeater and the users are all on frequency.&lt;br /&gt;
*Don't use narrow bandwidth on the repeater receiver. &lt;br /&gt;
*Make sure that the discriminator audio is not rolled off even a little bit at the high end. There should not be resistors in series or capacitors to ground between the discriminator chip output pin and the voter board input, for best results.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM/VOTER LED's=&lt;br /&gt;
RX LED on the RTCM/VOTER will flash (same rate as ACT LED) if you have External CTCSS enabled, and the received signal has the wrong (or no) valid PL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Network Information=&lt;br /&gt;
==RTCM/VOTER Bandwidth==&lt;br /&gt;
Assuming ulaw... The RTCM will require approximately 80kbps of bandwidth for continual usage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Network Quality==&lt;br /&gt;
Your IP Network quality is important. You may wish to add a rule in your routers to prioritize traffic on UDP port 667 so that RTCM audio is given priority over other &lt;br /&gt;
traffic. Also see the [[#Debug Options]] below for notes on how to tag your packets with ToS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==RX/TX Buffers are NOT Both Millisecond Values== &lt;br /&gt;
You might assume an RX buffer (in voter.conf) of 120ms would be equivalent of a TX buffer (in the RTCM) of 120ms. That is not the case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The TX buffer is a number of 125 '''microsecond''' intervals, where the RX buffer is in milliseconds. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you follow the buffer setting instructions, you should be fine, in most cases. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Debug Options=&lt;br /&gt;
The VOTER/RTCM firmware supports some additional debugging information that can be turned on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
From the source code, the different Debug Options are listed as:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1 - Alt/Main Host change notifications&lt;br /&gt;
2 - Ignore HWlock (GGPS only)&lt;br /&gt;
4 - GPS/PPS Failure simulation (GGPS only)&lt;br /&gt;
8 - POCSAG H/W output disable (GGPS only)&lt;br /&gt;
16 - IP TOS Class for Ubiquiti&lt;br /&gt;
32 - GPS Debug&lt;br /&gt;
64 - Fix GPS 1 second off&lt;br /&gt;
128 - Fix GPS 1 month off (WTF,O??)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Not sure what they all do, but that is what they are. Here are the most common ones used:&lt;br /&gt;
*&amp;quot;Alt/Main Host change notifications&amp;quot; &lt;br /&gt;
**shows when the connection to the Asterisk server changes state.&lt;br /&gt;
*&amp;quot;IP TOS Class for Ubiquity&amp;quot; &lt;br /&gt;
**marks the IP headers from the RTCM/VOTER '''TO''' the network with ToS C0/DSCP 48 (UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS latency). Other sources show this as a Network Control TOS.) If you enable this, you also will want to have &amp;quot;utos=y&amp;quot; in your voter.conf to mark the packets from the network '''TO''' the RTCM/VOTER. We will probably change this option to mark the packets by default in a future version.&lt;br /&gt;
*&amp;quot;GPS Debug&amp;quot; &lt;br /&gt;
**will print NMEA or TSIP debug strings from the connected GPS.&lt;br /&gt;
*&amp;quot;Fix GPS 1 second off&amp;quot;&lt;br /&gt;
**this is for NMEA GPS '''only'''. It will add one second to the time.&lt;br /&gt;
*&amp;quot;Fix GPS 1 month off (WTF,O??)&amp;quot;&lt;br /&gt;
**this is for TSIP GPS '''only'''. It will effectively add a month to the date. The mktime function normally needs one month subtracted from the raw month it converts to a time/date string. Maybe there are some GPS out there that do that automatically? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The way this works is you add together the options you want to enable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Want to enable GPS Debug and IP ToS, set debug to 48.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just want to turn on GPS Debug, set debug to 32.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just want ToS turned on, set debug to 16.&lt;br /&gt;
&lt;br /&gt;
=Un-documented Menus/Features=&lt;br /&gt;
*Menu 96 - If firmware compiled with DUMPENCREGS enabled, Menu 96 looks like it dumps the registers from the ENC (Ethernet) chip?&lt;br /&gt;
&lt;br /&gt;
*Menu 111 - show the &amp;quot;hidden&amp;quot; option values (normally they should all be 0).&lt;br /&gt;
&lt;br /&gt;
*Menu 11780 - set the &amp;quot;Elkes&amp;quot; value? No idea what this does.&lt;br /&gt;
&lt;br /&gt;
*Menu 1103 - set the &amp;quot;Glaser&amp;quot; timer value? No idea what this does.&lt;br /&gt;
&lt;br /&gt;
*Menu 1170 - set &amp;quot;Sawyer Mode&amp;quot;. No idea what this does, it was a modification Jim made for Tim Sawyer, but Tim doesn't recall what it was for. :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Audio=&lt;br /&gt;
The RTCM/VOTER is totally flexible regarding emphasis. Although the way it is set is completely obscure. It tries to automatically do the right thing for you, which is great most of the time. But when it’s not, it's hard to know what is going on. &lt;br /&gt;
&lt;br /&gt;
If you are changing the COR Type settings, or nodeemp in voter.conf, make sure you save/reboot the RTCM/VOTER every time you make a change... changes are '''not''' effective until the RTCM/VOTER reboots!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Voting==&lt;br /&gt;
Before we get in to the different ways audio is routed, there is an important consideration you need to make if you are using the RTCM/VOTER for voting. &lt;br /&gt;
&lt;br /&gt;
The way the voting process works, it needs '''discriminator audio''' to determine the signal to noise level from each satellite receiver. As such, you will need to be feeding discriminator audio in to the RX audio pin, so that the hardware/software can vote properly. That means you also need to let the hardware/software do the squelch action.&lt;br /&gt;
&lt;br /&gt;
If you need RX CTCSS, you'll need to feed logic from an external CTCSS decoder in to the CTCSS input pin.&lt;br /&gt;
&lt;br /&gt;
Also, don't disable COR in the RTCM/VOTER... it will cause it to disable the squelch and it will report an RSSI of 255 (full quieting) for all received signals.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Receiver De-emphasis==&lt;br /&gt;
On the RX side the COR Type setting in the RTCM/VOTER determines whether the de-emphasis filter is used for RX audio. 0=Normal means the RTCM/VOTER squelch circuit is in use and it is expecting discriminator audio on the RX pin (to be able to do the squelch action), and therefore it '''will''' provide de-emphasis (audio is routed THROUGH the de-emphasis RC filter circuit) to the receiver audio. COR Type 1=IGNORE COR uses the CTCSS input pin for COR or CTCSS ''logic'' and it then expects de-emphasized receive (line) audio on the RX pin, and therefore will '''not''' provide de-emphasis to the received audio (the RC filter is switched '''out''' and audio passes straight through). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Most of the time, you do NOT need to override the automatic filter selection. However, if you do, and you are sure you have a good reason to, you CAN switch the de-emphasis filter '''out''' of the circuit so that audio passes straight through to the encoder. You would do this by setting the nodeemp=1 option in voter.conf. When you set nodeemp=1, the ''VOTER Protocol'' tells the RTCM/VOTER to switch the filter '''out''', so audio is passed straight through.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Transmitter Pre-emhpasis==&lt;br /&gt;
On the TX side, the RTCM/VOTER expects the repeater to accept ''mic audio''. In other words, the '''repeater''' is providing the pre-emphasis, not the RTCM/VOTER (you are '''not''' directly modulating the TX). This can be overridden by setting CTCSS tone in voter.conf. If a CTCSS tone is defined, the RTCM '''will''' provide pre-emphasis to the audio, and expects that you will be connecting to your repeater's flat audio input (direct modulation). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you don’t want TX CTCSS tone but '''do''' need pre-emphasis, set an arbitrary (any) CTCSS tone in voter.conf, and set the level to 0. This will force the RTCM/VOTER to pre-emphasize the audio it generates on the TX pin, but it won't actually mix in a CTCSS tone. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Level Setting==&lt;br /&gt;
Setting the audio levels for the RTCM/VOTER is pretty straight forward. Just follow these steps:&lt;br /&gt;
*Ensure you have a connection to your host Asterisk server/chan_voter instance&lt;br /&gt;
*Send a 1kHz@3kHz on-channel, full-quieting signal in to the repeater's RX&lt;br /&gt;
*Set the RX up so it reads 3kHz deviation on the RTCM's built in console meter&lt;br /&gt;
*Now set the TX level '''pot''' to get 3kHz out of the transmitter (No PL)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now change the modulation from 1kHz tone to 800Hz followed by 1.8kHz and verify that the deviation level doesn't change as the tone frequency changes. '''Changing levels indicates a pre/de-emphasis issue.''' You will want to read the above sections on how audio is handled, and figure out where your issue is.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If using PL you have to account for that deviation, unless you filter it out with your IFR (test set). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That's it!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Optionally, if you are using the built-in &amp;quot;offline repeat&amp;quot; functions, fail the connection to the host Asterisk server, and make sure your repeat audio performs the same as above.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Crappy Transmit Audio==&lt;br /&gt;
&lt;br /&gt;
Does your repeated audio sounded really bassy, muffled, and not very understandable? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There was a situation where, compared to a typical simplex radio-to-radio transmission, the audio through the repeater (RTCM and Asterisk) was unacceptable. What was discovered was that the RTCM has an internal pre-emphasis function that was disabled. The user had intentionally disabled &amp;quot;txctcss&amp;quot; and &amp;quot;txctcsslevel&amp;quot; in voter.conf because he didn't &lt;br /&gt;
want the RTCM transmitting CTCSS (the Quantar was doing that already). He ultimately found a post on the mail list explaining the settings above that said enabling txctcss = some valid tone (114.8 in his case) and setting txctcsslevel = 0 would turn on the pre-emphasis function in the RTCM without transmitting CTCSS tones. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
He did, and it worked like a charm! Audio now had more treble and was less bassy/muffled. So, future RTCM users, be sure not to comment out txctcss and txctcsslevel in voter.conf!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just enable and set the level to 0. You'll thank me later. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=GPS=&lt;br /&gt;
The RTCM/VOTER will work with most GPS available. It requires either NMEA or Trimble TSIP binary data. It only receives data '''from''' the GPS (GPS TX), it does not send anything '''to''' the GPS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The firmware is specifically written to talk to Trimble Thunderbolt receivers using Trimble's TSIP binary data interface, however, other Trimbles GPS receivers that talk TSIP are generally compatible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==NMEA Sentences==&lt;br /&gt;
If you are using an NMEA GPS (as opposed to a Trimble using the TSIP binary interface), the RTCM/VOTER is looking for the following NMEA sentences:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$GPGGA&lt;br /&gt;
$GPGSV&lt;br /&gt;
$GPRMC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Lock==&lt;br /&gt;
The GPS led will go solid regardless of the connection LED. That '''has''' to happen or it won't connect to the Asterisk server. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is not unusual for it to take up to 20 mins to get a GPS lock LED (ie. using a Trimble Thunderbolt) after any reboot. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS De-sense==&lt;br /&gt;
If you are having odd loss of lock issues, consider you may have interference to your GPS antenna from strong RF nearby. A note from Jesse Lloyd:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I also had crazy problems with poor signal on my GPS when I set it up sitting in a window, and once installed at site I had the GPS antenna maybe 6 ft from the VHF antenna, and after some troubleshooting found it was getting swamped with RF and loosing lock. &lt;br /&gt;
&lt;br /&gt;
I found the debug setting of 32 useful in the RTCM, you can see a hex output of the GPS status.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Issues==&lt;br /&gt;
===Trimble Thunderbolt===&lt;br /&gt;
You may find your Trimble Thunderbolt is showing the incorrect date at the moment. It could be showing the year as 1997. This is due to the date in the Thunderbolt being reported incorrectly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''This can cause some of your voting receivers to not connect, if they are used with other GPS in your system.''' If you have '''ALL''' Thunderbolts, or '''NO''' Thunderbolts, you are probably fine. If you have '''ALL''' Thunderbolts, the date/time is probably wrong, but they will ALL be wrong, so they will connect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GPS Time is a continuous counting time scale beginning at the January 5, 1980 to January 6, 1980 midnight. It is split into two parts: a time of week measured in seconds from midnight Sat/Sun and a week number. The time of week is transmitted in an unambiguous manner by the satellites, but only the bottom 10 bits of the week number are transmitted. This means that a receiver will see a week number count that goes up steadily until it reaches 1023 after which it will “roll over” back to zero, before steadily going up again. Such a week rollover will occur approx. every 20 years. The last week rollover occurred in 1999 and the next one will be in 2019.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Thunderbolt manual states:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The ThunderBolt adjusts for this week rollover by adding 1024 to any week number reported by GPS which is less than week number 936 which began on December 14, 1997. With this technique, the ThunderBolt will provide an accurate translation of GPS week number and TOW to time and date until July 30, 2017.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As such, the Trimble Thunderbolt has a firmware issue with the GPS Week rollover that manifested itself on July 30, 2017, causing the date to become incorrect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We have added a brute-force fix starting in RTCM/VOTER firmware &amp;gt;=1.51. It fixes the Thunderbolts, we have not done extensive testing to see how it affects other TSIP receivers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Garmin===&lt;br /&gt;
====Garmin 18x LVC Wiring Issues====&lt;br /&gt;
If you have issues with your GPS 18x LVC not talking to the RTCM/VOTER, it may not be hooked up to the RTCM correctly. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Garmin pin labeling is backwards to what you may think. See below. You probably need to swap pins 6 and 14.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RTCM   	                 GPS 18x LVC      &lt;br /&gt;
6 GRX 	&amp;lt;-- Rx Data 	 6 Green  &lt;br /&gt;
7 GPPS 	&amp;lt;-- Pulse Output 1 Yellow  &lt;br /&gt;
8 GND   Ground 		 3 Black  &lt;br /&gt;
8 GND   Ground 		 5 Black  &lt;br /&gt;
13 +5V 	--&amp;gt;Vin 		 2 Red  &lt;br /&gt;
14 GTX 	--&amp;gt; TX Data 	 4 White&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log into the RTCM and do 98 and you should see something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Current Time: Sun  Apr 20, 2014  04:37:02.820&lt;br /&gt;
Last Rx Pkt System time: 04/20/2014 03:55:35.580, diff: 2487260 msec&lt;br /&gt;
Last Rx Pkt Timestamp time: 04/20/2014 03:55:32.064, diff: 3515 msec&lt;br /&gt;
Last Rx Pkt index: 160, inbounds: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Garmin and the RTCM====&lt;br /&gt;
Beware when buying newer Garmin GPS's to use with the Micro-Node RTCM.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The RTCM expects a 5V PPS signal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Newer Garmin's (GPS 18X, 18X LVC, etc.) MAY NOT output 5V, and can cause issues. '''Check the Garmin datasheet'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER is designed to accept both 3.3V or 5V signals, and ''should'' work fine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==No GPS/Mixed Mode==&lt;br /&gt;
You do not need a timing source to use an RTCM if you don’t want to vote. That’s called Mix Mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Having the PPS Polarity set to 2 tells the RTCM you do not have a GPS. That forces the RTCM to become a mix (non-voting) client. Turn it on, save it, and restart. A simple voter.conf would look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[general]&lt;br /&gt;
port = 667&lt;br /&gt;
password = BLAH&lt;br /&gt;
&lt;br /&gt;
[1000]&lt;br /&gt;
Site1 = pswrd1,master,transmit&lt;br /&gt;
Site2 = pswrd2,transmit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mixed Client Error==&lt;br /&gt;
&amp;quot;I am getting this error in Asterisk&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WARNING[2368]: chan_voter.c:4511 voter_reader: Voter client master timing source mobile1 attempting to authenticate as mix client!!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A mixed client error means the voter.conf file is expecting an RTCM to try and connect with a GPS IP packet (ie. has '''master''' in it in voter.conf), but the RTCM isn't &lt;br /&gt;
sending a GPS IP packet. So its a mismatch between voter.conf and Option 10 in the RTCM. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to use a mix client (non-voted), make sure that receiver's configuration line in voter.conf '''does not''' have the '''master''' option set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Debug==&lt;br /&gt;
To turn on GPS Debugging, set the Debug Option Level in the RTCM/VOTER to 32.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [[#Debug Options]] levels for more information on how this works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Trimble Debug Status Decoding==&lt;br /&gt;
The VOTER/RTCM when in TSIP mode (Trimble), assumes it is a Trimble Thunderbolt and is looking for two packets:&lt;br /&gt;
*0x8F-AB - Primary Timing Packet&lt;br /&gt;
*0x8F-AC - Supplemental Timing Packet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Grab a copy of the Thunderbolt User Guide: http://leapsecond.com/pages/tbolt/Thunderbolt-2012-02.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pages 78-83 are the important ones.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Packet 0x8F-AB is what grabs the timing information, and packet 0x8F-AC is what it looks at for everything else (including debug).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The debug string that the VOTER/RTCM reports:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	printf(&amp;quot;GPS-DEBUG: TSIP: ok %d, 9 - 14: %02x %02x %02x %02x %02x %02x\n&amp;quot;,&lt;br /&gt;
					happy,gps_buf[9],gps_buf[10],gps_buf[11],gps_buf[12],gps_buf[13],gps_buf[14]);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, the 1 after ok is the &amp;quot;happy gps&amp;quot; flag. The other 5 bytes are supposed to be bytes 9-14 from the packet... sort of. They are bytes 9-14 of the buffer, but they are actually bytes 8-13 of the binary message.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Looking at the message structure, bytes 8-13 are:&lt;br /&gt;
*8-9 Critical Alarms&lt;br /&gt;
*10-11 Minor Alarms&lt;br /&gt;
*12 GPS Decoding Status&lt;br /&gt;
*13 Disciplining Activity&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Therefore, the messages you are seeing break down as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GPS-DEBUG: TSIP: ok 1, 9 - 14: 00 00 00 00 00 00 - everything is good in the 'hood, Doing Fixes, Phase Locking&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 18 08 06 - not happy, Not Tracking Satellites, Not Disciplining Oscillator (0x18 --&amp;gt; 0b000000011000), No Usable Sats, Inactive&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 08 08 05 - not happy, Not Tracking Satellites, No Useable Sats, Compensating OXCO (holdover)&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 00 00 05 - not happy, Compensating OXCO (holdover)&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 1, 9 - 14: 00 00 00 00 00 08 - happy, Recovery Mode&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 00 00 04 - not happy, Initializing Loop Filter&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The GPS is flagged as NOT HAPPY in TSIP mode if ANY of the following are TRUE:&lt;br /&gt;
*If GPS Decoding Status is anything other than &amp;quot;Doing Fixes&amp;quot;.&lt;br /&gt;
*If Disciplining Activity is not Phase Locking or Recovery Mode.&lt;br /&gt;
*Any Critical Alarms.&lt;br /&gt;
*Any Minor Alarms.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ubiquity ToS=&lt;br /&gt;
See https://help.ubnt.com/hc/en-us/articles/205231750-airMAX-How-is-QoS-and-prioritization-handled-by-airMAX-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, if we set ToS/DSCP in the header to C0, then Ubiquity (and other gear watching ToS) ''should'' prioritize the packets. This sets the DSCP to 110 000 aka 48. UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS latency). Other sources show this as a Network Control TOS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is an option in voter.conf to turn this on (utos=y). However, this only controls packets being sent from Asterisk '''TO''' the RTCM. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to tag packets from the RTCM '''TO''' Asterisk, you need to set the RTCM debug option level to 16 (see [[#Debug Options]] for how this works).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At some point we should probably change the default behaviour of the RTCM firmware to mark the packets and use the debug setting to '''disable''' ToS. That change (if you wanted to compile your own firmware) would be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Change line 90 in IP.c&lt;br /&gt;
&lt;br /&gt;
From:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? 0xc0 : (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY))&lt;br /&gt;
&lt;br /&gt;
To:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY) : 0xc0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This changes the conditional expression from if the debug level is 16 to mark the packets with DSCP 48 to if the debug level is 16, mark the packets routine (DSCP 0).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM Simulcasting=&lt;br /&gt;
The RTCM/VOTER boards do support simulcasting, however, there are a bunch of quirks that one needs to be aware of.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Radio Hardware==&lt;br /&gt;
For best results, you should use all identical RF equipment between your voting RX sites and simulcast TX sites. If you don't, you can end up with strange audio artifacts when different receivers are used, and other strange audio issues when different transmitters are used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==9.6MHz Oscillator==&lt;br /&gt;
If you want reliable simulcast with an acceptable level of overlap warble, you MUST inject a GPS-disciplined or OXCO 9.6MHz signal to the clock of the RTCM's, in lieu of their stock internal crystal. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Otherwise, the inherent internal clock jitter of the RTCM's will cause CTCSS warble, etc. in areas where your transmitters overlap. The 1 PPS feed that you normally feed the RTCM's is acceptable for voting, but naturally, a typical crystal-driven clock will slightly drift in between the pulses every second due to inherent jitter, etc., and that ain't to good for situations like simulcast which demand sample-accurate performance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are some comments from Joe, KC2IRV, on the subject. He has also created his own wiki, specific to simulcast issues, you can find it at: http://rtcmsimulcast.wikifoundry.com/ &lt;br /&gt;
&lt;br /&gt;
:I felt I needed to let those on this mailing list know my findings with simulcasting with the RTCM units since I have received a great deal of help and information from people on this list.&lt;br /&gt;
&lt;br /&gt;
:For the past week I have had a two (2) site simulcast system up and running on UHF using the RTCM units. I have done a great deal of testing and proving on the bench and it is so far working beautifully. &lt;br /&gt;
&lt;br /&gt;
:The one issue that was made apparent to me early on was that in order for the RTCM's to be suitable for simulcast, the processor inside it needed to be clocked to a more accurate source. This source is supposed to be the Programmable Clock Generator Module in order to produce a GPS locked 9.6 MHz reference for the processor. Unfortunately this unit is not currently available.&lt;br /&gt;
&lt;br /&gt;
:Knowing this, I started to go down the road of possibly designing my own, but stumbled upon a cheap, plentiful supply of Symmetricom 9.6 MHz sinewave OCXO's. I took a chance and ordered a few to experiment with to see if the RTCM would be able to use this in place of the supplied crystal for a clock. I found they did, with that I decided to modify the RTCM with an SMA connector just above the audio adjustment pots and use this OCXO. I trimmed the frequency on the units to match each other and used them to produce the processor clock.&lt;br /&gt;
&lt;br /&gt;
:After a week of testing, I have found the results in the overlap areas to be exactly as I would expect them on a public safety/commercial simulcast system. While in an overlap region where both transmitters are within 3dB of one another, to the ear you hear no audio phase wandering. Of course , this has only been a week of testing so I wouldn't call it case closed yet.&lt;br /&gt;
&lt;br /&gt;
:I will say that if this system remains this way after testing for 6 months to a year than using a 9.6 MHz OXCO is a viable alternative to achieve the needed precision and accuracy needed for the processor clock to make it suitable for simulcast.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Comments from Jim Dixon on the issue:&lt;br /&gt;
&lt;br /&gt;
:You have to use '''something''' that will take the precise 10MHz (or whatever it is) from the GPSDO and PLL (phase-locked) convert it to 9.6MHz (square wave at 3.3V for the CPU clock).&lt;br /&gt;
&lt;br /&gt;
:We had to use 9.6MHz mainly because of the DAC in the dsPIC instead of 10MHz. The options for various divide/clock radios in the part are RATHER limited. As I recall, there wasn't even a way of getting the necessary 16kb/s sample rate on the ADC from 10MHZ, either.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Micro-Node RTCM Clock Issue=&lt;br /&gt;
James, KI0KN, had some strange-ness with some of his RTCM's when used for voting. As soon as he changed menu item 10 on the RTCM to either a (1) or a (0) instead of (2), he '''instantly''' got this on the RTCM console:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
04/05/2016 18:44:13.660  Lost GPS Time synchronization&lt;br /&gt;
04/05/2016 18:44:13.660  Host Connection Lost (Pri) (10.16.1.240)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And it sits there forever and never re-establishes connection to the host. The issue was finally traced to a bad batch of 9.6MHz crystals that affected a small run of the RTCM's. The issue was eventually resolved by Micro-Node, but we'll document it here just for record keeping.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
James comments to the list:&lt;br /&gt;
&lt;br /&gt;
:Well, after many of you offered your time and thoughts on my voter problem, Jim, WB6NIL, graciously donated a couple of hours of his time to remotely help me and he uncovered the problem.&lt;br /&gt;
&lt;br /&gt;
:All 5 of my RTCMs were purchased within the last 6 months, and I suspect all 5 have the same problem (will verify that today). The problem is that the microprocessor crystal is running too fast! There is 9.6Mhz crystal that drives the MPU, on the particular unit that Jim helped me diagnose, it's running 2.5 khz too fast.  &lt;br /&gt;
&lt;br /&gt;
:There is a sanity check in the firmware that makes sure the correct number of samples were taken in the last second (it's supposed to be 8000) and fails if the sample is incorrectly sized (mine is taking 8003 samples).  Jim helped adjust the code to be more tolerant of the sampling error and my whole system instantly worked.&lt;br /&gt;
&lt;br /&gt;
:I have since tested it with ALL my GPSs (they all work great!). So I now have everything working, including the voting.&lt;br /&gt;
&lt;br /&gt;
:I haven't contact Micro-Node about it yet. Jim told me that voting should work fine but this clock error would probably not be acceptable for Simulcast (something we have no plans on doing as of now). Since mine are deployed at mountain top sites, I'll probably pursue a crystal that is running at the correct frequency and use &amp;quot;standard&amp;quot; firmware so that if the decision is ever made to play with simulcast, I won't be right back in this same boat.&lt;br /&gt;
&lt;br /&gt;
:Thanks to all that helped out, and a HUGE thanks to Jim for taking the time to troubleshoot this.&lt;br /&gt;
&lt;br /&gt;
:BTW- This clock error will NOT effect the RTCM in mix client mode, it only affects it in voting or simulcast mode!&lt;br /&gt;
&lt;br /&gt;
:In voter.c, the stock line is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if ((samplecnt &amp;gt;= 7999) &amp;amp;&amp;amp; (samplecnt &amp;lt;= 8001))&lt;br /&gt;
&lt;br /&gt;
it needs to be changed to something like:&lt;br /&gt;
&lt;br /&gt;
if ((samplecnt &amp;gt;= 7999) &amp;amp;&amp;amp; (samplecnt &amp;lt;= 8003 ))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:That was just enough to make my first RTCM work. I've had a chance now to check a few more of my RTCMs on the bench this morning and the crystal frequencies are kind of all over.  The next one I had on the bench was 5.2Khz fast. The above code was still not enough to fix it (as would be expected) so it looks like the quality control on whatever manufacturer that crystal is, isn't very good (or a low tolerance crystal is being used). I am going to pursue crystal replacement to get a highly accurate, stable, on-frequency crystal in there as my first choice. Changing the firmware 5 different times doesn't seem like the right answer.&lt;br /&gt;
&lt;br /&gt;
:Jim put that sanity check in there for a reason. Working around it '''may''' allow the device to work, but to me, it seems getting the hardware operating the way it was supposed to originally is the better answer. I will follow up with Micro-node and let you all know how it goes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After following up with Micro-Node:&lt;br /&gt;
:They were all off, some were off a LOT. I talked to Mark @ Micronode. He told me there were 25 units that made it out the door with a crystal from an unapproved source and that was quite likely the reason for the problem. He gladly sent me 5 new crystals to replace (he offered to replace them himself if I sent the units in, but I am comfortable doing it myself to save the time and postage). &lt;br /&gt;
&lt;br /&gt;
:I haven't received them in the mail yet to show that the problem is fixed, but I will post here when that happens. He was great to work with and had no issue getting things set straight. If you are having the same issue and your RTCMs were bought about the same time, I'd suggest you contact him and have him help you resolve the issue!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Duplex Mode 3=&lt;br /&gt;
Does delayed repeat audio bug you? Tired of hearing a bit of yourself after you unkey? Wish you could talk full duplex? Hate the echo chamber effect? Then we have the answer for you.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Duplex Mode 3 in app_rpt allows for &amp;quot;in-cabinet repeat&amp;quot; (where the radio hardware provides repeat audio) and app_rpt adds the hang time, courtesy tones, linking - all the &lt;br /&gt;
things apt_rpt does sans repeat audio. Therefore no repeat audio delay. Cool, eh? This duplex mode has been in app_rpt for a while. Problem has been how to implement it in the RTCM environment. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Duplex Mode 3 support in the RTCM provides in-cabinet repeat functionality. Repeat audio loops through the RTCM and has almost zero delay because it does not have to traverse the network. The delay is not quite zero but it's plenty short enough to eliminate all of the above mentioned annoyances. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Of course Duplex Mode 3 support can't be used with voting or simulcast.&lt;/div&gt;</summary>
		<author><name>Ve7fet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pttlink.org/index.php?title=RTCM_Channel_Driver&amp;diff=46</id>
		<title>RTCM Channel Driver</title>
		<link rel="alternate" type="text/html" href="https://wiki.pttlink.org/index.php?title=RTCM_Channel_Driver&amp;diff=46"/>
		<updated>2017-08-10T02:44:26Z</updated>

		<summary type="html">&lt;p&gt;Ve7fet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The chan/voter channel driver is the interface between Asterisk and the [[RTCM/VOTER Interfaces | RTCM/VOTER]] radio/repeater hardware interface. It allows receiver voting, simulcast transmitters, or just a plain repeater interface when used with the appropriate hardware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This page will document configuring the channel driver, done through voter.conf, as well as some common issues and more obscure features that may not be widely known.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Basic Information On How chan/voter Works=&lt;br /&gt;
Each node has a number of potential &amp;quot;clients&amp;quot; associated with it. In the voter.conf file, each stanza (category) is named by the node number that the clients specified within the stanza are to be associated with. Each entry consists of an arbitrary (relatively meaningless, just included for easy identification purposes within this channel driver, and has nothing to do with its operation) identifier equated to a unique password. This password is programmed into the client. '''All clients must have unique passwords, as that is what is used by this channel driver to identify them.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each channel instance (as opened by app_rpt as a main radio channel, e.g. rxchannel=Voter/1999 in rpt.conf) and is directly associated with the node that opened it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each client has a pair of circular buffers, one for mu-law audio data, and one for RSSI value. The allocated buffer length in all clients is determined by the &amp;quot;buflen&amp;quot; parameter, which is specified in the &amp;quot;global&amp;quot; stanza in the voter.conf file in milliseconds, and represented in the channel driver as number of samples (actual buffer length, which is 8 * milliseconds). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Every channel instance has a index (&amp;quot;drainindex&amp;quot;), indicating the next position within the physical buffer(s) where the audio will be taken from the buffers and presented to the Asterisk channel stream as VOICE frames. Therefore, there is an abstraction of a &amp;quot;buffer&amp;quot; that exists starting at drainindex and ending (modulo) at drainindex - 1, with length of buflen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Buflen is selected so that there is enough time (delay) for any straggling packets to arrive before it is time to present the data to the Asterisk channel. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The idea is that the current audio being presented to Asterisk is from some time shortly in the past. Therefore, &amp;quot;Now&amp;quot; is the position in the abstracted buffer of 'bufdelay' (generally buflen - 160, you gotta at least leave room for an entire frame) and the data is being presented from the start of the abstracted buffer. As the physical buffer moves along, what was once &amp;quot;now&amp;quot; will eventually become far enough in the &amp;quot;past&amp;quot; to be presented to Asterisk (gosh, doesn't this sound like a scene from &amp;quot;Spaceballs&amp;quot;??.. I too always drink coffee while watching &amp;quot;Mr. Radar&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
During the processing of an audio frame to be presented to Asterisk, all client's buffers that are associated with a channel instance (node) are examined by taking an average of the RSSI value for each sample in the associated time period (the first 160 samples of the abstracted buffer (which is the physical buffer from drainindex to drainindex + 159) and whichever one, if any that has the largest RSSI average greater then zero is selected as the audio source for that frame. The corresponding audio buffer's contents (in the corresponding offsets) are presented to Asterisk, then ALL the clients corresponding RSSI data is set to 0, ALL the clients corresponding audio is set to quiet (0x7f). The overwriting of the buffers after their use/examination is done so that the next time those positions in the physical buffer are examined, they will not contain any data that was not actually put there, since all client's buffers are significant regardless of whether they were populated or not. This allows for the true 'connectionless-ness' of this protocol implementation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Asterisk CLI Commands=&lt;br /&gt;
These are the CLI commands that Asterisk and chan/voter supports:&lt;br /&gt;
*voter debug level {0-7}&lt;br /&gt;
**Prints debug information from the channel driver at increasing verbosity&lt;br /&gt;
&lt;br /&gt;
*voter test instance_id [test value] &lt;br /&gt;
**Specifies/Queries test mode for voter instance&lt;br /&gt;
**Test Value can be:&lt;br /&gt;
***0 - Normal voting operation&lt;br /&gt;
***1 - Randomly pick which client of all that are receiving at the max RSSI value to use&lt;br /&gt;
***&amp;gt;1 - Cycle thru all the clients that are receiving at the max RSSI value with a cycle time of (test mode - 1) frames. In other words, if you set it to 2, it will change every single time. If you set it to 11, it will change every 10 times. This is serious torture test.&lt;br /&gt;
&lt;br /&gt;
*voter prio instance_id [client_id] [priority value]&lt;br /&gt;
**Specifies/Queries priority value for voter client&lt;br /&gt;
&lt;br /&gt;
*voter record instance_id [record filename]&lt;br /&gt;
**Enables/Specifies (or disables) recording file for chan/voter&lt;br /&gt;
&lt;br /&gt;
*voter tone instance_id [new_tone_level(0-250)]&lt;br /&gt;
**Sets/Queries Tx CTCSS level for specified chan/voter instance&lt;br /&gt;
&lt;br /&gt;
*voter reload&lt;br /&gt;
**Reload chan/voter parameters&lt;br /&gt;
&lt;br /&gt;
*voter display [instance]&lt;br /&gt;
**Display voter instance clients&lt;br /&gt;
&lt;br /&gt;
*voter txlockout [instance] &amp;lt;client_list&amp;gt;&lt;br /&gt;
**Set Tx Lockout for voter instance clients&lt;br /&gt;
&lt;br /&gt;
*voter ping [client] &amp;lt;# pings, 0 to abort&amp;gt;&lt;br /&gt;
**Ping (check connectivity) to client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=voter.conf Variables=&lt;br /&gt;
This is a dump of variables found in the source... they'll need to be fleshed out with some descriptions and applications:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
linger (uses default if not specified)&lt;br /&gt;
plfilter &amp;lt;--this doesn't seem to work?&lt;br /&gt;
hostdeemp&lt;br /&gt;
duplex (defaults to 1)&lt;br /&gt;
mixminus (defaults to 0)&lt;br /&gt;
streams&lt;br /&gt;
txctcss&lt;br /&gt;
txctcssfreq&lt;br /&gt;
txctcsslevel (defaults to 62)&lt;br /&gt;
txtoctype (defaults to none?, options phase and notone)&lt;br /&gt;
primary&lt;br /&gt;
isprimary&lt;br /&gt;
thresholds&lt;br /&gt;
gtxgain (defaults to default_gtxgain)&lt;br /&gt;
&lt;br /&gt;
password&lt;br /&gt;
sanity&lt;br /&gt;
puckit&lt;br /&gt;
dyntime&lt;br /&gt;
buflen&lt;br /&gt;
utos&lt;br /&gt;
port&lt;br /&gt;
bindaddr&lt;br /&gt;
&lt;br /&gt;
These are options allowed for each site:&lt;br /&gt;
transmit&lt;br /&gt;
master&lt;br /&gt;
adpcm&lt;br /&gt;
nulaw&lt;br /&gt;
dynamic&lt;br /&gt;
gpsid&lt;br /&gt;
buflen&lt;br /&gt;
nodeemp &amp;lt;-- this works, bypasses the deemp filter (sets the switch H)&lt;br /&gt;
hostdeemp&lt;br /&gt;
noplfilter &amp;lt;-- this works, toggles the pl filter in the rtcm (sets the switch L, default seems to be H so the filter is in)&lt;br /&gt;
prio&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Less Known Facts/Features=&lt;br /&gt;
==ADPCM Functionality==&lt;br /&gt;
The original intent was to change this driver to use signed linear internally, but after some thought, it was determined that it was prudent to continue using mulaw as the &amp;quot;standard&amp;quot; internal audio format (with the understanding of the slight degradation in dynamic range when using ADPCM resulting in doing so). This was done because existing external entities (such as the recording files and the streaming stuff) use mulaw as their transport, and changing all of that to signed linear would be cumbersome, inefficient and undesirable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;Dynamic&amp;quot; client functionality==&lt;br /&gt;
'''DON'T USE IT!!'''. It is intentionally '''NOT''' documented to encourage non-use of this feature. It is for demo purposes '''ONLY'''. The chan/voter driver will '''NOT''' properly&lt;br /&gt;
perform reliably in a production environment if this option is used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Duplex Mode 3/Hostdeemp==&lt;br /&gt;
As of VOTER board firmware 1.19 (7/19/2013), there is a set of options in both the firmware (&amp;quot;Offline Menu Item 12, &amp;quot;DUPLEX3 support&amp;quot;), and the &amp;quot;hostdeemp&amp;quot; option (instance-wide) in the voter.conf file on the host.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Duplex Mode 3 in app_rpt allows for &amp;quot;in-cabinet&amp;quot; repeat audio (where the actual radio hardware supplies the repeated audio directly itself, and app_rpt simply &amp;quot;adds&amp;quot; all of the other audio as appropriate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The RTCM/VOTER board now has an option to do the same functionality itself, for a case where local repeat audio is desired without the &amp;quot;network audio delay&amp;quot; normally associated with RTCM/VOTER board operation, and for a radio that doesn't have the option of providing &amp;quot;in cabinet&amp;quot; repeat audio (along with externally provided audio) itself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Because of limitations with the RTCM/VOTER board hardware (being that there is only 1 audio path into the processor, and it either has de-emphasis in its &amp;quot;hardware path&amp;quot; or not), it is necessary if you:&lt;br /&gt;
#Wish to have the &amp;quot;duplex=3&amp;quot; functionality in app_rpt&lt;br /&gt;
#Have the &amp;quot;DUPLEX3&amp;quot; support enabled in the RTCM/VOTER board&lt;br /&gt;
#Have a transmitter that you are &amp;quot;modulating directly&amp;quot; (with flat audio)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If all of the above is true, then you need to use the &amp;quot;hostdeemp&amp;quot; option in chan/voter (voter.conf), which basically &amp;quot;forces&amp;quot; the RTCM '''NOT''' to do de-emphasis in hardware (it will send the non-de-emphasized audio to the host), and have the host &amp;quot;do&amp;quot; the de-emphasis (in software) instead.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This will allow the RTCM/VOTER board to be able to &amp;quot;pass&amp;quot; the non-de-emphaszed audio back into the &amp;quot;direct modulation audio&amp;quot; stream, since that is what will be &amp;quot;presented&amp;quot; to the processor in the RTCM/VOTER board, as the hardware de-emphasis is disabled in this mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you have a transmitter that you are &amp;quot;feeding&amp;quot; line-level (mic) audio, then this mode is not necessary, as the RTCM/VOTER board is fully capable of providing the functionality all by itself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Obviously, it is not valid to use '''ANY''' of the duplex=3 modes in a voted and/or simulcasted system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Redundant &amp;quot;Proxy&amp;quot; Mode==&lt;br /&gt;
A &amp;quot;Redundant&amp;quot; (backup) server may be set up, so that if the &amp;quot;primary&amp;quot; server fails, clients can detect this failure, and connect to the designated &amp;quot;backup&amp;quot; (or &amp;quot;secondary&amp;quot;)&lt;br /&gt;
server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Needless to say, since Internet connectivity is not by any means guaranteed to be consistent, it is possible for some clients to have working connectivity to the &amp;quot;primary&amp;quot; server and not others, even though the &amp;quot;primary&amp;quot; server is functional.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If this was to occur, actual voting and/or simulcast clients would have a &amp;quot;broken&amp;quot; system (being that all the clients need to be on the same server for any sort of functional operation).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To eliminate this possibility, functionality has been added so that a &amp;quot;secondary&amp;quot; server will &amp;quot;proxy&amp;quot; (forward) all of its VOTER packets to the &amp;quot;primary&amp;quot; (if the &amp;quot;primary&amp;quot; is&lt;br /&gt;
on line), and the &amp;quot;primary&amp;quot; will generate all of the outbound VOTER packets, which (for clients &amp;quot;connected&amp;quot; to the &amp;quot;secondary&amp;quot; server) get sent to the &amp;quot;secondary&amp;quot; server to distribution to its clients.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This allows for a &amp;quot;unity&amp;quot; of all of the clients on a network, even though they may be connected to different servers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In addition, it is assumed that &amp;quot;permanent linking&amp;quot; (at least of some sort) will be provided between the channel side of the chan/voter instances (presumably through a &amp;quot;perma-link&amp;quot; provided by app_rpt).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When the &amp;quot;secondary&amp;quot; is &amp;quot;proxying&amp;quot; (to the &amp;quot;primary&amp;quot;) it does not provide direct connectivity to/from its locally-connected clients, thus allowing them to &amp;quot;connect&amp;quot; via the &amp;quot;primary&amp;quot; server instead. In &amp;quot;normal&amp;quot; mode, it works &amp;quot;normally&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The operation is performed by more-or-less &amp;quot;encapsulating&amp;quot; the VOTER packets received by the &amp;quot;secondary&amp;quot; server, and forwarding them on to the &amp;quot;primary&amp;quot; server, where they are &amp;quot;un-encapsulated&amp;quot; and appear to that serer to be coming from clients connected directly to it (and keeps track of which ones are connected in this manner, etc). When it needs to send VOTER packets to a client connected through the &amp;quot;secondary&amp;quot;, it &amp;quot;encapsulates&amp;quot; them, and sends them to the &amp;quot;secondary&amp;quot;, where they get &amp;quot;un-enacpsulated&amp;quot; and sent to their associated connected clients, based upon information in the &amp;quot;encapsulation&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the &amp;quot;secondary&amp;quot; server loses (or does not make) connection to the &amp;quot;primary&amp;quot;, it operates as normal, until such time as it can make the connection.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The server redundancy feature is local to each chan/voter instance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For each chan_voter instance served by both the &amp;quot;primary&amp;quot; and &amp;quot;secondary&amp;quot; servers, the client list (parameters, etc) '''MUST''' be identical.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In addition, the following things must be added uniquely on each server:&lt;br /&gt;
*In the &amp;quot;primary&amp;quot; server, there needs to be a &amp;quot;primary connectivity&amp;quot; client specified for each &amp;quot;secondary&amp;quot; server for which it is &amp;quot;primary&amp;quot;. Basically, this is a client that does NOTHING other then providing a means by which the &amp;quot;secondary&amp;quot; can determine whether the &amp;quot;primary&amp;quot; is on line.&lt;br /&gt;
&lt;br /&gt;
*It is a standard chan/voter client, with nothing else specified other then its password. Again, although it is a &amp;quot;legitimate&amp;quot; client (technically), its only purpose '''MUST''' be to allow the secondary server to connect to it.&lt;br /&gt;
&lt;br /&gt;
*The &amp;quot;primary&amp;quot; server also needs to have the following in all of its instances that require redundancy:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
isprimary = y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*The &amp;quot;secondary&amp;quot; server needs to have the following in all of its instances that require redundancy:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
primary = 12.34.56.78:667,mypswd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Where 12.34.56.78:667 is the IPADDDR:PORT of the &amp;quot;primary&amp;quot; server, and mypswd is the password of the &amp;quot;primary connectivity&amp;quot; client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: Master timing sources '''MUST''' be local to their associated server, and therefore, can not be operated in a redundant configuration. If a radio needs server redundancy, it '''CAN NOT''' be connected to a master timing source. Also, the master timing source '''MUST''' be associated with a chan/voter instance that '''DOES NOT''' have redundancy configured for it, even if a separate instance needs to be created just for this purpose.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, if non-GPS-based operation is all that is needed, just the use of redundancy within the clients is sufficient, and does not require any use of the server redundancy features.&lt;/div&gt;</summary>
		<author><name>Ve7fet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pttlink.org/index.php?title=RTCM_Channel_Driver&amp;diff=45</id>
		<title>RTCM Channel Driver</title>
		<link rel="alternate" type="text/html" href="https://wiki.pttlink.org/index.php?title=RTCM_Channel_Driver&amp;diff=45"/>
		<updated>2017-08-10T02:38:31Z</updated>

		<summary type="html">&lt;p&gt;Ve7fet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The chan/voter channel driver is the interface between Asterisk and the [[RTCM/VOTER Interfaces | RTCM/VOTER]] radio/repeater hardware interface. It allows receiver voting, simulcast transmitters, or just a plain repeater interface when used with the appropriate hardware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This page will document configuring the channel driver, done through voter.conf, as well as some common issues and more obscure features that may not be widely known.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Basic Information On How chan/voter Works=&lt;br /&gt;
Each node has a number of potential &amp;quot;clients&amp;quot; associated with it. In the voter.conf file, each stanza (category) is named by the node number that the clients specified within the stanza are to be associated with. Each entry consists of an arbitrary (relatively meaningless, just included for easy identification purposes within this channel driver, and has nothing to do with its operation) identifier equated to a unique password. This password is programmed into the client. '''All clients must have unique passwords, as that is what is used by this channel driver to identify them.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each channel instance (as opened by app_rpt as a main radio channel, e.g. rxchannel=Voter/1999 in rpt.conf) and is directly associated with the node that opened it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each client has a pair of circular buffers, one for mu-law audio data, and one for RSSI value. The allocated buffer length in all clients is determined by the &amp;quot;buflen&amp;quot; parameter, which is specified in the &amp;quot;global&amp;quot; stanza in the voter.conf file in milliseconds, and represented in the channel driver as number of samples (actual buffer length, which is 8 * milliseconds). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Every channel instance has a index (&amp;quot;drainindex&amp;quot;), indicating the next position within the physical buffer(s) where the audio will be taken from the buffers and presented to the Asterisk channel stream as VOICE frames. Therefore, there is an abstraction of a &amp;quot;buffer&amp;quot; that exists starting at drainindex and ending (modulo) at drainindex - 1, with length of buflen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Buflen is selected so that there is enough time (delay) for any straggling packets to arrive before it is time to present the data to the Asterisk channel. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The idea is that the current audio being presented to Asterisk is from some time shortly in the past. Therefore, &amp;quot;Now&amp;quot; is the position in the abstracted buffer of 'bufdelay' (generally buflen - 160, you gotta at least leave room for an entire frame) and the data is being presented from the start of the abstracted buffer. As the physical buffer moves along, what was once &amp;quot;now&amp;quot; will eventually become far enough in the &amp;quot;past&amp;quot; to be presented to Asterisk (gosh, doesn't this sound like a scene from &amp;quot;Spaceballs&amp;quot;??.. I too always drink coffee while watching &amp;quot;Mr. Radar&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
During the processing of an audio frame to be presented to Asterisk, all client's buffers that are associated with a channel instance (node) are examined by taking an average of the RSSI value for each sample in the associated time period (the first 160 samples of the abstracted buffer (which is the physical buffer from drainindex to drainindex + 159) and whichever one, if any that has the largest RSSI average greater then zero is selected as the audio source for that frame. The corresponding audio buffer's contents (in the corresponding offsets) are presented to Asterisk, then ALL the clients corresponding RSSI data is set to 0, ALL the clients corresponding audio is set to quiet (0x7f). The overwriting of the buffers after their use/examination is done so that the next time those positions in the physical buffer are examined, they will not contain any data that was not actually put there, since all client's buffers are significant regardless of whether they were populated or not. This allows for the true 'connectionless-ness' of this protocol implementation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Asterisk CLI Commands=&lt;br /&gt;
These are the CLI commands that Asterisk and chan/voter supports:&lt;br /&gt;
*voter debug level {0-7}&lt;br /&gt;
**Prints debug information from the channel driver at increasing verbosity&lt;br /&gt;
&lt;br /&gt;
*voter test instance_id [test value] &lt;br /&gt;
**Specifies/Queries test mode for voter instance&lt;br /&gt;
**Test Value can be:&lt;br /&gt;
***0 - Normal voting operation&lt;br /&gt;
***1 - Randomly pick which client of all that are receiving at the max RSSI value to use&lt;br /&gt;
***&amp;gt;1 - Cycle thru all the clients that are receiving at the max RSSI value with a cycle time of (test mode - 1) frames. In other words, if you set it to 2, it will change every single time. If you set it to 11, it will change every 10 times. This is serious torture test.&lt;br /&gt;
&lt;br /&gt;
*voter prio instance_id [client_id] [priority value]&lt;br /&gt;
**Specifies/Queries priority value for voter client&lt;br /&gt;
&lt;br /&gt;
*voter record instance_id [record filename]&lt;br /&gt;
**Enables/Specifies (or disables) recording file for chan/voter&lt;br /&gt;
&lt;br /&gt;
*voter tone instance_id [new_tone_level(0-250)]&lt;br /&gt;
**Sets/Queries Tx CTCSS level for specified chan/voter instance&lt;br /&gt;
&lt;br /&gt;
*voter reload&lt;br /&gt;
**Reload chan/voter parameters&lt;br /&gt;
&lt;br /&gt;
*voter display [instance]&lt;br /&gt;
**Display voter instance clients&lt;br /&gt;
&lt;br /&gt;
*voter txlockout [instance] &amp;lt;client_list&amp;gt;&lt;br /&gt;
**Set Tx Lockout for voter instance clients&lt;br /&gt;
&lt;br /&gt;
*voter ping [client] &amp;lt;# pings, 0 to abort&amp;gt;&lt;br /&gt;
**Ping (check connectivity) to client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Less Known Facts/Features=&lt;br /&gt;
==ADPCM Functionality==&lt;br /&gt;
The original intent was to change this driver to use signed linear internally, but after some thought, it was determined that it was prudent to continue using mulaw as the &amp;quot;standard&amp;quot; internal audio format (with the understanding of the slight degradation in dynamic range when using ADPCM resulting in doing so). This was done because existing external entities (such as the recording files and the streaming stuff) use mulaw as their transport, and changing all of that to signed linear would be cumbersome, inefficient and undesirable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;Dynamic&amp;quot; client functionality==&lt;br /&gt;
'''DON'T USE IT!!'''. It is intentionally '''NOT''' documented to encourage non-use of this feature. It is for demo purposes '''ONLY'''. The chan/voter driver will '''NOT''' properly&lt;br /&gt;
perform reliably in a production environment if this option is used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Duplex Mode 3/Hostdeemp==&lt;br /&gt;
As of VOTER board firmware 1.19 (7/19/2013), there is a set of options in both the firmware (&amp;quot;Offline Menu Item 12, &amp;quot;DUPLEX3 support&amp;quot;), and the &amp;quot;hostdeemp&amp;quot; option (instance-wide) in the voter.conf file on the host.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Duplex Mode 3 in app_rpt allows for &amp;quot;in-cabinet&amp;quot; repeat audio (where the actual radio hardware supplies the repeated audio directly itself, and app_rpt simply &amp;quot;adds&amp;quot; all of the other audio as appropriate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The RTCM/VOTER board now has an option to do the same functionality itself, for a case where local repeat audio is desired without the &amp;quot;network audio delay&amp;quot; normally associated with RTCM/VOTER board operation, and for a radio that doesn't have the option of providing &amp;quot;in cabinet&amp;quot; repeat audio (along with externally provided audio) itself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Because of limitations with the RTCM/VOTER board hardware (being that there is only 1 audio path into the processor, and it either has de-emphasis in its &amp;quot;hardware path&amp;quot; or not), it is necessary if you:&lt;br /&gt;
#Wish to have the &amp;quot;duplex=3&amp;quot; functionality in app_rpt&lt;br /&gt;
#Have the &amp;quot;DUPLEX3&amp;quot; support enabled in the RTCM/VOTER board&lt;br /&gt;
#Have a transmitter that you are &amp;quot;modulating directly&amp;quot; (with flat audio)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If all of the above is true, then you need to use the &amp;quot;hostdeemp&amp;quot; option in chan/voter (voter.conf), which basically &amp;quot;forces&amp;quot; the RTCM '''NOT''' to do de-emphasis in hardware (it will send the non-de-emphasized audio to the host), and have the host &amp;quot;do&amp;quot; the de-emphasis (in software) instead.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This will allow the RTCM/VOTER board to be able to &amp;quot;pass&amp;quot; the non-de-emphaszed audio back into the &amp;quot;direct modulation audio&amp;quot; stream, since that is what will be &amp;quot;presented&amp;quot; to the processor in the RTCM/VOTER board, as the hardware de-emphasis is disabled in this mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you have a transmitter that you are &amp;quot;feeding&amp;quot; line-level (mic) audio, then this mode is not necessary, as the RTCM/VOTER board is fully capable of providing the functionality all by itself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Obviously, it is not valid to use '''ANY''' of the duplex=3 modes in a voted and/or simulcasted system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Redundant &amp;quot;Proxy&amp;quot; Mode==&lt;br /&gt;
A &amp;quot;Redundant&amp;quot; (backup) server may be set up, so that if the &amp;quot;primary&amp;quot; server fails, clients can detect this failure, and connect to the designated &amp;quot;backup&amp;quot; (or &amp;quot;secondary&amp;quot;)&lt;br /&gt;
server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Needless to say, since Internet connectivity is not by any means guaranteed to be consistent, it is possible for some clients to have working connectivity to the &amp;quot;primary&amp;quot; server and not others, even though the &amp;quot;primary&amp;quot; server is functional.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If this was to occur, actual voting and/or simulcast clients would have a &amp;quot;broken&amp;quot; system (being that all the clients need to be on the same server for any sort of functional operation).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To eliminate this possibility, functionality has been added so that a &amp;quot;secondary&amp;quot; server will &amp;quot;proxy&amp;quot; (forward) all of its VOTER packets to the &amp;quot;primary&amp;quot; (if the &amp;quot;primary&amp;quot; is&lt;br /&gt;
on line), and the &amp;quot;primary&amp;quot; will generate all of the outbound VOTER packets, which (for clients &amp;quot;connected&amp;quot; to the &amp;quot;secondary&amp;quot; server) get sent to the &amp;quot;secondary&amp;quot; server to distribution to its clients.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This allows for a &amp;quot;unity&amp;quot; of all of the clients on a network, even though they may be connected to different servers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In addition, it is assumed that &amp;quot;permanent linking&amp;quot; (at least of some sort) will be provided between the channel side of the chan/voter instances (presumably through a &amp;quot;perma-link&amp;quot; provided by app_rpt).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When the &amp;quot;secondary&amp;quot; is &amp;quot;proxying&amp;quot; (to the &amp;quot;primary&amp;quot;) it does not provide direct connectivity to/from its locally-connected clients, thus allowing them to &amp;quot;connect&amp;quot; via the &amp;quot;primary&amp;quot; server instead. In &amp;quot;normal&amp;quot; mode, it works &amp;quot;normally&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The operation is performed by more-or-less &amp;quot;encapsulating&amp;quot; the VOTER packets received by the &amp;quot;secondary&amp;quot; server, and forwarding them on to the &amp;quot;primary&amp;quot; server, where they are &amp;quot;un-encapsulated&amp;quot; and appear to that serer to be coming from clients connected directly to it (and keeps track of which ones are connected in this manner, etc). When it needs to send VOTER packets to a client connected through the &amp;quot;secondary&amp;quot;, it &amp;quot;encapsulates&amp;quot; them, and sends them to the &amp;quot;secondary&amp;quot;, where they get &amp;quot;un-enacpsulated&amp;quot; and sent to their associated connected clients, based upon information in the &amp;quot;encapsulation&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the &amp;quot;secondary&amp;quot; server loses (or does not make) connection to the &amp;quot;primary&amp;quot;, it operates as normal, until such time as it can make the connection.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The server redundancy feature is local to each chan/voter instance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For each chan_voter instance served by both the &amp;quot;primary&amp;quot; and &amp;quot;secondary&amp;quot; servers, the client list (parameters, etc) '''MUST''' be identical.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In addition, the following things must be added uniquely on each server:&lt;br /&gt;
*In the &amp;quot;primary&amp;quot; server, there needs to be a &amp;quot;primary connectivity&amp;quot; client specified for each &amp;quot;secondary&amp;quot; server for which it is &amp;quot;primary&amp;quot;. Basically, this is a client that does NOTHING other then providing a means by which the &amp;quot;secondary&amp;quot; can determine whether the &amp;quot;primary&amp;quot; is on line.&lt;br /&gt;
&lt;br /&gt;
*It is a standard chan/voter client, with nothing else specified other then its password. Again, although it is a &amp;quot;legitimate&amp;quot; client (technically), its only purpose '''MUST''' be to allow the secondary server to connect to it.&lt;br /&gt;
&lt;br /&gt;
*The &amp;quot;primary&amp;quot; server also needs to have the following in all of its instances that require redundancy:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
isprimary = y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*The &amp;quot;secondary&amp;quot; server needs to have the following in all of its instances that require redundancy:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
primary = 12.34.56.78:667,mypswd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Where 12.34.56.78:667 is the IPADDDR:PORT of the &amp;quot;primary&amp;quot; server, and mypswd is the password of the &amp;quot;primary connectivity&amp;quot; client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: Master timing sources '''MUST''' be local to their associated server, and therefore, can not be operated in a redundant configuration. If a radio needs server redundancy, it '''CAN NOT''' be connected to a master timing source. Also, the master timing source '''MUST''' be associated with a chan/voter instance that '''DOES NOT''' have redundancy configured for it, even if a separate instance needs to be created just for this purpose.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, if non-GPS-based operation is all that is needed, just the use of redundancy within the clients is sufficient, and does not require any use of the server redundancy features.&lt;/div&gt;</summary>
		<author><name>Ve7fet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pttlink.org/index.php?title=RTCM_Channel_Driver&amp;diff=44</id>
		<title>RTCM Channel Driver</title>
		<link rel="alternate" type="text/html" href="https://wiki.pttlink.org/index.php?title=RTCM_Channel_Driver&amp;diff=44"/>
		<updated>2017-08-10T02:26:04Z</updated>

		<summary type="html">&lt;p&gt;Ve7fet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The chan/voter channel driver is the interface between Asterisk and the [[RTCM/VOTER Interfaces | RTCM/VOTER]] radio/repeater hardware interface. It allows receiver voting, simulcast transmitters, or just a plain repeater interface when used with the appropriate hardware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This page will document configuring the channel driver, done through voter.conf, as well as some common issues and more obscure features that may not be widely known.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Basic Information On How chan/voter Works=&lt;br /&gt;
Each node has a number of potential &amp;quot;clients&amp;quot; associated with it. In the voter.conf file, each stanza (category) is named by the node number that the clients specified within the stanza are to be associated with. Each entry consists of an arbitrary (relatively meaningless, just included for easy identification purposes within this channel driver, and has nothing to do with its operation) identifier equated to a unique password. This password is programmed into the client. '''All clients must have unique passwords, as that is what is used by this channel driver to identify them.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each channel instance (as opened by app_rpt as a main radio channel, e.g. rxchannel=Voter/1999 in rpt.conf) and is directly associated with the node that opened it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each client has a pair of circular buffers, one for mu-law audio data, and one for RSSI value. The allocated buffer length in all clients is determined by the &amp;quot;buflen&amp;quot; parameter, which is specified in the &amp;quot;global&amp;quot; stanza in the voter.conf file in milliseconds, and represented in the channel driver as number of samples (actual buffer length, which is 8 * milliseconds). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Every channel instance has a index (&amp;quot;drainindex&amp;quot;), indicating the next position within the physical buffer(s) where the audio will be taken from the buffers and presented to the Asterisk channel stream as VOICE frames. Therefore, there is an abstraction of a &amp;quot;buffer&amp;quot; that exists starting at drainindex and ending (modulo) at drainindex - 1, with length of buflen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Buflen is selected so that there is enough time (delay) for any straggling packets to arrive before it is time to present the data to the Asterisk channel. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The idea is that the current audio being presented to Asterisk is from some time shortly in the past. Therefore, &amp;quot;Now&amp;quot; is the position in the abstracted buffer of 'bufdelay' (generally buflen - 160, you gotta at least leave room for an entire frame) and the data is being presented from the start of the abstracted buffer. As the physical buffer moves along, what was once &amp;quot;now&amp;quot; will eventually become far enough in the &amp;quot;past&amp;quot; to be presented to Asterisk (gosh, doesn't this sound like a scene from &amp;quot;Spaceballs&amp;quot;??.. I too always drink coffee while watching &amp;quot;Mr. Radar&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
During the processing of an audio frame to be presented to Asterisk, all client's buffers that are associated with a channel instance (node) are examined by taking an average of the RSSI value for each sample in the associated time period (the first 160 samples of the abstracted buffer (which is the physical buffer from drainindex to drainindex + 159) and whichever one, if any that has the largest RSSI average greater then zero is selected as the audio source for that frame. The corresponding audio buffer's contents (in the corresponding offsets) are presented to Asterisk, then ALL the clients corresponding RSSI data is set to 0, ALL the clients corresponding audio is set to quiet (0x7f). The overwriting of the buffers after their use/examination is done so that the next time those positions in the physical buffer are examined, they will not contain any data that was not actually put there, since all client's buffers are significant regardless of whether they were populated or not. This allows for the true 'connectionless-ness' of this protocol implementation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Less Known Facts/Features=&lt;br /&gt;
==ADPCM Functionality==&lt;br /&gt;
The original intent was to change this driver to use signed linear internally, but after some thought, it was determined that it was prudent to continue using mulaw as the &amp;quot;standard&amp;quot; internal audio format (with the understanding of the slight degradation in dynamic range when using ADPCM resulting in doing so). This was done because existing external entities (such as the recording files and the streaming stuff) use mulaw as their transport, and changing all of that to signed linear would be cumbersome, inefficient and undesirable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;Dynamic&amp;quot; client functionality==&lt;br /&gt;
'''DON'T USE IT!!'''. It is intentionally '''NOT''' documented to encourage non-use of this feature. It is for demo purposes '''ONLY'''. The chan/voter driver will '''NOT''' properly&lt;br /&gt;
perform reliably in a production environment if this option is used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Duplex Mode 3/Hostdeemp==&lt;br /&gt;
As of VOTER board firmware 1.19 (7/19/2013), there is a set of options in both the firmware (&amp;quot;Offline Menu Item 12, &amp;quot;DUPLEX3 support&amp;quot;), and the &amp;quot;hostdeemp&amp;quot; option (instance-wide) in the voter.conf file on the host.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Duplex Mode 3 in app_rpt allows for &amp;quot;in-cabinet&amp;quot; repeat audio (where the actual radio hardware supplies the repeated audio directly itself, and app_rpt simply &amp;quot;adds&amp;quot; all of the other audio as appropriate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The RTCM/VOTER board now has an option to do the same functionality itself, for a case where local repeat audio is desired without the &amp;quot;network audio delay&amp;quot; normally associated with RTCM/VOTER board operation, and for a radio that doesn't have the option of providing &amp;quot;in cabinet&amp;quot; repeat audio (along with externally provided audio) itself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Because of limitations with the RTCM/VOTER board hardware (being that there is only 1 audio path into the processor, and it either has de-emphasis in its &amp;quot;hardware path&amp;quot; or not), it is necessary if you:&lt;br /&gt;
#Wish to have the &amp;quot;duplex=3&amp;quot; functionality in app_rpt&lt;br /&gt;
#Have the &amp;quot;DUPLEX3&amp;quot; support enabled in the RTCM/VOTER board&lt;br /&gt;
#Have a transmitter that you are &amp;quot;modulating directly&amp;quot; (with flat audio)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If all of the above is true, then you need to use the &amp;quot;hostdeemp&amp;quot; option in chan/voter (voter.conf), which basically &amp;quot;forces&amp;quot; the RTCM '''NOT''' to do de-emphasis in hardware (it will send the non-de-emphasized audio to the host), and have the host &amp;quot;do&amp;quot; the de-emphasis (in software) instead.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This will allow the RTCM/VOTER board to be able to &amp;quot;pass&amp;quot; the non-de-emphaszed audio back into the &amp;quot;direct modulation audio&amp;quot; stream, since that is what will be &amp;quot;presented&amp;quot; to the processor in the RTCM/VOTER board, as the hardware de-emphasis is disabled in this mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you have a transmitter that you are &amp;quot;feeding&amp;quot; line-level (mic) audio, then this mode is not necessary, as the RTCM/VOTER board is fully capable of providing the functionality all by itself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Obviously, it is not valid to use '''ANY''' of the duplex=3 modes in a voted and/or simulcasted system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Redundant &amp;quot;Proxy&amp;quot; Mode==&lt;br /&gt;
A &amp;quot;Redundant&amp;quot; (backup) server may be set up, so that if the &amp;quot;primary&amp;quot; server fails, clients can detect this failure, and connect to the designated &amp;quot;backup&amp;quot; (or &amp;quot;secondary&amp;quot;)&lt;br /&gt;
server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Needless to say, since Internet connectivity is not by any means guaranteed to be consistent, it is possible for some clients to have working connectivity to the &amp;quot;primary&amp;quot; server and not others, even though the &amp;quot;primary&amp;quot; server is functional.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If this was to occur, actual voting and/or simulcast clients would have a &amp;quot;broken&amp;quot; system (being that all the clients need to be on the same server for any sort of functional operation).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To eliminate this possibility, functionality has been added so that a &amp;quot;secondary&amp;quot; server will &amp;quot;proxy&amp;quot; (forward) all of its VOTER packets to the &amp;quot;primary&amp;quot; (if the &amp;quot;primary&amp;quot; is&lt;br /&gt;
on line), and the &amp;quot;primary&amp;quot; will generate all of the outbound VOTER packets, which (for clients &amp;quot;connected&amp;quot; to the &amp;quot;secondary&amp;quot; server) get sent to the &amp;quot;secondary&amp;quot; server to distribution to its clients.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This allows for a &amp;quot;unity&amp;quot; of all of the clients on a network, even though they may be connected to different servers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In addition, it is assumed that &amp;quot;permanent linking&amp;quot; (at least of some sort) will be provided between the channel side of the chan/voter instances (presumably through a &amp;quot;perma-link&amp;quot; provided by app_rpt).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When the &amp;quot;secondary&amp;quot; is &amp;quot;proxying&amp;quot; (to the &amp;quot;primary&amp;quot;) it does not provide direct connectivity to/from its locally-connected clients, thus allowing them to &amp;quot;connect&amp;quot; via the &amp;quot;primary&amp;quot; server instead. In &amp;quot;normal&amp;quot; mode, it works &amp;quot;normally&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The operation is performed by more-or-less &amp;quot;encapsulating&amp;quot; the VOTER packets received by the &amp;quot;secondary&amp;quot; server, and forwarding them on to the &amp;quot;primary&amp;quot; server, where they are &amp;quot;un-encapsulated&amp;quot; and appear to that serer to be coming from clients connected directly to it (and keeps track of which ones are connected in this manner, etc). When it needs to send VOTER packets to a client connected through the &amp;quot;secondary&amp;quot;, it &amp;quot;encapsulates&amp;quot; them, and sends them to the &amp;quot;secondary&amp;quot;, where they get &amp;quot;un-enacpsulated&amp;quot; and sent to their associated connected clients, based upon information in the &amp;quot;encapsulation&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the &amp;quot;secondary&amp;quot; server loses (or does not make) connection to the &amp;quot;primary&amp;quot;, it operates as normal, until such time as it can make the connection.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The server redundancy feature is local to each chan/voter instance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For each chan_voter instance served by both the &amp;quot;primary&amp;quot; and &amp;quot;secondary&amp;quot; servers, the client list (parameters, etc) '''MUST''' be identical.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In addition, the following things must be added uniquely on each server:&lt;br /&gt;
*In the &amp;quot;primary&amp;quot; server, there needs to be a &amp;quot;primary connectivity&amp;quot; client specified for each &amp;quot;secondary&amp;quot; server for which it is &amp;quot;primary&amp;quot;. Basically, this is a client that does NOTHING other then providing a means by which the &amp;quot;secondary&amp;quot; can determine whether the &amp;quot;primary&amp;quot; is on line.&lt;br /&gt;
&lt;br /&gt;
*It is a standard chan/voter client, with nothing else specified other then its password. Again, although it is a &amp;quot;legitimate&amp;quot; client (technically), its only purpose '''MUST''' be to allow the secondary server to connect to it.&lt;br /&gt;
&lt;br /&gt;
*The &amp;quot;primary&amp;quot; server also needs to have the following in all of its instances that require redundancy:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
isprimary = y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*The &amp;quot;secondary&amp;quot; server needs to have the following in all of its instances that require redundancy:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
primary = 12.34.56.78:667,mypswd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Where 12.34.56.78:667 is the IPADDDR:PORT of the &amp;quot;primary&amp;quot; server, and mypswd is the password of the &amp;quot;primary connectivity&amp;quot; client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: Master timing sources '''MUST''' be local to their associated server, and therefore, can not be operated in a redundant configuration. If a radio needs server redundancy, it '''CAN NOT''' be connected to a master timing source. Also, the master timing source '''MUST''' be associated with a chan/voter instance that '''DOES NOT''' have redundancy configured for it, even if a separate instance needs to be created just for this purpose.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, if non-GPS-based operation is all that is needed, just the use of redundancy within the clients is sufficient, and does not require any use of the server redundancy features.&lt;/div&gt;</summary>
		<author><name>Ve7fet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pttlink.org/index.php?title=RTCM_Channel_Driver&amp;diff=43</id>
		<title>RTCM Channel Driver</title>
		<link rel="alternate" type="text/html" href="https://wiki.pttlink.org/index.php?title=RTCM_Channel_Driver&amp;diff=43"/>
		<updated>2017-08-10T02:16:19Z</updated>

		<summary type="html">&lt;p&gt;Ve7fet: Created page with &amp;quot;The chan/voter channel driver is the interface between Asterisk and the  RTCM/VOTER radio/repeater hardware interface. It allows receiver voting, si...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The chan/voter channel driver is the interface between Asterisk and the [[RTCM/VOTER Interfaces | RTCM/VOTER]] radio/repeater hardware interface. It allows receiver voting, simulcast transmitters, or just a plain repeater interface when used with the appropriate hardware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This page will document configuring the channel driver, done through voter.conf, as well as some common issues and more obscure features that may not be widely known.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Basic Information On chan/voter Works=&lt;br /&gt;
Each node has a number of potential &amp;quot;clients&amp;quot; associated with it. In the voter.conf file, each stanza (category) is named by the node number that the clients specified within the stanza are to be associated with. Each entry consists of an arbitrary (relatively meaningless, just included for easy identification purposes within this channel driver, and has nothing to do with its operation) identifier equated to a unique password. This password is programmed into the client. '''All clients must have unique passwords, as that is what is used by this channel driver to identify them.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each channel instance (as opened by app_rpt as a main radio channel, e.g. rxchannel=Voter/1999 in rpt.conf) and is directly associated with the node that opened it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each client has a pair of circular buffers, one for mu-law audio data, and one for RSSI value. The allocated buffer length in all clients is determined by the &amp;quot;buflen&amp;quot; parameter, which is specified in the &amp;quot;global&amp;quot; stanza in the voter.conf file in milliseconds, and represented in the channel driver as number of samples (actual buffer length, which is 8 * milliseconds). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Every channel instance has a index (&amp;quot;drainindex&amp;quot;), indicating the next position within the physical buffer(s) where the audio will be taken from the buffers and presented to the Asterisk channel stream as VOICE frames. Therefore, there is an abstraction of a &amp;quot;buffer&amp;quot; that exists starting at drainindex and ending (modulo) at drainindex - 1, with length of buflen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Buflen is selected so that there is enough time (delay) for any straggling packets to arrive before it is time to present the data to the Asterisk channel. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The idea is that the current audio being presented to Asterisk is from some time shortly in the past. Therefore, &amp;quot;Now&amp;quot; is the position in the abstracted buffer of 'bufdelay' (generally buflen - 160, you gotta at least leave room for an entire frame) and the data is being presented from the start of the abstracted buffer. As the physical buffer moves along, what was once &amp;quot;now&amp;quot; will eventually become far enough in the &amp;quot;past&amp;quot; to be presented to Asterisk (gosh, doesn't this sound like a scene from &amp;quot;Spaceballs&amp;quot;??.. I too always drink coffee while watching &amp;quot;Mr. Radar&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
During the processing of an audio frame to be presented to Asterisk, all client's buffers that are associated with a channel instance (node) are examined by taking an average of the RSSI value for each sample in the associated time period (the first 160 samples of the abstracted buffer (which is the physical buffer from drainindex to drainindex + 159) and whichever one, if any that has the largest RSSI average greater then zero is selected as the audio source for that frame. The corresponding audio buffer's contents (in the corresponding offsets) are presented to Asterisk, then ALL the clients corresponding RSSI data is set to 0, ALL the clients corresponding audio is set to quiet (0x7f). The overwriting of the buffers after their use/examination is done so that the next time those positions in the physical buffer are examined, they will not contain any data that was not actually put there, since all client's buffers are significant regardless of whether they were populated or not. This allows for the true 'connectionless-ness' of this protocol implementation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Less Known Facts/Features=&lt;br /&gt;
==ADPCM Functionality==&lt;br /&gt;
The original intent was to change this driver to use signed linear internally, but after some thought, it was determined that it was prudent to continue using mulaw as the &amp;quot;standard&amp;quot; internal audio format (with the understanding of the slight degradation in dynamic range when using ADPCM resulting in doing so). This was done because existing external entities (such as the recording files and the streaming stuff) use mulaw as their transport, and changing all of that to signed linear would be cumbersome, inefficient and undesirable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==&amp;quot;Dynamic&amp;quot; client functionality==&lt;br /&gt;
'''DON'T USE IT!!'''. It is intentionally '''NOT''' documented to encourage non-use of this feature. It is for demo purposes '''ONLY'''. The chan/voter driver will '''NOT''' properly&lt;br /&gt;
perform reliably in a production environment if this option is used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Redundant &amp;quot;Proxy&amp;quot; Mode==&lt;br /&gt;
A &amp;quot;Redundant&amp;quot; (backup) server may be set up, so that if the &amp;quot;primary&amp;quot; server fails, clients can detect this failure, and connect to the designated &amp;quot;backup&amp;quot; (or &amp;quot;secondary&amp;quot;)&lt;br /&gt;
server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Needless to say, since Internet connectivity is not by any means guaranteed to be consistent, it is possible for some clients to have working connectivity to the &amp;quot;primary&amp;quot; server and not others, even though the &amp;quot;primary&amp;quot; server is functional.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If this was to occur, actual voting and/or simulcast clients would have a &amp;quot;broken&amp;quot; system (being that all the clients need to be on the same server for any sort of functional operation).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To eliminate this possibility, functionality has been added so that a &amp;quot;secondary&amp;quot; server will &amp;quot;proxy&amp;quot; (forward) all of its VOTER packets to the &amp;quot;primary&amp;quot; (if the &amp;quot;primary&amp;quot; is&lt;br /&gt;
on line), and the &amp;quot;primary&amp;quot; will generate all of the outbound VOTER packets, which (for clients &amp;quot;connected&amp;quot; to the &amp;quot;secondary&amp;quot; server) get sent to the &amp;quot;secondary&amp;quot; server to distribution to its clients.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This allows for a &amp;quot;unity&amp;quot; of all of the clients on a network, even though they may be connected to different servers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In addition, it is assumed that &amp;quot;permanent linking&amp;quot; (at least of some sort) will be provided between the channel side of the chan/voter instances (presumably through a &amp;quot;perma-link&amp;quot; provided by app_rpt).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When the &amp;quot;secondary&amp;quot; is &amp;quot;proxying&amp;quot; (to the &amp;quot;primary&amp;quot;) it does not provide direct connectivity to/from its locally-connected clients, thus allowing them to &amp;quot;connect&amp;quot; via the &amp;quot;primary&amp;quot; server instead. In &amp;quot;normal&amp;quot; mode, it works &amp;quot;normally&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The operation is performed by more-or-less &amp;quot;encapsulating&amp;quot; the VOTER packets received by the &amp;quot;secondary&amp;quot; server, and forwarding them on to the &amp;quot;primary&amp;quot; server, where they are &amp;quot;un-encapsulated&amp;quot; and appear to that serer to be coming from clients connected directly to it (and keeps track of which ones are connected in this manner, etc). When it needs to send VOTER packets to a client connected through the &amp;quot;secondary&amp;quot;, it &amp;quot;encapsulates&amp;quot; them, and sends them to the &amp;quot;secondary&amp;quot;, where they get &amp;quot;un-enacpsulated&amp;quot; and sent to their associated connected clients, based upon information in the &amp;quot;encapsulation&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the &amp;quot;secondary&amp;quot; server loses (or does not make) connection to the &amp;quot;primary&amp;quot;, it operates as normal, until such time as it can make the connection.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The server redundancy feature is local to each chan/voter instance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For each chan_voter instance served by both the &amp;quot;primary&amp;quot; and &amp;quot;secondary&amp;quot; servers, the client list (parameters, etc) '''MUST''' be identical.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In addition, the following things must be added uniquely on each server:&lt;br /&gt;
*In the &amp;quot;primary&amp;quot; server, there needs to be a &amp;quot;primary connectivity&amp;quot; client specified for each &amp;quot;secondary&amp;quot; server for which it is &amp;quot;primary&amp;quot;. Basically, this is a client that does NOTHING other then providing a means by which the &amp;quot;secondary&amp;quot; can determine whether the &amp;quot;primary&amp;quot; is on line.&lt;br /&gt;
&lt;br /&gt;
*It is a standard chan/voter client, with nothing else specified other then its password. Again, although it is a &amp;quot;legitimate&amp;quot; client (technically), its only purpose '''MUST''' be to allow the secondary server to connect to it.&lt;br /&gt;
&lt;br /&gt;
*The &amp;quot;primary&amp;quot; server also needs to have the following in all of its instances that require redundancy:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
isprimary = y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*The &amp;quot;secondary&amp;quot; server needs to have the following in all of its instances that require redundancy:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
primary = 12.34.56.78:667,mypswd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Where 12.34.56.78:667 is the IPADDDR:PORT of the &amp;quot;primary&amp;quot; server, and mypswd is the password of the &amp;quot;primary connectivity&amp;quot; client&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: Master timing sources '''MUST''' be local to their associated server, and therefore, can not be operated in a redundant configuration. If a radio needs server redundancy, it '''CAN NOT''' be connected to a master timing source. Also, the master timing source '''MUST''' be associated with a chan/voter instance that '''DOES NOT''' have redundancy configured for it, even if a separate instance needs to be created just for this purpose.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, if non-GPS-based operation is all that is needed, just the use of redundancy within the clients is sufficient, and does not require any use of the server redundancy features.&lt;/div&gt;</summary>
		<author><name>Ve7fet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=42</id>
		<title>RTCM Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=42"/>
		<updated>2017-08-10T00:28:59Z</updated>

		<summary type="html">&lt;p&gt;Ve7fet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Micro-Node RTCM and VOTER interfaces are typically used with AllStar in voting/simulcast applications. They MAY be used for ANY repeater interface application, through the chan/voter channel driver. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER is the original through-hole board designed by Jim Dixon for this application. It is open-source, and the relevant Gerber files and BoM to build it are available. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The [http://www.micro-node.com/thin-m1.shtml Micro-Node Radio Thin Client Module (RTCM)] is the commercial version of the VOTER. It uses surface mount parts (SMT), but is functionally equivalent to the original VOTER. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In general, the two terms (RTCM/VOTER) are used interchangeably, as they operate the same, and use the same firmware (mostly, see below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This page will highlight some of the operational concerns, quirks, bugs, and other items of interest that relate to these interfaces. Much of the information has been gleaned off the AllStar mail list, comes from personal experience, or comes from notes in the firmware source code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Firmware=&lt;br /&gt;
The firmware in the RTCM and VOTER is the same, except it is compiled for the specific dsPIC that is installed in each. As such, the firmware is specific to the VOTER or the RTCM, and is NOT interchangeable (it won't boot in the wrong device). Firmware for the RTCM is denoted by &amp;quot;smt&amp;quot; in the filename.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are '''two parts''' to the firmware, a bootloader, and then the actual firmware file. The bootloader starts when power is applied, and allows you to talk to the dsPIC and load new firmware files over ethernet. If the bootloader is not intercepted by the loading tool, it will continue to boot the current firmware file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All new boards will need to have the bootloader installed first, followed by a firmware file. You '''can''' load a firmware file directly (.hex) in to the dsPIC, but then you will not have any of the bootloader remote loading features.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The current bootloader (.cof file) is available here: https://github.com/AllStarLink/voter/tree/master/voter-bootloader (the -smt file is for the RTCM). It needs to be loaded with a PICKit programmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Current firmware (.cry file) is available here: https://github.com/AllStarLink/voter/tree/master/board-firmware . They are loaded with the EBLEX C30 Programmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are multiple &amp;quot;flavors&amp;quot; of firmware available. See below for further explanation of what all the options mean.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The DSPBEW versions have Jim's DSP/BEW feature enabled. Note that due to the size of this feature, the diagnostics menu is NOT available in this version.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CHUCK versions have Chuck Henderson's RSSI and Squelch modifications enabled. This is probably the version that most user's will want to use in production.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Compiling Environment==&lt;br /&gt;
If you look in the [https://github.com/AllStarLink/voter/blob/master/votersystem.pdf votersystem.pdf], you will find a procedure to modify and load the bootloader in to the dsPIC of a VOTER board. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Unfortunately, there is an important step '''missing''' in that procedure, which is covered below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In addition, the old links for the MPLAB software are dead, so let's update this info and get you going.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Currently (Feb 2017), you can get the required software from:&lt;br /&gt;
:http://www.microchip.com/development-tools/downloads-archive&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download MPLAB IDE 32-bit Windows v8.66:&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_IDE_v8_66.zip&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/MPLAB_IDE_v8_66.zip&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download MPLAB C Compiler for PIC24 and dsPIC DSCs v3.31 '''NOT v.3.25''':&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Optionally, install Windows Virtual PC and XP Mode. This is getting to be pretty old software, so running it under XP Mode may be a good idea, so we can keep it isolated (install it in a virtual machine). It does run fine in Windows 7.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To setup the compile/build environment, follow these steps:&lt;br /&gt;
*Run the MPLAB IDE installer. You don't need to install the HI-TECH C Compiler at the end (click no)&lt;br /&gt;
*Run the MPLAB C Compiler installer&lt;br /&gt;
*Select Legacy Directory Name&lt;br /&gt;
*'''Select Lite Compiler'''&lt;br /&gt;
*Go to: https://github.com/AllStarLink&lt;br /&gt;
*Follow the links to: voter --&amp;gt; Clone or Download --&amp;gt; Download Zip. That will get you voter-master.zip which is a download of the whole VOTER tree from GitHub.&lt;br /&gt;
*Extract it somewhere (ie. in the XP Mode Virtual PC)&lt;br /&gt;
*Launch the MPLAB IDE&lt;br /&gt;
*Go to Configure --&amp;gt; Settings --&amp;gt; Projects and de-select one-to-one project mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bootloader==&lt;br /&gt;
If you need to load the bootloader in to a fresh board, you will need to follow these steps:&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; voter-bootloader.mcp --&amp;gt; Open (it is in the voter-bootloader folder of the GitHub source)&lt;br /&gt;
*Go to File --&amp;gt; Import --&amp;gt; voter-bootloader --&amp;gt; ENC_C30.cof --&amp;gt; Open '''This step is missing from the original procedure.'''&lt;br /&gt;
*Remove JP7 on the VOTER Board. This is necessary to allow programming by the PICKit2/PICKit3 device.&lt;br /&gt;
*Attach the PICKIT2/PICKit3 device to J1 on the VOTER board. Note that Pin 1 is closest to the power supply modules (as indicated on the board).&lt;br /&gt;
*If you have not already selected a programming device, go to Programmer --&amp;gt; Select Device and choose PICKit3 (or PICKit2, depending on what you are using).&lt;br /&gt;
*Go to Programmer --&amp;gt; Program. This will program the bootloader firmware into the PIC device on the board.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to change the default IP address from 192.168.1.11 in the bootloader:&lt;br /&gt;
*Select View --&amp;gt; Program Memory (from the top menu bar)&lt;br /&gt;
*Hit Control-F (to &amp;quot;find&amp;quot;) and search for the digits &amp;quot;00A8C0&amp;quot;.&lt;br /&gt;
*These should be found at memory address &amp;quot;03018&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;A8C0&amp;quot; at 03018 represents the hex digits C0 (192) and A8 (168) which are the first two octets of the IP address. The six digits to enter are 00 then the SECOND octet of the IP address in hex then the FIRST octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;0B01&amp;quot; at 0301A represents the hex digits 0B (11) and 01 (1) which are the second two octets of the IP address. The six digits to enter are 00 then the FOURTH octet of the IP address in hex then the THIRD octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you have modified the address to your desired IP, follow the programming procedure (above).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Firmware==&lt;br /&gt;
To compile the firmware (if you want to make custom changes):&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; navigate to board-firmware and open the .mcp file for the flavor of firmware you want to compile. They are in the board-firmware folder of the GitHub source.&lt;br /&gt;
*'''NOTE''': the .mcp files with the &amp;quot;smt&amp;quot; suffix are for the RTCM (built with SMT parts). The non-smt files are for the ORIGINAL through-hole VOTER boards. The difference is that the VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
*Go to Project --&amp;gt; Build Configuration and select &amp;quot;Release&amp;quot;. This may not be necessary (I don't believe that option is used in the firmware), but it removes the compiler option of __DEBUG being passed, so theoretically it would build &amp;quot;normal&amp;quot; firmware.&lt;br /&gt;
*Go to Configure --&amp;gt; Select Device and choose the appropriate device for your board from the Device list. If you don't select the right one, the board will not boot. Select dsPIC33FJ128GP802 for the VOTER, and dsPIC33FJ128GP804 for the RTCM.&lt;br /&gt;
*Now, if you go to Project --&amp;gt; Build All it should compile everything and show you &amp;quot;Build Succeeded&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A .cry file should be in the board-firmware folder. You can load this with the ENC Loader.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is also a .hex file in there that you could load with a programmer... but that would wipe the bootloader... so don't do that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Chuck Squelch==&lt;br /&gt;
If you want to enable &amp;quot;Chuck Squelch&amp;quot;, open the HardwareProfile.h and un-comment #define CHUCK. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may also want to go down to Line 291 in Voter.c (right click on the window, go to Properties --&amp;gt; &amp;quot;C&amp;quot; File Types --&amp;gt; Line Numbers) and tack on CHUCK after 1.60 (the current version number) so that when you load this firmware, the version will be shown as 1.51CHUCK, and you'll know that Chuck Squelch is compiled in. We should probably make that more automagic in the future...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==DSP/BEW==&lt;br /&gt;
If you want to compile the DSPBEW version, open the DSPBEW project file instead.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DSP/BEW Firmware Version=&lt;br /&gt;
DSP BEW Firmware is mutually exclusive with the diagnostic menu. There is not enough space for both, if you load the DSP/BEW firmware, you will '''NOT''' have a diag menu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BEW stands for Baseband Examination Window.&lt;br /&gt;
&lt;br /&gt;
Typically, the discriminator of an FM communications receiver produces results containing audio spectrum from the &amp;quot;sub-audible&amp;quot; range (typically &amp;lt; 100 Hz) to well above frequencies able to be produced by modulating audio. These higher frequencies can be utilized to determine signal quality, since they can only contain noise (or no noise, if a sufficiently strong signal is present).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For receivers (such as the Motorola Quantar, etc) that do not provide sufficient spectral content at these &amp;quot;noise&amp;quot; frequencies (for various reasons), The &amp;quot;DSP/BEW (Digital Signal Processor / Baseband Examination Window)&amp;quot; feature of the RTCM firmware may be utilized. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These receivers are perfectly capable of providing valid &amp;quot;noise&amp;quot; signal with no modulation on the input of the receiver, but with strong modulation (high frequency audio and high deviation), it severely interferes with proper analysis of signal strength.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This feature provides a means by which a &amp;quot;Window&amp;quot; of baseband (normal audio range) signal is examined by a DSP and a determination of whether or not sufficient audio is present to cause interference of proper signal strength is made. During the VERY brief periods of time when it is determined that sufficient audio is present to cause interference, the signal strength value is &amp;quot;held&amp;quot; (the last valid value previous to the time of interference) until such time that the interfering audio is no longer present.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The DSP/BEW feature is selectable, and '''should not''' be used for a receiver that does not need it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A note on the Motorola SLR5700 per VE7FET. DSP/BEW definitely makes a difference on what AllMon reports for the signal strength of received signals. It is less reactive when DSP/BEW = 1 than with it set to 0. We'll have to see what the real world trials show. It might be better to leave it off.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Chuck Squelch=&lt;br /&gt;
&amp;quot;Chuck Squelch&amp;quot; are a couple firmware changes made by Chuck Henderson, WB9UUS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pre-compiled firmware versions including this option are available on [https://github.com/AllStarLink/voter/tree/master/board-firmware GitHub]. See above on how it is enabled/compiled, if you are rolling your own firmware modifications.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
One of the changes fixes an issue with weak signals producing RSSI readings all over the place. It is caused by a 16 bit value that was overflowing (it is the RSSI change in the firmware). It results in rock-solid RSSI values being reported, even on barely or non-readable signals. '''This change will likely be rolled in to a permanent fix in a future firmware release.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The other firmware change changes how the squelch responds (looks at the noise in the last two audio samples) and makes the &amp;quot;Micor squelch&amp;quot; action work better.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may also want to consider the following changes in /etc/asterisk/voter.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;Comment out:&lt;br /&gt;
;thresholds =&lt;br /&gt;
&lt;br /&gt;
;and set:&lt;br /&gt;
linger = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Squelch Issues==&lt;br /&gt;
*If anyone is off frequency a little bit, that will make the voice talk off worse. Double check that the repeater and the users are all on frequency.&lt;br /&gt;
*Don't use narrow bandwidth on the repeater receiver. &lt;br /&gt;
*Make sure that the discriminator audio is not rolled off even a little bit at the high end. There should not be resistors in series or capacitors to ground between the discriminator chip output pin and the voter board input, for best results.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM/VOTER LED's=&lt;br /&gt;
RX LED on the RTCM/VOTER will flash (same rate as ACT LED) if you have External CTCSS enabled, and the received signal has the wrong (or no) valid PL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Network Information=&lt;br /&gt;
==RTCM/VOTER Bandwidth==&lt;br /&gt;
Assuming ulaw... The RTCM will require approximately 80kbps of bandwidth for continual usage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Network Quality==&lt;br /&gt;
Your IP Network quality is important. You may wish to add a rule in your routers to prioritize traffic on UDP port 667 so that RTCM audio is given priority over other &lt;br /&gt;
traffic. Also see the [[#Debug Options]] below for notes on how to tag your packets with ToS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==RX/TX Buffers are NOT Both Millisecond Values== &lt;br /&gt;
You might assume an RX buffer (in voter.conf) of 120ms would be equivalent of a TX buffer (in the RTCM) of 120ms. That is not the case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The TX buffer is a number of 125 '''microsecond''' intervals, where the RX buffer is in milliseconds. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you follow the buffer setting instructions, you should be fine, in most cases. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Debug Options=&lt;br /&gt;
The VOTER/RTCM firmware supports some additional debugging information that can be turned on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
From the source code, the different Debug Options are listed as:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1 - Alt/Main Host change notifications&lt;br /&gt;
2 - Ignore HWlock (GGPS only)&lt;br /&gt;
4 - GPS/PPS Failure simulation (GGPS only)&lt;br /&gt;
8 - POCSAG H/W output disable (GGPS only)&lt;br /&gt;
16 - IP TOS Class for Ubiquiti&lt;br /&gt;
32 - GPS Debug&lt;br /&gt;
64 - Fix GPS 1 second off&lt;br /&gt;
128 - Fix GPS 1 month off (WTF,O??)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Not sure what they all do, but that is what they are. Here are the most common ones used:&lt;br /&gt;
*&amp;quot;Alt/Main Host change notifications&amp;quot; shows when the connection to the Asterisk server changes state.&lt;br /&gt;
*&amp;quot;IP TOS Class for Ubiquity&amp;quot; marks the IP headers from the RTCM/VOTER '''TO''' the network with ToS C0/DSCP 48 (UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS &lt;br /&gt;
latency). Other sources show this as a Network Control TOS.) If you enable this, you also will want to have &amp;quot;utos=y&amp;quot; in your voter.conf to mark the packets from the network '''TO''' the RTCM/VOTER. We will probably change this option to mark the packets by default in a future version.&lt;br /&gt;
*&amp;quot;GPS Debug&amp;quot; will print NMEA or TSIP debug strings from the connected GPS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The way this works is you add together the options you want to enable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Want to enable GPS Debug and IP ToS, set debug to 48.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just want to turn on GPS Debug, set debug to 32.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just want ToS turned on, set debug to 16.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Un-documented Menus/Features=&lt;br /&gt;
*Menu 96 - If firmware compiled with DUMPENCREGS enabled, Menu 96 looks like it dumps the registers from the ENC (Ethernet) chip?&lt;br /&gt;
&lt;br /&gt;
*Menu 111 - show the &amp;quot;hidden&amp;quot; option values (normally they should all be 0).&lt;br /&gt;
&lt;br /&gt;
*Menu 11780 - set the &amp;quot;Elkes&amp;quot; value? No idea what this does.&lt;br /&gt;
&lt;br /&gt;
*Menu 1103 - set the &amp;quot;Glaser&amp;quot; timer value? No idea what this does.&lt;br /&gt;
&lt;br /&gt;
*Menu 1170 - set &amp;quot;Sawyer Mode&amp;quot;. No idea what this does, it was a modification Jim made for Tim Sawyer, but Tim doesn't recall what it was for. :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Audio=&lt;br /&gt;
The RTCM/VOTER is totally flexible regarding emphasis. Although the way it is set is completely obscure. It tries to automatically do the right thing for you, which is great most of the time. But when it’s not, it's hard to know what is going on. &lt;br /&gt;
&lt;br /&gt;
If you are changing the COR Type settings, or nodeemp in voter.conf, make sure you save/reboot the RTCM/VOTER every time you make a change... changes are '''not''' effective until the RTCM/VOTER reboots!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Voting==&lt;br /&gt;
Before we get in to the different ways audio is routed, there is an important consideration you need to make if you are using the RTCM/VOTER for voting. &lt;br /&gt;
&lt;br /&gt;
The way the voting process works, it needs '''discriminator audio''' to determine the signal to noise level from each satellite receiver. As such, you will need to be feeding discriminator audio in to the RX audio pin, so that the hardware/software can vote properly. That means you also need to let the hardware/software do the squelch action.&lt;br /&gt;
&lt;br /&gt;
If you need RX CTCSS, you'll need to feed logic from an external CTCSS decoder in to the CTCSS input pin.&lt;br /&gt;
&lt;br /&gt;
Also, don't disable COR in the RTCM/VOTER... it will cause it to disable the squelch and it will report an RSSI of 255 (full quieting) for all received signals.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Receiver De-emphasis==&lt;br /&gt;
On the RX side the COR Type setting in the RTCM/VOTER determines whether the de-emphasis filter is used for RX audio. 0=Normal means the RTCM/VOTER squelch circuit is in use and it is expecting discriminator audio on the RX pin (to be able to do the squelch action), and therefore it '''will''' provide de-emphasis (audio is routed THROUGH the de-emphasis RC filter circuit) to the receiver audio. COR Type 1=IGNORE COR uses the CTCSS input pin for COR or CTCSS ''logic'' and it then expects de-emphasized receive (line) audio on the RX pin, and therefore will '''not''' provide de-emphasis to the received audio (the RC filter is switched '''out''' and audio passes straight through). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Most of the time, you do NOT need to override the automatic filter selection. However, if you do, and you are sure you have a good reason to, you CAN switch the de-emphasis filter '''out''' of the circuit so that audio passes straight through to the encoder. You would do this by setting the nodeemp=1 option in voter.conf. When you set nodeemp=1, the ''VOTER Protocol'' tells the RTCM/VOTER to switch the filter '''out''', so audio is passed straight through.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Transmitter Pre-emhpasis==&lt;br /&gt;
On the TX side, the RTCM/VOTER expects the repeater to accept ''mic audio''. In other words, the '''repeater''' is providing the pre-emphasis, not the RTCM/VOTER (you are '''not''' directly modulating the TX). This can be overridden by setting CTCSS tone in voter.conf. If a CTCSS tone is defined, the RTCM '''will''' provide pre-emphasis to the audio, and expects that you will be connecting to your repeater's flat audio input (direct modulation). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you don’t want TX CTCSS tone but '''do''' need pre-emphasis, set an arbitrary (any) CTCSS tone in voter.conf, and set the level to 0. This will force the RTCM/VOTER to pre-emphasize the audio it generates on the TX pin, but it won't actually mix in a CTCSS tone. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Level Setting==&lt;br /&gt;
Setting the audio levels for the RTCM/VOTER is pretty straight forward. Just follow these steps:&lt;br /&gt;
*Ensure you have a connection to your host Asterisk server/chan_voter instance&lt;br /&gt;
*Send a 1kHz@3kHz on-channel, full-quieting signal in to the repeater's RX&lt;br /&gt;
*Set the RX up so it reads 3kHz deviation on the RTCM's built in console meter&lt;br /&gt;
*Now set the TX level '''pot''' to get 3kHz out of the transmitter (No PL)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now change the modulation from 1kHz tone to 800Hz followed by 1.8kHz and verify that the deviation level doesn't change as the tone frequency changes. '''Changing levels indicates a pre/de-emphasis issue.''' You will want to read the above sections on how audio is handled, and figure out where your issue is.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If using PL you have to account for that deviation, unless you filter it out with your IFR (test set). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That's it!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Optionally, if you are using the built-in &amp;quot;offline repeat&amp;quot; functions, fail the connection to the host Asterisk server, and make sure your repeat audio performs the same as above.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Crappy Transmit Audio==&lt;br /&gt;
&lt;br /&gt;
Does your repeated audio sounded really bassy, muffled, and not very understandable? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There was a situation where, compared to a typical simplex radio-to-radio transmission, the audio through the repeater (RTCM and Asterisk) was unacceptable. What was discovered was that the RTCM has an internal pre-emphasis function that was disabled. The user had intentionally disabled &amp;quot;txctcss&amp;quot; and &amp;quot;txctcsslevel&amp;quot; in voter.conf because he didn't &lt;br /&gt;
want the RTCM transmitting CTCSS (the Quantar was doing that already). He ultimately found a post on the mail list explaining the settings above that said enabling txctcss = some valid tone (114.8 in his case) and setting txctcsslevel = 0 would turn on the pre-emphasis function in the RTCM without transmitting CTCSS tones. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
He did, and it worked like a charm! Audio now had more treble and was less bassy/muffled. So, future RTCM users, be sure not to comment out txctcss and txctcsslevel in voter.conf!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just enable and set the level to 0. You'll thank me later. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=GPS=&lt;br /&gt;
The RTCM/VOTER will work with most GPS available. It requires either NMEA or Trimble TSIP binary data. It only receives data '''from''' the GPS (GPS TX), it does not send anything '''to''' the GPS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The firmware is specifically written to talk to Trimble Thunderbolt receivers using Trimble's TSIP binary data interface, however, other Trimbles GPS receivers that talk TSIP are generally compatible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==NMEA Sentences==&lt;br /&gt;
If you are using an NMEA GPS (as opposed to a Trimble using the TSIP binary interface), the RTCM/VOTER is looking for the following NMEA sentences:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$GPGGA&lt;br /&gt;
$GPGSV&lt;br /&gt;
$GPRMC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Lock==&lt;br /&gt;
The GPS led will go solid regardless of the connection LED. That '''has''' to happen or it won't connect to the Asterisk server. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is not unusual for it to take up to 20 mins to get a GPS lock LED (ie. using a Trimble Thunderbolt) after any reboot. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS De-sense==&lt;br /&gt;
If you are having odd loss of lock issues, consider you may have interference to your GPS antenna from strong RF nearby. A note from Jesse Lloyd:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I also had crazy problems with poor signal on my GPS when I set it up sitting in a window, and once installed at site I had the GPS antenna maybe 6 ft from the VHF antenna, and after some troubleshooting found it was getting swamped with RF and loosing lock. &lt;br /&gt;
&lt;br /&gt;
I found the debug setting of 32 useful in the RTCM, you can see a hex output of the GPS status.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Issues==&lt;br /&gt;
===Trimble Thunderbolt===&lt;br /&gt;
You may find your Trimble Thunderbolt is showing the incorrect date at the moment. It could be showing the year as 1997. This is due to the date in the Thunderbolt being reported incorrectly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''This can cause some of your voting receivers to not connect, if they are used with other GPS in your system.''' If you have '''ALL''' Thunderbolts, or '''NO''' Thunderbolts, you are probably fine. If you have '''ALL''' Thunderbolts, the date/time is probably wrong, but they will ALL be wrong, so they will connect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GPS Time is a continuous counting time scale beginning at the January 5, 1980 to January 6, 1980 midnight. It is split into two parts: a time of week measured in seconds from midnight Sat/Sun and a week number. The time of week is transmitted in an unambiguous manner by the satellites, but only the bottom 10 bits of the week number are transmitted. This means that a receiver will see a week number count that goes up steadily until it reaches 1023 after which it will “roll over” back to zero, before steadily going up again. Such a week rollover will occur approx. every 20 years. The last week rollover occurred in 1999 and the next one will be in 2019.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Thunderbolt manual states:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The ThunderBolt adjusts for this week rollover by adding 1024 to any week number reported by GPS which is less than week number 936 which began on December 14, 1997. With this technique, the ThunderBolt will provide an accurate translation of GPS week number and TOW to time and date until July 30, 2017.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As such, the Trimble Thunderbolt has a firmware issue with the GPS Week rollover that manifested itself on July 30, 2017, causing the date to become incorrect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We have added a brute-force fix starting in RTCM/VOTER firmware &amp;gt;=1.51. It fixes the Thunderbolts, we have not done extensive testing to see how it affects other TSIP receivers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Garmin===&lt;br /&gt;
====Garmin 18x LVC Wiring Issues====&lt;br /&gt;
If you have issues with your GPS 18x LVC not talking to the RTCM/VOTER, it may not be hooked up to the RTCM correctly. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Garmin pin labeling is backwards to what you may think. See below. You probably need to swap pins 6 and 14.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RTCM   	                 GPS 18x LVC      &lt;br /&gt;
6 GRX 	&amp;lt;-- Rx Data 	 6 Green  &lt;br /&gt;
7 GPPS 	&amp;lt;-- Pulse Output 1 Yellow  &lt;br /&gt;
8 GND   Ground 		 3 Black  &lt;br /&gt;
8 GND   Ground 		 5 Black  &lt;br /&gt;
13 +5V 	--&amp;gt;Vin 		 2 Red  &lt;br /&gt;
14 GTX 	--&amp;gt; TX Data 	 4 White&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log into the RTCM and do 98 and you should see something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Current Time: Sun  Apr 20, 2014  04:37:02.820&lt;br /&gt;
Last Rx Pkt System time: 04/20/2014 03:55:35.580, diff: 2487260 msec&lt;br /&gt;
Last Rx Pkt Timestamp time: 04/20/2014 03:55:32.064, diff: 3515 msec&lt;br /&gt;
Last Rx Pkt index: 160, inbounds: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Garmin and the RTCM====&lt;br /&gt;
Beware when buying newer Garmin GPS's to use with the Micro-Node RTCM.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The RTCM expects a 5V PPS signal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Newer Garmin's (GPS 18X, 18X LVC, etc.) MAY NOT output 5V, and can cause issues. '''Check the Garmin datasheet'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER is designed to accept both 3.3V or 5V signals, and ''should'' work fine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==No GPS/Mixed Mode==&lt;br /&gt;
You do not need a timing source to use an RTCM if you don’t want to vote. That’s called Mix Mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Having the PPS Polarity set to 2 tells the RTCM you do not have a GPS. That forces the RTCM to become a mix (non-voting) client. Turn it on, save it, and restart. A simple voter.conf would look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[general]&lt;br /&gt;
port = 667&lt;br /&gt;
password = BLAH&lt;br /&gt;
&lt;br /&gt;
[1000]&lt;br /&gt;
Site1 = pswrd1,master,transmit&lt;br /&gt;
Site2 = pswrd2,transmit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mixed Client Error==&lt;br /&gt;
&amp;quot;I am getting this error in Asterisk&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WARNING[2368]: chan_voter.c:4511 voter_reader: Voter client master timing source mobile1 attempting to authenticate as mix client!!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A mixed client error means the voter.conf file is expecting an RTCM to try and connect with a GPS IP packet (ie. has '''master''' in it in voter.conf), but the RTCM isn't &lt;br /&gt;
sending a GPS IP packet. So its a mismatch between voter.conf and Option 10 in the RTCM. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to use a mix client (non-voted), make sure that receiver's configuration line in voter.conf '''does not''' have the '''master''' option set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Debug==&lt;br /&gt;
To turn on GPS Debugging, set the Debug Option Level in the RTCM/VOTER to 32.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [[#Debug Options]] levels for more information on how this works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Trimble Debug Status Decoding==&lt;br /&gt;
The VOTER/RTCM when in TSIP mode (Trimble), assumes it is a Trimble Thunderbolt and is looking for two packets:&lt;br /&gt;
*0x8F-AB - Primary Timing Packet&lt;br /&gt;
*0x8F-AC - Supplemental Timing Packet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Grab a copy of the Thunderbolt User Guide: http://leapsecond.com/pages/tbolt/Thunderbolt-2012-02.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pages 78-83 are the important ones.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Packet 0x8F-AB is what grabs the timing information, and packet 0x8F-AC is what it looks at for everything else (including debug).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The debug string that the VOTER/RTCM reports:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	printf(&amp;quot;GPS-DEBUG: TSIP: ok %d, 9 - 14: %02x %02x %02x %02x %02x %02x\n&amp;quot;,&lt;br /&gt;
					happy,gps_buf[9],gps_buf[10],gps_buf[11],gps_buf[12],gps_buf[13],gps_buf[14]);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, the 1 after ok is the &amp;quot;happy gps&amp;quot; flag. The other 5 bytes are supposed to be bytes 9-14 from the packet... sort of. They are bytes 9-14 of the buffer, but they are actually bytes 8-13 of the binary message.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Looking at the message structure, bytes 8-13 are:&lt;br /&gt;
*8-9 Critical Alarms&lt;br /&gt;
*10-11 Minor Alarms&lt;br /&gt;
*12 GPS Decoding Status&lt;br /&gt;
*13 Disciplining Activity&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Therefore, the messages you are seeing break down as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GPS-DEBUG: TSIP: ok 1, 9 - 14: 00 00 00 00 00 00 - everything is good in the 'hood, Doing Fixes, Phase Locking&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 18 08 06 - not happy, Not Tracking Satellites, Not Disciplining Oscillator (0x18 --&amp;gt; 0b000000011000), No Usable Sats, Inactive&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 08 08 05 - not happy, Not Tracking Satellites, No Useable Sats, Compensating OXCO (holdover)&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 00 00 05 - not happy, Compensating OXCO (holdover)&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 1, 9 - 14: 00 00 00 00 00 08 - happy, Recovery Mode&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 00 00 04 - not happy, Initializing Loop Filter&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The GPS is flagged as NOT HAPPY in TSIP mode if ANY of the following are TRUE:&lt;br /&gt;
*If GPS Decoding Status is anything other than &amp;quot;Doing Fixes&amp;quot;.&lt;br /&gt;
*If Disciplining Activity is not Phase Locking or Recovery Mode.&lt;br /&gt;
*Any Critical Alarms.&lt;br /&gt;
*Any Minor Alarms.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ubiquity ToS=&lt;br /&gt;
See https://help.ubnt.com/hc/en-us/articles/205231750-airMAX-How-is-QoS-and-prioritization-handled-by-airMAX-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, if we set ToS/DSCP in the header to C0, then Ubiquity (and other gear watching ToS) ''should'' prioritize the packets. This sets the DSCP to 110 000 aka 48. UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS latency). Other sources show this as a Network Control TOS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is an option in voter.conf to turn this on (utos=y). However, this only controls packets being sent from Asterisk '''TO''' the RTCM. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to tag packets from the RTCM '''TO''' Asterisk, you need to set the RTCM debug option level to 16 (see [[#Debug Options]] for how this works).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At some point we should probably change the default behaviour of the RTCM firmware to mark the packets and use the debug setting to '''disable''' ToS. That change (if you wanted to compile your own firmware) would be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Change line 90 in IP.c&lt;br /&gt;
&lt;br /&gt;
From:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? 0xc0 : (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY))&lt;br /&gt;
&lt;br /&gt;
To:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY) : 0xc0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This changes the conditional expression from if the debug level is 16 to mark the packets with DSCP 48 to if the debug level is 16, mark the packets routine (DSCP 0).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM Simulcasting=&lt;br /&gt;
The RTCM/VOTER boards do support simulcasting, however, there are a bunch of quirks that one needs to be aware of.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Radio Hardware==&lt;br /&gt;
For best results, you should use all identical RF equipment between your voting RX sites and simulcast TX sites. If you don't, you can end up with strange audio artifacts when different receivers are used, and other strange audio issues when different transmitters are used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==9.6MHz Oscillator==&lt;br /&gt;
If you want reliable simulcast with an acceptable level of overlap warble, you MUST inject a GPS-disciplined or OXCO 9.6MHz signal to the clock of the RTCM's, in lieu of their stock internal crystal. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Otherwise, the inherent internal clock jitter of the RTCM's will cause CTCSS warble, etc. in areas where your transmitters overlap. The 1 PPS feed that you normally feed the RTCM's is acceptable for voting, but naturally, a typical crystal-driven clock will slightly drift in between the pulses every second due to inherent jitter, etc., and that ain't to good for situations like simulcast which demand sample-accurate performance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are some comments from Joe, KC2IRV, on the subject. He has also created his own wiki, specific to simulcast issues, you can find it at: http://rtcmsimulcast.wikifoundry.com/ &lt;br /&gt;
&lt;br /&gt;
:I felt I needed to let those on this mailing list know my findings with simulcasting with the RTCM units since I have received a great deal of help and information from people on this list.&lt;br /&gt;
&lt;br /&gt;
:For the past week I have had a two (2) site simulcast system up and running on UHF using the RTCM units. I have done a great deal of testing and proving on the bench and it is so far working beautifully. &lt;br /&gt;
&lt;br /&gt;
:The one issue that was made apparent to me early on was that in order for the RTCM's to be suitable for simulcast, the processor inside it needed to be clocked to a more accurate source. This source is supposed to be the Programmable Clock Generator Module in order to produce a GPS locked 9.6 MHz reference for the processor. Unfortunately this unit is not currently available.&lt;br /&gt;
&lt;br /&gt;
:Knowing this, I started to go down the road of possibly designing my own, but stumbled upon a cheap, plentiful supply of Symmetricom 9.6 MHz sinewave OCXO's. I took a chance and ordered a few to experiment with to see if the RTCM would be able to use this in place of the supplied crystal for a clock. I found they did, with that I decided to modify the RTCM with an SMA connector just above the audio adjustment pots and use this OCXO. I trimmed the frequency on the units to match each other and used them to produce the processor clock.&lt;br /&gt;
&lt;br /&gt;
:After a week of testing, I have found the results in the overlap areas to be exactly as I would expect them on a public safety/commercial simulcast system. While in an overlap region where both transmitters are within 3dB of one another, to the ear you hear no audio phase wandering. Of course , this has only been a week of testing so I wouldn't call it case closed yet.&lt;br /&gt;
&lt;br /&gt;
:I will say that if this system remains this way after testing for 6 months to a year than using a 9.6 MHz OXCO is a viable alternative to achieve the needed precision and accuracy needed for the processor clock to make it suitable for simulcast.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Comments from Jim Dixon on the issue:&lt;br /&gt;
&lt;br /&gt;
:You have to use '''something''' that will take the precise 10MHz (or whatever it is) from the GPSDO and PLL (phase-locked) convert it to 9.6MHz (square wave at 3.3V for the CPU clock).&lt;br /&gt;
&lt;br /&gt;
:We had to use 9.6MHz mainly because of the DAC in the dsPIC instead of 10MHz. The options for various divide/clock radios in the part are RATHER limited. As I recall, there wasn't even a way of getting the necessary 16kb/s sample rate on the ADC from 10MHZ, either.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Micro-Node RTCM Clock Issue=&lt;br /&gt;
James, KI0KN, had some strange-ness with some of his RTCM's when used for voting. As soon as he changed menu item 10 on the RTCM to either a (1) or a (0) instead of (2), he '''instantly''' got this on the RTCM console:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
04/05/2016 18:44:13.660  Lost GPS Time synchronization&lt;br /&gt;
04/05/2016 18:44:13.660  Host Connection Lost (Pri) (10.16.1.240)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And it sits there forever and never re-establishes connection to the host. The issue was finally traced to a bad batch of 9.6MHz crystals that affected a small run of the RTCM's. The issue was eventually resolved by Micro-Node, but we'll document it here just for record keeping.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
James comments to the list:&lt;br /&gt;
&lt;br /&gt;
:Well, after many of you offered your time and thoughts on my voter problem, Jim, WB6NIL, graciously donated a couple of hours of his time to remotely help me and he uncovered the problem.&lt;br /&gt;
&lt;br /&gt;
:All 5 of my RTCMs were purchased within the last 6 months, and I suspect all 5 have the same problem (will verify that today). The problem is that the microprocessor crystal is running too fast! There is 9.6Mhz crystal that drives the MPU, on the particular unit that Jim helped me diagnose, it's running 2.5 khz too fast.  &lt;br /&gt;
&lt;br /&gt;
:There is a sanity check in the firmware that makes sure the correct number of samples were taken in the last second (it's supposed to be 8000) and fails if the sample is incorrectly sized (mine is taking 8003 samples).  Jim helped adjust the code to be more tolerant of the sampling error and my whole system instantly worked.&lt;br /&gt;
&lt;br /&gt;
:I have since tested it with ALL my GPSs (they all work great!). So I now have everything working, including the voting.&lt;br /&gt;
&lt;br /&gt;
:I haven't contact Micro-Node about it yet. Jim told me that voting should work fine but this clock error would probably not be acceptable for Simulcast (something we have no plans on doing as of now). Since mine are deployed at mountain top sites, I'll probably pursue a crystal that is running at the correct frequency and use &amp;quot;standard&amp;quot; firmware so that if the decision is ever made to play with simulcast, I won't be right back in this same boat.&lt;br /&gt;
&lt;br /&gt;
:Thanks to all that helped out, and a HUGE thanks to Jim for taking the time to troubleshoot this.&lt;br /&gt;
&lt;br /&gt;
:BTW- This clock error will NOT effect the RTCM in mix client mode, it only affects it in voting or simulcast mode!&lt;br /&gt;
&lt;br /&gt;
:In voter.c, the stock line is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if ((samplecnt &amp;gt;= 7999) &amp;amp;&amp;amp; (samplecnt &amp;lt;= 8001))&lt;br /&gt;
&lt;br /&gt;
it needs to be changed to something like:&lt;br /&gt;
&lt;br /&gt;
if ((samplecnt &amp;gt;= 7999) &amp;amp;&amp;amp; (samplecnt &amp;lt;= 8003 ))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:That was just enough to make my first RTCM work. I've had a chance now to check a few more of my RTCMs on the bench this morning and the crystal frequencies are kind of all over.  The next one I had on the bench was 5.2Khz fast. The above code was still not enough to fix it (as would be expected) so it looks like the quality control on whatever manufacturer that crystal is, isn't very good (or a low tolerance crystal is being used). I am going to pursue crystal replacement to get a highly accurate, stable, on-frequency crystal in there as my first choice. Changing the firmware 5 different times doesn't seem like the right answer.&lt;br /&gt;
&lt;br /&gt;
:Jim put that sanity check in there for a reason. Working around it '''may''' allow the device to work, but to me, it seems getting the hardware operating the way it was supposed to originally is the better answer. I will follow up with Micro-node and let you all know how it goes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After following up with Micro-Node:&lt;br /&gt;
:They were all off, some were off a LOT. I talked to Mark @ Micronode. He told me there were 25 units that made it out the door with a crystal from an unapproved source and that was quite likely the reason for the problem. He gladly sent me 5 new crystals to replace (he offered to replace them himself if I sent the units in, but I am comfortable doing it myself to save the time and postage). &lt;br /&gt;
&lt;br /&gt;
:I haven't received them in the mail yet to show that the problem is fixed, but I will post here when that happens. He was great to work with and had no issue getting things set straight. If you are having the same issue and your RTCMs were bought about the same time, I'd suggest you contact him and have him help you resolve the issue!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Duplex Mode 3=&lt;br /&gt;
Does delayed repeat audio bug you? Tired of hearing a bit of yourself after you unkey? Wish you could talk full duplex? Hate the echo chamber effect? Then we have the answer for you.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Duplex Mode 3 in app_rpt allows for &amp;quot;in-cabinet repeat&amp;quot; (where the radio hardware provides repeat audio) and app_rpt adds the hang time, courtesy tones, linking - all the &lt;br /&gt;
things apt_rpt does sans repeat audio. Therefore no repeat audio delay. Cool, eh? This duplex mode has been in app_rpt for a while. Problem has been how to implement it in the RTCM environment. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Duplex Mode 3 support in the RTCM provides in-cabinet repeat functionality. Repeat audio loops through the RTCM and has almost zero delay because it does not have to traverse the network. The delay is not quite zero but it's plenty short enough to eliminate all of the above mentioned annoyances. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Of course Duplex Mode 3 support can't be used with voting or simulcast.&lt;/div&gt;</summary>
		<author><name>Ve7fet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=41</id>
		<title>RTCM Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=41"/>
		<updated>2017-08-10T00:27:36Z</updated>

		<summary type="html">&lt;p&gt;Ve7fet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Micro-Node RTCM and VOTER interfaces are typically used with AllStar in voting/simulcast applications. They MAY be used for ANY repeater interface application, through the chan/voter channel driver. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER is the original through-hole board designed by Jim Dixon for this application. It is open-source, and the relevant Gerber files and BoM to build it are available. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The [http://www.micro-node.com/thin-m1.shtml Micro-Node Radio Thin Client Module (RTCM)] is the commercial version of the VOTER. It uses surface mount parts (SMT), but is functionally equivalent to the original VOTER. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In general, the two terms (RTCM/VOTER) are used interchangeably, as they operate the same, and use the same firmware (mostly, see below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This page will highlight some of the operational concerns, quirks, bugs, and other items of interest that relate to these interfaces. Much of the information has been gleaned off the AllStar mail list, comes from personal experience, or comes from notes in the firmware source code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Firmware=&lt;br /&gt;
The firmware in the RTCM and VOTER is the same, except it is compiled for the specific dsPIC that is installed in each. As such, the firmware is specific to the VOTER or the RTCM, and is NOT interchangeable (it won't boot in the wrong device). Firmware for the RTCM is denoted by &amp;quot;smt&amp;quot; in the filename.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are '''two parts''' to the firmware, a bootloader, and then the actual firmware file. The bootloader starts when power is applied, and allows you to talk to the dsPIC and load new firmware files over ethernet. If the bootloader is not intercepted by the loading tool, it will continue to boot the current firmware file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All new boards will need to have the bootloader installed first, followed by a firmware file. You '''can''' load a firmware file directly (.hex) in to the dsPIC, but then you will not have any of the bootloader remote loading features.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The current bootloader (.cof file) is available here: https://github.com/AllStarLink/voter/tree/master/voter-bootloader (the -smt file is for the RTCM). It needs to be loaded with a PICKit programmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Current firmware (.cry file) is available here: https://github.com/AllStarLink/voter/tree/master/board-firmware . They are loaded with the EBLEX C30 Programmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are multiple &amp;quot;flavors&amp;quot; of firmware available. See below for further explanation of what all the options mean.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The DSPBEW versions have Jim's DSP/BEW feature enabled. Note that due to the size of this feature, the diagnostics menu is NOT available in this version.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CHUCK versions have Chuck Henderson's RSSI and Squelch modifications enabled. This is probably the version that most user's will want to use in production.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Compiling Environment==&lt;br /&gt;
If you look in the [https://github.com/AllStarLink/voter/blob/master/votersystem.pdf votersystem.pdf], you will find a procedure to modify and load the bootloader in to the dsPIC of a VOTER board. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Unfortunately, there is an important step '''missing''' in that procedure, which is covered below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In addition, the old links for the MPLAB software are dead, so let's update this info and get you going.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Currently (Feb 2017), you can get the required software from:&lt;br /&gt;
:http://www.microchip.com/development-tools/downloads-archive&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download MPLAB IDE 32-bit Windows v8.66:&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_IDE_v8_66.zip&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/MPLAB_IDE_v8_66.zip&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download MPLAB C Compiler for PIC24 and dsPIC DSCs v3.31 '''NOT v.3.25''':&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Optionally, install Windows Virtual PC and XP Mode. This is getting to be pretty old software, so running it under XP Mode may be a good idea, so we can keep it isolated (install it in a virtual machine). It does run fine in Windows 7.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To setup the compile/build environment, follow these steps:&lt;br /&gt;
*Run the MPLAB IDE installer. You don't need to install the HI-TECH C Compiler at the end (click no)&lt;br /&gt;
*Run the MPLAB C Compiler installer&lt;br /&gt;
*Select Legacy Directory Name&lt;br /&gt;
*'''Select Lite Compiler'''&lt;br /&gt;
*Go to: https://github.com/AllStarLink&lt;br /&gt;
*Follow the links to: voter --&amp;gt; Clone or Download --&amp;gt; Download Zip. That will get you voter-master.zip which is a download of the whole VOTER tree from GitHub.&lt;br /&gt;
*Extract it somewhere (ie. in the XP Mode Virtual PC)&lt;br /&gt;
*Launch the MPLAB IDE&lt;br /&gt;
*Go to Configure --&amp;gt; Settings --&amp;gt; Projects and de-select one-to-one project mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bootloader==&lt;br /&gt;
If you need to load the bootloader in to a fresh board, you will need to follow these steps:&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; voter-bootloader.mcp --&amp;gt; Open (it is in the voter-bootloader folder of the GitHub source)&lt;br /&gt;
*Go to File --&amp;gt; Import --&amp;gt; voter-bootloader --&amp;gt; ENC_C30.cof --&amp;gt; Open '''This step is missing from the original procedure.'''&lt;br /&gt;
*Remove JP7 on the VOTER Board. This is necessary to allow programming by the PICKit2/PICKit3 device.&lt;br /&gt;
*Attach the PICKIT2/PICKit3 device to J1 on the VOTER board. Note that Pin 1 is closest to the power supply modules (as indicated on the board).&lt;br /&gt;
*If you have not already selected a programming device, go to Programmer --&amp;gt; Select Device and choose PICKit3 (or PICKit2, depending on what you are using).&lt;br /&gt;
*Go to Programmer --&amp;gt; Program. This will program the bootloader firmware into the PIC device on the board.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to change the default IP address from 192.168.1.11 in the bootloader:&lt;br /&gt;
*Select View --&amp;gt; Program Memory (from the top menu bar)&lt;br /&gt;
*Hit Control-F (to &amp;quot;find&amp;quot;) and search for the digits &amp;quot;00A8C0&amp;quot;.&lt;br /&gt;
*These should be found at memory address &amp;quot;03018&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;A8C0&amp;quot; at 03018 represents the hex digits C0 (192) and A8 (168) which are the first two octets of the IP address. The six digits to enter are 00 then the SECOND octet of the IP address in hex then the FIRST octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;0B01&amp;quot; at 0301A represents the hex digits 0B (11) and 01 (1) which are the second two octets of the IP address. The six digits to enter are 00 then the FOURTH octet of the IP address in hex then the THIRD octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you have modified the address to your desired IP, follow the programming procedure (above).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Firmware==&lt;br /&gt;
To compile the firmware (if you want to make custom changes):&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; navigate to board-firmware and open the .mcp file for the flavor of firmware you want to compile. They are in the board-firmware folder of the GitHub source.&lt;br /&gt;
*'''NOTE''': the .mcp files with the &amp;quot;smt&amp;quot; suffix are for the RTCM (built with SMT parts). The non-smt files are for the ORIGINAL through-hole VOTER boards. The difference is that the VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
*Go to Project --&amp;gt; Build Configuration and select &amp;quot;Release&amp;quot;. This may not be necessary (I don't believe that option is used in the firmware), but it removes the compiler option of __DEBUG being passed, so theoretically it would build &amp;quot;normal&amp;quot; firmware.&lt;br /&gt;
*Go to Configure --&amp;gt; Select Device and choose the appropriate device for your board from the Device list. If you don't select the right one, the board will not boot. Select dsPIC33FJ128GP802 for the VOTER, and dsPIC33FJ128GP804 for the RTCM.&lt;br /&gt;
*Now, if you go to Project --&amp;gt; Build All it should compile everything and show you &amp;quot;Build Succeeded&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A .cry file should be in the board-firmware folder. You can load this with the ENC Loader.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is also a .hex file in there that you could load with a programmer... but that would wipe the bootloader... so don't do that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Chuck Squelch==&lt;br /&gt;
If you want to enable &amp;quot;Chuck Squelch&amp;quot;, open the HardwareProfile.h and un-comment #define CHUCK. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may also want to go down to Line 291 in Voter.c (right click on the window, go to Properties --&amp;gt; &amp;quot;C&amp;quot; File Types --&amp;gt; Line Numbers) and tack on CHUCK after 1.60 (the current version number) so that when you load this firmware, the version will be shown as 1.51CHUCK, and you'll know that Chuck Squelch is compiled in. We should probably make that more automagic in the future...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==DSP/BEW==&lt;br /&gt;
If you want to compile the DSPBEW version, open the DSPBEW project file instead.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DSP/BEW Firmware Version=&lt;br /&gt;
DSP BEW Firmware is mutually exclusive with the diagnostic menu. There is not enough space for both, if you load the DSP/BEW firmware, you will '''NOT''' have a diag menu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BEW stands for Baseband Examination Window.&lt;br /&gt;
&lt;br /&gt;
Typically, the discriminator of an FM communications receiver produces results containing audio spectrum from the &amp;quot;sub-audible&amp;quot; range (typically &amp;lt; 100 Hz) to well above frequencies able to be produced by modulating audio. These higher frequencies can be utilized to determine signal quality, since they can only contain noise (or no noise, if a sufficiently strong signal is present).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For receivers (such as the Motorola Quantar, etc) that do not provide sufficient spectral content at these &amp;quot;noise&amp;quot; frequencies (for various reasons), The &amp;quot;DSP/BEW (Digital Signal Processor / Baseband Examination Window)&amp;quot; feature of the RTCM firmware may be utilized. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These receivers are perfectly capable of providing valid &amp;quot;noise&amp;quot; signal with no modulation on the input of the receiver, but with strong modulation (high frequency audio and high deviation), it severely interferes with proper analysis of signal strength.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This feature provides a means by which a &amp;quot;Window&amp;quot; of baseband (normal audio range) signal is examined by a DSP and a determination of whether or not sufficient audio is present to cause interference of proper signal strength is made. During the VERY brief periods of time when it is determined that sufficient audio is present to cause interference, the signal strength value is &amp;quot;held&amp;quot; (the last valid value previous to the time of interference) until such time that the interfering audio is no longer present.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The DSP/BEW feature is selectable, and '''should not''' be used for a receiver that does not need it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A note on the Motorola SLR5700 per VE7FET. DSP/BEW definitely makes a difference on what AllMon reports for the signal strength of received signals. It is less reactive when DSP/BEW = 1 than with it set to 0. We'll have to see what the real world trials show. It might be better to leave it off.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Chuck Squelch=&lt;br /&gt;
&amp;quot;Chuck Squelch&amp;quot; are a couple firmware changes made by Chuck Henderson, WB9UUS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pre-compiled firmware versions including this option are available on [https://github.com/AllStarLink/voter/tree/master/board-firmware GitHub]. See above on how it is enabled/compiled, if you are rolling your own firmware modifications.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
One of the changes fixes an issue with weak signals producing RSSI readings all over the place. It is caused by a 16 bit value that was overflowing (it is the RSSI change in the firmware). It results in rock-solid RSSI values being reported, even on barely or non-readable signals. '''This change will likely be rolled in to a permanent fix in a future firmware release.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The other firmware change changes how the squelch responds (looks at the noise in the last two audio samples) and makes the &amp;quot;Micor squelch&amp;quot; action work better.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may also want to consider the following changes in /etc/asterisk/voter.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;Comment out:&lt;br /&gt;
;thresholds =&lt;br /&gt;
&lt;br /&gt;
;and set:&lt;br /&gt;
linger = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Squelch Issues==&lt;br /&gt;
*If anyone is off frequency a little bit, that will make the voice talk off worse. Double check that the repeater and the users are all on frequency.&lt;br /&gt;
*Don't use narrow bandwidth on the repeater receiver. &lt;br /&gt;
*Make sure that the discriminator audio is not rolled off even a little bit at the high end. There should not be resistors in series or capacitors to ground between the discriminator chip output pin and the voter board input, for best results.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM/VOTER LED's=&lt;br /&gt;
RX LED on the RTCM/VOTER will flash (same rate as ACT LED) if you have External CTCSS enabled, and the received signal has the wrong (or no) valid PL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Network Information=&lt;br /&gt;
==RTCM/VOTER Bandwidth==&lt;br /&gt;
Assuming ulaw... The RTCM will require approximately 80kbps of bandwidth for continual usage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Network Quality==&lt;br /&gt;
Your IP Network quality is important. You may wish to add a rule in your routers to prioritize traffic on UDP port 667 so that RTCM audio is given priority over other &lt;br /&gt;
traffic. Also see the [[#Debug Options]] below for notes on how to tag your packets with ToS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==RX/TX Buffers are NOT Both Millisecond Values== &lt;br /&gt;
You might assume an RX buffer (in voter.conf) of 120ms would be equivalent of a TX buffer (in the RTCM) of 120ms. That is not the case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The TX buffer is a number of 125 '''microsecond''' intervals, where the RX buffer is in milliseconds. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you follow the buffer setting instructions, you should be fine, in most cases. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Debug Options=&lt;br /&gt;
The VOTER/RTCM firmware supports some additional debugging information that can be turned on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
From the source code, the different Debug Options are listed as:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1 - Alt/Main Host change notifications&lt;br /&gt;
2 - Ignore HWlock (GGPS only)&lt;br /&gt;
4 - GPS/PPS Failure simulation (GGPS only)&lt;br /&gt;
8 - POCSAG H/W output disable (GGPS only)&lt;br /&gt;
16 - IP TOS Class for Ubiquiti&lt;br /&gt;
32 - GPS Debug&lt;br /&gt;
64 - Fix GPS 1 second off&lt;br /&gt;
128 - Fix GPS 1 month off (WTF,O??)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Not sure what they all do, but that is what they are. Here are the most common ones used:&lt;br /&gt;
*&amp;quot;Alt/Main Host change notifications&amp;quot; shows when the connection to the Asterisk server changes state.&lt;br /&gt;
*&amp;quot;IP TOS Class for Ubiquity&amp;quot; marks the IP headers from the RTCM/VOTER '''TO''' the network with ToS C0/DSCP 48 (UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS &lt;br /&gt;
latency). Other sources show this as a Network Control TOS.) If you enable this, you also will want to have &amp;quot;utos=y&amp;quot; in your voter.conf to mark the packets from the network '''TO''' the RTCM/VOTER. We will probably change this option to mark the packets by default in a future version.&lt;br /&gt;
*&amp;quot;GPS Debug&amp;quot; will print NMEA or TSIP debug strings from the connected GPS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The way this works is you add together the options you want to enable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Want to enable GPS Debug and IP ToS, set debug to 48.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just want to turn on GPS Debug, set debug to 32.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just want ToS turned on, set debug to 16.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Un-documented Menus/Features=&lt;br /&gt;
*Menu 96 - If firmware compiled with DUMPENCREGS enabled, Menu 96 looks like it dumps the registers from the ENC (Ethernet) chip?&lt;br /&gt;
&lt;br /&gt;
*Menu 111 - show the &amp;quot;hidden&amp;quot; option values (normally they should all be 0).&lt;br /&gt;
&lt;br /&gt;
*Menu 11780 - set the &amp;quot;Elkes&amp;quot; value? No idea what this does.&lt;br /&gt;
&lt;br /&gt;
*Menu 1103 - set the &amp;quot;Glaser&amp;quot; timer value? No idea what this does.&lt;br /&gt;
&lt;br /&gt;
*Menu 1170 - set &amp;quot;Sawyer Mode&amp;quot;. No idea what this does, it was a modification Jim made for Tim Sawyer, but Tim doesn't recall what it was for. :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Audio=&lt;br /&gt;
The RTCM/VOTER is totally flexible regarding emphasis. Although the way it is set is completely obscure. It tries to automatically do the right thing for you, which is great most of the time. But when it’s not, it's hard to know what is going on. &lt;br /&gt;
&lt;br /&gt;
If you are changing the COR Type settings, or nodeemp in voter.conf, make sure you save/reboot the RTCM/VOTER every time you make a change... changes are '''not''' effective until the RTCM/VOTER reboots!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Voting==&lt;br /&gt;
Before we get in to the different ways audio is routed, there is an important consideration you need to make if you are using the RTCM/VOTER for voting. &lt;br /&gt;
&lt;br /&gt;
The way the voting process works, it needs '''discriminator audio''' to determine the signal to noise level from each satellite receiver. As such, you will need to be feeding discriminator audio in to the RX audio pin, so that the hardware/software can vote properly. That means you also need to let the hardware/software do the squelch action.&lt;br /&gt;
&lt;br /&gt;
If you need RX CTCSS, you'll need to feed logic from an external CTCSS decoder in to the CTCSS input pin.&lt;br /&gt;
&lt;br /&gt;
Also, don't disable COR in the RTCM/VOTER... it will cause it to disable the squelch and it will report an RSSI of 255 (full quieting) for all received signals.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Receiver De-emphasis==&lt;br /&gt;
On the RX side the COR Type setting in the RTCM/VOTER determines whether the de-emphasis filter is used for RX audio. 0=Normal means the RTCM/VOTER squelch circuit is in use and it is expecting discriminator audio on the RX pin (to be able to do the squelch action), and therefore it '''will''' provide de-emphasis (audio is routed THROUGH the de-emphasis RC filter circuit) to the receiver audio. COR Type 1=IGNORE COR uses the CTCSS input pin for COR or CTCSS ''logic'' and it then expects de-emphasized receive (line) audio on the RX pin, and therefore will '''not''' provide de-emphasis to the received audio (the RC filter is switched '''out''' and audio passes straight through). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Most of the time, you do NOT need to override the automatic filter selection. However, if you do, and you are sure you have a good reason to, you CAN switch the de-emphasis filter '''out''' of the circuit so that audio passes straight through to the encoder. You would do this by setting the nodeemp=1 option in voter.conf. When you set nodeemp=1, the ''VOTER Protocol'' tells the RTCM/VOTER to switch the filter '''out''', so audio is passed straight through.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Transmitter Pre-emhpasis==&lt;br /&gt;
On the TX side, the RTCM/VOTER expects the repeater to accept ''mic audio''. In other words, the '''repeater''' is providing the pre-emphasis, not the RTCM/VOTER (you are '''not''' directly modulating the TX). This can be overridden by setting CTCSS tone in voter.conf. If a CTCSS tone is defined, the RTCM '''will''' provide pre-emphasis to the audio, and expects that you will be connecting to your repeater's flat audio input (direct modulation). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you don’t want TX CTCSS tone but '''do''' need pre-emphasis, set an arbitrary (any) CTCSS tone in voter.conf, and set the level to 0. This will force the RTCM/VOTER to pre-emphasize the audio it generates on the TX pin, but it won't actually mix in a CTCSS tone. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Level Setting==&lt;br /&gt;
Setting the audio levels for the RTCM/VOTER is pretty straight forward. Just follow these steps:&lt;br /&gt;
*Ensure you have a connection to your host Asterisk server/chan_voter instance&lt;br /&gt;
*Send a 1kHz@3kHz on-channel, full-quieting signal in to the repeater's RX&lt;br /&gt;
*Set the RX up so it reads 3kHz deviation on the RTCM's built in console meter&lt;br /&gt;
*Now set the TX level '''pot''' to get 3kHz out of the transmitter (No PL)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now change the modulation from 1kHz tone to 800Hz followed by 1.8kHz and verify that the deviation level doesn't change as the tone frequency changes. '''Changing levels indicates a pre/de-emphasis issue.''' You will want to read the above sections on how audio is handled, and figure out where your issue is.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If using PL you have to account for that deviation, unless you filter it out with your IFR (test set). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That's it!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Optionally, if you are using the built-in &amp;quot;offline repeat&amp;quot; functions, fail the connection to the host Asterisk server, and make sure your repeat audio performs the same as above.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Crappy Transmit Audio==&lt;br /&gt;
&lt;br /&gt;
Does your repeated audio sounded really bassy, muffled, and not very understandable? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There was a situation where, compared to a typical simplex radio-to-radio transmission, the audio through the repeater (RTCM and Asterisk) was unacceptable. What was discovered was that the RTCM has an internal pre-emphasis function that was disabled. The user had intentionally disabled &amp;quot;txctcss&amp;quot; and &amp;quot;txctcsslevel&amp;quot; in voter.conf because he didn't &lt;br /&gt;
want the RTCM transmitting CTCSS (the Quantar was doing that already). He ultimately found a post on the mail list explaining the settings above that said enabling txctcss = some valid tone (114.8 in his case) and setting txctcsslevel = 0 would turn on the pre-emphasis function in the RTCM without transmitting CTCSS tones. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
He did, and it worked like a charm! Audio now had more treble and was less bassy/muffled. So, future RTCM users, be sure not to comment out txctcss and txctcsslevel in voter.conf!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just enable and set the level to 0. You'll thank me later. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=GPS=&lt;br /&gt;
The RTCM/VOTER will work with most GPS available. It requires either NMEA or Trimble TSIP binary data. It only receives data '''from''' the GPS (GPS TX), it does not send anything '''to''' the GPS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The firmware is specifically written to talk to Trimble Thunderbolt receivers using Trimble's TSIP binary data interface, however, other Trimbles GPS receivers that talk TSIP are generally compatible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==NMEA Sentences==&lt;br /&gt;
If you are using an NMEA GPS (as opposed to a Trimble using the TSIP binary interface), the RTCM/VOTER is looking for the following NMEA sentences:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$GPGGA&lt;br /&gt;
$GPGSV&lt;br /&gt;
$GPRMC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Lock==&lt;br /&gt;
The GPS led will go solid regardless of the connection LED. That '''has''' to happen or it won't connect to the Asterisk server. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is not unusual for it to take up to 20 mins to get a GPS lock LED (ie. using a Trimble Thunderbolt) after any reboot. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS De-sense==&lt;br /&gt;
If you are having odd loss of lock issues, consider you may have interference to your GPS antenna from strong RF nearby. A note from Jesse Lloyd:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I also had crazy problems with poor signal on my GPS when I set it up sitting in a window, and once installed at site I had the GPS antenna maybe 6 ft from the VHF antenna, and after some troubleshooting found it was getting swamped with RF and loosing lock. &lt;br /&gt;
&lt;br /&gt;
I found the debug setting of 32 useful in the RTCM, you can see a hex output of the GPS status.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Issues==&lt;br /&gt;
===Trimble Thunderbolt===&lt;br /&gt;
You may find your Trimble Thunderbolt is showing the incorrect date at the moment. It could be showing the year as 1997. This is due to the date in the Thunderbolt being reported incorrectly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''This can cause some of your voting receivers to not connect, if they are used with other GPS in your system.''' If you have '''ALL''' Thunderbolts, or '''NO''' Thunderbolts, you are probably fine. If you have '''ALL''' Thunderbolts, the date/time is probably wrong, but they will ALL be wrong, so they will connect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GPS Time is a continuous counting time scale beginning at the January 5, 1980 to January 6, 1980 midnight. It is split into two parts: a time of week measured in seconds from midnight Sat/Sun and a week number. The time of week is transmitted in an unambiguous manner by the satellites, but only the bottom 10 bits of the week number are transmitted. This means that a receiver will see a week number count that goes up steadily until it reaches 1023 after which it will “roll over” back to zero, before steadily going up again. Such a week rollover will occur approx. every 20 years. The last week rollover occurred in 1999 and the next one will be in 2019.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Thunderbolt manual states:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The ThunderBolt adjusts for this week rollover by adding 1024 to any week number reported by GPS which is less than week number 936 which began on December 14, 1997. With this technique, the ThunderBolt will provide an accurate translation of GPS week number and TOW to time and date until July 30, 2017.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As such, the Trimble Thunderbolt has a firmware issue with the GPS Week rollover that manifested itself on July 30, 2017, causing the date to become incorrect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We have added a brute-force fix starting in RTCM/VOTER firmware &amp;gt;=1.51. It fixes the Thunderbolts, we have not done extensive testing to see how it affects other TSIP receivers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Garmin===&lt;br /&gt;
====Garmin 18x LVC Wiring Issues====&lt;br /&gt;
If you have issues with your GPS 18x LVC not talking to the RTCM/VOTER, it may not be hooked up to the RTCM correctly. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Garmin pin labeling is backwards to what you may think. See below. You probably need to swap pins 6 and 14.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RTCM   	                 GPS 18x LVC      &lt;br /&gt;
6 GRX 	&amp;lt;-- Rx Data 	 6 Green  &lt;br /&gt;
7 GPPS 	&amp;lt;-- Pulse Output 1 Yellow  &lt;br /&gt;
8 GND   Ground 		 3 Black  &lt;br /&gt;
8 GND   Ground 		 5 Black  &lt;br /&gt;
13 +5V 	--&amp;gt;Vin 		 2 Red  &lt;br /&gt;
14 GTX 	--&amp;gt; TX Data 	 4 White&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log into the RTCM and do 98 and you should see something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Current Time: Sun  Apr 20, 2014  04:37:02.820&lt;br /&gt;
Last Rx Pkt System time: 04/20/2014 03:55:35.580, diff: 2487260 msec&lt;br /&gt;
Last Rx Pkt Timestamp time: 04/20/2014 03:55:32.064, diff: 3515 msec&lt;br /&gt;
Last Rx Pkt index: 160, inbounds: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Garmin and the RTCM====&lt;br /&gt;
Beware when buying newer Garmin GPS's to use with the Micro-Node RTCM.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The RTCM expects a 5V PPS signal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Newer Garmin's (GPS 18X, 18X LVC, etc.) MAY NOT output 5V, and can cause issues. '''Check the Garmin datasheet'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER is designed to accept both 3.3V or 5V signals, and ''should'' work fine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==No GPS/Mixed Mode==&lt;br /&gt;
You do not need a timing source to use an RTCM if you don’t want to vote. That’s called Mix Mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Having the PPS Polarity set to 2 tells the RTCM you do not have a GPS. That forces the RTCM to become a mix (non-voting) client. Turn it on, save it, and restart. A simple voter.conf would look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[general]&lt;br /&gt;
port = 667&lt;br /&gt;
password = BLAH&lt;br /&gt;
&lt;br /&gt;
[1000]&lt;br /&gt;
Site1 = pswrd1,master,transmit&lt;br /&gt;
Site2 = pswrd2,transmit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mixed Client Error==&lt;br /&gt;
&amp;quot;I am getting this error in Asterisk&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WARNING[2368]: chan_voter.c:4511 voter_reader: Voter client master timing source mobile1 attempting to authenticate as mix client!!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A mixed client error means the voter.conf file is expecting an RTCM to try and connect with a GPS IP packet (ie. has '''master''' in it in voter.conf), but the RTCM isn't &lt;br /&gt;
sending a GPS IP packet. So its a mismatch between voter.conf and Option 10 in the RTCM. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to use a mix client (non-voted), make sure that receiver's configuration line in voter.conf '''does not''' have the '''master''' option set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Debug==&lt;br /&gt;
To turn on GPS Debugging, set the Debug Option Level in the RTCM/VOTER to 32.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [[#Debug Options]] levels for more information on how this works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Trimble Debug Status Decoding==&lt;br /&gt;
The VOTER/RTCM when in TSIP mode (Trimble), assumes it is a Trimble Thunderbolt and is looking for two packets:&lt;br /&gt;
*0x8F-AB - Primary Timing Packet&lt;br /&gt;
*0x8F-AC - Supplemental Timing Packet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Grab a copy of the Thunderbolt User Guide: http://leapsecond.com/pages/tbolt/Thunderbolt-2012-02.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pages 78-83 are the important ones.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Packet 0x8F-AB is what grabs the timing information, and packet 0x8F-AC is what it looks at for everything else (including debug).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The debug string that the VOTER/RTCM reports:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	printf(&amp;quot;GPS-DEBUG: TSIP: ok %d, 9 - 14: %02x %02x %02x %02x %02x %02x\n&amp;quot;,&lt;br /&gt;
					happy,gps_buf[9],gps_buf[10],gps_buf[11],gps_buf[12],gps_buf[13],gps_buf[14]);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, the 1 after ok is the &amp;quot;happy gps&amp;quot; flag. The other 5 bytes are supposed to be bytes 9-14 from the packet... sort of. They are bytes 9-14 of the buffer, but they are actually bytes 8-13 of the binary message.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Looking at the message structure, bytes 8-13 are:&lt;br /&gt;
*8-9 Critical Alarms&lt;br /&gt;
*10-11 Minor Alarms&lt;br /&gt;
*12 GPS Decoding Status&lt;br /&gt;
*13 Disciplining Activity&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Therefore, the messages you are seeing break down as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GPS-DEBUG: TSIP: ok 1, 9 - 14: 00 00 00 00 00 00 - everything is good in the 'hood, Doing Fixes, Phase Locking&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 18 08 06 - not happy, Not Tracking Satellites, Not Disciplining Oscillator (0x18 --&amp;gt; 0b000000011000), No Usable Sats, Inactive&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 08 08 05 - not happy, Not Tracking Satellites, No Useable Sats, Compensating OXCO (holdover)&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 00 00 05 - not happy, Compensating OXCO (holdover)&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 1, 9 - 14: 00 00 00 00 00 08 - happy, Recovery Mode&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 00 00 04 - not happy, Initializing Loop Filter&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The GPS is flagged as NOT HAPPY in TSIP mode if ANY of the following are TRUE:&lt;br /&gt;
*If GPS Decoding Status is anything other than &amp;quot;Doing Fixes&amp;quot;.&lt;br /&gt;
*If Disciplining Activity is not Phase Locking or Recovery Mode.&lt;br /&gt;
*Any Critical Alarms.&lt;br /&gt;
*Any Minor Alarms.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ubiquity ToS=&lt;br /&gt;
See https://help.ubnt.com/hc/en-us/articles/205231750-airMAX-How-is-QoS-and-prioritization-handled-by-airMAX-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, if we set ToS/DSCP in the header to C0, then Ubiquity (and other gear watching ToS) ''should'' prioritize the packets. This sets the DSCP to 110 000 aka 48. UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS latency). Other sources show this as a Network Control TOS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is an option in voter.conf to turn this on (utos=y). However, this only controls packets being sent from Asterisk '''TO''' the RTCM. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to tag packets from the RTCM '''TO''' Asterisk, you need to set the RTCM debug option level to 16 (see [[#Debug Options]] for how this works).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At some point we should probably change the default behaviour of the RTCM firmware to mark the packets and use the debug setting to '''disable''' ToS. That change (if you wanted to compile your own firmware) would be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Change line 90 in IP.c&lt;br /&gt;
&lt;br /&gt;
From:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? 0xc0 : (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY))&lt;br /&gt;
&lt;br /&gt;
To:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY) : 0xc0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This changes the conditional expression from if the debug level is 16 to mark the packets with DSCP 48 to if the debug level is 16, mark the packets routine (DSCP 0).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM Simulcasting=&lt;br /&gt;
The RTCM/VOTER boards do support simulcasting, however, there are a bunch of quirks that one needs to be aware of.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Radio Hardware==&lt;br /&gt;
For best results, you should use all identical RF equipment between your voting RX sites and simulcast TX sites. If you don't, you can end up with strange audio artifacts when different receivers are used, and other strange audio issues when different transmitters are used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==9.6MHz Oscillator==&lt;br /&gt;
If you want reliable simulcast with an acceptable level of overlap warble, you MUST inject a GPS-disciplined or OXCO 9.6MHz signal to the clock of the RTCM's, in lieu of their stock internal crystal. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Otherwise, the inherent internal clock jitter of the RTCM's will cause CTCSS warble, etc. in areas where your transmitters overlap. The 1 PPS feed that you normally feed the RTCM's is acceptable for voting, but naturally, a typical crystal-driven clock will slightly drift in between the pulses every second due to inherent jitter, etc., and that ain't to good for situations like simulcast which demand sample-accurate performance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are some comments from Joe, KC2IRV, on the subject. He has also created his own wiki, specific to simulcast issues, you can find it at: http://rtcmsimulcast.wikifoundry.com/ &lt;br /&gt;
&lt;br /&gt;
:I felt I needed to let those on this mailing list know my findings with simulcasting with the RTCM units since I have received a great deal of help and information from people on this list.&lt;br /&gt;
&lt;br /&gt;
:For the past week I have had a two (2) site simulcast system up and running on UHF using the RTCM units. I have done a great deal of testing and proving on the bench and it is so far working beautifully. &lt;br /&gt;
&lt;br /&gt;
:The one issue that was made apparent to me early on was that in order for the RTCM's to be suitable for simulcast, the processor inside it needed to be clocked to a more accurate source. This source is supposed to be the Programmable Clock Generator Module in order to produce a GPS locked 9.6 MHz reference for the processor. Unfortunately this unit is not currently available.&lt;br /&gt;
&lt;br /&gt;
:Knowing this, I started to go down the road of possibly designing my own, but stumbled upon a cheap, plentiful supply of Symmetricom 9.6 MHz sinewave OCXO's. I took a chance and ordered a few to experiment with to see if the RTCM would be able to use this in place of the supplied crystal for a clock. I found they did, with that I decided to modify the RTCM with an SMA connector just above the audio adjustment pots and use this OCXO. I trimmed the frequency on the units to match each other and used them to produce the processor clock.&lt;br /&gt;
&lt;br /&gt;
:After a week of testing, I have found the results in the overlap areas to be exactly as I would expect them on a public safety/commercial simulcast system. While in an overlap region where both transmitters are within 3dB of one another, to the ear you hear no audio phase wandering. Of course , this has only been a week of testing so I wouldn't call it case closed yet.&lt;br /&gt;
&lt;br /&gt;
:I will say that if this system remains this way after testing for 6 months to a year than using a 9.6 MHz OXCO is a viable alternative to achieve the needed precision and accuracy needed for the processor clock to make it suitable for simulcast.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Comments from Jim Dixon on the issue:&lt;br /&gt;
&lt;br /&gt;
:You have to use '''something''' that will take the precise 10MHz (or whatever it is) from the GPSDO and PLL (phase-locked) convert it to 9.6MHz (square wave at 3.3V for the CPU clock).&lt;br /&gt;
&lt;br /&gt;
:We had to use 9.6MHz mainly because of the DAC in the dsPIC instead of 10MHz. The options for various divide/clock radios in the part are RATHER limited. As I recall, there wasn't even a way of getting the necessary 16kb/s sample rate on the ADC from 10MHZ, either.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Micro-Node RTCM Clock Issue=&lt;br /&gt;
James, KI0KN, had some strange-ness with some of his RTCM's when used for voting. As soon as he changed menu item 10 on the RTCM to either a (1) or a (0) instead of (2), he '''instantly''' got this on the RTCM console:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
04/05/2016 18:44:13.660  Lost GPS Time synchronization&lt;br /&gt;
04/05/2016 18:44:13.660  Host Connection Lost (Pri) (10.16.1.240)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And it sits there forever and never re-establishes connection to the host. The issue was finally traced to a bad batch of 9.6MHz crystals that affected a small run of the RTCM's. The issue was eventually resolved by Micro-Node, but we'll document it here just for record keeping.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
James comments to the list:&lt;br /&gt;
&lt;br /&gt;
:Well, after many of you offered your time and thoughts on my voter problem, Jim, WB6NIL, graciously donated a couple of hours of his time to remotely help me and he uncovered the problem.&lt;br /&gt;
&lt;br /&gt;
:All 5 of my RTCMs were purchased within the last 6 months, and I suspect all 5 have the same problem (will verify that today). The problem is that the microprocessor crystal is running too fast! There is 9.6Mhz crystal that drives the MPU, on the particular unit that Jim helped me diagnose, it's running 2.5 khz too fast.  &lt;br /&gt;
&lt;br /&gt;
:There is a sanity check in the firmware that makes sure the correct number of samples were taken in the last second (it's supposed to be 8000) and fails if the sample is incorrectly sized (mine is taking 8003 samples).  Jim helped adjust the code to be more tolerant of the sampling error and my whole system instantly worked.&lt;br /&gt;
&lt;br /&gt;
:I have since tested it with ALL my GPSs (they all work great!). So I now have everything working, including the voting.&lt;br /&gt;
&lt;br /&gt;
:I haven't contact Micro-Node about it yet. Jim told me that voting should work fine but this clock error would probably not be acceptable for Simulcast (something we have no plans on doing as of now). Since mine are deployed at mountain top sites, I'll probably pursue a crystal that is running at the correct frequency and use &amp;quot;standard&amp;quot; firmware so that if the decision is ever made to play with simulcast, I won't be right back in this same boat.&lt;br /&gt;
&lt;br /&gt;
:Thanks to all that helped out, and a HUGE thanks to Jim for taking the time to troubleshoot this.&lt;br /&gt;
&lt;br /&gt;
:BTW- This clock error will NOT effect the RTCM in mix client mode, it only affects it in voting or simulcast mode!&lt;br /&gt;
&lt;br /&gt;
:In voter.c, the stock line is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if ((samplecnt &amp;gt;= 7999) &amp;amp;&amp;amp; (samplecnt &amp;lt;= 8001))&lt;br /&gt;
&lt;br /&gt;
it needs to be changed to something like:&lt;br /&gt;
&lt;br /&gt;
if ((samplecnt &amp;gt;= 7999) &amp;amp;&amp;amp; (samplecnt &amp;lt;= 8003 ))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:That was just enough to make my first RTCM work. I've had a chance now to check a few more of my RTCMs on the bench this morning and the crystal frequencies are kind of all over.  The next one I had on the bench was 5.2Khz fast. The above code was still not enough to fix it (as would be expected) so it looks like the quality control on whatever manufacturer that crystal is, isn't very good (or a low tolerance crystal is being used). I am going to pursue crystal replacement to get a highly accurate, stable, on-frequency crystal in there as my first choice. Changing the firmware 5 different times doesn't seem like the right answer.&lt;br /&gt;
&lt;br /&gt;
:Jim put that sanity check in there for a reason. Working around it '''may''' allow the device to work, but to me, it seems getting the hardware operating the way it was supposed to originally is the better answer. I will follow up with Micro-node and let you all know how it goes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After following up with Micro-Node:&lt;br /&gt;
:They were all off, some were off a LOT. I talked to Mark @ Micronode. He told me there were 25 units that made it out the door with a crystal from an unapproved source and that was quite likely the reason for the problem. He gladly sent me 5 new crystals to replace (he offered to replace them himself if I sent the units in, but I am comfortable doing it myself to save the time and postage). &lt;br /&gt;
&lt;br /&gt;
:I haven't received them in the mail yet to show that the problem is fixed, but I will post here when that happens. He was great to work with and had no issue getting things set straight. If you are having the same issue and your RTCMs were bought about the same time, I'd suggest you contact him and have him help you resolve the issue!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Duplex Mode 3=&lt;br /&gt;
Does delayed repeat audio bug you? Tired of hearing a bit of yourself after you unkey? Wish you could talk full duplex? Hate the echo chamber effect? Then we have the answer for you.&lt;br /&gt;
&lt;br /&gt;
Duplex Mode 3 in app_rpt allows for &amp;quot;in-cabinet repeat&amp;quot; (where the radio hardware provides repeat audio) and app_rpt adds the hang time, courtesy tones, linking - all the &lt;br /&gt;
things apt_rpt does sans repeat audio. Therefore no repeat audio delay. Cool, eh? This duplex mode has been in app_rpt for a while. Problem has been how to implement it in the RTCM environment. &lt;br /&gt;
&lt;br /&gt;
Duplex Mode 3 support in the RTCM provides in-cabinet repeat functionality. Repeat audio loops through the RTCM and has almost zero delay because it does not have to traverse the network. The delay is not quite zero but it's plenty short enough to eliminate all of the above mentioned annoyances. &lt;br /&gt;
&lt;br /&gt;
Of course Duplex Mode 3 support can't be used with voting or simulcast.&lt;/div&gt;</summary>
		<author><name>Ve7fet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=40</id>
		<title>RTCM Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=40"/>
		<updated>2017-08-10T00:24:55Z</updated>

		<summary type="html">&lt;p&gt;Ve7fet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Micro-Node RTCM and VOTER interfaces are typically used with AllStar in voting/simulcast applications. They MAY be used for ANY repeater interface application, through the chan/voter channel driver. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER is the original through-hole board designed by Jim Dixon for this application. It is open-source, and the relevant Gerber files and BoM to build it are available. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The [http://www.micro-node.com/thin-m1.shtml Micro-Node Radio Thin Client Module (RTCM)] is the commercial version of the VOTER. It uses surface mount parts (SMT), but is functionally equivalent to the original VOTER. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In general, the two terms (RTCM/VOTER) are used interchangeably, as they operate the same, and use the same firmware (mostly, see below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This page will highlight some of the operational concerns, quirks, bugs, and other items of interest that relate to these interfaces. Much of the information has been gleaned off the AllStar mail list, comes from personal experience, or comes from notes in the firmware source code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Firmware=&lt;br /&gt;
The firmware in the RTCM and VOTER is the same, except it is compiled for the specific dsPIC that is installed in each. As such, the firmware is specific to the VOTER or the RTCM, and is NOT interchangeable (it won't boot in the wrong device). Firmware for the RTCM is denoted by &amp;quot;smt&amp;quot; in the filename.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are '''two parts''' to the firmware, a bootloader, and then the actual firmware file. The bootloader starts when power is applied, and allows you to talk to the dsPIC and load new firmware files over ethernet. If the bootloader is not intercepted by the loading tool, it will continue to boot the current firmware file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All new boards will need to have the bootloader installed first, followed by a firmware file. You '''can''' load a firmware file directly (.hex) in to the dsPIC, but then you will not have any of the bootloader remote loading features.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The current bootloader (.cof file) is available here: https://github.com/AllStarLink/voter/tree/master/voter-bootloader (the -smt file is for the RTCM). It needs to be loaded with a PICKit programmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Current firmware (.cry file) is available here: https://github.com/AllStarLink/voter/tree/master/board-firmware . They are loaded with the EBLEX C30 Programmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are multiple &amp;quot;flavors&amp;quot; of firmware available. See below for further explanation of what all the options mean.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The DSPBEW versions have Jim's DSP/BEW feature enabled. Note that due to the size of this feature, the diagnostics menu is NOT available in this version.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CHUCK versions have Chuck Henderson's RSSI and Squelch modifications enabled. This is probably the version that most user's will want to use in production.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Compiling Environment==&lt;br /&gt;
If you look in the [https://github.com/AllStarLink/voter/blob/master/votersystem.pdf votersystem.pdf], you will find a procedure to modify and load the bootloader in to the dsPIC of a VOTER board. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Unfortunately, there is an important step '''missing''' in that procedure, which is covered below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In addition, the old links for the MPLAB software are dead, so let's update this info and get you going.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Currently (Feb 2017), you can get the required software from:&lt;br /&gt;
:http://www.microchip.com/development-tools/downloads-archive&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download MPLAB IDE 32-bit Windows v8.66:&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_IDE_v8_66.zip&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/MPLAB_IDE_v8_66.zip&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download MPLAB C Compiler for PIC24 and dsPIC DSCs v3.31 '''NOT v.3.25''':&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Optionally, install Windows Virtual PC and XP Mode. This is getting to be pretty old software, so running it under XP Mode may be a good idea, so we can keep it isolated (install it in a virtual machine). It does run fine in Windows 7.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To setup the compile/build environment, follow these steps:&lt;br /&gt;
*Run the MPLAB IDE installer. You don't need to install the HI-TECH C Compiler at the end (click no)&lt;br /&gt;
*Run the MPLAB C Compiler installer&lt;br /&gt;
*Select Legacy Directory Name&lt;br /&gt;
*'''Select Lite Compiler'''&lt;br /&gt;
*Go to: https://github.com/AllStarLink&lt;br /&gt;
*Follow the links to: voter --&amp;gt; Clone or Download --&amp;gt; Download Zip. That will get you voter-master.zip which is a download of the whole VOTER tree from GitHub.&lt;br /&gt;
*Extract it somewhere (ie. in the XP Mode Virtual PC)&lt;br /&gt;
*Launch the MPLAB IDE&lt;br /&gt;
*Go to Configure --&amp;gt; Settings --&amp;gt; Projects and de-select one-to-one project mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bootloader==&lt;br /&gt;
If you need to load the bootloader in to a fresh board, you will need to follow these steps:&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; voter-bootloader.mcp --&amp;gt; Open (it is in the voter-bootloader folder of the GitHub source)&lt;br /&gt;
*Go to File --&amp;gt; Import --&amp;gt; voter-bootloader --&amp;gt; ENC_C30.cof --&amp;gt; Open '''This step is missing from the original procedure.'''&lt;br /&gt;
*Remove JP7 on the VOTER Board. This is necessary to allow programming by the PICKit2/PICKit3 device.&lt;br /&gt;
*Attach the PICKIT2/PICKit3 device to J1 on the VOTER board. Note that Pin 1 is closest to the power supply modules (as indicated on the board).&lt;br /&gt;
*If you have not already selected a programming device, go to Programmer --&amp;gt; Select Device and choose PICKit3 (or PICKit2, depending on what you are using).&lt;br /&gt;
*Go to Programmer --&amp;gt; Program. This will program the bootloader firmware into the PIC device on the board.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to change the default IP address from 192.168.1.11 in the bootloader:&lt;br /&gt;
*Select View --&amp;gt; Program Memory (from the top menu bar)&lt;br /&gt;
*Hit Control-F (to &amp;quot;find&amp;quot;) and search for the digits &amp;quot;00A8C0&amp;quot;.&lt;br /&gt;
*These should be found at memory address &amp;quot;03018&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;A8C0&amp;quot; at 03018 represents the hex digits C0 (192) and A8 (168) which are the first two octets of the IP address. The six digits to enter are 00 then the SECOND octet of the IP address in hex then the FIRST octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;0B01&amp;quot; at 0301A represents the hex digits 0B (11) and 01 (1) which are the second two octets of the IP address. The six digits to enter are 00 then the FOURTH octet of the IP address in hex then the THIRD octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you have modified the address to your desired IP, follow the programming procedure (above).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Firmware==&lt;br /&gt;
To compile the firmware (if you want to make custom changes):&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; navigate to board-firmware and open the .mcp file for the flavor of firmware you want to compile. They are in the board-firmware folder of the GitHub source.&lt;br /&gt;
*'''NOTE''': the .mcp files with the &amp;quot;smt&amp;quot; suffix are for the RTCM (built with SMT parts). The non-smt files are for the ORIGINAL through-hole VOTER boards. The difference is that the VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
*Go to Project --&amp;gt; Build Configuration and select &amp;quot;Release&amp;quot;. This may not be necessary (I don't believe that option is used in the firmware), but it removes the compiler option of __DEBUG being passed, so theoretically it would build &amp;quot;normal&amp;quot; firmware.&lt;br /&gt;
*Go to Configure --&amp;gt; Select Device and choose the appropriate device for your board from the Device list. If you don't select the right one, the board will not boot. Select dsPIC33FJ128GP802 for the VOTER, and dsPIC33FJ128GP804 for the RTCM.&lt;br /&gt;
*Now, if you go to Project --&amp;gt; Build All it should compile everything and show you &amp;quot;Build Succeeded&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A .cry file should be in the board-firmware folder. You can load this with the ENC Loader.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is also a .hex file in there that you could load with a programmer... but that would wipe the bootloader... so don't do that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Chuck Squelch==&lt;br /&gt;
If you want to enable &amp;quot;Chuck Squelch&amp;quot;, open the HardwareProfile.h and un-comment #define CHUCK. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may also want to go down to Line 291 in Voter.c (right click on the window, go to Properties --&amp;gt; &amp;quot;C&amp;quot; File Types --&amp;gt; Line Numbers) and tack on CHUCK after 1.60 (the current version number) so that when you load this firmware, the version will be shown as 1.51CHUCK, and you'll know that Chuck Squelch is compiled in. We should probably make that more automagic in the future...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==DSP/BEW==&lt;br /&gt;
If you want to compile the DSPBEW version, open the DSPBEW project file instead.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DSP/BEW Firmware Version=&lt;br /&gt;
DSP BEW Firmware is mutually exclusive with the diagnostic menu. There is not enough space for both, if you load the DSP/BEW firmware, you will '''NOT''' have a diag menu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BEW stands for Baseband Examination Window.&lt;br /&gt;
&lt;br /&gt;
Typically, the discriminator of an FM communications receiver produces results containing audio spectrum from the &amp;quot;sub-audible&amp;quot; range (typically &amp;lt; 100 Hz) to well above frequencies able to be produced by modulating audio. These higher frequencies can be utilized to determine signal quality, since they can only contain noise (or no noise, if a sufficiently strong signal is present).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For receivers (such as the Motorola Quantar, etc) that do not provide sufficient spectral content at these &amp;quot;noise&amp;quot; frequencies (for various reasons), The &amp;quot;DSP/BEW (Digital Signal Processor / Baseband Examination Window)&amp;quot; feature of the RTCM firmware may be utilized. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These receivers are perfectly capable of providing valid &amp;quot;noise&amp;quot; signal with no modulation on the input of the receiver, but with strong modulation (high frequency audio and high deviation), it severely interferes with proper analysis of signal strength.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This feature provides a means by which a &amp;quot;Window&amp;quot; of baseband (normal audio range) signal is examined by a DSP and a determination of whether or not sufficient audio is present to cause interference of proper signal strength is made. During the VERY brief periods of time when it is determined that sufficient audio is present to cause interference, the signal strength value is &amp;quot;held&amp;quot; (the last valid value previous to the time of interference) until such time that the interfering audio is no longer present.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The DSP/BEW feature is selectable, and '''should not''' be used for a receiver that does not need it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A note on the Motorola SLR5700 per VE7FET. DSP/BEW definitely makes a difference on what AllMon reports for the signal strength of received signals. It is less reactive when DSP/BEW = 1 than with it set to 0. We'll have to see what the real world trials show. It might be better to leave it off.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Chuck Squelch=&lt;br /&gt;
&amp;quot;Chuck Squelch&amp;quot; are a couple firmware changes made by Chuck Henderson, WB9UUS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pre-compiled firmware versions including this option are available on [https://github.com/AllStarLink/voter/tree/master/board-firmware GitHub]. See above on how it is enabled/compiled, if you are rolling your own firmware modifications.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
One of the changes fixes an issue with weak signals producing RSSI readings all over the place. It is caused by a 16 bit value that was overflowing (it is the RSSI change in the firmware). It results in rock-solid RSSI values being reported, even on barely or non-readable signals. '''This change will likely be rolled in to a permanent fix in a future firmware release.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The other firmware change changes how the squelch responds (looks at the noise in the last two audio samples) and makes the &amp;quot;Micor squelch&amp;quot; action work better.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may also want to consider the following changes in /etc/asterisk/voter.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;Comment out:&lt;br /&gt;
;thresholds =&lt;br /&gt;
&lt;br /&gt;
;and set:&lt;br /&gt;
linger = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Squelch Issues==&lt;br /&gt;
*If anyone is off frequency a little bit, that will make the voice talk off worse. Double check that the repeater and the users are all on frequency.&lt;br /&gt;
*Don't use narrow bandwidth on the repeater receiver. &lt;br /&gt;
*Make sure that the discriminator audio is not rolled off even a little bit at the high end. There should not be resistors in series or capacitors to ground between the discriminator chip output pin and the voter board input, for best results.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM/VOTER LED's=&lt;br /&gt;
RX LED on the RTCM/VOTER will flash (same rate as ACT LED) if you have External CTCSS enabled, and the received signal has the wrong (or no) valid PL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Network Information=&lt;br /&gt;
==RTCM/VOTER Bandwidth==&lt;br /&gt;
Assuming ulaw... The RTCM will require approximately 80kbps of bandwidth for continual usage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Network Quality==&lt;br /&gt;
Your IP Network quality is important. You may wish to add a rule in your routers to prioritize traffic on UDP port 667 so that RTCM audio is given priority over other &lt;br /&gt;
traffic. Also see the [[#Debug Options]] below for notes on how to tag your packets with ToS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==RX/TX Buffers are NOT Both Millisecond Values== &lt;br /&gt;
You might assume an RX buffer (in voter.conf) of 120ms would be equivalent of a TX buffer (in the RTCM) of 120ms. That is not the case.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The TX buffer is a number of 125 '''microsecond''' intervals, where the RX buffer is in milliseconds. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you follow the buffer setting instructions, you should be fine, in most cases. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Debug Options=&lt;br /&gt;
The VOTER/RTCM firmware supports some additional debugging information that can be turned on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
From the source code, the different Debug Options are listed as:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1 - Alt/Main Host change notifications&lt;br /&gt;
2 - Ignore HWlock (GGPS only)&lt;br /&gt;
4 - GPS/PPS Failure simulation (GGPS only)&lt;br /&gt;
8 - POCSAG H/W output disable (GGPS only)&lt;br /&gt;
16 - IP TOS Class for Ubiquiti&lt;br /&gt;
32 - GPS Debug&lt;br /&gt;
64 - Fix GPS 1 second off&lt;br /&gt;
128 - Fix GPS 1 month off (WTF,O??)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Not sure what they all do, but that is what they are. Here are the most common ones used:&lt;br /&gt;
*&amp;quot;Alt/Main Host change notifications&amp;quot; shows when the connection to the Asterisk server changes state.&lt;br /&gt;
*&amp;quot;IP TOS Class for Ubiquity&amp;quot; marks the IP headers from the RTCM/VOTER '''TO''' the network with ToS C0/DSCP 48 (UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS &lt;br /&gt;
latency). Other sources show this as a Network Control TOS.) If you enable this, you also will want to have &amp;quot;utos=y&amp;quot; in your voter.conf to mark the packets from the network '''TO''' the RTCM/VOTER. We will probably change this option to mark the packets by default in a future version.&lt;br /&gt;
*&amp;quot;GPS Debug&amp;quot; will print NMEA or TSIP debug strings from the connected GPS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The way this works is you add together the options you want to enable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Want to enable GPS Debug and IP ToS, set debug to 48.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just want to turn on GPS Debug, set debug to 32.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just want ToS turned on, set debug to 16.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Un-documented Menus/Features=&lt;br /&gt;
*Menu 96 - If firmware compiled with DUMPENCREGS enabled, Menu 96 looks like it dumps the registers from the ENC (Ethernet) chip?&lt;br /&gt;
&lt;br /&gt;
*Menu 111 - show the &amp;quot;hidden&amp;quot; option values (normally they should all be 0).&lt;br /&gt;
&lt;br /&gt;
*Menu 11780 - set the &amp;quot;Elkes&amp;quot; value? No idea what this does.&lt;br /&gt;
&lt;br /&gt;
*Menu 1103 - set the &amp;quot;Glaser&amp;quot; timer value? No idea what this does.&lt;br /&gt;
&lt;br /&gt;
*Menu 1170 - set &amp;quot;Sawyer Mode&amp;quot;. No idea what this does, it was a modification Jim made for Tim Sawyer, but Tim doesn't recall what it was for. :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Audio=&lt;br /&gt;
The RTCM/VOTER is totally flexible regarding emphasis. Although the way it is set is completely obscure. It tries to automatically do the right thing for you, which is great most of the time. But when it’s not, it's hard to know what is going on. &lt;br /&gt;
&lt;br /&gt;
If you are changing the COR Type settings, or nodeemp in voter.conf, make sure you save/reboot the RTCM/VOTER every time you make a change... changes are '''not''' effective until the RTCM/VOTER reboots!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Voting==&lt;br /&gt;
Before we get in to the different ways audio is routed, there is an important consideration you need to make if you are using the RTCM/VOTER for voting. &lt;br /&gt;
&lt;br /&gt;
The way the voting process works, it needs '''discriminator audio''' to determine the signal to noise level from each satellite receiver. As such, you will need to be feeding discriminator audio in to the RX audio pin, so that the hardware/software can vote properly. That means you also need to let the hardware/software do the squelch action.&lt;br /&gt;
&lt;br /&gt;
If you need RX CTCSS, you'll need to feed logic from an external CTCSS decoder in to the CTCSS input pin.&lt;br /&gt;
&lt;br /&gt;
Also, don't disable COR in the RTCM/VOTER... it will cause it to disable the squelch and it will report an RSSI of 255 (full quieting) for all received signals.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Receiver De-emphasis==&lt;br /&gt;
On the RX side the COR Type setting in the RTCM/VOTER determines whether the de-emphasis filter is used for RX audio. 0=Normal means the RTCM/VOTER squelch circuit is in use and it is expecting discriminator audio on the RX pin (to be able to do the squelch action), and therefore it '''will''' provide de-emphasis (audio is routed THROUGH the de-emphasis RC filter circuit) to the receiver audio. COR Type 1=IGNORE COR uses the CTCSS input pin for COR or CTCSS ''logic'' and it then expects de-emphasized receive (line) audio on the RX pin, and therefore will '''not''' provide de-emphasis to the received audio (the RC filter is switched '''out''' and audio passes straight through). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Most of the time, you do NOT need to override the automatic filter selection. However, if you do, and you are sure you have a good reason to, you CAN switch the de-emphasis filter '''out''' of the circuit so that audio passes straight through to the encoder. You would do this by setting the nodeemp=1 option in voter.conf. When you set nodeemp=1, the ''VOTER Protocol'' tells the RTCM/VOTER to switch the filter '''out''', so audio is passed straight through.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Transmitter Pre-emhpasis==&lt;br /&gt;
On the TX side, the RTCM/VOTER expects the repeater to accept ''mic audio''. In other words, the '''repeater''' is providing the pre-emphasis, not the RTCM/VOTER (you are '''not''' directly modulating the TX). This can be overridden by setting CTCSS tone in voter.conf. If a CTCSS tone is defined, the RTCM '''will''' provide pre-emphasis to the audio, and expects that you will be connecting to your repeater's flat audio input (direct modulation). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you don’t want TX CTCSS tone but '''do''' need pre-emphasis, set an arbitrary (any) CTCSS tone in voter.conf, and set the level to 0. This will force the RTCM/VOTER to pre-emphasize the audio it generates on the TX pin, but it won't actually mix in a CTCSS tone. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Level Setting==&lt;br /&gt;
Setting the audio levels for the RTCM/VOTER is pretty straight forward. Just follow these steps:&lt;br /&gt;
*Ensure you have a connection to your host Asterisk server/chan_voter instance&lt;br /&gt;
*Send a 1kHz@3kHz on-channel, full-quieting signal in to the repeater's RX&lt;br /&gt;
*Set the RX up so it reads 3kHz deviation on the RTCM's built in console meter&lt;br /&gt;
*Now set the TX level '''pot''' to get 3kHz out of the transmitter (No PL)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now change the modulation from 1kHz tone to 800Hz followed by 1.8kHz and verify that the deviation level doesn't change as the tone frequency changes. '''Changing levels indicates a pre/de-emphasis issue.''' You will want to read the above sections on how audio is handled, and figure out where your issue is.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If using PL you have to account for that deviation, unless you filter it out with your IFR (test set). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That's it!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Optionally, if you are using the built-in &amp;quot;offline repeat&amp;quot; functions, fail the connection to the host Asterisk server, and make sure your repeat audio performs the same as above.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Crappy Transmit Audio==&lt;br /&gt;
&lt;br /&gt;
Does your repeated audio sounded really bassy, muffled, and not very understandable? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There was a situation where, compared to a typical simplex radio-to-radio transmission, the audio through the repeater (RTCM and Asterisk) was unacceptable. What was discovered was that the RTCM has an internal pre-emphasis function that was disabled. The user had intentionally disabled &amp;quot;txctcss&amp;quot; and &amp;quot;txctcsslevel&amp;quot; in voter.conf because he didn't &lt;br /&gt;
want the RTCM transmitting CTCSS (the Quantar was doing that already). He ultimately found a post on the mail list explaining the settings above that said enabling txctcss = some valid tone (114.8 in his case) and setting txctcsslevel = 0 would turn on the pre-emphasis function in the RTCM without transmitting CTCSS tones. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
He did, and it worked like a charm! Audio now had more treble and was less bassy/muffled. So, future RTCM users, be sure not to comment out txctcss and txctcsslevel in voter.conf!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just enable and set the level to 0. You'll thank me later. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=GPS=&lt;br /&gt;
The RTCM/VOTER will work with most GPS available. It requires either NMEA or Trimble TSIP binary data. It only receives data '''from''' the GPS (GPS TX), it does not send anything '''to''' the GPS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The firmware is specifically written to talk to Trimble Thunderbolt receivers using Trimble's TSIP binary data interface, however, other Trimbles GPS receivers that talk TSIP are generally compatible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==NMEA Sentences==&lt;br /&gt;
If you are using an NMEA GPS (as opposed to a Trimble using the TSIP binary interface), the RTCM/VOTER is looking for the following NMEA sentences:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$GPGGA&lt;br /&gt;
$GPGSV&lt;br /&gt;
$GPRMC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Lock==&lt;br /&gt;
The GPS led will go solid regardless of the connection LED. That '''has''' to happen or it won't connect to the Asterisk server. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is not unusual for it to take up to 20 mins to get a GPS lock LED (ie. using a Trimble Thunderbolt) after any reboot. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS De-sense==&lt;br /&gt;
If you are having odd loss of lock issues, consider you may have interference to your GPS antenna from strong RF nearby. A note from Jesse Lloyd:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I also had crazy problems with poor signal on my GPS when I set it up sitting in a window, and once installed at site I had the GPS antenna maybe 6 ft from the VHF antenna, and after some troubleshooting found it was getting swamped with RF and loosing lock. &lt;br /&gt;
&lt;br /&gt;
I found the debug setting of 32 useful in the RTCM, you can see a hex output of the GPS status.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Issues==&lt;br /&gt;
===Trimble Thunderbolt===&lt;br /&gt;
You may find your Trimble Thunderbolt is showing the incorrect date at the moment. It could be showing the year as 1997. This is due to the date in the Thunderbolt being reported incorrectly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''This can cause some of your voting receivers to not connect, if they are used with other GPS in your system.''' If you have '''ALL''' Thunderbolts, or '''NO''' Thunderbolts, you are probably fine. If you have '''ALL''' Thunderbolts, the date/time is probably wrong, but they will ALL be wrong, so they will connect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GPS Time is a continuous counting time scale beginning at the January 5, 1980 to January 6, 1980 midnight. It is split into two parts: a time of week measured in seconds from midnight Sat/Sun and a week number. The time of week is transmitted in an unambiguous manner by the satellites, but only the bottom 10 bits of the week number are transmitted. This means that a receiver will see a week number count that goes up steadily until it reaches 1023 after which it will “roll over” back to zero, before steadily going up again. Such a week rollover will occur approx. every 20 years. The last week rollover occurred in 1999 and the next one will be in 2019.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Thunderbolt manual states:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The ThunderBolt adjusts for this week rollover by adding 1024 to any week number reported by GPS which is less than week number 936 which began on December 14, 1997. With this technique, the ThunderBolt will provide an accurate translation of GPS week number and TOW to time and date until July 30, 2017.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As such, the Trimble Thunderbolt has a firmware issue with the GPS Week rollover that manifested itself on July 30, 2017, causing the date to become incorrect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We have added a brute-force fix starting in RTCM/VOTER firmware &amp;gt;=1.51. It fixes the Thunderbolts, we have not done extensive testing to see how it affects other TSIP receivers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Garmin===&lt;br /&gt;
====Garmin 18x LVC Wiring Issues====&lt;br /&gt;
If you have issues with your GPS 18x LVC not talking to the RTCM/VOTER, it may not be hooked up to the RTCM correctly. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Garmin pin labeling is backwards to what you may think. See below. You probably need to swap pins 6 and 14.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RTCM   	                 GPS 18x LVC      &lt;br /&gt;
6 GRX 	&amp;lt;-- Rx Data 	 6 Green  &lt;br /&gt;
7 GPPS 	&amp;lt;-- Pulse Output 1 Yellow  &lt;br /&gt;
8 GND   Ground 		 3 Black  &lt;br /&gt;
8 GND   Ground 		 5 Black  &lt;br /&gt;
13 +5V 	--&amp;gt;Vin 		 2 Red  &lt;br /&gt;
14 GTX 	--&amp;gt; TX Data 	 4 White&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log into the RTCM and do 98 and you should see something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Current Time: Sun  Apr 20, 2014  04:37:02.820&lt;br /&gt;
Last Rx Pkt System time: 04/20/2014 03:55:35.580, diff: 2487260 msec&lt;br /&gt;
Last Rx Pkt Timestamp time: 04/20/2014 03:55:32.064, diff: 3515 msec&lt;br /&gt;
Last Rx Pkt index: 160, inbounds: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Garmin and the RTCM====&lt;br /&gt;
Beware when buying newer Garmin GPS's to use with the Micro-Node RTCM.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The RTCM expects a 5V PPS signal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Newer Garmin's (GPS 18X, 18X LVC, etc.) MAY NOT output 5V, and can cause issues. '''Check the Garmin datasheet'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER is designed to accept both 3.3V or 5V signals, and ''should'' work fine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==No GPS/Mixed Mode==&lt;br /&gt;
You do not need a timing source to use an RTCM if you don’t want to vote. That’s called Mix Mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Having the PPS Polarity set to 2 tells the RTCM you do not have a GPS. That forces the RTCM to become a mix (non-voting) client. Turn it on, save it, and restart. A simple voter.conf would look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[general]&lt;br /&gt;
port = 667&lt;br /&gt;
password = BLAH&lt;br /&gt;
&lt;br /&gt;
[1000]&lt;br /&gt;
Site1 = pswrd1,master,transmit&lt;br /&gt;
Site2 = pswrd2,transmit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mixed Client Error==&lt;br /&gt;
&amp;quot;I am getting this error in Asterisk&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WARNING[2368]: chan_voter.c:4511 voter_reader: Voter client master timing source mobile1 attempting to authenticate as mix client!!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A mixed client error means the voter.conf file is expecting an RTCM to try and connect with a GPS IP packet (ie. has '''master''' in it in voter.conf), but the RTCM isn't &lt;br /&gt;
sending a GPS IP packet. So its a mismatch between voter.conf and Option 10 in the RTCM. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to use a mix client (non-voted), make sure that receiver's configuration line in voter.conf '''does not''' have the '''master''' option set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Debug==&lt;br /&gt;
To turn on GPS Debugging, set the Debug Option Level in the RTCM/VOTER to 32.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [[#Debug Options]] levels for more information on how this works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Trimble Debug Status Decoding==&lt;br /&gt;
The VOTER/RTCM when in TSIP mode (Trimble), assumes it is a Trimble Thunderbolt and is looking for two packets:&lt;br /&gt;
*0x8F-AB - Primary Timing Packet&lt;br /&gt;
*0x8F-AC - Supplemental Timing Packet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Grab a copy of the Thunderbolt User Guide: http://leapsecond.com/pages/tbolt/Thunderbolt-2012-02.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pages 78-83 are the important ones.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Packet 0x8F-AB is what grabs the timing information, and packet 0x8F-AC is what it looks at for everything else (including debug).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The debug string that the VOTER/RTCM reports:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	printf(&amp;quot;GPS-DEBUG: TSIP: ok %d, 9 - 14: %02x %02x %02x %02x %02x %02x\n&amp;quot;,&lt;br /&gt;
					happy,gps_buf[9],gps_buf[10],gps_buf[11],gps_buf[12],gps_buf[13],gps_buf[14]);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, the 1 after ok is the &amp;quot;happy gps&amp;quot; flag. The other 5 bytes are supposed to be bytes 9-14 from the packet... sort of. They are bytes 9-14 of the buffer, but they are actually bytes 8-13 of the binary message.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Looking at the message structure, bytes 8-13 are:&lt;br /&gt;
*8-9 Critical Alarms&lt;br /&gt;
*10-11 Minor Alarms&lt;br /&gt;
*12 GPS Decoding Status&lt;br /&gt;
*13 Disciplining Activity&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Therefore, the messages you are seeing break down as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GPS-DEBUG: TSIP: ok 1, 9 - 14: 00 00 00 00 00 00 - everything is good in the 'hood, Doing Fixes, Phase Locking&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 18 08 06 - not happy, Not Tracking Satellites, Not Disciplining Oscillator (0x18 --&amp;gt; 0b000000011000), No Usable Sats, Inactive&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 08 08 05 - not happy, Not Tracking Satellites, No Useable Sats, Compensating OXCO (holdover)&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 00 00 05 - not happy, Compensating OXCO (holdover)&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 1, 9 - 14: 00 00 00 00 00 08 - happy, Recovery Mode&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 00 00 04 - not happy, Initializing Loop Filter&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The GPS is flagged as NOT HAPPY in TSIP mode if ANY of the following are TRUE:&lt;br /&gt;
*If GPS Decoding Status is anything other than &amp;quot;Doing Fixes&amp;quot;.&lt;br /&gt;
*If Disciplining Activity is not Phase Locking or Recovery Mode.&lt;br /&gt;
*Any Critical Alarms.&lt;br /&gt;
*Any Minor Alarms.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ubiquity ToS=&lt;br /&gt;
See https://help.ubnt.com/hc/en-us/articles/205231750-airMAX-How-is-QoS-and-prioritization-handled-by-airMAX-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, if we set ToS/DSCP in the header to C0, then Ubiquity (and other gear watching ToS) ''should'' prioritize the packets. This sets the DSCP to 110 000 aka 48. UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS latency). Other sources show this as a Network Control TOS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is an option in voter.conf to turn this on (utos=y). However, this only controls packets being sent from Asterisk '''TO''' the RTCM. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to tag packets from the RTCM '''TO''' Asterisk, you need to set the RTCM debug option level to 16 (see [[#Debug Options]] for how this works).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At some point we should probably change the default behaviour of the RTCM firmware to mark the packets and use the debug setting to '''disable''' ToS. That change (if you wanted to compile your own firmware) would be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Change line 90 in IP.c&lt;br /&gt;
&lt;br /&gt;
From:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? 0xc0 : (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY))&lt;br /&gt;
&lt;br /&gt;
To:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY) : 0xc0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This changes the conditional expression from if the debug level is 16 to mark the packets with DSCP 48 to if the debug level is 16, mark the packets routine (DSCP 0).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM Simulcasting=&lt;br /&gt;
The RTCM/VOTER boards do support simulcasting, however, there are a bunch of quirks that one needs to be aware of.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Radio Hardware==&lt;br /&gt;
For best results, you should use all identical RF equipment between your voting RX sites and simulcast TX sites. If you don't, you can end up with strange audio artifacts when different receivers are used, and other strange audio issues when different transmitters are used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==9.6MHz Oscillator==&lt;br /&gt;
If you want reliable simulcast with an acceptable level of overlap warble, you MUST inject a GPS-disciplined or OXCO 9.6MHz signal to the clock of the RTCM's, in lieu of their stock internal crystal. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Otherwise, the inherent internal clock jitter of the RTCM's will cause CTCSS warble, etc. in areas where your transmitters overlap. The 1 PPS feed that you normally feed the RTCM's is acceptable for voting, but naturally, a typical crystal-driven clock will slightly drift in between the pulses every second due to inherent jitter, etc., and that ain't to good for situations like simulcast which demand sample-accurate performance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are some comments from Joe, KC2IRV, on the subject. He has also created his own wiki, specific to simulcast issues, you can find it at: http://rtcmsimulcast.wikifoundry.com/ &lt;br /&gt;
&lt;br /&gt;
:I felt I needed to let those on this mailing list know my findings with simulcasting with the RTCM units since I have received a great deal of help and information from people on this list.&lt;br /&gt;
&lt;br /&gt;
:For the past week I have had a two (2) site simulcast system up and running on UHF using the RTCM units. I have done a great deal of testing and proving on the bench and it is so far working beautifully. &lt;br /&gt;
&lt;br /&gt;
:The one issue that was made apparent to me early on was that in order for the RTCM's to be suitable for simulcast, the processor inside it needed to be clocked to a more accurate source. This source is supposed to be the Programmable Clock Generator Module in order to produce a GPS locked 9.6 MHz reference for the processor. Unfortunately this unit is not currently available.&lt;br /&gt;
&lt;br /&gt;
:Knowing this, I started to go down the road of possibly designing my own, but stumbled upon a cheap, plentiful supply of Symmetricom 9.6 MHz sinewave OCXO's. I took a chance and ordered a few to experiment with to see if the RTCM would be able to use this in place of the supplied crystal for a clock. I found they did, with that I decided to modify the RTCM with an SMA connector just above the audio adjustment pots and use this OCXO. I trimmed the frequency on the units to match each other and used them to produce the processor clock.&lt;br /&gt;
&lt;br /&gt;
:After a week of testing, I have found the results in the overlap areas to be exactly as I would expect them on a public safety/commercial simulcast system. While in an overlap region where both transmitters are within 3dB of one another, to the ear you hear no audio phase wandering. Of course , this has only been a week of testing so I wouldn't call it case closed yet.&lt;br /&gt;
&lt;br /&gt;
:I will say that if this system remains this way after testing for 6 months to a year than using a 9.6 MHz OXCO is a viable alternative to achieve the needed precision and accuracy needed for the processor clock to make it suitable for simulcast.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Comments from Jim Dixon on the issue:&lt;br /&gt;
&lt;br /&gt;
:You have to use '''something''' that will take the precise 10MHz (or whatever it is) from the GPSDO and PLL (phase-locked) convert it to 9.6MHz (square wave at 3.3V for the CPU clock).&lt;br /&gt;
&lt;br /&gt;
:We had to use 9.6MHz mainly because of the DAC in the dsPIC instead of 10MHz. The options for various divide/clock radios in the part are RATHER limited. As I recall, there wasn't even a way of getting the necessary 16kb/s sample rate on the ADC from 10MHZ, either.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Micro-Node RTCM Clock Issue=&lt;br /&gt;
James, KI0KN, had some strange-ness with some of his RTCM's when used for voting. As soon as he changed menu item 10 on the RTCM to either a (1) or a (0) instead of (2), he '''instantly''' got this on the RTCM console:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
04/05/2016 18:44:13.660  Lost GPS Time synchronization&lt;br /&gt;
04/05/2016 18:44:13.660  Host Connection Lost (Pri) (10.16.1.240)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And it sits there forever and never re-establishes connection to the host. The issue was finally traced to a bad batch of 9.6MHz crystals that affected a small run of the RTCM's. The issue was eventually resolved by Micro-Node, but we'll document it here just for record keeping.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
James comments to the list:&lt;br /&gt;
&lt;br /&gt;
:Well, after many of you offered your time and thoughts on my voter problem, Jim, WB6NIL, graciously donated a couple of hours of his time to remotely help me and he uncovered the problem.&lt;br /&gt;
&lt;br /&gt;
:All 5 of my RTCMs were purchased within the last 6 months, and I suspect all 5 have the same problem (will verify that today). The problem is that the microprocessor crystal is running too fast! There is 9.6Mhz crystal that drives the MPU, on the particular unit that Jim helped me diagnose, it's running 2.5 khz too fast.  &lt;br /&gt;
&lt;br /&gt;
:There is a sanity check in the firmware that makes sure the correct number of samples were taken in the last second (it's supposed to be 8000) and fails if the sample is incorrectly sized (mine is taking 8003 samples).  Jim helped adjust the code to be more tolerant of the sampling error and my whole system instantly worked.&lt;br /&gt;
&lt;br /&gt;
:I have since tested it with ALL my GPSs (they all work great!). So I now have everything working, including the voting.&lt;br /&gt;
&lt;br /&gt;
:I haven't contact Micro-Node about it yet. Jim told me that voting should work fine but this clock error would probably not be acceptable for Simulcast (something we have no plans on doing as of now). Since mine are deployed at mountain top sites, I'll probably pursue a crystal that is running at the correct frequency and use &amp;quot;standard&amp;quot; firmware so that if the decision is ever made to play with simulcast, I won't be right back in this same boat.&lt;br /&gt;
&lt;br /&gt;
:Thanks to all that helped out, and a HUGE thanks to Jim for taking the time to troubleshoot this.&lt;br /&gt;
&lt;br /&gt;
:BTW- This clock error will NOT effect the RTCM in mix client mode, it only affects it in voting or simulcast mode!&lt;br /&gt;
&lt;br /&gt;
:In voter.c, the stock line is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if ((samplecnt &amp;gt;= 7999) &amp;amp;&amp;amp; (samplecnt &amp;lt;= 8001))&lt;br /&gt;
&lt;br /&gt;
it needs to be changed to something like:&lt;br /&gt;
&lt;br /&gt;
if ((samplecnt &amp;gt;= 7999) &amp;amp;&amp;amp; (samplecnt &amp;lt;= 8003 ))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:That was just enough to make my first RTCM work. I've had a chance now to check a few more of my RTCMs on the bench this morning and the crystal frequencies are kind of all over.  The next one I had on the bench was 5.2Khz fast. The above code was still not enough to fix it (as would be expected) so it looks like the quality control on whatever manufacturer that crystal is, isn't very good (or a low tolerance crystal is being used). I am going to pursue crystal replacement to get a highly accurate, stable, on-frequency crystal in there as my first choice. Changing the firmware 5 different times doesn't seem like the right answer.&lt;br /&gt;
&lt;br /&gt;
:Jim put that sanity check in there for a reason. Working around it '''may''' allow the device to work, but to me, it seems getting the hardware operating the way it was supposed to originally is the better answer. I will follow up with Micro-node and let you all know how it goes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After following up with Micro-Node:&lt;br /&gt;
:They were all off, some were off a LOT. I talked to Mark @ Micronode. He told me there were 25 units that made it out the door with a crystal from an unapproved source and that was quite likely the reason for the problem. He gladly sent me 5 new crystals to replace (he offered to replace them himself if I sent the units in, but I am comfortable doing it myself to save the time and postage). &lt;br /&gt;
&lt;br /&gt;
:I haven't received them in the mail yet to show that the problem is fixed, but I will post here when that happens. He was great to work with and had no issue getting things set straight. If you are having the same issue and your RTCMs were bought about the same time, I'd suggest you contact him and have him help you resolve the issue!&lt;/div&gt;</summary>
		<author><name>Ve7fet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=39</id>
		<title>RTCM Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=39"/>
		<updated>2017-08-09T23:32:25Z</updated>

		<summary type="html">&lt;p&gt;Ve7fet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Micro-Node RTCM and VOTER interfaces are typically used with AllStar in voting/simulcast applications. They MAY be used for ANY repeater interface application, through the chan/voter channel driver. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER is the original through-hole board designed by Jim Dixon for this application. It is open-source, and the relevant Gerber files and BoM to build it are available. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The [http://www.micro-node.com/thin-m1.shtml Micro-Node Radio Thin Client Module (RTCM)] is the commercial version of the VOTER. It uses surface mount parts (SMT), but is functionally equivalent to the original VOTER. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In general, the two terms (RTCM/VOTER) are used interchangeably, as they operate the same, and use the same firmware (mostly, see below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This page will highlight some of the operational concerns, quirks, bugs, and other items of interest that relate to these interfaces. Much of the information has been gleaned off the AllStar mail list, comes from personal experience, or comes from notes in the firmware source code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Firmware=&lt;br /&gt;
The firmware in the RTCM and VOTER is the same, except it is compiled for the specific dsPIC that is installed in each. As such, the firmware is specific to the VOTER or the RTCM, and is NOT interchangeable (it won't boot in the wrong device). Firmware for the RTCM is denoted by &amp;quot;smt&amp;quot; in the filename.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are '''two parts''' to the firmware, a bootloader, and then the actual firmware file. The bootloader starts when power is applied, and allows you to talk to the dsPIC and load new firmware files over ethernet. If the bootloader is not intercepted by the loading tool, it will continue to boot the current firmware file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All new boards will need to have the bootloader installed first, followed by a firmware file. You '''can''' load a firmware file directly (.hex) in to the dsPIC, but then you will not have any of the bootloader remote loading features.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The current bootloader (.cof file) is available here: https://github.com/AllStarLink/voter/tree/master/voter-bootloader (the -smt file is for the RTCM). It needs to be loaded with a PICKit programmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Current firmware (.cry file) is available here: https://github.com/AllStarLink/voter/tree/master/board-firmware . They are loaded with the EBLEX C30 Programmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are multiple &amp;quot;flavors&amp;quot; of firmware available. See below for further explanation of what all the options mean.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The DSPBEW versions have Jim's DSP/BEW feature enabled. Note that due to the size of this feature, the diagnostics menu is NOT available in this version.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CHUCK versions have Chuck Henderson's RSSI and Squelch modifications enabled. This is probably the version that most user's will want to use in production.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Compiling Environment==&lt;br /&gt;
If you look in the [https://github.com/AllStarLink/voter/blob/master/votersystem.pdf votersystem.pdf], you will find a procedure to modify and load the bootloader in to the dsPIC of a VOTER board. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Unfortunately, there is an important step '''missing''' in that procedure, which is covered below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In addition, the old links for the MPLAB software are dead, so let's update this info and get you going.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Currently (Feb 2017), you can get the required software from:&lt;br /&gt;
:http://www.microchip.com/development-tools/downloads-archive&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download MPLAB IDE 32-bit Windows v8.66:&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_IDE_v8_66.zip&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/MPLAB_IDE_v8_66.zip&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download MPLAB C Compiler for PIC24 and dsPIC DSCs v3.31 '''NOT v.3.25''':&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Optionally, install Windows Virtual PC and XP Mode. This is getting to be pretty old software, so running it under XP Mode may be a good idea, so we can keep it isolated (install it in a virtual machine). It does run fine in Windows 7.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To setup the compile/build environment, follow these steps:&lt;br /&gt;
*Run the MPLAB IDE installer. You don't need to install the HI-TECH C Compiler at the end (click no)&lt;br /&gt;
*Run the MPLAB C Compiler installer&lt;br /&gt;
*Select Legacy Directory Name&lt;br /&gt;
*'''Select Lite Compiler'''&lt;br /&gt;
*Go to: https://github.com/AllStarLink&lt;br /&gt;
*Follow the links to: voter --&amp;gt; Clone or Download --&amp;gt; Download Zip. That will get you voter-master.zip which is a download of the whole VOTER tree from GitHub.&lt;br /&gt;
*Extract it somewhere (ie. in the XP Mode Virtual PC)&lt;br /&gt;
*Launch the MPLAB IDE&lt;br /&gt;
*Go to Configure --&amp;gt; Settings --&amp;gt; Projects and de-select one-to-one project mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bootloader==&lt;br /&gt;
If you need to load the bootloader in to a fresh board, you will need to follow these steps:&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; voter-bootloader.mcp --&amp;gt; Open (it is in the voter-bootloader folder of the GitHub source)&lt;br /&gt;
*Go to File --&amp;gt; Import --&amp;gt; voter-bootloader --&amp;gt; ENC_C30.cof --&amp;gt; Open '''This step is missing from the original procedure.'''&lt;br /&gt;
*Remove JP7 on the VOTER Board. This is necessary to allow programming by the PICKit2/PICKit3 device.&lt;br /&gt;
*Attach the PICKIT2/PICKit3 device to J1 on the VOTER board. Note that Pin 1 is closest to the power supply modules (as indicated on the board).&lt;br /&gt;
*If you have not already selected a programming device, go to Programmer --&amp;gt; Select Device and choose PICKit3 (or PICKit2, depending on what you are using).&lt;br /&gt;
*Go to Programmer --&amp;gt; Program. This will program the bootloader firmware into the PIC device on the board.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to change the default IP address from 192.168.1.11 in the bootloader:&lt;br /&gt;
*Select View --&amp;gt; Program Memory (from the top menu bar)&lt;br /&gt;
*Hit Control-F (to &amp;quot;find&amp;quot;) and search for the digits &amp;quot;00A8C0&amp;quot;.&lt;br /&gt;
*These should be found at memory address &amp;quot;03018&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;A8C0&amp;quot; at 03018 represents the hex digits C0 (192) and A8 (168) which are the first two octets of the IP address. The six digits to enter are 00 then the SECOND octet of the IP address in hex then the FIRST octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;0B01&amp;quot; at 0301A represents the hex digits 0B (11) and 01 (1) which are the second two octets of the IP address. The six digits to enter are 00 then the FOURTH octet of the IP address in hex then the THIRD octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you have modified the address to your desired IP, follow the programming procedure (above).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Firmware==&lt;br /&gt;
To compile the firmware (if you want to make custom changes):&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; navigate to board-firmware and open the .mcp file for the flavor of firmware you want to compile. They are in the board-firmware folder of the GitHub source.&lt;br /&gt;
*'''NOTE''': the .mcp files with the &amp;quot;smt&amp;quot; suffix are for the RTCM (built with SMT parts). The non-smt files are for the ORIGINAL through-hole VOTER boards. The difference is that the VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
*Go to Project --&amp;gt; Build Configuration and select &amp;quot;Release&amp;quot;. This may not be necessary (I don't believe that option is used in the firmware), but it removes the compiler option of __DEBUG being passed, so theoretically it would build &amp;quot;normal&amp;quot; firmware.&lt;br /&gt;
*Go to Configure --&amp;gt; Select Device and choose the appropriate device for your board from the Device list. If you don't select the right one, the board will not boot. Select dsPIC33FJ128GP802 for the VOTER, and dsPIC33FJ128GP804 for the RTCM.&lt;br /&gt;
*Now, if you go to Project --&amp;gt; Build All it should compile everything and show you &amp;quot;Build Succeeded&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A .cry file should be in the board-firmware folder. You can load this with the ENC Loader.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is also a .hex file in there that you could load with a programmer... but that would wipe the bootloader... so don't do that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Chuck Squelch==&lt;br /&gt;
If you want to enable &amp;quot;Chuck Squelch&amp;quot;, open the HardwareProfile.h and un-comment #define CHUCK. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may also want to go down to Line 291 in Voter.c (right click on the window, go to Properties --&amp;gt; &amp;quot;C&amp;quot; File Types --&amp;gt; Line Numbers) and tack on CHUCK after 1.60 (the current version number) so that when you load this firmware, the version will be shown as 1.51CHUCK, and you'll know that Chuck Squelch is compiled in. We should probably make that more automagic in the future...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==DSP/BEW==&lt;br /&gt;
If you want to compile the DSPBEW version, open the DSPBEW project file instead.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DSP/BEW Firmware Version=&lt;br /&gt;
DSP BEW Firmware is mutually exclusive with the diagnostic menu. There is not enough space for both, if you load the DSP/BEW firmware, you will '''NOT''' have a diag menu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BEW stands for Baseband Examination Window.&lt;br /&gt;
&lt;br /&gt;
Typically, the discriminator of an FM communications receiver produces results containing audio spectrum from the &amp;quot;sub-audible&amp;quot; range (typically &amp;lt; 100 Hz) to well above frequencies able to be produced by modulating audio. These higher frequencies can be utilized to determine signal quality, since they can only contain noise (or no noise, if a sufficiently strong signal is present).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For receivers (such as the Motorola Quantar, etc) that do not provide sufficient spectral content at these &amp;quot;noise&amp;quot; frequencies (for various reasons), The &amp;quot;DSP/BEW (Digital Signal Processor / Baseband Examination Window)&amp;quot; feature of the RTCM firmware may be utilized. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These receivers are perfectly capable of providing valid &amp;quot;noise&amp;quot; signal with no modulation on the input of the receiver, but with strong modulation (high frequency audio and high deviation), it severely interferes with proper analysis of signal strength.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This feature provides a means by which a &amp;quot;Window&amp;quot; of baseband (normal audio range) signal is examined by a DSP and a determination of whether or not sufficient audio is present to cause interference of proper signal strength is made. During the VERY brief periods of time when it is determined that sufficient audio is present to cause interference, the signal strength value is &amp;quot;held&amp;quot; (the last valid value previous to the time of interference) until such time that the interfering audio is no longer present.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The DSP/BEW feature is selectable, and '''should not''' be used for a receiver that does not need it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A note on the Motorola SLR5700 per VE7FET. DSP/BEW definitely makes a difference on what AllMon reports for the signal strength of received signals. It is less reactive when DSP/BEW = 1 than with it set to 0. We'll have to see what the real world trials show. It might be better to leave it off.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Chuck Squelch=&lt;br /&gt;
&amp;quot;Chuck Squelch&amp;quot; are a couple firmware changes made by Chuck Henderson, WB9UUS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pre-compiled firmware versions including this option are available on [https://github.com/AllStarLink/voter/tree/master/board-firmware GitHub]. See above on how it is enabled/compiled, if you are rolling your own firmware modifications.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
One of the changes fixes an issue with weak signals producing RSSI readings all over the place. It is caused by a 16 bit value that was overflowing (it is the RSSI change in the firmware). It results in rock-solid RSSI values being reported, even on barely or non-readable signals. '''This change will likely be rolled in to a permanent fix in a future firmware release.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The other firmware change changes how the squelch responds (looks at the noise in the last two audio samples) and makes the &amp;quot;Micor squelch&amp;quot; action work better.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may also want to consider the following changes in /etc/asterisk/voter.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;Comment out:&lt;br /&gt;
;thresholds =&lt;br /&gt;
&lt;br /&gt;
;and set:&lt;br /&gt;
linger = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Squelch Issues==&lt;br /&gt;
*If anyone is off frequency a little bit, that will make the voice talk off worse. Double check that the repeater and the users are all on frequency.&lt;br /&gt;
*Don't use narrow bandwidth on the repeater receiver. &lt;br /&gt;
*Make sure that the discriminator audio is not rolled off even a little bit at the high end. There should not be resistors in series or capacitors to ground between the discriminator chip output pin and the voter board input, for best results.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM/VOTER LED's=&lt;br /&gt;
RX LED on the RTCM/VOTER will flash (same rate as ACT LED) if you have External CTCSS enabled, and the received signal has the wrong (or no) valid PL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM/VOTER Bandwidth=&lt;br /&gt;
Assuming ulaw... The RTCM will require approximately 80kbps of bandwidth for continual usage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Debug Options=&lt;br /&gt;
The VOTER/RTCM firmware supports some additional debugging information that can be turned on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
From the source code, the different Debug Options are listed as:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1 - Alt/Main Host change notifications&lt;br /&gt;
2 - Ignore HWlock (GGPS only)&lt;br /&gt;
4 - GPS/PPS Failure simulation (GGPS only)&lt;br /&gt;
8 - POCSAG H/W output disable (GGPS only)&lt;br /&gt;
16 - IP TOS Class for Ubiquiti&lt;br /&gt;
32 - GPS Debug&lt;br /&gt;
64 - Fix GPS 1 second off&lt;br /&gt;
128 - Fix GPS 1 month off (WTF,O??)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Not sure what they all do, but that is what they are. Here are the most common ones used:&lt;br /&gt;
*&amp;quot;Alt/Main Host change notifications&amp;quot; shows when the connection to the Asterisk server changes state.&lt;br /&gt;
*&amp;quot;IP TOS Class for Ubiquity&amp;quot; marks the IP headers from the RTCM/VOTER '''TO''' the network with ToS C0/DSCP 48 (UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS &lt;br /&gt;
latency). Other sources show this as a Network Control TOS.) If you enable this, you also will want to have &amp;quot;utos=y&amp;quot; in your voter.conf to mark the packets from the network '''TO''' the RTCM/VOTER. We will probably change this option to mark the packets by default in a future version.&lt;br /&gt;
*&amp;quot;GPS Debug&amp;quot; will print NMEA or TSIP debug strings from the connected GPS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The way this works is you add together the options you want to enable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Want to enable GPS Debug and IP ToS, set debug to 48.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just want to turn on GPS Debug, set debug to 32.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just want ToS turned on, set debug to 16.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Un-documented Menus/Features=&lt;br /&gt;
*Menu 96 - If firmware compiled with DUMPENCREGS enabled, Menu 96 looks like it dumps the registers from the ENC (Ethernet) chip?&lt;br /&gt;
&lt;br /&gt;
*Menu 111 - show the &amp;quot;hidden&amp;quot; option values (normally they should all be 0).&lt;br /&gt;
&lt;br /&gt;
*Menu 11780 - set the &amp;quot;Elkes&amp;quot; value? No idea what this does.&lt;br /&gt;
&lt;br /&gt;
*Menu 1103 - set the &amp;quot;Glaser&amp;quot; timer value? No idea what this does.&lt;br /&gt;
&lt;br /&gt;
*Menu 1170 - set &amp;quot;Sawyer Mode&amp;quot;. No idea what this does, it was a modification Jim made for Tim Sawyer, but Tim doesn't recall what it was for. :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Audio=&lt;br /&gt;
The RTCM/VOTER is totally flexible regarding emphasis. Although the way it is set is completely obscure. It tries to automatically do the right thing for you, which is great most of the time. But when it’s not, it's hard to know what is going on. &lt;br /&gt;
&lt;br /&gt;
If you are changing the COR Type settings, or nodeemp in voter.conf, make sure you save/reboot the RTCM/VOTER every time you make a change... changes are '''not''' effective until the RTCM/VOTER reboots!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Receiver De-emphasis==&lt;br /&gt;
On the RX side the COR Type setting in the RTCM/VOTER determines whether the de-emphasis filter is used for RX audio. 0=Normal means the RTCM/VOTER squelch circuit is in use and it is expecting discriminator audio on the RX pin (to be able to do the squelch action), and therefore it '''will''' provide de-emphasis (audio is routed THROUGH the de-emphasis RC filter circuit) to the receiver audio. COR Type 1=IGNORE COR uses the CTCSS input pin for COR or CTCSS ''logic'' and it then expects de-emphasized receive (line) audio on the RX pin, and therefore will '''not''' provide de-emphasis to the received audio (the RC filter is switched '''out''' and audio passes straight through). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Most of the time, you do NOT need to override the automatic filter selection. However, if you do, and you are sure you have a good reason to, you CAN switch the de-emphasis filter '''out''' of the circuit so that audio passes straight through to the encoder. You would do this by setting the nodeemp=1 option in voter.conf. When you set nodeemp=1, the ''VOTER Protocol'' tells the RTCM/VOTER to switch the filter '''out''', so audio is passed straight through.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Transmitter Pre-emhpasis==&lt;br /&gt;
On the TX side, the RTCM/VOTER expects the repeater to accept ''mic audio''. In other words, the '''repeater''' is providing the pre-emphasis, not the RTCM/VOTER (you are '''not''' directly modulating the TX). This can be overridden by setting CTCSS tone in voter.conf. If a CTCSS tone is defined, the RTCM '''will''' provide pre-emphasis to the audio, and expects that you will be connecting to your repeater's flat audio input (direct modulation). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you don’t want TX CTCSS tone but '''do''' need pre-emphasis, set an arbitrary (any) CTCSS tone in voter.conf, and set the level to 0. This will force the RTCM/VOTER to pre-emphasize the audio it generates on the TX pin, but it won't actually mix in a CTCSS tone. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Level Setting==&lt;br /&gt;
Setting the audio levels for the RTCM/VOTER is pretty straight forward. Just follow these steps:&lt;br /&gt;
*Ensure you have a connection to your host Asterisk server/chan_voter instance&lt;br /&gt;
*Send a 1kHz@3kHz on-channel, full-quieting signal in to the repeater's RX&lt;br /&gt;
*Set the RX up so it reads 3kHz deviation on the RTCM's built in console meter&lt;br /&gt;
*Now set the TX level '''pot''' to get 3kHz out of the transmitter (No PL)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now change the modulation from 1kHz tone to 800Hz followed by 1.8kHz and verify that the deviation level doesn't change as the tone frequency changes. '''Changing levels indicates a pre/de-emphasis issue.''' You will want to read the above sections on how audio is handled, and figure out where your issue is.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If using PL you have to account for that deviation, unless you filter it out with your IFR (test set). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
That's it!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Optionally, if you are using the built-in &amp;quot;offline repeat&amp;quot; functions, fail the connection to the host Asterisk server, and make sure your repeat audio performs the same as above.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Crappy Transmit Audio==&lt;br /&gt;
&lt;br /&gt;
Does your repeated audio sounded really bassy, muffled, and not very understandable? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There was a situation where, compared to a typical simplex radio-to-radio transmission, the audio through the repeater (RTCM and Asterisk) was unacceptable. What was discovered was that the RTCM has an internal pre-emphasis function that was disabled. The user had intentionally disabled &amp;quot;txctcss&amp;quot; and &amp;quot;txctcsslevel&amp;quot; in voter.conf because he didn't &lt;br /&gt;
want the RTCM transmitting CTCSS (the Quantar was doing that already). He ultimately found a post on the mail list that said enabling txctcss = some valid tone (114.8 in our case) and setting txctcsslevel = 0 would turn on the pre-emphasis function in the RTCM without transmitting CTCSS tones. &lt;br /&gt;
&lt;br /&gt;
He did, and it worked like a charm! Audio now had more treble and was less bassy/muffled. So, future RTCM users, be sure not to comment out txctcss and txctcsslevel in voter.conf!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just enable and set the level to 0. You'll thank me later. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=GPS=&lt;br /&gt;
The RTCM/VOTER will work with most GPS available. It requires either NMEA or Trimble TSIP binary data. It only receives data '''from''' the GPS (GPS TX), it does not send anything '''to''' the GPS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The firmware is specifically written to talk to Trimble Thunderbolt receivers using Trimble's TSIP binary data interface, however, other Trimbles GPS receivers that talk TSIP are generally compatible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==NMEA Sentences==&lt;br /&gt;
If you are using an NMEA GPS (as opposed to a Trimble using the TSIP binary interface), the RTCM/VOTER is looking for the following NMEA sentences:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$GPGGA&lt;br /&gt;
$GPGSV&lt;br /&gt;
$GPRMC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Lock==&lt;br /&gt;
The GPS led will go solid regardless of the connection LED. That '''has''' to happen or it won't connect to the Asterisk server. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is not unusual for it to take up to 20 mins to get a GPS lock LED (ie. using a Trimble Thunderbolt) after any reboot. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS De-sense==&lt;br /&gt;
If you are having odd loss of lock issues, consider you may have interference to your GPS antenna from strong RF nearby. A note from Jesse Lloyd:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I also had crazy problems with poor signal on my GPS when I set it up sitting in a window, and once installed at site I had the GPS antenna maybe 6 ft from the VHF antenna, and after some troubleshooting found it was getting swamped with RF and loosing lock. &lt;br /&gt;
&lt;br /&gt;
I found the debug setting of 32 useful in the RTCM, you can see a hex output of the GPS status.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Issues==&lt;br /&gt;
===Trimble Thunderbolt===&lt;br /&gt;
You may find your Trimble Thunderbolt is showing the incorrect date at the moment. It could be showing the year as 1997. This is due to the date in the Thunderbolt being reported incorrectly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''This can cause some of your voting receivers to not connect, if they are used with other GPS in your system.''' If you have '''ALL''' Thunderbolts, or '''NO''' Thunderbolts, you are probably fine. If you have '''ALL''' Thunderbolts, the date/time is probably wrong, but they will ALL be wrong, so they will connect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GPS Time is a continuous counting time scale beginning at the January 5, 1980 to January 6, 1980 midnight. It is split into two parts: a time of week measured in seconds from midnight Sat/Sun and a week number. The time of week is transmitted in an unambiguous manner by the satellites, but only the bottom 10 bits of the week number are transmitted. This means that a receiver will see a week number count that goes up steadily until it reaches 1023 after which it will “roll over” back to zero, before steadily going up again. Such a week rollover will occur approx. every 20 years. The last week rollover occurred in 1999 and the next one will be in 2019.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Thunderbolt manual states:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The ThunderBolt adjusts for this week rollover by adding 1024 to any week number reported by GPS which is less than week number 936 which began on December 14, 1997. With this technique, the ThunderBolt will provide an accurate translation of GPS week number and TOW to time and date until July 30, 2017.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As such, the Trimble Thunderbolt has a firmware issue with the GPS Week rollover that manifested itself on July 30, 2017, causing the date to become incorrect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We have added a brute-force fix starting in RTCM/VOTER firmware &amp;gt;=1.51. It fixes the Thunderbolts, we have not done extensive testing to see how it affects other TSIP receivers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Garmin===&lt;br /&gt;
====Garmin 18x LVC Wiring Issues====&lt;br /&gt;
If you have issues with your GPS 18x LVC not talking to the RTCM/VOTER, it may not be hooked up to the RTCM correctly. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Garmin pin labeling is backwards to what you may think. See below. You probably need to swap pins 6 and 14.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RTCM   	                 GPS 18x LVC      &lt;br /&gt;
6 GRX 	&amp;lt;-- Rx Data 	 6 Green  &lt;br /&gt;
7 GPPS 	&amp;lt;-- Pulse Output 1 Yellow  &lt;br /&gt;
8 GND   Ground 		 3 Black  &lt;br /&gt;
8 GND   Ground 		 5 Black  &lt;br /&gt;
13 +5V 	--&amp;gt;Vin 		 2 Red  &lt;br /&gt;
14 GTX 	--&amp;gt; TX Data 	 4 White&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log into the RTCM and do 98 and you should see something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Current Time: Sun  Apr 20, 2014  04:37:02.820&lt;br /&gt;
Last Rx Pkt System time: 04/20/2014 03:55:35.580, diff: 2487260 msec&lt;br /&gt;
Last Rx Pkt Timestamp time: 04/20/2014 03:55:32.064, diff: 3515 msec&lt;br /&gt;
Last Rx Pkt index: 160, inbounds: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Garmin and the RTCM====&lt;br /&gt;
Beware when buying newer Garmin GPS's to use with the Micro-Node RTCM.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The RTCM expects a 5V PPS signal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Newer Garmin's (GPS 18X, 18X LVC, etc.) MAY NOT output 5V, and can cause issues. '''Check the Garmin datasheet'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER is designed to accept both 3.3V or 5V signals, and ''should'' work fine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==No GPS/Mixed Mode==&lt;br /&gt;
You do not need a timing source to use an RTCM if you don’t want to vote. That’s called Mix Mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Having the PPS Polarity set to 2 tells the RTCM you do not have a GPS. That forces the RTCM to become a mix (non-voting) client. Turn it on, save it, and restart. A simple voter.conf would look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[general]&lt;br /&gt;
port = 667&lt;br /&gt;
password = BLAH&lt;br /&gt;
&lt;br /&gt;
[1000]&lt;br /&gt;
Site1 = pswrd1,master,transmit&lt;br /&gt;
Site2 = pswrd2,transmit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mixed Client Error==&lt;br /&gt;
&amp;quot;I am getting this error in Asterisk&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WARNING[2368]: chan_voter.c:4511 voter_reader: Voter client master timing source mobile1 attempting to authenticate as mix client!!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A mixed client error means the voter.conf file is expecting an RTCM to try and connect with a GPS IP packet (ie. has '''master''' in it in voter.conf), but the RTCM isn't &lt;br /&gt;
sending a GPS IP packet. So its a mismatch between voter.conf and Option 10 in the RTCM. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to use a mix client (non-voted), make sure that receiver's configuration line in voter.conf '''does not''' have the '''master''' option set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Debug==&lt;br /&gt;
To turn on GPS Debugging, set the Debug Option Level in the RTCM/VOTER to 32.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [[#Debug Options]] levels for more information on how this works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Trimble Debug Status Decoding==&lt;br /&gt;
The VOTER/RTCM when in TSIP mode (Trimble), assumes it is a Trimble Thunderbolt and is looking for two packets:&lt;br /&gt;
*0x8F-AB - Primary Timing Packet&lt;br /&gt;
*0x8F-AC - Supplemental Timing Packet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Grab a copy of the Thunderbolt User Guide: http://leapsecond.com/pages/tbolt/Thunderbolt-2012-02.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pages 78-83 are the important ones.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Packet 0x8F-AB is what grabs the timing information, and packet 0x8F-AC is what it looks at for everything else (including debug).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The debug string that the VOTER/RTCM reports:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	printf(&amp;quot;GPS-DEBUG: TSIP: ok %d, 9 - 14: %02x %02x %02x %02x %02x %02x\n&amp;quot;,&lt;br /&gt;
					happy,gps_buf[9],gps_buf[10],gps_buf[11],gps_buf[12],gps_buf[13],gps_buf[14]);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, the 1 after ok is the &amp;quot;happy gps&amp;quot; flag. The other 5 bytes are supposed to be bytes 9-14 from the packet... sort of. They are bytes 9-14 of the buffer, but they are actually bytes 8-13 of the binary message.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Looking at the message structure, bytes 8-13 are:&lt;br /&gt;
*8-9 Critical Alarms&lt;br /&gt;
*10-11 Minor Alarms&lt;br /&gt;
*12 GPS Decoding Status&lt;br /&gt;
*13 Disciplining Activity&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Therefore, the messages you are seeing break down as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GPS-DEBUG: TSIP: ok 1, 9 - 14: 00 00 00 00 00 00 - everything is good in the 'hood, Doing Fixes, Phase Locking&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 18 08 06 - not happy, Not Tracking Satellites, Not Disciplining Oscillator (0x18 --&amp;gt; 0b000000011000), No Usable Sats, Inactive&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 08 08 05 - not happy, Not Tracking Satellites, No Useable Sats, Compensating OXCO (holdover)&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 00 00 05 - not happy, Compensating OXCO (holdover)&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 1, 9 - 14: 00 00 00 00 00 08 - happy, Recovery Mode&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 00 00 04 - not happy, Initializing Loop Filter&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The GPS is flagged as NOT HAPPY in TSIP mode if ANY of the following are TRUE:&lt;br /&gt;
*If GPS Decoding Status is anything other than &amp;quot;Doing Fixes&amp;quot;.&lt;br /&gt;
*If Disciplining Activity is not Phase Locking or Recovery Mode.&lt;br /&gt;
*Any Critical Alarms.&lt;br /&gt;
*Any Minor Alarms.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ubiquity ToS=&lt;br /&gt;
See https://help.ubnt.com/hc/en-us/articles/205231750-airMAX-How-is-QoS-and-prioritization-handled-by-airMAX-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, if we set ToS/DSCP in the header to C0, then Ubiquity (and other gear watching ToS) ''should'' prioritize the packets. This sets the DSCP to 110 000 aka 48. UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS latency). Other sources show this as a Network Control TOS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is an option in voter.conf to turn this on (utos=y). However, this only controls packets being sent from Asterisk '''TO''' the RTCM. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to tag packets from the RTCM '''TO''' Asterisk, you need to set the RTCM debug option level to 16 (see [[#Debug Options]] for how this works).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At some point we should probably change the default behaviour of the RTCM firmware to mark the packets and use the debug setting to '''disable''' ToS. That change (if you wanted to compile your own firmware) would be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Change line 90 in IP.c&lt;br /&gt;
&lt;br /&gt;
From:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? 0xc0 : (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY))&lt;br /&gt;
&lt;br /&gt;
To:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY) : 0xc0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This changes the conditional expression from if the debug level is 16 to mark the packets with DSCP 48 to if the debug level is 16, mark the packets routine (DSCP 0).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM Simulcasting=&lt;br /&gt;
The RTCM/VOTER boards do support simulcasting, however, there are a bunch of quirks that one needs to be aware of.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Radio Hardware==&lt;br /&gt;
For best results, you should use all identical RF equipment between your voting RX sites and simulcast TX sites. If you don't, you can end up with strange audio artifacts when different receivers are used, and other strange audio issues when different transmitters are used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==9.6MHz Oscillator==&lt;br /&gt;
If you want reliable simulcast with an acceptable level of overlap warble, you MUST inject a GPS-disciplined or OXCO 9.6MHz signal to the clock of the RTCM's, in lieu of their stock internal crystal. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Otherwise, the inherent internal clock jitter of the RTCM's will cause CTCSS warble, etc. in areas where your transmitters overlap. The 1 PPS feed that you normally feed the RTCM's is acceptable for voting, but naturally, a typical crystal-driven clock will slightly drift in between the pulses every second due to inherent jitter, etc., and that ain't to good for situations like simulcast which demand sample-accurate performance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are some comments from Joe, KC2IRV, on the subject. He has also created his own wiki, specific to simulcast issues, you can find it at: http://rtcmsimulcast.wikifoundry.com/ &lt;br /&gt;
&lt;br /&gt;
:I felt I needed to let those on this mailing list know my findings with simulcasting with the RTCM units since I have received a great deal of help and information from people on this list.&lt;br /&gt;
&lt;br /&gt;
:For the past week I have had a two (2) site simulcast system up and running on UHF using the RTCM units. I have done a great deal of testing and proving on the bench and it is so far working beautifully. &lt;br /&gt;
&lt;br /&gt;
:The one issue that was made apparent to me early on was that in order for the RTCM's to be suitable for simulcast, the processor inside it needed to be clocked to a more accurate source. This source is supposed to be the Programmable Clock Generator Module in order to produce a GPS locked 9.6 MHz reference for the processor. Unfortunately this unit is not currently available.&lt;br /&gt;
&lt;br /&gt;
:Knowing this, I started to go down the road of possibly designing my own, but stumbled upon a cheap, plentiful supply of Symmetricom 9.6 MHz sinewave OCXO's. I took a chance and ordered a few to experiment with to see if the RTCM would be able to use this in place of the supplied crystal for a clock. I found they did, with that I decided to modify the RTCM with an SMA connector just above the audio adjustment pots and use this OCXO. I trimmed the frequency on the units to match each other and used them to produce the processor clock.&lt;br /&gt;
&lt;br /&gt;
:After a week of testing, I have found the results in the overlap areas to be exactly as I would expect them on a public safety/commercial simulcast system. While in an overlap region where both transmitters are within 3dB of one another, to the ear you hear no audio phase wandering. Of course , this has only been a week of testing so I wouldn't call it case closed yet.&lt;br /&gt;
&lt;br /&gt;
:I will say that if this system remains this way after testing for 6 months to a year than using a 9.6 MHz OXCO is a viable alternative to achieve the needed precision and accuracy needed for the processor clock to make it suitable for simulcast.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Comments from Jim Dixon on the issue:&lt;br /&gt;
&lt;br /&gt;
:You have to use '''something''' that will take the precise 10MHz (or whatever it is) from the GPSDO and PLL (phase-locked) convert it to 9.6MHz (square wave at 3.3V for the CPU clock).&lt;br /&gt;
&lt;br /&gt;
:We had to use 9.6MHz mainly because of the DAC in the dsPIC instead of 10MHz. The options for various divide/clock radios in the part are RATHER limited. As I recall, there wasn't even a way of getting the necessary 16kb/s sample rate on the ADC from 10MHZ, either.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Micro-Node RTCM Clock Issue=&lt;br /&gt;
James, KI0KN, had some strange-ness with some of his RTCM's when used for voting. As soon as he changed menu item 10 on the RTCM to either a (1) or a (0) instead of (2), he '''instantly''' got this on the RTCM console:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
04/05/2016 18:44:13.660  Lost GPS Time synchronization&lt;br /&gt;
04/05/2016 18:44:13.660  Host Connection Lost (Pri) (10.16.1.240)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And it sits there forever and never re-establishes connection to the host. The issue was finally traced to a bad batch of 9.6MHz crystals that affected a small run of the RTCM's. The issue was eventually resolved by Micro-Node, but we'll document it here just for record keeping.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
James comments to the list:&lt;br /&gt;
&lt;br /&gt;
:Well, after many of you offered your time and thoughts on my voter problem, Jim, WB6NIL, graciously donated a couple of hours of his time to remotely help me and he uncovered the problem.&lt;br /&gt;
&lt;br /&gt;
:All 5 of my RTCMs were purchased within the last 6 months, and I suspect all 5 have the same problem (will verify that today). The problem is that the microprocessor crystal is running too fast! There is 9.6Mhz crystal that drives the MPU, on the particular unit that Jim helped me diagnose, it's running 2.5 khz too fast.  &lt;br /&gt;
&lt;br /&gt;
:There is a sanity check in the firmware that makes sure the correct number of samples were taken in the last second (it's supposed to be 8000) and fails if the sample is incorrectly sized (mine is taking 8003 samples).  Jim helped adjust the code to be more tolerant of the sampling error and my whole system instantly worked.&lt;br /&gt;
&lt;br /&gt;
:I have since tested it with ALL my GPSs (they all work great!). So I now have everything working, including the voting.&lt;br /&gt;
&lt;br /&gt;
:I haven't contact Micro-Node about it yet. Jim told me that voting should work fine but this clock error would probably not be acceptable for Simulcast (something we have no plans on doing as of now). Since mine are deployed at mountain top sites, I'll probably pursue a crystal that is running at the correct frequency and use &amp;quot;standard&amp;quot; firmware so that if the decision is ever made to play with simulcast, I won't be right back in this same boat.&lt;br /&gt;
&lt;br /&gt;
:Thanks to all that helped out, and a HUGE thanks to Jim for taking the time to troubleshoot this.&lt;br /&gt;
&lt;br /&gt;
:BTW- This clock error will NOT effect the RTCM in mix client mode, it only affects it in voting or simulcast mode!&lt;br /&gt;
&lt;br /&gt;
:In voter.c, the stock line is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if ((samplecnt &amp;gt;= 7999) &amp;amp;&amp;amp; (samplecnt &amp;lt;= 8001))&lt;br /&gt;
&lt;br /&gt;
it needs to be changed to something like:&lt;br /&gt;
&lt;br /&gt;
if ((samplecnt &amp;gt;= 7999) &amp;amp;&amp;amp; (samplecnt &amp;lt;= 8003 ))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:That was just enough to make my first RTCM work. I've had a chance now to check a few more of my RTCMs on the bench this morning and the crystal frequencies are kind of all over.  The next one I had on the bench was 5.2Khz fast. The above code was still not enough to fix it (as would be expected) so it looks like the quality control on whatever manufacturer that crystal is, isn't very good (or a low tolerance crystal is being used). I am going to pursue crystal replacement to get a highly accurate, stable, on-frequency crystal in there as my first choice. Changing the firmware 5 different times doesn't seem like the right answer.&lt;br /&gt;
&lt;br /&gt;
:Jim put that sanity check in there for a reason. Working around it '''may''' allow the device to work, but to me, it seems getting the hardware operating the way it was supposed to originally is the better answer. I will follow up with Micro-node and let you all know how it goes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After following up with Micro-Node:&lt;br /&gt;
:They were all off, some were off a LOT. I talked to Mark @ Micronode. He told me there were 25 units that made it out the door with a crystal from an unapproved source and that was quite likely the reason for the problem. He gladly sent me 5 new crystals to replace (he offered to replace them himself if I sent the units in, but I am comfortable doing it myself to save the time and postage). &lt;br /&gt;
&lt;br /&gt;
:I haven't received them in the mail yet to show that the problem is fixed, but I will post here when that happens. He was great to work with and had no issue getting things set straight. If you are having the same issue and your RTCMs were bought about the same time, I'd suggest you contact him and have him help you resolve the issue!&lt;/div&gt;</summary>
		<author><name>Ve7fet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=38</id>
		<title>RTCM Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=38"/>
		<updated>2017-08-09T18:30:05Z</updated>

		<summary type="html">&lt;p&gt;Ve7fet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Micro-Node RTCM and VOTER interfaces are typically used with AllStar in voting/simulcast applications. They MAY be used for ANY repeater interface application, through the chan/voter channel driver. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER is the original through-hole board designed by Jim Dixon for this application. It is open-source, and the relevant Gerber files and BoM to build it are available. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The [http://www.micro-node.com/thin-m1.shtml Micro-Node Radio Thin Client Module (RTCM)] is the commercial version of the VOTER. It uses surface mount parts (SMT), but is functionally equivalent to the original VOTER. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In general, the two terms (RTCM/VOTER) are used interchangeably, as they operate the same, and use the same firmware (mostly, see below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This page will highlight some of the operational concerns, quirks, bugs, and other items of interest that relate to these interfaces. Much of the information has been gleaned off the AllStar mail list, comes from personal experience, or comes from notes in the firmware source code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Firmware=&lt;br /&gt;
The firmware in the RTCM and VOTER is the same, except it is compiled for the specific dsPIC that is installed in each. As such, the firmware is specific to the VOTER or the RTCM, and is NOT interchangeable (it won't boot in the wrong device). Firmware for the RTCM is denoted by &amp;quot;smt&amp;quot; in the filename.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are '''two parts''' to the firmware, a bootloader, and then the actual firmware file. The bootloader starts when power is applied, and allows you to talk to the dsPIC and load new firmware files over ethernet. If the bootloader is not intercepted by the loading tool, it will continue to boot the current firmware file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All new boards will need to have the bootloader installed first, followed by a firmware file. You '''can''' load a firmware file directly (.hex) in to the dsPIC, but then you will not have any of the bootloader remote loading features.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The current bootloader (.cof file) is available here: https://github.com/AllStarLink/voter/tree/master/voter-bootloader (the -smt file is for the RTCM). It needs to be loaded with a PICKit programmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Current firmware (.cry file) is available here: https://github.com/AllStarLink/voter/tree/master/board-firmware . They are loaded with the EBLEX C30 Programmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are multiple &amp;quot;flavors&amp;quot; of firmware available. See below for further explanation of what all the options mean.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The DSPBEW versions have Jim's DSP/BEW feature enabled. Note that due to the size of this feature, the diagnostics menu is NOT available in this version.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CHUCK versions have Chuck Henderson's RSSI and Squelch modifications enabled. This is probably the version that most user's will want to use in production.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Compiling Environment==&lt;br /&gt;
If you look in the [https://github.com/AllStarLink/voter/blob/master/votersystem.pdf votersystem.pdf], you will find a procedure to modify and load the bootloader in to the dsPIC of a VOTER board. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Unfortunately, there is an important step '''missing''' in that procedure, which is covered below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In addition, the old links for the MPLAB software are dead, so let's update this info and get you going.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Currently (Feb 2017), you can get the required software from:&lt;br /&gt;
:http://www.microchip.com/development-tools/downloads-archive&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download MPLAB IDE 32-bit Windows v8.66:&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_IDE_v8_66.zip&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/MPLAB_IDE_v8_66.zip&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download MPLAB C Compiler for PIC24 and dsPIC DSCs v3.31 '''NOT v.3.25''':&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Optionally, install Windows Virtual PC and XP Mode. This is getting to be pretty old software, so running it under XP Mode may be a good idea, so we can keep it isolated (install it in a virtual machine). It does run fine in Windows 7.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To setup the compile/build environment, follow these steps:&lt;br /&gt;
*Run the MPLAB IDE installer. You don't need to install the HI-TECH C Compiler at the end (click no)&lt;br /&gt;
*Run the MPLAB C Compiler installer&lt;br /&gt;
*Select Legacy Directory Name&lt;br /&gt;
*'''Select Lite Compiler'''&lt;br /&gt;
*Go to: https://github.com/AllStarLink&lt;br /&gt;
*Follow the links to: voter --&amp;gt; Clone or Download --&amp;gt; Download Zip. That will get you voter-master.zip which is a download of the whole VOTER tree from GitHub.&lt;br /&gt;
*Extract it somewhere (ie. in the XP Mode Virtual PC)&lt;br /&gt;
*Launch the MPLAB IDE&lt;br /&gt;
*Go to Configure --&amp;gt; Settings --&amp;gt; Projects and de-select one-to-one project mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bootloader==&lt;br /&gt;
If you need to load the bootloader in to a fresh board, you will need to follow these steps:&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; voter-bootloader.mcp --&amp;gt; Open (it is in the voter-bootloader folder of the GitHub source)&lt;br /&gt;
*Go to File --&amp;gt; Import --&amp;gt; voter-bootloader --&amp;gt; ENC_C30.cof --&amp;gt; Open '''This step is missing from the original procedure.'''&lt;br /&gt;
*Remove JP7 on the VOTER Board. This is necessary to allow programming by the PICKit2/PICKit3 device.&lt;br /&gt;
*Attach the PICKIT2/PICKit3 device to J1 on the VOTER board. Note that Pin 1 is closest to the power supply modules (as indicated on the board).&lt;br /&gt;
*If you have not already selected a programming device, go to Programmer --&amp;gt; Select Device and choose PICKit3 (or PICKit2, depending on what you are using).&lt;br /&gt;
*Go to Programmer --&amp;gt; Program. This will program the bootloader firmware into the PIC device on the board.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to change the default IP address from 192.168.1.11 in the bootloader:&lt;br /&gt;
*Select View --&amp;gt; Program Memory (from the top menu bar)&lt;br /&gt;
*Hit Control-F (to &amp;quot;find&amp;quot;) and search for the digits &amp;quot;00A8C0&amp;quot;.&lt;br /&gt;
*These should be found at memory address &amp;quot;03018&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;A8C0&amp;quot; at 03018 represents the hex digits C0 (192) and A8 (168) which are the first two octets of the IP address. The six digits to enter are 00 then the SECOND octet of the IP address in hex then the FIRST octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;0B01&amp;quot; at 0301A represents the hex digits 0B (11) and 01 (1) which are the second two octets of the IP address. The six digits to enter are 00 then the FOURTH octet of the IP address in hex then the THIRD octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you have modified the address to your desired IP, follow the programming procedure (above).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Firmware==&lt;br /&gt;
To compile the firmware (if you want to make custom changes):&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; navigate to board-firmware and open the .mcp file for the flavor of firmware you want to compile. They are in the board-firmware folder of the GitHub source.&lt;br /&gt;
*'''NOTE''': the .mcp files with the &amp;quot;smt&amp;quot; suffix are for the RTCM (built with SMT parts). The non-smt files are for the ORIGINAL through-hole VOTER boards. The difference is that the VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
*Go to Project --&amp;gt; Build Configuration and select &amp;quot;Release&amp;quot;. This may not be necessary (I don't believe that option is used in the firmware), but it removes the compiler option of __DEBUG being passed, so theoretically it would build &amp;quot;normal&amp;quot; firmware.&lt;br /&gt;
*Go to Configure --&amp;gt; Select Device and choose the appropriate device for your board from the Device list. If you don't select the right one, the board will not boot. Select dsPIC33FJ128GP802 for the VOTER, and dsPIC33FJ128GP804 for the RTCM.&lt;br /&gt;
*Now, if you go to Project --&amp;gt; Build All it should compile everything and show you &amp;quot;Build Succeeded&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A .cry file should be in the board-firmware folder. You can load this with the ENC Loader.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is also a .hex file in there that you could load with a programmer... but that would wipe the bootloader... so don't do that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Chuck Squelch==&lt;br /&gt;
If you want to enable &amp;quot;Chuck Squelch&amp;quot;, open the HardwareProfile.h and un-comment #define CHUCK. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may also want to go down to Line 291 in Voter.c (right click on the window, go to Properties --&amp;gt; &amp;quot;C&amp;quot; File Types --&amp;gt; Line Numbers) and tack on CHUCK after 1.60 (the current version number) so that when you load this firmware, the version will be shown as 1.51CHUCK, and you'll know that Chuck Squelch is compiled in. We should probably make that more automagic in the future...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==DSP/BEW==&lt;br /&gt;
If you want to compile the DSPBEW version, open the DSPBEW project file instead.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DSP/BEW Firmware Version=&lt;br /&gt;
DSP BEW Firmware is mutually exclusive with the diagnostic menu. There is not enough space for both, if you load the DSP/BEW firmware, you will '''NOT''' have a diag menu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BEW stands for Baseband Examination Window.&lt;br /&gt;
&lt;br /&gt;
Typically, the discriminator of an FM communications receiver produces results containing audio spectrum from the &amp;quot;sub-audible&amp;quot; range (typically &amp;lt; 100 Hz) to well above frequencies able to be produced by modulating audio. These higher frequencies can be utilized to determine signal quality, since they can only contain noise (or no noise, if a sufficiently strong signal is present).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For receivers (such as the Motorola Quantar, etc) that do not provide sufficient spectral content at these &amp;quot;noise&amp;quot; frequencies (for various reasons), The &amp;quot;DSP/BEW (Digital Signal Processor / Baseband Examination Window)&amp;quot; feature of the RTCM firmware may be utilized. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These receivers are perfectly capable of providing valid &amp;quot;noise&amp;quot; signal with no modulation on the input of the receiver, but with strong modulation (high frequency audio and high deviation), it severely interferes with proper analysis of signal strength.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This feature provides a means by which a &amp;quot;Window&amp;quot; of baseband (normal audio range) signal is examined by a DSP and a determination of whether or not sufficient audio is present to cause interference of proper signal strength is made. During the VERY brief periods of time when it is determined that sufficient audio is present to cause interference, the signal strength value is &amp;quot;held&amp;quot; (the last valid value previous to the time of interference) until such time that the interfering audio is no longer present.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The DSP/BEW feature is selectable, and '''should not''' be used for a receiver that does not need it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A note on the Motorola SLR5700 per VE7FET. DSP/BEW definitely makes a difference on what AllMon reports for the signal strength of received signals. It is less reactive when DSP/BEW = 1 than with it set to 0. We'll have to see what the real world trials show. It might be better to leave it off.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Chuck Squelch=&lt;br /&gt;
&amp;quot;Chuck Squelch&amp;quot; are a couple firmware changes made by Chuck Henderson, WB9UUS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pre-compiled firmware versions including this option are available on [https://github.com/AllStarLink/voter/tree/master/board-firmware GitHub]. See above on how it is enabled/compiled, if you are rolling your own firmware modifications.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
One of the changes fixes an issue with weak signals producing RSSI readings all over the place. It is caused by a 16 bit value that was overflowing (it is the RSSI change in the firmware). It results in rock-solid RSSI values being reported, even on barely or non-readable signals. '''This change will likely be rolled in to a permanent fix in a future firmware release.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The other firmware change changes how the squelch responds (looks at the noise in the last two audio samples) and makes the &amp;quot;Micor squelch&amp;quot; action work better.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may also want to consider the following changes in /etc/asterisk/voter.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;Comment out:&lt;br /&gt;
;thresholds =&lt;br /&gt;
&lt;br /&gt;
;and set:&lt;br /&gt;
linger = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Squelch Issues==&lt;br /&gt;
*If anyone is off frequency a little bit, that will make the voice talk off worse. Double check that the repeater and the users are all on frequency.&lt;br /&gt;
*Don't use narrow bandwidth on the repeater receiver. &lt;br /&gt;
*Make sure that the discriminator audio is not rolled off even a little bit at the high end. There should not be resistors in series or capacitors to ground between the discriminator chip output pin and the voter board input, for best results.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM/VOTER LED's=&lt;br /&gt;
RX LED on the RTCM/VOTER will flash (same rate as ACT LED) if you have External CTCSS enabled, and the received signal has the wrong (or no) valid PL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM/VOTER Bandwidth=&lt;br /&gt;
Assuming ulaw... The RTCM will require approximately 80kbps of bandwidth for continual usage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Debug Options=&lt;br /&gt;
The VOTER/RTCM firmware supports some additional debugging information that can be turned on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
From the source code, the different Debug Options are listed as:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1 - Alt/Main Host change notifications&lt;br /&gt;
2 - Ignore HWlock (GGPS only)&lt;br /&gt;
4 - GPS/PPS Failure simulation (GGPS only)&lt;br /&gt;
8 - POCSAG H/W output disable (GGPS only)&lt;br /&gt;
16 - IP TOS Class for Ubiquiti&lt;br /&gt;
32 - GPS Debug&lt;br /&gt;
64 - Fix GPS 1 second off&lt;br /&gt;
128 - Fix GPS 1 month off (WTF,O??)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Not sure what they all do, but that is what they are. Here are the most common ones used:&lt;br /&gt;
*&amp;quot;Alt/Main Host change notifications&amp;quot; shows when the connection to the Asterisk server changes state.&lt;br /&gt;
*&amp;quot;IP TOS Class for Ubiquity&amp;quot; marks the IP headers from the RTCM/VOTER '''TO''' the network with ToS C0/DSCP 48 (UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS &lt;br /&gt;
latency). Other sources show this as a Network Control TOS.) If you enable this, you also will want to have &amp;quot;utos=y&amp;quot; in your voter.conf to mark the packets from the network '''TO''' the RTCM/VOTER. We will probably change this option to mark the packets by default in a future version.&lt;br /&gt;
*&amp;quot;GPS Debug&amp;quot; will print NMEA or TSIP debug strings from the connected GPS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The way this works is you add together the options you want to enable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Want to enable GPS Debug and IP ToS, set debug to 48.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just want to turn on GPS Debug, set debug to 32.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just want ToS turned on, set debug to 16.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Un-documented Menus/Features=&lt;br /&gt;
*Menu 96 - If firmware compiled with DUMPENCREGS enabled, Menu 96 looks like it dumps the registers from the ENC (Ethernet) chip?&lt;br /&gt;
&lt;br /&gt;
*Menu 111 - show the &amp;quot;hidden&amp;quot; option values (normally they should all be 0).&lt;br /&gt;
&lt;br /&gt;
*Menu 11780 - set the &amp;quot;Elkes&amp;quot; value? No idea what this does.&lt;br /&gt;
&lt;br /&gt;
*Menu 1103 - set the &amp;quot;Glaser&amp;quot; timer value? No idea what this does.&lt;br /&gt;
&lt;br /&gt;
*Menu 1170 - set &amp;quot;Sawyer Mode&amp;quot;. No idea what this does, it was a modification Jim made for Tim Sawyer, but Tim doesn't recall what it was for. :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=TX Level Setting=&lt;br /&gt;
*Send 1kHz@3kHz on-channel in to the RX&lt;br /&gt;
*Set the RX up so it reads 3kHz deviation on the RTCM's built in console meter&lt;br /&gt;
*Now set the TX level '''pot''' to get 3kHz out of the transmitter (No PL)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now change the modulation from 1kHz tone to 800Hz followed by 1.8kHz and verify that the deviation level doesn't change as the tone frequency changes. '''Changing levels indicates a pre/de-emphasis issue.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If using PL you have to account for that deviation, unless you filter it out with your IFR (test set). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=GPS=&lt;br /&gt;
The RTCM/VOTER will work with most GPS available. It requires either NMEA or Trimble TSIP binary data. It only receives data '''from''' the GPS (GPS TX), it does not send anything '''to''' the GPS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The firmware is specifically written to talk to Trimble Thunderbolt receivers using Trimble's TSIP binary data interface, however, other Trimbles GPS receivers that talk TSIP are generally compatible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==NMEA Sentences==&lt;br /&gt;
If you are using an NMEA GPS (as opposed to a Trimble using the TSIP binary interface), the RTCM/VOTER is looking for the following NMEA sentences:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$GPGGA&lt;br /&gt;
$GPGSV&lt;br /&gt;
$GPRMC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Lock==&lt;br /&gt;
The GPS led will go solid regardless of the connection LED. That '''has''' to happen or it won't connect to the Asterisk server. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is not unusual for it to take up to 20 mins to get a GPS lock LED (ie. using a Trimble Thunderbolt) after any reboot. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS De-sense==&lt;br /&gt;
If you are having odd loss of lock issues, consider you may have interference to your GPS antenna from strong RF nearby. A note from Jesse Lloyd:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I also had crazy problems with poor signal on my GPS when I set it up sitting in a window, and once installed at site I had the GPS antenna maybe 6 ft from the VHF antenna, and after some troubleshooting found it was getting swamped with RF and loosing lock. &lt;br /&gt;
&lt;br /&gt;
I found the debug setting of 32 useful in the RTCM, you can see a hex output of the GPS status.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Issues==&lt;br /&gt;
===Trimble Thunderbolt===&lt;br /&gt;
You may find your Trimble Thunderbolt is showing the incorrect date at the moment. It could be showing the year as 1997. This is due to the date in the Thunderbolt being reported incorrectly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''This can cause some of your voting receivers to not connect, if they are used with other GPS in your system.''' If you have '''ALL''' Thunderbolts, or '''NO''' Thunderbolts, you are probably fine. If you have '''ALL''' Thunderbolts, the date/time is probably wrong, but they will ALL be wrong, so they will connect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GPS Time is a continuous counting time scale beginning at the January 5, 1980 to January 6, 1980 midnight. It is split into two parts: a time of week measured in seconds from midnight Sat/Sun and a week number. The time of week is transmitted in an unambiguous manner by the satellites, but only the bottom 10 bits of the week number are transmitted. This means that a receiver will see a week number count that goes up steadily until it reaches 1023 after which it will “roll over” back to zero, before steadily going up again. Such a week rollover will occur approx. every 20 years. The last week rollover occurred in 1999 and the next one will be in 2019.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Thunderbolt manual states:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The ThunderBolt adjusts for this week rollover by adding 1024 to any week number reported by GPS which is less than week number 936 which began on December 14, 1997. With this technique, the ThunderBolt will provide an accurate translation of GPS week number and TOW to time and date until July 30, 2017.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As such, the Trimble Thunderbolt has a firmware issue with the GPS Week rollover that manifested itself on July 30, 2017, causing the date to become incorrect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We have added a brute-force fix starting in RTCM/VOTER firmware &amp;gt;=1.51. It fixes the Thunderbolts, we have not done extensive testing to see how it affects other TSIP receivers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Garmin===&lt;br /&gt;
====Garmin 18x LVC Wiring Issues====&lt;br /&gt;
If you have issues with your GPS 18x LVC not talking to the RTCM/VOTER, it may not be hooked up to the RTCM correctly. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Garmin pin labeling is backwards to what you may think. See below. You probably need to swap pins 6 and 14.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RTCM   	                 GPS 18x LVC      &lt;br /&gt;
6 GRX 	&amp;lt;-- Rx Data 	 6 Green  &lt;br /&gt;
7 GPPS 	&amp;lt;-- Pulse Output 1 Yellow  &lt;br /&gt;
8 GND   Ground 		 3 Black  &lt;br /&gt;
8 GND   Ground 		 5 Black  &lt;br /&gt;
13 +5V 	--&amp;gt;Vin 		 2 Red  &lt;br /&gt;
14 GTX 	--&amp;gt; TX Data 	 4 White&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log into the RTCM and do 98 and you should see something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Current Time: Sun  Apr 20, 2014  04:37:02.820&lt;br /&gt;
Last Rx Pkt System time: 04/20/2014 03:55:35.580, diff: 2487260 msec&lt;br /&gt;
Last Rx Pkt Timestamp time: 04/20/2014 03:55:32.064, diff: 3515 msec&lt;br /&gt;
Last Rx Pkt index: 160, inbounds: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Garmin and the RTCM====&lt;br /&gt;
Beware when buying newer Garmin GPS's to use with the Micro-Node RTCM.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The RTCM expects a 5V PPS signal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Newer Garmin's (GPS 18X, 18X LVC, etc.) MAY NOT output 5V, and can cause issues. '''Check the Garmin datasheet'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER is designed to accept both 3.3V or 5V signals, and ''should'' work fine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==No GPS/Mixed Mode==&lt;br /&gt;
You do not need a timing source to use an RTCM if you don’t want to vote. That’s called Mix Mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Having the PPS Polarity set to 2 tells the RTCM you do not have a GPS. That forces the RTCM to become a mix (non-voting) client. Turn it on, save it, and restart. A simple voter.conf would look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[general]&lt;br /&gt;
port = 667&lt;br /&gt;
password = BLAH&lt;br /&gt;
&lt;br /&gt;
[1000]&lt;br /&gt;
Site1 = pswrd1,master,transmit&lt;br /&gt;
Site2 = pswrd2,transmit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mixed Client Error==&lt;br /&gt;
&amp;quot;I am getting this error in Asterisk&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WARNING[2368]: chan_voter.c:4511 voter_reader: Voter client master timing source mobile1 attempting to authenticate as mix client!!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A mixed client error means the voter.conf file is expecting an RTCM to try and connect with a GPS IP packet (ie. has '''master''' in it in voter.conf), but the RTCM isn't &lt;br /&gt;
sending a GPS IP packet. So its a mismatch between voter.conf and Option 10 in the RTCM. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to use a mix client (non-voted), make sure that receiver's configuration line in voter.conf '''does not''' have the '''master''' option set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Debug==&lt;br /&gt;
To turn on GPS Debugging, set the Debug Option Level in the RTCM/VOTER to 32.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [[#Debug Options]] levels for more information on how this works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Trimble Debug Status Decoding==&lt;br /&gt;
The VOTER/RTCM when in TSIP mode (Trimble), assumes it is a Trimble Thunderbolt and is looking for two packets:&lt;br /&gt;
*0x8F-AB - Primary Timing Packet&lt;br /&gt;
*0x8F-AC - Supplemental Timing Packet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Grab a copy of the Thunderbolt User Guide: http://leapsecond.com/pages/tbolt/Thunderbolt-2012-02.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pages 78-83 are the important ones.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Packet 0x8F-AB is what grabs the timing information, and packet 0x8F-AC is what it looks at for everything else (including debug).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The debug string that the VOTER/RTCM reports:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	printf(&amp;quot;GPS-DEBUG: TSIP: ok %d, 9 - 14: %02x %02x %02x %02x %02x %02x\n&amp;quot;,&lt;br /&gt;
					happy,gps_buf[9],gps_buf[10],gps_buf[11],gps_buf[12],gps_buf[13],gps_buf[14]);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, the 1 after ok is the &amp;quot;happy gps&amp;quot; flag. The other 5 bytes are supposed to be bytes 9-14 from the packet... sort of. They are bytes 9-14 of the buffer, but they are actually bytes 8-13 of the binary message.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Looking at the message structure, bytes 8-13 are:&lt;br /&gt;
*8-9 Critical Alarms&lt;br /&gt;
*10-11 Minor Alarms&lt;br /&gt;
*12 GPS Decoding Status&lt;br /&gt;
*13 Disciplining Activity&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Therefore, the messages you are seeing break down as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GPS-DEBUG: TSIP: ok 1, 9 - 14: 00 00 00 00 00 00 - everything is good in the 'hood, Doing Fixes, Phase Locking&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 18 08 06 - not happy, Not Tracking Satellites, Not Disciplining Oscillator (0x18 --&amp;gt; 0b000000011000), No Usable Sats, Inactive&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 08 08 05 - not happy, Not Tracking Satellites, No Useable Sats, Compensating OXCO (holdover)&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 00 00 05 - not happy, Compensating OXCO (holdover)&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 1, 9 - 14: 00 00 00 00 00 08 - happy, Recovery Mode&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 00 00 04 - not happy, Initializing Loop Filter&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The GPS is flagged as NOT HAPPY in TSIP mode if ANY of the following are TRUE:&lt;br /&gt;
*If GPS Decoding Status is anything other than &amp;quot;Doing Fixes&amp;quot;.&lt;br /&gt;
*If Disciplining Activity is not Phase Locking or Recovery Mode.&lt;br /&gt;
*Any Critical Alarms.&lt;br /&gt;
*Any Minor Alarms.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ubiquity ToS=&lt;br /&gt;
See https://help.ubnt.com/hc/en-us/articles/205231750-airMAX-How-is-QoS-and-prioritization-handled-by-airMAX-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, if we set ToS/DSCP in the header to C0, then Ubiquity (and other gear watching ToS) ''should'' prioritize the packets. This sets the DSCP to 110 000 aka 48. UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS latency). Other sources show this as a Network Control TOS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is an option in voter.conf to turn this on (utos=y). However, this only controls packets being sent from Asterisk '''TO''' the RTCM. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to tag packets from the RTCM '''TO''' Asterisk, you need to set the RTCM debug option level to 16 (see [[#Debug Options]] for how this works).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At some point we should probably change the default behaviour of the RTCM firmware to mark the packets and use the debug setting to '''disable''' ToS. That change (if you wanted to compile your own firmware) would be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Change line 90 in IP.c&lt;br /&gt;
&lt;br /&gt;
From:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? 0xc0 : (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY))&lt;br /&gt;
&lt;br /&gt;
To:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY) : 0xc0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This changes the conditional expression from if the debug level is 16 to mark the packets with DSCP 48 to if the debug level is 16, mark the packets routine (DSCP 0).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM Simulcasting=&lt;br /&gt;
The RTCM/VOTER boards do support simulcasting, however, there are a bunch of quirks that one needs to be aware of.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Radio Hardware==&lt;br /&gt;
For best results, you should use all identical RF equipment between your voting RX sites and simulcast TX sites. If you don't, you can end up with strange audio artifacts when different receivers are used, and other strange audio issues when different transmitters are used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==9.6MHz Oscillator==&lt;br /&gt;
If you want reliable simulcast with an acceptable level of overlap warble, you MUST inject a GPS-disciplined or OXCO 9.6MHz signal to the clock of the RTCM's, in lieu of their stock internal crystal. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Otherwise, the inherent internal clock jitter of the RTCM's will cause CTCSS warble, etc. in areas where your transmitters overlap. The 1 PPS feed that you normally feed the RTCM's is acceptable for voting, but naturally, a typical crystal-driven clock will slightly drift in between the pulses every second due to inherent jitter, etc., and that ain't to good for situations like simulcast which demand sample-accurate performance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are some comments from Joe, KC2IRV, on the subject. He has also created his own wiki, specific to simulcast issues, you can find it at: http://rtcmsimulcast.wikifoundry.com/ &lt;br /&gt;
&lt;br /&gt;
:I felt I needed to let those on this mailing list know my findings with simulcasting with the RTCM units since I have received a great deal of help and information from people on this list.&lt;br /&gt;
&lt;br /&gt;
:For the past week I have had a two (2) site simulcast system up and running on UHF using the RTCM units. I have done a great deal of testing and proving on the bench and it is so far working beautifully. &lt;br /&gt;
&lt;br /&gt;
:The one issue that was made apparent to me early on was that in order for the RTCM's to be suitable for simulcast, the processor inside it needed to be clocked to a more accurate source. This source is supposed to be the Programmable Clock Generator Module in order to produce a GPS locked 9.6 MHz reference for the processor. Unfortunately this unit is not currently available.&lt;br /&gt;
&lt;br /&gt;
:Knowing this, I started to go down the road of possibly designing my own, but stumbled upon a cheap, plentiful supply of Symmetricom 9.6 MHz sinewave OCXO's. I took a chance and ordered a few to experiment with to see if the RTCM would be able to use this in place of the supplied crystal for a clock. I found they did, with that I decided to modify the RTCM with an SMA connector just above the audio adjustment pots and use this OCXO. I trimmed the frequency on the units to match each other and used them to produce the processor clock.&lt;br /&gt;
&lt;br /&gt;
:After a week of testing, I have found the results in the overlap areas to be exactly as I would expect them on a public safety/commercial simulcast system. While in an overlap region where both transmitters are within 3dB of one another, to the ear you hear no audio phase wandering. Of course , this has only been a week of testing so I wouldn't call it case closed yet.&lt;br /&gt;
&lt;br /&gt;
:I will say that if this system remains this way after testing for 6 months to a year than using a 9.6 MHz OXCO is a viable alternative to achieve the needed precision and accuracy needed for the processor clock to make it suitable for simulcast.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Comments from Jim Dixon on the issue:&lt;br /&gt;
&lt;br /&gt;
:You have to use '''something''' that will take the precise 10MHz (or whatever it is) from the GPSDO and PLL (phase-locked) convert it to 9.6MHz (square wave at 3.3V for the CPU clock).&lt;br /&gt;
&lt;br /&gt;
:We had to use 9.6MHz mainly because of the DAC in the dsPIC instead of 10MHz. The options for various divide/clock radios in the part are RATHER limited. As I recall, there wasn't even a way of getting the necessary 16kb/s sample rate on the ADC from 10MHZ, either.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Micro-Node RTCM Clock Issue=&lt;br /&gt;
James, KI0KN, had some strange-ness with some of his RTCM's when used for voting. As soon as he changed menu item 10 on the RTCM to either a (1) or a (0) instead of (2), he '''instantly''' got this on the RTCM console:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
04/05/2016 18:44:13.660  Lost GPS Time synchronization&lt;br /&gt;
04/05/2016 18:44:13.660  Host Connection Lost (Pri) (10.16.1.240)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And it sits there forever and never re-establishes connection to the host. The issue was finally traced to a bad batch of 9.6MHz crystals that affected a small run of the RTCM's. The issue was eventually resolved by Micro-Node, but we'll document it here just for record keeping.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
James comments to the list:&lt;br /&gt;
&lt;br /&gt;
:Well, after many of you offered your time and thoughts on my voter problem, Jim, WB6NIL, graciously donated a couple of hours of his time to remotely help me and he uncovered the problem.&lt;br /&gt;
&lt;br /&gt;
:All 5 of my RTCMs were purchased within the last 6 months, and I suspect all 5 have the same problem (will verify that today). The problem is that the microprocessor crystal is running too fast! There is 9.6Mhz crystal that drives the MPU, on the particular unit that Jim helped me diagnose, it's running 2.5 khz too fast.  &lt;br /&gt;
&lt;br /&gt;
:There is a sanity check in the firmware that makes sure the correct number of samples were taken in the last second (it's supposed to be 8000) and fails if the sample is incorrectly sized (mine is taking 8003 samples).  Jim helped adjust the code to be more tolerant of the sampling error and my whole system instantly worked.&lt;br /&gt;
&lt;br /&gt;
:I have since tested it with ALL my GPSs (they all work great!). So I now have everything working, including the voting.&lt;br /&gt;
&lt;br /&gt;
:I haven't contact Micro-Node about it yet. Jim told me that voting should work fine but this clock error would probably not be acceptable for Simulcast (something we have no plans on doing as of now). Since mine are deployed at mountain top sites, I'll probably pursue a crystal that is running at the correct frequency and use &amp;quot;standard&amp;quot; firmware so that if the decision is ever made to play with simulcast, I won't be right back in this same boat.&lt;br /&gt;
&lt;br /&gt;
:Thanks to all that helped out, and a HUGE thanks to Jim for taking the time to troubleshoot this.&lt;br /&gt;
&lt;br /&gt;
:BTW- This clock error will NOT effect the RTCM in mix client mode, it only affects it in voting or simulcast mode!&lt;br /&gt;
&lt;br /&gt;
:In voter.c, the stock line is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if ((samplecnt &amp;gt;= 7999) &amp;amp;&amp;amp; (samplecnt &amp;lt;= 8001))&lt;br /&gt;
&lt;br /&gt;
it needs to be changed to something like:&lt;br /&gt;
&lt;br /&gt;
if ((samplecnt &amp;gt;= 7999) &amp;amp;&amp;amp; (samplecnt &amp;lt;= 8003 ))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:That was just enough to make my first RTCM work. I've had a chance now to check a few more of my RTCMs on the bench this morning and the crystal frequencies are kind of all over.  The next one I had on the bench was 5.2Khz fast. The above code was still not enough to fix it (as would be expected) so it looks like the quality control on whatever manufacturer that crystal is, isn't very good (or a low tolerance crystal is being used). I am going to pursue crystal replacement to get a highly accurate, stable, on-frequency crystal in there as my first choice. Changing the firmware 5 different times doesn't seem like the right answer.&lt;br /&gt;
&lt;br /&gt;
:Jim put that sanity check in there for a reason. Working around it '''may''' allow the device to work, but to me, it seems getting the hardware operating the way it was supposed to originally is the better answer. I will follow up with Micro-node and let you all know how it goes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After following up with Micro-Node:&lt;br /&gt;
:They were all off, some were off a LOT. I talked to Mark @ Micronode. He told me there were 25 units that made it out the door with a crystal from an unapproved source and that was quite likely the reason for the problem. He gladly sent me 5 new crystals to replace (he offered to replace them himself if I sent the units in, but I am comfortable doing it myself to save the time and postage). &lt;br /&gt;
&lt;br /&gt;
:I haven't received them in the mail yet to show that the problem is fixed, but I will post here when that happens. He was great to work with and had no issue getting things set straight. If you are having the same issue and your RTCMs were bought about the same time, I'd suggest you contact him and have him help you resolve the issue!&lt;/div&gt;</summary>
		<author><name>Ve7fet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=37</id>
		<title>RTCM Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=37"/>
		<updated>2017-08-09T18:00:16Z</updated>

		<summary type="html">&lt;p&gt;Ve7fet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Micro-Node RTCM and VOTER interfaces are typically used with AllStar in voting/simulcast applications. They MAY be used for ANY repeater interface application, through the chan/voter channel driver. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER is the original through-hole board designed by Jim Dixon for this application. It is open-source, and the relevant Gerber files and BoM to build it are available. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The [http://www.micro-node.com/thin-m1.shtml Micro-Node Radio Thin Client Module (RTCM)] is the commercial version of the VOTER. It uses surface mount parts (SMT), but is functionally equivalent to the original VOTER. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In general, the two terms (RTCM/VOTER) are used interchangeably, as they operate the same, and use the same firmware (mostly, see below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This page will highlight some of the operational concerns, quirks, bugs, and other items of interest that relate to these interfaces. Much of the information has been gleaned off the AllStar mail list, comes from personal experience, or comes from notes in the firmware source code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Firmware=&lt;br /&gt;
The firmware in the RTCM and VOTER is the same, except it is compiled for the specific dsPIC that is installed in each. As such, the firmware is specific to the VOTER or the RTCM, and is NOT interchangeable (it won't boot in the wrong device). Firmware for the RTCM is denoted by &amp;quot;smt&amp;quot; in the filename.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are '''two parts''' to the firmware, a bootloader, and then the actual firmware file. The bootloader starts when power is applied, and allows you to talk to the dsPIC and load new firmware files over ethernet. If the bootloader is not intercepted by the loading tool, it will continue to boot the current firmware file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All new boards will need to have the bootloader installed first, followed by a firmware file. You '''can''' load a firmware file directly (.hex) in to the dsPIC, but then you will not have any of the bootloader remote loading features.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The current bootloader (.cof file) is available here: https://github.com/AllStarLink/voter/tree/master/voter-bootloader (the -smt file is for the RTCM). It needs to be loaded with a PICKit programmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Current firmware (.cry file) is available here: https://github.com/AllStarLink/voter/tree/master/board-firmware . They are loaded with the EBLEX C30 Programmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are multiple &amp;quot;flavors&amp;quot; of firmware available. See below for further explanation of what all the options mean.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The DSPBEW versions have Jim's DSP/BEW feature enabled. Note that due to the size of this feature, the diagnostics menu is NOT available in this version.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CHUCK versions have Chuck Henderson's RSSI and Squelch modifications enabled. This is probably the version that most user's will want to use in production.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Compiling Environment==&lt;br /&gt;
If you look in the [https://github.com/AllStarLink/voter/blob/master/votersystem.pdf votersystem.pdf], you will find a procedure to modify and load the bootloader in to the dsPIC of a VOTER board. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Unfortunately, there is an important step '''missing''' in that procedure, which is covered below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In addition, the old links for the MPLAB software are dead, so let's update this info and get you going.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Currently (Feb 2017), you can get the required software from:&lt;br /&gt;
:http://www.microchip.com/development-tools/downloads-archive&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download MPLAB IDE 32-bit Windows v8.66:&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_IDE_v8_66.zip&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/MPLAB_IDE_v8_66.zip&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download MPLAB C Compiler for PIC24 and dsPIC DSCs v3.31 '''NOT v.3.25''':&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Optionally, install Windows Virtual PC and XP Mode. This is getting to be pretty old software, so running it under XP Mode may be a good idea, so we can keep it isolated (install it in a virtual machine). It does run fine in Windows 7.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To setup the compile/build environment, follow these steps:&lt;br /&gt;
*Run the MPLAB IDE installer. You don't need to install the HI-TECH C Compiler at the end (click no)&lt;br /&gt;
*Run the MPLAB C Compiler installer&lt;br /&gt;
*Select Legacy Directory Name&lt;br /&gt;
*'''Select Lite Compiler'''&lt;br /&gt;
*Go to: https://github.com/AllStarLink&lt;br /&gt;
*Follow the links to: voter --&amp;gt; Clone or Download --&amp;gt; Download Zip. That will get you voter-master.zip which is a download of the whole VOTER tree from GitHub.&lt;br /&gt;
*Extract it somewhere (ie. in the XP Mode Virtual PC)&lt;br /&gt;
*Launch the MPLAB IDE&lt;br /&gt;
*Go to Configure --&amp;gt; Settings --&amp;gt; Projects and de-select one-to-one project mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bootloader==&lt;br /&gt;
If you need to load the bootloader in to a fresh board, you will need to follow these steps:&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; voter-bootloader.mcp --&amp;gt; Open (it is in the voter-bootloader folder of the GitHub source)&lt;br /&gt;
*Go to File --&amp;gt; Import --&amp;gt; voter-bootloader --&amp;gt; ENC_C30.cof --&amp;gt; Open '''This step is missing from the original procedure.'''&lt;br /&gt;
*Remove JP7 on the VOTER Board. This is necessary to allow programming by the PICKit2/PICKit3 device.&lt;br /&gt;
*Attach the PICKIT2/PICKit3 device to J1 on the VOTER board. Note that Pin 1 is closest to the power supply modules (as indicated on the board).&lt;br /&gt;
*If you have not already selected a programming device, go to Programmer --&amp;gt; Select Device and choose PICKit3 (or PICKit2, depending on what you are using).&lt;br /&gt;
*Go to Programmer --&amp;gt; Program. This will program the bootloader firmware into the PIC device on the board.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to change the default IP address from 192.168.1.11 in the bootloader:&lt;br /&gt;
*Select View --&amp;gt; Program Memory (from the top menu bar)&lt;br /&gt;
*Hit Control-F (to &amp;quot;find&amp;quot;) and search for the digits &amp;quot;00A8C0&amp;quot;.&lt;br /&gt;
*These should be found at memory address &amp;quot;03018&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;A8C0&amp;quot; at 03018 represents the hex digits C0 (192) and A8 (168) which are the first two octets of the IP address. The six digits to enter are 00 then the SECOND octet of the IP address in hex then the FIRST octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;0B01&amp;quot; at 0301A represents the hex digits 0B (11) and 01 (1) which are the second two octets of the IP address. The six digits to enter are 00 then the FOURTH octet of the IP address in hex then the THIRD octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you have modified the address to your desired IP, follow the programming procedure (above).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Firmware==&lt;br /&gt;
To compile the firmware (if you want to make custom changes):&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; navigate to board-firmware and open the .mcp file for the flavor of firmware you want to compile. They are in the board-firmware folder of the GitHub source.&lt;br /&gt;
*'''NOTE''': the .mcp files with the &amp;quot;smt&amp;quot; suffix are for the RTCM (built with SMT parts). The non-smt files are for the ORIGINAL through-hole VOTER boards. The difference is that the VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
*Go to Project --&amp;gt; Build Configuration and select &amp;quot;Release&amp;quot;. This may not be necessary (I don't believe that option is used in the firmware), but it removes the compiler option of __DEBUG being passed, so theoretically it would build &amp;quot;normal&amp;quot; firmware.&lt;br /&gt;
*Go to Configure --&amp;gt; Select Device and choose the appropriate device for your board from the Device list. If you don't select the right one, the board will not boot. Select dsPIC33FJ128GP802 for the VOTER, and dsPIC33FJ128GP804 for the RTCM.&lt;br /&gt;
*Now, if you go to Project --&amp;gt; Build All it should compile everything and show you &amp;quot;Build Succeeded&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A .cry file should be in the board-firmware folder. You can load this with the ENC Loader.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is also a .hex file in there that you could load with a programmer... but that would wipe the bootloader... so don't do that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Chuck Squelch==&lt;br /&gt;
If you want to enable &amp;quot;Chuck Squelch&amp;quot;, open the HardwareProfile.h and un-comment #define CHUCK. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may also want to go down to Line 291 in Voter.c (right click on the window, go to Properties --&amp;gt; &amp;quot;C&amp;quot; File Types --&amp;gt; Line Numbers) and tack on CHUCK after 1.60 (the current version number) so that when you load this firmware, the version will be shown as 1.51CHUCK, and you'll know that Chuck Squelch is compiled in. We should probably make that more automagic in the future...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==DSP/BEW==&lt;br /&gt;
If you want to compile the DSPBEW version, open the DSPBEW project file instead.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DSP/BEW Firmware Version=&lt;br /&gt;
DSP BEW Firmware is mutually exclusive with the diagnostic menu. There is not enough space for both, if you load the DSP/BEW firmware, you will '''NOT''' have a diag menu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BEW stands for Baseband Examination Window.&lt;br /&gt;
&lt;br /&gt;
Typically, the discriminator of an FM communications receiver produces results containing audio spectrum from the &amp;quot;sub-audible&amp;quot; range (typically &amp;lt; 100 Hz) to well above frequencies able to be produced by modulating audio. These higher frequencies can be utilized to determine signal quality, since they can only contain noise (or no noise, if a sufficiently strong signal is present).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For receivers (such as the Motorola Quantar, etc) that do not provide sufficient spectral content at these &amp;quot;noise&amp;quot; frequencies (for various reasons), The &amp;quot;DSP/BEW (Digital Signal Processor / Baseband Examination Window)&amp;quot; feature of the RTCM firmware may be utilized. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These receivers are perfectly capable of providing valid &amp;quot;noise&amp;quot; signal with no modulation on the input of the receiver, but with strong modulation (high frequency audio and high deviation), it severely interferes with proper analysis of signal strength.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This feature provides a means by which a &amp;quot;Window&amp;quot; of baseband (normal audio range) signal is examined by a DSP and a determination of whether or not sufficient audio is present to cause interference of proper signal strength is made. During the VERY brief periods of time when it is determined that sufficient audio is present to cause interference, the signal strength value is &amp;quot;held&amp;quot; (the last valid value previous to the time of interference) until such time that the interfering audio is no longer present.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The DSP/BEW feature is selectable, and '''should not''' be used for a receiver that does not need it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A note on the Motorola SLR5700 per VE7FET. DSP/BEW definitely makes a difference on what AllMon reports for the signal strength of received signals. It is less reactive when DSP/BEW = 1 than with it set to 0. We'll have to see what the real world trials show. It might be better to leave it off.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Chuck Squelch=&lt;br /&gt;
&amp;quot;Chuck Squelch&amp;quot; are a couple firmware changes made by Chuck Henderson, WB9UUS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pre-compiled firmware versions including this option are available on [https://github.com/AllStarLink/voter/tree/master/board-firmware GitHub]. See above on how it is enabled/compiled, if you are rolling your own firmware modifications.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
One of the changes fixes an issue with weak signals producing RSSI readings all over the place. It is caused by a 16 bit value that was overflowing (it is the RSSI change in the firmware). It results in rock-solid RSSI values being reported, even on barely or non-readable signals. '''This change will likely be rolled in to a permanent fix in a future firmware release.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The other firmware change changes how the squelch responds (looks at the noise in the last two audio samples) and makes the &amp;quot;Micor squelch&amp;quot; action work better.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may also want to consider the following changes in /etc/asterisk/voter.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;Comment out:&lt;br /&gt;
;thresholds =&lt;br /&gt;
&lt;br /&gt;
;and set:&lt;br /&gt;
linger = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Squelch Issues==&lt;br /&gt;
*If anyone is off frequency a little bit, that will make the voice talk off worse. Double check that the repeater and the users are all on frequency.&lt;br /&gt;
*Don't use narrow bandwidth on the repeater receiver. &lt;br /&gt;
*Make sure that the discriminator audio is not rolled off even a little bit at the high end. There should not be resistors in series or capacitors to ground between the discriminator chip output pin and the voter board input, for best results.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM/VOTER LED's=&lt;br /&gt;
RX LED on the RTCM/VOTER will flash (same rate as ACT LED) if you have External CTCSS enabled, and the received signal has the wrong (or no) valid PL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM/VOTER Bandwidth=&lt;br /&gt;
Assuming ulaw... The RTCM will require approximately 80kbps of bandwidth for continual usage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Debug Options=&lt;br /&gt;
The VOTER/RTCM firmware supports some additional debugging information that can be turned on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
From the source code, the different Debug Options are listed as:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1 - Alt/Main Host change notifications&lt;br /&gt;
2 - Ignore HWlock (GGPS only)&lt;br /&gt;
4 - GPS/PPS Failure simulation (GGPS only)&lt;br /&gt;
8 - POCSAG H/W output disable (GGPS only)&lt;br /&gt;
16 - IP TOS Class for Ubiquiti&lt;br /&gt;
32 - GPS Debug&lt;br /&gt;
64 - Fix GPS 1 second off&lt;br /&gt;
128 - Fix GPS 1 month off (WTF,O??)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Not sure what they all do, but that is what they are. Here are the most common ones used:&lt;br /&gt;
*&amp;quot;Alt/Main Host change notifications&amp;quot; shows when the connection to the Asterisk server changes state.&lt;br /&gt;
*&amp;quot;IP TOS Class for Ubiquity&amp;quot; marks the IP headers from the RTCM/VOTER '''TO''' the network with ToS C0/DSCP 48 (UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS &lt;br /&gt;
latency). Other sources show this as a Network Control TOS.) If you enable this, you also will want to have &amp;quot;utos=y&amp;quot; in your voter.conf to mark the packets from the network '''TO''' the RTCM/VOTER. We will probably change this option to mark the packets by default in a future version.&lt;br /&gt;
*&amp;quot;GPS Debug&amp;quot; will print NMEA or TSIP debug strings from the connected GPS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The way this works is you add together the options you want to enable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Want to enable GPS Debug and IP ToS, set debug to 48.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just want to turn on GPS Debug, set debug to 32.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just want ToS turned on, set debug to 16.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Un-documented Menus/Features=&lt;br /&gt;
*Menu 96 - If firmware compiled with DUMPENCREGS enabled, Menu 96 looks like it dumps the registers from the ENC (Ethernet) chip?&lt;br /&gt;
&lt;br /&gt;
*Menu 111 - show the &amp;quot;hidden&amp;quot; option values (normally they should all be 0).&lt;br /&gt;
&lt;br /&gt;
*Menu 11780 - set the &amp;quot;Elkes&amp;quot; value? No idea what this does.&lt;br /&gt;
&lt;br /&gt;
*Menu 1103 - set the &amp;quot;Glaser&amp;quot; timer value? No idea what this does.&lt;br /&gt;
&lt;br /&gt;
*Menu 1170 - set &amp;quot;Sawyer Mode&amp;quot;. No idea what this does, it was a modification Jim made for Tim Sawyer, but Tim doesn't recall what it was for. :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=TX Level Setting=&lt;br /&gt;
*Send 1kHz@3kHz on-channel in to the RX&lt;br /&gt;
*Set the RX up so it reads 3kHz deviation on the RTCM's built in console meter&lt;br /&gt;
*Now set the TX level '''pot''' to get 3kHz out of the transmitter (No PL)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now change the modulation from 1kHz tone to 800Hz followed by 1.8kHz and verify that the deviation level doesn't change as the tone frequency changes. '''Changing levels indicates a pre/de-emphasis issue.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If using PL you have to account for that deviation, unless you filter it out with your IFR (test set). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=GPS=&lt;br /&gt;
The RTCM/VOTER will work with most GPS available. It requires either NMEA or Trimble TSIP binary data. It only receives data '''from''' the GPS (GPS TX), it does not send anything '''to''' the GPS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The firmware is specifically written to talk to Trimble Thunderbolt receivers using Trimble's TSIP binary data interface, however, other Trimbles GPS receivers that talk TSIP are generally compatible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==NMEA Sentences==&lt;br /&gt;
If you are using an NMEA GPS (as opposed to a Trimble using the TSIP binary interface), the RTCM/VOTER is looking for the following NMEA sentences:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$GPGGA&lt;br /&gt;
$GPGSV&lt;br /&gt;
$GPRMC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Lock==&lt;br /&gt;
The GPS led will go solid regardless of the connection LED. That '''has''' to happen or it won't connect to the Asterisk server. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is not unusual for it to take up to 20 mins to get a GPS lock LED (ie. using a Trimble Thunderbolt) after any reboot. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS De-sense==&lt;br /&gt;
If you are having odd loss of lock issues, consider you may have interference to your GPS antenna from strong RF nearby. A note from Jesse Lloyd:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I also had crazy problems with poor signal on my GPS when I set it up sitting in a window, and once installed at site I had the GPS antenna maybe 6 ft from the VHF antenna, and after some troubleshooting found it was getting swamped with RF and loosing lock. &lt;br /&gt;
&lt;br /&gt;
I found the debug setting of 32 useful in the RTCM, you can see a hex output of the GPS status.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Issues==&lt;br /&gt;
===Trimble Thunderbolt===&lt;br /&gt;
You may find your Trimble Thunderbolt is showing the incorrect date at the moment. It could be showing the year as 1997. This is due to the date in the Thunderbolt being reported incorrectly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''This can cause some of your voting receivers to not connect, if they are used with other GPS in your system.''' If you have '''ALL''' Thunderbolts, or '''NO''' Thunderbolts, you are probably fine. If you have '''ALL''' Thunderbolts, the date/time is probably wrong, but they will ALL be wrong, so they will connect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GPS Time is a continuous counting time scale beginning at the January 5, 1980 to January 6, 1980 midnight. It is split into two parts: a time of week measured in seconds from midnight Sat/Sun and a week number. The time of week is transmitted in an unambiguous manner by the satellites, but only the bottom 10 bits of the week number are transmitted. This means that a receiver will see a week number count that goes up steadily until it reaches 1023 after which it will “roll over” back to zero, before steadily going up again. Such a week rollover will occur approx. every 20 years. The last week rollover occurred in 1999 and the next one will be in 2019.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Thunderbolt manual states:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The ThunderBolt adjusts for this week rollover by adding 1024 to any week number reported by GPS which is less than week number 936 which began on December 14, 1997. With this technique, the ThunderBolt will provide an accurate translation of GPS week number and TOW to time and date until July 30, 2017.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As such, the Trimble Thunderbolt has a firmware issue with the GPS Week rollover that manifested itself on July 30, 2017, causing the date to become incorrect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We have added a brute-force fix starting in RTCM/VOTER firmware &amp;gt;=1.51. It fixes the Thunderbolts, we have not done extensive testing to see how it affects other TSIP receivers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Garmin===&lt;br /&gt;
====Garmin 18x LVC Wiring Issues====&lt;br /&gt;
If you have issues with your GPS 18x LVC not talking to the RTCM/VOTER, it may not be hooked up to the RTCM correctly. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Garmin pin labeling is backwards to what you may think. See below. You probably need to swap pins 6 and 14.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RTCM   	                 GPS 18x LVC      &lt;br /&gt;
6 GRX 	&amp;lt;-- Rx Data 	 6 Green  &lt;br /&gt;
7 GPPS 	&amp;lt;-- Pulse Output 1 Yellow  &lt;br /&gt;
8 GND   Ground 		 3 Black  &lt;br /&gt;
8 GND   Ground 		 5 Black  &lt;br /&gt;
13 +5V 	--&amp;gt;Vin 		 2 Red  &lt;br /&gt;
14 GTX 	--&amp;gt; TX Data 	 4 White&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log into the RTCM and do 98 and you should see something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Current Time: Sun  Apr 20, 2014  04:37:02.820&lt;br /&gt;
Last Rx Pkt System time: 04/20/2014 03:55:35.580, diff: 2487260 msec&lt;br /&gt;
Last Rx Pkt Timestamp time: 04/20/2014 03:55:32.064, diff: 3515 msec&lt;br /&gt;
Last Rx Pkt index: 160, inbounds: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Garmin and the RTCM====&lt;br /&gt;
Beware when buying newer Garmin GPS's to use with the Micro-Node RTCM.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The RTCM expects a 5V PPS signal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Newer Garmin's (GPS 18X, 18X LVC, etc.) MAY NOT output 5V, and can cause issues. '''Check the Garmin datasheet'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER is designed to accept both 3.3V or 5V signals, and ''should'' work fine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==No GPS/Mixed Mode==&lt;br /&gt;
You do not need a timing source to use an RTCM if you don’t want to vote. That’s called Mix Mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Having the PPS Polarity set to 2 tells the RTCM you do not have a GPS. That forces the RTCM to become a mix (non-voting) client. Turn it on, save it, and restart. A simple voter.conf would look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[general]&lt;br /&gt;
port = 667&lt;br /&gt;
password = BLAH&lt;br /&gt;
&lt;br /&gt;
[1000]&lt;br /&gt;
Site1 = pswrd1,master,transmit&lt;br /&gt;
Site2 = pswrd2,transmit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mixed Client Error==&lt;br /&gt;
&amp;quot;I am getting this error in Asterisk&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WARNING[2368]: chan_voter.c:4511 voter_reader: Voter client master timing source mobile1 attempting to authenticate as mix client!!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A mixed client error means the voter.conf file is expecting an RTCM to try and connect with a GPS IP packet (ie. has '''master''' in it in voter.conf), but the RTCM isn't &lt;br /&gt;
sending a GPS IP packet. So its a mismatch between voter.conf and Option 10 in the RTCM. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to use a mix client (non-voted), make sure that receiver's configuration line in voter.conf '''does not''' have the '''master''' option set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Debug==&lt;br /&gt;
To turn on GPS Debugging, set the Debug Option Level in the RTCM/VOTER to 32.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [[#Debug Options]] levels for more information on how this works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Trimble Debug Status Decoding==&lt;br /&gt;
The VOTER/RTCM when in TSIP mode (Trimble), assumes it is a Trimble Thunderbolt and is looking for two packets:&lt;br /&gt;
*0x8F-AB - Primary Timing Packet&lt;br /&gt;
*0x8F-AC - Supplemental Timing Packet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Grab a copy of the Thunderbolt User Guide: http://leapsecond.com/pages/tbolt/Thunderbolt-2012-02.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pages 78-83 are the important ones.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Packet 0x8F-AB is what grabs the timing information, and packet 0x8F-AC is what it looks at for everything else (including debug).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The debug string that the VOTER/RTCM reports:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	printf(&amp;quot;GPS-DEBUG: TSIP: ok %d, 9 - 14: %02x %02x %02x %02x %02x %02x\n&amp;quot;,&lt;br /&gt;
					happy,gps_buf[9],gps_buf[10],gps_buf[11],gps_buf[12],gps_buf[13],gps_buf[14]);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, the 1 after ok is the &amp;quot;happy gps&amp;quot; flag. The other 5 bytes are supposed to be bytes 9-14 from the packet... sort of. They are bytes 9-14 of the buffer, but they are actually bytes 8-13 of the binary message.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Looking at the message structure, bytes 8-13 are:&lt;br /&gt;
*8-9 Critical Alarms&lt;br /&gt;
*10-11 Minor Alarms&lt;br /&gt;
*12 GPS Decoding Status&lt;br /&gt;
*13 Disciplining Activity&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Therefore, the messages you are seeing break down as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GPS-DEBUG: TSIP: ok 1, 9 - 14: 00 00 00 00 00 00 - everything is good in the 'hood, Doing Fixes, Phase Locking&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 18 08 06 - not happy, Not Tracking Satellites, Not Disciplining Oscillator (0x18 --&amp;gt; 0b000000011000), No Usable Sats, Inactive&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 08 08 05 - not happy, Not Tracking Satellites, No Useable Sats, Compensating OXCO (holdover)&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 00 00 05 - not happy, Compensating OXCO (holdover)&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 1, 9 - 14: 00 00 00 00 00 08 - happy, Recovery Mode&lt;br /&gt;
&lt;br /&gt;
GPS-DEBUG: TSIP: ok 0, 9 - 14: 00 00 00 00 00 04 - not happy, Initializing Loop Filter&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The GPS is flagged as NOT HAPPY in TSIP mode if ANY of the following are TRUE:&lt;br /&gt;
*If GPS Decoding Status is anything other than &amp;quot;Doing Fixes&amp;quot;.&lt;br /&gt;
*If Disciplining Activity is not Phase Locking or Recovery Mode.&lt;br /&gt;
*Any Critical Alarms.&lt;br /&gt;
*Any Minor Alarms.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ubiquity ToS=&lt;br /&gt;
See https://help.ubnt.com/hc/en-us/articles/205231750-airMAX-How-is-QoS-and-prioritization-handled-by-airMAX-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, if we set ToS/DSCP in the header to C0, then Ubiquity (and other gear watching ToS) ''should'' prioritize the packets. This sets the DSCP to 110 000 aka 48. UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS latency). Other sources show this as a Network Control TOS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is an option in voter.conf to turn this on (utos=y). However, this only controls packets being sent from Asterisk '''TO''' the RTCM. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to tag packets from the RTCM '''TO''' Asterisk, you need to set the RTCM debug option level to 16 (see [[#Debug Options]] for how this works).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At some point we should probably change the default behaviour of the RTCM firmware to mark the packets and use the debug setting to '''disable''' ToS. That change (if you wanted to compile your own firmware) would be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Change line 90 in IP.c&lt;br /&gt;
&lt;br /&gt;
From:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? 0xc0 : (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY))&lt;br /&gt;
&lt;br /&gt;
To:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY) : 0xc0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This changes the conditional expression from if the debug level is 16 to mark the packets with DSCP 48 to if the debug level is 16, mark the packets routine (DSCP 0).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM Simulcasting=&lt;br /&gt;
The RTCM/VOTER boards do support simulcasting, however, there are a bunch of quirks that one needs to be aware of.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==9.6MHz Oscillator==&lt;br /&gt;
If you want reliable simulcast with an acceptable level of overlap warble, you MUST inject a GPS-disciplined or OXCO 9.6MHz signal to the clock of the RTCM's, in lieu of their stock internal crystal. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Otherwise, the inherent internal clock jitter of the RTCM's will cause CTCSS warble, etc. in areas where your transmitters overlap. The 1 PPS feed that you normally feed the RTCM's is acceptable for voting, but naturally, a typical crystal-driven clock will slightly drift in between the pulses every second due to inherent jitter, etc., and that ain't to good for situations like simulcast which demand sample-accurate performance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are some comments from Joe, KC2IRV, on the subject. He has also created his own wiki, specific to simulcast issues, you can find it at: http://rtcmsimulcast.wikifoundry.com/ &lt;br /&gt;
&lt;br /&gt;
:I felt I needed to let those on this mailing list know my findings with simulcasting with the RTCM units since I have received a great deal of help and information from people on this list.&lt;br /&gt;
&lt;br /&gt;
:For the past week I have had a two (2) site simulcast system up and running on UHF using the RTCM units. I have done a great deal of testing and proving on the bench and it is so far working beautifully. &lt;br /&gt;
&lt;br /&gt;
:The one issue that was made apparent to me early on was that in order for the RTCM's to be suitable for simulcast, the processor inside it needed to be clocked to a more accurate source. This source is supposed to be the Programmable Clock Generator Module in order to produce a GPS locked 9.6 MHz reference for the processor. Unfortunately this unit is not currently available.&lt;br /&gt;
&lt;br /&gt;
:Knowing this, I started to go down the road of possibly designing my own, but stumbled upon a cheap, plentiful supply of Symmetricom 9.6 MHz sinewave OCXO's. I took a chance and ordered a few to experiment with to see if the RTCM would be able to use this in place of the supplied crystal for a clock. I found they did, with that I decided to modify the RTCM with an SMA connector just above the audio adjustment pots and use this OCXO. I trimmed the frequency on the units to match each other and used them to produce the processor clock.&lt;br /&gt;
&lt;br /&gt;
:After a week of testing, I have found the results in the overlap areas to be exactly as I would expect them on a public safety/commercial simulcast system. While in an overlap region where both transmitters are within 3dB of one another, to the ear you hear no audio phase wandering. Of course , this has only been a week of testing so I wouldn't call it case closed yet.&lt;br /&gt;
&lt;br /&gt;
:I will say that if this system remains this way after testing for 6 months to a year than using a 9.6 MHz OXCO is a viable alternative to achieve the needed precision and accuracy needed for the processor clock to make it suitable for simulcast.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Comments from Jim Dixon on the issue:&lt;br /&gt;
&lt;br /&gt;
:You have to use '''something''' that will take the precise 10MHz (or whatever it is) from the GPSDO and PLL (phase-locked) convert it to 9.6MHz (square wave at 3.3V for the CPU clock).&lt;br /&gt;
&lt;br /&gt;
:We had to use 9.6MHz mainly because of the DAC in the dsPIC instead of 10MHz. The options for various divide/clock radios in the part are RATHER limited. As I recall, there wasn't even a way of getting the necessary 16kb/s sample rate on the ADC from 10MHZ, either.&lt;/div&gt;</summary>
		<author><name>Ve7fet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=36</id>
		<title>RTCM Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=36"/>
		<updated>2017-08-09T17:48:35Z</updated>

		<summary type="html">&lt;p&gt;Ve7fet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Micro-Node RTCM and VOTER interfaces are typically used with AllStar in voting/simulcast applications. They MAY be used for ANY repeater interface application, through the chan/voter channel driver. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER is the original through-hole board designed by Jim Dixon for this application. It is open-source, and the relevant Gerber files and BoM to build it are available. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The [http://www.micro-node.com/thin-m1.shtml Micro-Node Radio Thin Client Module (RTCM)] is the commercial version of the VOTER. It uses surface mount parts (SMT), but is functionally equivalent to the original VOTER. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In general, the two terms (RTCM/VOTER) are used interchangeably, as they operate the same, and use the same firmware (mostly, see below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This page will highlight some of the operational concerns, quirks, bugs, and other items of interest that relate to these interfaces. Much of the information has been gleaned off the AllStar mail list, comes from personal experience, or comes from notes in the firmware source code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Firmware=&lt;br /&gt;
The firmware in the RTCM and VOTER is the same, except it is compiled for the specific dsPIC that is installed in each. As such, the firmware is specific to the VOTER or the RTCM, and is NOT interchangeable (it won't boot in the wrong device). Firmware for the RTCM is denoted by &amp;quot;smt&amp;quot; in the filename.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are '''two parts''' to the firmware, a bootloader, and then the actual firmware file. The bootloader starts when power is applied, and allows you to talk to the dsPIC and load new firmware files over ethernet. If the bootloader is not intercepted by the loading tool, it will continue to boot the current firmware file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All new boards will need to have the bootloader installed first, followed by a firmware file. You '''can''' load a firmware file directly (.hex) in to the dsPIC, but then you will not have any of the bootloader remote loading features.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The current bootloader (.cof file) is available here: https://github.com/AllStarLink/voter/tree/master/voter-bootloader (the -smt file is for the RTCM). It needs to be loaded with a PICKit programmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Current firmware (.cry file) is available here: https://github.com/AllStarLink/voter/tree/master/board-firmware . They are loaded with the EBLEX C30 Programmer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are multiple &amp;quot;flavors&amp;quot; of firmware available. See below for further explanation of what all the options mean.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The DSPBEW versions have Jim's DSP/BEW feature enabled. Note that due to the size of this feature, the diagnostics menu is NOT available in this version.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CHUCK versions have Chuck Henderson's RSSI and Squelch modifications enabled. This is probably the version that most user's will want to use in production.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Compiling Environment==&lt;br /&gt;
If you look in the [https://github.com/AllStarLink/voter/blob/master/votersystem.pdf votersystem.pdf], you will find a procedure to modify and load the bootloader in to the dsPIC of a VOTER board. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Unfortunately, there is an important step '''missing''' in that procedure, which is covered below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In addition, the old links for the MPLAB software are dead, so let's update this info and get you going.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Currently (Feb 2017), you can get the required software from:&lt;br /&gt;
:http://www.microchip.com/development-tools/downloads-archive&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download MPLAB IDE 32-bit Windows v8.66:&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_IDE_v8_66.zip&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/MPLAB_IDE_v8_66.zip&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download MPLAB C Compiler for PIC24 and dsPIC DSCs v3.31 '''NOT v.3.25''':&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Optionally, install Windows Virtual PC and XP Mode. This is getting to be pretty old software, so running it under XP Mode may be a good idea, so we can keep it isolated (install it in a virtual machine). It does run fine in Windows 7.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To setup the compile/build environment, follow these steps:&lt;br /&gt;
*Run the MPLAB IDE installer. You don't need to install the HI-TECH C Compiler at the end (click no)&lt;br /&gt;
*Run the MPLAB C Compiler installer&lt;br /&gt;
*Select Legacy Directory Name&lt;br /&gt;
*'''Select Lite Compiler'''&lt;br /&gt;
*Go to: https://github.com/AllStarLink&lt;br /&gt;
*Follow the links to: voter --&amp;gt; Clone or Download --&amp;gt; Download Zip. That will get you voter-master.zip which is a download of the whole VOTER tree from GitHub.&lt;br /&gt;
*Extract it somewhere (ie. in the XP Mode Virtual PC)&lt;br /&gt;
*Launch the MPLAB IDE&lt;br /&gt;
*Go to Configure --&amp;gt; Settings --&amp;gt; Projects and de-select one-to-one project mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bootloader==&lt;br /&gt;
If you need to load the bootloader in to a fresh board, you will need to follow these steps:&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; voter-bootloader.mcp --&amp;gt; Open (it is in the voter-bootloader folder of the GitHub source)&lt;br /&gt;
*Go to File --&amp;gt; Import --&amp;gt; voter-bootloader --&amp;gt; ENC_C30.cof --&amp;gt; Open '''This step is missing from the original procedure.'''&lt;br /&gt;
*Remove JP7 on the VOTER Board. This is necessary to allow programming by the PICKit2/PICKit3 device.&lt;br /&gt;
*Attach the PICKIT2/PICKit3 device to J1 on the VOTER board. Note that Pin 1 is closest to the power supply modules (as indicated on the board).&lt;br /&gt;
*If you have not already selected a programming device, go to Programmer --&amp;gt; Select Device and choose PICKit3 (or PICKit2, depending on what you are using).&lt;br /&gt;
*Go to Programmer --&amp;gt; Program. This will program the bootloader firmware into the PIC device on the board.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to change the default IP address from 192.168.1.11 in the bootloader:&lt;br /&gt;
*Select View --&amp;gt; Program Memory (from the top menu bar)&lt;br /&gt;
*Hit Control-F (to &amp;quot;find&amp;quot;) and search for the digits &amp;quot;00A8C0&amp;quot;.&lt;br /&gt;
*These should be found at memory address &amp;quot;03018&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;A8C0&amp;quot; at 03018 represents the hex digits C0 (192) and A8 (168) which are the first two octets of the IP address. The six digits to enter are 00 then the SECOND octet of the IP address in hex then the FIRST octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;0B01&amp;quot; at 0301A represents the hex digits 0B (11) and 01 (1) which are the second two octets of the IP address. The six digits to enter are 00 then the FOURTH octet of the IP address in hex then the THIRD octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you have modified the address to your desired IP, follow the programming procedure (above).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Firmware==&lt;br /&gt;
To compile the firmware (if you want to make custom changes):&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; navigate to board-firmware and open the .mcp file for the flavor of firmware you want to compile. They are in the board-firmware folder of the GitHub source.&lt;br /&gt;
*'''NOTE''': the .mcp files with the &amp;quot;smt&amp;quot; suffix are for the RTCM (built with SMT parts). The non-smt files are for the ORIGINAL through-hole VOTER boards. The difference is that the VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
*Go to Project --&amp;gt; Build Configuration and select &amp;quot;Release&amp;quot;. This may not be necessary (I don't believe that option is used in the firmware), but it removes the compiler option of __DEBUG being passed, so theoretically it would build &amp;quot;normal&amp;quot; firmware.&lt;br /&gt;
*Go to Configure --&amp;gt; Select Device and choose the appropriate device for your board from the Device list. If you don't select the right one, the board will not boot. Select dsPIC33FJ128GP802 for the VOTER, and dsPIC33FJ128GP804 for the RTCM.&lt;br /&gt;
*Now, if you go to Project --&amp;gt; Build All it should compile everything and show you &amp;quot;Build Succeeded&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A .cry file should be in the board-firmware folder. You can load this with the ENC Loader.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is also a .hex file in there that you could load with a programmer... but that would wipe the bootloader... so don't do that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Chuck Squelch==&lt;br /&gt;
If you want to enable &amp;quot;Chuck Squelch&amp;quot;, open the HardwareProfile.h and un-comment #define CHUCK. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may also want to go down to Line 291 in Voter.c (right click on the window, go to Properties --&amp;gt; &amp;quot;C&amp;quot; File Types --&amp;gt; Line Numbers) and tack on CHUCK after 1.60 (the current version number) so that when you load this firmware, the version will be shown as 1.51CHUCK, and you'll know that Chuck Squelch is compiled in. We should probably make that more automagic in the future...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==DSP/BEW==&lt;br /&gt;
If you want to compile the DSPBEW version, open the DSPBEW project file instead.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DSP/BEW Firmware Version=&lt;br /&gt;
DSP BEW Firmware is mutually exclusive with the diagnostic menu. There is not enough space for both, if you load the DSP/BEW firmware, you will '''NOT''' have a diag menu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BEW stands for Baseband Examination Window.&lt;br /&gt;
&lt;br /&gt;
Typically, the discriminator of an FM communications receiver produces results containing audio spectrum from the &amp;quot;sub-audible&amp;quot; range (typically &amp;lt; 100 Hz) to well above frequencies able to be produced by modulating audio. These higher frequencies can be utilized to determine signal quality, since they can only contain noise (or no noise, if a sufficiently strong signal is present).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For receivers (such as the Motorola Quantar, etc) that do not provide sufficient spectral content at these &amp;quot;noise&amp;quot; frequencies (for various reasons), The &amp;quot;DSP/BEW (Digital Signal Processor / Baseband Examination Window)&amp;quot; feature of the RTCM firmware may be utilized. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These receivers are perfectly capable of providing valid &amp;quot;noise&amp;quot; signal with no modulation on the input of the receiver, but with strong modulation (high frequency audio and high deviation), it severely interferes with proper analysis of signal strength.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This feature provides a means by which a &amp;quot;Window&amp;quot; of baseband (normal audio range) signal is examined by a DSP and a determination of whether or not sufficient audio is present to cause interference of proper signal strength is made. During the VERY brief periods of time when it is determined that sufficient audio is present to cause interference, the signal strength value is &amp;quot;held&amp;quot; (the last valid value previous to the time of interference) until such time that the interfering audio is no longer present.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The DSP/BEW feature is selectable, and '''should not''' be used for a receiver that does not need it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A note on the Motorola SLR5700 per VE7FET. DSP/BEW definitely makes a difference on what AllMon reports for the signal strength of received signals. It is less reactive when DSP/BEW = 1 than with it set to 0. We'll have to see what the real world trials show. It might be better to leave it off.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Chuck Squelch=&lt;br /&gt;
&amp;quot;Chuck Squelch&amp;quot; are a couple firmware changes made by Chuck Henderson, WB9UUS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pre-compiled firmware versions including this option are available on [https://github.com/AllStarLink/voter/tree/master/board-firmware GitHub]. See above on how it is enabled/compiled, if you are rolling your own firmware modifications.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
One of the changes fixes an issue with weak signals producing RSSI readings all over the place. It is caused by a 16 bit value that was overflowing (it is the RSSI change in the firmware). It results in rock-solid RSSI values being reported, even on barely or non-readable signals. '''This change will likely be rolled in to a permanent fix in a future firmware release.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The other firmware change changes how the squelch responds (looks at the noise in the last two audio samples) and makes the &amp;quot;Micor squelch&amp;quot; action work better.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may also want to consider the following changes in /etc/asterisk/voter.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;Comment out:&lt;br /&gt;
;thresholds =&lt;br /&gt;
&lt;br /&gt;
;and set:&lt;br /&gt;
linger = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Squelch Issues==&lt;br /&gt;
*If anyone is off frequency a little bit, that will make the voice talk off worse. Double check that the repeater and the users are all on frequency.&lt;br /&gt;
*Don't use narrow bandwidth on the repeater receiver. &lt;br /&gt;
*Make sure that the discriminator audio is not rolled off even a little bit at the high end. There should not be resistors in series or capacitors to ground between the discriminator chip output pin and the voter board input, for best results.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM/VOTER LED's=&lt;br /&gt;
RX LED on the RTCM/VOTER will flash (same rate as ACT LED) if you have External CTCSS enabled, and the received signal has the wrong (or no) valid PL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM/VOTER Bandwidth=&lt;br /&gt;
Assuming ulaw... The RTCM will require approximately 80kbps of bandwidth for continual usage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Debug Options=&lt;br /&gt;
The VOTER/RTCM firmware supports some additional debugging information that can be turned on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
From the source code, the different Debug Options are listed as:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1 - Alt/Main Host change notifications&lt;br /&gt;
2 - Ignore HWlock (GGPS only)&lt;br /&gt;
4 - GPS/PPS Failure simulation (GGPS only)&lt;br /&gt;
8 - POCSAG H/W output disable (GGPS only)&lt;br /&gt;
16 - IP TOS Class for Ubiquiti&lt;br /&gt;
32 - GPS Debug&lt;br /&gt;
64 - Fix GPS 1 second off&lt;br /&gt;
128 - Fix GPS 1 month off (WTF,O??)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Not sure what they all do, but that is what they are. Here are the most common ones used:&lt;br /&gt;
*&amp;quot;Alt/Main Host change notifications&amp;quot; shows when the connection to the Asterisk server changes state.&lt;br /&gt;
*&amp;quot;IP TOS Class for Ubiquity&amp;quot; marks the IP headers from the RTCM/VOTER '''TO''' the network with ToS C0/DSCP 48 (UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS &lt;br /&gt;
latency). Other sources show this as a Network Control TOS.) If you enable this, you also will want to have &amp;quot;utos=y&amp;quot; in your voter.conf to mark the packets from the network '''TO''' the RTCM/VOTER. We will probably change this option to mark the packets by default in a future version.&lt;br /&gt;
*&amp;quot;GPS Debug&amp;quot; will print NMEA or TSIP debug strings from the connected GPS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The way this works is you add together the options you want to enable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Want to enable GPS Debug and IP ToS, set debug to 48.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just want to turn on GPS Debug, set debug to 32.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Just want ToS turned on, set debug to 16.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Un-documented Menus/Features=&lt;br /&gt;
*Menu 96 - If firmware compiled with DUMPENCREGS enabled, Menu 96 looks like it dumps the registers from the ENC (Ethernet) chip?&lt;br /&gt;
&lt;br /&gt;
*Menu 111 - show the &amp;quot;hidden&amp;quot; option values (normally they should all be 0).&lt;br /&gt;
&lt;br /&gt;
*Menu 11780 - set the &amp;quot;Elkes&amp;quot; value? No idea what this does.&lt;br /&gt;
&lt;br /&gt;
*Menu 1103 - set the &amp;quot;Glaser&amp;quot; timer value? No idea what this does.&lt;br /&gt;
&lt;br /&gt;
*Menu 1170 - set &amp;quot;Sawyer Mode&amp;quot;. No idea what this does, it was a modification Jim made for Tim Sawyer, but Tim doesn't recall what it was for. :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=TX Level Setting=&lt;br /&gt;
*Send 1kHz@3kHz on-channel in to the RX&lt;br /&gt;
*Set the RX up so it reads 3kHz deviation on the RTCM's built in console meter&lt;br /&gt;
*Now set the TX level '''pot''' to get 3kHz out of the transmitter (No PL)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now change the modulation from 1kHz tone to 800Hz followed by 1.8kHz and verify that the deviation level doesn't change as the tone frequency changes. '''Changing levels indicates a pre/de-emphasis issue.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If using PL you have to account for that deviation, unless you filter it out with your IFR (test set). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=GPS=&lt;br /&gt;
The RTCM/VOTER will work with most GPS available. It requires either NMEA or Trimble TSIP binary data. It only receives data '''from''' the GPS (GPS TX), it does not send anything '''to''' the GPS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The firmware is specifically written to talk to Trimble Thunderbolt receivers using Trimble's TSIP binary data interface, however, other Trimbles GPS receivers that talk TSIP are generally compatible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==NMEA Sentences==&lt;br /&gt;
If you are using an NMEA GPS (as opposed to a Trimble using the TSIP binary interface), the RTCM/VOTER is looking for the following NMEA sentences:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$GPGGA&lt;br /&gt;
$GPGSV&lt;br /&gt;
$GPRMC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Lock==&lt;br /&gt;
The GPS led will go solid regardless of the connection LED. That '''has''' to happen or it won't connect to the Asterisk server. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is not unusual for it to take up to 20 mins to get a GPS lock LED (ie. using a Trimble Thunderbolt) after any reboot. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS De-sense==&lt;br /&gt;
If you are having odd loss of lock issues, consider you may have interference to your GPS antenna from strong RF nearby. A note from Jesse Lloyd:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I also had crazy problems with poor signal on my GPS when I set it up sitting in a window, and once installed at site I had the GPS antenna maybe 6 ft from the VHF antenna, and after some troubleshooting found it was getting swamped with RF and loosing lock. &lt;br /&gt;
&lt;br /&gt;
I found the debug setting of 32 useful in the RTCM, you can see a hex output of the GPS status.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Issues==&lt;br /&gt;
===Trimble Thunderbolt===&lt;br /&gt;
You may find your Trimble Thunderbolt is showing the incorrect date at the moment. It could be showing the year as 1997. This is due to the date in the Thunderbolt being reported incorrectly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''This can cause some of your voting receivers to not connect, if they are used with other GPS in your system.''' If you have '''ALL''' Thunderbolts, or '''NO''' Thunderbolts, you are probably fine. If you have '''ALL''' Thunderbolts, the date/time is probably wrong, but they will ALL be wrong, so they will connect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GPS Time is a continuous counting time scale beginning at the January 5, 1980 to January 6, 1980 midnight. It is split into two parts: a time of week measured in seconds from midnight Sat/Sun and a week number. The time of week is transmitted in an unambiguous manner by the satellites, but only the bottom 10 bits of the week number are transmitted. This means that a receiver will see a week number count that goes up steadily until it reaches 1023 after which it will “roll over” back to zero, before steadily going up again. Such a week rollover will occur approx. every 20 years. The last week rollover occurred in 1999 and the next one will be in 2019.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Thunderbolt manual states:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The ThunderBolt adjusts for this week rollover by adding 1024 to any week number reported by GPS which is less than week number 936 which began on December 14, 1997. With this technique, the ThunderBolt will provide an accurate translation of GPS week number and TOW to time and date until July 30, 2017.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As such, the Trimble Thunderbolt has a firmware issue with the GPS Week rollover that manifested itself on July 30, 2017, causing the date to become incorrect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We have added a brute-force fix starting in RTCM/VOTER firmware &amp;gt;=1.51. It fixes the Thunderbolts, we have not done extensive testing to see how it affects other TSIP receivers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Garmin===&lt;br /&gt;
====Garmin 18x LVC Wiring Issues====&lt;br /&gt;
If you have issues with your GPS 18x LVC not talking to the RTCM/VOTER, it may not be hooked up to the RTCM correctly. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Garmin pin labeling is backwards to what you may think. See below. You probably need to swap pins 6 and 14.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RTCM   	                 GPS 18x LVC      &lt;br /&gt;
6 GRX 	&amp;lt;-- Rx Data 	 6 Green  &lt;br /&gt;
7 GPPS 	&amp;lt;-- Pulse Output 1 Yellow  &lt;br /&gt;
8 GND   Ground 		 3 Black  &lt;br /&gt;
8 GND   Ground 		 5 Black  &lt;br /&gt;
13 +5V 	--&amp;gt;Vin 		 2 Red  &lt;br /&gt;
14 GTX 	--&amp;gt; TX Data 	 4 White&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Log into the RTCM and do 98 and you should see something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Current Time: Sun  Apr 20, 2014  04:37:02.820&lt;br /&gt;
Last Rx Pkt System time: 04/20/2014 03:55:35.580, diff: 2487260 msec&lt;br /&gt;
Last Rx Pkt Timestamp time: 04/20/2014 03:55:32.064, diff: 3515 msec&lt;br /&gt;
Last Rx Pkt index: 160, inbounds: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Garmin and the RTCM====&lt;br /&gt;
Beware when buying newer Garmin GPS's to use with the Micro-Node RTCM.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The RTCM expects a 5V PPS signal.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Newer Garmin's (GPS 18X, 18X LVC, etc.) MAY NOT output 5V, and can cause issues. '''Check the Garmin datasheet'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The VOTER is designed to accept both 3.3V or 5V signals, and ''should'' work fine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==No GPS/Mixed Mode==&lt;br /&gt;
You do not need a timing source to use an RTCM if you don’t want to vote. That’s called Mix Mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Having the PPS Polarity set to 2 tells the RTCM you do not have a GPS. That forces the RTCM to become a mix (non-voting) client. Turn it on, save it, and restart. A simple voter.conf would look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[general]&lt;br /&gt;
port = 667&lt;br /&gt;
password = BLAH&lt;br /&gt;
&lt;br /&gt;
[1000]&lt;br /&gt;
Site1 = pswrd1,master,transmit&lt;br /&gt;
Site2 = pswrd2,transmit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mixed Client Error==&lt;br /&gt;
&amp;quot;I am getting this error in Asterisk&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WARNING[2368]: chan_voter.c:4511 voter_reader: Voter client master timing source mobile1 attempting to authenticate as mix client!!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A mixed client error means the voter.conf file is expecting an RTCM to try and connect with a GPS IP packet (ie. has '''master''' in it in voter.conf), but the RTCM isn't &lt;br /&gt;
sending a GPS IP packet. So its a mismatch between voter.conf and Option 10 in the RTCM. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to use a mix client (non-voted), make sure that receiver's configuration line in voter.conf '''does not''' have the '''master''' option set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Debug==&lt;br /&gt;
To turn on GPS Debugging, set the Debug Option Level in the RTCM/VOTER to 32.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See [[#Debug Options]] levels for more information on how this works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ubiquity ToS=&lt;br /&gt;
See https://help.ubnt.com/hc/en-us/articles/205231750-airMAX-How-is-QoS-and-prioritization-handled-by-airMAX-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, if we set ToS/DSCP in the header to C0, then Ubiquity (and other gear watching ToS) ''should'' prioritize the packets. This sets the DSCP to 110 000 aka 48. UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS latency). Other sources show this as a Network Control TOS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is an option in voter.conf to turn this on (utos=y). However, this only controls packets being sent from Asterisk '''TO''' the RTCM. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to tag packets from the RTCM '''TO''' Asterisk, you need to set the RTCM debug option level to 16 (see [[#Debug Options]] for how this works).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At some point we should probably change the default behaviour of the RTCM firmware to mark the packets and use the debug setting to '''disable''' ToS. That change (if you wanted to compile your own firmware) would be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Change line 90 in IP.c&lt;br /&gt;
&lt;br /&gt;
From:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? 0xc0 : (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY))&lt;br /&gt;
&lt;br /&gt;
To:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY) : 0xc0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This changes the conditional expression from if the debug level is 16 to mark the packets with DSCP 48 to if the debug level is 16, mark the packets routine (DSCP 0).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM Simulcasting=&lt;br /&gt;
The RTCM/VOTER boards do support simulcasting, however, there are a bunch of quirks that one needs to be aware of.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==9.6MHz Oscillator==&lt;br /&gt;
If you want reliable simulcast with an acceptable level of overlap warble, you MUST inject a GPS-disciplined or OXCO 9.6MHz signal to the clock of the RTCM's, in lieu of their stock internal crystal. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Otherwise, the inherent internal clock jitter of the RTCM's will cause CTCSS warble, etc. in areas where your transmitters overlap. The 1 PPS feed that you normally feed the RTCM's is acceptable for voting, but naturally, a typical crystal-driven clock will slightly drift in between the pulses every second due to inherent jitter, etc., and that ain't to good for situations like simulcast which demand sample-accurate performance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are some comments from Joe, KC2IRV, on the subject. He has also created his own wiki, specific to simulcast issues, you can find it at: http://rtcmsimulcast.wikifoundry.com/ &lt;br /&gt;
&lt;br /&gt;
:I felt I needed to let those on this mailing list know my findings with simulcasting with the RTCM units since I have received a great deal of help and information from people on this list.&lt;br /&gt;
&lt;br /&gt;
:For the past week I have had a two (2) site simulcast system up and running on UHF using the RTCM units. I have done a great deal of testing and proving on the bench and it is so far working beautifully. &lt;br /&gt;
&lt;br /&gt;
:The one issue that was made apparent to me early on was that in order for the RTCM's to be suitable for simulcast, the processor inside it needed to be clocked to a more accurate source. This source is supposed to be the Programmable Clock Generator Module in order to produce a GPS locked 9.6 MHz reference for the processor. Unfortunately this unit is not currently available.&lt;br /&gt;
&lt;br /&gt;
:Knowing this, I started to go down the road of possibly designing my own, but stumbled upon a cheap, plentiful supply of Symmetricom 9.6 MHz sinewave OCXO's. I took a chance and ordered a few to experiment with to see if the RTCM would be able to use this in place of the supplied crystal for a clock. I found they did, with that I decided to modify the RTCM with an SMA connector just above the audio adjustment pots and use this OCXO. I trimmed the frequency on the units to match each other and used them to produce the processor clock.&lt;br /&gt;
&lt;br /&gt;
:After a week of testing, I have found the results in the overlap areas to be exactly as I would expect them on a public safety/commercial simulcast system. While in an overlap region where both transmitters are within 3dB of one another, to the ear you hear no audio phase wandering. Of course , this has only been a week of testing so I wouldn't call it case closed yet.&lt;br /&gt;
&lt;br /&gt;
:I will say that if this system remains this way after testing for 6 months to a year than using a 9.6 MHz OXCO is a viable alternative to achieve the needed precision and accuracy needed for the processor clock to make it suitable for simulcast.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Comments from Jim Dixon on the issue:&lt;br /&gt;
&lt;br /&gt;
:You have to use '''something''' that will take the precise 10MHz (or whatever it is) from the GPSDO and PLL (phase-locked) convert it to 9.6MHz (square wave at 3.3V for the CPU clock).&lt;br /&gt;
&lt;br /&gt;
:We had to use 9.6MHz mainly because of the DAC in the dsPIC instead of 10MHz. The options for various divide/clock radios in the part are RATHER limited. As I recall, there wasn't even a way of getting the necessary 16kb/s sample rate on the ADC from 10MHZ, either.&lt;/div&gt;</summary>
		<author><name>Ve7fet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=35</id>
		<title>RTCM Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=35"/>
		<updated>2017-08-09T17:31:26Z</updated>

		<summary type="html">&lt;p&gt;Ve7fet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Micro-Node RTCM and VOTER interfaces are typically used with AllStar in voting/simulcast applications. They MAY be used for ANY repeater interface application, through the chan/voter channel driver. &lt;br /&gt;
&lt;br /&gt;
The VOTER is the original through-hole board designed by Jim Dixon for this application. It is open-source, and the relevant Gerber files and BoM to build it are available. &lt;br /&gt;
&lt;br /&gt;
The [http://www.micro-node.com/thin-m1.shtml Micro-Node Radio Thin Client Module (RTCM)] is the commercial version of the VOTER. It uses surface mount parts (SMT), but is functionally equivalent to the original VOTER. &lt;br /&gt;
&lt;br /&gt;
In general, the two terms (RTCM/VOTER) are used interchangeably, as they operate the same, and use the same firmware (mostly, see below).&lt;br /&gt;
&lt;br /&gt;
This page will highlight some of the operational concerns, quirks, bugs, and other items of interest that relate to these interfaces. Much of the information has been gleaned off the AllStar mail list, comes from personal experience, or comes from notes in the firmware source code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Firmware=&lt;br /&gt;
The firmware in the RTCM and VOTER is the same, except it is compiled for the specific dsPIC that is installed in each. As such, the firmware is specific to the VOTER or the RTCM, and is NOT interchangeable (it won't boot in the wrong device). Firmware for the RTCM is denoted by &amp;quot;smt&amp;quot; in the filename.&lt;br /&gt;
&lt;br /&gt;
The VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
&lt;br /&gt;
There are '''two parts''' to the firmware, a bootloader, and then the actual firmware file. The bootloader starts when power is applied, and allows you to talk to the dsPIC and load new firmware files over ethernet. If the bootloader is not intercepted by the loading tool, it will continue to boot the current firmware file.&lt;br /&gt;
&lt;br /&gt;
All new boards will need to have the bootloader installed first, followed by a firmware file. You '''can''' load a firmware file directly (.hex) in to the dsPIC, but then you will not have any of the bootloader remote loading features.&lt;br /&gt;
&lt;br /&gt;
The current bootloader (.cof file) is available here: https://github.com/AllStarLink/voter/tree/master/voter-bootloader (the -smt file is for the RTCM). It needs to be loaded with a PICKit programmer.&lt;br /&gt;
&lt;br /&gt;
Current firmware (.cry file) is available here: https://github.com/AllStarLink/voter/tree/master/board-firmware . They are loaded with the EBLEX C30 Programmer.&lt;br /&gt;
&lt;br /&gt;
There are multiple &amp;quot;flavors&amp;quot; of firmware available. See below for further explanation of what all the options mean.&lt;br /&gt;
&lt;br /&gt;
The DSPBEW versions have Jim's DSP/BEW feature enabled. Note that due to the size of this feature, the diagnostics menu is NOT available in this version.&lt;br /&gt;
&lt;br /&gt;
The CHUCK versions have Chuck Henderson's RSSI and Squelch modifications enabled. This is probably the version that most user's will want to use in production.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Compiling Environment==&lt;br /&gt;
If you look in the [https://github.com/AllStarLink/voter/blob/master/votersystem.pdf votersystem.pdf], you will find a procedure to modify and load the bootloader in to the dsPIC of a VOTER board. &lt;br /&gt;
&lt;br /&gt;
Unfortunately, there is an important step '''missing''' in that procedure, which is covered below.&lt;br /&gt;
&lt;br /&gt;
In addition, the old links for the MPLAB software are dead, so let's update this info and get you going.&lt;br /&gt;
&lt;br /&gt;
Currently (Feb 2017), you can get the required software from:&lt;br /&gt;
:http://www.microchip.com/development-tools/downloads-archive&lt;br /&gt;
&lt;br /&gt;
Download MPLAB IDE 32-bit Windows v8.66:&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_IDE_v8_66.zip&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/MPLAB_IDE_v8_66.zip&lt;br /&gt;
&lt;br /&gt;
Download MPLAB C Compiler for PIC24 and dsPIC DSCs v3.31 '''NOT v.3.25''':&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
&lt;br /&gt;
Optionally, install Windows Virtual PC and XP Mode. This is getting to be pretty old software, so running it under XP Mode may be a good idea, so we can keep it isolated (install it in a virtual machine). It does run fine in Windows 7.&lt;br /&gt;
&lt;br /&gt;
To setup the compile/build environment, follow these steps:&lt;br /&gt;
*Run the MPLAB IDE installer. You don't need to install the HI-TECH C Compiler at the end (click no)&lt;br /&gt;
*Run the MPLAB C Compiler installer&lt;br /&gt;
*Select Legacy Directory Name&lt;br /&gt;
*'''Select Lite Compiler'''&lt;br /&gt;
*Go to: https://github.com/AllStarLink&lt;br /&gt;
*Follow the links to: voter --&amp;gt; Clone or Download --&amp;gt; Download Zip. That will get you voter-master.zip which is a download of the whole VOTER tree from GitHub.&lt;br /&gt;
*Extract it somewhere (ie. in the XP Mode Virtual PC)&lt;br /&gt;
*Launch the MPLAB IDE&lt;br /&gt;
*Go to Configure --&amp;gt; Settings --&amp;gt; Projects and de-select one-to-one project mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bootloader==&lt;br /&gt;
If you need to load the bootloader in to a fresh board, you will need to follow these steps:&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; voter-bootloader.mcp --&amp;gt; Open (it is in the voter-bootloader folder of the GitHub source)&lt;br /&gt;
*Go to File --&amp;gt; Import --&amp;gt; voter-bootloader --&amp;gt; ENC_C30.cof --&amp;gt; Open '''This step is missing from the original procedure.'''&lt;br /&gt;
*Remove JP7 on the VOTER Board. This is necessary to allow programming by the PICKit2/PICKit3 device.&lt;br /&gt;
*Attach the PICKIT2/PICKit3 device to J1 on the VOTER board. Note that Pin 1 is closest to the power supply modules (as indicated on the board).&lt;br /&gt;
*If you have not already selected a programming device, go to Programmer --&amp;gt; Select Device and choose PICKit3 (or PICKit2, depending on what you are using).&lt;br /&gt;
*Go to Programmer --&amp;gt; Program. This will program the bootloader firmware into the PIC device on the board.&lt;br /&gt;
&lt;br /&gt;
If you want to change the default IP address from 192.168.1.11 in the bootloader:&lt;br /&gt;
*Select View --&amp;gt; Program Memory (from the top menu bar)&lt;br /&gt;
*Hit Control-F (to &amp;quot;find&amp;quot;) and search for the digits &amp;quot;00A8C0&amp;quot;.&lt;br /&gt;
*These should be found at memory address &amp;quot;03018&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;A8C0&amp;quot; at 03018 represents the hex digits C0 (192) and A8 (168) which are the first two octets of the IP address. The six digits to enter are 00 then the SECOND octet of the IP address in hex then the FIRST octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;0B01&amp;quot; at 0301A represents the hex digits 0B (11) and 01 (1) which are the second two octets of the IP address. The six digits to enter are 00 then the FOURTH octet of the IP address in hex then the THIRD octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
Once you have modified the address to your desired IP, follow the programming procedure (above).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Firmware==&lt;br /&gt;
To compile the firmware (if you want to make custom changes):&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; navigate to board-firmware and open the .mcp file for the flavor of firmware you want to compile. They are in the board-firmware folder of the GitHub source.&lt;br /&gt;
*'''NOTE''': the .mcp files with the &amp;quot;smt&amp;quot; suffix are for the RTCM (built with SMT parts). The non-smt files are for the ORIGINAL through-hole VOTER boards. The difference is that the VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
*Go to Project --&amp;gt; Build Configuration and select &amp;quot;Release&amp;quot;. This may not be necessary (I don't believe that option is used in the firmware), but it removes the compiler option of __DEBUG being passed, so theoretically it would build &amp;quot;normal&amp;quot; firmware.&lt;br /&gt;
*Go to Configure --&amp;gt; Select Device and choose the appropriate device for your board from the Device list. If you don't select the right one, the board will not boot. Select dsPIC33FJ128GP802 for the VOTER, and dsPIC33FJ128GP804 for the RTCM.&lt;br /&gt;
*Now, if you go to Project --&amp;gt; Build All it should compile everything and show you &amp;quot;Build Succeeded&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
A .cry file should be in the board-firmware folder. You can load this with the ENC Loader.&lt;br /&gt;
&lt;br /&gt;
There is also a .hex file in there that you could load with a programmer... but that would wipe the bootloader... so don't do that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Chuck Squelch==&lt;br /&gt;
If you want to enable &amp;quot;Chuck Squelch&amp;quot;, open the HardwareProfile.h and un-comment #define CHUCK. &lt;br /&gt;
&lt;br /&gt;
You may also want to go down to Line 291 in Voter.c (right click on the window, go to Properties --&amp;gt; &amp;quot;C&amp;quot; File Types --&amp;gt; Line Numbers) and tack on CHUCK after 1.60 (the current version number) so that when you load this firmware, the version will be shown as 1.51CHUCK, and you'll know that Chuck Squelch is compiled in. We should probably make that more automagic in the future...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==DSP/BEW==&lt;br /&gt;
If you want to compile the DSPBEW version, open the DSPBEW project file instead.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DSP/BEW Firmware Version=&lt;br /&gt;
DSP BEW Firmware is mutually exclusive with the diagnostic menu. There is not enough space for both, if you load the DSP/BEW firmware, you will '''NOT''' have a diag menu.&lt;br /&gt;
&lt;br /&gt;
BEW stands for Baseband Examination Window.&lt;br /&gt;
&lt;br /&gt;
Typically, the discriminator of an FM communications receiver produces results containing audio spectrum from the &amp;quot;sub-audible&amp;quot; range (typically &amp;lt; 100 Hz) to well above frequencies able to be produced by modulating audio. These higher frequencies can be utilized to determine signal quality, since they can only contain noise (or no noise, if a sufficiently strong signal is present).&lt;br /&gt;
&lt;br /&gt;
For receivers (such as the Motorola Quantar, etc) that do not provide sufficient spectral content at these &amp;quot;noise&amp;quot; frequencies (for various reasons), The &amp;quot;DSP/BEW (Digital Signal Processor / Baseband Examination Window)&amp;quot; feature of the RTCM firmware may be utilized. &lt;br /&gt;
&lt;br /&gt;
These receivers are perfectly capable of providing valid &amp;quot;noise&amp;quot; signal with no modulation on the input of the receiver, but with strong modulation (high frequency audio and high deviation), it severely interferes with proper analysis of signal strength.&lt;br /&gt;
&lt;br /&gt;
This feature provides a means by which a &amp;quot;Window&amp;quot; of baseband (normal audio range) signal is examined by a DSP and a determination of whether or not sufficient audio is present to cause interference of proper signal strength is made. During the VERY brief periods of time when it is determined that sufficient audio is present to cause interference, the signal strength value is &amp;quot;held&amp;quot; (the last valid value previous to the time of interference) until such time that the interfering audio is no longer present.  &lt;br /&gt;
&lt;br /&gt;
The DSP/BEW feature is selectable, and '''should not''' be used for a receiver that does not need it.&lt;br /&gt;
&lt;br /&gt;
A note on the Motorola SLR5700 per VE7FET. DSP/BEW definitely makes a difference on what AllMon reports for the signal strength of received signals. It is less reactive when DSP/BEW = 1 than with it set to 0. We'll have to see what the real world trials show. It might be better to leave it off.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Chuck Squelch=&lt;br /&gt;
&amp;quot;Chuck Squelch&amp;quot; are a couple firmware changes made by Chuck Henderson, WB9UUS.&lt;br /&gt;
&lt;br /&gt;
Pre-compiled firmware versions including this option are available on [https://github.com/AllStarLink/voter/tree/master/board-firmware GitHub]. See above on how it is enabled/compiled, if you are rolling your own firmware modifications.&lt;br /&gt;
 &lt;br /&gt;
One of the changes fixes an issue with weak signals producing RSSI readings all over the place. It is caused by a 16 bit value that was overflowing (it is the RSSI change in the firmware). It results in rock-solid RSSI values being reported, even on barely or non-readable signals. '''This change will likely be rolled in to a permanent fix in a future firmware release.'''&lt;br /&gt;
&lt;br /&gt;
The other firmware change changes how the squelch responds (looks at the noise in the last two audio samples) and makes the &amp;quot;Micor squelch&amp;quot; action work better.&lt;br /&gt;
&lt;br /&gt;
You may also want to consider the following changes in /etc/asterisk/voter.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;Comment out:&lt;br /&gt;
;thresholds =&lt;br /&gt;
&lt;br /&gt;
;and set:&lt;br /&gt;
linger = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Squelch Issues==&lt;br /&gt;
*If anyone is off frequency a little bit, that will make the voice talk off worse. Double check that the repeater and the users are all on frequency.&lt;br /&gt;
*Don't use narrow bandwidth on the repeater receiver. &lt;br /&gt;
*Make sure that the discriminator audio is not rolled off even a little bit at the high end. There should not be resistors in series or capacitors to ground between the discriminator chip output pin and the voter board input, for best results.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM/VOTER LED's=&lt;br /&gt;
RX LED on the RTCM/VOTER will flash (same rate as ACT LED) if you have External CTCSS enabled, and the received signal has the wrong (or no) valid PL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Debug Options=&lt;br /&gt;
The VOTER/RTCM firmware supports some additional debugging information that can be turned on.&lt;br /&gt;
&lt;br /&gt;
From the source code, the different Debug Options are listed as:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1 - Alt/Main Host change notifications&lt;br /&gt;
2 - Ignore HWlock (GGPS only)&lt;br /&gt;
4 - GPS/PPS Failure simulation (GGPS only)&lt;br /&gt;
8 - POCSAG H/W output disable (GGPS only)&lt;br /&gt;
16 - IP TOS Class for Ubiquiti&lt;br /&gt;
32 - GPS Debug&lt;br /&gt;
64 - Fix GPS 1 second off&lt;br /&gt;
128 - Fix GPS 1 month off (WTF,O??)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Not sure what they all do, but that is what they are. Here are the most common ones used:&lt;br /&gt;
*&amp;quot;Alt/Main Host change notifications&amp;quot; shows when the connection to the Asterisk server changes state.&lt;br /&gt;
*&amp;quot;IP TOS Class for Ubiquity&amp;quot; marks the IP headers from the RTCM/VOTER '''TO''' the network with ToS C0/DSCP 48 (UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS &lt;br /&gt;
latency). Other sources show this as a Network Control TOS.) If you enable this, you also will want to have &amp;quot;utos=y&amp;quot; in your voter.conf to mark the packets from the network '''TO''' the RTCM/VOTER. We will probably change this option to mark the packets by default in a future version.&lt;br /&gt;
*&amp;quot;GPS Debug&amp;quot; will print NMEA or TSIP debug strings from the connected GPS.&lt;br /&gt;
&lt;br /&gt;
The way this works is you add together the options you want to enable.&lt;br /&gt;
&lt;br /&gt;
Want to enable GPS Debug and IP ToS, set debug to 48.&lt;br /&gt;
&lt;br /&gt;
Just want to turn on GPS Debug, set debug to 32.&lt;br /&gt;
&lt;br /&gt;
Just want ToS turned on, set debug to 16.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Un-documented Menus/Features=&lt;br /&gt;
*Menu 96 - If firmware compiled with DUMPENCREGS enabled, Menu 96 looks like it dumps the registers from the ENC (Ethernet) chip?&lt;br /&gt;
&lt;br /&gt;
*Menu 111 - show the &amp;quot;hidden&amp;quot; option values (normally they should all be 0).&lt;br /&gt;
&lt;br /&gt;
*Menu 11780 - set the &amp;quot;Elkes&amp;quot; value? No idea what this does.&lt;br /&gt;
&lt;br /&gt;
*Menu 1103 - set the &amp;quot;Glaser&amp;quot; timer value? No idea what this does.&lt;br /&gt;
&lt;br /&gt;
*Menu 1170 - set &amp;quot;Sawyer Mode&amp;quot;. No idea what this does, it was a modification Jim made for Tim Sawyer, but Tim doesn't recall what it was for. :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=TX Level Setting=&lt;br /&gt;
*Send 1kHz@3kHz on-channel in to the RX&lt;br /&gt;
*Set the RX up so it reads 3kHz deviation on the RTCM's built in console meter&lt;br /&gt;
*Now set the TX level '''pot''' to get 3kHz out of the transmitter (No PL)&lt;br /&gt;
&lt;br /&gt;
Now change the modulation from 1kHz tone to 800Hz followed by 1.8kHz and verify that the deviation level doesn't change as the tone frequency changes. '''Changing levels indicates a pre/de-emphasis issue.'''&lt;br /&gt;
&lt;br /&gt;
If using PL you have to account for that deviation, unless you filter it out with your IFR (test set). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=GPS=&lt;br /&gt;
The RTCM/VOTER will work with most GPS available. It requires either NMEA or Trimble TSIP binary data. It only receives data '''from''' the GPS (GPS TX), it does not send anything '''to''' the GPS.&lt;br /&gt;
&lt;br /&gt;
The firmware is specifically written to talk to Trimble Thunderbolt receivers using Trimble's TSIP binary data interface, however, other Trimbles GPS receivers that talk TSIP are generally compatible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==NMEA Sentences==&lt;br /&gt;
If you are using an NMEA GPS (as opposed to a Trimble using the TSIP binary interface), the RTCM/VOTER is looking for the following NMEA sentences:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$GPGGA&lt;br /&gt;
$GPGSV&lt;br /&gt;
$GPRMC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Lock==&lt;br /&gt;
The GPS led will go solid regardless of the connection LED. That '''has''' to happen or it won't connect to the Asterisk server. &lt;br /&gt;
&lt;br /&gt;
It is not unusual for it to take up to 20 mins to get a GPS lock LED (ie. using a Trimble Thunderbolt) after any reboot. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS De-sense==&lt;br /&gt;
If you are having odd loss of lock issues, consider you may have interference to your GPS antenna from strong RF nearby. A note from Jesse Lloyd:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I also had crazy problems with poor signal on my GPS when I set it up sitting in a window, and once installed at site I had the GPS antenna maybe 6 ft from the VHF antenna, and after some troubleshooting found it was getting swamped with RF and loosing lock. &lt;br /&gt;
&lt;br /&gt;
I found the debug setting of 32 useful in the RTCM, you can see a hex output of the GPS status.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Issues==&lt;br /&gt;
===Trimble Thunderbolt===&lt;br /&gt;
You may find your Trimble Thunderbolt is showing the incorrect date at the moment. It could be showing the year as 1997. This is due to the date in the Thunderbolt being reported incorrectly.&lt;br /&gt;
&lt;br /&gt;
'''This can cause some of your voting receivers to not connect, if they are used with other GPS in your system.''' If you have '''ALL''' Thunderbolts, or '''NO''' Thunderbolts, you are probably fine. If you have '''ALL''' Thunderbolts, the date/time is probably wrong, but they will ALL be wrong, so they will connect.&lt;br /&gt;
&lt;br /&gt;
GPS Time is a continuous counting time scale beginning at the January 5, 1980 to January 6, 1980 midnight. It is split into two parts: a time of week measured in seconds from midnight Sat/Sun and a week number. The time of week is transmitted in an unambiguous manner by the satellites, but only the bottom 10 bits of the week number are transmitted. This means that a receiver will see a week number count that goes up steadily until it reaches 1023 after which it will “roll over” back to zero, before steadily going up again. Such a week rollover will occur approx. every 20 years. The last week rollover occurred in 1999 and the next one will be in 2019.&lt;br /&gt;
&lt;br /&gt;
The Thunderbolt manual states:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The ThunderBolt adjusts for this week rollover by adding 1024 to any week number reported by GPS which is less than week number 936 which began on December 14, 1997. With this technique, the ThunderBolt will provide an accurate translation of GPS week number and TOW to time and date until July 30, 2017.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As such, the Trimble Thunderbolt has a firmware issue with the GPS Week rollover that manifested itself on July 30, 2017, causing the date to become incorrect.&lt;br /&gt;
&lt;br /&gt;
We have added a brute-force fix starting in RTCM/VOTER firmware &amp;gt;=1.51. It fixes the Thunderbolts, we have not done extensive testing to see how it affects other TSIP receivers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Garmin===&lt;br /&gt;
====Garmin 18x LVC Wiring Issues====&lt;br /&gt;
If you have issues with your GPS 18x LVC not talking to the RTCM/VOTER, it may not be hooked up to the RTCM correctly. &lt;br /&gt;
&lt;br /&gt;
The Garmin pin labeling is backwards to what you may think. See below. You probably need to swap pins 6 and 14.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RTCM   	                 GPS 18x LVC      &lt;br /&gt;
6 GRX 	&amp;lt;-- Rx Data 	 6 Green  &lt;br /&gt;
7 GPPS 	&amp;lt;-- Pulse Output 1 Yellow  &lt;br /&gt;
8 GND   Ground 		 3 Black  &lt;br /&gt;
8 GND   Ground 		 5 Black  &lt;br /&gt;
13 +5V 	--&amp;gt;Vin 		 2 Red  &lt;br /&gt;
14 GTX 	--&amp;gt; TX Data 	 4 White&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Log into the RTCM and do 98 and you should see something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Current Time: Sun  Apr 20, 2014  04:37:02.820&lt;br /&gt;
Last Rx Pkt System time: 04/20/2014 03:55:35.580, diff: 2487260 msec&lt;br /&gt;
Last Rx Pkt Timestamp time: 04/20/2014 03:55:32.064, diff: 3515 msec&lt;br /&gt;
Last Rx Pkt index: 160, inbounds: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Garmin and the RTCM====&lt;br /&gt;
Beware when buying newer Garmin GPS's to use with the Micro-Node RTCM.&lt;br /&gt;
&lt;br /&gt;
The RTCM expects a 5V PPS signal.&lt;br /&gt;
&lt;br /&gt;
Newer Garmin's (GPS 18X, 18X LVC, etc.) MAY NOT output 5V, and can cause issues. '''Check the Garmin datasheet'''.&lt;br /&gt;
&lt;br /&gt;
The VOTER is designed to accept both 3.3V or 5V signals, and ''should'' work fine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==No GPS/Mixed Mode==&lt;br /&gt;
You do not need a timing source to use an RTCM if you don’t want to vote. That’s called Mix Mode.&lt;br /&gt;
&lt;br /&gt;
Having the PPS Polarity set to 2 tells the RTCM you do not have a GPS. That forces the RTCM to become a mix (non-voting) client. Turn it on, save it, and restart. A simple voter.conf would look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[general]&lt;br /&gt;
port = 667&lt;br /&gt;
password = BLAH&lt;br /&gt;
&lt;br /&gt;
[1000]&lt;br /&gt;
Site1 = pswrd1,master,transmit&lt;br /&gt;
Site2 = pswrd2,transmit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mixed Client Error==&lt;br /&gt;
&amp;quot;I am getting this error in Asterisk&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WARNING[2368]: chan_voter.c:4511 voter_reader: Voter client master timing source mobile1 attempting to authenticate as mix client!!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A mixed client error means the voter.conf file is expecting an RTCM to try and connect with a GPS IP packet (ie. has '''master''' in it in voter.conf), but the RTCM isn't &lt;br /&gt;
sending a GPS IP packet. So its a mismatch between voter.conf and Option 10 in the RTCM. &lt;br /&gt;
&lt;br /&gt;
If you want to use a mix client (non-voted), make sure that receiver's configuration line in voter.conf '''does not''' have the '''master''' option set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Debug==&lt;br /&gt;
To turn on GPS Debugging, set the Debug Option Level in the RTCM/VOTER to 32.&lt;br /&gt;
&lt;br /&gt;
See [[#Debug Options]] levels for more information on how this works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ubiquity ToS=&lt;br /&gt;
See https://help.ubnt.com/hc/en-us/articles/205231750-airMAX-How-is-QoS-and-prioritization-handled-by-airMAX-&lt;br /&gt;
&lt;br /&gt;
So, if we set ToS/DSCP in the header to C0, then Ubiquity (and other gear watching ToS) ''should'' prioritize the packets. This sets the DSCP to 110 000 aka 48. UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS latency). Other sources show this as a Network Control TOS.&lt;br /&gt;
&lt;br /&gt;
There is an option in voter.conf to turn this on (utos=y). However, this only controls packets being sent from Asterisk '''TO''' the RTCM. &lt;br /&gt;
&lt;br /&gt;
If you want to tag packets from the RTCM '''TO''' Asterisk, you need to set the RTCM debug option level to 16 (see [[#Debug Options]] for how this works).&lt;br /&gt;
&lt;br /&gt;
At some point we should probably change the default behaviour of the RTCM firmware to mark the packets and use the debug setting to '''disable''' ToS. That change (if you wanted to compile your own firmware) would be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Change line 90 in IP.c&lt;br /&gt;
&lt;br /&gt;
From:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? 0xc0 : (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY))&lt;br /&gt;
&lt;br /&gt;
To:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY) : 0xc0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This changes the conditional expression from if the debug level is 16 to mark the packets with DSCP 48 to if the debug level is 16, mark the packets routine (DSCP 0).&lt;/div&gt;</summary>
		<author><name>Ve7fet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=34</id>
		<title>RTCM Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=34"/>
		<updated>2017-08-09T17:29:11Z</updated>

		<summary type="html">&lt;p&gt;Ve7fet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Micro-Node RTCM and VOTER interfaces are typically used with AllStar in voting/simulcast applications. They MAY be used for ANY repeater interface application, through the chan/voter channel driver. &lt;br /&gt;
&lt;br /&gt;
The VOTER is the original through-hole board designed by Jim Dixon for this application. It is open-source, and the relevant Gerber files and BoM to build it are available. &lt;br /&gt;
&lt;br /&gt;
The [http://www.micro-node.com/thin-m1.shtml Micro-Node Radio Thin Client Module (RTCM)] is the commercial version of the VOTER. It uses surface mount parts (SMT), but is functionally equivalent to the original VOTER. &lt;br /&gt;
&lt;br /&gt;
In general, the two terms (RTCM/VOTER) are used interchangeably, as they operate the same, and use the same firmware (mostly, see below).&lt;br /&gt;
&lt;br /&gt;
This page will highlight some of the operational concerns, quirks, bugs, and other items of interest that relate to these interfaces. Much of the information has been gleaned off the AllStar mail list, comes from personal experience, or comes from notes in the firmware source code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Firmware=&lt;br /&gt;
The firmware in the RTCM and VOTER is the same, except it is compiled for the specific dsPIC that is installed in each. As such, the firmware is specific to the VOTER or the RTCM, and is NOT interchangeable (it won't boot in the wrong device). Firmware for the RTCM is denoted by &amp;quot;smt&amp;quot; in the filename.&lt;br /&gt;
&lt;br /&gt;
The VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
&lt;br /&gt;
There are '''two parts''' to the firmware, a bootloader, and then the actual firmware file. The bootloader starts when power is applied, and allows you to talk to the dsPIC and load new firmware files over ethernet. If the bootloader is not intercepted by the loading tool, it will continue to boot the current firmware file.&lt;br /&gt;
&lt;br /&gt;
All new boards will need to have the bootloader installed first, followed by a firmware file. You '''can''' load a firmware file directly (.hex) in to the dsPIC, but then you will not have any of the bootloader remote loading features.&lt;br /&gt;
&lt;br /&gt;
The current bootloader (.cof file) is available here: https://github.com/AllStarLink/voter/tree/master/voter-bootloader (the -smt file is for the RTCM). It needs to be loaded with a PICKit programmer.&lt;br /&gt;
&lt;br /&gt;
Current firmware (.cry file) is available here: https://github.com/AllStarLink/voter/tree/master/board-firmware . They are loaded with the EBLEX C30 Programmer.&lt;br /&gt;
&lt;br /&gt;
There are multiple &amp;quot;flavors&amp;quot; of firmware available. See below for further explanation of what all the options mean.&lt;br /&gt;
&lt;br /&gt;
The DSPBEW versions have Jim's DSP/BEW feature enabled. Note that due to the size of this feature, the diagnostics menu is NOT available in this version.&lt;br /&gt;
&lt;br /&gt;
The CHUCK versions have Chuck Henderson's RSSI and Squelch modifications enabled. This is probably the version that most user's will want to use in production.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Compiling Environment==&lt;br /&gt;
If you look in the [https://github.com/AllStarLink/voter/blob/master/votersystem.pdf votersystem.pdf], you will find a procedure to modify and load the bootloader in to the dsPIC of a VOTER board. &lt;br /&gt;
&lt;br /&gt;
Unfortunately, there is an important step '''missing''' in that procedure, which is covered below.&lt;br /&gt;
&lt;br /&gt;
In addition, the old links for the MPLAB software are dead, so let's update this info and get you going.&lt;br /&gt;
&lt;br /&gt;
Currently (Feb 2017), you can get the required software from:&lt;br /&gt;
:http://www.microchip.com/development-tools/downloads-archive&lt;br /&gt;
&lt;br /&gt;
Download MPLAB IDE 32-bit Windows v8.66:&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_IDE_v8_66.zip&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/MPLAB_IDE_v8_66.zip&lt;br /&gt;
&lt;br /&gt;
Download MPLAB C Compiler for PIC24 and dsPIC DSCs v3.31 '''NOT v.3.25''':&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
&lt;br /&gt;
Optionally, install Windows Virtual PC and XP Mode. This is getting to be pretty old software, so running it under XP Mode may be a good idea, so we can keep it isolated (install it in a virtual machine). It does run fine in Windows 7.&lt;br /&gt;
&lt;br /&gt;
To setup the compile/build environment, follow these steps:&lt;br /&gt;
*Run the MPLAB IDE installer. You don't need to install the HI-TECH C Compiler at the end (click no)&lt;br /&gt;
*Run the MPLAB C Compiler installer&lt;br /&gt;
*Select Legacy Directory Name&lt;br /&gt;
*'''Select Lite Compiler'''&lt;br /&gt;
*Go to: https://github.com/AllStarLink&lt;br /&gt;
*Follow the links to: voter --&amp;gt; Clone or Download --&amp;gt; Download Zip. That will get you voter-master.zip which is a download of the whole VOTER tree from GitHub.&lt;br /&gt;
*Extract it somewhere (ie. in the XP Mode Virtual PC)&lt;br /&gt;
*Launch the MPLAB IDE&lt;br /&gt;
*Go to Configure --&amp;gt; Settings --&amp;gt; Projects and de-select one-to-one project mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bootloader==&lt;br /&gt;
If you need to load the bootloader in to a fresh board, you will need to follow these steps:&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; voter-bootloader.mcp --&amp;gt; Open (it is in the voter-bootloader folder of the GitHub source)&lt;br /&gt;
*Go to File --&amp;gt; Import --&amp;gt; voter-bootloader --&amp;gt; ENC_C30.cof --&amp;gt; Open '''This step is missing from the original procedure.'''&lt;br /&gt;
*Remove JP7 on the VOTER Board. This is necessary to allow programming by the PICKit2/PICKit3 device.&lt;br /&gt;
*Attach the PICKIT2/PICKit3 device to J1 on the VOTER board. Note that Pin 1 is closest to the power supply modules (as indicated on the board).&lt;br /&gt;
*If you have not already selected a programming device, go to Programmer --&amp;gt; Select Device and choose PICKit3 (or PICKit2, depending on what you are using).&lt;br /&gt;
*Go to Programmer --&amp;gt; Program. This will program the bootloader firmware into the PIC device on the board.&lt;br /&gt;
&lt;br /&gt;
If you want to change the default IP address from 192.168.1.11 in the bootloader:&lt;br /&gt;
*Select View --&amp;gt; Program Memory (from the top menu bar)&lt;br /&gt;
*Hit Control-F (to &amp;quot;find&amp;quot;) and search for the digits &amp;quot;00A8C0&amp;quot;.&lt;br /&gt;
*These should be found at memory address &amp;quot;03018&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;A8C0&amp;quot; at 03018 represents the hex digits C0 (192) and A8 (168) which are the first two octets of the IP address. The six digits to enter are 00 then the SECOND octet of the IP address in hex then the FIRST octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;0B01&amp;quot; at 0301A represents the hex digits 0B (11) and 01 (1) which are the second two octets of the IP address. The six digits to enter are 00 then the FOURTH octet of the IP address in hex then the THIRD octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
Once you have modified the address to your desired IP, follow the programming procedure (above).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Firmware==&lt;br /&gt;
To compile the firmware (if you want to make custom changes):&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; navigate to board-firmware and open the .mcp file for the flavor of firmware you want to compile. They are in the board-firmware folder of the GitHub source.&lt;br /&gt;
*'''NOTE''': the .mcp files with the &amp;quot;smt&amp;quot; suffix are for the RTCM (built with SMT parts). The non-smt files are for the ORIGINAL through-hole VOTER boards. The difference is that the VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
*Go to Project --&amp;gt; Build Configuration and select &amp;quot;Release&amp;quot;. This may not be necessary (I don't believe that option is used in the firmware), but it removes the compiler option of __DEBUG being passed, so theoretically it would build &amp;quot;normal&amp;quot; firmware.&lt;br /&gt;
*Go to Configure --&amp;gt; Select Device and choose the appropriate device for your board from the Device list. If you don't select the right one, the board will not boot. Select dsPIC33FJ128GP802 for the VOTER, and dsPIC33FJ128GP804 for the RTCM.&lt;br /&gt;
*Now, if you go to Project --&amp;gt; Build All it should compile everything and show you &amp;quot;Build Succeeded&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
A .cry file should be in the board-firmware folder. You can load this with the ENC Loader.&lt;br /&gt;
&lt;br /&gt;
There is also a .hex file in there that you could load with a programmer... but that would wipe the bootloader... so don't do that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Chuck Squelch==&lt;br /&gt;
If you want to enable &amp;quot;Chuck Squelch&amp;quot;, open the HardwareProfile.h and un-comment #define CHUCK. &lt;br /&gt;
&lt;br /&gt;
You may also want to go down to Line 291 in Voter.c (right click on the window, go to Properties --&amp;gt; &amp;quot;C&amp;quot; File Types --&amp;gt; Line Numbers) and tack on CHUCK after 1.60 (the current version number) so that when you load this firmware, the version will be shown as 1.51CHUCK, and you'll know that Chuck Squelch is compiled in. We should probably make that more automagic in the future...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==DSP/BEW==&lt;br /&gt;
If you want to compile the DSPBEW version, open the DSPBEW project file instead.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DSP/BEW Firmware Version=&lt;br /&gt;
DSP BEW Firmware is mutually exclusive with the diagnostic menu. There is not enough space for both, if you load the DSP/BEW firmware, you will '''NOT''' have a diag menu.&lt;br /&gt;
&lt;br /&gt;
BEW stands for Baseband Examination Window.&lt;br /&gt;
&lt;br /&gt;
Typically, the discriminator of an FM communications receiver produces results containing audio spectrum from the &amp;quot;sub-audible&amp;quot; range (typically &amp;lt; 100 Hz) to well above frequencies able to be produced by modulating audio. These higher frequencies can be utilized to determine signal quality, since they can only contain noise (or no noise, if a sufficiently strong signal is present).&lt;br /&gt;
&lt;br /&gt;
For receivers (such as the Motorola Quantar, etc) that do not provide sufficient spectral content at these &amp;quot;noise&amp;quot; frequencies (for various reasons), The &amp;quot;DSP/BEW (Digital Signal Processor / Baseband Examination Window)&amp;quot; feature of the RTCM firmware may be utilized. &lt;br /&gt;
&lt;br /&gt;
These receivers are perfectly capable of providing valid &amp;quot;noise&amp;quot; signal with no modulation on the input of the receiver, but with strong modulation (high frequency audio and high deviation), it severely interferes with proper analysis of signal strength.&lt;br /&gt;
&lt;br /&gt;
This feature provides a means by which a &amp;quot;Window&amp;quot; of baseband (normal audio range) signal is examined by a DSP and a determination of whether or not sufficient audio is present to cause interference of proper signal strength is made. During the VERY brief periods of time when it is determined that sufficient audio is present to cause interference, the signal strength value is &amp;quot;held&amp;quot; (the last valid value previous to the time of interference) until such time that the interfering audio is no longer present.  &lt;br /&gt;
&lt;br /&gt;
The DSP/BEW feature is selectable, and '''should not''' be used for a receiver that does not need it.&lt;br /&gt;
&lt;br /&gt;
A note on the Motorola SLR5700 per VE7FET. DSP/BEW definitely makes a difference on what AllMon reports for the signal strength of received signals. It is less reactive when DSP/BEW = 1 than with it set to 0. We'll have to see what the real world trials show. It might be better to leave it off.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Chuck Squelch=&lt;br /&gt;
&amp;quot;Chuck Squelch&amp;quot; are a couple firmware changes made by Chuck Henderson, WB9UUS.&lt;br /&gt;
&lt;br /&gt;
Pre-compiled firmware versions including this option are available on [https://github.com/AllStarLink/voter/tree/master/board-firmware GitHub]. See above on how it is enabled/compiled, if you are rolling your own firmware modifications.&lt;br /&gt;
 &lt;br /&gt;
One of the changes fixes an issue with weak signals producing RSSI readings all over the place. It is caused by a 16 bit value that was overflowing (it is the RSSI change in the firmware). It results in rock-solid RSSI values being reported, even on barely or non-readable signals. '''This change will likely be rolled in to a permanent fix in a future firmware release.'''&lt;br /&gt;
&lt;br /&gt;
The other firmware change changes how the squelch responds (looks at the noise in the last two audio samples) and makes the &amp;quot;Micor squelch&amp;quot; action work better.&lt;br /&gt;
&lt;br /&gt;
You may also want to consider the following changes in /etc/asterisk/voter.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;Comment out:&lt;br /&gt;
;thresholds =&lt;br /&gt;
&lt;br /&gt;
;and set:&lt;br /&gt;
linger = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Squelch Issues==&lt;br /&gt;
*If anyone is off frequency a little bit, that will make the voice talk off worse. Double check that the repeater and the users are all on frequency.&lt;br /&gt;
*Don't use narrow bandwidth on the repeater receiver. &lt;br /&gt;
*Make sure that the discriminator audio is not rolled off even a little bit at the high end. There should not be resistors in series or capacitors to ground between the discriminator chip output pin and the voter board input, for best results.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM/VOTER LED's=&lt;br /&gt;
RX LED on the RTCM/VOTER will flash (same rate as ACT LED) if you have External CTCSS enabled, and the received signal has the wrong (or no) valid PL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Debug Options=&lt;br /&gt;
The VOTER/RTCM firmware supports some additional debugging information that can be turned on.&lt;br /&gt;
&lt;br /&gt;
From the source code, the different Debug Options are listed as:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1 - Alt/Main Host change notifications&lt;br /&gt;
2 - Ignore HWlock (GGPS only)&lt;br /&gt;
4 - GPS/PPS Failure simulation (GGPS only)&lt;br /&gt;
8 - POCSAG H/W output disable (GGPS only)&lt;br /&gt;
16 - IP TOS Class for Ubiquiti&lt;br /&gt;
32 - GPS Debug&lt;br /&gt;
64 - Fix GPS 1 second off&lt;br /&gt;
128 - Fix GPS 1 month off (WTF,O??)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Not sure what they all do, but that is what they are. Here are the most common ones used:&lt;br /&gt;
*&amp;quot;Alt/Main Host change notifications&amp;quot; shows when the connection to the Asterisk server changes state.&lt;br /&gt;
*&amp;quot;IP TOS Class for Ubiquity&amp;quot; marks the IP headers from the RTCM/VOTER '''TO''' the network with ToS C0/DSCP 48 (UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS &lt;br /&gt;
latency). Other sources show this as a Network Control TOS.) If you enable this, you also will want to have &amp;quot;utos=y&amp;quot; in your voter.conf to mark the packets from the network '''TO''' the RTCM/VOTER. We will probably change this option to mark the packets by default in a future version.&lt;br /&gt;
*&amp;quot;GPS Debug&amp;quot; will print NMEA or TSIP debug strings from the connected GPS.&lt;br /&gt;
&lt;br /&gt;
The way this works is you add together the options you want to enable.&lt;br /&gt;
&lt;br /&gt;
Want to enable GPS Debug and IP ToS, set debug to 48.&lt;br /&gt;
&lt;br /&gt;
Just want to turn on GPS Debug, set debug to 32.&lt;br /&gt;
&lt;br /&gt;
Just want ToS turned on, set debug to 16.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=TX Level Setting=&lt;br /&gt;
*Send 1kHz@3kHz on-channel in to the RX&lt;br /&gt;
*Set the RX up so it reads 3kHz deviation on the RTCM's built in console meter&lt;br /&gt;
*Now set the TX level '''pot''' to get 3kHz out of the transmitter (No PL)&lt;br /&gt;
&lt;br /&gt;
Now change the modulation from 1kHz tone to 800Hz followed by 1.8kHz and verify that the deviation level doesn't change as the tone frequency changes. '''Changing levels indicates a pre/de-emphasis issue.'''&lt;br /&gt;
&lt;br /&gt;
If using PL you have to account for that deviation, unless you filter it out with your IFR (test set). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=GPS=&lt;br /&gt;
The RTCM/VOTER will work with most GPS available. It requires either NMEA or Trimble TSIP binary data. It only receives data '''from''' the GPS (GPS TX), it does not send anything '''to''' the GPS.&lt;br /&gt;
&lt;br /&gt;
The firmware is specifically written to talk to Trimble Thunderbolt receivers using Trimble's TSIP binary data interface, however, other Trimbles GPS receivers that talk TSIP are generally compatible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==NMEA Sentences==&lt;br /&gt;
If you are using an NMEA GPS (as opposed to a Trimble using the TSIP binary interface), the RTCM/VOTER is looking for the following NMEA sentences:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$GPGGA&lt;br /&gt;
$GPGSV&lt;br /&gt;
$GPRMC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Lock==&lt;br /&gt;
The GPS led will go solid regardless of the connection LED. That '''has''' to happen or it won't connect to the Asterisk server. &lt;br /&gt;
&lt;br /&gt;
It is not unusual for it to take up to 20 mins to get a GPS lock LED (ie. using a Trimble Thunderbolt) after any reboot. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS De-sense==&lt;br /&gt;
If you are having odd loss of lock issues, consider you may have interference to your GPS antenna from strong RF nearby. A note from Jesse Lloyd:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I also had crazy problems with poor signal on my GPS when I set it up sitting in a window, and once installed at site I had the GPS antenna maybe 6 ft from the VHF antenna, and after some troubleshooting found it was getting swamped with RF and loosing lock. &lt;br /&gt;
&lt;br /&gt;
I found the debug setting of 32 useful in the RTCM, you can see a hex output of the GPS status.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Issues==&lt;br /&gt;
===Trimble Thunderbolt===&lt;br /&gt;
You may find your Trimble Thunderbolt is showing the incorrect date at the moment. It could be showing the year as 1997. This is due to the date in the Thunderbolt being reported incorrectly.&lt;br /&gt;
&lt;br /&gt;
'''This can cause some of your voting receivers to not connect, if they are used with other GPS in your system.''' If you have '''ALL''' Thunderbolts, or '''NO''' Thunderbolts, you are probably fine. If you have '''ALL''' Thunderbolts, the date/time is probably wrong, but they will ALL be wrong, so they will connect.&lt;br /&gt;
&lt;br /&gt;
GPS Time is a continuous counting time scale beginning at the January 5, 1980 to January 6, 1980 midnight. It is split into two parts: a time of week measured in seconds from midnight Sat/Sun and a week number. The time of week is transmitted in an unambiguous manner by the satellites, but only the bottom 10 bits of the week number are transmitted. This means that a receiver will see a week number count that goes up steadily until it reaches 1023 after which it will “roll over” back to zero, before steadily going up again. Such a week rollover will occur approx. every 20 years. The last week rollover occurred in 1999 and the next one will be in 2019.&lt;br /&gt;
&lt;br /&gt;
The Thunderbolt manual states:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The ThunderBolt adjusts for this week rollover by adding 1024 to any week number reported by GPS which is less than week number 936 which began on December 14, 1997. With this technique, the ThunderBolt will provide an accurate translation of GPS week number and TOW to time and date until July 30, 2017.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As such, the Trimble Thunderbolt has a firmware issue with the GPS Week rollover that manifested itself on July 30, 2017, causing the date to become incorrect.&lt;br /&gt;
&lt;br /&gt;
We have added a brute-force fix starting in RTCM/VOTER firmware &amp;gt;=1.51. It fixes the Thunderbolts, we have not done extensive testing to see how it affects other TSIP receivers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Garmin===&lt;br /&gt;
====Garmin 18x LVC Wiring Issues====&lt;br /&gt;
If you have issues with your GPS 18x LVC not talking to the RTCM/VOTER, it may not be hooked up to the RTCM correctly. &lt;br /&gt;
&lt;br /&gt;
The Garmin pin labeling is backwards to what you may think. See below. You probably need to swap pins 6 and 14.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RTCM   	                 GPS 18x LVC      &lt;br /&gt;
6 GRX 	&amp;lt;-- Rx Data 	 6 Green  &lt;br /&gt;
7 GPPS 	&amp;lt;-- Pulse Output 1 Yellow  &lt;br /&gt;
8 GND   Ground 		 3 Black  &lt;br /&gt;
8 GND   Ground 		 5 Black  &lt;br /&gt;
13 +5V 	--&amp;gt;Vin 		 2 Red  &lt;br /&gt;
14 GTX 	--&amp;gt; TX Data 	 4 White&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Log into the RTCM and do 98 and you should see something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Current Time: Sun  Apr 20, 2014  04:37:02.820&lt;br /&gt;
Last Rx Pkt System time: 04/20/2014 03:55:35.580, diff: 2487260 msec&lt;br /&gt;
Last Rx Pkt Timestamp time: 04/20/2014 03:55:32.064, diff: 3515 msec&lt;br /&gt;
Last Rx Pkt index: 160, inbounds: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Garmin and the RTCM====&lt;br /&gt;
Beware when buying newer Garmin GPS's to use with the Micro-Node RTCM.&lt;br /&gt;
&lt;br /&gt;
The RTCM expects a 5V PPS signal.&lt;br /&gt;
&lt;br /&gt;
Newer Garmin's (GPS 18X, 18X LVC, etc.) MAY NOT output 5V, and can cause issues. '''Check the Garmin datasheet'''.&lt;br /&gt;
&lt;br /&gt;
The VOTER is designed to accept both 3.3V or 5V signals, and ''should'' work fine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==No GPS/Mixed Mode==&lt;br /&gt;
You do not need a timing source to use an RTCM if you don’t want to vote. That’s called Mix Mode.&lt;br /&gt;
&lt;br /&gt;
Having the PPS Polarity set to 2 tells the RTCM you do not have a GPS. That forces the RTCM to become a mix (non-voting) client. Turn it on, save it, and restart. A simple voter.conf would look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[general]&lt;br /&gt;
port = 667&lt;br /&gt;
password = BLAH&lt;br /&gt;
&lt;br /&gt;
[1000]&lt;br /&gt;
Site1 = pswrd1,master,transmit&lt;br /&gt;
Site2 = pswrd2,transmit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mixed Client Error==&lt;br /&gt;
&amp;quot;I am getting this error in Asterisk&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WARNING[2368]: chan_voter.c:4511 voter_reader: Voter client master timing source mobile1 attempting to authenticate as mix client!!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A mixed client error means the voter.conf file is expecting an RTCM to try and connect with a GPS IP packet (ie. has '''master''' in it in voter.conf), but the RTCM isn't &lt;br /&gt;
sending a GPS IP packet. So its a mismatch between voter.conf and Option 10 in the RTCM. &lt;br /&gt;
&lt;br /&gt;
If you want to use a mix client (non-voted), make sure that receiver's configuration line in voter.conf '''does not''' have the '''master''' option set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Debug==&lt;br /&gt;
To turn on GPS Debugging, set the Debug Option Level in the RTCM/VOTER to 32.&lt;br /&gt;
&lt;br /&gt;
See [[#Debug Options]] levels for more information on how this works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ubiquity ToS=&lt;br /&gt;
See https://help.ubnt.com/hc/en-us/articles/205231750-airMAX-How-is-QoS-and-prioritization-handled-by-airMAX-&lt;br /&gt;
&lt;br /&gt;
So, if we set ToS/DSCP in the header to C0, then Ubiquity (and other gear watching ToS) ''should'' prioritize the packets. This sets the DSCP to 110 000 aka 48. UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS latency). Other sources show this as a Network Control TOS.&lt;br /&gt;
&lt;br /&gt;
There is an option in voter.conf to turn this on (utos=y). However, this only controls packets being sent from Asterisk '''TO''' the RTCM. &lt;br /&gt;
&lt;br /&gt;
If you want to tag packets from the RTCM '''TO''' Asterisk, you need to set the RTCM debug option level to 16 (see [[#Debug Options]] for how this works).&lt;br /&gt;
&lt;br /&gt;
At some point we should probably change the default behaviour of the RTCM firmware to mark the packets and use the debug setting to '''disable''' ToS. That change (if you wanted to compile your own firmware) would be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Change line 90 in IP.c&lt;br /&gt;
&lt;br /&gt;
From:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? 0xc0 : (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY))&lt;br /&gt;
&lt;br /&gt;
To:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY) : 0xc0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This changes the conditional expression from if the debug level is 16 to mark the packets with DSCP 48 to if the debug level is 16, mark the packets routine (DSCP 0).&lt;/div&gt;</summary>
		<author><name>Ve7fet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=33</id>
		<title>RTCM Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=33"/>
		<updated>2017-08-09T17:27:45Z</updated>

		<summary type="html">&lt;p&gt;Ve7fet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Micro-Node RTCM and VOTER interfaces are typically used with AllStar in voting/simulcast applications. They MAY be used for ANY repeater interface application, through the chan/voter channel driver. &lt;br /&gt;
&lt;br /&gt;
The VOTER is the original through-hole board designed by Jim Dixon for this application. It is open-source, and the relevant Gerber files and BoM to build it are available. &lt;br /&gt;
&lt;br /&gt;
The [http://www.micro-node.com/thin-m1.shtml Micro-Node Radio Thin Client Module (RTCM)] is the commercial version of the VOTER. It uses surface mount parts (SMT), but is functionally equivalent to the original VOTER. &lt;br /&gt;
&lt;br /&gt;
In general, the two terms (RTCM/VOTER) are used interchangeably, as they operate the same, and use the same firmware (mostly, see below).&lt;br /&gt;
&lt;br /&gt;
This page will highlight some of the operational concerns, quirks, bugs, and other items of interest that relate to these interfaces. Much of the information has been gleaned off the AllStar mail list, comes from personal experience, or comes from notes in the firmware source code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Firmware=&lt;br /&gt;
The firmware in the RTCM and VOTER is the same, except it is compiled for the specific dsPIC that is installed in each. As such, the firmware is specific to the VOTER or the RTCM, and is NOT interchangeable (it won't boot in the wrong device). Firmware for the RTCM is denoted by &amp;quot;smt&amp;quot; in the filename.&lt;br /&gt;
&lt;br /&gt;
The VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
&lt;br /&gt;
There are '''two parts''' to the firmware, a bootloader, and then the actual firmware file. The bootloader starts when power is applied, and allows you to talk to the dsPIC and load new firmware files over ethernet. If the bootloader is not intercepted by the loading tool, it will continue to boot the current firmware file.&lt;br /&gt;
&lt;br /&gt;
All new boards will need to have the bootloader installed first, followed by a firmware file. You '''can''' load a firmware file directly (.hex) in to the dsPIC, but then you will not have any of the bootloader remote loading features.&lt;br /&gt;
&lt;br /&gt;
The current bootloader (.cof file) is available here: https://github.com/AllStarLink/voter/tree/master/voter-bootloader (the -smt file is for the RTCM). It needs to be loaded with a PICKit programmer.&lt;br /&gt;
&lt;br /&gt;
Current firmware (.cry file) is available here: https://github.com/AllStarLink/voter/tree/master/board-firmware . They are loaded with the EBLEX C30 Programmer.&lt;br /&gt;
&lt;br /&gt;
There are multiple &amp;quot;flavors&amp;quot; of firmware available. See below for further explanation of what all the options mean.&lt;br /&gt;
&lt;br /&gt;
The DSPBEW versions have Jim's DSP/BEW feature enabled. Note that due to the size of this feature, the diagnostics menu is NOT available in this version.&lt;br /&gt;
&lt;br /&gt;
The CHUCK versions have Chuck Henderson's RSSI and Squelch modifications enabled. This is probably the version that most user's will want to use in production.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Compiling Environment==&lt;br /&gt;
If you look in the [https://github.com/AllStarLink/voter/blob/master/votersystem.pdf votersystem.pdf], you will find a procedure to modify and load the bootloader in to the dsPIC of a VOTER board. &lt;br /&gt;
&lt;br /&gt;
Unfortunately, there is an important step '''missing''' in that procedure, which is covered below.&lt;br /&gt;
&lt;br /&gt;
In addition, the old links for the MPLAB software are dead, so let's update this info and get you going.&lt;br /&gt;
&lt;br /&gt;
Currently (Feb 2017), you can get the required software from:&lt;br /&gt;
:http://www.microchip.com/development-tools/downloads-archive&lt;br /&gt;
&lt;br /&gt;
Download MPLAB IDE 32-bit Windows v8.66:&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_IDE_v8_66.zip&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/MPLAB_IDE_v8_66.zip&lt;br /&gt;
&lt;br /&gt;
Download MPLAB C Compiler for PIC24 and dsPIC DSCs v3.31 '''NOT v.3.25''':&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
&lt;br /&gt;
Optionally, install Windows Virtual PC and XP Mode. This is getting to be pretty old software, so running it under XP Mode may be a good idea, so we can keep it isolated (install it in a virtual machine). It does run fine in Windows 7.&lt;br /&gt;
&lt;br /&gt;
To setup the compile/build environment, follow these steps:&lt;br /&gt;
*Run the MPLAB IDE installer. You don't need to install the HI-TECH C Compiler at the end (click no)&lt;br /&gt;
*Run the MPLAB C Compiler installer&lt;br /&gt;
*Select Legacy Directory Name&lt;br /&gt;
*'''Select Lite Compiler'''&lt;br /&gt;
*Go to: https://github.com/AllStarLink&lt;br /&gt;
*Follow the links to: voter --&amp;gt; Clone or Download --&amp;gt; Download Zip. That will get you voter-master.zip which is a download of the whole VOTER tree from GitHub.&lt;br /&gt;
*Extract it somewhere (ie. in the XP Mode Virtual PC)&lt;br /&gt;
*Launch the MPLAB IDE&lt;br /&gt;
*Go to Configure --&amp;gt; Settings --&amp;gt; Projects and de-select one-to-one project mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bootloader==&lt;br /&gt;
If you need to load the bootloader in to a fresh board, you will need to follow these steps:&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; voter-bootloader.mcp --&amp;gt; Open (it is in the voter-bootloader folder of the GitHub source)&lt;br /&gt;
*Go to File --&amp;gt; Import --&amp;gt; voter-bootloader --&amp;gt; ENC_C30.cof --&amp;gt; Open '''This step is missing from the original procedure.'''&lt;br /&gt;
*Remove JP7 on the VOTER Board. This is necessary to allow programming by the PICKit2/PICKit3 device.&lt;br /&gt;
*Attach the PICKIT2/PICKit3 device to J1 on the VOTER board. Note that Pin 1 is closest to the power supply modules (as indicated on the board).&lt;br /&gt;
*If you have not already selected a programming device, go to Programmer --&amp;gt; Select Device and choose PICKit3 (or PICKit2, depending on what you are using).&lt;br /&gt;
*Go to Programmer --&amp;gt; Program. This will program the bootloader firmware into the PIC device on the board.&lt;br /&gt;
&lt;br /&gt;
If you want to change the default IP address from 192.168.1.11 in the bootloader:&lt;br /&gt;
*Select View --&amp;gt; Program Memory (from the top menu bar)&lt;br /&gt;
*Hit Control-F (to &amp;quot;find&amp;quot;) and search for the digits &amp;quot;00A8C0&amp;quot;.&lt;br /&gt;
*These should be found at memory address &amp;quot;03018&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;A8C0&amp;quot; at 03018 represents the hex digits C0 (192) and A8 (168) which are the first two octets of the IP address. The six digits to enter are 00 then the SECOND octet of the IP address in hex then the FIRST octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;0B01&amp;quot; at 0301A represents the hex digits 0B (11) and 01 (1) which are the second two octets of the IP address. The six digits to enter are 00 then the FOURTH octet of the IP address in hex then the THIRD octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
Once you have modified the address to your desired IP, follow the programming procedure (above).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Firmware==&lt;br /&gt;
To compile the firmware (if you want to make custom changes):&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; navigate to board-firmware and open the .mcp file for the flavor of firmware you want to compile. They are in the board-firmware folder of the GitHub source.&lt;br /&gt;
*'''NOTE''': the .mcp files with the &amp;quot;smt&amp;quot; suffix are for the RTCM (built with SMT parts). The non-smt files are for the ORIGINAL through-hole VOTER boards. The difference is that the VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
*Go to Project --&amp;gt; Build Configuration and select &amp;quot;Release&amp;quot;. This may not be necessary (I don't believe that option is used in the firmware), but it removes the compiler option of __DEBUG being passed, so theoretically it would build &amp;quot;normal&amp;quot; firmware.&lt;br /&gt;
*Go to Configure --&amp;gt; Select Device and choose the appropriate device for your board from the Device list. If you don't select the right one, the board will not boot. Select dsPIC33FJ128GP802 for the VOTER, and dsPIC33FJ128GP804 for the RTCM.&lt;br /&gt;
*Now, if you go to Project --&amp;gt; Build All it should compile everything and show you &amp;quot;Build Succeeded&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
A .cry file should be in the board-firmware folder. You can load this with the ENC Loader.&lt;br /&gt;
&lt;br /&gt;
There is also a .hex file in there that you could load with a programmer... but that would wipe the bootloader... so don't do that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Chuck Squelch==&lt;br /&gt;
If you want to enable &amp;quot;Chuck Squelch&amp;quot;, open the HardwareProfile.h and un-comment #define CHUCK. &lt;br /&gt;
&lt;br /&gt;
You may also want to go down to Line 291 in Voter.c (right click on the window, go to Properties --&amp;gt; &amp;quot;C&amp;quot; File Types --&amp;gt; Line Numbers) and tack on CHUCK after 1.60 (the current version number) so that when you load this firmware, the version will be shown as 1.51CHUCK, and you'll know that Chuck Squelch is compiled in. We should probably make that more automagic in the future...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==DSP/BEW==&lt;br /&gt;
If you want to compile the DSPBEW version, open the DSPBEW project file instead.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DSP/BEW Firmware Version=&lt;br /&gt;
DSP BEW Firmware is mutually exclusive with the diagnostic menu. There is not enough space for both, if you load the DSP/BEW firmware, you will '''NOT''' have a diag menu.&lt;br /&gt;
&lt;br /&gt;
BEW stands for Baseband Examination Window.&lt;br /&gt;
&lt;br /&gt;
Typically, the discriminator of an FM communications receiver produces results containing audio spectrum from the &amp;quot;sub-audible&amp;quot; range (typically &amp;lt; 100 Hz) to well above frequencies able to be produced by modulating audio. These higher frequencies can be utilized to determine signal quality, since they can only contain noise (or no noise, if a sufficiently strong signal is present).&lt;br /&gt;
&lt;br /&gt;
For receivers (such as the Motorola Quantar, etc) that do not provide sufficient spectral content at these &amp;quot;noise&amp;quot; frequencies (for various reasons), The &amp;quot;DSP/BEW (Digital Signal Processor / Baseband Examination Window)&amp;quot; feature of the RTCM firmware may be utilized. &lt;br /&gt;
&lt;br /&gt;
These receivers are perfectly capable of providing valid &amp;quot;noise&amp;quot; signal with no modulation on the input of the receiver, but with strong modulation (high frequency audio and high deviation), it severely interferes with proper analysis of signal strength.&lt;br /&gt;
&lt;br /&gt;
This feature provides a means by which a &amp;quot;Window&amp;quot; of baseband (normal audio range) signal is examined by a DSP and a determination of whether or not sufficient audio is present to cause interference of proper signal strength is made. During the VERY brief periods of time when it is determined that sufficient audio is present to cause interference, the signal strength value is &amp;quot;held&amp;quot; (the last valid value previous to the time of interference) until such time that the interfering audio is no longer present.  &lt;br /&gt;
&lt;br /&gt;
The DSP/BEW feature is selectable, and '''should not''' be used for a receiver that does not need it.&lt;br /&gt;
&lt;br /&gt;
A note on the Motorola SLR5700 per VE7FET. DSP/BEW definitely makes a difference on what AllMon reports for the signal strength of received signals. It is less reactive when DSP/BEW = 1 than with it set to 0. We'll have to see what the real world trials show. It might be better to leave it off.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Chuck Squelch=&lt;br /&gt;
&amp;quot;Chuck Squelch&amp;quot; are a couple firmware changes made by Chuck Henderson, WB9UUS.&lt;br /&gt;
&lt;br /&gt;
Pre-compiled firmware versions including this option are available on [https://github.com/AllStarLink/voter/tree/master/board-firmware GitHub]. See above on how it is enabled/compiled, if you are rolling your own firmware modifications.&lt;br /&gt;
 &lt;br /&gt;
One of the changes fixes an issue with weak signals producing RSSI readings all over the place. It is caused by a 16 bit value that was overflowing (it is the RSSI change in the firmware). It results in rock-solid RSSI values being reported, even on barely or non-readable signals. '''This change will likely be rolled in to a permanent fix in a future firmware release.'''&lt;br /&gt;
&lt;br /&gt;
The other firmware change changes how the squelch responds (looks at the noise in the last two audio samples) and makes the &amp;quot;Micor squelch&amp;quot; action work better.&lt;br /&gt;
&lt;br /&gt;
You may also want to consider the following changes in /etc/asterisk/voter.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;Comment out:&lt;br /&gt;
;thresholds =&lt;br /&gt;
&lt;br /&gt;
;and set:&lt;br /&gt;
linger = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Squelch Issues==&lt;br /&gt;
*If anyone is off frequency a little bit, that will make the voice talk off worse. Double check that the repeater and the users are all on frequency.&lt;br /&gt;
*Don't use narrow bandwidth on the repeater receiver. &lt;br /&gt;
*Make sure that the discriminator audio is not rolled off even a little bit at the high end. There should not be resistors in series or capacitors to ground between the discriminator chip output pin and the voter board input, for best results.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM/VOTER LED's=&lt;br /&gt;
RX LED on the RTCM/VOTER will flash (same rate as ACT LED) if you have External CTCSS enabled, and the received signal has the wrong (or no) valid PL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span id=&amp;quot;Debug Options&amp;quot;&amp;gt;Debug Options&amp;lt;/span&amp;gt;=&lt;br /&gt;
The VOTER/RTCM firmware supports some additional debugging information that can be turned on.&lt;br /&gt;
&lt;br /&gt;
From the source code, the different Debug Options are listed as:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1 - Alt/Main Host change notifications&lt;br /&gt;
2 - Ignore HWlock (GGPS only)&lt;br /&gt;
4 - GPS/PPS Failure simulation (GGPS only)&lt;br /&gt;
8 - POCSAG H/W output disable (GGPS only)&lt;br /&gt;
16 - IP TOS Class for Ubiquiti&lt;br /&gt;
32 - GPS Debug&lt;br /&gt;
64 - Fix GPS 1 second off&lt;br /&gt;
128 - Fix GPS 1 month off (WTF,O??)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Not sure what they all do, but that is what they are. Here are the most common ones used:&lt;br /&gt;
*&amp;quot;Alt/Main Host change notifications&amp;quot; shows when the connection to the Asterisk server changes state.&lt;br /&gt;
*&amp;quot;IP TOS Class for Ubiquity&amp;quot; marks the IP headers from the RTCM/VOTER '''TO''' the network with ToS C0/DSCP 48 (UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS &lt;br /&gt;
latency). Other sources show this as a Network Control TOS.) If you enable this, you also will want to have &amp;quot;utos=y&amp;quot; in your voter.conf to mark the packets from the network '''TO''' the RTCM/VOTER. We will probably change this option to mark the packets by default in a future version.&lt;br /&gt;
*&amp;quot;GPS Debug&amp;quot; will print NMEA or TSIP debug strings from the connected GPS.&lt;br /&gt;
&lt;br /&gt;
The way this works is you add together the options you want to enable.&lt;br /&gt;
&lt;br /&gt;
Want to enable GPS Debug and IP ToS, set debug to 48.&lt;br /&gt;
&lt;br /&gt;
Just want to turn on GPS Debug, set debug to 32.&lt;br /&gt;
&lt;br /&gt;
Just want ToS turned on, set debug to 16.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=TX Level Setting=&lt;br /&gt;
*Send 1kHz@3kHz on-channel in to the RX&lt;br /&gt;
*Set the RX up so it reads 3kHz deviation on the RTCM's built in console meter&lt;br /&gt;
*Now set the TX level '''pot''' to get 3kHz out of the transmitter (No PL)&lt;br /&gt;
&lt;br /&gt;
Now change the modulation from 1kHz tone to 800Hz followed by 1.8kHz and verify that the deviation level doesn't change as the tone frequency changes. '''Changing levels indicates a pre/de-emphasis issue.'''&lt;br /&gt;
&lt;br /&gt;
If using PL you have to account for that deviation, unless you filter it out with your IFR (test set). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=GPS=&lt;br /&gt;
The RTCM/VOTER will work with most GPS available. It requires either NMEA or Trimble TSIP binary data. It only receives data '''from''' the GPS (GPS TX), it does not send anything '''to''' the GPS.&lt;br /&gt;
&lt;br /&gt;
The firmware is specifically written to talk to Trimble Thunderbolt receivers using Trimble's TSIP binary data interface, however, other Trimbles GPS receivers that talk TSIP are generally compatible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==NMEA Sentences==&lt;br /&gt;
If you are using an NMEA GPS (as opposed to a Trimble using the TSIP binary interface), the RTCM/VOTER is looking for the following NMEA sentences:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$GPGGA&lt;br /&gt;
$GPGSV&lt;br /&gt;
$GPRMC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Lock==&lt;br /&gt;
The GPS led will go solid regardless of the connection LED. That '''has''' to happen or it won't connect to the Asterisk server. &lt;br /&gt;
&lt;br /&gt;
It is not unusual for it to take up to 20 mins to get a GPS lock LED (ie. using a Trimble Thunderbolt) after any reboot. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS De-sense==&lt;br /&gt;
If you are having odd loss of lock issues, consider you may have interference to your GPS antenna from strong RF nearby. A note from Jesse Lloyd:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I also had crazy problems with poor signal on my GPS when I set it up sitting in a window, and once installed at site I had the GPS antenna maybe 6 ft from the VHF antenna, and after some troubleshooting found it was getting swamped with RF and loosing lock. &lt;br /&gt;
&lt;br /&gt;
I found the debug setting of 32 useful in the RTCM, you can see a hex output of the GPS status.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Issues==&lt;br /&gt;
===Trimble Thunderbolt===&lt;br /&gt;
You may find your Trimble Thunderbolt is showing the incorrect date at the moment. It could be showing the year as 1997. This is due to the date in the Thunderbolt being reported incorrectly.&lt;br /&gt;
&lt;br /&gt;
'''This can cause some of your voting receivers to not connect, if they are used with other GPS in your system.''' If you have '''ALL''' Thunderbolts, or '''NO''' Thunderbolts, you are probably fine. If you have '''ALL''' Thunderbolts, the date/time is probably wrong, but they will ALL be wrong, so they will connect.&lt;br /&gt;
&lt;br /&gt;
GPS Time is a continuous counting time scale beginning at the January 5, 1980 to January 6, 1980 midnight. It is split into two parts: a time of week measured in seconds from midnight Sat/Sun and a week number. The time of week is transmitted in an unambiguous manner by the satellites, but only the bottom 10 bits of the week number are transmitted. This means that a receiver will see a week number count that goes up steadily until it reaches 1023 after which it will “roll over” back to zero, before steadily going up again. Such a week rollover will occur approx. every 20 years. The last week rollover occurred in 1999 and the next one will be in 2019.&lt;br /&gt;
&lt;br /&gt;
The Thunderbolt manual states:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The ThunderBolt adjusts for this week rollover by adding 1024 to any week number reported by GPS which is less than week number 936 which began on December 14, 1997. With this technique, the ThunderBolt will provide an accurate translation of GPS week number and TOW to time and date until July 30, 2017.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As such, the Trimble Thunderbolt has a firmware issue with the GPS Week rollover that manifested itself on July 30, 2017, causing the date to become incorrect.&lt;br /&gt;
&lt;br /&gt;
We have added a brute-force fix starting in RTCM/VOTER firmware &amp;gt;=1.51. It fixes the Thunderbolts, we have not done extensive testing to see how it affects other TSIP receivers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Garmin===&lt;br /&gt;
====Garmin 18x LVC Wiring Issues====&lt;br /&gt;
If you have issues with your GPS 18x LVC not talking to the RTCM/VOTER, it may not be hooked up to the RTCM correctly. &lt;br /&gt;
&lt;br /&gt;
The Garmin pin labeling is backwards to what you may think. See below. You probably need to swap pins 6 and 14.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RTCM   	                 GPS 18x LVC      &lt;br /&gt;
6 GRX 	&amp;lt;-- Rx Data 	 6 Green  &lt;br /&gt;
7 GPPS 	&amp;lt;-- Pulse Output 1 Yellow  &lt;br /&gt;
8 GND   Ground 		 3 Black  &lt;br /&gt;
8 GND   Ground 		 5 Black  &lt;br /&gt;
13 +5V 	--&amp;gt;Vin 		 2 Red  &lt;br /&gt;
14 GTX 	--&amp;gt; TX Data 	 4 White&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Log into the RTCM and do 98 and you should see something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Current Time: Sun  Apr 20, 2014  04:37:02.820&lt;br /&gt;
Last Rx Pkt System time: 04/20/2014 03:55:35.580, diff: 2487260 msec&lt;br /&gt;
Last Rx Pkt Timestamp time: 04/20/2014 03:55:32.064, diff: 3515 msec&lt;br /&gt;
Last Rx Pkt index: 160, inbounds: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Garmin and the RTCM====&lt;br /&gt;
Beware when buying newer Garmin GPS's to use with the Micro-Node RTCM.&lt;br /&gt;
&lt;br /&gt;
The RTCM expects a 5V PPS signal.&lt;br /&gt;
&lt;br /&gt;
Newer Garmin's (GPS 18X, 18X LVC, etc.) MAY NOT output 5V, and can cause issues. '''Check the Garmin datasheet'''.&lt;br /&gt;
&lt;br /&gt;
The VOTER is designed to accept both 3.3V or 5V signals, and ''should'' work fine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==No GPS/Mixed Mode==&lt;br /&gt;
You do not need a timing source to use an RTCM if you don’t want to vote. That’s called Mix Mode.&lt;br /&gt;
&lt;br /&gt;
Having the PPS Polarity set to 2 tells the RTCM you do not have a GPS. That forces the RTCM to become a mix (non-voting) client. Turn it on, save it, and restart. A simple voter.conf would look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[general]&lt;br /&gt;
port = 667&lt;br /&gt;
password = BLAH&lt;br /&gt;
&lt;br /&gt;
[1000]&lt;br /&gt;
Site1 = pswrd1,master,transmit&lt;br /&gt;
Site2 = pswrd2,transmit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mixed Client Error==&lt;br /&gt;
&amp;quot;I am getting this error in Asterisk&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WARNING[2368]: chan_voter.c:4511 voter_reader: Voter client master timing source mobile1 attempting to authenticate as mix client!!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A mixed client error means the voter.conf file is expecting an RTCM to try and connect with a GPS IP packet (ie. has '''master''' in it in voter.conf), but the RTCM isn't &lt;br /&gt;
sending a GPS IP packet. So its a mismatch between voter.conf and Option 10 in the RTCM. &lt;br /&gt;
&lt;br /&gt;
If you want to use a mix client (non-voted), make sure that receiver's configuration line in voter.conf '''does not''' have the '''master''' option set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Debug==&lt;br /&gt;
To turn on GPS Debugging, set the Debug Option Level in the RTCM/VOTER to 32.&lt;br /&gt;
&lt;br /&gt;
See [[#Debug Option]] levels for more information on how this works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ubiquity ToS=&lt;br /&gt;
See https://help.ubnt.com/hc/en-us/articles/205231750-airMAX-How-is-QoS-and-prioritization-handled-by-airMAX-&lt;br /&gt;
&lt;br /&gt;
So, if we set ToS/DSCP in the header to C0, then Ubiquity (and other gear watching ToS) ''should'' prioritize the packets. This sets the DSCP to 110 000 aka 48. UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS latency). Other sources show this as a Network Control TOS.&lt;br /&gt;
&lt;br /&gt;
There is an option in voter.conf to turn this on (utos=y). However, this only controls packets being sent from Asterisk '''TO''' the RTCM. &lt;br /&gt;
&lt;br /&gt;
If you want to tag packets from the RTCM '''TO''' Asterisk, you need to set the RTCM debug option level to 16 (see [[#Debug Options]] for how this works).&lt;br /&gt;
&lt;br /&gt;
At some point we should probably change the default behaviour of the RTCM firmware to mark the packets and use the debug setting to '''disable''' ToS. That change (if you wanted to compile your own firmware) would be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Change line 90 in IP.c&lt;br /&gt;
&lt;br /&gt;
From:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? 0xc0 : (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY))&lt;br /&gt;
&lt;br /&gt;
To:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY) : 0xc0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This changes the conditional expression from if the debug level is 16 to mark the packets with DSCP 48 to if the debug level is 16, mark the packets routine (DSCP 0).&lt;/div&gt;</summary>
		<author><name>Ve7fet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=32</id>
		<title>RTCM Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=32"/>
		<updated>2017-08-09T17:22:59Z</updated>

		<summary type="html">&lt;p&gt;Ve7fet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Micro-Node RTCM and VOTER interfaces are typically used with AllStar in voting/simulcast applications. They MAY be used for ANY repeater interface application, through the chan/voter channel driver. &lt;br /&gt;
&lt;br /&gt;
The VOTER is the original through-hole board designed by Jim Dixon for this application. It is open-source, and the relevant Gerber files and BoM to build it are available. &lt;br /&gt;
&lt;br /&gt;
The [http://www.micro-node.com/thin-m1.shtml Micro-Node Radio Thin Client Module (RTCM)] is the commercial version of the VOTER. It uses surface mount parts (SMT), but is functionally equivalent to the original VOTER. &lt;br /&gt;
&lt;br /&gt;
In general, the two terms (RTCM/VOTER) are used interchangeably, as they operate the same, and use the same firmware (mostly, see below).&lt;br /&gt;
&lt;br /&gt;
This page will highlight some of the operational concerns, quirks, bugs, and other items of interest that relate to these interfaces. Much of the information has been gleaned off the AllStar mail list, comes from personal experience, or comes from notes in the firmware source code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Firmware=&lt;br /&gt;
The firmware in the RTCM and VOTER is the same, except it is compiled for the specific dsPIC that is installed in each. As such, the firmware is specific to the VOTER or the RTCM, and is NOT interchangeable (it won't boot in the wrong device). Firmware for the RTCM is denoted by &amp;quot;smt&amp;quot; in the filename.&lt;br /&gt;
&lt;br /&gt;
The VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
&lt;br /&gt;
There are '''two parts''' to the firmware, a bootloader, and then the actual firmware file. The bootloader starts when power is applied, and allows you to talk to the dsPIC and load new firmware files over ethernet. If the bootloader is not intercepted by the loading tool, it will continue to boot the current firmware file.&lt;br /&gt;
&lt;br /&gt;
All new boards will need to have the bootloader installed first, followed by a firmware file. You '''can''' load a firmware file directly (.hex) in to the dsPIC, but then you will not have any of the bootloader remote loading features.&lt;br /&gt;
&lt;br /&gt;
The current bootloader (.cof file) is available here: https://github.com/AllStarLink/voter/tree/master/voter-bootloader (the -smt file is for the RTCM). It needs to be loaded with a PICKit programmer.&lt;br /&gt;
&lt;br /&gt;
Current firmware (.cry file) is available here: https://github.com/AllStarLink/voter/tree/master/board-firmware . They are loaded with the EBLEX C30 Programmer.&lt;br /&gt;
&lt;br /&gt;
There are multiple &amp;quot;flavors&amp;quot; of firmware available. See below for further explanation of what all the options mean.&lt;br /&gt;
&lt;br /&gt;
The DSPBEW versions have Jim's DSP/BEW feature enabled. Note that due to the size of this feature, the diagnostics menu is NOT available in this version.&lt;br /&gt;
&lt;br /&gt;
The CHUCK versions have Chuck Henderson's RSSI and Squelch modifications enabled. This is probably the version that most user's will want to use in production.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Compiling Environment==&lt;br /&gt;
If you look in the [https://github.com/AllStarLink/voter/blob/master/votersystem.pdf votersystem.pdf], you will find a procedure to modify and load the bootloader in to the dsPIC of a VOTER board. &lt;br /&gt;
&lt;br /&gt;
Unfortunately, there is an important step '''missing''' in that procedure, which is covered below.&lt;br /&gt;
&lt;br /&gt;
In addition, the old links for the MPLAB software are dead, so let's update this info and get you going.&lt;br /&gt;
&lt;br /&gt;
Currently (Feb 2017), you can get the required software from:&lt;br /&gt;
:http://www.microchip.com/development-tools/downloads-archive&lt;br /&gt;
&lt;br /&gt;
Download MPLAB IDE 32-bit Windows v8.66:&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_IDE_v8_66.zip&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/MPLAB_IDE_v8_66.zip&lt;br /&gt;
&lt;br /&gt;
Download MPLAB C Compiler for PIC24 and dsPIC DSCs v3.31 '''NOT v.3.25''':&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
&lt;br /&gt;
Optionally, install Windows Virtual PC and XP Mode. This is getting to be pretty old software, so running it under XP Mode may be a good idea, so we can keep it isolated (install it in a virtual machine). It does run fine in Windows 7.&lt;br /&gt;
&lt;br /&gt;
To setup the compile/build environment, follow these steps:&lt;br /&gt;
*Run the MPLAB IDE installer. You don't need to install the HI-TECH C Compiler at the end (click no)&lt;br /&gt;
*Run the MPLAB C Compiler installer&lt;br /&gt;
*Select Legacy Directory Name&lt;br /&gt;
*'''Select Lite Compiler'''&lt;br /&gt;
*Go to: https://github.com/AllStarLink&lt;br /&gt;
*Follow the links to: voter --&amp;gt; Clone or Download --&amp;gt; Download Zip. That will get you voter-master.zip which is a download of the whole VOTER tree from GitHub.&lt;br /&gt;
*Extract it somewhere (ie. in the XP Mode Virtual PC)&lt;br /&gt;
*Launch the MPLAB IDE&lt;br /&gt;
*Go to Configure --&amp;gt; Settings --&amp;gt; Projects and de-select one-to-one project mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bootloader==&lt;br /&gt;
If you need to load the bootloader in to a fresh board, you will need to follow these steps:&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; voter-bootloader.mcp --&amp;gt; Open (it is in the voter-bootloader folder of the GitHub source)&lt;br /&gt;
*Go to File --&amp;gt; Import --&amp;gt; voter-bootloader --&amp;gt; ENC_C30.cof --&amp;gt; Open '''This step is missing from the original procedure.'''&lt;br /&gt;
*Remove JP7 on the VOTER Board. This is necessary to allow programming by the PICKit2/PICKit3 device.&lt;br /&gt;
*Attach the PICKIT2/PICKit3 device to J1 on the VOTER board. Note that Pin 1 is closest to the power supply modules (as indicated on the board).&lt;br /&gt;
*If you have not already selected a programming device, go to Programmer --&amp;gt; Select Device and choose PICKit3 (or PICKit2, depending on what you are using).&lt;br /&gt;
*Go to Programmer --&amp;gt; Program. This will program the bootloader firmware into the PIC device on the board.&lt;br /&gt;
&lt;br /&gt;
If you want to change the default IP address from 192.168.1.11 in the bootloader:&lt;br /&gt;
*Select View --&amp;gt; Program Memory (from the top menu bar)&lt;br /&gt;
*Hit Control-F (to &amp;quot;find&amp;quot;) and search for the digits &amp;quot;00A8C0&amp;quot;.&lt;br /&gt;
*These should be found at memory address &amp;quot;03018&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;A8C0&amp;quot; at 03018 represents the hex digits C0 (192) and A8 (168) which are the first two octets of the IP address. The six digits to enter are 00 then the SECOND octet of the IP address in hex then the FIRST octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;0B01&amp;quot; at 0301A represents the hex digits 0B (11) and 01 (1) which are the second two octets of the IP address. The six digits to enter are 00 then the FOURTH octet of the IP address in hex then the THIRD octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
Once you have modified the address to your desired IP, follow the programming procedure (above).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Firmware==&lt;br /&gt;
To compile the firmware (if you want to make custom changes):&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; navigate to board-firmware and open the .mcp file for the flavor of firmware you want to compile. They are in the board-firmware folder of the GitHub source.&lt;br /&gt;
*'''NOTE''': the .mcp files with the &amp;quot;smt&amp;quot; suffix are for the RTCM (built with SMT parts). The non-smt files are for the ORIGINAL through-hole VOTER boards. The difference is that the VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
*Go to Project --&amp;gt; Build Configuration and select &amp;quot;Release&amp;quot;. This may not be necessary (I don't believe that option is used in the firmware), but it removes the compiler option of __DEBUG being passed, so theoretically it would build &amp;quot;normal&amp;quot; firmware.&lt;br /&gt;
*Go to Configure --&amp;gt; Select Device and choose the appropriate device for your board from the Device list. If you don't select the right one, the board will not boot. Select dsPIC33FJ128GP802 for the VOTER, and dsPIC33FJ128GP804 for the RTCM.&lt;br /&gt;
*Now, if you go to Project --&amp;gt; Build All it should compile everything and show you &amp;quot;Build Succeeded&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
A .cry file should be in the board-firmware folder. You can load this with the ENC Loader.&lt;br /&gt;
&lt;br /&gt;
There is also a .hex file in there that you could load with a programmer... but that would wipe the bootloader... so don't do that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Chuck Squelch==&lt;br /&gt;
If you want to enable &amp;quot;Chuck Squelch&amp;quot;, open the HardwareProfile.h and un-comment #define CHUCK. &lt;br /&gt;
&lt;br /&gt;
You may also want to go down to Line 291 in Voter.c (right click on the window, go to Properties --&amp;gt; &amp;quot;C&amp;quot; File Types --&amp;gt; Line Numbers) and tack on CHUCK after 1.60 (the current version number) so that when you load this firmware, the version will be shown as 1.51CHUCK, and you'll know that Chuck Squelch is compiled in. We should probably make that more automagic in the future...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==DSP/BEW==&lt;br /&gt;
If you want to compile the DSPBEW version, open the DSPBEW project file instead.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DSP/BEW Firmware Version=&lt;br /&gt;
DSP BEW Firmware is mutually exclusive with the diagnostic menu. There is not enough space for both, if you load the DSP/BEW firmware, you will '''NOT''' have a diag menu.&lt;br /&gt;
&lt;br /&gt;
BEW stands for Baseband Examination Window.&lt;br /&gt;
&lt;br /&gt;
Typically, the discriminator of an FM communications receiver produces results containing audio spectrum from the &amp;quot;sub-audible&amp;quot; range (typically &amp;lt; 100 Hz) to well above frequencies able to be produced by modulating audio. These higher frequencies can be utilized to determine signal quality, since they can only contain noise (or no noise, if a sufficiently strong signal is present).&lt;br /&gt;
&lt;br /&gt;
For receivers (such as the Motorola Quantar, etc) that do not provide sufficient spectral content at these &amp;quot;noise&amp;quot; frequencies (for various reasons), The &amp;quot;DSP/BEW (Digital Signal Processor / Baseband Examination Window)&amp;quot; feature of the RTCM firmware may be utilized. &lt;br /&gt;
&lt;br /&gt;
These receivers are perfectly capable of providing valid &amp;quot;noise&amp;quot; signal with no modulation on the input of the receiver, but with strong modulation (high frequency audio and high deviation), it severely interferes with proper analysis of signal strength.&lt;br /&gt;
&lt;br /&gt;
This feature provides a means by which a &amp;quot;Window&amp;quot; of baseband (normal audio range) signal is examined by a DSP and a determination of whether or not sufficient audio is present to cause interference of proper signal strength is made. During the VERY brief periods of time when it is determined that sufficient audio is present to cause interference, the signal strength value is &amp;quot;held&amp;quot; (the last valid value previous to the time of interference) until such time that the interfering audio is no longer present.  &lt;br /&gt;
&lt;br /&gt;
The DSP/BEW feature is selectable, and '''should not''' be used for a receiver that does not need it.&lt;br /&gt;
&lt;br /&gt;
A note on the Motorola SLR5700 per VE7FET. DSP/BEW definitely makes a difference on what AllMon reports for the signal strength of received signals. It is less reactive when DSP/BEW = 1 than with it set to 0. We'll have to see what the real world trials show. It might be better to leave it off.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Chuck Squelch=&lt;br /&gt;
&amp;quot;Chuck Squelch&amp;quot; are a couple firmware changes made by Chuck Henderson, WB9UUS.&lt;br /&gt;
&lt;br /&gt;
Pre-compiled firmware versions including this option are available on [https://github.com/AllStarLink/voter/tree/master/board-firmware GitHub]. See above on how it is enabled/compiled, if you are rolling your own firmware modifications.&lt;br /&gt;
 &lt;br /&gt;
One of the changes fixes an issue with weak signals producing RSSI readings all over the place. It is caused by a 16 bit value that was overflowing (it is the RSSI change in the firmware). It results in rock-solid RSSI values being reported, even on barely or non-readable signals. '''This change will likely be rolled in to a permanent fix in a future firmware release.'''&lt;br /&gt;
&lt;br /&gt;
The other firmware change changes how the squelch responds (looks at the noise in the last two audio samples) and makes the &amp;quot;Micor squelch&amp;quot; action work better.&lt;br /&gt;
&lt;br /&gt;
You may also want to consider the following changes in /etc/asterisk/voter.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;Comment out:&lt;br /&gt;
;thresholds =&lt;br /&gt;
&lt;br /&gt;
;and set:&lt;br /&gt;
linger = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Squelch Issues==&lt;br /&gt;
*If anyone is off frequency a little bit, that will make the voice talk off worse. Double check that the repeater and the users are all on frequency.&lt;br /&gt;
*Don't use narrow bandwidth on the repeater receiver. &lt;br /&gt;
*Make sure that the discriminator audio is not rolled off even a little bit at the high end. There should not be resistors in series or capacitors to ground between the discriminator chip output pin and the voter board input, for best results.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM/VOTER LED's=&lt;br /&gt;
RX LED on the RTCM/VOTER will flash (same rate as ACT LED) if you have External CTCSS enabled, and the received signal has the wrong (or no) valid PL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Debug Options=&lt;br /&gt;
The VOTER/RTCM firmware supports some additional debugging information that can be turned on.&lt;br /&gt;
&lt;br /&gt;
From the source code, the different Debug Options are listed as:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1 - Alt/Main Host change notifications&lt;br /&gt;
2 - Ignore HWlock (GGPS only)&lt;br /&gt;
4 - GPS/PPS Failure simulation (GGPS only)&lt;br /&gt;
8 - POCSAG H/W output disable (GGPS only)&lt;br /&gt;
16 - IP TOS Class for Ubiquiti&lt;br /&gt;
32 - GPS Debug&lt;br /&gt;
64 - Fix GPS 1 second off&lt;br /&gt;
128 - Fix GPS 1 month off (WTF,O??)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Not sure what they all do, but that is what they are. Here are the most common ones used:&lt;br /&gt;
*&amp;quot;Alt/Main Host change notifications&amp;quot; shows when the connection to the Asterisk server changes state.&lt;br /&gt;
*&amp;quot;IP TOS Class for Ubiquity&amp;quot; marks the IP headers from the RTCM/VOTER '''TO''' the network with ToS C0/DSCP 48 (UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS &lt;br /&gt;
latency). Other sources show this as a Network Control TOS.) If you enable this, you also will want to have &amp;quot;utos=y&amp;quot; in your voter.conf to mark the packets from the network '''TO''' the RTCM/VOTER. We will probably change this option to mark the packets by default in a future version.&lt;br /&gt;
*&amp;quot;GPS Debug&amp;quot; will print NMEA or TSIP debug strings from the connected GPS.&lt;br /&gt;
&lt;br /&gt;
The way this works is you add together the options you want to enable.&lt;br /&gt;
&lt;br /&gt;
Want to enable GPS Debug and IP ToS, set debug to 48.&lt;br /&gt;
&lt;br /&gt;
Just want to turn on GPS Debug, set debug to 32.&lt;br /&gt;
&lt;br /&gt;
Just want ToS turned on, set debug to 16.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=TX Level Setting=&lt;br /&gt;
*Send 1kHz@3kHz on-channel in to the RX&lt;br /&gt;
*Set the RX up so it reads 3kHz deviation on the RTCM's built in console meter&lt;br /&gt;
*Now set the TX level '''pot''' to get 3kHz out of the transmitter (No PL)&lt;br /&gt;
&lt;br /&gt;
Now change the modulation from 1kHz tone to 800Hz followed by 1.8kHz and verify that the deviation level doesn't change as the tone frequency changes. '''Changing levels indicates a pre/de-emphasis issue.'''&lt;br /&gt;
&lt;br /&gt;
If using PL you have to account for that deviation, unless you filter it out with your IFR (test set). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=GPS=&lt;br /&gt;
The RTCM/VOTER will work with most GPS available. It requires either NMEA or Trimble TSIP binary data. It only receives data '''from''' the GPS (GPS TX), it does not send anything '''to''' the GPS.&lt;br /&gt;
&lt;br /&gt;
The firmware is specifically written to talk to Trimble Thunderbolt receivers using Trimble's TSIP binary data interface, however, other Trimbles GPS receivers that talk TSIP are generally compatible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==NMEA Sentences==&lt;br /&gt;
If you are using an NMEA GPS (as opposed to a Trimble using the TSIP binary interface), the RTCM/VOTER is looking for the following NMEA sentences:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$GPGGA&lt;br /&gt;
$GPGSV&lt;br /&gt;
$GPRMC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Lock==&lt;br /&gt;
The GPS led will go solid regardless of the connection LED. That '''has''' to happen or it won't connect to the Asterisk server. &lt;br /&gt;
&lt;br /&gt;
It is not unusual for it to take up to 20 mins to get a GPS lock LED (ie. using a Trimble Thunderbolt) after any reboot. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS De-sense==&lt;br /&gt;
If you are having odd loss of lock issues, consider you may have interference to your GPS antenna from strong RF nearby. A note from Jesse Lloyd:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I also had crazy problems with poor signal on my GPS when I set it up sitting in a window, and once installed at site I had the GPS antenna maybe 6 ft from the VHF antenna, and after some troubleshooting found it was getting swamped with RF and loosing lock. &lt;br /&gt;
&lt;br /&gt;
I found the debug setting of 32 useful in the RTCM, you can see a hex output of the GPS status.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Issues==&lt;br /&gt;
===Trimble Thunderbolt===&lt;br /&gt;
You may find your Trimble Thunderbolt is showing the incorrect date at the moment. It could be showing the year as 1997. This is due to the date in the Thunderbolt being reported incorrectly.&lt;br /&gt;
&lt;br /&gt;
'''This can cause some of your voting receivers to not connect, if they are used with other GPS in your system.''' If you have '''ALL''' Thunderbolts, or '''NO''' Thunderbolts, you are probably fine. If you have '''ALL''' Thunderbolts, the date/time is probably wrong, but they will ALL be wrong, so they will connect.&lt;br /&gt;
&lt;br /&gt;
GPS Time is a continuous counting time scale beginning at the January 5, 1980 to January 6, 1980 midnight. It is split into two parts: a time of week measured in seconds from midnight Sat/Sun and a week number. The time of week is transmitted in an unambiguous manner by the satellites, but only the bottom 10 bits of the week number are transmitted. This means that a receiver will see a week number count that goes up steadily until it reaches 1023 after which it will “roll over” back to zero, before steadily going up again. Such a week rollover will occur approx. every 20 years. The last week rollover occurred in 1999 and the next one will be in 2019.&lt;br /&gt;
&lt;br /&gt;
The Thunderbolt manual states:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
The ThunderBolt adjusts for this week rollover by adding 1024 to any week number reported by GPS which is less than week number 936 which began on December 14, 1997. With this technique, the ThunderBolt will provide an accurate translation of GPS week number and TOW to time and date until July 30, 2017.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As such, the Trimble Thunderbolt has a firmware issue with the GPS Week rollover that manifested itself on July 30, 2017, causing the date to become incorrect.&lt;br /&gt;
&lt;br /&gt;
We have added a brute-force fix starting in RTCM/VOTER firmware &amp;gt;=1.51. It fixes the Thunderbolts, we have not done extensive testing to see how it affects other TSIP receivers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Garmin===&lt;br /&gt;
====Garmin 18x LVC Wiring Issues====&lt;br /&gt;
If you have issues with your GPS 18x LVC not talking to the RTCM/VOTER, it may not be hooked up to the RTCM correctly. &lt;br /&gt;
&lt;br /&gt;
The Garmin pin labeling is backwards to what you may think. See below. You probably need to swap pins 6 and 14.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RTCM   	                 GPS 18x LVC      &lt;br /&gt;
6 GRX 	&amp;lt;-- Rx Data 	 6 Green  &lt;br /&gt;
7 GPPS 	&amp;lt;-- Pulse Output 1 Yellow  &lt;br /&gt;
8 GND   Ground 		 3 Black  &lt;br /&gt;
8 GND   Ground 		 5 Black  &lt;br /&gt;
13 +5V 	--&amp;gt;Vin 		 2 Red  &lt;br /&gt;
14 GTX 	--&amp;gt; TX Data 	 4 White&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Log into the RTCM and do 98 and you should see something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Current Time: Sun  Apr 20, 2014  04:37:02.820&lt;br /&gt;
Last Rx Pkt System time: 04/20/2014 03:55:35.580, diff: 2487260 msec&lt;br /&gt;
Last Rx Pkt Timestamp time: 04/20/2014 03:55:32.064, diff: 3515 msec&lt;br /&gt;
Last Rx Pkt index: 160, inbounds: 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Garmin and the RTCM====&lt;br /&gt;
Beware when buying newer Garmin GPS's to use with the Micro-Node RTCM.&lt;br /&gt;
&lt;br /&gt;
The RTCM expects a 5V PPS signal.&lt;br /&gt;
&lt;br /&gt;
Newer Garmin's (GPS 18X, 18X LVC, etc.) MAY NOT output 5V, and can cause issues. '''Check the Garmin datasheet'''.&lt;br /&gt;
&lt;br /&gt;
The VOTER is designed to accept both 3.3V or 5V signals, and ''should'' work fine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==No GPS/Mixed Mode==&lt;br /&gt;
You do not need a timing source to use an RTCM if you don’t want to vote. That’s called Mix Mode.&lt;br /&gt;
&lt;br /&gt;
Having the PPS Polarity set to 2 tells the RTCM you do not have a GPS. That forces the RTCM to become a mix (non-voting) client. Turn it on, save it, and restart. A simple voter.conf would look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[general]&lt;br /&gt;
port = 667&lt;br /&gt;
password = BLAH&lt;br /&gt;
&lt;br /&gt;
[1000]&lt;br /&gt;
Site1 = pswrd1,master,transmit&lt;br /&gt;
Site2 = pswrd2,transmit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mixed Client Error==&lt;br /&gt;
&amp;quot;I am getting this error in Asterisk&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WARNING[2368]: chan_voter.c:4511 voter_reader: Voter client master timing source mobile1 attempting to authenticate as mix client!!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A mixed client error means the voter.conf file is expecting an RTCM to try and connect with a GPS IP packet (ie. has '''master''' in it in voter.conf), but the RTCM isn't &lt;br /&gt;
sending a GPS IP packet. So its a mismatch between voter.conf and Option 10 in the RTCM. &lt;br /&gt;
&lt;br /&gt;
If you want to use a mix client (non-voted), make sure that receiver's configuration line in voter.conf '''does not''' have the '''master''' option set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS Debug==&lt;br /&gt;
To turn on GPS Debugging, set the Debug Option Level in the RTCM/VOTER to 32.&lt;br /&gt;
&lt;br /&gt;
See [[#Debug Option]] levels for more information on how this works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Ubiquity ToS=&lt;br /&gt;
See https://help.ubnt.com/hc/en-us/articles/205231750-airMAX-How-is-QoS-and-prioritization-handled-by-airMAX-&lt;br /&gt;
&lt;br /&gt;
So, if we set ToS/DSCP in the header to C0, then Ubiquity (and other gear watching ToS) ''should'' prioritize the packets. This sets the DSCP to 110 000 aka 48. UBNT shows this as 802.1p Class 6 (Voice &amp;lt;10mS latency). Other sources show this as a Network Control TOS.&lt;br /&gt;
&lt;br /&gt;
There is an option in voter.conf to turn this on (utos=y). However, this only controls packets being sent from Asterisk '''TO''' the RTCM. &lt;br /&gt;
&lt;br /&gt;
If you want to tag packets from the RTCM '''TO''' Asterisk, you need to set the RTCM debug option level to 16 (see [[#Debug Options]] for how this works).&lt;br /&gt;
&lt;br /&gt;
At some point we should probably change the default behaviour of the RTCM firmware to mark the packets and use the debug setting to '''disable''' ToS. That change (if you wanted to compile your own firmware) would be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Change line 90 in IP.c&lt;br /&gt;
&lt;br /&gt;
From:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? 0xc0 : (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY))&lt;br /&gt;
&lt;br /&gt;
To:&lt;br /&gt;
#define IP_SERVICE         ((AppConfig.DebugLevel &amp;amp; 16) ? (IP_SERVICE_ROUTINE | IP_SERVICE_N_DELAY) : 0xc0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This changes the conditional expression from if the debug level is 16 to mark the packets with DSCP 48 to if the debug level is 16, mark the packets routine (DSCP 0).&lt;/div&gt;</summary>
		<author><name>Ve7fet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=31</id>
		<title>RTCM Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=31"/>
		<updated>2017-08-09T16:21:56Z</updated>

		<summary type="html">&lt;p&gt;Ve7fet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Micro-Node RTCM and VOTER interfaces are typically used with AllStar in voting/simulcast applications. They MAY be used for ANY repeater interface application, through the chan/voter channel driver. &lt;br /&gt;
&lt;br /&gt;
The VOTER is the original through-hole board designed by Jim Dixon for this application. It is open-source, and the relevant Gerber files and BoM to build it are available. &lt;br /&gt;
&lt;br /&gt;
The [http://www.micro-node.com/thin-m1.shtml Micro-Node Radio Thin Client Module (RTCM)] is the commercial version of the VOTER. It uses surface mount parts (SMT), but is functionally equivalent to the original VOTER. &lt;br /&gt;
&lt;br /&gt;
In general, the two terms (RTCM/VOTER) are used interchangeably, as they operate the same, and use the same firmware (mostly, see below).&lt;br /&gt;
&lt;br /&gt;
This page will highlight some of the operational concerns, quirks, bugs, and other items of interest that relate to these interfaces. Much of the information has been gleaned off the AllStar mail list, comes from personal experience, or comes from notes in the firmware source code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Firmware=&lt;br /&gt;
The firmware in the RTCM and VOTER is the same, except it is compiled for the specific dsPIC that is installed in each. As such, the firmware is specific to the VOTER or the RTCM, and is NOT interchangeable (it won't boot in the wrong device). Firmware for the RTCM is denoted by &amp;quot;smt&amp;quot; in the filename.&lt;br /&gt;
&lt;br /&gt;
The VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
&lt;br /&gt;
There are '''two parts''' to the firmware, a bootloader, and then the actual firmware file. The bootloader starts when power is applied, and allows you to talk to the dsPIC and load new firmware files over ethernet. If the bootloader is not intercepted by the loading tool, it will continue to boot the current firmware file.&lt;br /&gt;
&lt;br /&gt;
All new boards will need to have the bootloader installed first, followed by a firmware file. You '''can''' load a firmware file directly (.hex) in to the dsPIC, but then you will not have any of the bootloader remote loading features.&lt;br /&gt;
&lt;br /&gt;
The current bootloader (.cof file) is available here: https://github.com/AllStarLink/voter/tree/master/voter-bootloader (the -smt file is for the RTCM). It needs to be loaded with a PICKit programmer.&lt;br /&gt;
&lt;br /&gt;
Current firmware (.cry file) is available here: https://github.com/AllStarLink/voter/tree/master/board-firmware . They are loaded with the EBLEX C30 Programmer.&lt;br /&gt;
&lt;br /&gt;
There are multiple &amp;quot;flavors&amp;quot; of firmware available. See below for further explanation of what all the options mean.&lt;br /&gt;
&lt;br /&gt;
The DSPBEW versions have Jim's DSP/BEW feature enabled. Note that due to the size of this feature, the diagnostics menu is NOT available in this version.&lt;br /&gt;
&lt;br /&gt;
The CHUCK versions have Chuck Henderson's RSSI and Squelch modifications enabled. This is probably the version that most user's will want to use in production.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Compiling Environment==&lt;br /&gt;
If you look in the [https://github.com/AllStarLink/voter/blob/master/votersystem.pdf votersystem.pdf], you will find a procedure to modify and load the bootloader in to the dsPIC of a VOTER board. &lt;br /&gt;
&lt;br /&gt;
Unfortunately, there is an important step '''missing''' in that procedure, which is covered below.&lt;br /&gt;
&lt;br /&gt;
In addition, the old links for the MPLAB software are dead, so let's update this info and get you going.&lt;br /&gt;
&lt;br /&gt;
Currently (Feb 2017), you can get the required software from:&lt;br /&gt;
:http://www.microchip.com/development-tools/downloads-archive&lt;br /&gt;
&lt;br /&gt;
Download MPLAB IDE 32-bit Windows v8.66:&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_IDE_v8_66.zip&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/MPLAB_IDE_v8_66.zip&lt;br /&gt;
&lt;br /&gt;
Download MPLAB C Compiler for PIC24 and dsPIC DSCs v3.31 '''NOT v.3.25''':&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
&lt;br /&gt;
Optionally, install Windows Virtual PC and XP Mode. This is getting to be pretty old software, so running it under XP Mode may be a good idea, so we can keep it isolated (install it in a virtual machine). It does run fine in Windows 7.&lt;br /&gt;
&lt;br /&gt;
To setup the compile/build environment, follow these steps:&lt;br /&gt;
*Run the MPLAB IDE installer. You don't need to install the HI-TECH C Compiler at the end (click no)&lt;br /&gt;
*Run the MPLAB C Compiler installer&lt;br /&gt;
*Select Legacy Directory Name&lt;br /&gt;
*'''Select Lite Compiler'''&lt;br /&gt;
*Go to: https://github.com/AllStarLink&lt;br /&gt;
*Follow the links to: voter --&amp;gt; Clone or Download --&amp;gt; Download Zip. That will get you voter-master.zip which is a download of the whole VOTER tree from GitHub.&lt;br /&gt;
*Extract it somewhere (ie. in the XP Mode Virtual PC)&lt;br /&gt;
*Launch the MPLAB IDE&lt;br /&gt;
*Go to Configure --&amp;gt; Settings --&amp;gt; Projects and de-select one-to-one project mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bootloader==&lt;br /&gt;
If you need to load the bootloader in to a fresh board, you will need to follow these steps:&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; voter-bootloader.mcp --&amp;gt; Open (it is in the voter-bootloader folder of the GitHub source)&lt;br /&gt;
*Go to File --&amp;gt; Import --&amp;gt; voter-bootloader --&amp;gt; ENC_C30.cof --&amp;gt; Open '''This step is missing from the original procedure.'''&lt;br /&gt;
*Remove JP7 on the VOTER Board. This is necessary to allow programming by the PICKit2/PICKit3 device.&lt;br /&gt;
*Attach the PICKIT2/PICKit3 device to J1 on the VOTER board. Note that Pin 1 is closest to the power supply modules (as indicated on the board).&lt;br /&gt;
*If you have not already selected a programming device, go to Programmer --&amp;gt; Select Device and choose PICKit3 (or PICKit2, depending on what you are using).&lt;br /&gt;
*Go to Programmer --&amp;gt; Program. This will program the bootloader firmware into the PIC device on the board.&lt;br /&gt;
&lt;br /&gt;
If you want to change the default IP address from 192.168.1.11 in the bootloader:&lt;br /&gt;
*Select View --&amp;gt; Program Memory (from the top menu bar)&lt;br /&gt;
*Hit Control-F (to &amp;quot;find&amp;quot;) and search for the digits &amp;quot;00A8C0&amp;quot;.&lt;br /&gt;
*These should be found at memory address &amp;quot;03018&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;A8C0&amp;quot; at 03018 represents the hex digits C0 (192) and A8 (168) which are the first two octets of the IP address. The six digits to enter are 00 then the SECOND octet of the IP address in hex then the FIRST octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;0B01&amp;quot; at 0301A represents the hex digits 0B (11) and 01 (1) which are the second two octets of the IP address. The six digits to enter are 00 then the FOURTH octet of the IP address in hex then the THIRD octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
Once you have modified the address to your desired IP, follow the programming procedure (above).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Firmware==&lt;br /&gt;
To compile the firmware (if you want to make custom changes):&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; navigate to board-firmware and open the .mcp file for the flavor of firmware you want to compile. They are in the board-firmware folder of the GitHub source.&lt;br /&gt;
*'''NOTE''': the .mcp files with the &amp;quot;smt&amp;quot; suffix are for the RTCM (built with SMT parts). The non-smt files are for the ORIGINAL through-hole VOTER boards. The difference is that the VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
*Go to Project --&amp;gt; Build Configuration and select &amp;quot;Release&amp;quot;. This may not be necessary (I don't believe that option is used in the firmware), but it removes the compiler option of __DEBUG being passed, so theoretically it would build &amp;quot;normal&amp;quot; firmware.&lt;br /&gt;
*Go to Configure --&amp;gt; Select Device and choose the appropriate device for your board from the Device list. If you don't select the right one, the board will not boot. Select dsPIC33FJ128GP802 for the VOTER, and dsPIC33FJ128GP804 for the RTCM.&lt;br /&gt;
*Now, if you go to Project --&amp;gt; Build All it should compile everything and show you &amp;quot;Build Succeeded&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
A .cry file should be in the board-firmware folder. You can load this with the ENC Loader.&lt;br /&gt;
&lt;br /&gt;
There is also a .hex file in there that you could load with a programmer... but that would wipe the bootloader... so don't do that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Chuck Squelch==&lt;br /&gt;
If you want to enable &amp;quot;Chuck Squelch&amp;quot;, open the HardwareProfile.h and un-comment #define CHUCK. &lt;br /&gt;
&lt;br /&gt;
You may also want to go down to Line 291 in Voter.c (right click on the window, go to Properties --&amp;gt; &amp;quot;C&amp;quot; File Types --&amp;gt; Line Numbers) and tack on CHUCK after 1.60 (the current version number) so that when you load this firmware, the version will be shown as 1.51CHUCK, and you'll know that Chuck Squelch is compiled in. We should probably make that more automagic in the future...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==DSP/BEW==&lt;br /&gt;
If you want to compile the DSPBEW version, open the DSPBEW project file instead.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DSP/BEW Firmware Version=&lt;br /&gt;
DSP BEW Firmware is mutually exclusive with the diagnostic menu. There is not enough space for both, if you load the DSP/BEW firmware, you will '''NOT''' have a diag menu.&lt;br /&gt;
&lt;br /&gt;
BEW stands for Baseband Examination Window.&lt;br /&gt;
&lt;br /&gt;
Typically, the discriminator of an FM communications receiver produces results containing audio spectrum from the &amp;quot;sub-audible&amp;quot; range (typically &amp;lt; 100 Hz) to well above frequencies able to be produced by modulating audio. These higher frequencies can be utilized to determine signal quality, since they can only contain noise (or no noise, if a sufficiently strong signal is present).&lt;br /&gt;
&lt;br /&gt;
For receivers (such as the Motorola Quantar, etc) that do not provide sufficient spectral content at these &amp;quot;noise&amp;quot; frequencies (for various reasons), The &amp;quot;DSP/BEW (Digital Signal Processor / Baseband Examination Window)&amp;quot; feature of the RTCM firmware may be utilized. &lt;br /&gt;
&lt;br /&gt;
These receivers are perfectly capable of providing valid &amp;quot;noise&amp;quot; signal with no modulation on the input of the receiver, but with strong modulation (high frequency audio and high deviation), it severely interferes with proper analysis of signal strength.&lt;br /&gt;
&lt;br /&gt;
This feature provides a means by which a &amp;quot;Window&amp;quot; of baseband (normal audio range) signal is examined by a DSP and a determination of whether or not sufficient audio is present to cause interference of proper signal strength is made. During the VERY brief periods of time when it is determined that sufficient audio is present to cause interference, the signal strength value is &amp;quot;held&amp;quot; (the last valid value previous to the time of interference) until such time that the interfering audio is no longer present.  &lt;br /&gt;
&lt;br /&gt;
The DSP/BEW feature is selectable, and '''should not''' be used for a receiver that does not need it.&lt;br /&gt;
&lt;br /&gt;
A note on the Motorola SLR5700 per VE7FET. DSP/BEW definitely makes a difference on what AllMon reports for the signal strength of received signals. It is less reactive when DSP/BEW = 1 than with it set to 0. We'll have to see what the real world trials show. It might be better to leave it off.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Chuck Squelch=&lt;br /&gt;
&amp;quot;Chuck Squelch&amp;quot; are a couple firmware changes made by Chuck Henderson, WB9UUS.&lt;br /&gt;
&lt;br /&gt;
Pre-compiled firmware versions including this option are available on [https://github.com/AllStarLink/voter/tree/master/board-firmware GitHub]. See above on how it is enabled/compiled, if you are rolling your own firmware modifications.&lt;br /&gt;
 &lt;br /&gt;
One of the changes fixes an issue with weak signals producing RSSI readings all over the place. It is caused by a 16 bit value that was overflowing (it is the RSSI change in the firmware). It results in rock-solid RSSI values being reported, even on barely or non-readable signals. '''This change will likely be rolled in to a permanent fix in a future firmware release.'''&lt;br /&gt;
&lt;br /&gt;
The other firmware change changes how the squelch responds (looks at the noise in the last two audio samples) and makes the &amp;quot;Micor squelch&amp;quot; action work better.&lt;br /&gt;
&lt;br /&gt;
You may also want to consider the following changes in /etc/asterisk/voter.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
;Comment out:&lt;br /&gt;
;thresholds =&lt;br /&gt;
&lt;br /&gt;
;and set:&lt;br /&gt;
linger = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Squelch Issues==&lt;br /&gt;
*If anyone is off frequency a little bit, that will make the voice talk off worse. Double check that the repeater and the users are all on frequency.&lt;br /&gt;
*Don't use narrow bandwidth on the repeater receiver. &lt;br /&gt;
*Make sure that the discriminator audio is not rolled off even a little bit at the high end. There should not be resistors in series or capacitors to ground between the discriminator chip output pin and the voter board input, for best results.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=RTCM/VOTER LED's=&lt;br /&gt;
RX LED on the RTCM/VOTER will flash (same rate as ACT LED) if you have External CTCSS enabled, and the received signal has the wrong (or no) valid PL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=TX Level Setting=&lt;br /&gt;
*Send 1kHz@3kHz on-channel in to the RX&lt;br /&gt;
*Set the RX up so it reads 3kHz deviation on the RTCM's built in console meter&lt;br /&gt;
*Now set the TX level '''pot''' to get 3kHz out of the transmitter (No PL)&lt;br /&gt;
&lt;br /&gt;
Now change the modulation from 1kHz tone to 800Hz followed by 1.8kHz and verify that the deviation level doesn't change as the tone frequency changes. '''Changing levels indicates a pre/de-emphasis issue.'''&lt;br /&gt;
&lt;br /&gt;
If using PL you have to account for that deviation, unless you filter it out with your IFR (test set). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=GPS Issues=&lt;br /&gt;
==GPS Lock==&lt;br /&gt;
The GPS led will go solid regardless of the connection LED. That '''has''' to happen or it won't connect to the Asterisk server. &lt;br /&gt;
&lt;br /&gt;
It is not unusual for it to take up to 20 mins to get a GPS lock LED (ie. using a Trimble Thunderbolt) after any reboot. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==GPS De-sense==&lt;br /&gt;
If you are having odd loss of lock issues, consider you may have interference to your GPS antenna from strong RF nearby. A note from Jesse Lloyd:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I also had crazy problems with poor signal on my GPS when I set it up sitting in a window, and once installed at site I had the GPS antenna maybe 6 ft from the VHF antenna, and after some troubleshooting found it was getting swamped with RF and loosing lock. &lt;br /&gt;
&lt;br /&gt;
I found the debug setting of 40 useful in the RTCM, you can see a hex output of the GPS status.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==NMEA Sentences==&lt;br /&gt;
If you are using an NMEA GPS (as opposed to a Trimble using the TSIP binary interface), the RTCM/VOTER is looking for the following NMEA sentences:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$GPGGA&lt;br /&gt;
$GPGSV&lt;br /&gt;
$GPRMC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Trimble Thunderbolt==&lt;br /&gt;
&lt;br /&gt;
==Garmin LVC==&lt;/div&gt;</summary>
		<author><name>Ve7fet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=30</id>
		<title>RTCM Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=30"/>
		<updated>2017-08-09T15:53:30Z</updated>

		<summary type="html">&lt;p&gt;Ve7fet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Micro-Node RTCM and VOTER interfaces are typically used with AllStar in voting/simulcast applications. They MAY be used for ANY repeater interface application, through the chan/voter channel driver. &lt;br /&gt;
&lt;br /&gt;
The VOTER is the original through-hole board designed by Jim Dixon for this application. It is open-source, and the relevant Gerber files and BoM to build it are available. &lt;br /&gt;
&lt;br /&gt;
The [http://www.micro-node.com/thin-m1.shtml Micro-Node Radio Thin Client Module (RTCM)] is the commercial version of the VOTER. It uses surface mount parts (SMT), but is functionally equivalent to the original VOTER. &lt;br /&gt;
&lt;br /&gt;
In general, the two terms (RTCM/VOTER) are used interchangeably, as they operate the same, and use the same firmware (mostly, see below).&lt;br /&gt;
&lt;br /&gt;
This page will highlight some of the operational concerns, quirks, bugs, and other items of interest that relate to these interfaces. Much of the information has been gleaned off the AllStar mail list, comes from personal experience, or comes from notes in the firmware source code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Firmware=&lt;br /&gt;
The firmware in the RTCM and VOTER is the same, except it is compiled for the specific dsPIC that is installed in each. As such, the firmware is specific to the VOTER or the RTCM, and is NOT interchangeable (it won't boot in the wrong device). Firmware for the RTCM is denoted by &amp;quot;smt&amp;quot; in the filename.&lt;br /&gt;
&lt;br /&gt;
The VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
&lt;br /&gt;
There are '''two parts''' to the firmware, a bootloader, and then the actual firmware file. The bootloader starts when power is applied, and allows you to talk to the dsPIC and load new firmware files over ethernet. If the bootloader is not intercepted by the loading tool, it will continue to boot the current firmware file.&lt;br /&gt;
&lt;br /&gt;
All new boards will need to have the bootloader installed first, followed by a firmware file. You '''can''' load a firmware file directly (.hex) in to the dsPIC, but then you will not have any of the bootloader remote loading features.&lt;br /&gt;
&lt;br /&gt;
The current bootloader (.cof file) is available here: https://github.com/AllStarLink/voter/tree/master/voter-bootloader (the -smt file is for the RTCM). It needs to be loaded with a PICKit programmer.&lt;br /&gt;
&lt;br /&gt;
Current firmware (.cry file) is available here: https://github.com/AllStarLink/voter/tree/master/board-firmware . They are loaded with the EBLEX C30 Programmer.&lt;br /&gt;
&lt;br /&gt;
There are multiple &amp;quot;flavors&amp;quot; of firmware available. See below for further explanation of what all the options mean.&lt;br /&gt;
&lt;br /&gt;
The DSPBEW versions have Jim's DSP/BEW feature enabled. Note that due to the size of this feature, the diagnostics menu is NOT available in this version.&lt;br /&gt;
&lt;br /&gt;
The CHUCK versions have Chuck Henderson's RSSI and Squelch modifications enabled. This is probably the version that most user's will want to use in production.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Compiling Environment==&lt;br /&gt;
&lt;br /&gt;
If you look in the [https://github.com/AllStarLink/voter/blob/master/votersystem.pdf votersystem.pdf], you will find a procedure to modify and load the bootloader in to the dsPIC of a VOTER board. &lt;br /&gt;
&lt;br /&gt;
Unfortunately, there is an important step '''missing''' in that procedure, which is covered below.&lt;br /&gt;
&lt;br /&gt;
In addition, the old links for the MPLAB software are dead, so let's update this info and get you going.&lt;br /&gt;
&lt;br /&gt;
Currently (Feb 2017), you can get the required software from:&lt;br /&gt;
:http://www.microchip.com/development-tools/downloads-archive&lt;br /&gt;
&lt;br /&gt;
Download MPLAB IDE 32-bit Windows v8.66:&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_IDE_v8_66.zip&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/MPLAB_IDE_v8_66.zip&lt;br /&gt;
&lt;br /&gt;
Download MPLAB C Compiler for PIC24 and dsPIC DSCs v3.31 '''NOT v.3.25''':&lt;br /&gt;
:http://ww1.microchip.com/downloads/en/DeviceDoc/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
:http://dvswitch.org/files/AllStarLink/Voter/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
&lt;br /&gt;
Optionally, install Windows Virtual PC and XP Mode. This is getting to be pretty old software, so running it under XP Mode may be a good idea, so we can keep it isolated (install it in a virtual machine). It does run fine in Windows 7.&lt;br /&gt;
&lt;br /&gt;
To setup the compile/build environment, follow these steps:&lt;br /&gt;
*Run the MPLAB IDE installer. You don't need to install the HI-TECH C Compiler at the end (click no)&lt;br /&gt;
*Run the MPLAB C Compiler installer&lt;br /&gt;
*Select Legacy Directory Name&lt;br /&gt;
*'''Select Lite Compiler'''&lt;br /&gt;
*Go to: https://github.com/AllStarLink&lt;br /&gt;
*Follow the links to: voter --&amp;gt; Clone or Download --&amp;gt; Download Zip. That will get you voter-master.zip which is a download of the whole VOTER tree from GitHub.&lt;br /&gt;
*Extract it somewhere (ie. in the XP Mode Virtual PC)&lt;br /&gt;
*Launch the MPLAB IDE&lt;br /&gt;
*Go to Configure --&amp;gt; Settings --&amp;gt; Projects and de-select one-to-one project mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bootloader==&lt;br /&gt;
&lt;br /&gt;
If you need to load the bootloader in to a fresh board, you will need to follow these steps:&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; voter-bootloader.mcp --&amp;gt; Open (it is in the voter-bootloader folder of the GitHub source)&lt;br /&gt;
*Go to File --&amp;gt; Import --&amp;gt; voter-bootloader --&amp;gt; ENC_C30.cof --&amp;gt; Open '''This step is missing from the original procedure.'''&lt;br /&gt;
*Remove JP7 on the VOTER Board. This is necessary to allow programming by the PICKit2/PICKit3 device.&lt;br /&gt;
*Attach the PICKIT2/PICKit3 device to J1 on the VOTER board. Note that Pin 1 is closest to the power supply modules (as indicated on the board).&lt;br /&gt;
*If you have not already selected a programming device, go to Programmer --&amp;gt; Select Device and choose PICKit3 (or PICKit2, depending on what you are using).&lt;br /&gt;
*Go to Programmer --&amp;gt; Program. This will program the bootloader firmware into the PIC device on the board.&lt;br /&gt;
&lt;br /&gt;
If you want to change the default IP address from 192.168.1.11 in the bootloader:&lt;br /&gt;
*Select View --&amp;gt; Program Memory (from the top menu bar)&lt;br /&gt;
*Hit Control-F (to &amp;quot;find&amp;quot;) and search for the digits &amp;quot;00A8C0&amp;quot;.&lt;br /&gt;
*These should be found at memory address &amp;quot;03018&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;A8C0&amp;quot; at 03018 represents the hex digits C0 (192) and A8 (168) which are the first two octets of the IP address. The six digits to enter are 00 then the SECOND octet of the IP address in hex then the FIRST octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;0B01&amp;quot; at 0301A represents the hex digits 0B (11) and 01 (1) which are the second two octets of the IP address. The six digits to enter are 00 then the FOURTH octet of the IP address in hex then the THIRD octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
Once you have modified the address to your desired IP, follow the programming procedure (above).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Firmware==&lt;br /&gt;
&lt;br /&gt;
To compile the firmware (if you want to make custom changes):&lt;br /&gt;
*Go to Project --&amp;gt; Open --&amp;gt; navigate to board-firmware and open the .mcp file for the flavor of firmware you want to compile. They are in the board-firmware folder of the GitHub source.&lt;br /&gt;
*'''NOTE''': the .mcp files with the &amp;quot;smt&amp;quot; suffix are for the RTCM (built with SMT parts). The non-smt files are for the ORIGINAL through-hole VOTER boards. The difference is that the VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
*Go to Project --&amp;gt; Build Configuration and select &amp;quot;Release&amp;quot;. This may not be necessary (I don't believe that option is used in the firmware), but it removes the compiler option of __DEBUG being passed, so theoretically it would build &amp;quot;normal&amp;quot; firmware.&lt;br /&gt;
*Go to Configure --&amp;gt; Select Device and choose the appropriate device for your board from the Device list. If you don't select the right one, the board will not boot. Select dsPIC33FJ128GP802 for the VOTER, and dsPIC33FJ128GP804 for the RTCM.&lt;br /&gt;
*Now, if you go to Project --&amp;gt; Build All it should compile everything and show you &amp;quot;Build Succeeded&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
A .cry file should be in the board-firmware folder. You can load this with the ENC Loader.&lt;br /&gt;
&lt;br /&gt;
There is also a .hex file in there that you could load with a programmer... but that would wipe the bootloader... so don't do that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Chuck Squelch==&lt;br /&gt;
If you want to enable &amp;quot;Chuck Squelch&amp;quot;, open the HardwareProfile.h and un-comment #define CHUCK. &lt;br /&gt;
&lt;br /&gt;
You may also want to go down to Line 291 in Voter.c (right click on the window, go to Properties --&amp;gt; &amp;quot;C&amp;quot; File Types --&amp;gt; Line Numbers) and tack on CHUCK after 1.60 (the current version number) so that when you load this firmware, the version will be shown as 1.51CHUCK, and you'll know that Chuck Squelch is compiled in. We should probably make that more automagic in the future...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==DSP/BEW==&lt;br /&gt;
If you want to compile the DSPBEW version, open the DSPBEW project file instead.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
=GPS Issues=&lt;br /&gt;
==NMEA Sentences==&lt;br /&gt;
If you are using an NMEA GPS (as opposed to a Trimble using the TSIP binary interface), the RTCM/VOTER is looking for the following NMEA sentences:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$GPGGA&lt;br /&gt;
$GPGSV&lt;br /&gt;
$GPRMC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Trimble Thunderbolt==&lt;br /&gt;
&lt;br /&gt;
==Garmin LVC==&lt;/div&gt;</summary>
		<author><name>Ve7fet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=29</id>
		<title>RTCM Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=29"/>
		<updated>2017-08-09T15:40:25Z</updated>

		<summary type="html">&lt;p&gt;Ve7fet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Micro-Node RTCM and VOTER interfaces are typically used with AllStar in voting/simulcast applications. They MAY be used for ANY repeater interface application, through the chan/voter channel driver. &lt;br /&gt;
&lt;br /&gt;
The VOTER is the original through-hole board designed by Jim Dixon for this application. It is open-source, and the relevant Gerber files and BoM to build it are available. &lt;br /&gt;
&lt;br /&gt;
The [http://www.micro-node.com/thin-m1.shtml Micro-Node Radio Thin Client Module (RTCM)] is the commercial version of the VOTER. It uses surface mount parts (SMT), but is functionally equivalent to the original VOTER. &lt;br /&gt;
&lt;br /&gt;
In general, the two terms (RTCM/VOTER) are used interchangeably, as they operate the same, and use the same firmware (mostly, see below).&lt;br /&gt;
&lt;br /&gt;
This page will highlight some of the operational concerns, quirks, bugs, and other items of interest that relate to these interfaces. Much of the information has been gleaned off the AllStar mail list, comes from personal experience, or comes from notes in the firmware source code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Firmware=&lt;br /&gt;
The firmware in the RTCM and VOTER is the same, except it is compiled for the specific dsPIC that is installed in each. As such, the firmware is specific to the VOTER or the RTCM, and is NOT interchangeable (it won't boot in the wrong device). Firmware for the RTCM is denoted by &amp;quot;smt&amp;quot; in the filename.&lt;br /&gt;
&lt;br /&gt;
The VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
&lt;br /&gt;
There are '''two parts''' to the firmware, a bootloader, and then the actual firmware file. The bootloader starts when power is applied, and allows you to talk to the dsPIC and load new firmware files over ethernet. If the bootloader is not intercepted by the loading tool, it will continue to boot the current firmware file.&lt;br /&gt;
&lt;br /&gt;
All new boards will need to have the bootloader installed first, followed by a firmware file. You '''can''' load a firmware file directly (.hex) in to the dsPIC, but then you will not have any of the bootloader remote loading features.&lt;br /&gt;
&lt;br /&gt;
The current bootloader (.cof file) is available here: https://github.com/AllStarLink/voter/tree/master/voter-bootloader (the -smt file is for the RTCM). It needs to be loaded with a PICKit programmer.&lt;br /&gt;
&lt;br /&gt;
Current firmware (.cry file) is available here: https://github.com/AllStarLink/voter/tree/master/board-firmware . They are loaded with the EBLEX C30 Programmer.&lt;br /&gt;
&lt;br /&gt;
There are multiple &amp;quot;flavors&amp;quot; of firmware available. See below for further explanation of what all the options mean.&lt;br /&gt;
&lt;br /&gt;
The DSPBEW versions have Jim's DSP/BEW feature enabled. Note that due to the size of this feature, the diagnostics menu is NOT available in this version.&lt;br /&gt;
&lt;br /&gt;
The CHUCK versions have Chuck Henderson's RSSI and Squelch modifications enabled. This is probably the version that most user's will want to use in production.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Compiling Environment==&lt;br /&gt;
&lt;br /&gt;
If you look in the [https://github.com/AllStarLink/voter/blob/master/votersystem.pdf votersystem.pdf], you will find a procedure to modify and load the bootloader in to the dsPIC of a VOTER board. &lt;br /&gt;
&lt;br /&gt;
Unfortunately, there is an important step '''missing''' in that procedure, which is covered below.&lt;br /&gt;
&lt;br /&gt;
In addition, the old links for the MPLAB software are dead, so let's update this info and get you going.&lt;br /&gt;
&lt;br /&gt;
Currently (Feb 2017), you can get the required software from:&lt;br /&gt;
http://www.microchip.com/development-tools/downloads-archive&lt;br /&gt;
&lt;br /&gt;
Download MPLAB IDE 32-bit Windows v8.66:&lt;br /&gt;
http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_IDE_v8_66.zip&lt;br /&gt;
http://dvswitch.org/files/AllStarLink/Voter/MPLAB_IDE_v8_66.zip&lt;br /&gt;
&lt;br /&gt;
Download MPLAB C Compiler for PIC24 and dsPIC DSCs v3.31 '''NOT v.3.25''':&lt;br /&gt;
http://ww1.microchip.com/downloads/en/DeviceDoc/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
http://dvswitch.org/files/AllStarLink/Voter/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
&lt;br /&gt;
Optionally, install Windows Virtual PC and XP Mode. This is getting to be pretty old software, so running it under XP Mode may be a good idea, so we can keep it isolated (install it in a virtual machine). It does run fine in Windows 7.&lt;br /&gt;
&lt;br /&gt;
Run the MPLAB IDE installer. You don't need to install the HI-TECH C Compiler at the end (click no).&lt;br /&gt;
&lt;br /&gt;
Run the MPLAB C Compiler installer.&lt;br /&gt;
&lt;br /&gt;
Select Legacy Directory Name.&lt;br /&gt;
&lt;br /&gt;
'''Select Lite Compiler'''&lt;br /&gt;
&lt;br /&gt;
Go to: https://github.com/AllStarLink&lt;br /&gt;
&lt;br /&gt;
Follow the links to: voter --&amp;gt; Clone or Download --&amp;gt; Download Zip&lt;br /&gt;
&lt;br /&gt;
That will get you voter-master.zip which is a download of the whole VOTER tree from GitHub.&lt;br /&gt;
&lt;br /&gt;
Extract it somewhere (ie. in the XP Mode Virtual PC).&lt;br /&gt;
&lt;br /&gt;
Launch the MPLAB IDE.&lt;br /&gt;
&lt;br /&gt;
Go to Configure --&amp;gt; Settings --&amp;gt; Projects and de-select one-to-one project mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bootloader==&lt;br /&gt;
&lt;br /&gt;
If you need to load the bootloader in to a fresh board, you will need to follow these steps.&lt;br /&gt;
&lt;br /&gt;
Go to Project --&amp;gt; Open --&amp;gt; voter-bootloader.mcp --&amp;gt; Open (it is in the voter-bootloader folder of the GitHub source)&lt;br /&gt;
&lt;br /&gt;
Go to File --&amp;gt; Import --&amp;gt; voter-bootloader --&amp;gt; ENC_C30.cof --&amp;gt; Open '''This step is missing from the original procedure.'''&lt;br /&gt;
&lt;br /&gt;
Select View --&amp;gt; Program Memory (from the top menu bar).&lt;br /&gt;
&lt;br /&gt;
If you want to change the default IP address from 192.168.1.11:&lt;br /&gt;
&lt;br /&gt;
Hit Control-F (to &amp;quot;find&amp;quot;) and search for the digits &amp;quot;00A8C0&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
These should be found at memory address &amp;quot;03018&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;A8C0&amp;quot; at 03018 represents the hex digits C0 (192) and A8 (168) which are the first two octets of the IP address. The six digits to enter are 00 then the SECOND octet of the IP address in hex then the FIRST octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;0B01&amp;quot; at 0301A represents the hex digits 0B (11) and 01 (1) which are the second two octets of the IP address. The six digits to enter are 00 then the FOURTH octet of the IP address in hex then the THIRD octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
Otherwise, if you just want to load the bootloader...&lt;br /&gt;
&lt;br /&gt;
Remove JP7 on the VOTER Board. This is necessary to allow programming by the PICKit2/PICKit3 device.&lt;br /&gt;
&lt;br /&gt;
Attach the PICKIT2/PICKit3 device to J1 on the VOTER board. Note that Pin 1 is closest to the power supply modules (as indicated on the board).&lt;br /&gt;
&lt;br /&gt;
If you have not already selected a programming device, go to Programmer --&amp;gt; Select Device and choose PICKit3 (or PICKit2, depending on what you are using).&lt;br /&gt;
&lt;br /&gt;
Then go to Programmer --&amp;gt; Program. This will program the bootloder firmware into the PIC device on the board.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Firmware==&lt;br /&gt;
&lt;br /&gt;
To compile the firmware (if you want to make custom changes)...&lt;br /&gt;
&lt;br /&gt;
Go to Project --&amp;gt; Open --&amp;gt; navigate to board-firmware and open the .mcp file for the flavor of firmware you want to compile. They are in the board-firmware folder of the GitHub source.&lt;br /&gt;
&lt;br /&gt;
'''NOTE''': the .mcp files with the &amp;quot;smt&amp;quot; suffix are for the RTCM (built with SMT parts). The non-smt files are for the ORIGINAL through-hole VOTER boards. The difference is that the VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
&lt;br /&gt;
Go to Project --&amp;gt; Build Configuration and select &amp;quot;Release&amp;quot;. This may not be necessary (I don't believe that option is used in the firmware), but it removes the compiler option of __DEBUG being passed, so theoretically it would build &amp;quot;normal&amp;quot; firmware.&lt;br /&gt;
&lt;br /&gt;
Go to Configure --&amp;gt; Select Device and choose the appropriate device for your board from the Device list. If you don't select the right one, the board will not boot. Select dsPIC33FJ128GP802 for the VOTER, and dsPIC33FJ128GP804 for the RTCM.&lt;br /&gt;
&lt;br /&gt;
Now, if you go to Project --&amp;gt; Build All it should compile everything and show you &amp;quot;Build Succeeded&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
A .cry file should be in the board-firmware folder. You can load this with the ENC Loader.&lt;br /&gt;
&lt;br /&gt;
There is also a .hex file in there that you could load with a programmer... but that would wipe the bootloader... so don't do that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Chuck Squelch==&lt;br /&gt;
If you want to enable &amp;quot;Chuck Squelch&amp;quot;, open the HardwareProfile.h and un-comment #define CHUCK. &lt;br /&gt;
&lt;br /&gt;
You may also want to go down to Line 291 in Voter.c (right click on the window, go to Properties --&amp;gt; &amp;quot;C&amp;quot; File Types --&amp;gt; Line Numbers) and tack on CHUCK after 1.60 (the current version number) so that when you load this firmware, the version will be shown as 1.51CHUCK, and you'll know that Chuck Squelch is compiled in. We should probably make that more automagic in the future...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==DSP/BEW==&lt;br /&gt;
If you want to compile the DSPBEW version, open the DSPBEW project file instead.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
=GPS Issues=&lt;br /&gt;
==NMEA Sentences==&lt;br /&gt;
If you are using an NMEA GPS (as opposed to a Trimble using the TSIP binary interface), the RTCM/VOTER is looking for the following NMEA sentences:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$GPGGA&lt;br /&gt;
$GPGSV&lt;br /&gt;
$GPRMC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Trimble Thunderbolt==&lt;br /&gt;
&lt;br /&gt;
==Garmin LVC==&lt;/div&gt;</summary>
		<author><name>Ve7fet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=28</id>
		<title>RTCM Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.pttlink.org/index.php?title=RTCM_Client&amp;diff=28"/>
		<updated>2017-08-09T15:24:05Z</updated>

		<summary type="html">&lt;p&gt;Ve7fet: Created page with &amp;quot;The Micro-Node RTCM and VOTER interfaces are typically used with AllStar in voting/simulcast applications. They MAY be used for ANY repeater interface application, through the...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Micro-Node RTCM and VOTER interfaces are typically used with AllStar in voting/simulcast applications. They MAY be used for ANY repeater interface application, through the chan/voter channel driver. &lt;br /&gt;
&lt;br /&gt;
The VOTER is the original through-hole board designed by Jim Dixon for this application. It is open-source, and the relevant Gerber files and BoM to build it are available. &lt;br /&gt;
&lt;br /&gt;
The [http://www.micro-node.com/thin-m1.shtml Micro-Node Radio Thin Client Module (RTCM)] is the commercial version of the VOTER. It uses surface mount parts (SMT), but is functionally equivalent to the original VOTER. &lt;br /&gt;
&lt;br /&gt;
In general, the two terms (RTCM/VOTER) are used interchangeably, as they operate the same, and use the same firmware'''*'''.&lt;br /&gt;
&lt;br /&gt;
This page will highlight some of the operational concerns, quirks, bugs, and other items of interest that relate to these interfaces. Much of the information has been gleaned off the AllStar mail list, comes from personal experience, or comes from notes in the firmware source code.&lt;br /&gt;
&lt;br /&gt;
'''*'''see below&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Firmware=&lt;br /&gt;
The firmware in the RTCM and VOTER is the same, except it is compiled for the specific dsPIC that is installed in each. As such, the firmware is specific to the VOTER or the RTCM, and is NOT interchangeable (it won't boot in the wrong device). Firmware for the RTCM is denoted by &amp;quot;smt&amp;quot; in the filename.&lt;br /&gt;
&lt;br /&gt;
The VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
&lt;br /&gt;
Current firmware (.cry file) is available here: https://github.com/AllStarLink/voter/tree/master/board-firmware&lt;br /&gt;
&lt;br /&gt;
There are multiple &amp;quot;flavors&amp;quot; of firmware available. See below for further explanation of what all the options mean.&lt;br /&gt;
&lt;br /&gt;
The DSPBEW versions have Jim's DSP/BEW feature enabled. Note that due to the size of this feature, the diagnostics menu is NOT available in this version.&lt;br /&gt;
&lt;br /&gt;
The CHUCK versions have Chuck Henderson's RSSI and Squelch modifications enabled. This is probably the version that most user's will want to use in production.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Compiling Environment==&lt;br /&gt;
&lt;br /&gt;
If you look in the votersystem.pdf, you will find a procedure to modify and load the bootloader in to the dsPIC of a VOTER board. &lt;br /&gt;
&lt;br /&gt;
Unfortunately, there is an important step missing in that procedure, which is covered below.&lt;br /&gt;
&lt;br /&gt;
In addition, the old links for the MPLAB software are dead, so let's update this info and get you going.&lt;br /&gt;
&lt;br /&gt;
Currently (Feb 2017), you can get the required software from:&lt;br /&gt;
&lt;br /&gt;
http://www.microchip.com/development-tools/downloads-archive&lt;br /&gt;
&lt;br /&gt;
Download MPLAB IDE 32-bit Windows v8.66:&lt;br /&gt;
http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_IDE_v8_66.zip&lt;br /&gt;
http://dvswitch.org/files/AllStarLink/Voter/MPLAB_IDE_v8_66.zip&lt;br /&gt;
&lt;br /&gt;
Download MPLAB C Compiler for PIC24 and dsPIC DSCs v3.31 '''NOT v.3.25''':&lt;br /&gt;
http://ww1.microchip.com/downloads/en/DeviceDoc/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
http://dvswitch.org/files/AllStarLink/Voter/mplabc30-v3_31-windows-installer.exe&lt;br /&gt;
&lt;br /&gt;
Optionally, install Windows Virtual PC and XP Mode. This is getting to be pretty old software, so running it under XP Mode may be a good idea, so we can keep it isolated (install it in a virtual machine). It does run fine in Windows 7.&lt;br /&gt;
&lt;br /&gt;
Run the MPLAB IDE installer. You don't need to install the HI-TECH C Compiler at the end (click no).&lt;br /&gt;
&lt;br /&gt;
Run the MPLAB C Compiler installer.&lt;br /&gt;
&lt;br /&gt;
Select Legacy Directory Name.&lt;br /&gt;
&lt;br /&gt;
'''Select Lite Compiler'''&lt;br /&gt;
&lt;br /&gt;
Go to: https://github.com/AllStarLink&lt;br /&gt;
&lt;br /&gt;
Follow the links to: voter --&amp;gt; Clone or Download --&amp;gt; Download Zip&lt;br /&gt;
&lt;br /&gt;
That will get you voter-master.zip which is a download of the whole VOTER tree from GitHub.&lt;br /&gt;
&lt;br /&gt;
Extract it somewhere (ie. in the XP Mode Virtual PC).&lt;br /&gt;
&lt;br /&gt;
Launch the MPLAB IDE.&lt;br /&gt;
&lt;br /&gt;
Go to Configure --&amp;gt; Settings --&amp;gt; Projects and de-select one-to-one project mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bootloader==&lt;br /&gt;
&lt;br /&gt;
If you need to load the bootloader in to a fresh board, you will need to follow these steps.&lt;br /&gt;
&lt;br /&gt;
Go to Project --&amp;gt; Open --&amp;gt; voter-bootloader.mcp --&amp;gt; Open (it is in the voter-bootloader folder of the GitHub source)&lt;br /&gt;
&lt;br /&gt;
Go to File --&amp;gt; Import --&amp;gt; voter-bootloader --&amp;gt; ENC_C30.cof --&amp;gt; Open '''This step is missing from the original procedure.'''&lt;br /&gt;
&lt;br /&gt;
Select View --&amp;gt; Program Memory (from the top menu bar).&lt;br /&gt;
&lt;br /&gt;
If you want to change the default IP address from 192.168.1.11:&lt;br /&gt;
&lt;br /&gt;
Hit Control-F (to &amp;quot;find&amp;quot;) and search for the digits &amp;quot;00A8C0&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
These should be found at memory address &amp;quot;03018&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;A8C0&amp;quot; at 03018 represents the hex digits C0 (192) and A8 (168) which are the first two octets of the IP address. The six digits to enter are 00 then the SECOND octet of the IP address in hex then the FIRST octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;0B01&amp;quot; at 0301A represents the hex digits 0B (11) and 01 (1) which are the second two octets of the IP address. The six digits to enter are 00 then the FOURTH octet of the IP address in hex then the THIRD octet of the IP address in hex.&lt;br /&gt;
&lt;br /&gt;
Otherwise, if you just want to load the bootloader...&lt;br /&gt;
&lt;br /&gt;
Remove JP7 on the VOTER Board. This is necessary to allow programming by the PICKit2/PICKit3 device.&lt;br /&gt;
&lt;br /&gt;
Attach the PICKIT2/PICKit3 device to J1 on the VOTER board. Note that Pin 1 is closest to the power supply modules (as indicated on the board).&lt;br /&gt;
&lt;br /&gt;
If you have not already selected a programming device, go to Programmer --&amp;gt; Select Device and choose PICKit3 (or PICKit2, depending on what you are using).&lt;br /&gt;
&lt;br /&gt;
Then go to Programmer --&amp;gt; Program. This will program the bootloder firmware into the PIC device on the board.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Firmware==&lt;br /&gt;
&lt;br /&gt;
To compile the firmware (if you want to make custom changes)...&lt;br /&gt;
&lt;br /&gt;
Go to Project --&amp;gt; Open --&amp;gt; navigate to board-firmware and open the .mcp file for the flavor of firmware you want to compile. They are in the board-firmware folder of the GitHub source.&lt;br /&gt;
&lt;br /&gt;
'''NOTE''': the .mcp files with the &amp;quot;smt&amp;quot; suffix are for the RTCM (built with SMT parts). The non-smt files are for the ORIGINAL through-hole VOTER boards. The difference is that the VOTER uses a dsPIC33FJ128GP802 and the RTCM uses a dsPIC33FJ128GP804.&lt;br /&gt;
&lt;br /&gt;
Go to Project --&amp;gt; Build Configuration and select &amp;quot;Release&amp;quot;. This may not be necessary (I don't believe that option is used in the firmware), but it removes the compiler option of __DEBUG being passed, so theoretically it would build &amp;quot;normal&amp;quot; firmware.&lt;br /&gt;
&lt;br /&gt;
Go to Configure --&amp;gt; Select Device and choose the appropriate device for your board from the Device list. If you don't select the right one, the board will not boot. Select dsPIC33FJ128GP802 for the VOTER, and dsPIC33FJ128GP804 for the RTCM.&lt;br /&gt;
&lt;br /&gt;
Now, if you go to Project --&amp;gt; Build All it should compile everything and show you &amp;quot;Build Succeeded&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
A .cry file should be in the board-firmware folder. You can load this with the ENC Loader.&lt;br /&gt;
&lt;br /&gt;
There is also a .hex file in there that you could load with a programmer... but that would wipe the bootloader... so don't do that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Chuck Squelch==&lt;br /&gt;
If you want to enable &amp;quot;Chuck Squelch&amp;quot;, open the HardwareProfile.h and un-comment #define CHUCK. &lt;br /&gt;
&lt;br /&gt;
You may also want to go down to Line 291 in Voter.c (right click on the window, go to Properties --&amp;gt; &amp;quot;C&amp;quot; File Types --&amp;gt; Line Numbers) and tack on CHUCK after 1.60 (the current version number) so that when you load this firmware, the version will be shown as 1.51CHUCK, and you'll know that Chuck Squelch is compiled in. We should probably make that more automagic in the future...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==DSP/BEW==&lt;br /&gt;
If you want to compile the DSPBEW version, open the DSPBEW project file instead.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
=GPS Issues=&lt;br /&gt;
==NMEA Sentences==&lt;br /&gt;
If you are using an NMEA GPS (as opposed to a Trimble using the TSIP binary interface), the RTCM/VOTER is looking for the following NMEA sentences:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$GPGGA&lt;br /&gt;
$GPGSV&lt;br /&gt;
$GPRMC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Trimble Thunderbolt==&lt;br /&gt;
&lt;br /&gt;
==Garmin LVC==&lt;/div&gt;</summary>
		<author><name>Ve7fet</name></author>
	</entry>
	<entry>
		<id>https://wiki.pttlink.org/index.php?title=Main_Page&amp;diff=27</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.pttlink.org/index.php?title=Main_Page&amp;diff=27"/>
		<updated>2017-08-09T14:35:10Z</updated>

		<summary type="html">&lt;p&gt;Ve7fet: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to AllStarLink Wiki hosted in the ASL docker environment.  This is for pre-production testing and anything may be deleted.&lt;br /&gt;
&lt;br /&gt;
[https://allstarlink.org/ This is a link to the main website]&lt;br /&gt;
&lt;br /&gt;
[http://stats.allstarlink.org/ This is a link to the Stats server]&lt;br /&gt;
[[File:443.525 W9CR Tampa with 39(50,50) 21(50,10) dBu contours.png|right|frameless]]&lt;br /&gt;
&lt;br /&gt;
[[File:Quantar.jpg|frameless]]&lt;br /&gt;
&lt;br /&gt;
=Hardware Information=&lt;br /&gt;
==[[RTCM/VOTER Interfaces]]==&lt;br /&gt;
&lt;br /&gt;
=Software Information=&lt;br /&gt;
==[[chan/voter Information]]==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Consult the [https://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Getting started&amp;lt;/strong&amp;gt;&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki]&lt;/div&gt;</summary>
		<author><name>Ve7fet</name></author>
	</entry>
</feed>