Last updated Monday, March 29, 1999
Copyright (c) 1998, 1999 - Neal R. Fildes
Some time ago there appeared on USENET a program and its source code that provided the rudimentary ability to decode Motorola Type I, II, and IIi trunking radio system data. This program is a major enhancement to that program, and is also in the "public domain" with no guaranteed support (only grassroots voluntary support.) It is totally free, and anyone attempting to make commercial use of it will probably become a target of Motorola's legal department. (I have heard an opinion from a scanner manufacturer that since we are not making a 2-way radio system with the patent, there is nothing Motorola can do legally... but I am not a lawyer, and I'd prefer not to finance one...)
This program, with its rich set of features, was made possible by a world-wide team of contributors who assisted by collecting data on existing systems, providing interface information for various types of scanners, testing beta versions, developing features, and offering feature suggestions. Special thanks are due IBM for making patents available on the WWW for all to share.
This software has undergone a number of revisions in four major areas:
This release consists of a merging of two separate development paths aimed at subsets of the above features to provide the union of both developers' contributions.
For those who already own a commercially available trunking scanner, Trunker can still provide helpful information for using that scanner. Four areas that may be valuable include:
For those who do not yet own a commercially available trunking scanner, Trunker can assist one in learning about how trunked systems operate and if they are used frequently enough to warrant purchase of an additional scanner.
Concurrent with the release of this Motorola-based version of Trunker is the initial release of a program called ETRUNK.EXE, which provides most of the same capabilities and an identical user interface as Trunker, but for GE/Ericsson EDACSŪ Trunked Radio Systems. This capability may be covered by a recently announced Uniden product as well as some custom software for use with the Optoelectronics OPTOCOMŪ receiver.
Since Trunker keeps a set of data files for each trunked system it monitors, it identifies them with a special field called the 'System ID' that is periodically broadcast by each system. It uses the SysId value to name data files and detect when the input scanner has moved on to another system. Since this SysId value is sent at intervals, it would be possible for some of the groups or IDs from the new trunked system to make their way into the previous system's data files. To avoid this, if Trunker senses a change of SysId field, it will not auto-save the data files from the previous system. The appropriate way to change systems and still have data saved is to use the 's' command to save the current system's data, then allow the scanner to search until the next trunked data channel is located.
The data files for a given system will be named with this SysId value. For example, if a system's ID is 1b27, files will be created with the names:
1b27sys.txt frequencies and bank map 1b27page.txt paging, group patch, and affiliation log 1b27ids.txt information on radio IDs 1b27grp.txt information on group IDs 1b27Ptch.txt information on multi-group patches
Larger trunked systems have a feature that allows a radio system design similar to that of a cellular network. Each of several repeaters in the large geographic area will be assigned its own set of frequencies distinct from nearby repeaters in the system. However, each repeater will broadcast the same SysId field and work from the same database of Group and Radio IDs. Trunker mimics this behavior and allows the frequencies from each repeater to be saved in a separate file, yet uses the common data base of Group and Radio IDs.
In addition to the above file names, you will see a file for each of the repeaters in the system that you have monitored. Example file names would be:
1b27R5.txt frequencies for Repeater 5 1b27R7.txt frequencies for Repeater 7 ...
Note that if these files are used for a given system, the xxxxSYS.TXT file be over-written with a 3-line version containing ONLY the System Title, Bank Map, and Band Plan. This allows the Bank Plan from the last used repeater to be propagated to an new repeater file that is created. Sometimes, various repeaters may have a different band plan, especially with plans '8' and 'S'..
Also, after Trunker was widely disseminated, it was brought to our attention that this numbering scheme was 'off by one', with the user version starting at one instead of zero. At this time, we are sticking to the original (faulty) scheme.
Trunker will now detect the use of a type-II radio within a bank designated as type-I. When this occurs, Trunker will revise the bank letter for that bank to lower case (H becomes h) to indicate its use for both types of radios. Trunker will attempt to display the true type-II id of the radio instead of its type-I alias when possible.
Rather than requiring that many command line arguments be used for parameters that are relatively static, Trunker uses environment variables. In addition, because some systems may run out of environment memory unless tunable parameters are changed, Trunker supports the use of a single variable containing a file name in which the rest of the variables may be placed.
It is Highly Recommended that you set only the TRACKENV variable and put the rest in a text file! Problems caused by variable settings not 'taking' dominate the trouble reports for this version of Trunker and you can avoid many problems by using this approach!
The following table shows the variables used by Trunker:
|Variable Name||Use||Allowed Values|
|TRACKENV||The preferred method for passing variables to Trunker is to place a file name in this variable. The file would contain all the following variables just as they would appear in a .BAT file.||Any valid text file name. Example:
|TRACKSCANPORT||The port to which the second, tracking scanner is connected||COM1, COM2, COM3, COM4|
|TRACKSCANBAUD||The baud rate at which commands are to be sent to the second, tracking scanner for jumping between audio channels. The scanner must accept the same setting.||300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200|
|TRACKSCAN||The type of scanner used for audio tracking.||PCR1000, R10, R7000, R7100, R8500, AR8200, AR8000, AR5000, AR2700,AR3000, AR3000A, KENWOOD, KENWOOD9600, FRG9600, BC895, OPTO (OS456, OS535), OPTOCOM, NONE|
|TRACKSLICERPIN||pin for input from the Data Slicer||CTS, DSR, DCD|
|TRACKSLICERPORT||The com port to which the data slicer is connected (via the input lead specified in the TRACKSLICERPIN variable.)||COM1, COM2, COM3, COM4|
|TRACKSCANPARK||Set this variable to a frequency that normally has no traffic, or which you would want to monitor if no trunked traffic is active. Trunker will switch to this frequency when no calls are present or none of the active calls have a priority <= 50. By specifying this value, you can eliminate the possibility that Trunker will park on a frequency that has an active conversation but which you do not want to monitor.||example: 854.0000 or any other frequency reachable by the scanner without changing from NFM mode Some users report problems with frequencies less than 100MHz for this variable with BC895XLT as the controlled scanner..|
|NOEMERGENCY||Set this variable if you wish to suppress special processing of Emergency calls. At least one Trunker user reported that on their trunked system an emergency button may stay uncleared for hours!||<any value to choose this option>|
|TRACKDIGITAL||Set this variable if you want Trunker to follow digital and encrypted calls instead of treating them as un-scannable.||<any value to choose this option>|
|TRACKSLICERMODE||Indicates whether the input should be inverted or not. Usually INVERT for inverting data slicer circuits. Trial and error may be necessary to determine the proper setting. If you used the /I flag with Trunker 3.42 or higher, this should be set to NORMAL. However, some Trunker users report having to reverse this option for UHF systems.||NORMAL, INVERT|
None - if you provide any, a list of environment variables will be printed out.
First, identify which signal lead (DSR, CTS, or DCD) the slicer signal is wired to, then edit a .bat file containing your environment variables. A good way to check your data slicer and determine its configuration is a freeware program called SLICER.EXE. Once you know which pin is used, set up the configuration. First, create a global file that contains the variable settings you want for Trunker. It is best to use this file rather than put 'set' commands in autoexec.bat because it is easy to exceed the limits on environment space. Here is a sample "TRUNKENV.TXT":
TRACKSLICERPORT=COM1 TRACKSLICERPIN=CTS TRACKSLICERMODE=INVERT TRACKSCANPORT=COM1 TRACKSCAN=AR8000 TRACKSCANPARK=854.0000
Next, refer to this file via a SINGLE variable setting in AUTOEXEC.BAT. Assuming this file's name is c:\trackenv.txt, place the following line in AUTOEXEC.BAT and reboot:
Running Trunker in a DOS window (on a fast WINDOWS system) or under DOS, you should see a 43-line Trunker display:
Next, tune the input scanner to the data channel of the trunked system to be analyzed. After several seconds, the display should look something like this:
If, after 10-20 seconds, you see a status field of wantCTS, for example, it means that the TRACKSLICERPIN variable is incorrect. You can use the 'c' command to enter the CONFIGURATION menu, which will allow you to select the various input pins and polarities to find the correct settings. Once you have identified these, you can go back and change the values of TRACKSLICERPIN and TRACKSLICERMODE for subsequent runs. Some Trunker users have noted that the normal/invert modes may need to be set on a system-by-system basis!
At this point, Trunker has determined many of the key parameters of this system. Since a call is in progress, Trunker is beginning to identify the voice frequencies in use. The system ID is 1f3e, and that code will be used to name the .txt files Trunker saves. This system either has a single repeater site, or multiple sites that all broadcast simultaneously on the same frequencies. The call in progress shows that the first bank (of 8) is a Type-II bank.This is saved in the 1f3eSYS.TXT file with the string MAP=2???????. The current call is for group (decimal) 3536 (or hex 0DD0 or Motorola Style 0DD). If one were to annotate this group by typing g0dd0Police Dispatch<return>, the line would read:
v857.2375* 49 Police Dispatch
3536 0dd_ G ----
Once Trunker sees traffic on all of the active voice frequencies and identifies the data channel frequency, the list will look something like this:
Flavor: Single or Multicast
Scanner: AR8000 Status: Hi-Qual Acc: 83.0%
SysId: 1f3e Type: 2??????? Title: UnNamed System
Output Pr Trunker <version>
Frequency ty Destination Title ID T ID Caller Title
cdv-------- -- -------------------- ..... ---- - ---- --------------------------
v856.7625*49 ? 1840 0730 G 149e ?
v857.7625 49 ? 2704 0a90 G 206c ?
v858.7625 49 ? 272 0110 G 13e9 ?
If you edit the flat files produced by Trunker (either offline via text editor or database system or online with the 'g', 'i', and 'p' commands,) adjusting priorities and colors, you can get a display something like this:
Flavor: Single or Multicast Scanner: AR8000 Status: Hi-Qual Acc: 85.3% SysId: 1f3e Type: 22222222 Title: Zebra County SmartNet-II Output Pr Trunker <version> Frequency ty Destination Title ID T ID Caller Title cdv-------- -- -------------------- ..... ---- - ---- -------------------------- c v856.2375 v857.2375 v858.2375 L859.2375 L860.2375 v856.7625*01 Mutual Aid 1424 0590 G 14ec B P Mutual Aid ??? dv857.7625 06 WCCC Primary 368 0170 G 1c04 P P Waynesville 1/2William dv858.7625 08 M F Springboro 2101 16b6 I 16a9 M F Springboro 2103 Car dv859.7625 dv860.7625
Referring to the next (color) screen shot, the police entries are blue, the fire / public safety entries red, and any shared group (mutual aid) magenta. I've distinguished between nearby organizations (bright blue or bright red) and less interesting ones (dark blue, dark red.) You can also see from this example that it is possible to re-arrange the frequencies in the xxxxSYS.TXT file and Trunker will maintain that ordering. I have manually added the frequencies with the 'L' in the voice column, indicating that the system is licensed to use those frequencies. However, should the system ever actually use them, Trunker will substitute a 'v' for that column, and I would then know that they have been placed in service. Finally, note that many systems change data channel frequencies daily or at random, so you will not necessarily have four 'd' entries at first. You may have to search for the data channel on another day, first checking the known voice frequencies, then trying other frequencies within the pattern.
Here is a (partial) live screen shot of Trunker in action, monitoring the Warren County, Ohio system:
With your scanner locked onto the data channel to be investigated, start Trunker. Once Trunker locks in on the signal, it will show the system ID and begin to collect information. If Trunker has already seen that system, it will retrieve the data files previously saved and note the use of the current frequency as a data channel. As there is activity on the system, it will step through the voice channels available. In order to fully collect information on the system, it may be necessary to find the system's data channel again on a number of days until all of them have been found (a maximum of four frequencies are used). If you want to look up the licensee for the system, wait until the CWID channel appears (a 'c' in column 1), then monitor that frequency until the callsign is heard. In larger systems, the first channel is often not used for voice traffic, so the only way to find the CWID channel is through the data channel "diagnostic" command.
By default, Trunker will interpret frequency assignments according to a "standard" 800MHz map. Use the following process to initialize the xxxxSYS.TXT file for 900MHz, UHF systems, splinter 800MHz arrangements, or other systems that do not conform to the standard mappings:
While using one scanner to monitor the data channel with Trunker, simultaneously monitor the frequencies it has exposed with a second scanner (or better yet, if you have a supported scanner, hook it up and use the tracking feature.) By simultaneously listening and watching, one can associate the conversation (especially unit designations) with a specific voice ID, and collections of users doing a particular activity (such as fire dispatch) with a group ID. Using the 'G' and 'I' commands, one can quickly add information to Trunker's data base in real-time.
To get a comprehensive list of groups and IDs, it is also possible to let Trunker run for days as necessary. For this to work, the scanner that is monitoring the data channel must be programmed with all of the data frequencies Trunker exposes and set up with proper squelch etc. so when the data channel changes frequency, the scanner will skip to the new one.
Once one has identified a group as having a specific function, Trunker will automatically annotate any new radios as having used that group the first time the radio was seen. One can than fine-tune the xxxxIDS.TXT file online with the 'i' command to set priority, color and title, or offline with a text editor.
Over time, should radio IDs get re-used, it is easy to notice a discrepancy in the display and update the annotation without stopping Trunker.
Recommended settings for this mode include Delay,not Verbose, and seekNew. If you use the audio scanner in trunk-tracking mode while using these settings, the program will give highest priority to the unknown group IDs to assist in identification. Once you have identified a group or user, you can use the 'I' or 'G' command to note its use and set its priority to a non-zero value, preventing future jumps to that group or user unless it is associated with call to a group or individual with a scannable priority.
The recommended approach for analyzing a new system is to first monitor the talk groups with the 'Verbose' option turned off and 'seekNew' turned on. Once you have the majority of talk groups identified, prioritized, and colored, then turn on the 'Verbose' mode. At this point, as each new radio is identified, since the talk groups are already annotated, each radio will then be assigned a priority according to the first talk-group it is seen on. As you see a white radio entry, you can then update its text string and color as appropriate. The seekNew option only seeks to new GROUPS so these new radios will not interfere with your monitoring process.
Sometimes a multiple group call is set up from one of the trunked system consoles. Each 'Patch' as it is referred to by Trunker, has a unique patch id and a list of associated group IDs. While that patch is being broadcast over the data channel, any calls by one of the participating groups' radios will be processed specially (based on the low 8 bits of the group ID known as 'flags'.) The text associated with the patch will appear with a 'P' in the T(ype) column. You can edit that text with the 'P' command after you enter the hex Patch ID.
If you have not edited a Patch record, the patch record will take on most of the characteristics of the participating group with the best priority.
If the patch occurs in a Type I bank, you will instead see the Group ID and Radio ID of one of the participating members, but you can see the list of participants in the Log window (and the xxxxpage.txt file if disk Logging is turned on.)
Two features of Trunker are intended to support the collection of data about the users and groups in the trunked system. Automatic Annotation will update user radio ID records with the name of the talk group where the radio first appeared. While this is generally useful, it can lead to a proliferation of large numbers of undesirable records in the data files. For example, suppose the user has suppressed the tracking of a specific talk group, such as the Sewer Department. It doesn't seem useful to collect hundreds of IDs that may be associated with that talk group if the user is not monitoring it. Therefore, if the priority of a talkgroup is greater than 50, Trunker will not automatically annotate users of the group. Then, when Trunker exits or saves, those user records will not be saved.
Some earlier versions of Trunker did not save talk groups that were not annotated. This was necessary to allow it to operate in some very large networked systems without running out of memory. With the interpretation of the Status bits in Type-II talkgroups, this reduced the number of groups saved by a factor of 3 in those systems. In addition, the interpretation of the Type I talkgroups reduced the number of saved records nearly in half. In combination with the lack of automatic annotation of radios using suppressed talkgroups, it is hoped that Trunker will be able to save ALL talkgroups in those large networked systems.
Note that the current limit on IDs supported by Trunker is about 8,000 (total group, patch, and radio IDs.)
When annotating the newly discovered radio ID, Trunker will now assign it the same priority as the talk group it was first associated with. Its color will remain WHITE until edited.
The audio scanner can be used to track the channels based on priority by hooking the TxD lead through a level converter to the serial input of the scanner. The scanner should be hooked up prior to starting Trunker. Trunker will put it into VCO mode, set the step, and drive it with the proper frequencies. Assuming one has already identified groups and IDs, and would not want to snap to new ids, you probably don't want the seekNew option set. The Delay and Verbose settings could be used according to user preference. Note that the equivalent of 'locking out' groups or IDs is accomplished by setting the priority for the groups and IDs greater than 50.
|Flavor||Single Site (Old)||This is an older type-I system that is limited in function. It does not broadcast the types of data words that would be necessary to support multicast or networked operation. It will normally take 10-30 seconds for the system ID to be determined for this type of system since the ID is not broadcast very often.|
|Networkable||System is capable of being part of a multiple-site network, where each repeater would have its own set of frequencies. This value may appear momentarily before Trunker observes an indication of the existence of neighboring cells/sites.|
|Single or Multicast||System has either a single repeater or multiple repeaters all simultaneously broadcasting on the same frequencies.|
|Networked||This networkable site has broadcast information about its peers so is believed to be part of a networked system.|
|Status||DX Rcv||Accuracy of the data words received is <= 80%. A stronger signal would improve performance of Trunker.|
|Hi-Qual||A received data accuracy > 80% indicates Trunker will monitor this system effectively.|
|sig?inv||A signal appeared at the requested input pin but either is not present (check input scanner) or the invert option needs to be reversed.|
|wantCTS, wantDSR, wantDCD||The selected pin does not have a signal on it. Check connection or try other input pins until you identify where your slicer applies the signal.|
T (call type)
|G,H||Group call - any radio affiliated with that group receives the audio as a 'broadcast'. 'H' indicates a hybrid call where a Type-II radio is accessing a Type-I bank.|
|I||Individual call - two radios participate in a conversation|
|E (blinking red)||Emergency call - A radio user affiliated with this group has pressed the EMERGENCY button and has not yet reset it. Unless the 'NOEMERGENCY' variable is set, the appearance of this type of call will be accompanied by a long, medium-pitch speaker tone.|
|A||All Talk Groups|
|P||Patch - multiple groups are logically associated and all radios affiliated with all groups in the Patch can hear the sender as a 'broadcast'|
|M||Multi-Select - multiple repeaters are participating in the call, one for each associated talkgroup|
|g||Encrypted group call|
|e (blinking red)||Encrypted emergency call.|
|Gd, gd, Ed, ed, Ad, ad, Pd, pd, Md, md||The small 'd' next to one of the above letters indicates a digital call.|
|Type||????????||Trunker has not seen evidence that any of the banks are Type-II, and the flat file has not been modified to specify any Type-I banks.|
|'2' in a column||That bank has been observed to be a Type-2 bank, or the flat file has been edited to request that Trunker treat it that way.|
|a letter between 'A' and 'N' in a column||That bank is to be interpreted as a Type-1 bank. See the Fleet Map Table below. *** These are NOT the Motorola Bank Size Codes ***|
|PLAN||8||800 MHz "Standard" plan - varied -
for fnum = 0 through 0x2CF, 851.0125 + .025*fnum,
for fnum = 0x2D0 through 0x2F7, 848.0000 + .025*fnum
for fnum = 0x32F through 0x33F, 846.6250 + .025*fnum
for fnum = 0x3C1 through 0x3FE, 843.4000 + .025*fnum
for fnum = 0x3BE, 868.9750
|S||800 MHz "Splinter" plan - varied -
for fnum = 0 through 0x257, 851.0000 + .025*fnum,
for fnum = 0x258 through 0x2cf, 866.0125 + .025*(fnum-0x258)
for fnum = 0x2D0 through 0x2F7, 866.0000 + .025*(fnum-0x2d0)
for fnum = 0x32F through 0x33F, 867.0000 + .025*(fnum-0x32f)
for fnum = 0x3C1 through 0x3FE, 867.4250 + .025*(fnum-0x3c1)
for fnum = 0x3BE, 868.9750
|9||900 MHz "Standard" plan - 935.0125 + .0125*fnum, fnum is 0 through 0x1DE|
|0||non-standard - new frequencies appear in hex, and must be edited for customized mapping.|
Trunker 3 generates and later reads four or more data files, with names based on the 16-bit SysId value:
While Trunker is running, keystroke commands control various operating parameters and saving of data. When the data files are saved, the current settings of toggled options (NVDXLF) are saved in the xxxxSYS.TXT file. The keystrokes are:
Note that the menu may take more than one line, so the 'space' key will switch between menus. A particular menu item need not appear to be accessible - the keystrokes will work whether the particular item is visible or not.
When you enter the 'G', 'P', or 'I' key, you will be prompted for the group, patch, or radio ID (in hex.) For a Type-II ID, type the hex code by typing the 3 characters shown on the screen before the '_' (underbar) and substitute a zero for the underbar. For example, if the screen shows 1FA_, type 1fa0. For an unidentified bank, use the hex code from the screen, and for Type I Group OR Radio IDs, type the HEX VALUE OF THE INDIVIDUAL ID. In the Type-I banks, the radio ID contains both the group and individual information, and Trunker knows how to separate the fields based on the Type Codes you provide it. Do NOT try to type in a Type 1 Group Annotation, such as "3 02-12". For a Multi-Group Patch, type in the 4-character patch ID, as seen on the displayed call or observed on the paging/patch log window.
After typing the fourth character of the ID, or hitting ENTER or TAB after less than 4 characters, Trunker will display the current data record. You may edit the Title, Priority, and Color fields. To move to the next field, use the TAB key. To move within a field use the left and right arrow keys. Backspace is destructive, and the Insert and Delete keys function in the normal manner. You may either abort the current update with the <escape> key at any time, or commit the changes without tabbing through the remaining fields by using the ENTER key. Also, the Right Arrow key can be used to skip from the last column of a field to the first column of the next, but you cannot go back with the Left Arrow key.
When you reach the 'color' field, a colorized prompter will appear on the bottom line of the screen to help you select the proper color code. You can add 16 to the value shown for blinking, and/or add 32 to the value for a 'beep' from the speaker.
This area of the screen contains static data about the frequencies used by the system, and real-time information about the current state of the various frequencies. 43-line mode is used to allow the full 28 (27 voice + 1 CWID) frequencies to be displayed. Only those frequencies actually used for voice, data, or CWID are retained in the xxxxSYS.txt file. In the channel area, the first three columns carry flags about the particular frequencies:
Each frequency identified (possibly in past sessions as saved in the xxxxSYS.txt file) is color coded:
Subsequent columns include:
This zone consists of two lines, the first for prompting, and the second for displaying the results of the last entered annotation request.
NOTE: These are NOT the Motorola Bank Size Codes!
case for Type I, lower case for IIi or hybrid banks)
|S-1||A or a||1||128||4||16|
|S-2||B or b||1||16||8||64|
|S-3||C or c||1||8||8||128|
|S-4||D or d||1||1||16||512|
|S-5||E or e||1||64||4||32|
|S-6||F or f||1||32||8||32|
|S-7||G or g||1||32||4||64|
|S-8||H or h||1||16||4||128|
|S-9||I or i||1||8||4||256|
|S-10||J or j||1||4||8||256|
|S-11||K or k||1||2||16||256|
|S-12||L or l||2||1||16||1024||spans 2 banks(0-1,2-3,etc)
Trunker does not 'enforce'!
Typical use is ??LL????
|S-13||M or m||4||1||16||2048||spans banks 0-3 or 4-7 where used
Trunker does not 'enforce'
Typical use is MMMM???? or ????MMMM
|S-14||N or n||8||1||16||4096||spans all banks when used
Trunker does not 'enforce'
The only use for this code is NNNNNNNN
System Label on first line MAP=222C2222 bank size map PLAN=8 800MHz 'Standard' US Band Plan OPTIONS=NVDXF option key settings for this system c v854.8875,9b,ffff first 3 columns are flags, then freq. in MHz, then 'channel #' v855.1875,a7,ffff 4th column is 'input frequency' hex for certain v856.3125,d4,ffff UHF systems which emit input frequency codes. v856.4125,d8,ffff v857.3125,fc,ffff v857.4125,100,ffff v858.3125,124,ffff v858.3625,126,ffff dv859.3125,14c,ffff dv859.4125,150,ffff dv860.3125,174,ffff dv0x320 ,320,ffff this one is unknown or suppressed by user
hex,color,prty,"title",unused,decimal,display text 0450,1,9,"South Lebanon Local",0,1104, 1104 045_ 0670,12,5,"Fire Primary (!2)",0,1648, 1648 067_ 0890,8,99,"Sewer Dept",0,2192, 2192 089_ 0ab0,5,7,"Franklin Local",0,2736, 2736 0ab_ 0cd0,8,99,"Public Works",0,3280, 3280 0cd_
hex,color,prty,"title",unused,decimal,displayed value 1ce7,4,8,"M F Mason Fire",0,7399,1ce7 1ce6,4,8,"M F Mason Fire",0,7398,1ce6 1bdf,4,8,"M F HarlanTwp Fire",0,7135,1bdf 1bd9,4,8,"M F HarlanTwp Fire",0,7129,1bd9 1bd6,4,8,"M F HarlanTwp Fire",0,7126,1bd6 1bdd,4,8,"M F 81-4",0,7133,1bdd 3338,8,99,"Highway Mtce",0,13112,3338
May 19 12:09:40 New Patch id 184d, group 84d0(ENC - ENCD) May 28 18:09:55 New @ G:0e90/Lebanon Dispa 166d Af-> 0eb0 Lebanon Fireground?tt? May 28 18:09:56 Chief 41 Lebanon 166c Af-> 0e90 Lebanon Dispatch May 28 18:09:58 M P Frank.Spring. (1)Zebra 13d8 Pg-> 13db SPD/CPD May 28 18:09:59 Batall. 41 Lebanon 1662 Af-> 0e90 Lebanon Dispatch May 28 18:10:05 M F 4x Lebanon 164e Af-> 0e90 Lebanon Dispatch
BLACK (not visible in prompter)
|for blinking,||add 16|
|for beep,||add 32|