MaxTrac index
MaraTrac index
Motorola index
Back to Home
  How the MaxTrac Radios Control
Transmit Power and Deviation Levels

By Robert W. Meister WA1MIK
  Print this Page

This article provides information on how the radios control the transmitter's power and deviation levels and why it goes crazy on some amateur frequencies. The information is mainly about the MaxTrac series but it applies equally to the very similar Radius, GM300, and MaraTrac radios. Generalizations will be used; I am purposely omitting program details.

How the Stock Firmware Works:

When programming a radio with RSS, you first read the code plug. This gives RSS some knowledge of at least the existing modes and the frequency band and range the radio is supposed to operate over. It translates the transmit frequency you've entered in MHz to a value that's used internally by the radio. Based on the band, RSS chooses a base frequency, which is subtracted from the frequency you entered. Depending on whether the input frequency is evenly divisible by 5.0 or 6.25 kHz, RSS calculates the number of 5.0 or 6.25 kHz steps necessary to get to your frequency. For example, if we chose 44.450 MHz, RSS would subtract 0.000 MHz from that (other bands have non-zero values), leaving 44.450 MHz, or 44,450 kHz. As this frequency is evenly divisible by 5.0 kHz, RSS would divide it by 5 and store 8,890 as the code plug data for that channel's transmit frequency. Every band/range combination has its own base frequency so the value stored in the code plug can go from 0 to 32,767 steps of 5.0 or 6.25 kHz. RSS adds 32,768 (sets the most significant bit of the 16 bit number) to the value if 6.25 kHz steps are used. Both the radio and RSS know what these base frequencies are. It's important that they both use the same calculations and values.

When the radio is aligned, someone (you, a radio technician, or the factory) set 16 tuning points to equalize the transmitter's output power and deviation levels across the full operating range to compensate for component and manufacturing tolerances. Each of these points covers roughly 1/16th of the operating range for the radio. For the low-band radio we used above, the range goes from 42.000 to 50.000 MHz. RSS divides this 8 MHz chunk into 15 segments 0.535 MHz wide, and includes one final frequency, giving us 16 total tuning points. Therefore the first segment covers 42.000-42.535 MHz, the second covers 42.535-43.070 MHz, and so on. RSS knows exactly what the starting frequencies and segment sizes are, so it can display the alignment frequencies on the screen. In the table below, the frequencies are in MHz.

Index #Seg #Freq

During radio alignment, the radio transmits on a particular segment's starting frequency (RSS displays the frequency it expects the radio to transmit on, but it only tells the radio which segment number to operate on). The technician adjusts the radio for consistent transmitter output power and deviation, so the power and deviation are equal across the entire operating range of the radio. These 32 tuning values are stored in the code plug memory (EEPROM) in the radio's CPU. There are two such tables of 16 values: one for power, one for deviation.

RSS and the radio's firmware have lists of the segment's starting frequencies and sizes for each frequency band and range. For example, low-band radios have three ranges: 29.7-36.0, 36.0-42.0, and 42.0-50.0 MHz. High-band radios have two ranges: 136.0-162.0 and 146.0-174.0 MHz. UHF radios have four ranges, and 800 and 900 MHz radios have one range each and must deal with talk-around or direct frequencies. RSS uses these to encode the operating frequencies into some number of 5.0 or 6.25 kHz steps. The radio uses these for transmit power and deviation adjustments.

Note that I have chosen frequencies that were evenly divisible by 5.0 kHz, which is also the step size I have used. Everything works similarly well for frequencies on 12.5 kHz steps, which are divisible by 6.25 kHz. The base frequency and step size values are changed slightly but the math works the same by substituting 6.25 kHz for 5.0 kHz.

What Happens in the Commercial Bands:

When the radio changes modes, it has to determine what values to use to set the transmitter output power and deviation for the desired transmit frequency. The radio performs a calculation based on the frequency data it has (8,890 from the above example), and subtracts a value stored in the program ROM (8,400 equal to 42.000 MHz or 42,000 kHz, the start frequency for the first segment of the tables). The result (490) is then divided by 107 (remember: these are 5 kHz steps, so this is equivalent to 535 kHz, the size of each segment) to come up with an integral quotient between 0 and 15, which will be used as an index into the table (note the Index # column above). So for our example of 44.450 MHz, the radio will eventually calculate 490 divided by 107, and get a quotient or index value of 4, corresponding to segment 5; this covers the 44.140-44.675 MHz segment of the range the transmitter will be operating on, and our 44.450 MHz transmit frequency is covered by segment. The radio picks up the appropriate power and deviation values from the two tables, and when the PTT button is pressed, it loads them into the power and deviation control circuits on the logic board, sends information to the synthesizer on the RF board, and begins transmitting with the correct power and deviation on the selected frequency. The microprocessor also has to deal with generating PL or DPL. It makes this transition in less than 25 milliseconds.

What Happens in the Ham Bands:

All of this works fine when the radio is operating within its expected frequency range. RSS and the radio know that the legal frequencies are 42.0-50.0 MHz and you shouldn't be trying to program the radio outside these limits. But hams use these commercial radios in the amateur bands, and some know how to get around this restriction by either using the SHIFT-NUM method or by modifying the MDF file.

So let's see what happens with a six-meter frequency. Let's choose 52.525 MHz. This frequency is divisible by both 5.0 kHz and 6.25 kHz, but RSS chooses 5 kHz in this case. Again, the base frequency for low-band radios is 0.000 MHz, so we just take 52,525 kHz, divide it by 5, and come up with 10,505 steps of 5 kHz. The radio would take this value and subtract 8,400 (42,000 kHz divided by 5 kHz), coming up with 2,105. This is divided by 107 (equal to 535 kHz, the size of each segment in 5 kHz steps), which produces a quotient or index value of 19, equivalent to segment 20. Whoops. That's bigger than the tables. Houston, we have a problem. As the power and deviation tuning value tables only have 16 entries in them, the radio attempts to use a value at index 19, which is past the end of the table. The radio doesn't protect or check for this situation; instead it picks up whatever value is in memory at that location and uses it for the power or deviation just like it did in the earlier example. No one has any idea what value is in the radio's memory after the two tables, so the power and/or deviation gets set to some random value, which will cause the radio to make some random amount of power and deviation. Therein lies the problem.

Dealing With This Problem:

I know of three fixes or workarounds for this issue:

  1. Add manual power and deviation controls.
  2. Modify the firmware so it always uses segment 1's values.
  3. Modify the firmware to change the tuning segment start or size.

There are already articles on repeater-builder that deal with option 1: manual power and deviation controls. Either or both can be added to any of these radios.

For option 2, the code in the firmware that adds the quotient or index value to the base address of the power or deviation table (to select the appropriate tuning value) can be modified to disable this addition. Thus, the radio always uses the first tuning value in either table. This solution is as good as option 1 above but it requires changing the firmware rather than modifying the logic board, and requires a computer and RSS to set the power or deviation. A screwdriver (option 1) is much easier to tweak in the field.

The rest of this article deals with option 3 above.

Modifying the Firmware's Alignment Parameters:

The actual locations to be changed, and their values, as well as the procedure to use, are beyond the scope of this article. At one time, an appropriately modified EPROM was being sold on a popular auction site, but that source has vanished. Contact the author for more detailed information.

As designed, the radio has fixed values for the start frequency and segment size for each band/range combination. For the 42-50 MHz low-band radio we've been dealing with, changing the segment size from 535 kHz to 800 kHz lets the radio handle your out-of-range frequencies (up to 54.0 MHz). The calculations will now result in a quotient or index value of 0 through 15, which will select a valid segment (which we've numbered 1 through 16 to match the field numbers on the RSS alignment screens), so the radio gets valid tuning data, and the power and deviation are properly controlled. Let's generate the table above using a larger segment size of 800 kHz.

Index #Seg #Freq

After modifying the starting frequency or segment size, the radio must be realigned. Many of the values will be different, since the radio is not expecting to operate out-of-range and has never been aligned above 50 MHz.

So let's try that same six-meter frequency of 52.525 MHz again. We just take 52,525 kHz, divide it by 5, and come up with 10,505 steps of 5 kHz. The radio would take this value and subtract 8,400 (42,000 kHz divided by 5 kHz), coming up with 2,105. We divide this by 160 (equal to 800 kHz, the size of each segment in 5 kHz steps) to get a quotient or index value of 13. Note that this points us to segment 14, which covers 52.4 to 53.2 MHz, and that covers the desired transmit frequency of 52.525 MHz. The radio can now properly pick up valid tuning values from the power and deviation tables.

You get a similar issue when trying to operate a radio below its normal operating range, such as on 29.6 MHz for a 29.7-36.0 MHz low-band radio or 144.390 MHz on a 146-174 MHz high-band radio. In this case, when the base frequency for the range (29.7 or 146.0 MHz) is subtracted from the operating frequency, a negative number results, which the computer interprets as a very large positive value. When this is divided by the step size to find out which tuning segment to use, the result is a quotient that will most likely be thousands of times greater than the value of 0-15 that we expect. To deal with the bottom end of a range, the starting frequency for the alignment tables can be lowered and the segment size increased slightly to allow the radio to operate over a larger frequency range. For example, the lowest band covers 29.6-36 MHz and has 15 segments of approximately 400 kHz. By reducing the start frequency to 28.0 and increasing the segment size to 535 kHz, we can now make the radio cover 28.0-36.0 MHz. Similarly the 146-174 MHz range could be lowered to 144-172 MHz just by changing the base frequency and leaving the segment size the same.

Previously, when RSS was aligning a radio, it just sent a segment number to the radio and RSS displayed the transmit frequency that was hard-coded within the program. With unmodified firmware, this information will be in agreement, but once you change the start frequency or segment size for a particular band/range, RSS will no longer display the radio's actual/correct transmit frequency. This can be a rather difficult concept for some people. Just ignore the displayed frequency and adjust the power or deviation anyway. The modified firmware will also affect the frequency warp adjustment, since RSS usually uses a central segment (segment 8) for this process. For the 42-50 MHz radio we've been using as an example, the warp adjustment frequency (segment 8) would be 45.745 MHz for the original firmware and 47.600 MHz for the modified firmware, even though RSS would still display 45.745 MHz.

Contact Information:

The author can be contacted at: his-callsign [ at ] comcast [ dot ] net.

Back to the top of the page
Up one level (MaxTrac index)
Up one level (MaraTrac index)
Up two levels (Motorola index)
Back to Home

This page created on Monday 16-Jun-2014.

Article text, artistic layout, and hand-coded HTML © Copyright 2011 by Robert W. Meister WA1MIK.

This web page, this web site, the information presented in and on its pages and in these modifications and conversions is © Copyrighted 1995 and (date of last update) by Kevin Custer W3KKC and multiple originating authors. All Rights Reserved, including that of paper and web publication elsewhere.