NHRC-4 Repeater Controller
Operation Instructions

These instructions will guide you in the operation of the NHRC-4 Repeater Controller. For installation instructions, see the installation manual.


  1. Introduction
  2. Initializing
  3. Programming the Controller
    1. Programming the Timers
    2. Programming the CW Messages
    3. Programming the Flag Bits
    4. Programming the Courtesy Tones
    5. Previewing Stored CW Messages

  4. Operating
    1. Enabling/Disabling the Repeater
    2. Using the NHRC-DAD Digital Audio Delay with the NHRC-4 Repeater Controller

  5. Programming Example
Index of Tables

  1. Introduction
    The NHRC-4 has 2 radio "ports", which are connectors that the radios connect to. There is a "primary" and a "secondary" radio port.

    The "primary" radio port is where the "main" repeater connects. All DTMF commands must come from here. When the primary radio is disabled, the secondary radio is also disabled.

    The "secondary" radio port is where the secondary radio connects. The secondary radio can be a remote base, link radio, or a second repeater, which when activated, is "married" to the primary repeater. The secondary radio can be disabled without any effect on the primary radio. No DTMF commands are accepted from this port.

    The secondary radio can be a "Remote Base," which is a simplex radio connected to the repeater system that allows the repeater users to remotely operate on a different frequency/mode/band than the repeater.

    The secondary radio can be a link radio to interconnect the repeater on the main port to a distant repeater. The link radio can be simplex or full-duplex. In the case of a full-duplex link, the main receiver and the link receiver can be repeated over both transmitters simultaneously. A simplex link will always transmit when the main receiver is active, potentially blocking any traffic that might be received over the link at that time.

    The secondary port can be connected to a repeater which will "marry" or "slave" to the main repeater. Anything received on either repeater will be re-transmitted by both repeaters. This allows repeaters on two different bands to be easily and inexpensively linked.

    The secondary port has several different modes of operation that apply to some or all of the applications described above. The secondary port's modes can only be selected by sending DTMF to the receiver connected to the primary radio port. These modes are:

    In disabled mode, the secondary radio port is ignored by the controller.

    Alert Mode is a mode in which a different courtesy tone will be played if the receiver on the secondary port is unsquelched when the courtesy tone is requested. This is useful to indicate that traffic exists on a remote base frequency without having to hear the remote base traffic being repeated.

    In monitor mode, the secondary radio's receiver audio is retransmitted over the primary repeater, but the secondary port is inhibited from transmitting. This mode is also useful for remote base operation and monitoring linked repeaters.

    In transmit mode, the secondary radio's receiver audio is retransmitted by the primary radio, and the primary radio's audio is transmitted over the secondary radio. This mode is useful for remote bases, linked repeaters, and married repeaters.

    A married repeater requires that the controllers "secondary port is a duplex repeater" option be set. This option changes how the PTT line to the secondary radio port operates. Normally, the secondary radio port's PTT line follows the primary radio port's CAS (receiver active) line, that is the secondary port transmits when enabled and the primary receiver is active. When the "secondary port is a duplex repeater" option is set, the secondary radio port's PTT line follows the primary radio port's PTT line, so that the courtesy tone and tail are transmitted on the married repeater.

    The controller's programming is protected from unauthorized access by a 4-digit secret passcode. The controller is programmed by 8-digit DTMF commands that all begin with the 4-digit passcode. Throughout this manual, commands will be shown as ppppNNNN, where pppp represents the passcode, and NNNN is the actual command to the controller.

    In order to save space in the microprocessor memory, the NHRC-4 repeater controller represents all numbers in "hexadecimal" notation. Hexadecimal, or "hex" for short, is a base-16 number format that allows a 8-bit number to be represented in two digits. Hex numbers are 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, and F. Converting decimal (the normal base-10 numbers that 10-fingered humans prefer) to hex is simple. Divide the decimal number by 16 to get the 1st hex digit (10=A, 11=B, 12=C, 13=D, 14=E, 15=F), the remainder is the 2nd hex digit. For example, 60 decimal = 3 x 16 + 12 = 3C hex. Any decimal number from 0 to 255 may be represented in only 2 hex digits.

    Many scientific calculators can convert between these two number systems, and the Windows 95 calculator can, too, if the "scientific" view is selected. We provide a WWW page that can generate all the programming data for the NHRC-4 controller quickly and easily, see http://www.nhrc.net/nhrc-4/nhrc4prog.php.

    A 16 key DTMF pad has keys 0-9 and A-D, which map directly to their corresponding hex digits. Use the * key for digit E and the # key for digit F. A 16-key DTMF pad is required to program the controller.

    Note that all programming of the NHRC-4 must be transmitted to the radio attached to the primary radio port.

  2. Initializing the Controller
    The controller will need to be initialized to allow you to set your secret passcode. Initializing the controller also resets all programmable settings to the factory defaults, including the CW ID message. It should not be nessecary to initialize the controller again, unless you want to change the passcode. The only way to change the passcode is to initialize the controller.

    To initialize the controller, remove power and install the init jumper (JP3). Apply power to the controller, and after a few seconds, remove the init jumper. The controller is now in the initialize mode. If you "kerchunk" the primary port's receiver now, it will send the default CW ID of "DE NHRC/4". Now transmit (into the primary receiver) your 4-digit passcode. The controller will respond by sending "OK" in CW once. The controller will store the passcode and the main repeater will be enabled.

  3. Programming the Controller

    All programming is done by entering 8-digit DTMF sequences. The first 4 digits are the passcode chosen at initialization. The next 2 digits are an address or a function code. The last 2 digits are the data for address or function. To enter programming information, you must key your radio, enter the 8 digits, then unkey. If the controller understands your sequence, it will respond with "OK" in CW. If there is an error in your sequence, but the passcode is good, the controller will respond with "NG". If the controller does not understand your command at all, it will not respond with anything other than a courtesy beep, and then only if the courtesy beep is enabled. If the controller is disabled, and an unrecognized command is entered, no response will be transmitted at all.

    Responses to Commands
    "OK"Command accepted
    "NG"Command address or data is bad
    courtesy beep
    or nothing
    Command/password not accepted

    If you enter an incorrect sequence, you can unkey before all 8 digits are entered, and the sequence will be ignored. If you enter incorrect address or data values, just re-program the location affected with the correct data.

    1. Programming the Timers
      The NHRC-4 Repeater Controller provides several timers which control the operation of your repeater. The Hang Timer controls how long the repeater will continue to transmit after a received signal drops. This is often called the repeater's "tail." The tail is useful to eliminate annoying squelch crashes on users' radios. As long as a reply is transmitted before the hang timer expires, the repeater will not drop, which would cause a squelch crash in the users' radios.

      The Timeout Timer controls the maximum duration of the retransmission of a received signal. It is more of a safety measure to protect the repeater from damage than a way to discourage long-winded users, even though it is often used that way. The NHRC-4 has a separate timeout timer for each port. The timeout timer(s) can be disabled by programming a 0 length.

      The ID Timer sets the maximum duration between transmissions of the repeater's ID message(s). (Note that the NHRC-4 may transmit an ID message before the timer expires in order to avoid transmitting the ID message while a user is transmitting.)

      The timer values are stored as an 8-bit value which allows a range of 0 to 255. Some of the timers require high-resolution timing of short durations, and others require lower resolution timing of longer durations. Therefore, timers values are scaled by either 1/10, 1, or 10 seconds, depending on the application.

      Timer Address and Resolution
      Timer Address Resolution
      Max. Value
      Hang Timer031/1025.5
      Primary Receiver Timeout Timer041255
      Secondary Receiver Timeout Timer051255
      ID Timer06102550
      Fan Timer07102550

      Enter the 4-digit passcode, the timer address, and the timer value, scaled appropriately. For example, to program the Hang Timer for 10 seconds, enter pppp0364, where pppp is your secret passcode, 03 is the hang timer address, and 64 is the hexadecimal value for 100, which would be 10.0 seconds.

    2. Programming the CW Messages
      CW messages are programmed by storing encoded CW characters into specific addresses in the controller. Use the Morse Code Character Encoding table and the Programming Memory Map to determine the data and address for the CW message characters. For example, to program "DE N1KDO/R" for the CW ID, you would use the following commands:

      DTMF Command Address Data Description/Purpose
      pppp30## 30FF End of message marker

      The CW ID can store a message of up to 20 characters. Do not exceed 20 characters. Be sure to include the end-of-message character (FF) at the end of each message.

    3. Programming the Flag Bits
      Controller features can be enabled with the use of the Configuration Flag Bits. These bits are encoded in a single byte, which is programmed into the controller at address 01. Multiple flag bits can be selected by adding their hex weights.

      For example, to set up a controller with an audio delay on each port, and configure the digital output for fan control, you would add 02, 04, and 10 to produce hex 16, which you would then program into address 01 in the controller with this command:


      In addition to programming the flag bits as a group using address 01, the controller supports commands to set or clear these bits individually. Command 60 is used to clear (zero) a specified configuration bit, and command 61 is used to set (one) a specified configuration bit. For example, to set (turn on) bit 3 (to suppress DTMF muting), enter the following command: pppp6103. To clear bit 3 and enable the DTMF muting, enter this command: pppp6003. Note that the bit number, not it's hex weight is used for commands 60 and 61.

      Configuration Flag Bits
      Bit Hex
      0 01 00000001 secondary port is duplex repeater
      1 02 00000010 audio delay on primary receiver
      2 04 00000100 audio delay on secondary receiver
      3 08 00001000 disable DTMF muting
      4 10 00010000 digital output is fan control
      5 20 00100000 main receiver has priority over link receiver*
      6 40 01000000 drop main transmitter to mute DTMF**
      7 80 10000000 drop secondary transmitter to mute DTMF**
      *Software version >= 1.4 only.
      *Software version >= 2.2 only.

      Example Configurations
      Flag Bits
      Features Selected
      01duplex repeater on secondary port
      08no DTMF muting
      10digital output is fan control
      11duplex repeater on secondary port
      digital output is fan control
      17duplex repeater on secondary port
      NHRC-DAD on primary port
      NHRC-DAD on secondary port
      digital output is fan control
      36NHRC-DAD on primary port
      NHRC-DAD on secondary port
      digital output is fan control
      main receiver has priority over link receiver*
      1Fduplex repeater on secondary port
      NHRC-DAD on primary port
      NHRC-DAD on secondary port
      no DTMF muting
      digital output is fan control
      *Software version >= 1.4 only.

    4. Programming the Courtesy Tones
      The NHRC-4 uses up to five different courtesy tones to indicate various events:
      • primary receiver
      • primary receiver, the secondary transmitter enabled
      • primary receiver, alert mode
      • secondary receiver
      • secondary receiver, secondary transmitter enabled

      Each tone is individually programmable, and can be unique for that event, programmed to be the same as other events, or programmed empty to be silent.

      The NHRC-4 will play the appropriate courtesy tones 500 milliseconds (1/2 second) after a receiver drops. The courtesy tones all consist of four 100 millisecond (1/10 second) segments. Each segment can be no tone, low tone (a "boop", about 440 hertz), or high tone (a "beep", about 880 hertz). If all the segments are programmed as no tone, the courtesy tone will be disabled. The default courtesy tones are shown in the Default Courtesy Tones Table.

      Default Courtesy Tones
      Event Default Tones Binary
      Primary Receiver beep none none none 00 00 00 01 01
      Primary Receiver
      Secondary Transmitter Enabled
      beep none beep none 00 01 00 01 11
      Primary Receiver
      Secondard Receiver Alert Mode
      beep none boop none 00 11 00 01 31
      Secondary Receiver boop none none none 00 00 00 11 03
      Secondary Receiver
      Secondary Transmitter Enabled
      boop none boop none 00 11 00 11 33

      The courtesy tones are encoded as four pairs of bits, with the first segment encoded as the two least significant bits, and the fourth segment encoded as the 2 most significant bits. Each pair of bits is allowed three possible values to indicate no tone, beep, or boop. The Half Courtesy Tones table shows tones generated for valid 4-bit values and their hex representation. To use this table, first determine the tones for each of the four segments, then find the hex digit that represents the first and second pair of tones. The second pair's digit becomes the first hex digit, and the first pair's digit becomes the second hex digit. For example, to encode a courtesy tone of boop-beep-boop-none, you would find the first pair (boop-beep) in the table as the hex digit D and the second pair (boop-none) in the table as the hex digit 3, so your courtesy tone would be encoded as 3D.

      Half Courtesy Tones
      Tones Binary
      none none 00 00 0
      none beep 01 00 4
      none boop 11 00 C
      beep none 00 01 1
      beep beep 01 01 5
      beep boop 01 11 7
      boop none 00 11 3
      boop beep 11 01 D
      boop boop 11 11 F

    5. Previewing Stored CW Messages
      Stored CW messages can be previewed with the command 40 followed with the message number you want to preview. The message numbers can be found in the Message Numbers table. For example, to preview the secondary receiver timeout message, send command:

  4. Operating
    1. Enabling/Disabling the Repeater
      The radio ports can be disabled or enabled by remote control by setting the code for the operational mode in location 00. See the Operational Modes Table for the codes that indicate the mode you want.

      Operational Modes
      Code Operational Mode
      00 Primary & Secondary off
      01 Primary enabled
      02 Primary enabled, secondary alert mode
      03 Primary enabled, secondary monitor mode
      04 Primary enabled, secondary transmit mode

      For instance, to disable the repeater, send command:


      To enable the repeater on the primary port, send command:

      To enable the repeater on the primary port, and select monitor mode for the secondary port, send command:

    2. Using the NHRC-DAD Digital Audio Delay with the NHRC-4 Repeater Controller.
      The NHRC-4 Repeater Controller supports the optional NHRC-DAD digital audio delay board. The NHRC-DAD allows complete muting of received DTMF tones (no leading beep before muting), and suppression of squelch crashes when the received signal drops. The NHRC-DAD has a 128 ms delay on all received audio. The NHRC-4 Repeater Controller supports a NHRC-DAD on both radio ports with a software switch and a dedicated DAD connector for each port. If the DAD is not present, then a jumper must be installed between pins 2 and 3 of the DAD connector (see installation manual). If the DAD is present, then the appropriate configuration flag bit must be set.

  5. Programming Example
    Programming the NHRC-4 Repeater Controller can seem quite complicated at first. This section of the manual is intended as a tutorial to help you learn how to program your controller.

    Let's assume we want to program a NHRC-4 Repeater Controller with the following parameters:

    CW ID: DE N1LTL/R FN42
    Hang Time 7.5 seconds
    Timeout timer 120 seconds

    First, we will initialize the controller. Install JP3 and apply power to the controller to initialize. After a few seconds, remove JP3. Send DTMF 2381 to set access code to 2381. The controller will send "OK" in CW to indicate the passcode was accepted. Now the controller is initialized, and disabled.

    Now we will enable the controller. Send DTMF 23810001 (passcode=2381, address=00, data=01). The controller will send "OK" in CW to indicate the command was successful.

    We will now program the CW ID. Looking at the "Programming Memory Map", we can see that the first location for the CW ID is 26. The first letter of the ID is 'D', which we look up in the "Morse Code Character Encoding" table and discover that the encoding for 'D' is 09. Location 26 gets programmed with 09.

    Send DTMF 23812609 to program the letter 'D' as the first character of the CW ID. The controller will send "OK" in CW if the command is accepted. If you entered the command correctly, but you don't get the "OK", your DTMF digits may not all be decoding. See the Installation Guide for your controller to readjust the audio level for the DTMF decoder.

    The next character is the letter 'E', which is encoded as 02, and will be programmed into the next address, 27. Send DTMF 23812702.

    The next character is the space character, and it will be programmed into address 29. Send DTMF 23812800. Here are the rest of the sequences to program the rest of the ID message:

    23812905 (N in address 29)
    23812A3* (1 in address 2A)
    23812B12 (L in address 2B)
    23812C03 (T in address 2C)
    23812D12 (L in address 2D)
    23812*29 (/ in address 2E)
    23812#0A (R in address 2F)
    23813000 (space in address 30)
    23813114 (F in address 31)
    23813205 (N in address 32)
    23813330 (4 in address 33)
    2381343C (2 in address 34)
    238135FF (EOM in address 35)
    After the last character of the CW ID is programmed, the End-of-Message character must be programmed. In this case, the last character of the ID message was programmed into address 34, so the EOM character, which is encoded as FF, goes into address 35:
    238135## (EOM into address 35.)

    To program the hang timer, we must first determine the address of the hang timer by consulting the Programming Memory Map. The Hang Timer preset is stored in location 03. Next, we need to convert the 7.5 seconds into tenths, which would be 75 tenths of a second. Then the 75 gets converted to hex:

    75 / 16 = 4 with a remainder of 11, so 75 decimal equals 4B hex.
    Now program the hang timer preset by sending 2381034B.

    To program the primary receiver's timer with 120 seconds, we get the address of the primary receiver's timeout timer preset, which is 04, and then convert 120 seconds to hex:

    120 / 16 = 7 with a remainder of 8, so 120 decimal equals 78 hex.
    So we will program location 04 with 78: 23810478

    Any CW message can be played back at any time by "programming" location 40 with the message code you want to play. To play the CW ID, send 23814000.

Message Contents
Message NumberContentsDefault
0ID messageDE NHRC/4
1primary receiver timeout messageTO
2valid command confirm messageOK
3invalid command messageNG
4secondary receiver timeout messageRB TO

Programming Memory Map
AddressDefault DataComment
0001enable flag
00 Primary & Secondary off
01 Primary repeater enabled
02 Primary enabled, secondary alert mode
03 Primary enabled, secondary monitor mode
04 Primary enabled, secondary transmit mode
0110Configuration Flags (see table)
0200Digital output control
00 off
01 on
02 1/2 sec on pulse
0332Hang timer preset, in tenths
041ePrimary receiver timout timer, in seconds
051eSecondary receiver timout timer, in seconds
0636id timer preset, in 10 seconds
0700fan timer, in 10 seconds
0801primary receiver courtesy tone
0911primary receiver courtesy tone
secondary transmitter enabled
0a31primary receiver courtesy tone
secondary receiver alert mode
0b03secondary receiver courtesy tone
0c33secondary receiver courtesy tone
secondary transmitter enabled
0e0f'O' OK Message
1405'N' NG Message
1a03'T' TO Message
200a'R' TO Message
2200' '
2609'D' CW ID starts here
3affEOM can fit 20 letter id
3bffEOM (safety)
3cn/apasscode digit 1
3dn/apasscode digit 2
3en/apasscode digit 3
3fn/apasscode digit 4

Note that the entire range of 26-3B is available for your CW ID message.
Do not forget to terminate the message with the FF (end-of-message) character.

Morse Code Character Encoding
Character Morse
ar.-.-. 001010102a
bt-...- 0011000131
/ -..-. 0010100129
0 ----- 001111113f
1 .---- 001111103e
2 ..--- 001111003c
3 ...-- 0011100038
4 ....- 0011000030
5 ..... 0010000020
6 -.... 0010000121
7 --... 0010001123
8 ---.. 0010011127
9 ----. 001011112f
a .- 0000011006
b -... 0001000111
c -.-. 0001010115
d -.. 0000100109
e . 0000001002
f ..-. 0001010014
g --. 000010110b
Character Morse
h .... 0001000010
i .. 0000010004
j .--- 000111101e
k -.- 000011010d
l .-.. 0001001012
m -- 0000011107
n -. 0000010105
o --- 000011110f
p .--. 0001011016
q --.- 000110111b
r .-. 000010100a
s ... 0000100008
t - 0000001103
u ..- 000011000c
v ...- 0001100018
w .-- 000011100e
x -..- 0001100119
y -.-- 000111011d
z --.. 0001001113
space 0000000000
EOM 11111111ff

NHRC-4 Repeater Controller Page
NHRC-4/M2 Repeater Controller Page
NHRC-4/MVP Repeater Controller Page
/nhrc-4/operating.php, version 1.22, last modified 21 September 2010 11:55
Copyright © 1997-2010, NHRC LLC, all rights reserved.
Mail comments to