General Information

The GM300 and the M120 are the same series of radio. The M120 is just the limited version, not unlike the Maxtrac 50 compared with the Maxtrac 300.

Look here for the pinout of the accessory connector for the 8 channel radio (which use a masked logic board) or 16 channel radio (which use an expanded logic board).

If you want an easy way to connect to the Accessory Connector on these radios, you can order the HLN9242A or HLN9457A Accessory Connector kits. These include an accessory connector housing, some pins, and some wires with pins already attached. One thing to note, the HLN9242A kit also includes a pin extractor for removing previously installed pins.

Here is the pinout of the microphone connector.

Are you having problems getting your radio to power up? Well, check here for some information that might help.

This radio can decode and display up to 126 PTT IDs. But how, you ask, since it only has a 2 digit display? It encodes (in HEX) the first two numbers of the PTT ID. See below:

PTT ID     GM300 display
007          07
099          99
105          A5
110          B0
120          C0

Good luck in adding scan to a GM300 8 Channel radio, tried it by editing the .mdf file, and the RSS just crashes when you try to load a codeplug. You may find that the radio already has user-selectable scan, enabled off the front panel. Try it and see if it works.

If you happen to mess up the codeplug in your radio, and for some reason consider it necessary to make it into a Maxtrac... you can follow this procedure to do the conversion.

If you want to build a nice little programmer for the GM300/M120 radios, one that does not require a RIB, check out this link. Just connect the BUS+ and GND wires from the circuit to the appropriate pins on the microphone connector as shown in the programming cable schematic. You can also check the RIB page for some additional circuits.

Linking Radios for Repeater/Crossband Operation

If you need a repeater interface cable to connect a couple of GM300, M120, or M10 radios together, look here.

Need to connect a couple of GM300 radios together? Here is a schematic of the R.I.C.K. (Repeater Interface Controller Kit) to get you started. Order the service manual part number 6880901Z79 from Motorola. Note: If you try and print this schematic with your brower, it probably won't work. So, save the image and print it using a graphics program.

9600 Baud Packet Modifications

The GM300 Series are 9600 baud packet capable. They do need a minor modification though. For RX, its no big deal, just take RX audio from PIN 11 of the Accessory Connector and swing JU551 to the (A) position (Flat RX Unmuted).

For TX audio, you will have to run a jumper to the junction of R223, C228, R222 on the RF board to inject the data (if applicable you may need to set the deviation pot in the radio to maximum). You might want to put a pot on your TX line somewhat like the setup Motorola uses (voltage divider) to adjust the deviation.

It would be wise to do some measurements to make sure you have the deviation correct. You might also want run the RX and TX pins to the unused pins on the front mic connector after the mods are done.

Out of band programming

To program frequencies outside of the rated bandsplit in the GM300 can be very simple, follow the listed steps:

If you are in need of the programming cable, look here.

Out of band by modifying the .MDF file

There is another method of programming the radio out of band, it is a little more complicated than the method described above, but it will work just fine.

In the GM300.MDF file make a Checksum-16 of the whole file (the F12 option in Hex Workshop), in our case we ended up with 0x5D53 (RSS V 05.00), write this down, you might need it later.

Look starting at about offset 0x2AC, you should see something like:

The highlighted area contains all the possible bandsplits that a GM300 could be.

A single bandsplit entry looks like:

The bytes to take note of are:

05 00 = Bandsplit identifier (Note: the bandsplit identifier is at the end of the frequency list)

94 11 = 4500 in decimal, ie 450.0000 MHz

5C 12 = 4700 in decimal, ie 470.0000 MHz

Note there are 3 occurances of the strings 94 11 and 5C 12, the first set is the limits displayed in the Radio Wide menu (F4-F2). The second set are the TX limits for the radio. The third set are the RX limits for the radio (note that if the TX and RX limits are not set the same the RX limits are screwed up).

To figure out what hex to enter for your bandsplits you can either use the Base Convertor (in Hex Workshop), or use a calculator with a HEX --> DECIMAL conversion function.

If you are using a calculator enter your limit (ie 4400 for 440.000 MHz) and convert it to hex, you should get 0x1130. When you enter the data into the .mdf file you have to reverse the bits such that you would actually enter 0x3011 in the field you are changing.

If you are using Hex Workshop, launch the Base Converter utility and select "Intel Byte Order". Then, enter your desired frequency and write down the hex result.

You can then directly enter the hex result (0x3011) into the bandsplit field.

In this example we are changing the lower bandsplit of a 450-470MHz radio to 440-470MHz.

Save the new file (you might want to make a backup copy of the original if you haven't already.

Some of the RSS packages (we don't have codeplugs for everything, so we can't check them all) check the checksum of the .mdf file when you try and load a codeplug and return an error if the checksum of the .mdf file doesn't match the one stored in the program. Try running the RSS with the new .mdf file, if you don't get an error when you run the RSS and load a codeplug then you don't have to worry about the next step.

Correcting the .mdf File Checksum

If you get a corrupt .mdf file error then you will have to go back and correct the checksum in your edited .mdf file. Load the file back in your hex editor and make a Checksum-16 of the file. If you compare the new checksum

with the original one

You will find they are probably different.

The only way we have to correct the checksum of the file at this time is to keep editing bits and making Checksum-16 calculations until the edited file's checksum and the original match. You can either edit the Copyright statement or some of the model descriptions in the file. Just take one or a few of these insignificant bytes (some experimentation may be required depending on by how much the cheksum is out) and add or subtract a few bits of the numbers make a Checksum-16 of the file. You should notice the checksum has changed by the number of bits you added or subtracted. Keep going until the checksum's match.

Once the checksum's of the files match you should be able to run the RSS, load the codeplug, and enter the frequencies within your new bandsplits with ease.

Add channels by modifying the .MDF file

You may be able to increase the number of channels in your radio. You can try by following the procedure below:

Search the .mdf file for your radio's model number. You should see something like (for a M33GMC29C2__):

Now, looking at the bytes after the model number, you will find the following:

The 0x03 is the bandsplit used by this model, you can find this in the bandsplit list discussed above.

The 0x10 is the number of channels in the radio. 0x08 = 8 ch, 0x10 = 16 ch, 0x20 = 32 ch, 0x28 = 40 ch.

Now, if you have a 8ch radio you can try bumping it up to 16, we've been told that it works fine (in fact, depending on what other options you use you might even get 17 channels).

You can take a 16ch radio all the way up to 40 ch (0x28) and it should work fine, any more than that and it does strange things (codeplug probably gets too full and wraps).

Another thing you will notice is that you can only have the first 16 channels in the scan list (if anyone finds a workaround, let us know).

Note: You will have to correct the checksum for the file as described above. Also, if you try and program in all the channels, you may get an out of memory error. This can be rectified by either deleting 1 or 2 channels, or turning off some other options like MDC to free up some codeplug space.

Codeplug Hacking

OK, there is a way to change the serial number in the GM300, buy you will need Maxtrac Lab RSS to do it.

First off, connect up your radio and fire up the Maxtrac Lab RSS.

You will want use the EEPROM Access feature of this RSS (aka Bit Banger) which is available by selecting options F2-F9 from the Main Menu.

The software will access the radio and read a chunk out of the codeplug.

Turn on ASCII by selecting option F9. This will all you to see what the hex characters really mean.

WARNING: Using the EEPROM Access feature has the potential to SERIOUSLY screw up your radio. Unless you know what you are doing, you would be well advised to stay away (unless you want a doorstop).

The chunk of the codeplug the software reads is from addresses B600h to B62F. By looking at the ASCII representations, you will see that the serial number in the GM300 is located at locations B600h through B609h.

Some other things you may find interesting, if you were to read the radio with GM300 RSS, go into the Help Menu (F1) and then go into Other Help (F9), you would see a Panel Number and a Software Version listed. This info tells the RSS some important info about what features the radio supports. The Panel Number also tells the radio what kind of display is attached and how to support it.

Well, as you look in the codeplug, you can find the Panel Number stored at location B60Ah and the Software Version stored at B60Dh.

Another interesting thing are the bytes in locations B60Bh and B60Ch. These two bytes actually define the model of the radio. If you were to look up your model number in the .mdf file (see above) and look at the three bytes preceeding the model number, you will see that the first two bytes correspond with the bytes at B60Bh and B60Ch in the codeplug.

Now, the last and most important thing you should be aware of, is the checksum. For the data stored in locations B600h to B610h, the checksum is stored in location B611h. Every time the radio is reset, it recalculates the checksum for the block of data and compares it to the checksum stored at B611h. If it matches, then the radio will give a good power-up beep and everything will be fine. If the calculated checksum and the stored checksum do not match, you will power up to the dreaded low pitch codeplug error tone and when you read the radio with RSS, it will fail with a codeplug error.

So, any changes made to the block of data between B600h and B610h must also include a change to the checksum stored at B611h.

Now, unfortunately the "Correct Checksum" feature of the Maxtrac Lab RSS will not work on the GM300, the Maxtrac uses a different codeplug structure and using this option will corrupt your GM300's codeplug. In order to calculate the proper checksum, you will have to do it manually.

If you are going to make any changes to your GM300 codeplug, do the following:

If everything went well, the radio should reset with a good tone, otherwise, you have screwed something up. Try restoring all the original data by entering it in by hand and start again.

Now, when you read the radio with GM300 RSS, it should have a new serial number.

Blanking/Recovering a GM300 Logic Board

At this time there is no GM300 Lab RSS that we are aware of that will allow you to blank and re-initialize a GM300 logic board.

The only tools that will let you blank the logic board are Maxtrac Lab RSS, and Emmco C++ Toolkit.

In order to recover the radio however, you need a codeplug from the radio that has been blanked, or a codeplug from an exact same model.

If you are using the Emmco C++ Toolkit, you can take the codeplug and dump it into the radio directly. You will then have to correct the serial number using the procedure above if you used a codeplug from another radio.

If you are using Maxtrac Lab RSS, I hope you like bit banging, because you are going to have to do some editing to get it back.

First, you need to gather some information.

After you blank the logic board (Extended Codeplug/Clear Tuning Data), the codeplug is setup to be re-initialized by Maxtrac RSS. The GM300 codeplug structure is different.

First off, you need to go into the EEPROM Access feature (and turn on ASCII (F9)).

You will see that the codeplug is all FFh's except for the data in locations B613h through B61Ch. The 20h's are spaces and are the location where the serial number is stored in a Maxtrac. In a GM300, the serial number is stored in locations B600h through B609h.

Use the TAB key to get to location B613h. Fill locations B613h to B61Ch with FFh's. Use to get back to location B600h.

In locations B600h through B609h, enter the the serial number for the codeplug you are going to use (you can figure out the hex for each digit).

Update: Instead of putting in the actual serial number of the codeplug you are about to load, try filling locations B600h to B609h with 20h (space) instead. Once you do that, the GM300 RSS may recognize the board as being blank and allow you to dump whatever codeplug you like (use the RIGHT one!) into the radio without any further editing. If this does not work, then continue on with the rest of this procedure.

In location B60Ah, enter the panel number.

In locations B60Bh and B60Ch, enter the model index you got out of the .mdf file. NOTE: You have to enter the reverse of what you have written down. If your model is a 1B02h, you would enter 02h into location B60Bh and 1Bh into location B60Ch.

In location B60Dh, enter the software version.

Select Write RAM (F8) to dump the data into the radio.

Now, you still need to figure out the checksum and enter it into location B611h. Use the procedure above in Codeplug Hacking to figure out what you need to enter for the checksum. Once you have figured out the checksum, stick it into location B611h, and Write RAM.

You are now ready for the big test. Fire up the GM300 RSS and load your codeplug. Try writing it to the radio. If you did everything correctly, then you should get a good beep out of the radio when it resets. If not, you're on your own, I don't know what you did wrong.

A couple of issues you need to be aware of. First, if you used a codeplug from a different radio in order to get the blanked one back to life, you need to go through the serial number changing procedure to get it back to what it should be (on the sticker for the radio). Second, since the radio was blanked, all the tuning and calibration data was cleared. The radio needs to be retuned by a radio shop to get it calibrated/aligned so that it operated within specifications.

There you go, that's how to recover a blanked GM300 series radio. Unfortunately it isn't as easy as a Maxtrac, but the procedure does work.

We have tried hacking around a bit in a blank codeplug to see if there was any way to get the GM300 RSS to allow a blank board re-initialization, but have not had any luck. So, that is the reason that you need a codeplug to get some important setup data from.

Please do not try to make a radio something it is not. You MUST use a codeplug from an EXACT model of the radio you are trying to recover. You cannot make a UHF into a VHF model, a high power into a low power radio, an masked codeplug into an expanded codeplug radio, or anything else silly like that. It WILL NOT work.

Using a PAC-RT With the GM300

Do you want to use a PAC-RT with a GM300? You will need the following cable:

MaxTrac					PAC RT
Acc Conn.	
	3  -------------------- 6
	13 -------------------- 1
	11 -------------------- 21 (Shielded Cable)
	2  -------------------- 19 (Shielded Cable)
	7  -------------------- 8 
			  ----- 2
			  ----- 16
			  ----- 10
			  ----- 17

Cable shields are connected to PAC-RT Pin 18 (Ground) and not connected at radio. There are two jumpers inside the PAC-RT Connector, Pin 2 to 16 (B+) and 10 to 17 (PTT Ground).

For on-off control:
PAC-RT	Pin 2 B+ to on/off switch  
	Pin 9 & 15 other side of on/off switch 
(Pin 9 = PAC on/off, Pin 15 = Portable in/out) 
Both must be connected to B+ for unit to turn on,
Pin 22 ground (not required, unless you want an indicator lamp, or something).

GM300 RSS and the OpCode #7 Error

It seems that some radio's are very particular when it comes to programming voltages from the RIB. Try using a brand new battery fresh out of the package or use an external voltage source for the RIB and see what happens.

We have also heard of some people getting this error when trying to program the radio in a DOS box under Windows. When they use DOS only, it programs just fine. Not sure why anyone would even think of attempting to try and run RSS under Windows to begin with... you're just asking for trouble.

Another solution to getting rid of the error was to re-install the RSS

Even another solution was to use a backup copy of the .mdf file, in this case the error popped up after modifying the .mdf.

Distorted Audio Problems/Microphonics

There are a few things that commonly cause this problem.

First, remove the radio covers and the VCO shield. Tighten all the mounting screws on the RF board. Be sure you re-install all the shields properly You will find the mounting screws on the RF board have loosened.

Sometimes it is also the shield itself that causes the problem by not fitting properly.

It could also be that L202 is bad.

Another possibility are the feedthrough capacitors and plugs. They get dirty and cause all sorts of problems like RX drifting, bad RX audio, scratchy TX.

Decoding the GM300 Model Number

Below is the chart that should decode GM300 Series models, if there are any errors, please let us know.

M 3 4 GM C 2 9C 3 A_
M All Models 0 1-10 Watts 3 VHF GM All Models C 45.1 MHz IF 0 12.5 kHz Ch. Spacing 0A Masked Logic Board, 2 Freq.(M120) 1 136-162 MHz A_ All Models
  3 10-25 Watts 4 UHF   R 45.3 MHz IF 2 20/25/30 kHz Ch. Spacing (VHF) 0D Masked Logic Board, 8 Freq. 1 403-433 MHz  
  4 25-40 Watts       2 20/25 kHz Ch. Spacing (UHF) 9C Expanded Logic Board, 16 Freq. 2 146-174 MHz  
              2 450-470 MHz  
              3 438-470 MHz  
              4 465-495 MHz  
              5 490-520 MHz  

As you can see, the example given M34GMC29C3A_ would correspond to a 25W, 438-470MHZ, 16 Channel radio with a 45.1 MHz IF.

If you have any questions, email us and we'll try to help.