pax_global_header00006660000000000000000000000064135406076070014522gustar00rootroot0000000000000052 comment=e47491e58b789d47143eb7bca05ef9c906716f4b dmrconfig-master/000077500000000000000000000000001354060760700143275ustar00rootroot00000000000000dmrconfig-master/.gitignore000066400000000000000000000000411354060760700163120ustar00rootroot00000000000000*.o *.hd dmrconfig dmrconfig.exe dmrconfig-master/99-dmr.rules000066400000000000000000000010071354060760700164220ustar00rootroot00000000000000# # Enable user access to USB devices of DMR radios. # Install this file into directory: /etc/udev/rules.d # To reload the rules, use: # sudo udevadm control --reload-rules # # TYT MD-UV380 SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", MODE="666" # Baofeng RD-5R, TD-5R SUBSYSTEM=="usb", ATTRS{idVendor}=="15a2", ATTRS{idProduct}=="0073", MODE="666" # Anytone AT-D868UV # Ignore this device in Modem Manager ATTRS{idVendor}=="28e9" ATTRS{idProduct}=="018a", ENV{ID_MM_DEVICE_IGNORE}="1" dmrconfig-master/LICENSE000066400000000000000000000027771354060760700153510ustar00rootroot00000000000000BSD 3-Clause License Copyright (C) 2018-2019, Serge Vakulenko KK6ABQ All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. dmrconfig-master/Makefile000066400000000000000000000036421354060760700157740ustar00rootroot00000000000000CC ?= gcc VERSION = $(shell git describe --tags --abbrev=0) GITCOUNT = $(shell git rev-list HEAD --count) UNAME = $(shell uname) OBJS = main.o util.o radio.o dfu-libusb.o uv380.o md380.o rd5r.o \ gd77.o hid.o serial.o d868uv.o dm1801.o CFLAGS ?= -g -O -Wall -Werror CFLAGS += -DVERSION='"$(VERSION).$(GITCOUNT)"' \ $(shell pkg-config --cflags libusb-1.0) LDFLAGS ?= -g LIBS = $(shell pkg-config --libs --static libusb-1.0) # # Make sure pkg-config is installed. # ifeq ($(shell pkg-config --version),) $(error Fatal error: pkg-config is not installed) endif # # Linux # # To install required libraries, use: # sudo apt-get install pkg-config libusb-1.0-0-dev libudev-dev # ifeq ($(UNAME),Linux) OBJS += hid-libusb.o # Link libusb statically, when possible LIBUSB = /usr/lib/x86_64-linux-gnu/libusb-1.0.a ifeq ($(wildcard $(LIBUSB)),$(LIBUSB)) LIBS = $(LIBUSB) -lpthread -ludev endif endif # # Mac OS X # # To install required libraries, use: # brew install pkg-config libusb # ifeq ($(UNAME),Darwin) OBJS += hid-macos.o LIBS += -framework IOKit -framework CoreFoundation endif all: dmrconfig dmrconfig: $(OBJS) $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LIBS) clean: rm -f *~ *.o core dmrconfig dmrconfig.exe install: dmrconfig install -c -s dmrconfig /usr/local/bin/dmrconfig ### d868uv.o: d868uv.c radio.h util.h d868uv-map.h dfu-libusb.o: dfu-libusb.c util.h dfu-windows.o: dfu-windows.c util.h gd77.o: gd77.c radio.h util.h hid.o: hid.c util.h hid-libusb.o: hid-libusb.c util.h hid-macos.o: hid-macos.c util.h hid-windows.o: hid-windows.c util.h main.o: main.c radio.h util.h md380.o: md380.c radio.h util.h radio.o: radio.c radio.h util.h rd5r.o: rd5r.c radio.h util.h serial.o: serial.c util.h util.o: util.c util.h uv380.o: uv380.c radio.h util.h dmrconfig-master/Makefile-mingw000066400000000000000000000030461354060760700171110ustar00rootroot00000000000000CC = gcc VERSION = $(shell git describe --tags --abbrev=0) GITCOUNT = $(shell git rev-list HEAD --count) CFLAGS = -g -O -Wall -Werror -DVERSION='"$(VERSION).$(GITCOUNT)"' LDFLAGS = -g -s OBJS = main.o util.o radio.o dfu-windows.o uv380.o md380.o rd5r.o \ gd77.o hid.o hid-windows.o serial.o d868uv.o dm1801.o LIBS = -lhid -lsetupapi # Compiling Windows binary from Linux ifeq (/usr/bin/i586-mingw32msvc-gcc,$(wildcard /usr/bin/i586-mingw32msvc-gcc)) CC = i586-mingw32msvc-gcc endif ifeq (/usr/bin/i686-w64-mingw32-gcc,$(wildcard /usr/bin/i686-w64-mingw32-gcc)) CC = i686-w64-mingw32-gcc endif # Compiling Windows binary from Mac OS ifeq (/usr/local/bin/i686-w64-mingw32-gcc,$(wildcard /usr/local/bin/i686-w64-mingw32-gcc)) CC = i686-w64-mingw32-gcc endif all: dmrconfig.exe dmrconfig.exe: $(OBJS) $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LIBS) clean: rm -f *~ *.o core dmrconfig install: dmrconfig install -c -s dmrconfig /usr/local/bin/dmrconfig ### d868uv.o: d868uv.c radio.h util.h d868uv-map.h dfu-libusb.o: dfu-libusb.c util.h dfu-windows.o: dfu-windows.c util.h gd77.o: gd77.c radio.h util.h hid.o: hid.c util.h hid-libusb.o: hid-libusb.c util.h hid-macos.o: hid-macos.c util.h hid-windows.o: hid-windows.c util.h main.o: main.c radio.h util.h md380.o: md380.c radio.h util.h radio.o: radio.c radio.h util.h rd5r.o: rd5r.c radio.h util.h serial.o: serial.c util.h util.o: util.c util.h uv380.o: uv380.c radio.h util.h dmrconfig-master/README.md000066400000000000000000000042061354060760700156100ustar00rootroot00000000000000DMRconfig is a utility for programming digital radios via USB programming cable. Supported radios: * TYT MD-380, Retevis RT3, RT8 * TYT MD-390 * TYT MD-2017, Retevis RT82 * TYT MD-UV380 * TYT MD-UV390, Retevis RT3S * TYT MD-9600 * Baofeng DM-1701, Retevis RT84 * Baofeng RD-5R, TD-5R * Baofeng DM-1801 * Radioddity GD-77 * Anytone AT-D868UV * Anytone AT-D878UV * BTECH DMR-6x2 * Zastone D900 * Zastone DP880 * Radtel RT-27D [![Packaging status](https://repology.org/badge/vertical-allrepos/dmrconfig.svg)](https://repology.org/metapackage/dmrconfig/versions) ## Usage Read codeplug from the radio and save it to file 'device.img', and also save text configuration to 'device.conf': dmrconfig -r [-t] Write codeplug to the radio: dmrconfig -w [-t] file.img Configure the radio from text file. Previous codeplug is saved to 'backup.img': dmrconfig -c [-t] file.conf Show configuration from the codeplug file: dmrconfig file.img Apply configuration from text file to the codeplug file: dmrconfig -c file.img file.conf Update database of contacts from CSV file: dmrconfig -u [-t] file.csv Option -t enables tracing of USB protocol. ## Permissions On Linux, a permission to access USB device is required. It's possible to run dmrconfig as root, like "sudo dmrconfig", but it's safer to enable access for users. Create a file /etc/udev/rules.d/99-dmr.rules with the following contents: # TYT MD-UV380 SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", MODE="666" # Baofeng RD-5R, TD-5R, DM-1801 SUBSYSTEM=="usb", ATTRS{idVendor}=="15a2", ATTRS{idProduct}=="0073", MODE="666" # Anytone AT-D868UV: ignore this device in Modem Manager ATTRS{idVendor}=="28e9" ATTRS{idProduct}=="018a", ENV{ID_MM_DEVICE_IGNORE}="1" To activate it, run: sudo udevadm control --reload-rules Then re-attach the USB cable to the radio. ## Sources Sources are distributed freely under the terms of Apache 2.0 license. You can download sources via GIT: git clone https://github.com/sergev/dmrconfig To build on Linux or Mac OS X, run: make make install Regards, Serge Vakulenko KK6ABQ dmrconfig-master/d868uv-map.h000066400000000000000000001052261354060760700163250ustar00rootroot00000000000000/* * Address map of D868UV memory space. */ { 0x02fa0010, 0x40 }, // 000000 - Radio name and timestamp { 0x00800000, 0x2000 }, // 000040 - Channels 1-128 { 0x00840000, 0x2000 }, // 002040 - Channels 129-256 { 0x00880000, 0x2000 }, // 004040 - Channels 257-384 { 0x008c0000, 0x2000 }, // 006040 - Channels 385-512 { 0x00900000, 0x2000 }, // 008040 - Channels 513-640 { 0x00940000, 0x2000 }, // 00a040 - Channels 641-768 { 0x00980000, 0x2000 }, // 00c040 - Channels 769-896 { 0x009c0000, 0x2000 }, // 00e040 - Channels 897-1024 { 0x00a00000, 0x2000 }, // 010040 - Channels 1025-1152 { 0x00a40000, 0x2000 }, // 012040 - Channels 1153-1280 { 0x00a80000, 0x2000 }, // 014040 - Channels 1281-1408 { 0x00ac0000, 0x2000 }, // 016040 - Channels 1409-1536 { 0x00b00000, 0x2000 }, // 018040 - Channels 1537-1664 { 0x00b40000, 0x2000 }, // 01a040 - Channels 1665-1792 { 0x00b80000, 0x2000 }, // 01c040 - Channels 1793-1920 { 0x00bc0000, 0x2000 }, // 01e040 - Channels 1921-2048 { 0x00c00000, 0x2000 }, // 020040 - Channels 2049-2176 { 0x00c40000, 0x2000 }, // 022040 - Channels 2177-2304 { 0x00c80000, 0x2000 }, // 024040 - Channels 2305-2432 { 0x00cc0000, 0x2000 }, // 026040 - Channels 2433-2560 { 0x00d00000, 0x2000 }, // 028040 - Channels 2561-2688 { 0x00d40000, 0x2000 }, // 02a040 - Channels 2689-2816 { 0x00d80000, 0x2000 }, // 02c040 - Channels 2817-2944 { 0x00dc0000, 0x2000 }, // 02e040 - Channels 2945-3072 { 0x00e00000, 0x2000 }, // 030040 - Channels 3073-3200 { 0x00e40000, 0x2000 }, // 032040 - Channels 3201-3328 { 0x00e80000, 0x2000 }, // 034040 - Channels 3329-3456 { 0x00ec0000, 0x2000 }, // 036040 - Channels 3457-3584 { 0x00f00000, 0x2000 }, // 038040 - Channels 3585-3712 { 0x00f40000, 0x2000 }, // 03a040 - Channels 3713-3840 { 0x00f80000, 0x2000 }, // 03c040 - Channels 3841-3968 { 0x00fc0000, 0x0880 }, // 03e040 - Channels 3969-4000, VFO A, VFO B { 0x01000000, 0x1f400 }, // 03e8c0 - Zones: lists of channels { 0x01080000, 0xc0 }, // 05dcc0 - Scanlist 1 { 0x01080200, 0xc0 }, // 05dd80 - Scanlist 2 { 0x01080400, 0xc0 }, // 05de40 - Scanlist 3 { 0x01080600, 0xc0 }, // 05df00 - Scanlist 4 { 0x01080800, 0xc0 }, // 05dfc0 - Scanlist 5 { 0x01080a00, 0xc0 }, // 05e080 - Scanlist 6 { 0x01080c00, 0xc0 }, // 05e140 - Scanlist 7 { 0x01080e00, 0xc0 }, // 05e200 - Scanlist 8 { 0x01081000, 0xc0 }, // 05e2c0 - Scanlist 9 { 0x01081200, 0xc0 }, // 05e380 - Scanlist 10 { 0x01081400, 0xc0 }, // 05e440 - Scanlist 11 { 0x01081600, 0xc0 }, // 05e500 - Scanlist 12 { 0x01081800, 0xc0 }, // 05e5c0 - Scanlist 13 { 0x01081a00, 0xc0 }, // 05e680 - Scanlist 14 { 0x01081c00, 0xc0 }, // 05e740 - Scanlist 15 { 0x01081e00, 0xc0 }, // 05e800 - Scanlist 16 { 0x010c0000, 0xc0 }, // 05e8c0 - Scanlist 17 { 0x010c0200, 0xc0 }, // 05e980 - Scanlist 18 { 0x010c0400, 0xc0 }, // 05ea40 - Scanlist 19 { 0x010c0600, 0xc0 }, // 05eb00 - Scanlist 20 { 0x010c0800, 0xc0 }, // 05ebc0 - Scanlist 21 { 0x010c0a00, 0xc0 }, // 05ec80 - Scanlist 22 { 0x010c0c00, 0xc0 }, // 05ed40 - Scanlist 23 { 0x010c0e00, 0xc0 }, // 05ee00 - Scanlist 24 { 0x010c1000, 0xc0 }, // 05eec0 - Scanlist 25 { 0x010c1200, 0xc0 }, // 05ef80 - Scanlist 26 { 0x010c1400, 0xc0 }, // 05f040 - Scanlist 27 { 0x010c1600, 0xc0 }, // 05f100 - Scanlist 28 { 0x010c1800, 0xc0 }, // 05f1c0 - Scanlist 29 { 0x010c1a00, 0xc0 }, // 05f280 - Scanlist 30 { 0x010c1c00, 0xc0 }, // 05f340 - Scanlist 31 { 0x010c1e00, 0xc0 }, // 05f400 - Scanlist 32 { 0x01100000, 0xc0 }, // 05f4c0 - Scanlist 33 { 0x01100200, 0xc0 }, // 05f580 - Scanlist 34 { 0x01100400, 0xc0 }, // 05f640 - Scanlist 35 { 0x01100600, 0xc0 }, // 05f700 - Scanlist 36 { 0x01100800, 0xc0 }, // 05f7c0 - Scanlist 37 { 0x01100a00, 0xc0 }, // 05f880 - Scanlist 38 { 0x01100c00, 0xc0 }, // 05f940 - Scanlist 39 { 0x01100e00, 0xc0 }, // 05fa00 - Scanlist 40 { 0x01101000, 0xc0 }, // 05fac0 - Scanlist 41 { 0x01101200, 0xc0 }, // 05fb80 - Scanlist 42 { 0x01101400, 0xc0 }, // 05fc40 - Scanlist 43 { 0x01101600, 0xc0 }, // 05fd00 - Scanlist 44 { 0x01101800, 0xc0 }, // 05fdc0 - Scanlist 45 { 0x01101a00, 0xc0 }, // 05fe80 - Scanlist 46 { 0x01101c00, 0xc0 }, // 05ff40 - Scanlist 47 { 0x01101e00, 0xc0 }, // 060000 - Scanlist 48 { 0x01140000, 0xc0 }, // 0600c0 - Scanlist 49 { 0x01140200, 0xc0 }, // 060180 - Scanlist 50 { 0x01140400, 0xc0 }, // 060240 - Scanlist 51 { 0x01140600, 0xc0 }, // 060300 - Scanlist 52 { 0x01140800, 0xc0 }, // 0603c0 - Scanlist 53 { 0x01140a00, 0xc0 }, // 060480 - Scanlist 54 { 0x01140c00, 0xc0 }, // 060540 - Scanlist 55 { 0x01140e00, 0xc0 }, // 060600 - Scanlist 56 { 0x01141000, 0xc0 }, // 0606c0 - Scanlist 57 { 0x01141200, 0xc0 }, // 060780 - Scanlist 58 { 0x01141400, 0xc0 }, // 060840 - Scanlist 59 { 0x01141600, 0xc0 }, // 060900 - Scanlist 60 { 0x01141800, 0xc0 }, // 0609c0 - Scanlist 61 { 0x01141a00, 0xc0 }, // 060a80 - Scanlist 62 { 0x01141c00, 0xc0 }, // 060b40 - Scanlist 63 { 0x01141e00, 0xc0 }, // 060c00 - Scanlist 64 { 0x01180000, 0xc0 }, // 060cc0 - Scanlist 65 { 0x01180200, 0xc0 }, // 060d80 - Scanlist 66 { 0x01180400, 0xc0 }, // 060e40 - Scanlist 67 { 0x01180600, 0xc0 }, // 060f00 - Scanlist 68 { 0x01180800, 0xc0 }, // 060fc0 - Scanlist 69 { 0x01180a00, 0xc0 }, // 061080 - Scanlist 70 { 0x01180c00, 0xc0 }, // 061140 - Scanlist 71 { 0x01180e00, 0xc0 }, // 061200 - Scanlist 72 { 0x01181000, 0xc0 }, // 0612c0 - Scanlist 73 { 0x01181200, 0xc0 }, // 061380 - Scanlist 74 { 0x01181400, 0xc0 }, // 061440 - Scanlist 75 { 0x01181600, 0xc0 }, // 061500 - Scanlist 76 { 0x01181800, 0xc0 }, // 0615c0 - Scanlist 77 { 0x01181a00, 0xc0 }, // 061680 - Scanlist 78 { 0x01181c00, 0xc0 }, // 061740 - Scanlist 79 { 0x01181e00, 0xc0 }, // 061800 - Scanlist 80 { 0x011c0000, 0xc0 }, // 0618c0 - Scanlist 81 { 0x011c0200, 0xc0 }, // 061980 - Scanlist 82 { 0x011c0400, 0xc0 }, // 061a40 - Scanlist 83 { 0x011c0600, 0xc0 }, // 061b00 - Scanlist 84 { 0x011c0800, 0xc0 }, // 061bc0 - Scanlist 85 { 0x011c0a00, 0xc0 }, // 061c80 - Scanlist 86 { 0x011c0c00, 0xc0 }, // 061d40 - Scanlist 87 { 0x011c0e00, 0xc0 }, // 061e00 - Scanlist 88 { 0x011c1000, 0xc0 }, // 061ec0 - Scanlist 89 { 0x011c1200, 0xc0 }, // 061f80 - Scanlist 90 { 0x011c1400, 0xc0 }, // 062040 - Scanlist 91 { 0x011c1600, 0xc0 }, // 062100 - Scanlist 92 { 0x011c1800, 0xc0 }, // 0621c0 - Scanlist 93 { 0x011c1a00, 0xc0 }, // 062280 - Scanlist 94 { 0x011c1c00, 0xc0 }, // 062340 - Scanlist 95 { 0x011c1e00, 0xc0 }, // 062400 - Scanlist 96 { 0x01200000, 0xc0 }, // 0624c0 - Scanlist 97 { 0x01200200, 0xc0 }, // 062580 - Scanlist 98 { 0x01200400, 0xc0 }, // 062640 - Scanlist 99 { 0x01200600, 0xc0 }, // 062700 - Scanlist 100 { 0x01200800, 0xc0 }, // 0627c0 - Scanlist 101 { 0x01200a00, 0xc0 }, // 062880 - Scanlist 102 { 0x01200c00, 0xc0 }, // 062940 - Scanlist 103 { 0x01200e00, 0xc0 }, // 062a00 - Scanlist 104 { 0x01201000, 0xc0 }, // 062ac0 - Scanlist 105 { 0x01201200, 0xc0 }, // 062b80 - Scanlist 106 { 0x01201400, 0xc0 }, // 062c40 - Scanlist 107 { 0x01201600, 0xc0 }, // 062d00 - Scanlist 108 { 0x01201800, 0xc0 }, // 062dc0 - Scanlist 109 { 0x01201a00, 0xc0 }, // 062e80 - Scanlist 110 { 0x01201c00, 0xc0 }, // 062f40 - Scanlist 111 { 0x01201e00, 0xc0 }, // 063000 - Scanlist 112 { 0x01240000, 0xc0 }, // 0630c0 - Scanlist 113 { 0x01240200, 0xc0 }, // 063180 - Scanlist 114 { 0x01240400, 0xc0 }, // 063240 - Scanlist 115 { 0x01240600, 0xc0 }, // 063300 - Scanlist 116 { 0x01240800, 0xc0 }, // 0633c0 - Scanlist 117 { 0x01240a00, 0xc0 }, // 063480 - Scanlist 118 { 0x01240c00, 0xc0 }, // 063540 - Scanlist 119 { 0x01240e00, 0xc0 }, // 063600 - Scanlist 120 { 0x01241000, 0xc0 }, // 0636c0 - Scanlist 121 { 0x01241200, 0xc0 }, // 063780 - Scanlist 122 { 0x01241400, 0xc0 }, // 063840 - Scanlist 123 { 0x01241600, 0xc0 }, // 063900 - Scanlist 124 { 0x01241800, 0xc0 }, // 0639c0 - Scanlist 125 { 0x01241a00, 0xc0 }, // 063a80 - Scanlist 126 { 0x01241c00, 0xc0 }, // 063b40 - Scanlist 127 { 0x01241e00, 0xc0 }, // 063c00 - Scanlist 128 { 0x01280000, 0xc0 }, // 063cc0 - Scanlist 129 { 0x01280200, 0xc0 }, // 063d80 - Scanlist 130 { 0x01280400, 0xc0 }, // 063e40 - Scanlist 131 { 0x01280600, 0xc0 }, // 063f00 - Scanlist 132 { 0x01280800, 0xc0 }, // 063fc0 - Scanlist 133 { 0x01280a00, 0xc0 }, // 064080 - Scanlist 134 { 0x01280c00, 0xc0 }, // 064140 - Scanlist 135 { 0x01280e00, 0xc0 }, // 064200 - Scanlist 136 { 0x01281000, 0xc0 }, // 0642c0 - Scanlist 137 { 0x01281200, 0xc0 }, // 064380 - Scanlist 138 { 0x01281400, 0xc0 }, // 064440 - Scanlist 139 { 0x01281600, 0xc0 }, // 064500 - Scanlist 140 { 0x01281800, 0xc0 }, // 0645c0 - Scanlist 141 { 0x01281a00, 0xc0 }, // 064680 - Scanlist 142 { 0x01281c00, 0xc0 }, // 064740 - Scanlist 143 { 0x01281e00, 0xc0 }, // 064800 - Scanlist 144 { 0x012c0000, 0xc0 }, // 0648c0 - Scanlist 145 { 0x012c0200, 0xc0 }, // 064980 - Scanlist 146 { 0x012c0400, 0xc0 }, // 064a40 - Scanlist 147 { 0x012c0600, 0xc0 }, // 064b00 - Scanlist 148 { 0x012c0800, 0xc0 }, // 064bc0 - Scanlist 149 { 0x012c0a00, 0xc0 }, // 064c80 - Scanlist 150 { 0x012c0c00, 0xc0 }, // 064d40 - Scanlist 151 { 0x012c0e00, 0xc0 }, // 064e00 - Scanlist 152 { 0x012c1000, 0xc0 }, // 064ec0 - Scanlist 153 { 0x012c1200, 0xc0 }, // 064f80 - Scanlist 154 { 0x012c1400, 0xc0 }, // 065040 - Scanlist 155 { 0x012c1600, 0xc0 }, // 065100 - Scanlist 156 { 0x012c1800, 0xc0 }, // 0651c0 - Scanlist 157 { 0x012c1a00, 0xc0 }, // 065280 - Scanlist 158 { 0x012c1c00, 0xc0 }, // 065340 - Scanlist 159 { 0x012c1e00, 0xc0 }, // 065400 - Scanlist 160 { 0x01300000, 0xc0 }, // 0654c0 - Scanlist 161 { 0x01300200, 0xc0 }, // 065580 - Scanlist 162 { 0x01300400, 0xc0 }, // 065640 - Scanlist 163 { 0x01300600, 0xc0 }, // 065700 - Scanlist 164 { 0x01300800, 0xc0 }, // 0657c0 - Scanlist 165 { 0x01300a00, 0xc0 }, // 065880 - Scanlist 166 { 0x01300c00, 0xc0 }, // 065940 - Scanlist 167 { 0x01300e00, 0xc0 }, // 065a00 - Scanlist 168 { 0x01301000, 0xc0 }, // 065ac0 - Scanlist 169 { 0x01301200, 0xc0 }, // 065b80 - Scanlist 170 { 0x01301400, 0xc0 }, // 065c40 - Scanlist 171 { 0x01301600, 0xc0 }, // 065d00 - Scanlist 172 { 0x01301800, 0xc0 }, // 065dc0 - Scanlist 173 { 0x01301a00, 0xc0 }, // 065e80 - Scanlist 174 { 0x01301c00, 0xc0 }, // 065f40 - Scanlist 175 { 0x01301e00, 0xc0 }, // 066000 - Scanlist 176 { 0x01340000, 0xc0 }, // 0660c0 - Scanlist 177 { 0x01340200, 0xc0 }, // 066180 - Scanlist 178 { 0x01340400, 0xc0 }, // 066240 - Scanlist 179 { 0x01340600, 0xc0 }, // 066300 - Scanlist 180 { 0x01340800, 0xc0 }, // 0663c0 - Scanlist 181 { 0x01340a00, 0xc0 }, // 066480 - Scanlist 182 { 0x01340c00, 0xc0 }, // 066540 - Scanlist 183 { 0x01340e00, 0xc0 }, // 066600 - Scanlist 184 { 0x01341000, 0xc0 }, // 0666c0 - Scanlist 185 { 0x01341200, 0xc0 }, // 066780 - Scanlist 186 { 0x01341400, 0xc0 }, // 066840 - Scanlist 187 { 0x01341600, 0xc0 }, // 066900 - Scanlist 188 { 0x01341800, 0xc0 }, // 0669c0 - Scanlist 189 { 0x01341a00, 0xc0 }, // 066a80 - Scanlist 190 { 0x01341c00, 0xc0 }, // 066b40 - Scanlist 191 { 0x01341e00, 0xc0 }, // 066c00 - Scanlist 192 { 0x01380000, 0xc0 }, // 066cc0 - Scanlist 193 { 0x01380200, 0xc0 }, // 066d80 - Scanlist 194 { 0x01380400, 0xc0 }, // 066e40 - Scanlist 195 { 0x01380600, 0xc0 }, // 066f00 - Scanlist 196 { 0x01380800, 0xc0 }, // 066fc0 - Scanlist 197 { 0x01380a00, 0xc0 }, // 067080 - Scanlist 198 { 0x01380c00, 0xc0 }, // 067140 - Scanlist 199 { 0x01380e00, 0xc0 }, // 067200 - Scanlist 200 { 0x01381000, 0xc0 }, // 0672c0 - Scanlist 201 { 0x01381200, 0xc0 }, // 067380 - Scanlist 202 { 0x01381400, 0xc0 }, // 067440 - Scanlist 203 { 0x01381600, 0xc0 }, // 067500 - Scanlist 204 { 0x01381800, 0xc0 }, // 0675c0 - Scanlist 205 { 0x01381a00, 0xc0 }, // 067680 - Scanlist 206 { 0x01381c00, 0xc0 }, // 067740 - Scanlist 207 { 0x01381e00, 0xc0 }, // 067800 - Scanlist 208 { 0x013c0000, 0xc0 }, // 0678c0 - Scanlist 209 { 0x013c0200, 0xc0 }, // 067980 - Scanlist 210 { 0x013c0400, 0xc0 }, // 067a40 - Scanlist 211 { 0x013c0600, 0xc0 }, // 067b00 - Scanlist 212 { 0x013c0800, 0xc0 }, // 067bc0 - Scanlist 213 { 0x013c0a00, 0xc0 }, // 067c80 - Scanlist 214 { 0x013c0c00, 0xc0 }, // 067d40 - Scanlist 215 { 0x013c0e00, 0xc0 }, // 067e00 - Scanlist 216 { 0x013c1000, 0xc0 }, // 067ec0 - Scanlist 217 { 0x013c1200, 0xc0 }, // 067f80 - Scanlist 218 { 0x013c1400, 0xc0 }, // 068040 - Scanlist 219 { 0x013c1600, 0xc0 }, // 068100 - Scanlist 220 { 0x013c1800, 0xc0 }, // 0681c0 - Scanlist 221 { 0x013c1a00, 0xc0 }, // 068280 - Scanlist 222 { 0x013c1c00, 0xc0 }, // 068340 - Scanlist 223 { 0x013c1e00, 0xc0 }, // 068400 - Scanlist 224 { 0x01400000, 0xc0 }, // 0684c0 - Scanlist 225 { 0x01400200, 0xc0 }, // 068580 - Scanlist 226 { 0x01400400, 0xc0 }, // 068640 - Scanlist 227 { 0x01400600, 0xc0 }, // 068700 - Scanlist 228 { 0x01400800, 0xc0 }, // 0687c0 - Scanlist 229 { 0x01400a00, 0xc0 }, // 068880 - Scanlist 230 { 0x01400c00, 0xc0 }, // 068940 - Scanlist 231 { 0x01400e00, 0xc0 }, // 068a00 - Scanlist 232 { 0x01401000, 0xc0 }, // 068ac0 - Scanlist 233 { 0x01401200, 0xc0 }, // 068b80 - Scanlist 234 { 0x01401400, 0xc0 }, // 068c40 - Scanlist 235 { 0x01401600, 0xc0 }, // 068d00 - Scanlist 236 { 0x01401800, 0xc0 }, // 068dc0 - Scanlist 237 { 0x01401a00, 0xc0 }, // 068e80 - Scanlist 238 { 0x01401c00, 0xc0 }, // 068f40 - Scanlist 239 { 0x01401e00, 0xc0 }, // 069000 - Scanlist 240 { 0x01440000, 0xc0 }, // 0690c0 - Scanlist 241 { 0x01440200, 0xc0 }, // 069180 - Scanlist 242 { 0x01440400, 0xc0 }, // 069240 - Scanlist 243 { 0x01440600, 0xc0 }, // 069300 - Scanlist 244 { 0x01440800, 0xc0 }, // 0693c0 - Scanlist 245 { 0x01440a00, 0xc0 }, // 069480 - Scanlist 246 { 0x01440c00, 0xc0 }, // 069540 - Scanlist 247 { 0x01440e00, 0xc0 }, // 069600 - Scanlist 248 { 0x01441000, 0xc0 }, // 0696c0 - Scanlist 249 { 0x01441200, 0xc0 }, // 069780 - Scanlist 250 { 0x01640000, 0x640 }, // 069840 - Unknown index { 0x01640800, 0xc0 }, // 069e80 - Zeroes? { 0x02140000, 0x800 }, // 069f40 - Messages 1-8 { 0x02180000, 0x800 }, // 06a740 - Messages 9-16 { 0x021c0000, 0x800 }, // 06af40 - Messages 17-24 { 0x02200000, 0x800 }, // 06b740 - Messages 25-32 { 0x02240000, 0x800 }, // 06bf40 - Messages 33-40 { 0x02280000, 0x800 }, // 06c740 - Messages 41-48 { 0x022c0000, 0x800 }, // 06cf40 - Messages 49-56 { 0x02300000, 0x800 }, // 06d740 - Messages 57-64 { 0x02340000, 0x800 }, // 06df40 - Messages 65-72 { 0x02380000, 0x800 }, // 06e740 - Messages 73-80 { 0x023c0000, 0x800 }, // 06ef40 - Messages 81-88 { 0x02400000, 0x800 }, // 06f740 - Messages 89-96 { 0x02440000, 0x400 }, // 06ff40 - Messages 97-100 { 0x02480000, 0x1c0 }, // 070340 - Unknown index { 0x02480200, 0x40 }, // 070500 - Unknown bitmap { 0x024c0000, 0x40 }, // 070540 - Unknown data { 0x024c0c80, 0x40 }, // 070580 - Unknown data { 0x024c0d00, 0x200 }, // 0705c0 - Zeroes? { 0x024c1000, 0x140 }, // 0707c0 - Unknown data { 0x024c1280, 0x40 }, // 070900 - Unknown data { 0x024c1300, 0x80, 0x070940 }, // 070940 - Bitmaps of zones and (070980) scanlists { 0x024c1400, 0x80 }, // 0709c0 - Unknown data { 0x024c1500, 0x240, 0x070a40 }, // 070a40 - Bitmap of channels { 0x024c1800, 0x500 }, // 070c80 - Zeroes? { 0x024c2000, 0x440 }, // 071180 - Unknown data { 0x024c2600, 0x40 }, // 0715c0 - Unknown data { 0x02500000, 0x640 }, // 071600 - General settings { 0x02501000, 0x40 }, // 071c40 - Unknown data { 0x02501100, 0x140 }, // 071c80 - GPS message { 0x02540000, 0x1f40 }, // 071dc0 - Zone names 1-250 { 0x02580000, 0x1f40 }, // 073d00 - Radio IDs 1-250 { 0x025c0000, 0x880 }, // 075c40 - Unknown data, status message { 0x025c0b00, 0x40 }, // 0764c0 - Unknown data { 0x02600000, 0x9c40 }, // 076500 - Unknown data, bitmap { 0x02640000, 0x500 }, // 080140 - Bitmap of contacts { 0x02680000, 0xf4240 }, // 080640 - Contacts 1-10000 { 0x02900000, 0x80 }, // 174880 - Unknown index { 0x02900100, 0x80 }, // 174900 - Unknown index { 0x02940000, 0x180 }, // 174980 - AnalogContacts 1-128 { 0x02980000, 0x140 }, // 174b00 - Grouplist 1 { 0x02980200, 0x140 }, // 174c40 - Grouplist 2 { 0x02980400, 0x140 }, // 174d80 - Grouplist 3 { 0x02980600, 0x140 }, // 174ec0 - Grouplist 4 { 0x02980800, 0x140 }, // 175000 - Grouplist 5 { 0x02980a00, 0x140 }, // 175140 - Grouplist 6 { 0x02980c00, 0x140 }, // 175280 - Grouplist 7 { 0x02980e00, 0x140 }, // 1753c0 - Grouplist 8 { 0x02981000, 0x140 }, // 175500 - Grouplist 9 { 0x02981200, 0x140 }, // 175640 - Grouplist 10 { 0x02981400, 0x140 }, // 175780 - Grouplist 11 { 0x02981600, 0x140 }, // 1758c0 - Grouplist 12 { 0x02981800, 0x140 }, // 175a00 - Grouplist 13 { 0x02981a00, 0x140 }, // 175b40 - Grouplist 14 { 0x02981c00, 0x140 }, // 175c80 - Grouplist 15 { 0x02981e00, 0x140 }, // 175dc0 - Grouplist 16 { 0x02982000, 0x140 }, // 175f00 - Grouplist 17 { 0x02982200, 0x140 }, // 176040 - Grouplist 18 { 0x02982400, 0x140 }, // 176180 - Grouplist 19 { 0x02982600, 0x140 }, // 1762c0 - Grouplist 20 { 0x02982800, 0x140 }, // 176400 - Grouplist 21 { 0x02982a00, 0x140 }, // 176540 - Grouplist 22 { 0x02982c00, 0x140 }, // 176680 - Grouplist 23 { 0x02982e00, 0x140 }, // 1767c0 - Grouplist 24 { 0x02983000, 0x140 }, // 176900 - Grouplist 25 { 0x02983200, 0x140 }, // 176a40 - Grouplist 26 { 0x02983400, 0x140 }, // 176b80 - Grouplist 27 { 0x02983600, 0x140 }, // 176cc0 - Grouplist 28 { 0x02983800, 0x140 }, // 176e00 - Grouplist 29 { 0x02983a00, 0x140 }, // 176f40 - Grouplist 30 { 0x02983c00, 0x140 }, // 177080 - Grouplist 31 { 0x02983e00, 0x140 }, // 1771c0 - Grouplist 32 { 0x02984000, 0x140 }, // 177300 - Grouplist 33 { 0x02984200, 0x140 }, // 177440 - Grouplist 34 { 0x02984400, 0x140 }, // 177580 - Grouplist 35 { 0x02984600, 0x140 }, // 1776c0 - Grouplist 36 { 0x02984800, 0x140 }, // 177800 - Grouplist 37 { 0x02984a00, 0x140 }, // 177940 - Grouplist 38 { 0x02984c00, 0x140 }, // 177a80 - Grouplist 39 { 0x02984e00, 0x140 }, // 177bc0 - Grouplist 40 { 0x02985000, 0x140 }, // 177d00 - Grouplist 41 { 0x02985200, 0x140 }, // 177e40 - Grouplist 42 { 0x02985400, 0x140 }, // 177f80 - Grouplist 43 { 0x02985600, 0x140 }, // 1780c0 - Grouplist 44 { 0x02985800, 0x140 }, // 178200 - Grouplist 45 { 0x02985a00, 0x140 }, // 178340 - Grouplist 46 { 0x02985c00, 0x140 }, // 178480 - Grouplist 47 { 0x02985e00, 0x140 }, // 1785c0 - Grouplist 48 { 0x02986000, 0x140 }, // 178700 - Grouplist 49 { 0x02986200, 0x140 }, // 178840 - Grouplist 50 { 0x02986400, 0x140 }, // 178980 - Grouplist 51 { 0x02986600, 0x140 }, // 178ac0 - Grouplist 52 { 0x02986800, 0x140 }, // 178c00 - Grouplist 53 { 0x02986a00, 0x140 }, // 178d40 - Grouplist 54 { 0x02986c00, 0x140 }, // 178e80 - Grouplist 55 { 0x02986e00, 0x140 }, // 178fc0 - Grouplist 56 { 0x02987000, 0x140 }, // 179100 - Grouplist 57 { 0x02987200, 0x140 }, // 179240 - Grouplist 58 { 0x02987400, 0x140 }, // 179380 - Grouplist 59 { 0x02987600, 0x140 }, // 1794c0 - Grouplist 60 { 0x02987800, 0x140 }, // 179600 - Grouplist 61 { 0x02987a00, 0x140 }, // 179740 - Grouplist 62 { 0x02987c00, 0x140 }, // 179880 - Grouplist 63 { 0x02987e00, 0x140 }, // 1799c0 - Grouplist 64 { 0x02988000, 0x140 }, // 179b00 - Grouplist 65 { 0x02988200, 0x140 }, // 179c40 - Grouplist 66 { 0x02988400, 0x140 }, // 179d80 - Grouplist 67 { 0x02988600, 0x140 }, // 179ec0 - Grouplist 68 { 0x02988800, 0x140 }, // 17a000 - Grouplist 69 { 0x02988a00, 0x140 }, // 17a140 - Grouplist 70 { 0x02988c00, 0x140 }, // 17a280 - Grouplist 71 { 0x02988e00, 0x140 }, // 17a3c0 - Grouplist 72 { 0x02989000, 0x140 }, // 17a500 - Grouplist 73 { 0x02989200, 0x140 }, // 17a640 - Grouplist 74 { 0x02989400, 0x140 }, // 17a780 - Grouplist 75 { 0x02989600, 0x140 }, // 17a8c0 - Grouplist 76 { 0x02989800, 0x140 }, // 17aa00 - Grouplist 77 { 0x02989a00, 0x140 }, // 17ab40 - Grouplist 78 { 0x02989c00, 0x140 }, // 17ac80 - Grouplist 79 { 0x02989e00, 0x140 }, // 17adc0 - Grouplist 80 { 0x0298a000, 0x140 }, // 17af00 - Grouplist 81 { 0x0298a200, 0x140 }, // 17b040 - Grouplist 82 { 0x0298a400, 0x140 }, // 17b180 - Grouplist 83 { 0x0298a600, 0x140 }, // 17b2c0 - Grouplist 84 { 0x0298a800, 0x140 }, // 17b400 - Grouplist 85 { 0x0298aa00, 0x140 }, // 17b540 - Grouplist 86 { 0x0298ac00, 0x140 }, // 17b680 - Grouplist 87 { 0x0298ae00, 0x140 }, // 17b7c0 - Grouplist 88 { 0x0298b000, 0x140 }, // 17b900 - Grouplist 89 { 0x0298b200, 0x140 }, // 17ba40 - Grouplist 90 { 0x0298b400, 0x140 }, // 17bb80 - Grouplist 91 { 0x0298b600, 0x140 }, // 17bcc0 - Grouplist 92 { 0x0298b800, 0x140 }, // 17be00 - Grouplist 93 { 0x0298ba00, 0x140 }, // 17bf40 - Grouplist 94 { 0x0298bc00, 0x140 }, // 17c080 - Grouplist 95 { 0x0298be00, 0x140 }, // 17c1c0 - Grouplist 96 { 0x0298c000, 0x140 }, // 17c300 - Grouplist 97 { 0x0298c200, 0x140 }, // 17c440 - Grouplist 98 { 0x0298c400, 0x140 }, // 17c580 - Grouplist 99 { 0x0298c600, 0x140 }, // 17c6c0 - Grouplist 100 { 0x0298c800, 0x140 }, // 17c800 - Grouplist 101 { 0x0298ca00, 0x140 }, // 17c940 - Grouplist 102 { 0x0298cc00, 0x140 }, // 17ca80 - Grouplist 103 { 0x0298ce00, 0x140 }, // 17cbc0 - Grouplist 104 { 0x0298d000, 0x140 }, // 17cd00 - Grouplist 105 { 0x0298d200, 0x140 }, // 17ce40 - Grouplist 106 { 0x0298d400, 0x140 }, // 17cf80 - Grouplist 107 { 0x0298d600, 0x140 }, // 17d0c0 - Grouplist 108 { 0x0298d800, 0x140 }, // 17d200 - Grouplist 109 { 0x0298da00, 0x140 }, // 17d340 - Grouplist 110 { 0x0298dc00, 0x140 }, // 17d480 - Grouplist 111 { 0x0298de00, 0x140 }, // 17d5c0 - Grouplist 112 { 0x0298e000, 0x140 }, // 17d700 - Grouplist 113 { 0x0298e200, 0x140 }, // 17d840 - Grouplist 114 { 0x0298e400, 0x140 }, // 17d980 - Grouplist 115 { 0x0298e600, 0x140 }, // 17dac0 - Grouplist 116 { 0x0298e800, 0x140 }, // 17dc00 - Grouplist 117 { 0x0298ea00, 0x140 }, // 17dd40 - Grouplist 118 { 0x0298ec00, 0x140 }, // 17de80 - Grouplist 119 { 0x0298ee00, 0x140 }, // 17dfc0 - Grouplist 120 { 0x0298f000, 0x140 }, // 17e100 - Grouplist 121 { 0x0298f200, 0x140 }, // 17e240 - Grouplist 122 { 0x0298f400, 0x140 }, // 17e380 - Grouplist 123 { 0x0298f600, 0x140 }, // 17e4c0 - Grouplist 124 { 0x0298f800, 0x140 }, // 17e600 - Grouplist 125 { 0x0298fa00, 0x140 }, // 17e740 - Grouplist 126 { 0x0298fc00, 0x140 }, // 17e880 - Grouplist 127 { 0x0298fe00, 0x140 }, // 17e9c0 - Grouplist 128 { 0x02990000, 0x140 }, // 17eb00 - Grouplist 129 { 0x02990200, 0x140 }, // 17ec40 - Grouplist 130 { 0x02990400, 0x140 }, // 17ed80 - Grouplist 131 { 0x02990600, 0x140 }, // 17eec0 - Grouplist 132 { 0x02990800, 0x140 }, // 17f000 - Grouplist 133 { 0x02990a00, 0x140 }, // 17f140 - Grouplist 134 { 0x02990c00, 0x140 }, // 17f280 - Grouplist 135 { 0x02990e00, 0x140 }, // 17f3c0 - Grouplist 136 { 0x02991000, 0x140 }, // 17f500 - Grouplist 137 { 0x02991200, 0x140 }, // 17f640 - Grouplist 138 { 0x02991400, 0x140 }, // 17f780 - Grouplist 139 { 0x02991600, 0x140 }, // 17f8c0 - Grouplist 140 { 0x02991800, 0x140 }, // 17fa00 - Grouplist 141 { 0x02991a00, 0x140 }, // 17fb40 - Grouplist 142 { 0x02991c00, 0x140 }, // 17fc80 - Grouplist 143 { 0x02991e00, 0x140 }, // 17fdc0 - Grouplist 144 { 0x02992000, 0x140 }, // 17ff00 - Grouplist 145 { 0x02992200, 0x140 }, // 180040 - Grouplist 146 { 0x02992400, 0x140 }, // 180180 - Grouplist 147 { 0x02992600, 0x140 }, // 1802c0 - Grouplist 148 { 0x02992800, 0x140 }, // 180400 - Grouplist 149 { 0x02992a00, 0x140 }, // 180540 - Grouplist 150 { 0x02992c00, 0x140 }, // 180680 - Grouplist 151 { 0x02992e00, 0x140 }, // 1807c0 - Grouplist 152 { 0x02993000, 0x140 }, // 180900 - Grouplist 153 { 0x02993200, 0x140 }, // 180a40 - Grouplist 154 { 0x02993400, 0x140 }, // 180b80 - Grouplist 155 { 0x02993600, 0x140 }, // 180cc0 - Grouplist 156 { 0x02993800, 0x140 }, // 180e00 - Grouplist 157 { 0x02993a00, 0x140 }, // 180f40 - Grouplist 158 { 0x02993c00, 0x140 }, // 181080 - Grouplist 159 { 0x02993e00, 0x140 }, // 1811c0 - Grouplist 160 { 0x02994000, 0x140 }, // 181300 - Grouplist 161 { 0x02994200, 0x140 }, // 181440 - Grouplist 162 { 0x02994400, 0x140 }, // 181580 - Grouplist 163 { 0x02994600, 0x140 }, // 1816c0 - Grouplist 164 { 0x02994800, 0x140 }, // 181800 - Grouplist 165 { 0x02994a00, 0x140 }, // 181940 - Grouplist 166 { 0x02994c00, 0x140 }, // 181a80 - Grouplist 167 { 0x02994e00, 0x140 }, // 181bc0 - Grouplist 168 { 0x02995000, 0x140 }, // 181d00 - Grouplist 169 { 0x02995200, 0x140 }, // 181e40 - Grouplist 170 { 0x02995400, 0x140 }, // 181f80 - Grouplist 171 { 0x02995600, 0x140 }, // 1820c0 - Grouplist 172 { 0x02995800, 0x140 }, // 182200 - Grouplist 173 { 0x02995a00, 0x140 }, // 182340 - Grouplist 174 { 0x02995c00, 0x140 }, // 182480 - Grouplist 175 { 0x02995e00, 0x140 }, // 1825c0 - Grouplist 176 { 0x02996000, 0x140 }, // 182700 - Grouplist 177 { 0x02996200, 0x140 }, // 182840 - Grouplist 178 { 0x02996400, 0x140 }, // 182980 - Grouplist 179 { 0x02996600, 0x140 }, // 182ac0 - Grouplist 180 { 0x02996800, 0x140 }, // 182c00 - Grouplist 181 { 0x02996a00, 0x140 }, // 182d40 - Grouplist 182 { 0x02996c00, 0x140 }, // 182e80 - Grouplist 183 { 0x02996e00, 0x140 }, // 182fc0 - Grouplist 184 { 0x02997000, 0x140 }, // 183100 - Grouplist 185 { 0x02997200, 0x140 }, // 183240 - Grouplist 186 { 0x02997400, 0x140 }, // 183380 - Grouplist 187 { 0x02997600, 0x140 }, // 1834c0 - Grouplist 188 { 0x02997800, 0x140 }, // 183600 - Grouplist 189 { 0x02997a00, 0x140 }, // 183740 - Grouplist 190 { 0x02997c00, 0x140 }, // 183880 - Grouplist 191 { 0x02997e00, 0x140 }, // 1839c0 - Grouplist 192 { 0x02998000, 0x140 }, // 183b00 - Grouplist 193 { 0x02998200, 0x140 }, // 183c40 - Grouplist 194 { 0x02998400, 0x140 }, // 183d80 - Grouplist 195 { 0x02998600, 0x140 }, // 183ec0 - Grouplist 196 { 0x02998800, 0x140 }, // 184000 - Grouplist 197 { 0x02998a00, 0x140 }, // 184140 - Grouplist 198 { 0x02998c00, 0x140 }, // 184280 - Grouplist 199 { 0x02998e00, 0x140 }, // 1843c0 - Grouplist 200 { 0x02999000, 0x140 }, // 184500 - Grouplist 201 { 0x02999200, 0x140 }, // 184640 - Grouplist 202 { 0x02999400, 0x140 }, // 184780 - Grouplist 203 { 0x02999600, 0x140 }, // 1848c0 - Grouplist 204 { 0x02999800, 0x140 }, // 184a00 - Grouplist 205 { 0x02999a00, 0x140 }, // 184b40 - Grouplist 206 { 0x02999c00, 0x140 }, // 184c80 - Grouplist 207 { 0x02999e00, 0x140 }, // 184dc0 - Grouplist 208 { 0x0299a000, 0x140 }, // 184f00 - Grouplist 209 { 0x0299a200, 0x140 }, // 185040 - Grouplist 210 { 0x0299a400, 0x140 }, // 185180 - Grouplist 211 { 0x0299a600, 0x140 }, // 1852c0 - Grouplist 212 { 0x0299a800, 0x140 }, // 185400 - Grouplist 213 { 0x0299aa00, 0x140 }, // 185540 - Grouplist 214 { 0x0299ac00, 0x140 }, // 185680 - Grouplist 215 { 0x0299ae00, 0x140 }, // 1857c0 - Grouplist 216 { 0x0299b000, 0x140 }, // 185900 - Grouplist 217 { 0x0299b200, 0x140 }, // 185a40 - Grouplist 218 { 0x0299b400, 0x140 }, // 185b80 - Grouplist 219 { 0x0299b600, 0x140 }, // 185cc0 - Grouplist 220 { 0x0299b800, 0x140 }, // 185e00 - Grouplist 221 { 0x0299ba00, 0x140 }, // 185f40 - Grouplist 222 { 0x0299bc00, 0x140 }, // 186080 - Grouplist 223 { 0x0299be00, 0x140 }, // 1861c0 - Grouplist 224 { 0x0299c000, 0x140 }, // 186300 - Grouplist 225 { 0x0299c200, 0x140 }, // 186440 - Grouplist 226 { 0x0299c400, 0x140 }, // 186580 - Grouplist 227 { 0x0299c600, 0x140 }, // 1866c0 - Grouplist 228 { 0x0299c800, 0x140 }, // 186800 - Grouplist 229 { 0x0299ca00, 0x140 }, // 186940 - Grouplist 230 { 0x0299cc00, 0x140 }, // 186a80 - Grouplist 231 { 0x0299ce00, 0x140 }, // 186bc0 - Grouplist 232 { 0x0299d000, 0x140 }, // 186d00 - Grouplist 233 { 0x0299d200, 0x140 }, // 186e40 - Grouplist 234 { 0x0299d400, 0x140 }, // 186f80 - Grouplist 235 { 0x0299d600, 0x140 }, // 1870c0 - Grouplist 236 { 0x0299d800, 0x140 }, // 187200 - Grouplist 237 { 0x0299da00, 0x140 }, // 187340 - Grouplist 238 { 0x0299dc00, 0x140 }, // 187480 - Grouplist 239 { 0x0299de00, 0x140 }, // 1875c0 - Grouplist 240 { 0x0299e000, 0x140 }, // 187700 - Grouplist 241 { 0x0299e200, 0x140 }, // 187840 - Grouplist 242 { 0x0299e400, 0x140 }, // 187980 - Grouplist 243 { 0x0299e600, 0x140 }, // 187ac0 - Grouplist 244 { 0x0299e800, 0x140 }, // 187c00 - Grouplist 245 { 0x0299ea00, 0x140 }, // 187d40 - Grouplist 246 { 0x0299ec00, 0x140 }, // 187e80 - Grouplist 247 { 0x0299ee00, 0x140 }, // 187fc0 - Grouplist 248 { 0x0299f000, 0x140 }, // 188100 - Grouplist 249 { 0x0299f200, 0x140 }, // 188240 - Grouplist 250 { 0, 0 }, dmrconfig-master/d868uv.c000066400000000000000000002517361354060760700155550ustar00rootroot00000000000000/* * Interface to Anytone D868UV. * * Copyright (C) 2018 Serge Vakulenko, KK6ABQ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include #include #include #include #include "radio.h" #include "util.h" // // Sizes of configuration tables. // #define NCHAN 4000 #define NCONTACTS 10000 #define NZONES 250 #define NGLISTS 250 #define NSCANL 250 #define NMESSAGES 100 #define NCALLSIGNS 160000 #define CALLSIGN_SIZE (12*1024*1024) // Size of callsign data // // Offsets in the image file. // #define OFFSET_BANK1 0x000040 // Channels #define OFFSET_ZONELISTS 0x03e8c0 // Channel lists of zones #define OFFSET_SCANLISTS 0x05dcc0 // Scanlists #define OFFSET_MESSAGES 0x069f40 // Messages #define OFFSET_ZONE_MAP 0x070940 // Bitmap of valid zones #define OFFSET_SCANL_MAP 0x070980 // Bitmap of valid scanlists #define OFFSET_CHAN_MAP 0x070a40 // Bitmap of valid channels #define OFFSET_SETTINGS 0x071600 // General settings #define OFFSET_ZCHAN_A 0x071700 // Zone A channel #define OFFSET_ZCHAN_B 0x071900 // Zone B channel #define OFFSET_ZONENAMES 0x071dc0 // Names of zones #define OFFSET_RADIOID 0x073d00 // Table of radio IDs #define OFFSET_CONTACT_LIST 0x076500 // List of valid contact indices #define OFFSET_CONTACT_MAP 0x080140 // Bitmap of invalid contacts #define OFFSET_CONTACTS 0x080640 // Contacts #define OFFSET_GLISTS 0x174b00 // RX group lists // // Addresses in the radio flash memory. // #define ADDR_CALLDB_LIST 0x04000000 // Map of callsign database #define ADDR_CONT_ID_LIST 0x04280000 // Map of contact IDs to contacts #define ADDR_CALLDB_SIZE 0x044c0000 // Sizes of callsign database #define ADDR_CALLDB_DATA 0x04500000 // Data of callsign database #define GET_SETTINGS() ((general_settings_t*) &radio_mem[OFFSET_SETTINGS]) #define GET_RADIOID() ((radioid_t*) &radio_mem[OFFSET_RADIOID]) #define GET_ZONEMAP() (&radio_mem[OFFSET_ZONE_MAP]) #define GET_CONTACT_MAP() (&radio_mem[OFFSET_CONTACT_MAP]) #define GET_CONTACT_LIST() ((uint32_t*) &radio_mem[OFFSET_CONTACT_LIST]) #define GET_SCANL_MAP() (&radio_mem[OFFSET_SCANL_MAP]) #define GET_ZONENAME(i) (&radio_mem[OFFSET_ZONENAMES + (i)*32]) #define GET_ZONE_CHAN_A(i) ((i) + (uint16_t*) &radio_mem[OFFSET_ZCHAN_A]) #define GET_ZONE_CHAN_B(i) ((i) + (uint16_t*) &radio_mem[OFFSET_ZCHAN_B]) #define GET_ZONELIST(i) ((uint16_t*) &radio_mem[OFFSET_ZONELISTS + (i)*512]) #define GET_CONTACT(i) ((contact_t*) &radio_mem[OFFSET_CONTACTS + (i)*100]) #define GET_GROUPLIST(i) ((grouplist_t*) &radio_mem[OFFSET_GLISTS + (i)*320]) #define GET_SCANLIST(i) ((scanlist_t*) &radio_mem[OFFSET_SCANLISTS + (i)*192]) #define GET_MESSAGE(i) ((uint8_t*) &radio_mem[OFFSET_MESSAGES + (i)*256]) #define VALID_TEXT(txt) (*(txt) != 0 && *(txt) != 0xff) #define VALID_GROUPLIST(gl) ((gl)->member[0] != 0xffffffff && VALID_TEXT((gl)->name)) // // Size of memory image. // Essentialy a sum of all fragments defined ind868um-map.h. // #define MEMSZ 1606528 // // D868UV radio has a huge internal address space, more than 64 Mbytes. // The configuration data are dispersed over this space. // Here is a table of fragments: starting address and length. // We read these fragments and save them into a file continuously. // typedef struct { unsigned address; unsigned length; unsigned offset; } fragment_t; static fragment_t region_map[] = { #include "d868uv-map.h" }; // // Channel data. // typedef struct { // Bytes 0-7 uint32_t rx_frequency; // RX Frequency: 8 digits BCD uint32_t tx_offset; // TX Offset: 8 digits BCD // Byte 8 uint8_t channel_mode : 2, // Mode: Analog or Digital #define MODE_ANALOG 0 // Analog #define MODE_DIGITAL 1 // Digital #define MODE_A_D 2 // A+D, transmit analog #define MODE_D_A 3 // D+A, transmit digital power : 2, // Power: Low, Middle, High, Turbo #define POWER_LOW 0 #define POWER_MIDDLE 1 #define POWER_HIGH 2 #define POWER_TURBO 3 bandwidth : 1, // Bandwidth: 12.5 or 25 kHz #define BW_12_5_KHZ 0 #define BW_25_KHZ 1 _unused8 : 1, // 0 repeater_mode : 2; // Sign of TX frequency offset #define RM_SIMPLEX 0 // TX frequency = RX frequency #define RM_TXPOS 1 // Positive TX offset #define RM_TXNEG 2 // Negative TX offset // Byte 9 uint8_t rx_ctcss : 1, // CTCSS Decode rx_dcs : 1, // DCS Decode tx_ctcss : 1, // CTCSS Encode tx_dcs : 1, // DCS Encode reverse : 1, // Reverse rx_only : 1, // TX Prohibit call_confirm : 1, // Call Confirmation talkaround : 1; // Talk Around // Bytes 10-15 uint8_t ctcss_transmit; // CTCSS Encode: 0=62.5, 50=254.1, 51=Define uint8_t ctcss_receive; // CTCSS Decode: 0=62.5, 50=254.1, 51=Define uint16_t dcs_transmit; // DCS Encode: 0=D000N, 17=D021N, 1023=D777I uint16_t dcs_receive; // DCS Decode: 0=D000N, 17=D021N, 1023=D777I // Bytes 16-19 uint16_t custom_ctcss; // 0x09cf=251.1, 0x0a28=260 uint8_t tone2_decode; // 2Tone Decode: 0x00=1, 0x0f=16 uint8_t _unused19; // 0 // Bytes 20-23 uint16_t contact_index; // Contact: 0=Contact1, 1=Contact2, ... uint16_t _unused22; // 0 // Byte 24 uint8_t id_index; // Index in Radio ID table // Byte 25 uint8_t ptt_id : 2, // PTT ID #define PTTID_OFF 0 #define PTTID_START 1 #define PTTID_END 2 #define PTTID_START_END 3 _unused25_1 : 2, // 0 squelch_mode : 1, // Squelch Mode #define SQ_CARRIER 0 // Carrier #define SQ_TONE 1 // CTCSS/DCS _unused25_2 : 3; // 0 // Byte 26 uint8_t tx_permit : 2, // TX Permit #define PERMIT_ALWAYS 0 // Always #define PERMIT_CH_FREE 1 // Channel Free #define PERMIT_CC_DIFF 2 // Different Color Code #define PERMIT_CC_SAME 3 // Same Color Code _unused26_1 : 2, // 0 _opt_signal : 2, // Optional Signal #define OPTSIG_OFF 0 // Off #define OPTSIG_DTMF 1 // DTMF #define OPTSIG_2TONE 2 // 2Tone #define OPTSIG_5TONE 3 // 5Tone _unused26_2 : 2; // 0 // Bytes 27-31 uint8_t scan_list_index; // Scan List: 0xff=None, 0=ScanList1... uint8_t group_list_index; // Receive Group List: 0xff=None, 0=GroupList1... uint8_t id_2tone; // 2Tone ID: 0=1, 0x17=24 uint8_t id_5tone; // 5Tone ID: 0=1, 0x63=100 uint8_t id_dtmf; // DTMF ID: 0=1, 0x0f=16 // Byte 32 uint8_t color_code; // Color Code: 0-15 // Byte 33 uint8_t slot2 : 1, // Slot: Slot2 _unused33_1 : 1, // 0 simplex_tdma : 1, // Simplex TDMA: On _unused33_2 : 1, // 0 tdma_adaptive : 1, // TDMA Adaptive: On _unused33_3 : 1, // 0 enh_encryption : 1, // Encryption Type: Enhanced Encryption work_alone : 1; // Work Alone: On // Byte 34 uint8_t encryption; // Digital Encryption: 1-32, 0=Off // Bytes 35-51 uint8_t name[16]; // Channel Name, zero filled uint8_t _unused51; // 0 // Byte 52 uint8_t ranging : 1, // Ranging: On through_mode : 1, // Through Mode: On _unused52 : 6; // 0 // Byte 53 uint8_t aprs_report : 1, // APRS Report: On _unused53 : 7; // 0 // Bytes 54-63 uint8_t aprs_channel; // APRS Report Channel: 0x00=1, ... 0x07=8 uint8_t _unused55[9]; // 0 } channel_t; // // General settings: 0x640 bytes at 0x02500000. // typedef struct { // Bytes 0-5. uint8_t _unused0[6]; // Bytes 6-7. uint8_t power_on; // Power-on Interface #define PWON_DEFAULT 0 // Default #define PWON_CUST_CHAR 1 // Custom Char #define PWON_CUST_PICT 2 // Custom Picture uint8_t _unused7; // Bytes 8-0x5ff. uint8_t _unused8[0x5f8]; // Bytes 0x600-0x61f uint8_t intro_line1[16]; // Up to 14 characters uint8_t intro_line2[16]; // Up to 14 characters // Bytes 0x620-0x63f uint8_t password[16]; // Up to 8 ascii digits uint8_t _unused630[16]; // 0xff } general_settings_t; // // Radio ID table: 250 entries, 0x1f40 bytes at 0x02580000. // typedef struct { // Bytes 0-3. uint8_t id[4]; // Up to 8 BCD digits #define GET_ID(x) (((x)[0] >> 4) * 10000000 +\ ((x)[0] & 15) * 1000000 +\ ((x)[1] >> 4) * 100000 +\ ((x)[1] & 15) * 10000 +\ ((x)[2] >> 4) * 1000 +\ ((x)[2] & 15) * 100 +\ ((x)[3] >> 4) * 10 +\ ((x)[3] & 15)) // Byte 4. uint8_t _unused4; // 0 // Bytes 5-20 uint8_t name[16]; // Name // Bytes 21-31 uint8_t _unused21[11]; // 0 } radioid_t; // // Contact data: 100 bytes per record. // typedef struct { // Byte 0 uint8_t type; // Call Type: Group Call, Private Call or All Call #define CALL_PRIVATE 0 #define CALL_GROUP 1 #define CALL_ALL 2 // Bytes 1-16 uint8_t name[16]; // Contact Name (ASCII) // Bytes 17-34 uint8_t _unused17[18]; // 0 // Bytes 35-38 uint8_t id[4]; // Call ID: BCD coded 8 digits #define CONTACT_ID(ct) GET_ID((ct)->id) // Byte 39 uint8_t call_alert; // Call Alert: None, Ring, Online Alert #define ALERT_NONE 0 #define ALERT_RING 1 #define ALERT_ONLINE 2 // Bytes 40-99 uint8_t _unused40[60]; // 0 } contact_t; // // Group list data. // typedef struct { // Bytes 0-255 uint32_t member[64]; // Contacts: 0=Contact1, 0xffffffff=Empty // Bytes 256-319 uint8_t name[35]; // Group List Name (ASCII) uint8_t unused[29]; // 0 } grouplist_t; // // Scan list data: 192 bytes. // typedef struct { // Bytes 0-1 uint8_t _unused0; // 0 uint8_t prio_ch_select; // Priority Channel Select #define PRIO_CHAN_OFF 0 // Off #define PRIO_CHAN_SEL1 1 // Priority Channel Select1 #define PRIO_CHAN_SEL2 2 // Priority Channel Select2 #define PRIO_CHAN_SEL12 3 // Priority Channel Select1 + Priority Channel Select2 // Bytes 2-5 uint16_t priority_ch1; // Priority Channel 1: 0=Current Channel, 0xffff=Off uint16_t priority_ch2; // Priority Channel 2: 0=Current Channel, 0xffff=Off // Bytes 6-13 uint16_t look_back_a; // Look Back Time A, sec*10 uint16_t look_back_b; // Look Back Time B, sec*10 uint16_t dropout_delay; // Dropout Delay Time, sec*10 uint16_t dwell; // Dwell Time, sec*10 // Byte 14 uint8_t revert_channel; // Revert Channel #define REVCH_SELECTED 0 // Selected #define REVCH_SEL_TB 1 // Selected + TalkBack #define REVCH_PRIO_CH1 2 // Priority Channel Select1 #define REVCH_PRIO_CH2 3 // Priority Channel Select2 #define REVCH_LAST_CALLED 4 // Last Called #define REVCH_LAST_USED 5 // Last Used #define REVCH_PRIO_CH1_TB 6 // Priority Channel Select1 + TalkBack #define REVCH_PRIO_CH2_TB 7 // Priority Channel Select2 + TalkBack // Bytes 15-31 uint8_t name[16]; // Scan List Name (ASCII) uint8_t _unused31; // 0 // Bytes 32-131 uint16_t member[50]; // Channels, 0xffff=empty // Bytes 132-191 uint8_t _unused132[60]; // 0 } scanlist_t; // // Entry of callsign map: 8 bytes. // typedef struct { uint32_t id; // DMR ID uint32_t offset; // Offset in the callsign data blob } callsign_map_t; // // Sizes of callsign database. // typedef struct { uint32_t count; // Number of records uint32_t last; // Last address of data blob uint32_t _unused3; uint32_t _unused4; } callsign_sizes_t; static const char *POWER_NAME[] = { "Low", "Mid", "High", "Turbo" }; static const char *DIGITAL_ADMIT_NAME[] = { "-", "Free", "NColor", "Color" }; static const char *ANALOG_ADMIT_NAME[] = { "-", "Free", "Tone", "Tone" }; static const char *BANDWIDTH[] = { "12.5", "25" }; static const char *CONTACT_TYPE[] = { "Private", "Group", "All", "Unknown" }; static const char *ALERT_TYPE[] = { "-", "+", "Online", "Unknown" }; // // CTCSS tones, Hz*10. // #define NCTCSS 51 static const int CTCSS_TONES[NCTCSS] = { 625, 670, 693, 719, 744, 770, 797, 825, 854, 885, 915, 948, 974, 1000, 1035, 1072, 1109, 1148, 1188, 1230, 1273, 1318, 1365, 1413, 1462, 1514, 1567, 1598, 1622, 1655, 1679, 1713, 1738, 1773, 1799, 1835, 1862, 1899, 1928, 1966, 1995, 2035, 2065, 2107, 2181, 2257, 2291, 2336, 2418, 2503, 2541, }; // // Print a generic information about the device. // static void d868uv_print_version(radio_device_t *radio, FILE *out) { // Empty. } // // Return true when the specified region has to be skipped. // Skip unused channels, contacts, zones and scanlists. // static int skip_region(unsigned addr, unsigned file_offset, uint8_t *mem, unsigned nbytes) { int index; // Channels. if (addr >= 0x00800000 && addr < 0x01000000) { index = (file_offset - OFFSET_BANK1) / 64; if (index < NCHAN) { uint8_t *bitmap = &radio_mem[OFFSET_CHAN_MAP]; if ((bitmap[index / 8] >> (index & 7)) & 1) { // Channel is valid, don't skip. return 0; } // Invalid channel: skip it, erase data. if (mem) { memset(mem, 0xff, nbytes); } return 1; } } // Contacts. if (addr >= 0x02680000 && addr < 0x02900000) { index = (file_offset - OFFSET_CONTACTS) / 100; if (index < NCONTACTS) { uint8_t *cmap = GET_CONTACT_MAP(); if ((cmap[index / 8] >> (index & 7)) & 1) { // Invalid contact: skip it, erase data. if (mem) { memset(mem, 0xff, nbytes); } return 1; } // Contact is valid, don't skip. return 0; } } // Zones. if (addr >= 0x01000000 && addr < 0x01080000) { index = (file_offset - OFFSET_ZONELISTS) / 512; if (index < NZONES) { uint8_t *zmap = GET_ZONEMAP(); if ((zmap[index / 8] >> (index & 7)) & 1) { // Zone is valid, don't skip. return 0; } // Invalid zone: skip it, erase data. if (mem) { memset(mem, 0xff, nbytes); } return 1; } } // Scanlists. if (addr >= 0x01080000 && addr < 0x01640000) { index = (file_offset - OFFSET_SCANLISTS) / 192; if (index < NSCANL) { uint8_t *slmap = GET_SCANL_MAP(); if ((slmap[index / 8] >> (index & 7)) & 1) { // Scanlist is valid, don't skip. return 0; } // Invalid scanlist: skip it, erase data. if (mem) { memset(mem, 0xff, nbytes); } return 1; } } return 0; } // // Read memory image from the device. // static void d868uv_download(radio_device_t *radio) { fragment_t *f; // Read bitmaps first. for (f=region_map; f->length; f++) { if (f->offset != 0) { serial_read_region(f->address, &radio_mem[f->offset], f->length); } } // Read other regions sequentially. unsigned file_offset = 0; unsigned bytes_transferred = 0; unsigned last_printed = 0; //printf("Address Offset\n"); for (f=region_map; f->length; f++) { unsigned addr = f->address; unsigned nbytes = f->length; //printf("%08x %06x\n", addr, file_offset); while (nbytes > 0) { unsigned n = (nbytes > 64) ? 64 : nbytes; if (! skip_region(addr, file_offset, &radio_mem[file_offset], n)) { if (f->offset == 0) serial_read_region(addr, &radio_mem[file_offset], n); bytes_transferred += n; } file_offset += n; addr += n; nbytes -= n; if (bytes_transferred / (32*1024) != last_printed) { fprintf(stderr, "#"); fflush(stderr); last_printed = bytes_transferred / (32*1024); } } } if (file_offset != MEMSZ) { fprintf(stderr, "\nWrong MEMSZ=%u for D868UV!\n", MEMSZ); fprintf(stderr, "Should be %u; check d868uv-map.h!\n", file_offset); exit(-1); } } // // Get contact by index. // static contact_t *get_contact(int i) { uint8_t *cmap = GET_CONTACT_MAP(); if ((cmap[i / 8] >> (i & 7)) & 1) return 0; return GET_CONTACT(i); } // // Write memory image to the device. // static void d868uv_upload(radio_device_t *radio, int cont_flag) { fragment_t *f; unsigned file_offset = 0; unsigned bytes_transferred = 0; unsigned last_printed = 0; for (f=region_map; f->length; f++) { unsigned addr = f->address; unsigned nbytes = f->length; while (nbytes > 0) { unsigned n = (nbytes > 64) ? 64 : nbytes; if (! skip_region(addr, file_offset, 0, 0)) { serial_write_region(addr, &radio_mem[file_offset], n); bytes_transferred += n; } file_offset += n; addr += n; nbytes -= n; if (bytes_transferred / (32*1024) != last_printed) { fprintf(stderr, "#"); fflush(stderr); last_printed = bytes_transferred / (32*1024); } } } if (file_offset != MEMSZ) { fprintf(stderr, "\nWrong MEMSZ=%u for D868UV!\n", MEMSZ); fprintf(stderr, "Should be %u; check d868uv-map.h!\n", file_offset); exit(-1); } // // Build and upload a map of IDs to contacts. // The map has to be sorted by ID. // uint64_t map[8*NCONTACTS + 72]; int index, ncontacts = 0; memset(map, 0xff, sizeof(map)); for (index=0; indexid[0] << 25 | ct->id[1] << 17 | ct->id[2] << 9 | ct->id[3] << 1; if (ct->type == CALL_GROUP) item |= 1; item |= (uint64_t) index << 32; int k; for (k=0; k (uint32_t)item) { // Insert item there and shift the rest. uint64_t prev = map[k]; map[k] = item; item = prev; } } } //printf("\n"); //print_hex((uint8_t*)map, ncontacts*8 + 8); //printf("\n"); serial_write_region(ADDR_CONT_ID_LIST, (uint8_t*)map, (ncontacts*8 + 8 + 63) / 64 * 64); } // // Check whether the memory image is compatible with this device. // static int d868uv_is_compatible(radio_device_t *radio) { if (memcmp("D868UVE", (char*)&radio_mem[0], 7) == 0) return 1; if (memcmp("D878UV", (char*)&radio_mem[0], 6) == 0) return 1; if (memcmp("D6X2UV", (char*)&radio_mem[0], 6) == 0) return 1; return 0; } static void print_id(FILE *out, int verbose) { radioid_t *ri = GET_RADIOID(); unsigned id = GET_ID(ri->id); if (verbose) fprintf(out, "\n# Unique DMR ID and name of this radio."); fprintf(out, "\nID: %u\nName: ", id); if (VALID_TEXT(ri->name)) { print_ascii(out, ri->name, 16, 0); } else { fprintf(out, "-"); } fprintf(out, "\n"); } static void print_intro(FILE *out, int verbose) { general_settings_t *gs = GET_SETTINGS(); if (verbose) fprintf(out, "\n# Text displayed when the radio powers up.\n"); fprintf(out, "Intro Line 1: "); if (VALID_TEXT(gs->intro_line1)) { print_ascii(out, gs->intro_line1, 14, 0); } else { fprintf(out, "-"); } fprintf(out, "\nIntro Line 2: "); if (VALID_TEXT(gs->intro_line2)) { print_ascii(out, gs->intro_line2, 14, 0); } else { fprintf(out, "-"); } fprintf(out, "\n"); } // // Get channel bank by index. // static channel_t *get_bank(int i) { return (channel_t*) &radio_mem[OFFSET_BANK1 + i*0x2000]; } // // Get channel by index. // static channel_t *get_channel(int i) { channel_t *bank = get_bank(i >> 7); uint8_t *bitmap = &radio_mem[OFFSET_CHAN_MAP]; if ((bitmap[i / 8] >> (i & 7)) & 1) return &bank[i % 128]; else return 0; } // // Do we have any channels of given mode? // static int have_channels(int mode) { int i; for (i=0; ichannel_mode == mode) return 1; // Treat D+A mode as digital. if (mode == MODE_DIGITAL && ch->channel_mode == MODE_D_A) return 1; // Treat A+D mode as analog. if (mode == MODE_ANALOG && ch->channel_mode == MODE_A_D) return 1; } return 0; } // // Return true when any contacts are present. // static int have_contacts() { uint8_t *cmap = GET_CONTACT_MAP(); int i; for (i=0; i<(NCONTACTS+7)/8; i++) { if (cmap[i] != 0xff) return 1; } return 0; } // // Print frequency (BCD value). // static void print_rx_freq(FILE *out, unsigned data) { fprintf(out, "%d%d%d.%d%d%d", (data >> 4) & 15, data & 15, (data >> 12) & 15, (data >> 8) & 15, (data >> 20) & 15, (data >> 16) & 15); if (((data >> 24) & 0xff) == 0) { fputs(" ", out); } else { fprintf(out, "%d", (data >> 28) & 15); if (((data >> 24) & 15) == 0) { fputs(" ", out); } else { fprintf(out, "%d", (data >> 24) & 15); } } } // // Convert a 4-byte frequency value from binary coded decimal // to integer format (in Hertz). // static int bcd_to_hz(unsigned bcd) { int a = (bcd >> 4) & 15; int b = bcd & 15; int c = (bcd >> 12) & 15; int d = (bcd >> 8) & 15; int e = (bcd >> 20) & 15; int f = (bcd >> 16) & 15; int g = (bcd >> 28) & 15; int h = (bcd >> 24) & 15; return (((((((a*10 + b) * 10 + c) * 10 + d) * 10 + e) * 10 + f) * 10 + g) * 10 + h) * 10; } // // Print the transmit offset or frequency. // TX value is a delta. // static void print_tx_offset(FILE *out, unsigned tx_offset_bcd, unsigned mode) { int offset; switch (mode) { default: case RM_SIMPLEX: // TX frequency = RX frequency fprintf(out, "+0 "); break; case RM_TXPOS: // Positive TX offset offset = bcd_to_hz(tx_offset_bcd); fprintf(out, "+"); print_mhz(out, offset); break; case RM_TXNEG: // Negative TX offset offset = bcd_to_hz(tx_offset_bcd); fprintf(out, "-"); print_mhz(out, offset); break; } } // // Return scan list index for specified channel. // It depends on radio type. // static int get_scanlist_index(radio_device_t *radio, channel_t *ch) { if (radio == &radio_dmr6x2) { // Radio DMR-6x2 has eight scan lists per channel. return ch->aprs_channel; } else { return ch->scan_list_index; } } // // Print base parameters of the channel: // Name // RX Frequency // TX Frequency // Power // Scan List // TOT // RX Only // static void print_chan_base(FILE *out, radio_device_t *radio, channel_t *ch, int cnum) { fprintf(out, "%5d ", cnum); print_ascii(out, ch->name, 16, 1); fprintf(out, " "); print_rx_freq(out, ch->rx_frequency); fprintf(out, " "); print_tx_offset(out, ch->tx_offset, ch->repeater_mode); fprintf(out, "%-5s ", POWER_NAME[ch->power]); int scanlist_index = get_scanlist_index(radio, ch); if (scanlist_index == 0xff) fprintf(out, "- "); else fprintf(out, "%-4d ", scanlist_index + 1); // Transmit timeout timer on D868UV is configured globally, // not per channel. So we don't print it here. fprintf(out, "- "); fprintf(out, "%c ", "-+"[ch->rx_only]); } static void print_digital_channels(FILE *out, radio_device_t *radio, int verbose) { int i; if (verbose) { fprintf(out, "# Table of digital channels.\n"); fprintf(out, "# 1) Channel number: 1-%d\n", NCHAN); fprintf(out, "# 2) Name: up to 16 characters, use '_' instead of space\n"); fprintf(out, "# 3) Receive frequency in MHz\n"); fprintf(out, "# 4) Transmit frequency or +/- offset in MHz\n"); fprintf(out, "# 5) Transmit power: High, Mid, Low, Turbo\n"); fprintf(out, "# 6) Scan list: - or index in Scanlist table\n"); fprintf(out, "# 7) Transmit timeout timer: (unused)\n"); fprintf(out, "# 8) Receive only: -, +\n"); fprintf(out, "# 9) Admit criteria: -, Free, Color, NColor\n"); fprintf(out, "# 10) Color code: 0, 1, 2, 3... 15\n"); fprintf(out, "# 11) Time slot: 1 or 2\n"); fprintf(out, "# 12) Receive group list: - or index in Grouplist table\n"); fprintf(out, "# 13) Contact for transmit: - or index in Contacts table\n"); fprintf(out, "#\n"); } fprintf(out, "Digital Name Receive Transmit Power Scan TOT RO Admit Color Slot RxGL TxContact"); fprintf(out, "\n"); for (i=0; ichannel_mode != MODE_DIGITAL && ch->channel_mode != MODE_D_A) { // Select digital channels continue; } print_chan_base(out, radio, ch, i+1); // Print digital parameters of the channel: // Admit Criteria // Color Code // Repeater Slot // Group List // Contact Name fprintf(out, "%-6s ", DIGITAL_ADMIT_NAME[ch->tx_permit]); fprintf(out, "%-5d %-3d ", ch->color_code, 1 + ch->slot2); if (ch->group_list_index == 0xff) fprintf(out, "- "); else fprintf(out, "%-4d ", ch->group_list_index + 1); if (ch->contact_index == 0xffff) fprintf(out, "-"); else fprintf(out, "%-4d", ch->contact_index + 1); // Print contact name as a comment. if (ch->contact_index != 0xffff) { contact_t *ct = get_contact(ch->contact_index); if (ct) { fprintf(out, " # "); print_ascii(out, ct->name, 16, 0); } } fprintf(out, "\n"); } } // // Print CTSS tone. // static void print_ctcss(FILE *out, unsigned index, unsigned custom) { int dhz = (index < NCTCSS) ? CTCSS_TONES[index] : custom; unsigned a = dhz / 1000; unsigned b = (dhz / 100) % 10; unsigned c = (dhz / 10) % 10; unsigned d = dhz % 10; if (a == 0) fprintf(out, "%d%d.%d ", b, c, d); else fprintf(out, "%d%d%d.%d", a, b, c, d); } // // Print DCS tone. // static void print_dcs(FILE *out, unsigned dcs) { unsigned i = (dcs >> 9) & 1; unsigned a = (dcs >> 6) & 7; unsigned b = (dcs >> 3) & 7; unsigned c = dcs & 7; fprintf(out, "D%d%d%d%c", a, b, c, i ? 'I' : 'N'); } static void print_analog_channels(FILE *out, radio_device_t *radio, int verbose) { int i; if (verbose) { fprintf(out, "# Table of analog channels.\n"); fprintf(out, "# 1) Channel number: 1-%d\n", NCHAN); fprintf(out, "# 2) Name: up to 16 characters, use '_' instead of space\n"); fprintf(out, "# 3) Receive frequency in MHz\n"); fprintf(out, "# 4) Transmit frequency or +/- offset in MHz\n"); fprintf(out, "# 5) Transmit power: High, Mid, Low, Turbo\n"); fprintf(out, "# 6) Scan list: - or index\n"); fprintf(out, "# 7) Transmit timeout timer: (unused)\n"); fprintf(out, "# 8) Receive only: -, +\n"); fprintf(out, "# 9) Admit criteria: -, Free, Tone\n"); fprintf(out, "# 10) Squelch level: Normal (unused)\n"); fprintf(out, "# 11) Guard tone for receive, or '-' to disable\n"); fprintf(out, "# 12) Guard tone for transmit, or '-' to disable\n"); fprintf(out, "# 13) Bandwidth in kHz: 12.5, 25\n"); fprintf(out, "#\n"); } fprintf(out, "Analog Name Receive Transmit Power Scan TOT RO Admit Squelch RxTone TxTone Width"); fprintf(out, "\n"); for (i=0; ichannel_mode != MODE_ANALOG && ch->channel_mode != MODE_A_D) { // Select analog channels continue; } print_chan_base(out, radio, ch, i+1); // Print analog parameters of the channel: // Admit Criteria // Squelch // CTCSS/DCS Dec // CTCSS/DCS Enc // Bandwidth fprintf(out, "%-6s ", ANALOG_ADMIT_NAME[ch->tx_permit]); fprintf(out, "%-7s ", "Normal"); if (ch->rx_ctcss) print_ctcss(out, ch->ctcss_receive, ch->custom_ctcss); else if (ch->rx_dcs) print_dcs(out, ch->dcs_receive); else fprintf(out, "- "); fprintf(out, " "); if (ch->tx_ctcss) print_ctcss(out, ch->ctcss_transmit, ch->custom_ctcss); else if (ch->tx_dcs) print_dcs(out, ch->dcs_transmit); else fprintf(out, "- "); fprintf(out, " %s", BANDWIDTH[ch->bandwidth]); fprintf(out, "\n"); } } // // Return true when any zones are present. // static int have_zones() { uint8_t *zmap = GET_ZONEMAP(); int i; for (i=0; i<(NZONES+7)/8; i++) { if (zmap[i] != 0) return 1; } return 0; } // // Return true when any scanlists are present. // static int have_scanlists() { uint8_t *slmap = GET_SCANL_MAP(); int i; for (i=0; i<(NSCANL+7)/8; i++) { if (slmap[i] != 0) return 1; } return 0; } // // Find a zone with given index. // Return false when zone is not valid. // Set zname and zlist to a zone name and member list. // static int get_zone(int i, uint8_t **zname, uint16_t **zlist) { uint8_t *zmap = GET_ZONEMAP(); if ((zmap[i / 8] >> (i & 7)) & 1) { // Zone is valid. *zname = GET_ZONENAME(i); *zlist = GET_ZONELIST(i); return 1; } else { return 0; } } // // Get scanlist by index. // static scanlist_t *get_scanlist(int i) { uint8_t *slmap = GET_SCANL_MAP(); if ((slmap[i / 8] >> (i & 7)) & 1) return GET_SCANLIST(i); return 0; } static void print_chanlist16(FILE *out, uint16_t *unsorted, int nchan) { int last = -1; int range = 0; int n; uint16_t data[nchan]; // Sort the list before printing. memcpy(data, unsorted, nchan * sizeof(uint16_t)); qsort(data, nchan, sizeof(uint16_t), compare_index_ffff); for (n=0; n 0) fprintf(out, ","); fprintf(out, "%d", cnum); } last = cnum; } if (range) fprintf(out, "-%d", last); } static void print_chanlist32(FILE *out, uint32_t *unsorted, int nchan) { int last = -1; int range = 0; int n; uint32_t data[nchan]; // Sort the list before printing. memcpy(data, unsorted, nchan * sizeof(uint32_t)); qsort(data, nchan, sizeof(uint32_t), compare_index_ffffffff); for (n=0; n 0) fprintf(out, ","); fprintf(out, "%d", cnum); } last = cnum; } if (range) fprintf(out, "-%d", last); } static int have_grouplists() { int i; for (i=0; iname); if (verbose) d868uv_print_version(radio, out); // // Channels. // if (have_channels(MODE_DIGITAL)) { fprintf(out, "\n"); print_digital_channels(out, radio, verbose); } if (have_channels(MODE_ANALOG)) { fprintf(out, "\n"); print_analog_channels(out, radio, verbose); } // // Zones. // if (have_zones()) { fprintf(out, "\n"); if (verbose) { fprintf(out, "# Table of channel zones.\n"); fprintf(out, "# 1) Zone number: 1-%d\n", NZONES); fprintf(out, "# 2) Name: up to 16 characters, use '_' instead of space\n"); fprintf(out, "# 3) List of channels: numbers and ranges (N-M) separated by comma\n"); fprintf(out, "#\n"); } fprintf(out, "Zone Name Channels\n"); for (i=0; iname, 16, 1); if ((sl->prio_ch_select == PRIO_CHAN_SEL1 || sl->prio_ch_select == PRIO_CHAN_SEL12) && sl->priority_ch1 != 0xffff) { if (sl->priority_ch1 == 0) { fprintf(out, " Curr "); } else { fprintf(out, " %-4d ", sl->priority_ch1); } } else { fprintf(out, " - "); } if ((sl->prio_ch_select == PRIO_CHAN_SEL2 || sl->prio_ch_select == PRIO_CHAN_SEL12) && sl->priority_ch2 != 0xffff) { if (sl->priority_ch2 == 0) { fprintf(out, "Curr "); } else { fprintf(out, "%-4d ", sl->priority_ch2); } } else { fprintf(out, "- "); } if (sl->revert_channel == REVCH_LAST_CALLED) { fprintf(out, "Last "); } else { fprintf(out, "Sel "); } if (sl->member[0] != 0xffff) { print_chanlist16(out, sl->member, 50); } else { fprintf(out, "-"); } fprintf(out, "\n"); } } // // Contacts. // if (have_contacts()) { fprintf(out, "\n"); if (verbose) { fprintf(out, "# Table of contacts.\n"); fprintf(out, "# 1) Contact number: 1-%d\n", NCONTACTS); fprintf(out, "# 2) Name: up to 16 characters, use '_' instead of space\n"); fprintf(out, "# 3) Call type: Group, Private, All\n"); fprintf(out, "# 4) Call ID: 1...16777215\n"); fprintf(out, "# 5) Incoming call alert: -, +, Online\n"); fprintf(out, "#\n"); } fprintf(out, "Contact Name Type ID RxTone\n"); for (i=0; iname, 16, 1); fprintf(out, " %-7s %-8d %s\n", CONTACT_TYPE[ct->type & 3], CONTACT_ID(ct), ALERT_TYPE[ct->call_alert & 3]); } } // // Group lists. // if (have_grouplists()) { fprintf(out, "\n"); if (verbose) { fprintf(out, "# Table of group lists.\n"); fprintf(out, "# 1) Group list number: 1-%d\n", NGLISTS); fprintf(out, "# 2) Name: up to 35 characters, use '_' instead of space\n"); fprintf(out, "# 3) List of contacts: numbers and ranges (N-M) separated by comma\n"); fprintf(out, "#\n"); } fprintf(out, "Grouplist Name Contacts\n"); for (i=0; iname, 35, 1); fprintf(out, " "); print_chanlist32(out, gl->member, 64); fprintf(out, "\n"); } } // // Text messages. // if (have_messages()) { fprintf(out, "\n"); if (verbose) { fprintf(out, "# Table of text messages.\n"); fprintf(out, "# 1) Message number: 1-%d\n", NMESSAGES); fprintf(out, "# 2) Text: up to 200 characters\n"); fprintf(out, "#\n"); } fprintf(out, "Message Text\n"); for (i=0; iname, value, 16, 0); return; } if (strcasecmp ("ID", param) == 0) { uint32_t id = strtoul(value, 0, 0); ri->id[0] = ((id / 10000000) << 4) | ((id / 1000000) % 10); ri->id[1] = ((id / 100000 % 10) << 4) | ((id / 10000) % 10); ri->id[2] = ((id / 1000 % 10) << 4) | ((id / 100) % 10); ri->id[3] = ((id / 10 % 10) << 4) | (id % 10); return; } general_settings_t *gs = GET_SETTINGS(); if (strcasecmp ("Intro Line 1", param) == 0) { ascii_decode_uppercase(gs->intro_line1, value, 14, 0); gs->power_on = PWON_CUST_CHAR; return; } if (strcasecmp ("Intro Line 2", param) == 0) { ascii_decode_uppercase(gs->intro_line2, value, 14, 0); gs->power_on = PWON_CUST_CHAR; return; } fprintf(stderr, "Unknown parameter: %s = %s\n", param, value); exit(-1); } // // Check that the radio does support this frequency. // static int is_valid_frequency(int mhz) { if (mhz >= 136 && mhz <= 174) return 1; if (mhz >= 400 && mhz <= 480) return 1; return 0; } // // Find CTCSS value in standard table. // Otherwise return NCTCSS. // static int ctcss_index(unsigned value) { int i; for (i=0; i> 7) + (i % 128); uint8_t *bitmap = &radio_mem[OFFSET_CHAN_MAP]; bitmap[i / 8] |= 1 << (i & 7); memset(ch, 0, sizeof(channel_t)); ascii_decode(ch->name, name, 16, 0); ch->rx_frequency = mhz_to_ghefcdab(rx_mhz); if (tx_mhz > rx_mhz) { ch->repeater_mode = RM_TXPOS; ch->tx_offset = mhz_to_ghefcdab(tx_mhz - rx_mhz); } else if (tx_mhz < rx_mhz) { ch->repeater_mode = RM_TXNEG; ch->tx_offset = mhz_to_ghefcdab(rx_mhz - tx_mhz); } else { ch->repeater_mode = RM_SIMPLEX; ch->tx_offset = 0x00000100; } ch->channel_mode = mode; ch->power = power; ch->bandwidth = width; ch->rx_only = rxonly; ch->slot2 = (timeslot == 2); ch->color_code = colorcode; ch->tx_permit = admit; ch->contact_index = contact - 1; ch->group_list_index = grouplist - 1; ch->custom_ctcss = 251.1 * 10; if (radio == &radio_dmr6x2) { // Radio DMR-6x2 has eight scan lists per channel. ch->scan_list_index = 0; // Channel Measure Mode = Off ch->aprs_channel = scanlist - 1; // Scan list 1 memset(ch->_unused55, 0xff, 7); // Scan lists 2-8 = Disable } else { ch->scan_list_index = scanlist - 1; } // rxtone and txtone are positive for DCS and negative for CTCSS. if (rxtone > 0) { // Receive DCS ch->rx_dcs = 1; ch->dcs_receive = rxtone - 1; } else if (rxtone < 0) { // Receive CTCSS ch->rx_ctcss = 1; ch->ctcss_receive = ctcss_index(-rxtone); if (ch->ctcss_receive == NCTCSS) { ch->custom_ctcss = -rxtone; } } if (ch->rx_ctcss == 0 && ch->rx_dcs == 0) { ch->squelch_mode = SQ_CARRIER; } else { ch->squelch_mode = SQ_TONE; } if (txtone > 0) { // Transmit DCS ch->tx_dcs = 1; ch->dcs_transmit = txtone - 1; } else if (txtone < 0) { // Transmit CTCSS ch->tx_ctcss = 1; ch->ctcss_transmit = ctcss_index(-txtone); if (ch->ctcss_transmit == NCTCSS) { ch->custom_ctcss = -txtone; } } } // // Erase all channels. // static void erase_channels() { memset(&radio_mem[OFFSET_BANK1], 0xff, NCHAN * 64); memset(&radio_mem[OFFSET_CHAN_MAP], 0, (NCHAN + 7) / 8); } // // Erase all zones. // static void erase_zones() { int i; for (i=0; i NCHAN) { fprintf(stderr, "Bad channel number.\n"); return 0; } if (sscanf(rxfreq_str, "%lf", &rx_mhz) != 1 || !is_valid_frequency(rx_mhz)) { fprintf(stderr, "Bad receive frequency.\n"); return 0; } if (sscanf(offset_str, "%lf", &tx_mhz) != 1) { badtx: fprintf(stderr, "Bad transmit frequency.\n"); return 0; } if (offset_str[0] == '-' || offset_str[0] == '+') tx_mhz += rx_mhz; if (! is_valid_frequency(tx_mhz)) goto badtx; if (strcasecmp("High", power_str) == 0) { power = POWER_HIGH; } else if (strcasecmp("Low", power_str) == 0) { power = POWER_LOW; } else if (strcasecmp("Mid", power_str) == 0) { power = POWER_MIDDLE; } else if (strcasecmp("Turbo", power_str) == 0) { power = POWER_TURBO; } else { fprintf(stderr, "Bad power level.\n"); return 0; } if (*scanlist_str == '-') { scanlist = 0; } else { scanlist = atoi(scanlist_str); if (scanlist == 0 || scanlist > NSCANL) { fprintf(stderr, "Bad scanlist.\n"); return 0; } } // Ignore TOT. if (*rxonly_str == '-') { rxonly = 0; } else if (*rxonly_str == '+') { rxonly = 1; } else { fprintf(stderr, "Bad receive only flag.\n"); return 0; } if (*admit_str == '-' || strcasecmp("Always", admit_str) == 0) { admit = PERMIT_ALWAYS; } else if (strcasecmp("Free", admit_str) == 0) { admit = PERMIT_CH_FREE; } else if (strcasecmp("Color", admit_str) == 0) { admit = PERMIT_CC_SAME; } else if (strcasecmp("NColor", admit_str) == 0) { admit = PERMIT_CC_DIFF; } else { fprintf(stderr, "Bad admit criteria.\n"); return 0; } colorcode = atoi(colorcode_str); if (colorcode < 0 || colorcode > 15) { fprintf(stderr, "Bad color code.\n"); return 0; } timeslot = atoi(slot_str); if (timeslot < 1 || timeslot > 2) { fprintf(stderr, "Bad timeslot.\n"); return 0; } if (*grouplist_str == '-') { grouplist = 0; } else { grouplist = atoi(grouplist_str); if (grouplist == 0 || grouplist > NGLISTS) { fprintf(stderr, "Bad receive grouplist.\n"); return 0; } } if (*contact_str == '-') { contact = 0; } else { contact = atoi(contact_str); if (contact == 0 || contact > NCONTACTS) { fprintf(stderr, "Bad transmit contact.\n"); return 0; } } if (first_row && radio->channel_count == 0) { // On first entry, erase all channels, zones and scanlists. erase_channels(); erase_zones(); erase_scanlists(); } setup_channel(radio, num-1, MODE_DIGITAL, name_str, rx_mhz, tx_mhz, power, scanlist, rxonly, admit, colorcode, timeslot, grouplist, contact, 0, 0, BW_12_5_KHZ); radio->channel_count++; return 1; } // // Convert tone string to positive for DCS and negative for CTCSS. // On error, return -1. // Four possible formats: // nnn.n - CTCSS frequency // DnnnN - DCS normal // DnnnI - DCS inverted // '-' - Disabled // static int encode_ctcss_dcs(char *str) { int val; if (*str == '-') { // Disabled return 0; } else if (*str == 'D' || *str == 'd') { // // DCS tone // char *e; val = strtoul(++str, &e, 8); if (val < 0 || val > 511) { return -1; } if (*e == 'N' || *e == 'n') { val += 1; } else if (*e == 'I' || *e == 'i') { val += 513; } else { return -1; } } else if (*str >= '0' && *str <= '9') { // // CTCSS tone // float hz; if (sscanf(str, "%f", &hz) != 1) return -1; // Round to integer. val = hz * 10.0 + 0.5; val = -val; } else { return -1; } return val; } // // Parse one line of Analog channel table. // Start_flag is 1 for the first table row. // Return 0 on failure. // static int parse_analog_channel(radio_device_t *radio, int first_row, char *line) { char num_str[256], name_str[256], rxfreq_str[256], offset_str[256]; char power_str[256], scanlist_str[256], squelch_str[256]; char tot_str[256], rxonly_str[256], admit_str[256]; char rxtone_str[256], txtone_str[256], width_str[256]; int num, power, scanlist, rxonly, admit; int rxtone, txtone, width; double rx_mhz, tx_mhz; if (sscanf(line, "%s %s %s %s %s %s %s %s %s %s %s %s %s", num_str, name_str, rxfreq_str, offset_str, power_str, scanlist_str, tot_str, rxonly_str, admit_str, squelch_str, rxtone_str, txtone_str, width_str) != 13) return 0; num = atoi(num_str); if (num < 1 || num > NCHAN) { fprintf(stderr, "Bad channel number.\n"); return 0; } if (sscanf(rxfreq_str, "%lf", &rx_mhz) != 1 || !is_valid_frequency(rx_mhz)) { fprintf(stderr, "Bad receive frequency.\n"); return 0; } if (sscanf(offset_str, "%lf", &tx_mhz) != 1) { badtx: fprintf(stderr, "Bad transmit frequency.\n"); return 0; } if (offset_str[0] == '-' || offset_str[0] == '+') tx_mhz += rx_mhz; if (! is_valid_frequency(tx_mhz)) goto badtx; if (strcasecmp("High", power_str) == 0) { power = POWER_HIGH; } else if (strcasecmp("Low", power_str) == 0) { power = POWER_LOW; } else if (strcasecmp("Mid", power_str) == 0) { power = POWER_MIDDLE; } else if (strcasecmp("Turbo", power_str) == 0) { power = POWER_TURBO; } else { fprintf(stderr, "Bad power level.\n"); return 0; } if (*scanlist_str == '-') { scanlist = 0; } else { scanlist = atoi(scanlist_str); if (scanlist == 0 || scanlist > NSCANL) { fprintf(stderr, "Bad scanlist.\n"); return 0; } } // Ignore TOT. if (*rxonly_str == '-') { rxonly = 0; } else if (*rxonly_str == '+') { rxonly = 1; } else { fprintf(stderr, "Bad receive only flag.\n"); return 0; } if (*admit_str == '-' || strcasecmp("Always", admit_str) == 0) { admit = PERMIT_ALWAYS; } else if (strcasecmp("Free", admit_str) == 0) { // Busy Lock = Repeater admit = PERMIT_CH_FREE; } else if (strcasecmp("Tone", admit_str) == 0) { // Busy Lock = Busy admit = PERMIT_CC_SAME; } else { fprintf(stderr, "Bad admit criteria.\n"); return 0; } // Ignore squelch. rxtone = encode_ctcss_dcs(rxtone_str); if (rxtone == -1) { fprintf(stderr, "Bad receive tone.\n"); return 0; } txtone = encode_ctcss_dcs(txtone_str); if (txtone == -1) { fprintf(stderr, "Bad transmit tone.\n"); return 0; } if (strcasecmp ("12.5", width_str) == 0) { width = BW_12_5_KHZ; } else if (strcasecmp ("25", width_str) == 0) { width = BW_25_KHZ; } else { fprintf (stderr, "Bad width.\n"); return 0; } if (first_row && radio->channel_count == 0) { // On first entry, erase all channels, zones and scanlists. erase_channels(); } setup_channel(radio, num-1, MODE_ANALOG, name_str, rx_mhz, tx_mhz, power, scanlist, rxonly, admit, 0, 1, 0, 0, rxtone, txtone, width); radio->channel_count++; return 1; } // // Set name for a given zone. // static void setup_zone(int index, const char *name) { uint8_t *zmap = GET_ZONEMAP(); zmap[index / 8] |= 1 << (index & 7); ascii_decode(GET_ZONENAME(index), name, 16, 0); } // // Add channel to a zone. // Return 0 on failure. // static int zone_append(int index, int cnum) { uint16_t *zlist = GET_ZONELIST(index); uint16_t *zchan_a = GET_ZONE_CHAN_A(index); uint16_t *zchan_b = GET_ZONE_CHAN_B(index); int i; for (i=0; i<250; i++) { if (zlist[i] == cnum) return 1; if (zlist[i] == 0xffff) { zlist[i] = cnum; if (i == 0) { // Set A and B channels. zchan_a[index] = cnum; zchan_b[index] = cnum; } else if (i == 1) { // Set B channel. zchan_b[index] = cnum; } return 1; } } return 0; } // // Parse one line of Zones table. // Return 0 on failure. // static int parse_zones(int first_row, char *line) { char num_str[256], name_str[256], chan_str[256]; int znum; if (sscanf(line, "%s %s %s", num_str, name_str, chan_str) != 3) return 0; znum = strtoul(num_str, 0, 10); if (znum < 1 || znum > NZONES) { fprintf(stderr, "Bad zone number.\n"); return 0; } if (first_row) { // On first entry, erase the Zones table. erase_zones(); } setup_zone(znum-1, name_str); if (*chan_str != '-') { char *str = chan_str; int nchan = 0; int range = 0; int last = 0; // Parse channel list. for (;;) { char *eptr; int cnum = strtoul(str, &eptr, 10); if (eptr == str) { fprintf(stderr, "Zone %d: wrong channel list '%s'.\n", znum, str); return 0; } if (cnum < 1 || cnum > NCHAN) { fprintf(stderr, "Zone %d: wrong channel number %d.\n", znum, cnum); return 0; } if (range) { // Add range. int c; for (c=last+1; c<=cnum; c++) { if (!zone_append(znum-1, c-1)) { fprintf(stderr, "Zone %d: too many channels.\n", znum); return 0; } nchan++; } } else { // Add single channel. if (!zone_append(znum-1, cnum-1)) { fprintf(stderr, "Zone %d: too many channels.\n", znum); return 0; } nchan++; } if (*eptr == 0) break; if (*eptr != ',' && *eptr != '-') { fprintf(stderr, "Zone %d: wrong channel list '%s'.\n", znum, eptr); return 0; } range = (*eptr == '-'); last = cnum; str = eptr + 1; } } return 1; } // // Set parameters for a given scan list. // static void setup_scanlist(int index, const char *name, int prio1, int prio2, int txchan) { scanlist_t *sl = GET_SCANLIST(index); uint8_t *slmap = GET_SCANL_MAP(); slmap[index / 8] |= 1 << (index & 7); memset(sl, 0, 192); memset(sl->member, 0xff, 100); ascii_decode(sl->name, name, 16, 0); sl->priority_ch1 = prio1; // Priority Channel 1: 0=Current Channel, 0xffff=Off sl->priority_ch2 = prio2; // Priority Channel 2: 0=Current Channel, 0xffff=Off sl->revert_channel = txchan; // Revert Channel: Selected or Last Called if (prio2 != 0xffff) { // Priority Channel Select if (prio1 != 0xffff) { sl->prio_ch_select = PRIO_CHAN_SEL12; } else { sl->prio_ch_select = PRIO_CHAN_SEL2; } } else { if (prio1 != 0xffff) { sl->prio_ch_select = PRIO_CHAN_SEL1; } else { sl->prio_ch_select = PRIO_CHAN_OFF; } } sl->look_back_a = 20; // Look Back Time A: 2.0s sl->look_back_b = 30; // Look Back Time B: 3.0s sl->dropout_delay = 31; // Dropout Delay Time: 3.1s sl->dwell = 31; // Dwell Time: 3.1s } // // Add channel to a zone. // Return 0 on failure. // static int scanlist_append(int index, int cnum) { scanlist_t *sl = GET_SCANLIST(index); int i; for (i=0; i<50; i++) { if (sl->member[i] == cnum-1) return 1; if (sl->member[i] == 0xffff) { sl->member[i] = cnum-1; return 1; } } return 0; } // // Parse one line of Scanlist table. // Return 0 on failure. // static int parse_scanlist(int first_row, char *line) { char num_str[256], name_str[256], prio1_str[256], prio2_str[256]; char tx_str[256], chan_str[256]; int snum, prio1, prio2, txchan; if (sscanf(line, "%s %s %s %s %s %s", num_str, name_str, prio1_str, prio2_str, tx_str, chan_str) != 6) return 0; snum = atoi(num_str); if (snum < 1 || snum > NSCANL) { fprintf(stderr, "Bad scan list number.\n"); return 0; } if (first_row) { // On first entry, erase the Scanlists table. erase_scanlists(); } if (*prio1_str == '-') { prio1 = 0xffff; } else if (strcasecmp("Sel", prio1_str) == 0) { prio1 = 0; } else { prio1 = atoi(prio1_str); if (prio1 < 1 || prio1 > NCHAN) { fprintf(stderr, "Bad priority channel 1.\n"); return 0; } } if (*prio2_str == '-') { prio2 = 0xffff; } else if (strcasecmp("Sel", prio2_str) == 0) { prio2 = 0; } else { prio2 = atoi(prio2_str); if (prio2 < 1 || prio2 > NCHAN) { fprintf(stderr, "Bad priority channel 2.\n"); return 0; } } if (strcasecmp("Last", tx_str) == 0) { txchan = REVCH_LAST_CALLED; } else if (strcasecmp("Sel", tx_str) == 0 || strcasecmp("-", tx_str) == 0) { txchan = REVCH_SELECTED; } else { fprintf(stderr, "Bad transmit channel.\n"); return 0; } setup_scanlist(snum-1, name_str, prio1, prio2, txchan); if (*chan_str != '-') { char *str = chan_str; int nchan = 0; int range = 0; int last = 0; // Parse channel list. for (;;) { char *eptr; int cnum = strtoul(str, &eptr, 10); if (eptr == str) { fprintf(stderr, "Scan list %d: wrong channel list '%s'.\n", snum, str); return 0; } if (cnum < 1 || cnum > NCHAN) { fprintf(stderr, "Scan list %d: wrong channel number %d.\n", snum, cnum); return 0; } if (range) { // Add range. int c; for (c=last+1; c<=cnum; c++) { if (!scanlist_append(snum-1, c)) { fprintf(stderr, "Scan list %d: too many channels.\n", snum); return 0; } nchan++; } } else { // Add single channel. if (!scanlist_append(snum-1, cnum)) { fprintf(stderr, "Scan list %d: too many channels.\n", snum); return 0; } nchan++; } if (*eptr == 0) break; if (*eptr != ',' && *eptr != '-') { fprintf(stderr, "Scan list %d: wrong channel list '%s'.\n", snum, eptr); return 0; } range = (*eptr == '-'); last = cnum; str = eptr + 1; } } return 1; } // // Erase all contacts. // static void erase_contacts() { memset(&radio_mem[OFFSET_CONTACTS], 0xff, NCONTACTS*100); memset(GET_CONTACT_LIST(), 0xff, NCONTACTS*4); memset(GET_CONTACT_MAP(), 0xff, (NCONTACTS + 7) / 8); } static void setup_contact(int index, const char *name, int type, int id, int rxalert) { // Fill contact record. contact_t *ct = GET_CONTACT(index); memset(ct, 0, 100); ascii_decode(ct->name, name, 16, 0); ct->id[0] = ((id / 10000000) << 4) | ((id / 1000000) % 10); ct->id[1] = ((id / 100000 % 10) << 4) | ((id / 10000) % 10); ct->id[2] = ((id / 1000 % 10) << 4) | ((id / 100) % 10); ct->id[3] = ((id / 10 % 10) << 4) | (id % 10); ct->type = type; ct->call_alert = rxalert; // Update contact map. uint8_t *cmap = GET_CONTACT_MAP(); cmap[index / 8] &= ~(1 << (index & 7)); // Append to the contact list. uint32_t *clist = GET_CONTACT_LIST(); int i; for (i=0; i index) { // Insert index there and shift the rest. clist[i] = index; index = item; } } } // // Parse one line of Contacts table. // Return 0 on failure. // static int parse_contact(int first_row, char *line) { char num_str[256], name_str[256], type_str[256], id_str[256], rxalert_str[256]; int cnum, type, id, rxalert; if (sscanf(line, "%s %s %s %s %s", num_str, name_str, type_str, id_str, rxalert_str) != 5) return 0; cnum = atoi(num_str); if (cnum < 1 || cnum > NCONTACTS) { fprintf(stderr, "Bad contact number.\n"); return 0; } if (first_row) { // On first entry, erase the Contacts table. erase_contacts(); } if (strcasecmp("Group", type_str) == 0) { type = CALL_GROUP; } else if (strcasecmp("Private", type_str) == 0) { type = CALL_PRIVATE; } else if (strcasecmp("All", type_str) == 0) { type = CALL_ALL; } else { fprintf(stderr, "Bad call type.\n"); return 0; } id = atoi(id_str); if (id < 1 || id > 0xffffff) { fprintf(stderr, "Bad call ID.\n"); return 0; } if (*rxalert_str == '-' || strcasecmp("No", rxalert_str) == 0) { rxalert = ALERT_NONE; } else if (*rxalert_str == '+' || strcasecmp("Yes", rxalert_str) == 0) { rxalert = ALERT_RING; } else if (strcasecmp("Online", rxalert_str) == 0) { rxalert = ALERT_ONLINE; } else { fprintf(stderr, "Bad receive tone flag.\n"); return 0; } setup_contact(cnum-1, name_str, type, id, rxalert); return 1; } static void setup_grouplist(int index, const char *name) { grouplist_t *gl = GET_GROUPLIST(index); ascii_decode(gl->name, name, 35, 0); memset(gl->unused, 0, sizeof(gl->unused)); } // // Add contact to a grouplist. // Return 0 on failure. // static int grouplist_append(int index, int cnum) { grouplist_t *gl = GET_GROUPLIST(index); int i; for (i=0; i<64; i++) { if (gl->member[i] == cnum-1) return 1; if (gl->member[i] == 0xffffffff) { gl->member[i] = cnum-1; return 1; } } return 0; } // // Parse one line of Grouplist table. // Return 0 on failure. // static int parse_grouplist(int first_row, char *line) { char num_str[256], name_str[256], list_str[256]; int glnum; if (sscanf(line, "%s %s %s", num_str, name_str, list_str) != 3) return 0; glnum = strtoul(num_str, 0, 10); if (glnum < 1 || glnum > NGLISTS) { fprintf(stderr, "Bad group list number.\n"); return 0; } if (first_row) { // On first entry, erase the Grouplists table. memset(&radio_mem[OFFSET_GLISTS], 0xff, NGLISTS*320); } setup_grouplist(glnum-1, name_str); if (*list_str != '-') { char *str = list_str; int range = 0; int last = 0; // Parse contact list. for (;;) { char *eptr; int cnum = strtoul(str, &eptr, 10); if (eptr == str) { fprintf(stderr, "Group list %d: wrong contact list '%s'.\n", glnum, str); return 0; } if (cnum < 1 || cnum > NCONTACTS) { fprintf(stderr, "Group list %d: wrong contact number %d.\n", glnum, cnum); return 0; } if (range) { // Add range. int c; for (c=last+1; c<=cnum; c++) { if (!grouplist_append(glnum-1, c)) { fprintf(stderr, "Group list %d: too many contacts.\n", glnum); return 0; } } } else { // Add single contact. if (!grouplist_append(glnum-1, cnum)) { fprintf(stderr, "Group list %d: too many contacts.\n", glnum); return 0; } } if (*eptr == 0) break; if (*eptr != ',' && *eptr != '-') { fprintf(stderr, "Group list %d: wrong contact list '%s'.\n", glnum, eptr); return 0; } range = (*eptr == '-'); last = cnum; str = eptr + 1; } } return 1; } // // Set text for a given message. // static void setup_message(int index, const char *text) { uint8_t *msg = GET_MESSAGE(index); // Skip spaces and tabs. while (*text == ' ' || *text == '\t') text++; ascii_decode(msg, text, 200, 0); } // // Parse one line of Messages table. // Return 0 on failure. // static int parse_messages(int first_row, char *line) { char *text; int mnum; mnum = strtoul(line, &text, 10); if (text == line || mnum < 1 || mnum > NMESSAGES) { fprintf(stderr, "Bad message number.\n"); return 0; } if (first_row) { // On first entry, erase the Messages table. memset(&radio_mem[OFFSET_MESSAGES], 0xff, NMESSAGES*256); } setup_message(mnum-1, text); return 1; } // // Parse table header. // Return table id, or 0 in case of error. // static int d868uv_parse_header(radio_device_t *radio, char *line) { if (strncasecmp(line, "Digital", 7) == 0) return 'D'; if (strncasecmp(line, "Analog", 6) == 0) return 'A'; if (strncasecmp(line, "Zone", 4) == 0) return 'Z'; if (strncasecmp(line, "Scanlist", 8) == 0) return 'S'; if (strncasecmp(line, "Contact", 7) == 0) return 'C'; if (strncasecmp(line, "Grouplist", 9) == 0) return 'G'; if (strncasecmp(line, "Message", 7) == 0) return 'M'; return 0; } // // Parse one line of table data. // Return 0 on failure. // static int d868uv_parse_row(radio_device_t *radio, int table_id, int first_row, char *line) { switch (table_id) { case 'D': return parse_digital_channel(radio, first_row, line); case 'A': return parse_analog_channel(radio, first_row, line); case 'Z': return parse_zones(first_row, line); case 'S': return parse_scanlist(first_row, line); case 'C': return parse_contact(first_row, line); case 'G': return parse_grouplist(first_row, line); case 'M': return parse_messages(first_row, line); } return 0; } // // Update timestamp. // static void d868uv_update_timestamp(radio_device_t *radio) { // No timestamp. } // // Check that configuration is correct. // Return 0 on error. // static int d868uv_verify_config(radio_device_t *radio) { int i, k, nchannels = 0, nzones = 0, nscanlists = 0, ngrouplists = 0; int ncontacts = 0, nerrors = 0; // Channels: check references to scanlists, contacts and grouplists. for (i=0; iname, 16, 0); fprintf(stderr, "': scanlist %d not found.\n", scanlist_index + 1); nerrors++; } } if (ch->contact_index != 0xffff) { contact_t *ct = get_contact(ch->contact_index); if (!ct) { fprintf(stderr, "Channel %d '", i+1); print_ascii(stderr, ch->name, 16, 0); fprintf(stderr, "': contact %d not found.\n", ch->contact_index + 1); nerrors++; } } if (ch->group_list_index != 0xff) { grouplist_t *gl = GET_GROUPLIST(ch->group_list_index); if (!VALID_GROUPLIST(gl)) { fprintf(stderr, "Channel %d '", i+1); print_ascii(stderr, ch->name, 16, 0); fprintf(stderr, "': grouplist %d not found.\n", ch->group_list_index + 1); nerrors++; } } } // Zones: check references to channels. for (i=0; imember[k]; if (cindex != 0xffff) { channel_t *ch = get_channel(cindex); if (!ch) { fprintf(stderr, "Scanlist %d '", i+1); print_ascii(stderr, sl->name, 16, 0); fprintf(stderr, "': channel %d not found.\n", cindex+1); nerrors++; } } } } // Grouplists: check references to contacts. for (i=0; imember[k]; if (cnum != 0xffffffff) { contact_t *ct = get_contact(cnum); if (!ct) { fprintf(stderr, "Grouplist %d '", i+1); print_ascii(stderr, gl->name, 35, 0); fprintf(stderr, "': contact %d not found.\n", cnum); nerrors++; } } } } // Count contacts. for (i=0; iname); nerrors++; break; } } if (nerrors > 0) { fprintf(stderr, "Total %d errors.\n", nerrors); return 0; } fprintf(stderr, "Total %d channels, %d zones, %d scanlists, %d contacts, %d grouplists.\n", nchannels, nzones, nscanlists, ncontacts, ngrouplists); return 1; } // // Read and dump the callsign database. // static void dump_csv(radio_device_t *radio) { callsign_sizes_t sz = {0}; // // Dump sizes. // serial_read_region(ADDR_CALLDB_SIZE, (uint8_t*) &sz, 16); printf("Sizes:\n"); print_hex_addr_data(ADDR_CALLDB_SIZE, (uint8_t*)&sz, sizeof(sz)); printf("\n"); // // Dump callsign map. // unsigned addr = ADDR_CALLDB_LIST; unsigned index; printf("Map:\n"); for (index = 0; index < sz.count; index += 16000) { unsigned n = (sz.count - index) * 8; if (n > 128000) n = 128000; uint8_t map[128000]; serial_read_region(addr, map, n); print_hex_addr_data(addr, map, n); addr += 256*1024; } printf("\n"); // // Dump data. // printf("Data:\n"); addr = ADDR_CALLDB_DATA; for (index = 0; index < 10000000; index += 100000) { int n = sz.last - addr; if (n < 0) break; else if (n > 100000) n = 100000; else n = (n + 15) & ~15; // align uint8_t data[100000]; serial_read_region(addr, data, n); print_hex_addr_data(addr, data, n); addr += 256*1024; } } // // Sorting callback for callsign map. // static int compare_callsign_map(const void *ap, const void *bp) { uint32_t a = *(uint32_t*) ap; uint32_t b = *(uint32_t*) bp; if (a < b) return -1; if (a > b) return 1; return 0; } // // Write CSV file to the callsign database. // // The callsign database consists of three parts: // (1) Map of DMR IDs to data offsets: 8 bytes per record. // 04000000: 02-60-04-02-00-00-00-00-04-60-04-02-35-00-00-00 .`.......`..5... // 04000010: 06-60-04-02-70-00-00-00-08-60-04-02-a7-00-00-00 .`..p....`...... // ^^^^^^^^^^^ ^^^^^^^^^^^ // radio id<<1 offset // // The map is stored in 128000-byte chunks with 256kbyte step: // 04000000-0401f3ff, 04040000-0405f3ff, 04080000-0409f3ff, 040c0000-040df3ff, // 04100000-0411f3ff, 04140000-0415f3ff, 04180000-0419f3ff, 041c0000-... // // Up to 10 chunks in total. Last range is 04240000-0425f3ff. // Max 160000 callsigns. // // (2) Sizes: count of records and last data address. // 044c0000: bf-b7-01-00-bd-f6-34-05-00-00-00-00-00-00-00-00 ......4......... // ^^^^^^^^^^^ ^^^^^^^^^^^ // count last address // // (3) Data records: radio id, name, city, callsign, state, country, remarks. // 04500000: 00-01-02-30-01-00-57-61-79-6e-65-20-45-64-77-61 ...0..Wayne Edwa // 04500010: 72-64-00-54-6f-72-6f-6e-74-6f-00-56-45-33-54-48 rd.Toronto.VE3TH // 04500020: 57-00-4f-6e-74-61-72-69-6f-00-43-61-6e-61-64-61 W.Ontario.Canada // 04500030: 00-44-4d-52-00- .DMR. // // The data are stored in 100000-byte chunks with 256kbyte step: // 04500000-0451869f, 04540000-0455869f, ... 05340000-0535869f and so on. // static void d868uv_write_csv(radio_device_t *radio, FILE *csv) { callsign_map_t map[NCALLSIGNS]; callsign_sizes_t sz = {0}; // Allocate data. char *data = malloc(CALLSIGN_SIZE); if (!data) { fprintf(stderr, "Out of memory!\n"); return; } memset(data, 0, CALLSIGN_SIZE); memset(map, 0xff, sizeof(map)); // // Parse CSV file. // // The file has the following format: // Radio ID,Callsign,Name,City,State,Country,Remarks // 3114542,KK6ABQ,Sergey Vakulenko,Santa Clara,California,United States,DMR // // Need to rearrange the fields like: // Radio ID, Name, City, Callsign, State, Country, Remarks // unsigned nbytes = 0; char *radioid, *callsign, *name, *city, *state, *country, *remarks; if (csv_init(csv) < 0) { free(data); return; } while (csv_read(csv, &radioid, &callsign, &name, &city, &state, &country, &remarks)) { radioid = trim_spaces(radioid, 16); callsign = trim_spaces(callsign, 16); name = trim_spaces(name, 16); city = trim_spaces(city, 15); state = trim_spaces(state, 16); country = trim_spaces(country, 16); remarks = trim_spaces(remarks, 16); //printf("%s,%s,%s,%s,%s,%s,%s\n", radioid, callsign, name, city, state, country, remarks); unsigned id = strtoul(radioid, 0, 10); if (id < 1 || id > 0xffffff) { fprintf(stderr, "Bad id: %d\n", id); fprintf(stderr, "Line: '%s,%s,%s,%s,%s,%s,%s'\n", radioid, callsign, name, city, state, country, remarks); return; } // Eastern egg: when file contains id 1 with callsign 'dump', // read the callsign database from the radio // and save to a file. if (id == 1 && strcmp(callsign, "dump") == 0) { free(data); dump_csv(radio); return; } // Add map record. if (sz.count >= NCALLSIGNS) { fprintf(stderr, "WARNING: Too many callsigns!\n"); fprintf(stderr, "Skipping the rest.\n"); break; } callsign_map_t *m = &map[sz.count]; sz.count++; m->id = ((id / 10 % 10) << 5) | (id % 10) << 1 | ((id / 1000 % 10) << 13) | ((id / 100) % 10) << 9 | ((id / 100000 % 10) << 21) | ((id / 10000) % 10) << 17 | ((id / 10000000) << 29) | ((id / 1000000) % 10) << 25; m->offset = nbytes; // Fill data. char *p = &data[nbytes]; // Radio ID. *p++ = 0; *p++ = ((id / 10000000) << 4) | ((id / 1000000) % 10); *p++ = ((id / 100000 % 10) << 4) | ((id / 10000) % 10); *p++ = ((id / 1000 % 10) << 4) | ((id / 100) % 10); *p++ = ((id / 10 % 10) << 4) | (id % 10); *p++ = 0; // Name, city, callsign, state, country, remarks. strcpy(p, name); p += strlen(p) + 1; strcpy(p, city); p += strlen(p) + 1; strcpy(p, callsign); p += strlen(p) + 1; strcpy(p, state); p += strlen(p) + 1; strcpy(p, country); p += strlen(p) + 1; strcpy(p, remarks); p += strlen(p) + 1; nbytes = p - data; } fprintf(stderr, "Total %d contacts, %d bytes.\n", sz.count, nbytes); sz.last = ADDR_CALLDB_DATA + (nbytes / 100000) * 256*1024 + (nbytes % 100000); // Append extra zeroes and align. nbytes = (nbytes + 63) & ~15; // Sort the map by DMR ID. qsort(map, sz.count, sizeof(map[0]), compare_callsign_map); if (! trace_flag) { fprintf(stderr, "Write: "); fflush(stderr); } // // Write callsign map. // unsigned addr = ADDR_CALLDB_LIST; unsigned index; //#define DUMP_NO_WRITE #ifdef DUMP_NO_WRITE printf("Map:\n"); #endif for (index = 0; index < sz.count; index += 16000) { unsigned n = (sz.count - index) * 8; if (n > 128000) n = 128000; #ifdef DUMP_NO_WRITE // Dump the data, for debugging purposes. print_hex_addr_data(addr, (uint8_t*) &map[index], n); #else serial_write_region(addr, (uint8_t*) &map[index], n); #endif addr += 256*1024; fprintf(stderr, "#"); fflush(stderr); } // // Write sizes. // #ifdef DUMP_NO_WRITE printf("\nSizes:\n"); print_hex_addr_data(ADDR_CALLDB_SIZE, (uint8_t*) &sz, 16); #else serial_write_region(ADDR_CALLDB_SIZE, (uint8_t*) &sz, 16); #endif // // Write data. // addr = ADDR_CALLDB_DATA; #ifdef DUMP_NO_WRITE printf("\nData:\n"); #endif for (index = 0; index < nbytes; index += 100000) { unsigned n = nbytes - index; if (n > 100000) n = 100000; #ifdef DUMP_NO_WRITE print_hex_addr_data(addr, (uint8_t*) &data[index], n); #else serial_write_region(addr, (uint8_t*) &data[index], n); #endif addr += 256*1024; fprintf(stderr, "#"); fflush(stderr); } if (! trace_flag) fprintf(stderr, "# done.\n"); free(data); } // // Anytone AT-D868UV // radio_device_t radio_d868uv = { "Anytone AT-D868UV", d868uv_download, d868uv_upload, d868uv_is_compatible, d868uv_read_image, d868uv_save_image, d868uv_print_version, d868uv_print_config, d868uv_verify_config, d868uv_parse_parameter, d868uv_parse_header, d868uv_parse_row, d868uv_update_timestamp, d868uv_write_csv, }; // // Anytone AT-D878UV // radio_device_t radio_d878uv = { "Anytone AT-D878UV", d868uv_download, d868uv_upload, d868uv_is_compatible, d868uv_read_image, d868uv_save_image, d868uv_print_version, d868uv_print_config, d868uv_verify_config, d868uv_parse_parameter, d868uv_parse_header, d868uv_parse_row, d868uv_update_timestamp, d868uv_write_csv, }; // // BTECH DMR-6x2 // radio_device_t radio_dmr6x2 = { "BTECH DMR-6x2", d868uv_download, d868uv_upload, d868uv_is_compatible, d868uv_read_image, d868uv_save_image, d868uv_print_version, d868uv_print_config, d868uv_verify_config, d868uv_parse_parameter, d868uv_parse_header, d868uv_parse_row, d868uv_update_timestamp, d868uv_write_csv, }; dmrconfig-master/dfu-libusb.c000066400000000000000000000271471354060760700165420ustar00rootroot00000000000000/* * DFU routines for Linux and MacOS, via libusb-1.0. * * Copyright (C) 2018 Serge Vakulenko, KK6ABQ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include #include #include #include "util.h" // // USB request types. // #define REQUEST_TYPE_TO_HOST 0xA1 #define REQUEST_TYPE_TO_DEVICE 0x21 enum { REQUEST_DETACH = 0, REQUEST_DNLOAD = 1, REQUEST_UPLOAD = 2, REQUEST_GETSTATUS = 3, REQUEST_CLRSTATUS = 4, REQUEST_GETSTATE = 5, REQUEST_ABORT = 6, }; enum { appIDLE = 0, appDETACH = 1, dfuIDLE = 2, dfuDNLOAD_SYNC = 3, dfuDNBUSY = 4, dfuDNLOAD_IDLE = 5, dfuMANIFEST_SYNC = 6, dfuMANIFEST = 7, dfuMANIFEST_WAIT_RESET = 8, dfuUPLOAD_IDLE = 9, dfuERROR = 10, }; typedef struct { unsigned status : 8; unsigned poll_timeout : 24; unsigned state : 8; unsigned string_index : 8; } status_t; static libusb_context *ctx = NULL; static libusb_device_handle *dev; static status_t status; static int detach(int timeout) { if (trace_flag) { printf("--- Send DETACH\n"); } int error = libusb_control_transfer(dev, REQUEST_TYPE_TO_DEVICE, REQUEST_DETACH, timeout, 0, NULL, 0, 0); return error; } static int get_status() { if (trace_flag) { printf("--- Send GETSTATUS [6]\n"); } int error = libusb_control_transfer(dev, REQUEST_TYPE_TO_HOST, REQUEST_GETSTATUS, 0, 0, (unsigned char*)&status, 6, 0); if (trace_flag && error >= 0) { printf("--- Recv "); print_hex((unsigned char*)&status, 6); printf("\n"); } return error; } static int clear_status() { if (trace_flag) { printf("--- Send CLRSTATUS\n"); } int error = libusb_control_transfer(dev, REQUEST_TYPE_TO_DEVICE, REQUEST_CLRSTATUS, 0, 0, NULL, 0, 0); return error; } static int get_state(int *pstate) { unsigned char state; if (trace_flag) { printf("--- Send GETSTATE [1]\n"); } int error = libusb_control_transfer(dev, REQUEST_TYPE_TO_HOST, REQUEST_GETSTATE, 0, 0, &state, 1, 0); *pstate = state; if (trace_flag && error >= 0) { printf("--- Recv "); print_hex(&state, 1); printf("\n"); } return error; } static int dfu_abort() { if (trace_flag) { printf("--- Send ABORT\n"); } int error = libusb_control_transfer(dev, REQUEST_TYPE_TO_DEVICE, REQUEST_ABORT, 0, 0, NULL, 0, 0); return error; } static void wait_dfu_idle() { int state, error; for (;;) { error = get_state(&state); if (error < 0) { fprintf(stderr, "%s: cannot get state: %d: %s\n", __func__, error, libusb_strerror(error)); exit(-1); } switch (state) { case dfuIDLE: return; case appIDLE: error = detach(1000); break; case dfuERROR: error = clear_status(); break; case appDETACH: case dfuDNBUSY: case dfuMANIFEST_WAIT_RESET: usleep(100000); continue; default: error = dfu_abort(); break; } if (error < 0) { fprintf(stderr, "%s: unexpected usb error in state=%d: %d: %s\n", __func__, state, error, libusb_strerror(error)); exit(-1); } } } static void md380_command(uint8_t a, uint8_t b) { unsigned char cmd[2] = { a, b }; if (trace_flag) { printf("--- Send DNLOAD [2] "); print_hex(cmd, 2); printf("\n"); } int error = libusb_control_transfer(dev, REQUEST_TYPE_TO_DEVICE, REQUEST_DNLOAD, 0, 0, cmd, 2, 0); if (error < 0) { fprintf(stderr, "%s: cannot send command: %d: %s\n", __func__, error, libusb_strerror(error)); exit(-1); } get_status(); usleep(100000); wait_dfu_idle(); } static void set_address(uint32_t address) { unsigned char cmd[5] = { 0x21, (uint8_t)address, (uint8_t)(address >> 8), (uint8_t)(address >> 16), (uint8_t)(address >> 24), }; if (trace_flag) { printf("--- Send DNLOAD [5] "); print_hex(cmd, 5); printf("\n"); } int error = libusb_control_transfer(dev, REQUEST_TYPE_TO_DEVICE, REQUEST_DNLOAD, 0, 0, cmd, 5, 0); if (error < 0) { fprintf(stderr, "%s: cannot send command: %d: %s\n", __func__, error, libusb_strerror(error)); exit(-1); } get_status(); wait_dfu_idle(); } static void erase_block(uint32_t address, int progress_flag) { unsigned char cmd[5] = { 0x41, (uint8_t)address, (uint8_t)(address >> 8), (uint8_t)(address >> 16), (uint8_t)(address >> 24), }; if (trace_flag) { printf("--- Send DNLOAD [5] "); print_hex(cmd, 5); printf("\n"); } int error = libusb_control_transfer(dev, REQUEST_TYPE_TO_DEVICE, REQUEST_DNLOAD, 0, 0, cmd, 5, 0); if (error < 0) { fprintf(stderr, "%s: cannot send command: %d: %s\n", __func__, error, libusb_strerror(error)); exit(-1); } get_status(); wait_dfu_idle(); if (progress_flag) { fprintf(stderr, "#"); fflush(stderr); } } static const char *identify() { static uint8_t data[64]; md380_command(0xa2, 0x01); if (trace_flag) { printf("--- Send UPLOAD [64]\n"); } int error = libusb_control_transfer(dev, REQUEST_TYPE_TO_HOST, REQUEST_UPLOAD, 0, 0, data, 64, 0); if (error < 0) { fprintf(stderr, "%s: cannot read data: %d: %s\n", __func__, error, libusb_strerror(error)); exit(-1); } if (trace_flag) { printf("--- Recv "); print_hex(data, 64); printf("\n"); } get_status(); return (const char*) data; } const char *dfu_init(unsigned vid, unsigned pid) { int error = libusb_init(&ctx); if (error < 0) { fprintf(stderr, "libusb init failed: %d: %s\n", error, libusb_strerror(error)); exit(-1); } dev = libusb_open_device_with_vid_pid(ctx, vid, pid); if (!dev) { if (trace_flag) { fprintf(stderr, "Cannot find USB device %04x:%04x\n", vid, pid); } libusb_exit(ctx); ctx = 0; return 0; } if (libusb_kernel_driver_active(dev, 0)) { libusb_detach_kernel_driver(dev, 0); } error = libusb_claim_interface(dev, 0); if (error < 0) { fprintf(stderr, "Failed to claim USB interface: %d: %s\n", error, libusb_strerror(error)); libusb_close(dev); libusb_exit(ctx); ctx = 0; exit(-1); } // Enter Programming Mode. wait_dfu_idle(); md380_command(0x91, 0x01); // Get device identifier in a static buffer. const char *ident = identify(); // Zero address. set_address(0x00000000); return ident; } void dfu_close() { if (ctx) { libusb_release_interface(dev, 0); libusb_close(dev); libusb_exit(ctx); ctx = 0; } } void dfu_erase(unsigned start, unsigned finish) { // Enter Programming Mode. get_status(); wait_dfu_idle(); md380_command(0x91, 0x01); usleep(100000); if (start == 0) { // Erase 256kbytes of configuration memory. erase_block(0x00000000, 1); erase_block(0x00010000, 1); erase_block(0x00020000, 1); erase_block(0x00030000, 1); if (finish > 256*1024) { // Erase 768kbytes of extended configuration memory. erase_block(0x00110000, 1); erase_block(0x00120000, 1); erase_block(0x00130000, 1); erase_block(0x00140000, 1); erase_block(0x00150000, 1); erase_block(0x00160000, 1); erase_block(0x00170000, 1); erase_block(0x00180000, 1); erase_block(0x00190000, 1); erase_block(0x001a0000, 1); erase_block(0x001b0000, 1); erase_block(0x001c0000, 1); erase_block(0x001d0000, 1); } } else { // Erase callsign database. int addr; for (addr=start; addr= 256 && bno < 2048) bno += 832; if (trace_flag) { printf("--- Send UPLOAD [%d]\n", nbytes); } int error = libusb_control_transfer(dev, REQUEST_TYPE_TO_HOST, REQUEST_UPLOAD, bno+2, 0, data, nbytes, 0); if (error < 0) { fprintf(stderr, "%s: cannot read block %d, nbytes = %d: %d: %s\n", __func__, bno, nbytes, error, libusb_strerror(error)); exit(-1); } if (trace_flag > 1) { printf("--- Recv "); print_hex(data, nbytes); printf("\n"); } get_status(); } void dfu_write_block(int bno, uint8_t *data, int nbytes) { if (bno >= 256 && bno < 2048) bno += 832; if (trace_flag) { printf("--- Send DNLOAD [%d] ", nbytes); if (trace_flag > 1) print_hex(data, nbytes); printf("\n"); } int error = libusb_control_transfer(dev, REQUEST_TYPE_TO_DEVICE, REQUEST_DNLOAD, bno+2, 0, data, nbytes, 0); if (error < 0) { fprintf(stderr, "%s: cannot write block %d, nbytes = %d: %d: %s\n", __func__, bno, nbytes, error, libusb_strerror(error)); exit(-1); } get_status(); wait_dfu_idle(); } void dfu_reboot() { unsigned char cmd[2] = { 0x91, 0x05 }; if (! ctx) return; if (trace_flag) { printf("--- Send DNLOAD [2] "); print_hex(cmd, 2); printf("\n"); } wait_dfu_idle(); int error = libusb_control_transfer(dev, REQUEST_TYPE_TO_DEVICE, REQUEST_DNLOAD, 0, 0, cmd, 2, 0); if (error < 0) { fprintf(stderr, "%s: cannot send command: %d: %s\n", __func__, error, libusb_strerror(error)); exit(-1); } get_status(); } dmrconfig-master/dfu-windows.c000066400000000000000000000332521354060760700167460ustar00rootroot00000000000000/* * DFU routines for Windows. * * Copyright (C) 2018 Serge Vakulenko, KK6ABQ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include #include #include #include #include "util.h" // // DFU request types. // #define PU_VENDOR_REQUEST CTL_CODE(FILE_DEVICE_UNKNOWN, 0x0805, METHOD_BUFFERED, FILE_ANY_ACCESS) #define URB_FUNCTION_CLASS_INTERFACE 0x001B #define VENDOR_DIRECTION_IN 1 #define VENDOR_DIRECTION_OUT 0 enum { REQUEST_DETACH = 0, REQUEST_DNLOAD = 1, REQUEST_UPLOAD = 2, REQUEST_GETSTATUS = 3, REQUEST_CLRSTATUS = 4, REQUEST_GETSTATE = 5, REQUEST_ABORT = 6, }; enum { appIDLE = 0, appDETACH = 1, dfuIDLE = 2, dfuDNLOAD_SYNC = 3, dfuDNBUSY = 4, dfuDNLOAD_IDLE = 5, dfuMANIFEST_SYNC = 6, dfuMANIFEST = 7, dfuMANIFEST_WAIT_RESET = 8, dfuUPLOAD_IDLE = 9, dfuERROR = 10, }; typedef struct { unsigned status : 8; unsigned poll_timeout : 24; unsigned state : 8; unsigned string_index : 8; } status_t; typedef struct { USHORT Function; ULONG Direction; UCHAR Request; USHORT Value; USHORT Index; ULONG Length; } CNTRPIPE_RQ, *PCNTRPIPE_RQ; static HANDLE dev; static status_t status; static int dev_request(int request, int value) { CNTRPIPE_RQ rq; DWORD nbytes = 0; rq.Function = URB_FUNCTION_CLASS_INTERFACE; rq.Direction = VENDOR_DIRECTION_OUT; rq.Request = request; rq.Value = value; rq.Index = 0; rq.Length = 0; if (!DeviceIoControl(dev, PU_VENDOR_REQUEST, &rq, sizeof(rq), NULL, 0, &nbytes, NULL)) { return -1; } return 0; } static int dev_write(int request, int value, int length, PBYTE data) { int rqlen = sizeof(CNTRPIPE_RQ) + length; PCNTRPIPE_RQ rq = alloca(rqlen); DWORD nbytes = 0; rq->Function = URB_FUNCTION_CLASS_INTERFACE; rq->Direction = VENDOR_DIRECTION_OUT; rq->Request = request; rq->Value = value; rq->Index = 0; rq->Length = length; memcpy(rq + 1, data, length); if (!DeviceIoControl(dev, PU_VENDOR_REQUEST, rq, rqlen, NULL, 0, &nbytes, NULL)) { return -1; } return 0; } static int dev_read(int request, int value, int length, PBYTE buffer) { CNTRPIPE_RQ rq; DWORD nbytes = 0; rq.Function = URB_FUNCTION_CLASS_INTERFACE; rq.Direction = VENDOR_DIRECTION_IN; rq.Request = request; rq.Value = value; rq.Index = 0; rq.Length = length; if (!DeviceIoControl(dev, PU_VENDOR_REQUEST, &rq, sizeof(rq), buffer, length, &nbytes, NULL)) { return -1; } if (nbytes != length) { return -1; } return 0; } static int detach(int timeout) { if (trace_flag) { printf("--- Send DETACH\n"); } int error = dev_request(REQUEST_DETACH, timeout); return error; } static int get_status() { if (trace_flag) { printf("--- Send GETSTATUS [6]\n"); } int error = dev_read(REQUEST_GETSTATUS, 0, 6, (unsigned char*)&status); if (trace_flag && error >= 0) { printf("--- Recv "); print_hex((unsigned char*)&status, 6); printf("\n"); } return error; } static int clear_status() { if (trace_flag) { printf("--- Send CLRSTATUS\n"); } int error = dev_request(REQUEST_CLRSTATUS, 0); return error; } static int get_state(int *pstate) { unsigned char state; if (trace_flag) { printf("--- Send GETSTATE [1]\n"); } int error = dev_read(REQUEST_GETSTATE, 0, 1, &state); *pstate = state; if (trace_flag && error >= 0) { printf("--- Recv "); print_hex(&state, 1); printf("\n"); } return error; } static int dfu_abort() { if (trace_flag) { printf("--- Send ABORT\n"); } int error = dev_request(REQUEST_ABORT, 0); return error; } static void wait_dfu_idle() { int state, error; for (;;) { error = get_state(&state); if (error < 0) { fprintf(stderr, "%s: cannot get state\n", __func__); exit(-1); } switch (state) { case dfuIDLE: return; case appIDLE: error = detach(5000); break; case dfuERROR: error = clear_status(); break; case appDETACH: case dfuDNBUSY: case dfuMANIFEST_WAIT_RESET: usleep(100000); continue; default: error = dfu_abort(); break; } if (error < 0) { fprintf(stderr, "%s: unexpected error in state=%d\n", __func__, state); exit(-1); } } } static void md380_command(uint8_t a, uint8_t b) { unsigned char cmd[2] = { a, b }; if (trace_flag) { printf("--- Send DNLOAD [2] "); print_hex(cmd, 2); printf("\n"); } int error = dev_write(REQUEST_DNLOAD, 0, 2, cmd); if (error < 0) { fprintf(stderr, "%s: cannot send command\n", __func__); exit(-1); } get_status(); usleep(100000); wait_dfu_idle(); } static void set_address(uint32_t address) { unsigned char cmd[5] = { 0x21, (uint8_t)address, (uint8_t)(address >> 8), (uint8_t)(address >> 16), (uint8_t)(address >> 24), }; if (trace_flag) { printf("--- Send DNLOAD [5] "); print_hex(cmd, 5); printf("\n"); } int error = dev_write(REQUEST_DNLOAD, 0, 5, cmd); if (error < 0) { fprintf(stderr, "%s: cannot send command\n", __func__); exit(-1); } get_status(); wait_dfu_idle(); } static void erase_block(uint32_t address, int progress_flag) { unsigned char cmd[5] = { 0x41, (uint8_t)address, (uint8_t)(address >> 8), (uint8_t)(address >> 16), (uint8_t)(address >> 24), }; if (trace_flag) { printf("--- Send DNLOAD [5] "); print_hex(cmd, 5); printf("\n"); } int error = dev_write(REQUEST_DNLOAD, 0, 5, cmd); if (error < 0) { fprintf(stderr, "%s: cannot send command\n", __func__); exit(-1); } get_status(); wait_dfu_idle(); if (progress_flag) { fprintf(stderr, "#"); fflush(stderr); } } static const char *identify() { static uint8_t data[64]; md380_command(0xa2, 0x01); if (trace_flag) { printf("--- Send UPLOAD [64]\n"); } int error = dev_read(REQUEST_UPLOAD, 0, 64, data); if (error < 0) { fprintf(stderr, "%s: cannot read data\n", __func__); exit(-1); } if (trace_flag) { printf("--- Recv "); print_hex(data, 64); printf("\n"); } get_status(); return (const char*) data; } // // Find path for a device with a given GUID. // Return the first path found (dynamically allocated). // Return 0 when no device with such GUID is present. // static char *find_path(GUID *guid) { char *path = 0; HDEVINFO devinfo = SetupDiGetClassDevs(guid, NULL, NULL, DIGCF_PRESENT | DIGCF_INTERFACEDEVICE); if (devinfo == INVALID_HANDLE_VALUE) { printf("Cannot get devinfo!\n"); return 0; } // Loop through available devices with a given GUID. int index; SP_INTERFACE_DEVICE_DATA iface; iface.cbSize = sizeof(iface); for (index=0; SetupDiEnumDeviceInterfaces(devinfo, NULL, guid, index, &iface); ++index) { // Obtain a required size of device detail structure. DWORD needed; SetupDiGetDeviceInterfaceDetail(devinfo, &iface, NULL, 0, &needed, NULL); // Allocate the device detail structure. PSP_INTERFACE_DEVICE_DETAIL_DATA detail = (PSP_INTERFACE_DEVICE_DETAIL_DATA)alloca(needed); detail->cbSize = sizeof(SP_INTERFACE_DEVICE_DETAIL_DATA); SP_DEVINFO_DATA did = { sizeof(SP_DEVINFO_DATA) }; // Get device information. if (SetupDiGetDeviceInterfaceDetail(devinfo, &iface, detail, needed, NULL, &did)) { // Use the first device found. //printf("Device %d: path %s\n", index, detail->DevicePath); path = strdup(detail->DevicePath); break; } printf("Device %d: cannot get path!\n", index); } SetupDiDestroyDeviceInfoList(devinfo); return path; } const char *dfu_init(unsigned vid, unsigned pid) { static GUID guid_0483_df11 = { 0x3fe809ab, 0xfb91, 0x4cb5, { 0xa6, 0x43, 0x69, 0x67, 0x0d, 0x52, 0x36, 0x6e } }; char *path = 0; // Find path for device. if (vid == 0x0483 && pid == 0xdf11) { path = find_path(&guid_0483_df11); } else { fprintf(stderr, "No guid for vid=%04x, pid=%04x!\n", vid, pid); exit(-1); } if (!path) { if (trace_flag) { fprintf(stderr, "Cannot find DFU device %04x:%04x\n", vid, pid); } return 0; } // Open the device. dev = CreateFile(path, GENERIC_WRITE | GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL); if (! dev) { printf("%s: Cannot open\n", path); exit(-1); } // Deallocate path. free(path); path = 0; // Enter Programming Mode. wait_dfu_idle(); md380_command(0x91, 0x01); // Get device identifier in a static buffer. const char *ident = identify(); // Zero address. set_address(0x00000000); return ident; } void dfu_close() { if (dev) { CloseHandle(dev); dev = 0; } } void dfu_erase(unsigned start, unsigned finish) { // Enter Programming Mode. get_status(); wait_dfu_idle(); md380_command(0x91, 0x01); usleep(100000); if (start == 0) { // Erase 256kbytes of configuration memory. erase_block(0x00000000, 1); erase_block(0x00010000, 1); erase_block(0x00020000, 1); erase_block(0x00030000, 1); if (finish > 256*1024) { // Erase 768kbytes of extended configuration memory. erase_block(0x00110000, 1); erase_block(0x00120000, 1); erase_block(0x00130000, 1); erase_block(0x00140000, 1); erase_block(0x00150000, 1); erase_block(0x00160000, 1); erase_block(0x00170000, 1); erase_block(0x00180000, 1); erase_block(0x00190000, 1); erase_block(0x001a0000, 1); erase_block(0x001b0000, 1); erase_block(0x001c0000, 1); erase_block(0x001d0000, 1); } } else { // Erase callsign database. int addr; for (addr=start; addr= 256 && bno < 2048) bno += 832; if (trace_flag) { printf("--- Send UPLOAD [%d]\n", nbytes); } int error = dev_read(REQUEST_UPLOAD, bno+2, nbytes, data); if (error < 0) { fprintf(stderr, "%s: cannot read block %d, nbytes = %d\n", __func__, bno, nbytes); exit(-1); } if (trace_flag > 1) { printf("--- Recv "); print_hex(data, nbytes); printf("\n"); } get_status(); } void dfu_write_block(int bno, uint8_t *data, int nbytes) { if (bno >= 256 && bno < 2048) bno += 832; if (trace_flag) { printf("--- Send DNLOAD [%d] ", nbytes); if (trace_flag > 1) print_hex(data, nbytes); printf("\n"); } int error = dev_write(REQUEST_DNLOAD, bno+2, nbytes, data); if (error < 0) { fprintf(stderr, "%s: cannot write block %d, nbytes = %d\n", __func__, bno, nbytes); exit(-1); } get_status(); wait_dfu_idle(); } void dfu_reboot() { unsigned char cmd[2] = { 0x91, 0x05 }; if (!dev) return; if (trace_flag) { printf("--- Send DNLOAD [2] "); print_hex(cmd, 2); printf("\n"); } wait_dfu_idle(); int error = dev_write(REQUEST_DNLOAD, 0, 2, cmd); if (error < 0) { fprintf(stderr, "%s: cannot send command\n", __func__); exit(-1); } get_status(); } dmrconfig-master/dm1801.c000066400000000000000000001764631354060760700154260ustar00rootroot00000000000000/* * Interface to Baofeng DM-1801. * * Copyright (C) 2019 Serge Vakulenko, KK6ABQ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include #include #include #include #include "radio.h" #include "util.h" #define NCHAN 1024 #define NCONTACTS 1024 #define NZONES 150 #define NGLISTS 76 #define NSCANL 64 #define NMESSAGES 32 #define MEMSZ 0x20000 #define OFFSET_TIMESTMP 0x00088 #define OFFSET_SETTINGS 0x000e0 #define OFFSET_MSGTAB 0x00128 #define OFFSET_SCANTAB 0x01790 #define OFFSET_BANK_0 0x03780 // Channels 1-128 #define OFFSET_INTRO 0x07540 #define OFFSET_ZONETAB 0x08010 #define OFFSET_BANK_1 0x0b1b0 // Channels 129-1024 #define OFFSET_CONTACTS 0x17620 #define OFFSET_GROUPTAB 0x1d620 #define GET_TIMESTAMP() (&radio_mem[OFFSET_TIMESTMP]) #define GET_SETTINGS() ((general_settings_t*) &radio_mem[OFFSET_SETTINGS]) #define GET_INTRO() ((intro_text_t*) &radio_mem[OFFSET_INTRO]) #define GET_ZONETAB() ((zonetab_t*) &radio_mem[OFFSET_ZONETAB]) #define GET_SCANTAB(i) ((scantab_t*) &radio_mem[OFFSET_SCANTAB]) #define GET_GROUPTAB() ((grouptab_t*) &radio_mem[OFFSET_GROUPTAB]) #define GET_MSGTAB() ((msgtab_t*) &radio_mem[OFFSET_MSGTAB]) #define GET_CONTACT(i) ((contact_t*) &radio_mem[OFFSET_CONTACTS + (i)*24]) #define VALID_TEXT(txt) (*(txt) != 0 && *(txt) != 0xff) #define VALID_CONTACT(ct) ((ct) != 0 && VALID_TEXT((ct)->name)) // // Channel data. // typedef struct { // Bytes 0-15 uint8_t name[16]; // Channel Name // Bytes 16-23 uint32_t rx_frequency; // RX Frequency: 8 digits BCD uint32_t tx_frequency; // TX Frequency: 8 digits BCD // Byte 24 uint8_t channel_mode; // Mode: Analog or Digital #define MODE_ANALOG 0 #define MODE_DIGITAL 1 // Bytes 25-26 uint8_t _unused25[2]; // 0 // Bytes 27-28 uint8_t tot; // TOT x 15sec: 0-Infinite, 1=15s... 33=495s uint8_t tot_rekey_delay; // TOT Rekey Delay: 0s...255s // Byte 29 uint8_t admit_criteria; // Admit Criteria: Always, Channel Free or Color Code #define ADMIT_ALWAYS 0 #define ADMIT_CH_FREE 1 #define ADMIT_COLOR 2 // Bytes 30-31 uint8_t _unused30; // 0x50 uint8_t scan_list_index; // Scan List: None, ScanList1...250 // Bytes 32-35 uint16_t ctcss_dcs_receive; // CTCSS/DCS Dec: 4 digits BCD or 0xffff uint16_t ctcss_dcs_transmit; // CTCSS/DCS Enc: 4 digits BCD // Bytes 36-39 uint8_t _unused36; // 0 uint8_t tx_signaling_syst; // Tx Signaling System: Off, DTMF uint8_t _unused38; // 0 uint8_t rx_signaling_syst; // Rx Signaling System: Off, DTMF // Bytes 40-43 uint8_t _unused40; // 0x16 uint8_t privacy_group; // Privacy Group: 0=None, 1=53474c39 #define PRIVGR_NONE 0 #define PRIVGR_53474C39 1 uint8_t colorcode_tx; // Color Code: 0...15 uint8_t group_list_index; // Group List: None, GroupList1...128 // Bytes 44-47 uint8_t colorcode_rx; // Color Code: 0...15 uint8_t emergency_system_index; // Emergency System: None, System1...32 uint16_t contact_name_index; // Contact Name: Contact1... // Byte 48 uint8_t _unused48 : 6, // 0 emergency_alarm_ack : 1, // Emergency Alarm Ack data_call_conf : 1; // Data Call Confirmed // Byte 49 uint8_t private_call_conf : 1, // Private Call Confirmed _unused49_1 : 3, // 0 privacy : 1, // Privacy: Off or On _unused49_5 : 1, // 0 repeater_slot2 : 1, // Repeater Slot: 0=slot1 or 1=slot2 _unused49_7 : 1; // 0 // Byte 50 uint8_t dcdm : 1, // Dual Capacity Direct Mode _unused50_1 : 4, // 0 non_ste_frequency : 1, // Non STE = Frequency _unused50_6 : 2; // 0 // Byte 51 uint8_t squelch : 1, // Squelch #define SQ_TIGHT 0 #define SQ_NORMAL 1 bandwidth : 1, // Bandwidth: 12.5 or 25 kHz #define BW_12_5_KHZ 0 #define BW_25_KHZ 1 rx_only : 1, // RX Only Enable talkaround : 1, // Allow Talkaround _unused51_4 : 2, // 0 vox : 1, // VOX Enable power : 1; // Power: Low, High #define POWER_HIGH 1 #define POWER_LOW 0 // Bytes 52-55 uint8_t _unused52[4]; // 0 } channel_t; // // Bank of 128 channels. // typedef struct { uint8_t bitmap[16]; // bit set when channel valid channel_t chan[128]; } bank_t; // // Contact data. // typedef struct { // Bytes 0-15 uint8_t name[16]; // Contact Name, ff terminated // Bytes 16-19 uint8_t id[4]; // BCD coded 8 digits #define GET_ID(x) (((x)[0] >> 4) * 10000000 +\ ((x)[0] & 15) * 1000000 +\ ((x)[1] >> 4) * 100000 +\ ((x)[1] & 15) * 10000 +\ ((x)[2] >> 4) * 1000 +\ ((x)[2] & 15) * 100 +\ ((x)[3] >> 4) * 10 +\ ((x)[3] & 15)) #define CONTACT_ID(ct) GET_ID((ct)->id) // Byte 20 uint8_t type; // Call Type: Group Call, Private Call or All Call #define CALL_GROUP 0 #define CALL_PRIVATE 1 #define CALL_ALL 2 // Bytes 21-23 uint8_t receive_tone; // Call Receive Tone: 0=Off, 1=On uint8_t ring_style; // Ring style: 0-10 uint8_t _unused23; // 0xff for used contact, 0 for blank entry } contact_t; // // Zone data. // typedef struct { // Bytes 0-15 uint8_t name[16]; // Zone Name // Bytes 16-79 uint16_t member[32]; // Member: channels 1...32 } zone_t; // // Table of zones. // typedef struct { uint8_t bitmap[32]; // bit set when zone valid zone_t zone[NZONES]; } zonetab_t; // // Group list data. // typedef struct { // Bytes 0-15 uint8_t name[16]; // Group List Name // Bytes 16-79 uint16_t member[32]; // Contacts } grouplist_t; // // Table of group lists. // typedef struct { uint8_t nitems1[128]; // N+1, zero when disabled grouplist_t grouplist[NGLISTS]; } grouptab_t; // // Scan list data. // typedef struct { // Bytes 0-14 uint8_t name[15]; // Scan List Name // Byte 15 uint8_t _unused : 4, // 0 channel_mark : 1, // Channel Mark, default 1 pl_type : 2, // PL Type, default 3 #define PL_NONPRI 0 // Non-Priority Channel #define PL_DISABLE 1 // Disable #define PL_PRI 2 // Priority Channel #define PL_PRI_NONPRI 3 // Priority and Non-Priority Channels talkback : 1; // Talkback, default 1 // Bytes 16-79 uint16_t member[32]; // Channels (+1) #define CHAN_SELECTED 1 // Selected // Bytes 80-85 uint16_t priority_ch1; // Priority Channel 1, chan+1 or 0=None, 1=Selected uint16_t priority_ch2; // Priority Channel 2 uint16_t tx_designated_ch; // Tx Designated Channel, chan+1 or 0=Last Active Channel // Bytes 86-87 uint8_t sign_hold_time; // Signaling Hold Time (x25 = msec) default 40=1000ms uint8_t prio_sample_time; // Priority Sample Time (x250 = msec) default 8=2000ms } scanlist_t; // // Table of scanlists. // typedef struct { uint8_t valid[NSCANL]; // byte=1 when scanlist valid scanlist_t scanlist[NSCANL]; } scantab_t; // // General settings. // typedef struct { // Bytes e0-e7 uint8_t radio_name[8]; // Bytes e8-eb uint8_t radio_id[4]; } general_settings_t; // // Intro messages. // typedef struct { // Bytes 7540-754f uint8_t intro_line1[16]; // Bytes 7550-755f uint8_t intro_line2[16]; } intro_text_t; // // Table of text messages. // typedef struct { uint8_t count; // number of messages uint8_t _unused1[7]; // 0 uint8_t len[NMESSAGES]; // message length uint8_t _unused2[NMESSAGES]; // 0 uint8_t message[NMESSAGES*144]; // messages } msgtab_t; static const char *POWER_NAME[] = { "Low", "High" }; static const char *SQUELCH_NAME[] = { "Tight", "Normal" }; static const char *BANDWIDTH[] = { "12.5", "25" }; static const char *CONTACT_TYPE[] = {"Group", "Private", "All", "???" }; static const char *ADMIT_NAME[] = { "-", "Free", "Color", "???" }; #ifdef PRINT_RARE_PARAMS static const char *PRIVACY_NAME[] = { "-", "On" }; static const char *SIGNALING_SYSTEM[] = { "-", "DTMF" }; #endif // // Print a generic information about the device. // static void dm1801_print_version(radio_device_t *radio, FILE *out) { unsigned char *timestamp = GET_TIMESTAMP(); if (*timestamp != 0xff) { fprintf(out, "Last Programmed Date: %d%d%d%d-%d%d-%d%d", timestamp[0] >> 4, timestamp[0] & 15, timestamp[1] >> 4, timestamp[1] & 15, timestamp[2] >> 4, timestamp[2] & 15, timestamp[3] >> 4, timestamp[3] & 15); fprintf(out, " %d%d:%d%d\n", timestamp[4] >> 4, timestamp[4] & 15, timestamp[5] >> 4, timestamp[5] & 15); } } // // Read memory image from the device. // static void download(radio_device_t *radio) { int bno; // Read range 0x80...0x1ee5f. #define NBLK 989 for (bno = 1; bno < NBLK; bno++) { if (bno >= 248 && bno < 256) { // Skip range 0x7c00...0x8000. continue; } hid_read_block(bno, &radio_mem[bno*128], 128); ++radio_progress; if (radio_progress % 32 == 0) { fprintf(stderr, "#"); fflush(stderr); } } //hid_read_finish(); // Clear header and footer. memset(&radio_mem[0], 0xff, 128); memset(&radio_mem[0x1ee60], 0xff, MEMSZ - 0x1ee60); memset(&radio_mem[248*128], 0xff, 8*128); } // // Read memory image. // Same as Radioddity GD-77 new firmware. // static void dm1801_download(radio_device_t *radio) { download(radio); // Add header. memcpy(&radio_mem[0], "1801", 4); } // // Write memory image to the device. // static void dm1801_upload(radio_device_t *radio, int cont_flag) { int bno; // Write range 0x80...0x1ee5f. for (bno = 1; bno < NBLK; bno++) { if (bno >= 248 && bno < 256) { // Skip range 0x7c00...0x8000. continue; } hid_write_block(bno, &radio_mem[bno*128], 128); ++radio_progress; if (radio_progress % 32 == 0) { fprintf(stderr, "#"); fflush(stderr); } } hid_write_finish(); } // // Check whether the memory image is compatible with this device. // static int dm1801_is_compatible(radio_device_t *radio) { return strncmp("1801", (char*)&radio_mem[0], 4) == 0; } // // Set name for a given zone. // static void setup_zone(int index, const char *name) { zonetab_t *zt = GET_ZONETAB(); zone_t *z = &zt->zone[index]; ascii_decode(z->name, name, sizeof(z->name), 0xff); memset(z->member, 0, sizeof(z->member)); // Set valid bit. zt->bitmap[index / 8] |= 1 << (index & 7); } // // Get zone by index. // Return 0 when zone is disabled. // static zone_t *get_zone(int index) { zonetab_t *zt = GET_ZONETAB(); if (zt->bitmap[index / 8] >> (index & 7) & 1) return &zt->zone[index]; else return 0; } // // Add channel to a zone. // Return 0 on failure. // static int zone_append(int index, int cnum) { zonetab_t *zt = GET_ZONETAB(); zone_t *z = &zt->zone[index]; int i; for (i=0; i<32; i++) { if (z->member[i] == cnum) return 1; if (z->member[i] == 0) { z->member[i] = cnum; return 1; } } return 0; } static void erase_zone(int index) { zonetab_t *zt = GET_ZONETAB(); zone_t *z = &zt->zone[index]; memset(z->name, 0, sizeof(z->name)); memset(z->member, 0, sizeof(z->member)); // Clear valid bit. zt->bitmap[index / 8] &= ~(1 << (index & 7)); } // // Set parameters for a given scan list. // static void setup_scanlist(int index, const char *name, int prio1, int prio2, int txchan) { scantab_t *st = GET_SCANTAB(); scanlist_t *sl = &st->scanlist[index]; memset(sl, 0, 88); ascii_decode(sl->name, name, sizeof(sl->name), 0xff); sl->priority_ch1 = prio1; sl->priority_ch2 = prio2; sl->tx_designated_ch = txchan; sl->talkback = 1; sl->channel_mark = 1; sl->pl_type = PL_PRI_NONPRI; sl->sign_hold_time = 1000 / 25; // 1 sec sl->prio_sample_time = 2000 / 250; // 2 sec // Set valid bit. st->valid[index] = 1; } static void erase_scanlist(int index) { scantab_t *st = GET_SCANTAB(); memset(&st->scanlist[index], 0xff, sizeof(scanlist_t)); // Clear valid bit. st->valid[index] = 0; } // // Get scanlist by index. // Return 0 when scanlist is disabled. // static scanlist_t *get_scanlist(int index) { scantab_t *st = GET_SCANTAB(); if (st->valid[index]) return &st->scanlist[index]; else return 0; } // // Add channel to a zone. // Return 0 on failure. // static int scanlist_append(int index, int cnum) { scanlist_t *sl = get_scanlist(index); int i; if (!sl) return 0; // First element is always Selected. if (sl->member[0] == 0) sl->member[0] = CHAN_SELECTED; for (i=0; i<32; i++) { if (sl->member[i] == cnum + 1) return 1; if (sl->member[i] == 0) { sl->member[i] = cnum + 1; return 1; } } return 0; } static void erase_contact(int index) { contact_t *ct = GET_CONTACT(index); memset(ct->name, 0xff, sizeof(ct->name)); memset(ct->id, 0, 8); } static void setup_contact(int index, const char *name, int type, int id, int rxtone) { contact_t *ct = GET_CONTACT(index); ct->id[0] = ((id / 10000000) << 4) | ((id / 1000000) % 10); ct->id[1] = ((id / 100000 % 10) << 4) | ((id / 10000) % 10); ct->id[2] = ((id / 1000 % 10) << 4) | ((id / 100) % 10); ct->id[3] = ((id / 10 % 10) << 4) | (id % 10); ct->type = type; ct->receive_tone = rxtone; ct->ring_style = 0; // TODO ct->_unused23 = (type < CALL_ALL) ? 0 : 0xff; ascii_decode(ct->name, name, 16, 0xff); } // // Get grouplist by index. // Return 0 when grouplist is disabled. // static grouplist_t *get_grouplist(int index) { grouptab_t *gt = GET_GROUPTAB(); if (gt->nitems1[index] > 0) return >->grouplist[index]; else return 0; } static void setup_grouplist(int index, const char *name) { grouptab_t *gt = GET_GROUPTAB(); grouplist_t *gl = >->grouplist[index]; ascii_decode(gl->name, name, sizeof(gl->name), 0xff); // Enable grouplist. gt->nitems1[index] = 1; } // // Add contact to a grouplist. // Return 0 on failure. // static int grouplist_append(int index, int cnum) { grouptab_t *gt = GET_GROUPTAB(); grouplist_t *gl = >->grouplist[index]; int i; for (i=0; i<32; i++) { if (gl->member[i] == cnum) return 1; if (gl->member[i] == 0) { gl->member[i] = cnum; gt->nitems1[index] = i + 2; return 1; } } return 0; } // // Set text for a given message. // static void setup_message(int index, const char *text) { msgtab_t *mt = GET_MSGTAB(); uint8_t *msg = &mt->message[index*144]; int len, i; // Skip spaces and tabs. while (*text == ' ' || *text == '\t') text++; len = strlen(text); mt->len[index] = len + 1; memset(msg, 0xff, 144); memcpy(msg, text, len < 144 ? len : 144); // Count messages. mt->count = 0; for (i=0; ilen); i++) if (mt->len[i] > 0) mt->count++; } // // Check that the radio does support this frequency. // static int is_valid_frequency(int mhz) { if (mhz >= 136 && mhz <= 174) return 1; if (mhz >= 400 && mhz <= 480) return 1; return 0; } // // Get channel bank by index. // static bank_t *get_bank(int i) { if (i == 0) return (bank_t*) &radio_mem[OFFSET_BANK_0]; else return (i - 1) + (bank_t*) &radio_mem[OFFSET_BANK_1]; } // // Get channel by index. // static channel_t *get_channel(int i) { bank_t *b = get_bank(i >> 7); if ((b->bitmap[i % 128 / 8] >> (i & 7)) & 1) return &b->chan[i % 128]; else return 0; } // // Set the parameters for a given memory channel. // static void setup_channel(int i, int mode, char *name, double rx_mhz, double tx_mhz, int power, int scanlist, int squelch, int tot, int rxonly, int admit, int colorcode, int timeslot, int grouplist, int contact, int rxtone, int txtone, int width) { bank_t *b = get_bank(i >> 7); channel_t *ch = &b->chan[i % 128]; ch->channel_mode = mode; ch->bandwidth = width; ch->squelch = squelch; ch->rx_only = rxonly; ch->repeater_slot2 = (timeslot == 2); ch->colorcode_tx = colorcode; ch->colorcode_rx = colorcode; // ch->data_call_conf = 1; // Always ask for SMS acknowledge ch->power = power; ch->admit_criteria = admit; ch->contact_name_index = contact; ch->tot = tot; ch->scan_list_index = scanlist; ch->group_list_index = grouplist; ch->rx_frequency = mhz_to_abcdefgh(rx_mhz); ch->tx_frequency = mhz_to_abcdefgh(tx_mhz); ch->ctcss_dcs_receive = rxtone; ch->ctcss_dcs_transmit = txtone; ascii_decode(ch->name, name, sizeof(ch->name), 0xff); // Set valid bit. b->bitmap[i % 128 / 8] |= 1 << (i & 7); } // // Erase the channel record. // static void erase_channel(int i) { bank_t *b = get_bank(i >> 7); channel_t *ch = &b->chan[i % 128]; // Bytes 0-15 memset(ch->name, 0xff, sizeof(ch->name)); // Bytes 16-23 ch->rx_frequency = 0x40000000; ch->tx_frequency = 0x40000000; // Byte 24 ch->channel_mode = MODE_ANALOG; // Bytes 25-26 ch->_unused25[0] = 0; ch->_unused25[1] = 0; // Bytes 27-28 ch->tot = 0; ch->tot_rekey_delay = 5; // Byte 29 ch->admit_criteria = ADMIT_ALWAYS; // Bytes 30-31 ch->_unused30 = 0x50; ch->scan_list_index = 0; // Bytes 32-35 ch->ctcss_dcs_receive = 0xffff; ch->ctcss_dcs_transmit = 0xffff; // Bytes 36-39 ch->_unused36 = 0; ch->tx_signaling_syst = 0; ch->_unused38 = 0; ch->rx_signaling_syst = 0; // Bytes 40-43 ch->_unused40 = 0x16; ch->privacy_group = PRIVGR_NONE; ch->colorcode_tx = 1; ch->group_list_index = 0; // Bytes 44-47 ch->colorcode_rx = 1; ch->emergency_system_index = 0; ch->contact_name_index = 0; // Byte 48 ch->_unused48 = 0; ch->emergency_alarm_ack = 0; ch->data_call_conf = 0; // Byte 49 ch->private_call_conf = 0; ch->_unused49_1 = 0; ch->privacy = 0; ch->_unused49_5 = 0; ch->repeater_slot2 = 0; ch->_unused49_7 = 0; // Byte 50 ch->dcdm = 0; ch->_unused50_1 = 0; ch->non_ste_frequency = 0; ch->_unused50_6 = 0; // Byte 51 ch->bandwidth = BW_25_KHZ; ch->rx_only = 0; ch->talkaround = 0; ch->_unused51_4 = 0; ch->vox = 0; ch->power = POWER_HIGH; // Bytes 52-55 ch->_unused52[0] = 0; ch->_unused52[1] = 0; ch->_unused52[2] = 0; ch->_unused52[3] = 0; ch->squelch = SQ_NORMAL; // Clear valid bit. b->bitmap[i % 128 / 8] &= ~(1 << (i & 7)); } static void print_chanlist(FILE *out, uint16_t *unsorted, int nchan, int scanlist_flag) { int last = -1; int range = 0; int n; uint16_t data[nchan]; #define CNUM(n) (scanlist_flag ? n-1 : n) // Sort the list before printing. memcpy(data, unsorted, nchan * sizeof(uint16_t)); qsort(data, nchan, sizeof(uint16_t), compare_index); for (n=0; n 0) fprintf(out, ","); fprintf(out, "%d", CNUM(item)); } last = item; } if (range) fprintf(out, "-%d", CNUM(last)); } static void print_id(FILE *out, int verbose) { general_settings_t *gs = GET_SETTINGS(); unsigned id = GET_ID(gs->radio_id); if (verbose) fprintf(out, "\n# Unique DMR ID and name of this radio."); fprintf(out, "\nID: %u\nName: ", id); if (VALID_TEXT(gs->radio_name)) { print_ascii(out, gs->radio_name, 8, 0); } else { fprintf(out, "-"); } fprintf(out, "\n"); } static void print_intro(FILE *out, int verbose) { intro_text_t *it = GET_INTRO(); if (verbose) fprintf(out, "\n# Text displayed when the radio powers up.\n"); fprintf(out, "Intro Line 1: "); if (VALID_TEXT(it->intro_line1)) { print_ascii(out, it->intro_line1, 16, 0); } else { fprintf(out, "-"); } fprintf(out, "\nIntro Line 2: "); if (VALID_TEXT(it->intro_line2)) { print_ascii(out, it->intro_line2, 16, 0); } else { fprintf(out, "-"); } fprintf(out, "\n"); } // // Do we have any channels of given mode? // static int have_channels(int mode) { int i; for (i=0; ichannel_mode == mode) return 1; } return 0; } // // Print base parameters of the channel: // Name // RX Frequency // TX Frequency // Power // Scan List // TOT // RX Only // Admit Criteria // static void print_chan_base(FILE *out, channel_t *ch, int cnum) { fprintf(out, "%5d ", cnum); print_ascii(out, ch->name, 16, 1); fprintf(out, " "); print_freq(out, ch->rx_frequency); fprintf(out, " "); print_offset(out, ch->rx_frequency, ch->tx_frequency); fprintf(out, "%-4s ", POWER_NAME[ch->power]); if (ch->scan_list_index == 0) fprintf(out, "- "); else fprintf(out, "%-4d ", ch->scan_list_index); if (ch->tot == 0) fprintf(out, "- "); else fprintf(out, "%-3d ", ch->tot * 15); fprintf(out, "%c ", "-+"[ch->rx_only]); if (ch->channel_mode == MODE_DIGITAL) fprintf(out, "%-6s ", ADMIT_NAME[ch->admit_criteria & 3]); else fprintf(out, "%-6s ", ADMIT_NAME[ch->admit_criteria != 0]); } #ifdef PRINT_RARE_PARAMS // // Print extended parameters of the channel: // TOT Rekey Delay // RX Ref Frequency // RX Ref Frequency // Lone Worker // VOX // static void print_chan_ext(FILE *out, channel_t *ch) { fprintf(out, "%-3d ", ch->tot_rekey_delay); fprintf(out, "%c ", "-+"[ch->vox]); fprintf(out, "%c ", "-+"[ch->talkaround]); } #endif static void print_digital_channels(FILE *out, int verbose) { int i; if (verbose) { fprintf(out, "# Table of digital channels.\n"); fprintf(out, "# 1) Channel number: 1-%d\n", NCHAN); fprintf(out, "# 2) Name: up to 16 characters, use '_' instead of space\n"); fprintf(out, "# 3) Receive frequency in MHz\n"); fprintf(out, "# 4) Transmit frequency or +/- offset in MHz\n"); fprintf(out, "# 5) Transmit power: High, Low\n"); fprintf(out, "# 6) Scan list: - or index in Scanlist table\n"); fprintf(out, "# 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555\n"); fprintf(out, "# 8) Receive only: -, +\n"); fprintf(out, "# 9) Admit criteria: -, Free, Color\n"); fprintf(out, "# 10) Color code: 0, 1, 2, 3... 15\n"); fprintf(out, "# 11) Time slot: 1 or 2\n"); fprintf(out, "# 12) Receive group list: - or index in Grouplist table\n"); fprintf(out, "# 13) Contact for transmit: - or index in Contacts table\n"); fprintf(out, "#\n"); } fprintf(out, "Digital Name Receive Transmit Power Scan TOT RO Admit Color Slot RxGL TxContact"); #ifdef PRINT_RARE_PARAMS fprintf(out, " Dly VOX TA EmSys Privacy PN PCC EAA DCC"); #endif fprintf(out, "\n"); for (i=0; ichannel_mode != MODE_DIGITAL) { // Select digital channels continue; } print_chan_base(out, ch, i+1); // Print digital parameters of the channel: // Color Code // Repeater Slot // Group List // Contact Name fprintf(out, "%-5d %-3d ", ch->colorcode_tx, ch->repeater_slot2 + 1); if (ch->group_list_index == 0) fprintf(out, "- "); else fprintf(out, "%-4d ", ch->group_list_index); if (ch->contact_name_index == 0) fprintf(out, "-"); else fprintf(out, "%-4d", ch->contact_name_index); #ifdef PRINT_RARE_PARAMS print_chan_ext(out, ch); // Extended digital parameters of the channel: // Emergency System // Privacy // Privacy Group // Private Call Confirmed // Emergency Alarm Ack // Data Call Confirmed // DCDM switch (inverted) // Leader/MS if (ch->emergency_system_index == 0) fprintf(out, "- "); else fprintf(out, "%-5d ", ch->emergency_system_index); fprintf(out, "%-8s ", PRIVACY_NAME[ch->privacy]); if (ch->privacy == 0) fprintf(out, "- "); else fprintf(out, "%-2d ", ch->privacy_group); fprintf(out, "%c ", "-+"[ch->private_call_conf]); fprintf(out, "%c ", "-+"[ch->emergency_alarm_ack]); fprintf(out, "%c ", "-+"[ch->data_call_conf]); #endif // Print contact name as a comment. if (ch->contact_name_index > 0) { contact_t *ct = GET_CONTACT(ch->contact_name_index - 1); if (VALID_CONTACT(ct)) { fprintf(out, " # "); print_ascii(out, ct->name, 16, 0); } } fprintf(out, "\n"); } } static void print_analog_channels(FILE *out, int verbose) { int i; if (verbose) { fprintf(out, "# Table of analog channels.\n"); fprintf(out, "# 1) Channel number: 1-%d\n", NCHAN); fprintf(out, "# 2) Name: up to 16 characters, use '_' instead of space\n"); fprintf(out, "# 3) Receive frequency in MHz\n"); fprintf(out, "# 4) Transmit frequency or +/- offset in MHz\n"); fprintf(out, "# 5) Transmit power: High, Low\n"); fprintf(out, "# 6) Scan list: - or index\n"); fprintf(out, "# 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555\n"); fprintf(out, "# 8) Receive only: -, +\n"); fprintf(out, "# 9) Admit criteria: -, Free, Tone\n"); fprintf(out, "# 10) Squelch level: Normal, Tight\n"); fprintf(out, "# 11) Guard tone for receive, or '-' to disable\n"); fprintf(out, "# 12) Guard tone for transmit, or '-' to disable\n"); fprintf(out, "# 13) Bandwidth in kHz: 12.5, 20, 25\n"); fprintf(out, "#\n"); } fprintf(out, "Analog Name Receive Transmit Power Scan TOT RO Admit Squelch RxTone TxTone Width"); #ifdef PRINT_RARE_PARAMS fprintf(out, " Dly RxRef TxRef LW VOX TA RxSign TxSign"); #endif fprintf(out, "\n"); for (i=0; ichannel_mode != MODE_ANALOG) { // Select analog channels continue; } print_chan_base(out, ch, i+1); // Print analog parameters of the channel: // Squelch // CTCSS/DCS Dec // CTCSS/DCS Enc // Bandwidth fprintf(out, "%-7s ", SQUELCH_NAME[ch->squelch]); print_tone(out, ch->ctcss_dcs_receive); fprintf(out, " "); print_tone(out, ch->ctcss_dcs_transmit); fprintf(out, " %s", BANDWIDTH[ch->bandwidth]); #ifdef PRINT_RARE_PARAMS print_chan_ext(out, ch); // Extended analog parameters of the channel: // Rx Signaling System // Tx Signaling System fprintf(out, "%-6s ", SIGNALING_SYSTEM[ch->rx_signaling_syst & 1]); fprintf(out, "%-6s ", SIGNALING_SYSTEM[ch->tx_signaling_syst & 1]); #endif fprintf(out, "\n"); } } static int have_zones() { zonetab_t *zt = GET_ZONETAB(); int i; for (i=0; i<32; i++) { if (zt->bitmap[i]) return 1; } return 0; } static int have_scanlists() { scantab_t *st = GET_SCANTAB(); int i; for (i=0; ivalid[i]) return 1; } return 0; } static int have_contacts() { int i; for (i=0; initems1[i] > 0) return 1; } return 0; } static int have_messages() { msgtab_t *mt = GET_MSGTAB(); return mt->count > 0; } // // Print full information about the device configuration. // static void dm1801_print_config(radio_device_t *radio, FILE *out, int verbose) { int i; fprintf(out, "Radio: %s\n", radio->name); if (verbose) dm1801_print_version(radio, out); // // Channels. // if (have_channels(MODE_DIGITAL)) { fprintf(out, "\n"); print_digital_channels(out, verbose); } if (have_channels(MODE_ANALOG)) { fprintf(out, "\n"); print_analog_channels(out, verbose); } // // Zones. // if (have_zones()) { fprintf(out, "\n"); if (verbose) { fprintf(out, "# Table of channel zones.\n"); fprintf(out, "# 1) Zone number: 1-%d\n", NZONES); fprintf(out, "# 2) Name: up to 16 characters, use '_' instead of space\n"); fprintf(out, "# 3) List of channels: numbers and ranges (N-M) separated by comma\n"); fprintf(out, "#\n"); } fprintf(out, "Zone Name Channels\n"); for (i=0; iname, 16, 1); fprintf(out, " "); if (z->member[0]) { print_chanlist(out, z->member, 32, 0); } else { fprintf(out, "-"); } fprintf(out, "\n"); } } // // Scan lists. // if (have_scanlists()) { fprintf(out, "\n"); if (verbose) { fprintf(out, "# Table of scan lists.\n"); fprintf(out, "# 1) Scan list number: 1-%d\n", NSCANL); fprintf(out, "# 2) Name: up to 16 characters, use '_' instead of space\n"); fprintf(out, "# 3) Priority channel 1 (50%% of scans): -, Sel or index\n"); fprintf(out, "# 4) Priority channel 2 (25%% of scans): -, Sel or index\n"); fprintf(out, "# 5) Designated transmit channel: Last, Sel or index\n"); fprintf(out, "# 6) List of channels: numbers and ranges (N-M) separated by comma\n"); fprintf(out, "#\n"); } fprintf(out, "Scanlist Name PCh1 PCh2 TxCh "); #ifdef PRINT_RARE_PARAMS fprintf(out, "Hold Smpl "); #endif fprintf(out, "Channels\n"); for (i=0; iname, 15, 1); if (sl->priority_ch1 == 0) { fprintf(out, " - "); } else if (sl->priority_ch1 == 1) { fprintf(out, " Sel "); } else { fprintf(out, " %-4d ", sl->priority_ch1 - 1); } if (sl->priority_ch2 == 0) { fprintf(out, "- "); } else if (sl->priority_ch2 == 1) { fprintf(out, "Sel "); } else { fprintf(out, "%-4d ", sl->priority_ch2 - 1); } if (sl->tx_designated_ch == 0) { fprintf(out, "Last "); } else if (sl->tx_designated_ch == 1) { fprintf(out, "Sel "); } else { fprintf(out, "%-4d ", sl->tx_designated_ch - 1); } #ifdef PRINT_RARE_PARAMS fprintf(out, "%-4d %-4d ", sl->sign_hold_time * 25, sl->prio_sample_time * 250); #endif if (sl->member[1]) { print_chanlist(out, sl->member + 1, 31, 1); } else { fprintf(out, "Sel"); } fprintf(out, "\n"); } } // // Contacts. // if (have_contacts()) { fprintf(out, "\n"); if (verbose) { fprintf(out, "# Table of contacts.\n"); fprintf(out, "# 1) Contact number: 1-%d\n", NCONTACTS); fprintf(out, "# 2) Name: up to 16 characters, use '_' instead of space\n"); fprintf(out, "# 3) Call type: Group, Private, All\n"); fprintf(out, "# 4) Call ID: 1...16777215\n"); fprintf(out, "# 5) Call receive tone: -, +\n"); fprintf(out, "#\n"); } fprintf(out, "Contact Name Type ID RxTone\n"); for (i=0; iname, 16, 1); fprintf(out, " %-7s %-8d %s\n", CONTACT_TYPE[ct->type & 3], CONTACT_ID(ct), ct->receive_tone ? "+" : "-"); } } // // Group lists. // if (have_grouplists()) { fprintf(out, "\n"); if (verbose) { fprintf(out, "# Table of group lists.\n"); fprintf(out, "# 1) Group list number: 1-%d\n", NGLISTS); fprintf(out, "# 2) Name: up to 16 characters, use '_' instead of space\n"); fprintf(out, "# 3) List of contacts: numbers and ranges (N-M) separated by comma\n"); fprintf(out, "#\n"); } fprintf(out, "Grouplist Name Contacts\n"); for (i=0; iname, 16, 1); fprintf(out, " "); if (gl->member[0]) { print_chanlist(out, gl->member, 32, 0); } else { fprintf(out, "-"); } fprintf(out, "\n"); } } // // Text messages. // if (have_messages()) { msgtab_t *mt = GET_MSGTAB(); fprintf(out, "\n"); if (verbose) { fprintf(out, "# Table of text messages.\n"); fprintf(out, "# 1) Message number: 1-%d\n", NMESSAGES); fprintf(out, "# 2) Text: up to 144 characters\n"); fprintf(out, "#\n"); } fprintf(out, "Message Text\n"); for (i=0; ilen[i] == 0) { // Message is disabled continue; } fprintf(out, "%5d ", i+1); print_ascii(out, &mt->message[i*144], 144, 0); fprintf(out, "\n"); } } // General settings. print_id(out, verbose); print_intro(out, verbose); } // // Read memory image from the binary file. // static void dm1801_read_image(radio_device_t *radio, FILE *img) { struct stat st; // Guess device type by file size. if (fstat(fileno(img), &st) < 0) { fprintf(stderr, "Cannot get file size.\n"); exit(-1); } switch (st.st_size) { case MEMSZ: // IMG file. if (fread(&radio_mem[0], 1, MEMSZ, img) != MEMSZ) { fprintf(stderr, "Error reading image data.\n"); exit(-1); } break; default: fprintf(stderr, "Unrecognized file size %u bytes.\n", (int) st.st_size); exit(-1); } } // // Save memory image to the binary file. // static void dm1801_save_image(radio_device_t *radio, FILE *img) { fwrite(&radio_mem[0], 1, MEMSZ, img); } // // Erase all channels. // static void erase_channels() { int i; for (i=0; iradio_name, value, 8, 0xff); return; } if (strcasecmp ("ID", param) == 0) { uint32_t id = strtoul(value, 0, 0); gs->radio_id[0] = ((id / 10000000) << 4) | ((id / 1000000) % 10); gs->radio_id[1] = ((id / 100000 % 10) << 4) | ((id / 10000) % 10); gs->radio_id[2] = ((id / 1000 % 10) << 4) | ((id / 100) % 10); gs->radio_id[3] = ((id / 10 % 10) << 4) | (id % 10); return; } if (strcasecmp ("Last Programmed Date", param) == 0) { // Ignore. return; } if (strcasecmp ("CPS Software Version", param) == 0) { // Ignore. return; } intro_text_t *it = GET_INTRO(); if (strcasecmp ("Intro Line 1", param) == 0) { ascii_decode(it->intro_line1, value, 16, 0xff); return; } if (strcasecmp ("Intro Line 2", param) == 0) { ascii_decode(it->intro_line2, value, 16, 0xff); return; } fprintf(stderr, "Unknown parameter: %s = %s\n", param, value); exit(-1); } // // Parse one line of Digital channel table. // Start_flag is 1 for the first table row. // Return 0 on failure. // static int parse_digital_channel(radio_device_t *radio, int first_row, char *line) { char num_str[256], name_str[256], rxfreq_str[256], offset_str[256]; char power_str[256], scanlist_str[256]; char tot_str[256], rxonly_str[256], admit_str[256], colorcode_str[256]; char slot_str[256], grouplist_str[256], contact_str[256]; int num, power, scanlist, tot, rxonly, admit; int colorcode, timeslot, grouplist, contact; double rx_mhz, tx_mhz; if (sscanf(line, "%s %s %s %s %s %s %s %s %s %s %s %s %s", num_str, name_str, rxfreq_str, offset_str, power_str, scanlist_str, tot_str, rxonly_str, admit_str, colorcode_str, slot_str, grouplist_str, contact_str) != 13) return 0; num = atoi(num_str); if (num < 1 || num > NCHAN) { fprintf(stderr, "Bad channel number.\n"); return 0; } if (sscanf(rxfreq_str, "%lf", &rx_mhz) != 1 || !is_valid_frequency(rx_mhz)) { fprintf(stderr, "Bad receive frequency.\n"); return 0; } if (sscanf(offset_str, "%lf", &tx_mhz) != 1) { badtx: fprintf(stderr, "Bad transmit frequency.\n"); return 0; } if (offset_str[0] == '-' || offset_str[0] == '+') tx_mhz += rx_mhz; if (! is_valid_frequency(tx_mhz)) goto badtx; if (strcasecmp("High", power_str) == 0) { power = POWER_HIGH; } else if (strcasecmp("Low", power_str) == 0) { power = POWER_LOW; } else { fprintf(stderr, "Bad power level.\n"); return 0; } if (*scanlist_str == '-') { scanlist = 0; } else { scanlist = atoi(scanlist_str); if (scanlist == 0 || scanlist > NSCANL) { fprintf(stderr, "Bad scanlist.\n"); return 0; } } tot = atoi(tot_str); if (tot > 555 || tot % 15 != 0) { fprintf(stderr, "Bad timeout timer.\n"); return 0; } tot /= 15; if (*rxonly_str == '-') { rxonly = 0; } else if (*rxonly_str == '+') { rxonly = 1; } else { fprintf(stderr, "Bad receive only flag.\n"); return 0; } if (*admit_str == '-' || strcasecmp("Always", admit_str) == 0) { admit = ADMIT_ALWAYS; } else if (strcasecmp("Free", admit_str) == 0) { admit = ADMIT_CH_FREE; } else if (strcasecmp("Color", admit_str) == 0) { admit = ADMIT_COLOR; } else { fprintf(stderr, "Bad admit criteria.\n"); return 0; } colorcode = atoi(colorcode_str); if (colorcode < 0 || colorcode > 15) { fprintf(stderr, "Bad color code.\n"); return 0; } timeslot = atoi(slot_str); if (timeslot < 1 || timeslot > 2) { fprintf(stderr, "Bad timeslot.\n"); return 0; } if (*grouplist_str == '-') { grouplist = 0; } else { grouplist = atoi(grouplist_str); if (grouplist == 0 || grouplist > NGLISTS) { fprintf(stderr, "Bad receive grouplist.\n"); return 0; } } if (*contact_str == '-') { contact = 0; } else { contact = atoi(contact_str); if (contact == 0 || contact > NCONTACTS) { fprintf(stderr, "Bad transmit contact.\n"); return 0; } } if (first_row && radio->channel_count == 0) { // On first entry, erase all channels, zones and scanlists. erase_channels(); erase_zones(); erase_scanlists(); } setup_channel(num-1, MODE_DIGITAL, name_str, rx_mhz, tx_mhz, power, scanlist, 5, tot, rxonly, admit, colorcode, timeslot, grouplist, contact, 0xffff, 0xffff, BW_12_5_KHZ); radio->channel_count++; return 1; } // // Parse one line of Analog channel table. // Start_flag is 1 for the first table row. // Return 0 on failure. // static int parse_analog_channel(radio_device_t *radio, int first_row, char *line) { char num_str[256], name_str[256], rxfreq_str[256], offset_str[256]; char power_str[256], scanlist_str[256], squelch_str[256]; char tot_str[256], rxonly_str[256], admit_str[256]; char rxtone_str[256], txtone_str[256], width_str[256]; int num, power, scanlist, squelch, tot, rxonly, admit; int rxtone, txtone, width; double rx_mhz, tx_mhz; if (sscanf(line, "%s %s %s %s %s %s %s %s %s %s %s %s %s", num_str, name_str, rxfreq_str, offset_str, power_str, scanlist_str, tot_str, rxonly_str, admit_str, squelch_str, rxtone_str, txtone_str, width_str) != 13) return 0; num = atoi(num_str); if (num < 1 || num > NCHAN) { fprintf(stderr, "Bad channel number.\n"); return 0; } if (sscanf(rxfreq_str, "%lf", &rx_mhz) != 1 || !is_valid_frequency(rx_mhz)) { fprintf(stderr, "Bad receive frequency.\n"); return 0; } if (sscanf(offset_str, "%lf", &tx_mhz) != 1) { badtx: fprintf(stderr, "Bad transmit frequency.\n"); return 0; } if (offset_str[0] == '-' || offset_str[0] == '+') tx_mhz += rx_mhz; if (! is_valid_frequency(tx_mhz)) goto badtx; if (strcasecmp("High", power_str) == 0) { power = POWER_HIGH; } else if (strcasecmp("Low", power_str) == 0) { power = POWER_LOW; } else { fprintf(stderr, "Bad power level.\n"); return 0; } if (*scanlist_str == '-') { scanlist = 0; } else { scanlist = atoi(scanlist_str); if (scanlist == 0 || scanlist > NSCANL) { fprintf(stderr, "Bad scanlist.\n"); return 0; } } if (strcasecmp ("Normal", squelch_str) == 0) { squelch = SQ_NORMAL; } else if (strcasecmp ("Tight", squelch_str) == 0) { squelch = SQ_TIGHT; } else { fprintf (stderr, "Bad squelch level.\n"); return 0; } tot = atoi(tot_str); if (tot > 555 || tot % 15 != 0) { fprintf(stderr, "Bad timeout timer.\n"); return 0; } tot /= 15; if (*rxonly_str == '-') { rxonly = 0; } else if (*rxonly_str == '+') { rxonly = 1; } else { fprintf(stderr, "Bad receive only flag.\n"); return 0; } if (*admit_str == '-' || strcasecmp("Always", admit_str) == 0) { admit = ADMIT_ALWAYS; } else if (strcasecmp("Free", admit_str) == 0) { admit = ADMIT_CH_FREE; } else { fprintf(stderr, "Bad admit criteria.\n"); return 0; } rxtone = encode_tone(rxtone_str); if (rxtone < 0) { fprintf(stderr, "Bad receive tone.\n"); return 0; } txtone = encode_tone(txtone_str); if (txtone < 0) { fprintf(stderr, "Bad transmit tone.\n"); return 0; } if (strcasecmp ("12.5", width_str) == 0) { width = BW_12_5_KHZ; } else if (strcasecmp ("25", width_str) == 0) { width = BW_25_KHZ; } else { fprintf (stderr, "Bad width.\n"); return 0; } if (first_row && radio->channel_count == 0) { // On first entry, erase all channels, zones and scanlists. erase_channels(); erase_zones(); erase_scanlists(); } setup_channel(num-1, MODE_ANALOG, name_str, rx_mhz, tx_mhz, power, scanlist, squelch, tot, rxonly, admit, 0, 1, 0, 0, rxtone, txtone, width); radio->channel_count++; return 1; } // // Parse one line of Zones table. // Return 0 on failure. // static int parse_zones(int first_row, char *line) { char num_str[256], name_str[256], chan_str[256]; int znum; if (sscanf(line, "%s %s %s", num_str, name_str, chan_str) != 3) return 0; znum = strtoul(num_str, 0, 10); if (znum < 1 || znum > NZONES) { fprintf(stderr, "Bad zone number.\n"); return 0; } if (first_row) { // On first entry, erase the Zones table. erase_zones(); } setup_zone(znum-1, name_str); if (*chan_str != '-') { char *str = chan_str; int nchan = 0; int range = 0; int last = 0; // Parse channel list. for (;;) { char *eptr; int cnum = strtoul(str, &eptr, 10); if (eptr == str) { fprintf(stderr, "Zone %d: wrong channel list '%s'.\n", znum, str); return 0; } if (cnum < 1 || cnum > NCHAN) { fprintf(stderr, "Zone %d: wrong channel number %d.\n", znum, cnum); return 0; } if (range) { // Add range. int c; for (c=last+1; c<=cnum; c++) { if (!zone_append(znum-1, c)) { fprintf(stderr, "Zone %d: too many channels.\n", znum); return 0; } nchan++; } } else { // Add single channel. if (!zone_append(znum-1, cnum)) { fprintf(stderr, "Zone %d: too many channels.\n", znum); return 0; } nchan++; } if (*eptr == 0) break; if (*eptr != ',' && *eptr != '-') { fprintf(stderr, "Zone %d: wrong channel list '%s'.\n", znum, eptr); return 0; } range = (*eptr == '-'); last = cnum; str = eptr + 1; } } return 1; } // // Parse one line of Scanlist table. // Return 0 on failure. // static int parse_scanlist(int first_row, char *line) { char num_str[256], name_str[256], prio1_str[256], prio2_str[256]; char tx_str[256], chan_str[256]; int snum, prio1, prio2, txchan; if (sscanf(line, "%s %s %s %s %s %s", num_str, name_str, prio1_str, prio2_str, tx_str, chan_str) != 6) return 0; snum = atoi(num_str); if (snum < 1 || snum > NSCANL) { fprintf(stderr, "Bad scan list number.\n"); return 0; } if (first_row) { // On first entry, erase the Scanlists table. erase_scanlists(); } if (*prio1_str == '-') { prio1 = 0; } else if (strcasecmp("Sel", prio1_str) == 0) { prio1 = 1; } else { prio1 = atoi(prio1_str); if (prio1 < 1 || prio1 > NCHAN) { fprintf(stderr, "Bad priority channel 1.\n"); return 0; } prio1++; } if (*prio2_str == '-') { prio2 = 0; } else if (strcasecmp("Sel", prio2_str) == 0) { prio2 = 1; } else { prio2 = atoi(prio2_str); if (prio2 < 1 || prio2 > NCHAN) { fprintf(stderr, "Bad priority channel 2.\n"); return 0; } prio2++; } if (strcasecmp("Last", tx_str) == 0) { txchan = 0; } else if (strcasecmp("Sel", tx_str) == 0) { txchan = 1; } else { txchan = atoi(tx_str); if (txchan < 1 || txchan > NCHAN) { fprintf(stderr, "Bad transmit channel.\n"); return 0; } txchan++; } setup_scanlist(snum-1, name_str, prio1, prio2, txchan); if (*chan_str == '-') { // Empty. } else if (strcasecmp("Sel", chan_str) == 0) { // Selected channel only. scanlist_append(snum-1, 0); } else { char *str = chan_str; int nchan = 0; int range = 0; int last = 0; // Parse channel list. for (;;) { char *eptr; int cnum = strtoul(str, &eptr, 10); if (eptr == str) { fprintf(stderr, "Scan list %d: wrong channel list '%s'.\n", snum, str); return 0; } if (cnum < 1 || cnum > NCHAN) { fprintf(stderr, "Scan list %d: wrong channel number %d.\n", snum, cnum); return 0; } if (range) { // Add range. int c; for (c=last+1; c<=cnum; c++) { if (!scanlist_append(snum-1, c)) { fprintf(stderr, "Scan list %d: too many channels.\n", snum); return 0; } nchan++; } } else { // Add single channel. if (!scanlist_append(snum-1, cnum)) { fprintf(stderr, "Scan list %d: too many channels.\n", snum); return 0; } nchan++; } if (*eptr == 0) break; if (*eptr != ',' && *eptr != '-') { fprintf(stderr, "Scan list %d: wrong channel list '%s'.\n", snum, eptr); return 0; } range = (*eptr == '-'); last = cnum; str = eptr + 1; } } return 1; } // // Parse one line of Contacts table. // Return 0 on failure. // static int parse_contact(int first_row, char *line) { char num_str[256], name_str[256], type_str[256], id_str[256], rxtone_str[256]; int cnum, type, id, rxtone; if (sscanf(line, "%s %s %s %s %s", num_str, name_str, type_str, id_str, rxtone_str) != 5) return 0; cnum = atoi(num_str); if (cnum < 1 || cnum > NCONTACTS) { fprintf(stderr, "Bad contact number.\n"); return 0; } if (first_row) { // On first entry, erase the Contacts table. erase_contacts(); } if (strcasecmp("Group", type_str) == 0) { type = CALL_GROUP; } else if (strcasecmp("Private", type_str) == 0) { type = CALL_PRIVATE; } else if (strcasecmp("All", type_str) == 0) { type = CALL_ALL; } else { fprintf(stderr, "Bad call type.\n"); return 0; } id = atoi(id_str); if (id < 1 || id > 0xffffff) { fprintf(stderr, "Bad call ID.\n"); return 0; } if (*rxtone_str == '-' || strcasecmp("No", rxtone_str) == 0) { rxtone = 0; } else if (*rxtone_str == '+' || strcasecmp("Yes", rxtone_str) == 0) { rxtone = 1; } else { fprintf(stderr, "Bad receive tone flag.\n"); return 0; } setup_contact(cnum-1, name_str, type, id, rxtone); return 1; } // // Parse one line of Grouplist table. // Return 0 on failure. // static int parse_grouplist(int first_row, char *line) { char num_str[256], name_str[256], list_str[256]; int glnum; if (sscanf(line, "%s %s %s", num_str, name_str, list_str) != 3) return 0; glnum = strtoul(num_str, 0, 10); if (glnum < 1 || glnum > NGLISTS) { fprintf(stderr, "Bad group list number.\n"); return 0; } if (first_row) { // On first entry, erase the Grouplists table. memset(&radio_mem[OFFSET_GROUPTAB], 0, sizeof(grouptab_t)); } setup_grouplist(glnum-1, name_str); if (*list_str != '-') { char *str = list_str; int range = 0; int last = 0; // Parse contact list. for (;;) { char *eptr; int cnum = strtoul(str, &eptr, 10); if (eptr == str) { fprintf(stderr, "Group list %d: wrong contact list '%s'.\n", glnum, str); return 0; } if (cnum < 1 || cnum > NCONTACTS) { fprintf(stderr, "Group list %d: wrong contact number %d.\n", glnum, cnum); return 0; } if (range) { // Add range. int c; for (c=last+1; c<=cnum; c++) { if (!grouplist_append(glnum-1, c)) { fprintf(stderr, "Group list %d: too many contacts.\n", glnum); return 0; } } } else { // Add single contact. if (!grouplist_append(glnum-1, cnum)) { fprintf(stderr, "Group list %d: too many contacts.\n", glnum); return 0; } } if (*eptr == 0) break; if (*eptr != ',' && *eptr != '-') { fprintf(stderr, "Group list %d: wrong contact list '%s'.\n", glnum, eptr); return 0; } range = (*eptr == '-'); last = cnum; str = eptr + 1; } } return 1; } // // Parse one line of Messages table. // Return 0 on failure. // static int parse_messages(int first_row, char *line) { char *text; int mnum; mnum = strtoul(line, &text, 10); if (text == line || mnum < 1 || mnum > NMESSAGES) { fprintf(stderr, "Bad message number.\n"); return 0; } if (first_row) { // On first entry, erase the Messages table. memset(GET_MSGTAB(), 0, sizeof(msgtab_t)); } setup_message(mnum-1, text); return 1; } // // Parse table header. // Return table id, or 0 in case of error. // static int dm1801_parse_header(radio_device_t *radio, char *line) { if (strncasecmp(line, "Digital", 7) == 0) return 'D'; if (strncasecmp(line, "Analog", 6) == 0) return 'A'; if (strncasecmp(line, "Zone", 4) == 0) return 'Z'; if (strncasecmp(line, "Scanlist", 8) == 0) return 'S'; if (strncasecmp(line, "Contact", 7) == 0) return 'C'; if (strncasecmp(line, "Grouplist", 9) == 0) return 'G'; if (strncasecmp(line, "Message", 7) == 0) return 'M'; return 0; } // // Parse one line of table data. // Return 0 on failure. // static int dm1801_parse_row(radio_device_t *radio, int table_id, int first_row, char *line) { switch (table_id) { case 'D': return parse_digital_channel(radio, first_row, line); case 'A': return parse_analog_channel(radio, first_row, line); case 'Z': return parse_zones(first_row, line); case 'S': return parse_scanlist(first_row, line); case 'C': return parse_contact(first_row, line); case 'G': return parse_grouplist(first_row, line); case 'M': return parse_messages(first_row, line); } return 0; } // // Update timestamp. // static void dm1801_update_timestamp(radio_device_t *radio) { unsigned char *timestamp = GET_TIMESTAMP(); char p[16]; // Last Programmed Date get_timestamp(p); timestamp[0] = ((p[0] & 0xf) << 4) | (p[1] & 0xf); // year upper timestamp[1] = ((p[2] & 0xf) << 4) | (p[3] & 0xf); // year lower timestamp[2] = ((p[4] & 0xf) << 4) | (p[5] & 0xf); // month timestamp[3] = ((p[6] & 0xf) << 4) | (p[7] & 0xf); // day timestamp[4] = ((p[8] & 0xf) << 4) | (p[9] & 0xf); // hour timestamp[5] = ((p[10] & 0xf) << 4) | (p[11] & 0xf); // minute } // // Check that configuration is correct. // Return 0 on error. // static int dm1801_verify_config(radio_device_t *radio) { int i, k, nchannels = 0, nzones = 0, nscanlists = 0, ngrouplists = 0; int ncontacts = 0, nerrors = 0; // Channels: check references to scanlists, contacts and grouplists. for (i=0; iscan_list_index != 0) { scanlist_t *sl = get_scanlist(ch->scan_list_index - 1); if (!sl) { fprintf(stderr, "Channel %d '", i+1); print_ascii(stderr, ch->name, 16, 0); fprintf(stderr, "': scanlist %d not found.\n", ch->scan_list_index); nerrors++; } } if (ch->contact_name_index != 0) { contact_t *ct = GET_CONTACT(ch->contact_name_index - 1); if (!VALID_CONTACT(ct)) { fprintf(stderr, "Channel %d '", i+1); print_ascii(stderr, ch->name, 16, 0); fprintf(stderr, "': contact %d not found.\n", ch->contact_name_index); nerrors++; } } if (ch->group_list_index != 0) { grouplist_t *gl = get_grouplist(ch->group_list_index - 1); if (!gl) { fprintf(stderr, "Channel %d '", i+1); print_ascii(stderr, ch->name, 16, 0); fprintf(stderr, "': grouplist %d not found.\n", ch->group_list_index); nerrors++; } } } // Zones: check references to channels. for (i=0; imember[k]; if (cnum != 0 && !get_channel(cnum - 1)) { fprintf(stderr, "Zone %d '", i+1); print_ascii(stderr, z->name, 16, 0); fprintf(stderr, "': channel %d not found.\n", cnum); nerrors++; } } } // Scanlists: check references to channels. for (i=0; imember[k] - 1; if (cnum > 0 && !get_channel(cnum - 1)) { fprintf(stderr, "Scanlist %d '", i+1); print_ascii(stderr, sl->name, 15, 0); fprintf(stderr, "': channel %d not found.\n", cnum); nerrors++; } } } // Grouplists: check references to contacts. for (i=0; imember[k]; if (cnum != 0) { contact_t *ct = GET_CONTACT(cnum - 1); if (!VALID_CONTACT(ct)) { fprintf(stderr, "Grouplist %d '", i+1); print_ascii(stderr, gl->name, 16, 0); fprintf(stderr, "': contact %d not found.\n", cnum); nerrors++; } } } } // Count contacts. for (i=0; i 0) { fprintf(stderr, "Total %d errors.\n", nerrors); return 0; } fprintf(stderr, "Total %d channels, %d zones, %d scanlists, %d contacts, %d grouplists.\n", nchannels, nzones, nscanlists, ncontacts, ngrouplists); return 1; } // // Baofeng DM-1801 // radio_device_t radio_dm1801 = { "Baofeng DM-1801", dm1801_download, dm1801_upload, dm1801_is_compatible, dm1801_read_image, dm1801_save_image, dm1801_print_version, dm1801_print_config, dm1801_verify_config, dm1801_parse_parameter, dm1801_parse_header, dm1801_parse_row, dm1801_update_timestamp, //TODO: dm1801_write_csv, }; dmrconfig-master/examples/000077500000000000000000000000001354060760700161455ustar00rootroot00000000000000dmrconfig-master/examples/Makefile000066400000000000000000000023721354060760700176110ustar00rootroot00000000000000CONF = md2017-7-23-2017.conf \ md2017-DualHotspot-PNW-2017-07-19.conf \ md380-baynet-full-codeplug-rev1.conf \ md380-generic-norcal-uhf-20161103b.conf \ md380-norcal-brandmeister.conf \ md-uv380_bm_2018-08-07.conf \ md-uv380-empty.conf \ md-uv380-factory.conf \ rd5r-baden-wuertemburg-codeplug-v3.conf \ rd5r-bayern-codeplug-v3.conf \ rd5r-s-yorks-codeplug-v3.conf \ rd5r-v21x-Charlotte-NC.conf \ rd5r-v21x-Ft-Launderdale-FL.conf \ rd5r-v21x-Los-Angeles-CA.conf \ rd5r-v21x-Tampa-FL.conf \ rd5r-empty.conf \ rd5r-factory.conf \ gd77-ver311-W5NOR-Oklahoma.conf \ gd77-empty.conf \ gd77-factory.conf \ d868uv-rmham-2018-10-20.conf \ d868uv-norcal-ka7qqv-2017-11-04.conf \ d868uv-empty.conf \ dmr6x2-factory.conf VPATH = ../../dmrconfig.wiki/files/uv380 \ ../../dmrconfig.wiki/files/md380 \ ../../dmrconfig.wiki/files/rd5r \ ../../dmrconfig.wiki/files/gd77 \ ../../dmrconfig.wiki/files/d868uv all: $(CONF) clean: rm -f $(CONF) .SUFFIXES: .conf .rdt .dat .img .rdt.conf: dmrconfig $< > $@ .dat.conf: dmrconfig $< > $@ .img.conf: dmrconfig $< > $@ dmrconfig-master/examples/d868uv-empty.conf000066400000000000000000000072211354060760700212160ustar00rootroot00000000000000# # Configuration generated 2018/11/12 by dmrconfig, version 0.9.193 # Radio: Anytone AT-D868UV # Table of digital channels. # 1) Channel number: 1-4000 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Mid, Low, Turbo # 6) Scan list: - or index in Scanlist table # 7) Transmit timeout timer: (unused) # 8) Receive only: -, + # 9) Admit criteria: -, Free, Color, NColor # 10) Color code: 0, 1, 2, 3... 15 # 11) Time slot: 1 or 2 # 12) Receive group list: - or index in Grouplist table # 13) Contact for transmit: - or index in Contacts table # Digital Name Receive Transmit Power Scan TOT RO Admit Color Slot RxGL TxContact 2 Channel_2 436.325 +0 Turbo 1 - - - 1 1 1 1 # Contact1 4 Channel_4 438.875 +0 Turbo 1 - - - 1 1 1 1 # Contact1 6 Channel_6 146.325 +0 Turbo 1 - - - 1 1 1 1 # Contact1 8 Channel_8 148.875 +0 Turbo 1 - - - 1 1 1 1 # Contact1 # Table of analog channels. # 1) Channel number: 1-4000 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Mid, Low, Turbo # 6) Scan list: - or index # 7) Transmit timeout timer: (unused) # 8) Receive only: -, + # 9) Admit criteria: -, Free, Tone # 10) Squelch level: Normal (unused) # 11) Guard tone for receive, or '-' to disable # 12) Guard tone for transmit, or '-' to disable # 13) Bandwidth in kHz: 12.5, 25 # Analog Name Receive Transmit Power Scan TOT RO Admit Squelch RxTone TxTone Width 1 Channel_1 435.525 +0 Turbo 1 - - - Normal - - 25 3 Channel_3 437.575 +0 Turbo 1 - - - Normal - - 25 5 Channel_5 144.525 +0 Turbo 1 - - - Normal - - 25 7 Channel_7 147.575 +0 Turbo 1 - - - Normal - - 25 # Table of channel zones. # 1) Zone number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of channels: numbers and ranges (N-M) separated by comma # Zone Name Channels 1 Zone_1 1-8 # Table of scan lists. # 1) Scan list number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) Priority channel 1: -, Curr or index # 4) Priority channel 2: -, Curr or index # 5) Designated transmit channel: Sel or Last # 6) List of channels: numbers and ranges (N-M) separated by comma # Scanlist Name PCh1 PCh2 TxCh Channels 1 Scan_List_1 - - Sel 1-8 # Table of contacts. # 1) Contact number: 1-10000 # 2) Name: up to 16 characters, use '_' instead of space # 3) Call type: Group, Private, All # 4) Call ID: 1...16777215 # 5) Incoming call alert: -, +, Online # Contact Name Type ID RxTone 1 Contact1 Group 12345678 - # Table of group lists. # 1) Group list number: 1-250 # 2) Name: up to 35 characters, use '_' instead of space # 3) List of contacts: numbers and ranges (N-M) separated by comma # Grouplist Name Contacts 1 Group_List_1 1 # Table of text messages. # 1) Message number: 1-100 # 2) Text: up to 200 characters # Message Text 1 Hello! 2 Welcome! 3 Thank you! 4 Good bye! 5 Happy every day! # Unique DMR ID and name of this radio. ID: 12345678 Name: My Radio # Text displayed when the radio powers up. Intro Line 1: WELCOM Intro Line 2: ANYTONE dmrconfig-master/examples/d868uv-norcal-ka7qqv-2017-11-04.conf000066400000000000000000005351451354060760700236100ustar00rootroot00000000000000# # Configuration generated 2018/11/12 by dmrconfig, version 0.9.193 # Radio: Anytone AT-D868UV # Table of digital channels. # 1) Channel number: 1-4000 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Mid, Low, Turbo # 6) Scan list: - or index in Scanlist table # 7) Transmit timeout timer: (unused) # 8) Receive only: -, + # 9) Admit criteria: -, Free, Color, NColor # 10) Color code: 0, 1, 2, 3... 15 # 11) Time slot: 1 or 2 # 12) Receive group list: - or index in Grouplist table # 13) Contact for transmit: - or index in Contacts table # Digital Name Receive Transmit Power Scan TOT RO Admit Color Slot RxGL TxContact 3 SANTIAGO 435.000 +0 Low - - - - 0 1 - 1 # BLANK 4 Alert 446.820 -5 High - - - Color 1 1 - 14 # Alert Radio 5 BM_5150 446.820 -5 High - - - Color 1 2 - 18 # BM 5150 6 SNARS 446.820 -5 High - - - Color 1 2 - 30 # BM SNARS 8 PAPA 446.820 -5 High - - - Color 1 2 - 27 # BM PAPA 9 SoCal 446.820 -5 High - - - Color 1 2 - 31 # BM SoCal 10 SoCal_1 446.820 -5 High - - - Color 1 2 - 32 # BM SoCal 1 11 XLX013 446.820 -5.2 High - - - Color 1 2 - 161 # XLX013 12 Local 446.820 -5 High - - - Color 1 2 - 83 # Local 13 California 446.820 -5 High - - - Color 1 1 - 44 # CA 3106 14 Cal_1 446.820 -5 High - - - Color 1 1 - 20 # BM CAL 1 15 Call_Zone_6 446.820 -5 High - - - Color 1 1 - 48 # Call Zone 6 16 North_Am 446.820 -5 High - - - Color 1 1 - 25 # BM North AM 17 Worldwide 446.820 -5 High - - - Color 1 1 - 42 # BM Worldwide 18 TAC_310 446.820 -5 High - - - Color 1 1 - 136 # BM TAC 310 19 Bridge 446.820 -5 High - - - Color 1 1 - 43 # BRIDGE 20 Channel_2 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 21 LUKENS 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 22 PAPA 449.380 -5 High - - - Color 1 2 - 27 # BM PAPA 23 SoCal 449.380 -5 High - - - Color 1 2 - 31 # BM SoCal 24 SoCal_1 449.380 -5 High - - - Color 1 2 - 32 # BM SoCal 1 25 XLX013 449.380 -5 High - - - Color 1 2 - 161 # XLX013 26 Local 449.380 -5 High - - - Color 1 2 - 83 # Local 27 California 449.380 -5 High - - - Color 1 1 - 44 # CA 3106 28 Cal_1 449.380 -5 High - - - Color 1 1 - 20 # BM CAL 1 29 Call_Zone_6 449.380 -5 High - - - Color 1 1 - 48 # Call Zone 6 30 North_Am 449.380 -5 High - - - Color 1 1 - 25 # BM North AM 31 Worldwide 449.380 -5 High - - - Color 1 1 - 42 # BM Worldwide 32 TAC_310 449.380 -5 High - - - Color 1 1 - 136 # BM TAC 310 33 Bridge 449.380 -5 High - - - Color 1 1 - 43 # BRIDGE 34 SNARS 449.380 -5 High - - - Color 1 1 - 30 # BM SNARS 35 BM_5150 449.390 -5.01 High - - - Color 1 2 - 18 # BM 5150 36 Alert 449.380 -5 High - - - Color 1 1 - 14 # Alert Radio 37 PARROT 449.380 -5 High - - - Color 1 2 - 28 # BM PARROT 38 Channel_3 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 39 SIERRA 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 40 Alert 449.440 -5 High - - - Color 1 1 - 14 # Alert Radio 41 SoCal 449.440 -5 High - - - Color 1 2 - 31 # BM SoCal 42 SoCal_1 449.440 -5 High - - - Color 1 2 - 32 # BM SoCal 1 43 XLX013 449.440 -5 High - - - Color 1 1 - 161 # XLX013 44 California 449.440 -5 High - - - Color 1 1 - 44 # CA 3106 45 Cal_1 449.440 -5 High - - - Color 1 1 - 20 # BM CAL 1 46 Call_Zone_6 449.440 -5 High - - - Color 1 1 - 48 # Call Zone 6 47 North_Am 449.440 -5 High - - - Color 1 1 - 25 # BM North AM 48 Worldwide 449.440 -5 High - - - Color 1 1 - 42 # BM Worldwide 49 TAC_310 449.440 -5 Low - - - Color 4 1 - 136 # BM TAC 310 50 Bridge 449.440 -4.95 High - - - Color 1 1 - 43 # BRIDGE 51 SNARS 449.440 -5 High - - - Color 1 1 - 30 # BM SNARS 52 NorCal 449.440 -5 High - - - Color 1 2 - 109 # NorCal 5150 53 PAPA 449.440 -4.95 High - - - Color 1 1 - 27 # BM PAPA 54 Local 449.440 -14.44 High - - - Color 1 2 - 83 # Local 55 BM_5150 449.440 -5 High - - - Color 1 2 - 18 # BM 5150 56 Channel_4 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 57 SONOMA 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 58 Local 440.0125 +5 High - - - Color 1 2 - 83 # Local 59 NorCal_1 440.0125 +5 High - - - Color 1 2 - 24 # BM NorCal 1 60 NorCal 440.0125 +5 High - - - Color 1 2 - 23 # BM NorCal 61 Reflector_CQ 440.0125 +5 High - - - Color 1 2 - 29 # BM REF-TG9 62 BM_5150 440.0125 +5 High - - - Color 1 2 - 18 # BM 5150 63 Mountain_West 440.0125 +5 High - - - Color 1 1 - 22 # BM Mt West 64 Ventura_County 440.0125 +5 High - - - Color 1 1 - 150 # VenturaCo 65 SoCal_1 440.0125 +5 High - - - Color 1 1 - 32 # BM SoCal 1 66 SoCal 440.0125 +5 High - - - Color 1 1 - 31 # BM SoCal 67 CAL_1 440.0125 +5 High - - - Color 1 1 - 20 # BM CAL 1 68 California 440.0125 +5 High - - - Color 1 1 - 44 # CA 3106 69 Southwest_Region 440.0125 +5 High - - - Color 1 1 - 133 # Southwest 70 Call_Zone_6 440.0125 +5 High - - - Color 1 1 - 48 # Call Zone 6 71 SNARS 440.0125 +5 High - - - Color 1 1 - 30 # BM SNARS 72 North_America 440.0125 +5 High - - - Color 1 1 - 25 # BM North AM 73 Worldwide 440.0125 +5 High - - - Color 1 1 - 42 # BM Worldwide 74 Bridge 440.0125 +5 High - - - Color 1 1 - 43 # BRIDGE 75 Hytera 440.0125 +5 High - - - Color 1 1 - 21 # BM HyteraUSA 76 TAC_310 440.0125 +5 High - - - Color 1 1 - 136 # BM TAC 310 77 TAC_311 440.0125 +5 High - - - Color 1 1 - 137 # TAC 311 78 TAC_312 440.0125 +5 High - - - Color 1 1 - 138 # TAC 312 79 US_Emergency 440.0125 +5 High - - - Color 1 1 - 64 # Emergency 80 Parrot 440.0125 +5 High - - - Color 1 1 - 28 # BM PARROT 81 Channel_5 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 82 SAN_JOSE 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 83 Local 440.0375 +5 High - - - Color 1 2 - 83 # Local 84 NorCal_1 440.0375 +5 High - - - Color 1 2 - 24 # BM NorCal 1 85 NorCal 440.0375 +5 High - - - Color 1 2 - 23 # BM NorCal 86 Reflector_CQ 440.0375 +5 High - - - Color 1 2 - 29 # BM REF-TG9 87 BM_5150 440.0375 +5 High - - - Color 1 2 - 18 # BM 5150 88 Mountain_West 440.0375 +5 High - - - Color 1 1 - 22 # BM Mt West 89 Ventura_County 440.0375 +5 High - - - Color 1 1 - 150 # VenturaCo 90 SoCal_1 440.0375 +5 High - - - Color 1 1 - 32 # BM SoCal 1 91 SoCal 440.0375 +5 High - - - Color 1 1 - 31 # BM SoCal 92 CAL_1 440.0375 +5 High - - - Color 1 1 - 46 # CAL 1 93 California 440.0375 +5 High - - - Color 1 1 - 44 # CA 3106 94 Southwest_Region 440.0375 +5 High - - - Color 1 1 - 133 # Southwest 95 Call_Zone_6 440.0375 +5 High - - - Color 1 1 - 48 # Call Zone 6 96 SNARS 440.0375 +5 High - - - Color 1 1 - 30 # BM SNARS 97 North_America 440.0375 +5 High - - - Color 1 1 - 25 # BM North AM 98 Worldwide 440.0375 +5 High - - - Color 1 1 - 42 # BM Worldwide 99 Bridge 440.0375 +5 High - - - Color 1 1 - 43 # BRIDGE 100 Hytera 440.0375 +5 High - - - Color 1 1 - 21 # BM HyteraUSA 101 TAC_310 440.0375 +5 High - - - Color 1 1 - 136 # BM TAC 310 102 TAC_311 440.0375 +5 High - - - Color 1 1 - 137 # TAC 311 103 TAC_312 440.0375 +5 High - - - Color 1 1 - 138 # TAC 312 104 US_Emergency 440.0375 +5 High - - - Color 1 1 - 64 # Emergency 105 Parrot 440.0375 +5 High - - - Color 1 1 - 28 # BM PARROT 106 Channel_6 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 107 FREMONT 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 108 Local 440.125 +5 High - - - Color 3 2 - 83 # Local 109 NorCal_1 440.125 +5 High - - - Color 3 2 - 24 # BM NorCal 1 110 NorCal 440.125 +5 High - - - Color 3 2 - 23 # BM NorCal 111 Reflector_CQ 440.125 +5 High - - - Color 3 2 - 29 # BM REF-TG9 112 BM_5150 440.125 +5 High - - - Color 3 2 - 18 # BM 5150 113 Mountain_West 440.125 +5 High - - - Color 3 1 - 22 # BM Mt West 114 Ventura_County 440.125 +5 High - - - Color 3 1 - 150 # VenturaCo 115 SoCal_1 440.125 +5 High - - - Color 3 1 - 32 # BM SoCal 1 116 SoCal 440.125 +5 High - - - Color 3 1 - 31 # BM SoCal 117 CAL_1 440.125 +5 High - - - Color 3 1 - 20 # BM CAL 1 118 California 440.125 +5 High - - - Color 3 1 - 44 # CA 3106 119 Southwest_Region 440.125 +5 High - - - Color 3 1 - 133 # Southwest 120 Call_Zone_6 440.125 +5 High - - - Color 3 1 - 48 # Call Zone 6 121 SNARS 440.125 +5 High - - - Color 3 1 - 30 # BM SNARS 122 North_America 440.125 +5 High - - - Color 3 1 - 25 # BM North AM 123 Worldwide 440.125 +5 High - - - Color 3 1 - 42 # BM Worldwide 124 Bridge 440.125 +5 High - - - Color 3 1 - 43 # BRIDGE 125 Hytera 440.125 +5 High - - - Color 3 1 - 21 # BM HyteraUSA 126 TAC_310 440.125 +5 High - - - Color 3 1 - 136 # BM TAC 310 127 TAC_311 440.125 +5 High - - - Color 3 1 - 137 # TAC 311 128 TAC_312 440.125 +5 High - - - Color 3 1 - 138 # TAC 312 129 US_Emergency 440.125 +5 High - - - Color 3 1 - 64 # Emergency 130 Parrot 440.125 +5 High - - - Color 3 1 - 28 # BM PARROT 131 Channel_7 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 132 PITSBURG 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 133 Local 440.1375 +5 High - - - Color 2 2 - 83 # Local 134 NorCal_1 440.1375 +5 High - - - Color 2 2 - 24 # BM NorCal 1 135 NorCal 440.1375 +5 High - - - Color 2 2 - 24 # BM NorCal 1 136 Reflector_CQ 440.1375 +5 High - - - Color 2 2 - 29 # BM REF-TG9 137 BM_5150 440.1375 +5 High - - - Color 2 2 - 18 # BM 5150 138 Mountain_West 440.1375 +5 High - - - Color 2 1 - 22 # BM Mt West 139 Ventura_County 440.1375 +5 High - - - Color 2 1 - 150 # VenturaCo 140 SoCal_1 440.1375 +5 High - - - Color 2 1 - 32 # BM SoCal 1 141 SoCal 440.1375 +5 High - - - Color 2 1 - 31 # BM SoCal 142 CAL_1 440.1375 +5 High - - - Color 2 1 - 20 # BM CAL 1 143 California 440.1375 +5 High - - - Color 2 1 - 44 # CA 3106 144 Southwest_Region 440.1375 +5 High - - - Color 2 1 - 133 # Southwest 145 Call_Zone_6 440.1375 +5 High - - - Color 2 1 - 48 # Call Zone 6 146 SNARS 440.1375 +5 High - - - Color 2 1 - 30 # BM SNARS 147 North_America 440.1375 +5 High - - - Color 2 1 - 25 # BM North AM 148 Worldwide 440.1375 +5 High - - - Color 2 1 - 42 # BM Worldwide 149 Bridge 440.1375 +5 High - - - Color 2 1 - 43 # BRIDGE 150 Hytera 440.1375 +5 High - - - Color 2 1 - 21 # BM HyteraUSA 151 TAC_310 440.1375 +5 High - - - Color 2 1 - 136 # BM TAC 310 152 TAC_311 440.1375 +5 High - - - Color 2 1 - 137 # TAC 311 153 TAC_312 440.1375 +5 High - - - Color 2 1 - 138 # TAC 312 154 US_Emergency 440.1375 +5 High - - - Color 2 1 - 64 # Emergency 155 Parrot 440.1375 +5 High - - - Color 2 1 - 28 # BM PARROT 156 Channel_8 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 157 MT_OSO 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 158 Local 440.1875 +5 High - - - Color 1 2 - 83 # Local 159 NorCal_1 440.1875 +5 High - - - Color 1 2 - 24 # BM NorCal 1 160 NorCal 440.1875 +5 High - - - Color 1 2 - 23 # BM NorCal 161 Reflector_CQ 440.1875 +5 High - - - Color 1 2 - 29 # BM REF-TG9 162 BM_5150 440.1875 +5 High - - - Color 1 2 - 18 # BM 5150 163 Mountain_West 440.1875 +5 High - - - Color 1 1 - 22 # BM Mt West 164 Ventura_County 440.1875 +5 High - - - Color 1 1 - 150 # VenturaCo 165 SoCal_1 440.1875 +5 High - - - Color 1 1 - 32 # BM SoCal 1 166 SoCal 440.1875 +5 High - - - Color 1 1 - 31 # BM SoCal 167 CAL_1 440.1875 +5 High - - - Color 1 1 - 20 # BM CAL 1 168 California 440.1875 +5 High - - - Color 1 1 - 44 # CA 3106 169 Southwest_Region 440.1875 +5 High - - - Color 1 1 - 133 # Southwest 170 Call_Zone_6 440.1875 +5 High - - - Color 1 1 - 48 # Call Zone 6 171 SNARS 440.1875 +5 High - - - Color 1 1 - 30 # BM SNARS 172 North_America 440.1875 +5 High - - - Color 1 1 - 25 # BM North AM 173 Worldwide 440.1875 +5 High - - - Color 1 1 - 42 # BM Worldwide 174 Bridge 440.1875 +5 High - - - Color 1 1 - 43 # BRIDGE 175 Hytera 440.1875 +5 High - - - Color 1 1 - 21 # BM HyteraUSA 176 TAC_310 440.1875 +5 High - - - Color 1 1 - 136 # BM TAC 310 177 TAC_311 440.1875 +5 High - - - Color 1 1 - 137 # TAC 311 178 TAC_312 440.1875 +5 High - - - Color 1 1 - 138 # TAC 312 179 US_Emergency 440.1875 +5 High - - - Color 1 1 - 64 # Emergency 180 Parrot 440.1875 +5 High - - - Color 1 1 - 28 # BM PARROT 181 Channel_9 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 182 WALNUT_CREEK 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 183 Local 440.2125 +5 High - - - Color 1 2 - 83 # Local 184 NorCal_1 440.2125 +5 High - - - Color 1 2 - 24 # BM NorCal 1 185 NorCal 440.2125 +5 High - - - Color 1 2 - 23 # BM NorCal 186 Reflector_CQ 440.2125 +5 High - - - Color 1 2 - 29 # BM REF-TG9 187 BM_5150 440.2125 +5 High - - - Color 1 2 - 18 # BM 5150 188 Mountain_West 440.2125 +5 High - - - Color 1 1 - 22 # BM Mt West 189 Ventura_County 440.2125 +5 High - - - Color 1 1 - 150 # VenturaCo 190 SoCal_1 440.2125 +5 High - - - Color 1 1 - 32 # BM SoCal 1 191 SoCal 440.2125 +5 High - - - Color 1 1 - 31 # BM SoCal 192 CAL_1 440.2125 +5 High - - - Color 1 1 - 20 # BM CAL 1 193 California 440.2125 +5 High - - - Color 1 1 - 44 # CA 3106 194 Southwest_Region 440.2125 +5 High - - - Color 1 1 - 133 # Southwest 195 Call_Zone_6 440.2125 +5 High - - - Color 1 1 - 48 # Call Zone 6 196 SNARS 440.2125 +5 High - - - Color 1 1 - 30 # BM SNARS 197 North_America 440.2125 +5 High - - - Color 1 1 - 25 # BM North AM 198 Worldwide 440.2125 +5 High - - - Color 1 1 - 42 # BM Worldwide 199 Bridge 440.2125 +5 High - - - Color 1 1 - 43 # BRIDGE 200 Hytera 440.2125 +5 High - - - Color 1 1 - 21 # BM HyteraUSA 201 TAC_310 440.2125 +5 High - - - Color 1 1 - 136 # BM TAC 310 202 TAC_311 440.2125 +5 High - - - Color 1 1 - 137 # TAC 311 203 TAC_312 440.2125 +5 High - - - Color 1 1 - 138 # TAC 312 204 US_Emergency 440.2125 +5 High - - - Color 1 1 - 64 # Emergency 205 Parrot 440.2125 +5 High - - - Color 1 1 - 28 # BM PARROT 206 Channel10 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 207 BODEGA_BAY 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 208 Local 440.325 +5 High - - - Color 1 2 - 83 # Local 209 NorCal_1 440.325 +5 High - - - Color 1 2 - 24 # BM NorCal 1 210 NorCal 440.325 +5 High - - - Color 1 2 - 23 # BM NorCal 211 Reflector_CQ 440.325 +5 High - - - Color 1 2 - 29 # BM REF-TG9 212 BM_5150 440.325 +5 High - - - Color 1 2 - 18 # BM 5150 213 Mountain_West 440.325 +5 High - - - Color 1 1 - 22 # BM Mt West 214 Ventura_County 440.325 +5 High - - - Color 1 1 - 150 # VenturaCo 215 SoCal_1 440.325 +5 High - - - Color 1 1 - 32 # BM SoCal 1 216 SoCal 440.325 +5 High - - - Color 1 1 - 31 # BM SoCal 217 CAL_1 440.325 +5 High - - - Color 1 1 - 20 # BM CAL 1 218 California 440.325 +5 High - - - Color 1 1 - 44 # CA 3106 219 Southwest_Region 440.325 +5 High - - - Color 1 1 - 133 # Southwest 220 Call_Zone_6 440.325 +5 High - - - Color 1 1 - 48 # Call Zone 6 221 SNARS 440.325 +5 High - - - Color 1 1 - 30 # BM SNARS 222 North_America 440.325 +5 High - - - Color 1 1 - 25 # BM North AM 223 Worldwide 440.325 +5 High - - - Color 1 1 - 42 # BM Worldwide 224 Bridge 440.325 +5 High - - - Color 1 1 - 43 # BRIDGE 225 Hytera 440.325 +5 High - - - Color 1 1 - 21 # BM HyteraUSA 226 TAC_310 440.325 +5 High - - - Color 1 1 - 136 # BM TAC 310 227 TAC_311 440.325 +5 High - - - Color 1 1 - 137 # TAC 311 228 TAC_312 440.325 +5 High - - - Color 1 1 - 138 # TAC 312 229 US_Emergency 440.325 +5 High - - - Color 1 1 - 64 # Emergency 230 Parrot 440.325 +5 High - - - Color 1 1 - 28 # BM PARROT 231 Channel11 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 232 SANTA_MARIA 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 233 Local 440.425 +5 High - - - Color 2 2 - 83 # Local 234 NorCal_1 440.425 +5 High - - - Color 2 2 - 24 # BM NorCal 1 235 NorCal 440.425 +5 High - - - Color 2 2 - 23 # BM NorCal 236 Reflector_CQ 440.425 +5 High - - - Color 2 2 - 29 # BM REF-TG9 237 BM_5150 440.425 +5 High - - - Color 2 2 - 18 # BM 5150 238 Mountain_West 440.425 +5 High - - - Color 2 1 - 22 # BM Mt West 239 Ventura_County 440.425 +5 High - - - Color 2 1 - 150 # VenturaCo 240 SoCal_1 440.425 +5 High - - - Color 2 1 - 32 # BM SoCal 1 241 SoCal 440.425 +5 High - - - Color 2 1 - 31 # BM SoCal 242 CAL_1 440.425 +5 High - - - Color 2 1 - 20 # BM CAL 1 243 California 440.425 +5 High - - - Color 2 1 - 44 # CA 3106 244 Southwest_Region 440.425 +5 High - - - Color 2 1 - 133 # Southwest 245 Call_Zone_6 440.425 +5 High - - - Color 2 1 - 48 # Call Zone 6 246 SNARS 440.425 +5 High - - - Color 2 1 - 30 # BM SNARS 247 North_America 440.425 +5 High - - - Color 2 1 - 25 # BM North AM 248 Worldwide 440.425 +5 High - - - Color 2 1 - 42 # BM Worldwide 249 Bridge 440.425 +5 High - - - Color 2 1 - 43 # BRIDGE 250 Hytera 440.425 +5 High - - - Color 2 1 - 21 # BM HyteraUSA 251 TAC_310 440.425 +5 High - - - Color 2 1 - 136 # BM TAC 310 252 TAC_311 440.425 +5 High - - - Color 2 1 - 137 # TAC 311 253 TAC_312 440.425 +5 High - - - Color 2 1 - 138 # TAC 312 254 US_Emergency 440.425 +5 High - - - Color 2 1 - 64 # Emergency 255 Parrot 440.425 +5 High - - - Color 2 1 - 28 # BM PARROT 256 Channel12 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 257 DAILY_CITY 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 258 Local 440.500 +5 High - - - Color 1 2 - 83 # Local 259 NorCal_1 440.500 +5 High - - - Color 1 2 - 24 # BM NorCal 1 260 NorCal 440.500 +5 High - - - Color 1 2 - 23 # BM NorCal 261 Reflector_CQ 440.500 +5 High - - - Color 1 2 - 29 # BM REF-TG9 262 BM_5150 440.500 +5 High - - - Color 1 2 - 18 # BM 5150 263 Mountain_West 440.500 +5 High - - - Color 1 1 - 22 # BM Mt West 264 Ventura_County 440.500 +5 High - - - Color 1 1 - 150 # VenturaCo 265 SoCal_1 440.500 +5 High - - - Color 1 1 - 32 # BM SoCal 1 266 SoCal 440.500 +5 High - - - Color 1 1 - 31 # BM SoCal 267 CAL_1 440.500 +5 High - - - Color 1 1 - 20 # BM CAL 1 268 California 440.500 +5 High - - - Color 1 1 - 44 # CA 3106 269 Southwest_Region 440.500 +5 High - - - Color 1 1 - 133 # Southwest 270 Call_Zone_6 440.500 +5 High - - - Color 1 1 - 48 # Call Zone 6 271 SNARS 440.500 +5 High - - - Color 1 1 - 30 # BM SNARS 272 North_America 440.500 +5 High - - - Color 1 1 - 25 # BM North AM 273 Worldwide 440.500 +5 High - - - Color 1 1 - 42 # BM Worldwide 274 Bridge 440.500 +5 High - - - Color 1 1 - 43 # BRIDGE 275 Hytera 440.500 +5 High - - - Color 1 1 - 21 # BM HyteraUSA 276 TAC_310 440.500 +5 High - - - Color 1 1 - 136 # BM TAC 310 277 TAC_311 440.500 +5 High - - - Color 1 1 - 137 # TAC 311 278 TAC_312 440.500 +5 High - - - Color 1 1 - 138 # TAC 312 279 US_Emergency 440.500 +5 Low - - - Color 0 1 - 64 # Emergency 280 Parrot 440.500 +5 High - - - Color 1 1 - 28 # BM PARROT 281 Channel13 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 282 NOVATO 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 283 Local 440.650 +5 High - - - Color 2 2 - 83 # Local 284 NorCal_1 440.650 +5 High - - - Color 2 2 - 24 # BM NorCal 1 285 NorCal 440.650 +5 High - - - Color 2 2 - 23 # BM NorCal 286 Reflector_CQ 440.650 +5 High - - - Color 2 2 - 29 # BM REF-TG9 287 BM_5150 440.650 +5 High - - - Color 2 2 - 18 # BM 5150 288 Mountain_West 440.650 +5 High - - - Color 2 1 - 22 # BM Mt West 289 Ventura_County 440.650 +5 High - - - Color 2 1 - 150 # VenturaCo 290 SoCal_1 440.650 +5 High - - - Color 2 1 - 32 # BM SoCal 1 291 SoCal 440.650 +5 High - - - Color 2 1 - 31 # BM SoCal 292 CAL_1 440.650 +5 High - - - Color 2 1 - 20 # BM CAL 1 293 California 440.650 +5 High - - - Color 2 1 - 44 # CA 3106 294 Southwest_Region 440.650 +5 High - - - Color 2 1 - 133 # Southwest 295 Call_Zone_6 440.650 +5 High - - - Color 2 1 - 48 # Call Zone 6 296 SNARS 440.650 +5 High - - - Color 2 1 - 30 # BM SNARS 297 North_America 440.650 +5 High - - - Color 2 1 - 25 # BM North AM 298 Worldwide 440.650 +5 High - - - Color 2 1 - 42 # BM Worldwide 299 Bridge 440.650 +5 High - - - Color 2 1 - 43 # BRIDGE 300 Hytera 440.650 +5 High - - - Color 2 1 - 21 # BM HyteraUSA 301 TAC_310 440.650 +5 High - - - Color 2 1 - 136 # BM TAC 310 302 TAC_311 440.650 +5 High - - - Color 2 1 - 137 # TAC 311 303 TAC_312 440.650 +5 High - - - Color 2 1 - 138 # TAC 312 304 US_Emergency 440.650 +5 High - - - Color 2 1 - 64 # Emergency 305 Parrot 440.650 +5 High - - - Color 2 1 - 28 # BM PARROT 306 Channel14 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 307 LIVERMORE_U 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 308 Local 441.825 +5 High - - - Color 1 2 - 83 # Local 309 NorCal_1 441.825 +5 High - - - Color 1 2 - 24 # BM NorCal 1 310 NorCal 441.825 +5 High - - - Color 1 2 - 23 # BM NorCal 311 Reflector_CQ 441.825 +5 High - - - Color 1 2 - 29 # BM REF-TG9 312 BM_5150 441.825 +5 High - - - Color 1 2 - 18 # BM 5150 313 Mountain_West 441.825 +5 High - - - Color 1 1 - 22 # BM Mt West 314 Ventura_County 441.825 +5 High - - - Color 1 1 - 150 # VenturaCo 315 SoCal_1 441.825 +5 High - - - Color 1 1 - 32 # BM SoCal 1 316 SoCal 441.825 +5 High - - - Color 1 1 - 31 # BM SoCal 317 CAL_1 441.825 +5 High - - - Color 1 1 - 20 # BM CAL 1 318 California 441.825 +5 High - - - Color 1 1 - 44 # CA 3106 319 Southwest_Region 441.825 +5 High - - - Color 1 1 - 133 # Southwest 320 Call_Zone_6 441.825 +5 High - - - Color 1 1 - 48 # Call Zone 6 321 SNARS 441.825 +5 High - - - Color 1 1 - 30 # BM SNARS 322 North_America 441.825 +5 High - - - Color 1 1 - 25 # BM North AM 323 Worldwide 441.825 +5 High - - - Color 1 1 - 42 # BM Worldwide 324 Bridge 441.825 +5 High - - - Color 1 1 - 43 # BRIDGE 325 Hytera 441.825 +5 High - - - Color 1 1 - 21 # BM HyteraUSA 326 TAC_310 441.825 +5 High - - - Color 1 1 - 136 # BM TAC 310 327 TAC_311 441.825 +5 High - - - Color 1 1 - 137 # TAC 311 328 TAC_312 441.825 +5 High - - - Color 1 1 - 138 # TAC 312 329 US_Emergency 441.825 +5 High - - - Color 1 1 - 64 # Emergency 330 Parrot 441.825 +5 High - - - Color 1 1 - 28 # BM PARROT 331 Channel15 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 332 PALO_ALTO 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 333 Local 441.850 +5 High - - - Color 1 2 - 83 # Local 334 NorCal_1 441.850 +5 High - - - Color 1 2 - 24 # BM NorCal 1 335 NorCal 441.850 +5 High - - - Color 1 2 - 23 # BM NorCal 336 Reflector_CQ 441.850 +5 High - - - Color 1 2 - 1 # BLANK 337 BM_5150 441.850 +5 High - - - Color 1 2 - 18 # BM 5150 338 Mountain_West 441.850 +5 High - - - Color 1 1 - 22 # BM Mt West 339 Ventura_County 441.850 +5 High - - - Color 1 1 - 150 # VenturaCo 340 SoCal_1 441.850 +5 High - - - Color 1 1 - 32 # BM SoCal 1 341 SoCal 441.850 +5 High - - - Color 1 1 - 31 # BM SoCal 342 CAL_1 441.850 +5 High - - - Color 1 1 - 20 # BM CAL 1 343 California 441.850 +5 High - - - Color 1 1 - 44 # CA 3106 344 Southwest_Region 441.850 +5 High - - - Color 1 1 - 133 # Southwest 345 Call_Zone_6 441.850 +5 High - - - Color 1 1 - 48 # Call Zone 6 346 SNARS 441.850 +5 High - - - Color 1 1 - 30 # BM SNARS 347 North_America 441.850 +5 High - - - Color 1 1 - 25 # BM North AM 348 Worldwide 441.850 +5 High - - - Color 1 1 - 42 # BM Worldwide 349 Bridge 441.850 +5 High - - - Color 1 1 - 43 # BRIDGE 350 Hytera 441.850 +5 High - - - Color 1 1 - 21 # BM HyteraUSA 351 TAC_310 441.850 +5 High - - - Color 1 1 - 136 # BM TAC 310 352 TAC_311 441.850 +5 High - - - Color 1 1 - 137 # TAC 311 353 TAC_312 441.850 +5 High - - - Color 1 1 - 138 # TAC 312 354 US_Emergency 441.850 +5 High - - - Color 1 1 - 64 # Emergency 355 Parrot 441.850 +5 High - - - Color 1 1 - 28 # BM PARROT 356 Channel16 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 357 GUALALA 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 358 Local 442.075 +5 High - - - Color 1 2 - 83 # Local 359 NorCal_1 442.075 +5 High - - - Color 1 2 - 24 # BM NorCal 1 360 NorCal 442.075 +5 High - - - Color 1 2 - 23 # BM NorCal 361 Reflector_CQ 442.075 +5 High - - - Color 1 2 - 29 # BM REF-TG9 362 BM_5150 442.075 +5 High - - - Color 1 2 - 18 # BM 5150 363 Mountain_West 442.075 +5 High - - - Color 1 1 - 22 # BM Mt West 364 Ventura_County 442.075 +5 High - - - Color 1 1 - 150 # VenturaCo 365 SoCal_1 442.075 +5 High - - - Color 1 1 - 32 # BM SoCal 1 366 SoCal 442.075 +5 High - - - Color 1 1 - 31 # BM SoCal 367 CAL_1 442.075 +5 High - - - Color 1 1 - 20 # BM CAL 1 368 California 442.075 +5 High - - - Color 1 1 - 44 # CA 3106 369 Southwest_Region 442.075 +5 High - - - Color 1 1 - 133 # Southwest 370 Call_Zone_6 442.075 +5 High - - - Color 1 1 - 48 # Call Zone 6 371 SNARS 442.075 +5 High - - - Color 1 1 - 30 # BM SNARS 372 North_America 442.075 +5 High - - - Color 1 1 - 25 # BM North AM 373 Worldwide 442.075 +5 High - - - Color 1 1 - 42 # BM Worldwide 374 Bridge 442.075 +5 High - - - Color 1 1 - 43 # BRIDGE 375 Hytera 442.075 +5 High - - - Color 1 1 - 21 # BM HyteraUSA 376 TAC_310 442.075 +5 High - - - Color 1 1 - 136 # BM TAC 310 377 TAC_311 442.075 +5 High - - - Color 1 1 - 137 # TAC 311 378 TAC_312 442.075 +5 High - - - Color 1 1 - 138 # TAC 312 379 US_Emergency 442.075 +5 High - - - Color 1 1 - 64 # Emergency 380 Parrot 442.075 +5 High - - - Color 1 1 - 28 # BM PARROT 381 Channel17 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 382 SANTA_ROSA 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 383 Local 442.1125 +5 High - - - Color 1 2 - 83 # Local 384 NorCal_1 442.1125 +5 High - - - Color 1 2 - 24 # BM NorCal 1 385 NorCal 442.1125 +5 High - - - Color 1 2 - 23 # BM NorCal 386 Reflector_CQ 442.1125 +5 High - - - Color 1 2 - 29 # BM REF-TG9 387 BM_5150 442.1125 +5 High - - - Color 1 2 - 18 # BM 5150 388 Mountain_West 442.1125 +5 High - - - Color 1 1 - 22 # BM Mt West 389 Ventura_County 442.1125 +5 High - - - Color 1 1 - 150 # VenturaCo 390 SoCal_1 442.1125 +5 High - - - Color 1 1 - 32 # BM SoCal 1 391 SoCal 442.1125 +5 High - - - Color 1 1 - 31 # BM SoCal 392 CAL_1 442.1125 +5 High - - - Color 1 1 - 20 # BM CAL 1 393 California 442.1125 +5 High - - - Color 1 1 - 44 # CA 3106 394 Southwest_Region 442.1125 +5 High - - - Color 1 1 - 133 # Southwest 395 Call_Zone_6 442.1125 +5 High - - - Color 1 1 - 48 # Call Zone 6 396 SNARS 442.1125 +5 High - - - Color 1 1 - 30 # BM SNARS 397 North_America 442.1125 +5 High - - - Color 1 1 - 25 # BM North AM 398 Worldwide 442.1125 +5 High - - - Color 1 1 - 42 # BM Worldwide 399 Bridge 442.1125 +5 High - - - Color 1 1 - 43 # BRIDGE 400 Hytera 442.1125 +5 High - - - Color 1 1 - 21 # BM HyteraUSA 401 TAC_310 442.1125 +5 High - - - Color 1 1 - 136 # BM TAC 310 402 TAC_311 442.1125 +5 High - - - Color 1 1 - 137 # TAC 311 403 TAC_312 442.1125 +5 High - - - Color 1 1 - 138 # TAC 312 404 US_Emergency 442.1125 +5 High - - - Color 1 1 - 64 # Emergency 405 Parrot 442.1125 +5 High - - - Color 1 1 - 28 # BM PARROT 406 Channel18 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 407 MODESTO 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 408 Local 442.175 +5 High - - - Color 1 2 - 83 # Local 409 NorCal_1 442.175 +5 High - - - Color 1 2 - 24 # BM NorCal 1 410 NorCal 442.175 +5 High - - - Color 1 2 - 23 # BM NorCal 411 Reflector_CQ 442.175 +5 High - - - Color 1 2 - 29 # BM REF-TG9 412 BM_5150 442.175 +5 High - - - Color 1 2 - 18 # BM 5150 413 Mountain_West 442.175 +5 High - - - Color 1 1 - 22 # BM Mt West 414 Ventura_County 442.175 +5 High - - - Color 1 1 - 150 # VenturaCo 415 SoCal_1 442.175 +5 High - - - Color 1 1 - 32 # BM SoCal 1 416 SoCal 442.175 +5 High - - - Color 1 1 - 31 # BM SoCal 417 CAL_1 442.175 +5 High - - - Color 1 1 - 20 # BM CAL 1 418 California 442.175 +5 High - - - Color 1 1 - 44 # CA 3106 419 Southwest_Region 442.175 +5 High - - - Color 1 1 - 133 # Southwest 420 Call_Zone_6 442.175 +5 High - - - Color 1 1 - 48 # Call Zone 6 421 SNARS 442.175 +5 High - - - Color 1 1 - 30 # BM SNARS 422 North_America 442.175 +5 High - - - Color 1 1 - 25 # BM North AM 423 Worldwide 442.175 +5 High - - - Color 1 1 - 42 # BM Worldwide 424 Bridge 442.175 +5 High - - - Color 1 1 - 43 # BRIDGE 425 Hytera 442.175 +5 High - - - Color 1 1 - 21 # BM HyteraUSA 426 TAC_310 442.175 +5 High - - - Color 1 1 - 136 # BM TAC 310 427 TAC_311 442.175 +5 High - - - Color 1 1 - 137 # TAC 311 428 TAC_312 442.175 +5 High - - - Color 1 1 - 138 # TAC 312 429 US_Emergency 442.175 +5 High - - - Color 1 1 - 64 # Emergency 430 Parrot 442.175 +5 High - - - Color 1 1 - 28 # BM PARROT 431 Channel19 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 432 TUOLUMNE 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 433 Local 442.475 +5 High - - - Color 1 2 - 83 # Local 434 NorCal_1 442.475 +5 High - - - Color 1 2 - 24 # BM NorCal 1 435 NorCal 442.475 +5 High - - - Color 1 2 - 23 # BM NorCal 436 Reflector_CQ 442.475 +5 High - - - Color 1 2 - 29 # BM REF-TG9 437 BM_5150 442.475 +5 High - - - Color 1 2 - 18 # BM 5150 438 Mountain_West 442.475 +5 High - - - Color 1 1 - 22 # BM Mt West 439 Ventura_County 442.475 +5 High - - - Color 1 1 - 150 # VenturaCo 440 SoCal_1 442.475 +5 High - - - Color 1 1 - 32 # BM SoCal 1 441 SoCal 442.475 +5 High - - - Color 1 1 - 31 # BM SoCal 442 CAL_1 442.475 +5 High - - - Color 1 1 - 20 # BM CAL 1 443 California 442.475 +5 High - - - Color 1 1 - 44 # CA 3106 444 Southwest_Region 442.475 +5 High - - - Color 1 1 - 133 # Southwest 445 Call_Zone_6 442.475 +5 High - - - Color 1 1 - 48 # Call Zone 6 446 SNARS 442.475 +5 High - - - Color 1 1 - 30 # BM SNARS 447 North_America 442.475 +5 High - - - Color 1 1 - 25 # BM North AM 448 Worldwide 442.475 +5 High - - - Color 1 1 - 42 # BM Worldwide 449 Bridge 442.475 +5 High - - - Color 1 1 - 43 # BRIDGE 450 Hytera 442.475 +5 High - - - Color 1 1 - 21 # BM HyteraUSA 451 TAC_310 442.475 +5 High - - - Color 1 1 - 136 # BM TAC 310 452 TAC_311 442.475 +5 High - - - Color 1 1 - 137 # TAC 311 453 TAC_312 442.475 +5 High - - - Color 1 1 - 138 # TAC 312 454 US_Emergency 442.475 +5 High - - - Color 1 1 - 64 # Emergency 455 Parrot 442.475 +5 High - - - Color 1 1 - 28 # BM PARROT 456 Channel20 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 457 S_LAKE_TAHOE 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 458 Local 442.475 +5 High - - - Color 3 2 - 83 # Local 459 NorCal_1 442.475 +5 High - - - Color 3 2 - 24 # BM NorCal 1 460 NorCal 442.475 +5 High - - - Color 3 2 - 23 # BM NorCal 461 Reflector_CQ 442.475 +5 High - - - Color 3 2 - 29 # BM REF-TG9 462 BM_5150 442.475 +5 High - - - Color 3 2 - 18 # BM 5150 463 Mountain_West 442.475 +5 High - - - Color 3 1 - 22 # BM Mt West 464 Ventura_County 442.475 +5 High - - - Color 3 1 - 150 # VenturaCo 465 SoCal_1 442.475 +5 High - - - Color 3 1 - 32 # BM SoCal 1 466 SoCal 442.475 +5 High - - - Color 3 1 - 31 # BM SoCal 467 CAL_1 442.475 +5 High - - - Color 3 1 - 20 # BM CAL 1 468 California 442.475 +5 High - - - Color 3 1 - 44 # CA 3106 469 Southwest_Region 442.475 +5 High - - - Color 3 1 - 133 # Southwest 470 Call_Zone_6 442.475 +5 High - - - Color 3 1 - 48 # Call Zone 6 471 SNARS 442.475 +5 High - - - Color 3 1 - 30 # BM SNARS 472 North_America 442.475 +5 High - - - Color 3 1 - 25 # BM North AM 473 Worldwide 442.475 +5 High - - - Color 3 1 - 42 # BM Worldwide 474 Bridge 442.475 +5 High - - - Color 3 1 - 43 # BRIDGE 475 Hytera 442.475 +5 High - - - Color 3 1 - 21 # BM HyteraUSA 476 TAC_310 442.475 +5 High - - - Color 3 1 - 136 # BM TAC 310 477 TAC_311 442.475 +5 High - - - Color 3 1 - 137 # TAC 311 478 TAC_312 442.475 +5 High - - - Color 3 1 - 138 # TAC 312 479 US_Emergency 442.475 +5 High - - - Color 3 1 - 64 # Emergency 480 Parrot 442.475 +5 High - - - Color 3 1 - 28 # BM PARROT 481 Channel21 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 482 SANTA_CRUZ 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 483 Local 442.5375 +5 High - - - Color 1 2 - 83 # Local 484 NorCal_1 442.5375 +5 High - - - Color 1 2 - 24 # BM NorCal 1 485 NorCal 442.5375 +5 High - - - Color 1 2 - 23 # BM NorCal 486 Reflector_CQ 442.5375 +5 High - - - Color 1 2 - 29 # BM REF-TG9 487 BM_5150 442.5375 +5 High - - - Color 1 2 - 18 # BM 5150 488 Mountain_West 442.5375 +5 High - - - Color 1 1 - 22 # BM Mt West 489 Ventura_County 442.5375 +5 High - - - Color 1 1 - 150 # VenturaCo 490 SoCal_1 442.5375 +5 High - - - Color 1 1 - 32 # BM SoCal 1 491 SoCal 442.5375 +5 High - - - Color 1 1 - 31 # BM SoCal 492 CAL_1 442.5375 +5 High - - - Color 1 1 - 20 # BM CAL 1 493 California 442.5375 +5 High - - - Color 1 1 - 44 # CA 3106 494 Southwest_Region 442.5375 +5 High - - - Color 1 1 - 133 # Southwest 495 Call_Zone_6 442.5375 +5 High - - - Color 1 1 - 48 # Call Zone 6 496 SNARS 442.5375 +5 High - - - Color 1 1 - 30 # BM SNARS 497 North_America 442.5375 +5 High - - - Color 1 1 - 25 # BM North AM 498 Worldwide 442.5375 +5 High - - - Color 1 1 - 42 # BM Worldwide 499 Bridge 442.5375 +5 High - - - Color 1 1 - 43 # BRIDGE 500 Hytera 442.5375 +5 High - - - Color 1 1 - 21 # BM HyteraUSA 501 TAC_310 442.5375 +5 High - - - Color 1 1 - 136 # BM TAC 310 502 TAC_311 442.5375 +5 High - - - Color 1 1 - 137 # TAC 311 503 TAC_312 442.5375 +5 High - - - Color 1 1 - 138 # TAC 312 504 US_Emergency 442.5375 +5 High - - - Color 1 1 - 64 # Emergency 505 Parrot 442.5375 +5 High - - - Color 1 1 - 28 # BM PARROT 506 Channel22 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 507 NIPONMO 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 508 Local 442.9625 +5 High - - - Color 1 2 - 83 # Local 509 NorCal_1 442.9625 +5 High - - - Color 1 2 - 24 # BM NorCal 1 510 NorCal 442.9625 +5 High - - - Color 1 2 - 23 # BM NorCal 511 Reflector_CQ 442.9625 +5 High - - - Color 1 2 - 29 # BM REF-TG9 512 BM_5150 442.9625 +5 High - - - Color 1 2 - 18 # BM 5150 513 Mountain_West 442.9625 +5 High - - - Color 1 1 - 22 # BM Mt West 514 Ventura_County 442.9625 +5 High - - - Color 1 1 - 150 # VenturaCo 515 SoCal_1 442.9625 +5 High - - - Color 1 1 - 32 # BM SoCal 1 516 SoCal 442.9625 +5 High - - - Color 1 1 - 31 # BM SoCal 517 CAL_1 442.9625 +5 High - - - Color 1 1 - 20 # BM CAL 1 518 California 442.9625 +5 High - - - Color 1 1 - 44 # CA 3106 519 Southwest_Region 442.9625 +5 High - - - Color 1 1 - 133 # Southwest 520 Call_Zone_6 442.9625 +5 High - - - Color 1 1 - 48 # Call Zone 6 521 SNARS 442.9625 +5 High - - - Color 1 1 - 30 # BM SNARS 522 North_America 442.9625 +5 High - - - Color 1 1 - 25 # BM North AM 523 Worldwide 442.9625 +5 High - - - Color 1 1 - 42 # BM Worldwide 524 Bridge 442.9625 +5 High - - - Color 1 1 - 43 # BRIDGE 525 Hytera 442.9625 +5 High - - - Color 1 1 - 21 # BM HyteraUSA 526 TAC_310 442.9625 +5 High - - - Color 1 1 - 136 # BM TAC 310 527 TAC_311 442.9625 +5 High - - - Color 1 1 - 137 # TAC 311 528 TAC_312 442.9625 +5 High - - - Color 1 1 - 138 # TAC 312 529 US_Emergency 442.9625 +5 High - - - Color 1 1 - 64 # Emergency 530 Parrot 442.9625 +5 High - - - Color 1 1 - 28 # BM PARROT 531 Channel23 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 532 SONORA 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 533 Local 442.975 +5 High - - - Color 1 2 - 83 # Local 534 NorCal_1 442.975 +5 High - - - Color 1 2 - 24 # BM NorCal 1 535 NorCal 442.975 +5 High - - - Color 1 2 - 23 # BM NorCal 536 Reflector_CQ 442.975 +5 High - - - Color 1 2 - 29 # BM REF-TG9 537 BM_5150 442.975 +5 High - - - Color 1 2 - 18 # BM 5150 538 Mountain_West 442.975 +5 High - - - Color 1 1 - 22 # BM Mt West 539 Ventura_County 442.975 +5 High - - - Color 1 1 - 150 # VenturaCo 540 SoCal_1 442.975 +5 High - - - Color 1 1 - 32 # BM SoCal 1 541 SoCal 442.975 +5 High - - - Color 1 1 - 31 # BM SoCal 542 CAL_1 442.975 +5 High - - - Color 1 1 - 20 # BM CAL 1 543 California 442.975 +5 High - - - Color 1 1 - 44 # CA 3106 544 Southwest_Region 442.975 +5 High - - - Color 1 1 - 133 # Southwest 545 Call_Zone_6 442.975 +5 High - - - Color 1 1 - 48 # Call Zone 6 546 SNARS 442.975 +5 High - - - Color 1 1 - 30 # BM SNARS 547 North_America 442.975 +5 High - - - Color 1 1 - 25 # BM North AM 548 Worldwide 442.975 +5 High - - - Color 1 1 - 42 # BM Worldwide 549 Bridge 442.975 +5 High - - - Color 1 1 - 43 # BRIDGE 550 Hytera 442.975 +5 High - - - Color 1 1 - 21 # BM HyteraUSA 551 TAC_310 442.975 +5 High - - - Color 1 1 - 136 # BM TAC 310 552 TAC_311 442.975 +5 High - - - Color 1 1 - 137 # TAC 311 553 TAC_312 442.975 +5 High - - - Color 1 1 - 138 # TAC 312 554 US_Emergency 442.975 +5 High - - - Color 1 1 - 64 # Emergency 555 Parrot 442.975 +5 High - - - Color 1 1 - 28 # BM PARROT 556 Channel24 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 557 MILITPAS 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 558 Local 443.400 +5 High - - - Color 1 2 - 83 # Local 559 NorCal_1 443.400 +5 High - - - Color 1 2 - 24 # BM NorCal 1 560 NorCal 443.400 +5 High - - - Color 1 2 - 23 # BM NorCal 561 Reflector_CQ 443.400 +5 High - - - Color 1 2 - 29 # BM REF-TG9 562 BM_5150 443.400 +5 High - - - Color 1 2 - 18 # BM 5150 563 Mountain_West 443.400 +5 High - - - Color 1 1 - 22 # BM Mt West 564 Ventura_County 443.400 +5 High - - - Color 1 1 - 150 # VenturaCo 565 SoCal_1 443.400 +5 High - - - Color 1 1 - 32 # BM SoCal 1 566 SoCal 443.400 +5 High - - - Color 1 1 - 31 # BM SoCal 567 CAL_1 443.400 +5 High - - - Color 1 1 - 20 # BM CAL 1 568 California 443.400 +5 High - - - Color 1 1 - 44 # CA 3106 569 Southwest_Region 443.400 +5 High - - - Color 1 1 - 133 # Southwest 570 Call_Zone_6 443.400 +5 High - - - Color 1 1 - 48 # Call Zone 6 571 SNARS 443.400 +5 High - - - Color 1 1 - 30 # BM SNARS 572 North_America 443.400 +5 High - - - Color 1 1 - 25 # BM North AM 573 Worldwide 443.400 +5 High - - - Color 1 1 - 42 # BM Worldwide 574 Bridge 443.400 +5 High - - - Color 1 1 - 43 # BRIDGE 575 Hytera 443.400 +5 High - - - Color 1 1 - 21 # BM HyteraUSA 576 TAC_310 443.400 +5 High - - - Color 1 1 - 136 # BM TAC 310 577 TAC_311 443.400 +5 High - - - Color 1 1 - 137 # TAC 311 578 TAC_312 443.400 +5 High - - - Color 1 1 - 138 # TAC 312 579 US_Emergency 443.400 +5 High - - - Color 1 1 - 64 # Emergency 580 Parrot 443.400 +5 High - - - Color 1 1 - 28 # BM PARROT 581 Channel25 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 582 OAKLAND 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 583 Local 443.500 +5 High - - - Color 1 2 - 83 # Local 584 NorCal_1 443.500 +5 High - - - Color 1 2 - 24 # BM NorCal 1 585 NorCal 443.500 +5 High - - - Color 1 2 - 23 # BM NorCal 586 Reflector_CQ 443.500 +5 High - - - Color 1 2 - 29 # BM REF-TG9 587 BM_5150 443.500 +5 High - - - Color 1 2 - 18 # BM 5150 588 Mountain_West 443.500 +5 High - - - Color 1 1 - 22 # BM Mt West 589 Ventura_County 443.500 +5 High - - - Color 1 1 - 150 # VenturaCo 590 SoCal_1 443.500 +5 High - - - Color 1 1 - 32 # BM SoCal 1 591 SoCal 443.500 +5 High - - - Color 1 1 - 31 # BM SoCal 592 CAL_1 443.500 +5 High - - - Color 1 1 - 20 # BM CAL 1 593 California 443.500 +5 High - - - Color 1 1 - 44 # CA 3106 594 Southwest_Region 443.500 +5 High - - - Color 1 1 - 133 # Southwest 595 Call_Zone_6 443.500 +5 High - - - Color 1 1 - 48 # Call Zone 6 596 SNARS 443.500 +5 High - - - Color 1 1 - 30 # BM SNARS 597 North_America 443.500 +5 High - - - Color 1 1 - 25 # BM North AM 598 Worldwide 443.500 +5 High - - - Color 1 1 - 42 # BM Worldwide 599 Bridge 443.500 +5 High - - - Color 1 1 - 43 # BRIDGE 600 Hytera 443.500 +5 High - - - Color 1 1 - 21 # BM HyteraUSA 601 TAC_310 443.500 +5 High - - - Color 1 1 - 136 # BM TAC 310 602 TAC_311 443.500 +5 High - - - Color 1 1 - 137 # TAC 311 603 TAC_312 443.500 +5 High - - - Color 1 1 - 138 # TAC 312 604 US_Emergency 443.500 +5 High - - - Color 1 1 - 64 # Emergency 605 Parrot 443.500 +5 High - - - Color 1 1 - 28 # BM PARROT 606 Channel26 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 607 San_Jose_449.025 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 608 Local 444.025 +5 High - - - Color 1 2 - 83 # Local 609 NorCal_1 444.025 +5 High - - - Color 1 2 - 24 # BM NorCal 1 610 NorCal 444.025 +5 High - - - Color 1 2 - 23 # BM NorCal 611 Reflector_CQ 444.025 +5 High - - - Color 1 2 - 29 # BM REF-TG9 612 BM_5150 444.025 +5 High - - - Color 1 2 - 18 # BM 5150 613 Mountain_West 444.025 +5 High - - - Color 1 1 - 22 # BM Mt West 614 Ventura_County 444.025 +5 High - - - Color 1 1 - 150 # VenturaCo 615 SoCal_1 444.025 +5 High - - - Color 1 1 - 32 # BM SoCal 1 616 SoCal 444.025 +5 High - - - Color 1 1 - 31 # BM SoCal 617 CAL_1 444.025 +5 High - - - Color 1 1 - 20 # BM CAL 1 618 California 444.025 +5 High - - - Color 1 1 - 44 # CA 3106 619 Southwest_Region 444.025 +5 High - - - Color 1 1 - 133 # Southwest 620 Call_Zone_6 444.025 +5 High - - - Color 1 1 - 48 # Call Zone 6 621 SNARS 444.025 +5 High - - - Color 1 1 - 30 # BM SNARS 622 North_America 444.025 +5 High - - - Color 1 1 - 25 # BM North AM 623 Worldwide 444.025 +5 High - - - Color 1 1 - 42 # BM Worldwide 624 Bridge 444.025 +5 High - - - Color 1 1 - 43 # BRIDGE 625 Hytera 444.025 +5 High - - - Color 1 1 - 21 # BM HyteraUSA 626 TAC_310 444.025 +5 High - - - Color 1 1 - 136 # BM TAC 310 627 TAC_311 444.025 +5 High - - - Color 1 1 - 137 # TAC 311 628 TAC_312 444.025 +5 High - - - Color 1 1 - 138 # TAC 312 629 US_Emergency 444.025 +5 High - - - Color 1 1 - 64 # Emergency 630 Parrot 444.025 +5 High - - - Color 1 1 - 28 # BM PARROT 631 Channel27 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 632 San_Jose_449.375 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 633 Local 444.0375 +5 High - - - Color 1 2 - 83 # Local 634 NorCal_1 444.0375 +5 High - - - Color 1 2 - 24 # BM NorCal 1 635 NorCal 444.0375 +5 High - - - Color 1 2 - 23 # BM NorCal 636 Reflector_CQ 444.0375 +5 High - - - Color 1 2 - 29 # BM REF-TG9 637 BM_5150 444.0375 +5 High - - - Color 1 2 - 18 # BM 5150 638 Mountain_West 444.0375 +5 High - - - Color 1 1 - 22 # BM Mt West 639 Ventura_County 444.0375 +5 High - - - Color 1 1 - 150 # VenturaCo 640 SoCal_1 444.0375 +5 High - - - Color 1 1 - 32 # BM SoCal 1 641 SoCal 444.0375 +5 High - - - Color 1 1 - 31 # BM SoCal 642 CAL_1 444.0375 +5 High - - - Color 1 1 - 20 # BM CAL 1 643 California 444.0375 +5 High - - - Color 1 1 - 44 # CA 3106 644 Southwest_Region 444.0375 +5 High - - - Color 1 1 - 133 # Southwest 645 Call_Zone_6 444.0375 +5 High - - - Color 1 1 - 48 # Call Zone 6 646 SNARS 444.0375 +5 High - - - Color 1 1 - 30 # BM SNARS 647 North_America 444.0375 +5 High - - - Color 1 1 - 25 # BM North AM 648 Worldwide 444.0375 +5 High - - - Color 1 1 - 42 # BM Worldwide 649 Bridge 444.0375 +5 High - - - Color 1 1 - 43 # BRIDGE 650 Hytera 444.0375 +5 High - - - Color 1 1 - 21 # BM HyteraUSA 651 TAC_310 444.0375 +5 High - - - Color 1 1 - 136 # BM TAC 310 652 TAC_311 444.0375 +5 High - - - Color 1 1 - 137 # TAC 311 653 TAC_312 444.0375 +5 High - - - Color 1 1 - 138 # TAC 312 654 US_Emergency 444.0375 +5 High - - - Color 1 1 - 64 # Emergency 655 Parrot 444.0375 +5 High - - - Color 1 1 - 28 # BM PARROT 656 Channel28 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 657 PLEASANTON 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 658 Local 444.275 +5 High - - - Color 1 2 - 83 # Local 659 NorCal_1 444.275 +5 High - - - Color 1 2 - 24 # BM NorCal 1 660 NorCal 444.275 +5 High - - - Color 1 2 - 23 # BM NorCal 661 Reflector_CQ 444.275 +5 High - - - Color 1 2 - 29 # BM REF-TG9 662 BM_5150 444.275 +5 High - - - Color 1 2 - 18 # BM 5150 663 Mountain_West 444.275 +5 High - - - Color 1 1 - 22 # BM Mt West 664 Ventura_County 444.275 +5 High - - - Color 1 1 - 150 # VenturaCo 665 SoCal_1 444.275 +5 High - - - Color 1 1 - 32 # BM SoCal 1 666 SoCal 444.275 +5 High - - - Color 1 1 - 31 # BM SoCal 667 CAL_1 444.275 +5 High - - - Color 1 1 - 20 # BM CAL 1 668 California 444.275 +5 High - - - Color 1 1 - 44 # CA 3106 669 Southwest_Region 444.275 +5 High - - - Color 1 1 - 133 # Southwest 670 Call_Zone_6 444.275 +5 High - - - Color 1 1 - 48 # Call Zone 6 671 SNARS 444.275 +5 High - - - Color 1 1 - 30 # BM SNARS 672 North_America 444.275 +5 High - - - Color 1 1 - 25 # BM North AM 673 Worldwide 444.275 +5 High - - - Color 1 1 - 42 # BM Worldwide 674 Bridge 444.275 +5 High - - - Color 1 1 - 43 # BRIDGE 675 Hytera 444.275 +5 High - - - Color 1 1 - 21 # BM HyteraUSA 676 TAC_310 444.275 +5 High - - - Color 1 1 - 136 # BM TAC 310 677 TAC_311 444.275 +5 High - - - Color 1 1 - 137 # TAC 311 678 TAC_312 444.275 +5 High - - - Color 1 1 - 138 # TAC 312 679 US_Emergency 444.275 +5 High - - - Color 1 1 - 64 # Emergency 680 Parrot 444.275 +5 High - - - Color 1 1 - 28 # BM PARROT 681 Channel29 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 682 TURLOCK 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 683 Local 444.350 +5 High - - - Color 2 2 - 83 # Local 684 NorCal_1 444.350 +5 High - - - Color 2 2 - 24 # BM NorCal 1 685 NorCal 444.350 +5 High - - - Color 2 2 - 23 # BM NorCal 686 Reflector_CQ 444.350 +5 High - - - Color 2 2 - 29 # BM REF-TG9 687 BM_5150 444.350 +5 High - - - Color 2 2 - 18 # BM 5150 688 Mountain_West 444.350 +5 High - - - Color 2 1 - 22 # BM Mt West 689 Ventura_County 444.350 +5 High - - - Color 2 1 - 150 # VenturaCo 690 SoCal_1 444.350 +5 High - - - Color 2 1 - 32 # BM SoCal 1 691 SoCal 444.350 +5 High - - - Color 2 1 - 31 # BM SoCal 692 CAL_1 444.350 +5 High - - - Color 2 1 - 20 # BM CAL 1 693 California 444.350 +5 High - - - Color 2 1 - 44 # CA 3106 694 Southwest_Region 444.350 +5 High - - - Color 2 1 - 133 # Southwest 695 Call_Zone_6 444.350 +5 High - - - Color 2 1 - 48 # Call Zone 6 696 SNARS 444.350 +5 High - - - Color 2 1 - 30 # BM SNARS 697 North_America 444.350 +5 High - - - Color 2 1 - 25 # BM North AM 698 Worldwide 444.350 +5 High - - - Color 2 1 - 42 # BM Worldwide 699 Bridge 444.350 +5 High - - - Color 2 1 - 43 # BRIDGE 700 Hytera 444.350 +5 High - - - Color 2 1 - 21 # BM HyteraUSA 701 TAC_310 444.350 +5 High - - - Color 2 1 - 136 # BM TAC 310 702 TAC_311 444.350 +5 High - - - Color 2 1 - 137 # TAC 311 703 TAC_312 444.350 +5 High - - - Color 2 1 - 138 # TAC 312 704 US_Emergency 444.350 +5 High - - - Color 2 1 - 64 # Emergency 705 Parrot 444.350 +5 High - - - Color 2 1 - 28 # BM PARROT 706 Channel30 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 707 SAN_JOSE 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 708 Local 444.475 +5 High - - - Color 1 2 - 83 # Local 709 NorCal_1 444.475 +5 High - - - Color 1 2 - 24 # BM NorCal 1 710 NorCal 444.475 +5 High - - - Color 1 2 - 23 # BM NorCal 711 Reflector_CQ 444.475 +5 High - - - Color 1 2 - 29 # BM REF-TG9 712 BM_5150 444.475 +5 High - - - Color 1 2 - 18 # BM 5150 713 Mountain_West 444.475 +5 High - - - Color 1 1 - 22 # BM Mt West 714 Ventura_County 444.475 +5 High - - - Color 1 1 - 150 # VenturaCo 715 SoCal_1 444.475 +5 High - - - Color 1 1 - 32 # BM SoCal 1 716 SoCal 444.475 +5 High - - - Color 1 1 - 31 # BM SoCal 717 CAL_1 444.475 +5 High - - - Color 1 1 - 20 # BM CAL 1 718 California 444.475 +5 High - - - Color 1 1 - 44 # CA 3106 719 Southwest_Region 444.475 +5 High - - - Color 1 1 - 133 # Southwest 720 Call_Zone_6 444.475 +5 High - - - Color 1 1 - 48 # Call Zone 6 721 SNARS 444.475 +5 High - - - Color 1 1 - 30 # BM SNARS 722 North_America 444.475 +5 High - - - Color 1 1 - 25 # BM North AM 723 Worldwide 444.475 +5 High - - - Color 1 1 - 42 # BM Worldwide 724 Bridge 444.475 +5 High - - - Color 1 1 - 43 # BRIDGE 725 Hytera 444.475 +5 High - - - Color 1 1 - 21 # BM HyteraUSA 726 TAC_310 444.475 +5 High - - - Color 1 1 - 136 # BM TAC 310 727 TAC_311 444.475 +5 High - - - Color 1 1 - 137 # TAC 311 728 TAC_312 444.475 +5 High - - - Color 1 1 - 138 # TAC 312 729 US_Emergency 444.475 +5 High - - - Color 1 1 - 64 # Emergency 730 Parrot 444.475 +5 High - - - Color 1 1 - 28 # BM PARROT 731 Channel31 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 732 SALINAS 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 733 Local 444.525 +5 High - - - Color 1 2 - 83 # Local 734 NorCal_1 444.525 +5 High - - - Color 1 2 - 24 # BM NorCal 1 735 NorCal 444.525 +5 High - - - Color 1 2 - 23 # BM NorCal 736 Reflector_CQ 444.525 +5 High - - - Color 1 2 - 29 # BM REF-TG9 737 BM_5150 444.525 +5 High - - - Color 1 2 - 18 # BM 5150 738 Mountain_West 444.525 +5 High - - - Color 1 1 - 22 # BM Mt West 739 Ventura_County 444.525 +5 High - - - Color 1 1 - 150 # VenturaCo 740 SoCal_1 444.525 +5 High - - - Color 1 1 - 32 # BM SoCal 1 741 SoCal 444.525 +5 High - - - Color 1 1 - 31 # BM SoCal 742 CAL_1 444.525 +5 High - - - Color 1 1 - 20 # BM CAL 1 743 California 444.525 +5 High - - - Color 1 1 - 44 # CA 3106 744 Southwest_Region 444.525 +5 High - - - Color 1 1 - 133 # Southwest 745 Call_Zone_6 444.525 +5 High - - - Color 1 1 - 48 # Call Zone 6 746 SNARS 444.525 +5 High - - - Color 1 1 - 30 # BM SNARS 747 North_America 444.525 +5 High - - - Color 1 1 - 25 # BM North AM 748 Worldwide 444.525 +5 High - - - Color 1 1 - 42 # BM Worldwide 749 Bridge 444.525 +5 High - - - Color 1 1 - 43 # BRIDGE 750 Hytera 444.525 +5 High - - - Color 1 1 - 21 # BM HyteraUSA 751 TAC_310 444.525 +5 High - - - Color 1 1 - 136 # BM TAC 310 752 TAC_311 444.525 +5 High - - - Color 1 1 - 137 # TAC 311 753 TAC_312 444.525 +5 High - - - Color 1 1 - 138 # TAC 312 754 US_Emergency 444.525 +5 High - - - Color 1 1 - 64 # Emergency 755 Parrot 444.525 +5 High - - - Color 1 1 - 28 # BM PARROT 756 Channel32 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 757 Mariposa_(Mt._Bu 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 758 Local 444.7875 +5 High - - - Color 1 2 - 83 # Local 759 NorCal_1 444.7875 +5 High - - - Color 1 2 - 24 # BM NorCal 1 760 NorCal 444.7875 +5 High - - - Color 1 2 - 23 # BM NorCal 761 Reflector_CQ 444.7875 +5 High - - - Color 1 2 - 29 # BM REF-TG9 762 BM_5150 444.7875 +5 High - - - Color 1 2 - 18 # BM 5150 763 Mountain_West 444.7875 +5 High - - - Color 1 1 - 22 # BM Mt West 764 Ventura_County 444.7875 +5 High - - - Color 1 1 - 150 # VenturaCo 765 SoCal_1 444.7875 +5 High - - - Color 1 1 - 32 # BM SoCal 1 766 SoCal 444.7875 +5 High - - - Color 1 1 - 31 # BM SoCal 767 CAL_1 444.7875 +5 High - - - Color 1 1 - 20 # BM CAL 1 768 California 444.7875 +5 High - - - Color 1 1 - 44 # CA 3106 769 Southwest_Region 444.7875 +5 High - - - Color 1 1 - 133 # Southwest 770 Call_Zone_6 444.7875 +5 High - - - Color 1 1 - 48 # Call Zone 6 771 SNARS 444.7875 +5 High - - - Color 1 1 - 30 # BM SNARS 772 North_America 444.7875 +5 High - - - Color 1 1 - 25 # BM North AM 773 Worldwide 444.7875 +5 High - - - Color 1 1 - 42 # BM Worldwide 774 Bridge 444.7875 +5 High - - - Color 1 1 - 43 # BRIDGE 775 Hytera 444.7875 +5 High - - - Color 1 1 - 21 # BM HyteraUSA 776 TAC_310 444.7875 +5 High - - - Color 1 1 - 136 # BM TAC 310 777 TAC_311 444.7875 +5 High - - - Color 1 1 - 137 # TAC 311 778 TAC_312 444.7875 +5 High - - - Color 1 1 - 138 # TAC 312 779 US_Emergency 444.7875 +5 High - - - Color 1 1 - 64 # Emergency 780 Parrot 444.7875 +5 High - - - Color 1 1 - 28 # BM PARROT 781 Channel33 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 782 V_WINTERS 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 783 Local 144.9375 +2.5 High - - - Color 2 2 - 83 # Local 784 NorCal_1 144.9375 +2.5 High - - - Color 2 2 - 24 # BM NorCal 1 785 NorCal 144.9375 +2.5 High - - - Color 2 2 - 23 # BM NorCal 786 Reflector_CQ 144.9375 +2.5 High - - - Color 2 2 - 29 # BM REF-TG9 787 BM_5150 144.9375 +2.5 High - - - Color 2 2 - 18 # BM 5150 788 Mountain_West 144.9375 +2.5 High - - - Color 2 1 - 22 # BM Mt West 789 Ventura_County 144.9375 +2.5 High - - - Color 2 1 - 150 # VenturaCo 790 SoCal_1 144.9375 +2.5 High - - - Color 2 1 - 32 # BM SoCal 1 791 SoCal 144.9375 +2.5 High - - - Color 2 1 - 31 # BM SoCal 792 CAL_1 144.9375 +2.5 High - - - Color 2 1 - 20 # BM CAL 1 793 California 144.9375 +2.5 High - - - Color 2 1 - 44 # CA 3106 794 Southwest_Region 144.9375 +2.5 High - - - Color 2 1 - 133 # Southwest 795 Call_Zone_6 144.9375 +2.5 High - - - Color 2 1 - 48 # Call Zone 6 796 SNARS 144.9375 +2.5 High - - - Color 2 1 - 30 # BM SNARS 797 North_America 144.9375 +2.5 High - - - Color 2 1 - 25 # BM North AM 798 Worldwide 144.9375 +2.5 High - - - Color 2 1 - 42 # BM Worldwide 799 Bridge 144.9375 +2.5 High - - - Color 2 1 - 43 # BRIDGE 800 Hytera 144.9375 +2.5 High - - - Color 2 1 - 21 # BM HyteraUSA 801 TAC_310 144.9375 +2.5 High - - - Color 2 1 - 136 # BM TAC 310 802 TAC_311 144.9375 +2.5 High - - - Color 2 1 - 137 # TAC 311 803 TAC_312 144.9375 +2.5 High - - - Color 2 1 - 138 # TAC 312 804 US_Emergency 144.9375 +2.5 High - - - Color 2 1 - 64 # Emergency 805 Parrot 144.9375 +2.5 High - - - Color 2 1 - 28 # BM PARROT 806 Channel34 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 807 V_MT_VACA 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 808 Local 144.950 +2.5 High - - - Color 3 2 - 83 # Local 809 NorCal_1 144.950 +2.5 High - - - Color 3 2 - 24 # BM NorCal 1 810 NorCal 144.950 +2.5 High - - - Color 3 2 - 23 # BM NorCal 811 Reflector_CQ 144.950 +2.5 High - - - Color 3 2 - 29 # BM REF-TG9 812 BM_5150 144.950 +2.5 High - - - Color 3 2 - 18 # BM 5150 813 Mountain_West 144.950 +2.5 High - - - Color 3 1 - 22 # BM Mt West 814 Ventura_County 144.950 +2.5 High - - - Color 3 1 - 150 # VenturaCo 815 SoCal_1 144.950 +2.5 High - - - Color 3 1 - 32 # BM SoCal 1 816 SoCal 144.950 +2.5 High - - - Color 3 1 - 31 # BM SoCal 817 CAL_1 144.950 +2.5 High - - - Color 3 1 - 20 # BM CAL 1 818 California 144.950 +2.5 High - - - Color 3 1 - 44 # CA 3106 819 Southwest_Region 144.950 +2.5 High - - - Color 3 1 - 133 # Southwest 820 Call_Zone_6 144.950 +2.5 High - - - Color 3 1 - 48 # Call Zone 6 821 SNARS 144.950 +2.5 High - - - Color 3 1 - 30 # BM SNARS 822 North_America 144.950 +2.5 High - - - Color 3 1 - 25 # BM North AM 823 Worldwide 144.950 +2.5 High - - - Color 3 1 - 42 # BM Worldwide 824 Bridge 144.950 +2.5 High - - - Color 3 1 - 43 # BRIDGE 825 Hytera 144.950 +2.5 High - - - Color 3 1 - 21 # BM HyteraUSA 826 TAC_310 144.950 +2.5 High - - - Color 3 1 - 136 # BM TAC 310 827 TAC_311 144.950 +2.5 High - - - Color 3 1 - 137 # TAC 311 828 TAC_312 144.950 +2.5 High - - - Color 3 1 - 138 # TAC 312 829 US_Emergency 144.950 +2.5 High - - - Color 3 1 - 64 # Emergency 830 Parrot 144.950 +2.5 High - - - Color 3 1 - 28 # BM PARROT 831 Channel35 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 832 V_VISALIA 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 833 Local 144.950 +2.5 High - - - Color 2 2 - 83 # Local 834 NorCal_1 144.950 +2.5 High - - - Color 2 2 - 24 # BM NorCal 1 835 NorCal 144.950 +2.5 High - - - Color 2 2 - 23 # BM NorCal 836 Reflector_CQ 144.950 +2.5 High - - - Color 2 2 - 29 # BM REF-TG9 837 BM_5150 144.950 +2.5 High - - - Color 2 2 - 18 # BM 5150 838 Mountain_West 144.950 +2.5 High - - - Color 2 1 - 22 # BM Mt West 839 Ventura_County 144.950 +2.5 High - - - Color 2 1 - 150 # VenturaCo 840 SoCal_1 144.950 +2.5 High - - - Color 2 1 - 32 # BM SoCal 1 841 SoCal 144.950 +2.5 High - - - Color 2 1 - 31 # BM SoCal 842 CAL_1 144.950 +2.5 High - - - Color 2 1 - 20 # BM CAL 1 843 California 144.950 +2.5 High - - - Color 2 1 - 44 # CA 3106 844 Southwest_Region 144.950 +2.5 High - - - Color 2 1 - 133 # Southwest 845 Call_Zone_6 144.950 +2.5 High - - - Color 2 1 - 48 # Call Zone 6 846 SNARS 144.950 +2.5 High - - - Color 2 1 - 30 # BM SNARS 847 North_America 144.950 +2.5 High - - - Color 2 1 - 25 # BM North AM 848 Worldwide 144.950 +2.5 High - - - Color 2 1 - 42 # BM Worldwide 849 Bridge 144.950 +2.5 High - - - Color 2 1 - 43 # BRIDGE 850 Hytera 144.950 +2.5 High - - - Color 2 1 - 21 # BM HyteraUSA 851 TAC_310 144.950 +2.5 High - - - Color 2 1 - 136 # BM TAC 310 852 TAC_311 144.950 +2.5 High - - - Color 2 1 - 137 # TAC 311 853 TAC_312 144.950 +2.5 High - - - Color 2 1 - 138 # TAC 312 854 US_Emergency 144.950 +2.5 High - - - Color 2 1 - 64 # Emergency 855 Parrot 144.950 +2.5 High - - - Color 2 1 - 28 # BM PARROT 856 Channel36 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 857 V_SAN_JOSE 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 858 Local 144.9625 +2.5 High - - - Color 3 2 - 83 # Local 859 NorCal_1 144.9625 +2.5 High - - - Color 3 2 - 24 # BM NorCal 1 860 NorCal 144.9625 +2.5 High - - - Color 3 2 - 23 # BM NorCal 861 Reflector_CQ 144.9625 +2.5 High - - - Color 3 2 - 29 # BM REF-TG9 862 BM_5150 144.9625 +2.5 High - - - Color 3 2 - 18 # BM 5150 863 Mountain_West 144.9625 +2.5 High - - - Color 3 1 - 22 # BM Mt West 864 Ventura_County 144.9625 +2.5 High - - - Color 3 1 - 150 # VenturaCo 865 SoCal_1 144.9625 +2.5 High - - - Color 3 1 - 32 # BM SoCal 1 866 SoCal 144.9625 +2.5 High - - - Color 3 1 - 31 # BM SoCal 867 CAL_1 144.9625 +2.5 High - - - Color 3 1 - 20 # BM CAL 1 868 California 144.9625 +2.5 High - - - Color 3 1 - 44 # CA 3106 869 Southwest_Region 144.9625 +2.5 High - - - Color 3 1 - 133 # Southwest 870 Call_Zone_6 144.9625 +2.5 High - - - Color 3 1 - 48 # Call Zone 6 871 SNARS 144.9625 +2.5 High - - - Color 3 1 - 30 # BM SNARS 872 North_America 144.9625 +2.5 High - - - Color 3 1 - 25 # BM North AM 873 Worldwide 144.9625 +2.5 High - - - Color 3 1 - 42 # BM Worldwide 874 Bridge 144.9625 +2.5 High - - - Color 3 1 - 43 # BRIDGE 875 Hytera 144.9625 +2.5 High - - - Color 3 1 - 21 # BM HyteraUSA 876 TAC_310 144.9625 +2.5 High - - - Color 3 1 - 136 # BM TAC 310 877 TAC_311 144.9625 +2.5 High - - - Color 3 1 - 137 # TAC 311 878 TAC_312 144.9625 +2.5 High - - - Color 3 1 - 138 # TAC 312 879 US_Emergency 144.9625 +2.5 High - - - Color 3 1 - 64 # Emergency 880 Parrot 144.9625 +2.5 High - - - Color 3 1 - 28 # BM PARROT 881 Channel37 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 882 V_ORLAND 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 883 Local 144.9625 +2.5 High - - - Color 1 2 - 83 # Local 884 NorCal_1 144.9625 +2.5 High - - - Color 1 2 - 24 # BM NorCal 1 885 NorCal 144.9625 +2.5 High - - - Color 1 2 - 23 # BM NorCal 886 Reflector_CQ 144.9625 +2.5 High - - - Color 1 2 - 29 # BM REF-TG9 887 BM_5150 144.9625 +2.5 High - - - Color 1 2 - 18 # BM 5150 888 Mountain_West 144.9625 +2.5 High - - - Color 1 1 - 22 # BM Mt West 889 Ventura_County 144.9625 +2.5 High - - - Color 1 1 - 150 # VenturaCo 890 SoCal_1 144.9625 +2.5 High - - - Color 1 1 - 32 # BM SoCal 1 891 SoCal 144.9625 +2.5 High - - - Color 1 1 - 31 # BM SoCal 892 CAL_1 144.9625 +2.5 High - - - Color 1 1 - 20 # BM CAL 1 893 California 144.9625 +2.5 High - - - Color 1 1 - 44 # CA 3106 894 Southwest_Region 144.9625 +2.5 High - - - Color 1 1 - 133 # Southwest 895 Call_Zone_6 144.9625 +2.5 High - - - Color 1 1 - 48 # Call Zone 6 896 SNARS 144.9625 +2.5 High - - - Color 1 1 - 30 # BM SNARS 897 North_America 144.9625 +2.5 High - - - Color 1 1 - 25 # BM North AM 898 Worldwide 144.9625 +2.5 High - - - Color 1 1 - 42 # BM Worldwide 899 Bridge 144.9625 +2.5 High - - - Color 1 1 - 43 # BRIDGE 900 Hytera 144.9625 +2.5 High - - - Color 1 1 - 21 # BM HyteraUSA 901 TAC_310 144.9625 +2.5 High - - - Color 1 1 - 136 # BM TAC 310 902 TAC_311 144.9625 +2.5 High - - - Color 1 1 - 137 # TAC 311 903 TAC_312 144.9625 +2.5 High - - - Color 1 1 - 138 # TAC 312 904 US_Emergency 144.9625 +2.5 High - - - Color 1 1 - 64 # Emergency 905 Parrot 144.9625 +2.5 High - - - Color 1 1 - 28 # BM PARROT 906 Channel38 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 907 V_TOULUMNE 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 908 Local 144.9625 +2.5 High - - - Color 2 2 - 83 # Local 909 NorCal_1 144.9625 +2.5 High - - - Color 2 2 - 24 # BM NorCal 1 910 NorCal 144.9625 +2.5 High - - - Color 2 2 - 23 # BM NorCal 911 Reflector_CQ 144.9625 +2.5 High - - - Color 2 2 - 29 # BM REF-TG9 912 BM_5150 144.9625 +2.5 High - - - Color 2 2 - 18 # BM 5150 913 Mountain_West 144.9625 +2.5 High - - - Color 2 1 - 22 # BM Mt West 914 Ventura_County 144.9625 +2.5 High - - - Color 2 1 - 150 # VenturaCo 915 SoCal_1 144.9625 +2.5 High - - - Color 2 1 - 32 # BM SoCal 1 916 SoCal 144.9625 +2.5 High - - - Color 2 1 - 31 # BM SoCal 917 CAL_1 144.9625 +2.5 High - - - Color 2 1 - 20 # BM CAL 1 918 California 144.9625 +2.5 High - - - Color 2 1 - 44 # CA 3106 919 Southwest_Region 144.9625 +2.5 High - - - Color 2 1 - 133 # Southwest 920 Call_Zone_6 144.9625 +2.5 High - - - Color 2 1 - 48 # Call Zone 6 921 SNARS 144.9625 +2.5 High - - - Color 2 1 - 30 # BM SNARS 922 North_America 144.9625 +2.5 High - - - Color 2 1 - 25 # BM North AM 923 Worldwide 144.9625 +2.5 High - - - Color 2 1 - 42 # BM Worldwide 924 Bridge 144.9625 +2.5 High - - - Color 2 1 - 43 # BRIDGE 925 Hytera 144.9625 +2.5 High - - - Color 2 1 - 21 # BM HyteraUSA 926 TAC_310 144.9625 +2.5 High - - - Color 2 1 - 136 # BM TAC 310 927 TAC_311 144.9625 +2.5 High - - - Color 2 1 - 137 # TAC 311 928 TAC_312 144.9625 +2.5 High - - - Color 2 1 - 138 # TAC 312 929 US_Emergency 144.9625 +2.5 High - - - Color 2 1 - 64 # Emergency 930 Parrot 144.9625 +304.825 High - - - Color 1 1 - 28 # BM PARROT 931 Channel39 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 932 V_MARIPOSA 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 933 Local 144.9375 +2.5 High - - - Color 1 2 - 83 # Local 934 NorCal_1 144.9375 +2.5 High - - - Color 1 2 - 24 # BM NorCal 1 935 NorCal 144.9375 +2.5 High - - - Color 1 2 - 23 # BM NorCal 936 Reflector_CQ 144.9375 +2.5 High - - - Color 1 2 - 29 # BM REF-TG9 937 BM_5150 144.9375 +2.5 High - - - Color 1 2 - 18 # BM 5150 938 Mountain_West 144.9375 +2.5 High - - - Color 1 1 - 22 # BM Mt West 939 Ventura_County 144.9375 +2.5 High - - - Color 1 1 - 150 # VenturaCo 940 SoCal_1 144.9375 +2.5 High - - - Color 1 1 - 32 # BM SoCal 1 941 SoCal 144.9375 +2.5 High - - - Color 1 1 - 31 # BM SoCal 942 CAL_1 144.9375 +2.5 High - - - Color 1 1 - 20 # BM CAL 1 943 California 144.9375 +2.5 High - - - Color 1 1 - 44 # CA 3106 944 Southwest_Region 144.9375 +2.5 High - - - Color 1 1 - 133 # Southwest 945 Call_Zone_6 144.9375 +2.5 High - - - Color 1 1 - 48 # Call Zone 6 946 SNARS 144.9375 +2.5 High - - - Color 1 1 - 30 # BM SNARS 947 North_America 144.9375 +2.5 High - - - Color 1 1 - 25 # BM North AM 948 Worldwide 144.9375 +2.5 High - - - Color 1 1 - 42 # BM Worldwide 949 Bridge 144.9375 +2.5 High - - - Color 1 1 - 43 # BRIDGE 950 Hytera 144.9375 +2.5 High - - - Color 1 1 - 21 # BM HyteraUSA 951 TAC_310 144.9375 +2.5 High - - - Color 1 1 - 136 # BM TAC 310 952 TAC_311 144.9375 +2.5 High - - - Color 1 1 - 137 # TAC 311 953 TAC_312 144.9375 +2.5 High - - - Color 1 1 - 138 # TAC 312 954 US_Emergency 144.9375 +2.5 High - - - Color 1 1 - 64 # Emergency 955 Parrot 144.9375 +2.5 High - - - Color 1 1 - 28 # BM PARROT 956 Channel40 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 957 V_MT_DIABLO 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 958 Local 144.975 +2.5 High - - - Color 1 2 - 83 # Local 959 NorCal_1 144.975 +2.5 High - - - Color 1 2 - 24 # BM NorCal 1 960 NorCal 144.975 +2.5 High - - - Color 1 2 - 23 # BM NorCal 961 Reflector_CQ 144.975 +2.5 High - - - Color 1 2 - 29 # BM REF-TG9 962 BM_5150 144.975 +2.5 High - - - Color 1 2 - 18 # BM 5150 963 Mountain_West 144.975 +2.5 High - - - Color 1 1 - 22 # BM Mt West 964 Ventura_County 144.975 +2.5 High - - - Color 1 1 - 150 # VenturaCo 965 SoCal_1 144.975 +2.5 High - - - Color 1 1 - 32 # BM SoCal 1 966 SoCal 144.975 +2.5 High - - - Color 1 1 - 31 # BM SoCal 967 CAL_1 144.975 +2.5 High - - - Color 1 1 - 20 # BM CAL 1 968 California 144.975 +2.5 High - - - Color 1 1 - 44 # CA 3106 969 Southwest_Region 144.975 +2.5 High - - - Color 1 1 - 133 # Southwest 970 Call_Zone_6 144.975 +2.5 High - - - Color 1 1 - 48 # Call Zone 6 971 SNARS 144.975 +2.5 High - - - Color 1 1 - 30 # BM SNARS 972 North_America 144.975 +2.5 High - - - Color 1 1 - 25 # BM North AM 973 Worldwide 144.975 +2.5 High - - - Color 1 1 - 42 # BM Worldwide 974 Bridge 144.975 +2.5 High - - - Color 1 1 - 43 # BRIDGE 975 Hytera 144.975 +2.5 High - - - Color 1 1 - 21 # BM HyteraUSA 976 TAC_310 144.975 +2.5 High - - - Color 1 1 - 136 # BM TAC 310 977 TAC_311 144.975 +2.5 High - - - Color 1 1 - 137 # TAC 311 978 TAC_312 144.975 +2.5 High - - - Color 1 1 - 138 # TAC 312 979 US_Emergency 144.975 +2.5 High - - - Color 1 1 - 64 # Emergency 980 Parrot 144.975 +2.5 High - - - Color 1 1 - 28 # BM PARROT 981 Channel41 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 982 V_FREMONT 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 983 Local 144.9875 +2.5 High - - - Color 1 2 - 83 # Local 984 NorCal_1 144.9875 +2.5 High - - - Color 1 2 - 24 # BM NorCal 1 985 NorCal 144.9875 +2.5 High - - - Color 1 2 - 23 # BM NorCal 986 Reflector_CQ 144.9875 +2.5 High - - - Color 1 2 - 29 # BM REF-TG9 987 BM_5150 144.9875 +2.5 High - - - Color 1 2 - 18 # BM 5150 988 Mountain_West 144.9875 +2.5 High - - - Color 1 1 - 22 # BM Mt West 989 Ventura_County 144.9875 +2.5 High - - - Color 1 1 - 150 # VenturaCo 990 SoCal_1 144.9875 +2.5 High - - - Color 1 1 - 32 # BM SoCal 1 991 SoCal 144.9875 +2.5 High - - - Color 1 1 - 31 # BM SoCal 992 CAL_1 144.9875 +2.5 High - - - Color 1 1 - 20 # BM CAL 1 993 California 144.9875 +2.5 High - - - Color 1 1 - 44 # CA 3106 994 Southwest_Region 144.9875 +2.5 High - - - Color 1 1 - 133 # Southwest 995 Call_Zone_6 144.9875 +2.5 High - - - Color 1 1 - 48 # Call Zone 6 996 SNARS 144.9875 +2.5 High - - - Color 1 1 - 30 # BM SNARS 997 North_America 144.9875 +2.5 High - - - Color 1 1 - 25 # BM North AM 998 Worldwide 144.9875 +2.5 High - - - Color 1 1 - 42 # BM Worldwide 999 Bridge 144.9875 +2.5 High - - - Color 1 1 - 43 # BRIDGE 1000 Hytera 144.9875 +2.5 High - - - Color 1 1 - 21 # BM HyteraUSA 1001 TAC_310 144.9875 +2.5 High - - - Color 1 1 - 136 # BM TAC 310 1002 TAC_311 144.9875 +2.5 High - - - Color 1 1 - 137 # TAC 311 1003 TAC_312 144.9875 +2.5 High - - - Color 1 1 - 138 # TAC 312 1004 US_Emergency 144.9875 +2.5 High - - - Color 1 1 - 64 # Emergency 1005 Parrot 144.9875 +2.5 High - - - Color 1 1 - 28 # BM PARROT 1006 Channel42 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1007 V_EL_DORADO 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1008 Local 145.0125 +2.5 High - - - Color 1 2 - 83 # Local 1009 NorCal_1 145.0125 +2.5 High - - - Color 1 2 - 24 # BM NorCal 1 1010 NorCal 145.0125 +2.5 High - - - Color 1 2 - 23 # BM NorCal 1011 Reflector_CQ 145.0125 +2.5 High - - - Color 1 2 - 29 # BM REF-TG9 1012 BM_5150 145.0125 +2.5 High - - - Color 1 2 - 18 # BM 5150 1013 Mountain_West 145.0125 +2.5 High - - - Color 1 1 - 22 # BM Mt West 1014 Ventura_County 145.0125 +2.5 High - - - Color 1 1 - 150 # VenturaCo 1015 SoCal_1 145.0125 +2.5 High - - - Color 1 1 - 32 # BM SoCal 1 1016 SoCal 145.0125 +2.5 High - - - Color 1 1 - 31 # BM SoCal 1017 CAL_1 145.0125 +2.5 High - - - Color 1 1 - 20 # BM CAL 1 1018 California 145.0125 +2.5 High - - - Color 1 1 - 44 # CA 3106 1019 Southwest_Region 145.0125 +2.5 High - - - Color 1 1 - 133 # Southwest 1020 Call_Zone_6 145.0125 +2.5 High - - - Color 1 1 - 48 # Call Zone 6 1021 SNARS 145.0125 +2.5 High - - - Color 1 1 - 30 # BM SNARS 1022 North_America 145.0125 +2.5 High - - - Color 1 1 - 25 # BM North AM 1023 Worldwide 145.0125 +2.5 High - - - Color 1 1 - 42 # BM Worldwide 1024 Bridge 145.0125 +2.5 High - - - Color 1 1 - 43 # BRIDGE 1025 Hytera 145.0125 +2.5 High - - - Color 1 1 - 21 # BM HyteraUSA 1026 TAC_310 145.0125 +2.5 High - - - Color 1 1 - 136 # BM TAC 310 1027 TAC_311 145.0125 +2.5 High - - - Color 1 1 - 137 # TAC 311 1028 TAC_312 145.0125 +2.5 High - - - Color 1 1 - 138 # TAC 312 1029 US_Emergency 145.0125 +2.5 High - - - Color 1 1 - 64 # Emergency 1030 Parrot 145.0125 +2.5 High - - - Color 1 1 - 28 # BM PARROT 1031 Channel43 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1032 V_LIVERMORE 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1033 Local 147.150 +0.6 High - - - Color 1 2 - 83 # Local 1034 NorCal_1 147.150 +0.6 High - - - Color 1 2 - 24 # BM NorCal 1 1035 NorCal 147.150 +0.6 High - - - Color 1 2 - 23 # BM NorCal 1036 Reflector_CQ 147.150 +0.6 High - - - Color 1 2 - 29 # BM REF-TG9 1037 BM_5150 147.150 +0.6 High - - - Color 1 2 - 18 # BM 5150 1038 Mountain_West 147.150 +0.6 High - - - Color 1 1 - 22 # BM Mt West 1039 Ventura_County 147.150 +0.6 High - - - Color 1 1 - 150 # VenturaCo 1040 SoCal_1 147.150 +0.6 High - - - Color 1 1 - 32 # BM SoCal 1 1041 SoCal 147.150 +0.6 High - - - Color 1 1 - 31 # BM SoCal 1042 CAL_1 147.150 +0.6 High - - - Color 1 1 - 20 # BM CAL 1 1043 California 147.150 +0.6 High - - - Color 1 1 - 44 # CA 3106 1044 Southwest_Region 147.150 +0.6 High - - - Color 1 1 - 133 # Southwest 1045 Call_Zone_6 147.150 +0.6 High - - - Color 1 1 - 48 # Call Zone 6 1046 SNARS 147.150 +0.6 High - - - Color 1 1 - 30 # BM SNARS 1047 North_America 147.150 +0.6 High - - - Color 1 1 - 25 # BM North AM 1048 Worldwide 147.150 +0.6 High - - - Color 1 1 - 42 # BM Worldwide 1049 Bridge 147.150 +0.6 High - - - Color 1 1 - 43 # BRIDGE 1050 Hytera 147.150 +0.6 High - - - Color 1 1 - 21 # BM HyteraUSA 1051 TAC_310 147.150 +0.6 High - - - Color 1 1 - 136 # BM TAC 310 1052 TAC_311 147.150 +0.6 High - - - Color 1 1 - 137 # TAC 311 1053 TAC_312 147.150 +0.6 High - - - Color 1 1 - 138 # TAC 312 1054 US_Emergency 147.150 +0.6 High - - - Color 1 1 - 64 # Emergency 1055 Parrot 147.150 +0.6 High - - - Color 1 1 - 28 # BM PARROT 1056 Channel44 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1057 PALM_SPRINGS 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1058 Local 446.580 -5 High - - - Color 1 2 - 83 # Local 1059 NorCal_1 446.580 -5 High - - - Color 1 2 - 24 # BM NorCal 1 1060 NorCal 446.580 -5 High - - - Color 1 2 - 23 # BM NorCal 1061 Reflector_CQ 446.580 -5 High - - - Color 1 2 - 29 # BM REF-TG9 1062 BM_5150 446.580 -5 High - - - Color 1 2 - 18 # BM 5150 1063 Mountain_West 446.580 -5 High - - - Color 1 1 - 22 # BM Mt West 1064 Ventura_County 446.580 -5 High - - - Color 1 1 - 150 # VenturaCo 1065 SoCal_1 446.580 -5 High - - - Color 1 1 - 32 # BM SoCal 1 1066 SoCal 446.580 -5 High - - - Color 1 1 - 31 # BM SoCal 1067 CAL_1 446.580 -5 High - - - Color 1 1 - 20 # BM CAL 1 1068 California 446.580 -5 High - - - Color 1 1 - 44 # CA 3106 1069 Southwest_Region 446.580 -5 High - - - Color 1 1 - 133 # Southwest 1070 Call_Zone_6 446.580 -5 High - - - Color 1 1 - 48 # Call Zone 6 1071 SNARS 446.580 -5 High - - - Color 1 1 - 30 # BM SNARS 1072 North_America 446.580 -5 High - - - Color 1 1 - 25 # BM North AM 1073 Worldwide 446.580 -5 High - - - Color 1 1 - 42 # BM Worldwide 1074 Bridge 446.580 -5 High - - - Color 1 1 - 43 # BRIDGE 1075 Hytera 446.580 -5 High - - - Color 1 1 - 21 # BM HyteraUSA 1076 TAC_310 446.580 -5 High - - - Color 1 1 - 136 # BM TAC 310 1077 TAC_311 446.580 -5 High - - - Color 1 1 - 137 # TAC 311 1078 TAC_312 446.580 -5 High - - - Color 1 1 - 138 # TAC 312 1079 US_Emergency 446.580 -5 High - - - Color 1 1 - 64 # Emergency 1080 Parrot 446.580 -5 High - - - Color 1 1 - 28 # BM PARROT 1081 Channel45 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1082 WOODSON 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1083 Local 445.960 -5 High - - - Color 1 2 - 83 # Local 1084 NorCal_1 445.960 -5 High - - - Color 1 2 - 24 # BM NorCal 1 1085 NorCal 445.960 -5 High - - - Color 1 2 - 23 # BM NorCal 1086 Reflector_CQ 445.960 -5 High - - - Color 1 2 - 29 # BM REF-TG9 1087 BM_5150 445.960 -5 High - - - Color 1 2 - 18 # BM 5150 1088 Mountain_West 445.960 -5 High - - - Color 1 1 - 22 # BM Mt West 1089 Ventura_County 445.960 -5 High - - - Color 1 1 - 150 # VenturaCo 1090 SoCal_1 445.960 -5 High - - - Color 1 1 - 32 # BM SoCal 1 1091 SoCal 445.960 -5 High - - - Color 1 1 - 31 # BM SoCal 1092 CAL_1 445.960 -5 High - - - Color 1 1 - 20 # BM CAL 1 1093 California 445.960 -5 High - - - Color 1 1 - 44 # CA 3106 1094 Southwest_Region 445.960 -5 High - - - Color 1 1 - 133 # Southwest 1095 Call_Zone_6 445.960 -5 High - - - Color 1 1 - 48 # Call Zone 6 1096 SNARS 445.960 -5 High - - - Color 1 1 - 30 # BM SNARS 1097 North_America 445.960 -5 High - - - Color 1 1 - 25 # BM North AM 1098 Worldwide 445.960 -5 High - - - Color 1 1 - 42 # BM Worldwide 1099 Bridge 445.960 -5 High - - - Color 1 1 - 43 # BRIDGE 1100 Hytera 445.960 -5 High - - - Color 1 1 - 21 # BM HyteraUSA 1101 TAC_310 445.960 -5 High - - - Color 1 1 - 136 # BM TAC 310 1102 TAC_311 445.960 -5 High - - - Color 1 1 - 137 # TAC 311 1103 TAC_312 445.960 -5 High - - - Color 1 1 - 138 # TAC 312 1104 US_Emergency 445.960 -5 High - - - Color 1 1 - 64 # Emergency 1105 Parrot 445.960 -5 High - - - Color 1 1 - 28 # BM PARROT 1106 Channel46 435.000 +0 Low - - - Color 1 1 - 1 # BLANK 1107 OAT 435.000 +0 Low - - - Color 1 1 - 1 # BLANK 1108 Local 447.260 -5 High - - - Color 1 2 - 83 # Local 1109 NorCal_1 447.260 -5 High - - - Color 1 2 - 24 # BM NorCal 1 1110 NorCal 447.260 -5 High - - - Color 1 2 - 23 # BM NorCal 1111 Reflector_CQ 447.260 -5 High - - - Color 1 2 - 29 # BM REF-TG9 1112 BM_5150 447.260 -5 High - - - Color 1 2 - 18 # BM 5150 1113 Mountain_West 447.260 -5 High - - - Color 1 1 - 22 # BM Mt West 1114 Ventura_County 447.260 -5 High - - - Color 1 1 - 150 # VenturaCo 1115 SoCal_1 447.260 -5 High - - - Color 1 1 - 32 # BM SoCal 1 1116 SoCal 447.260 -5 High - - - Color 1 1 - 31 # BM SoCal 1117 CAL_1 447.260 -5 High - - - Color 1 1 - 20 # BM CAL 1 1118 California 447.260 -5 High - - - Color 1 1 - 44 # CA 3106 1119 Southwest_Region 447.260 -5 High - - - Color 1 1 - 133 # Southwest 1120 Call_Zone_6 447.260 -5 High - - - Color 1 1 - 48 # Call Zone 6 1121 SNARS 447.260 -5 High - - - Color 1 1 - 30 # BM SNARS 1122 North_America 447.260 -5 High - - - Color 1 1 - 25 # BM North AM 1123 Worldwide 447.260 -5 High - - - Color 1 1 - 42 # BM Worldwide 1124 Bridge 447.260 -5 High - - - Color 1 1 - 43 # BRIDGE 1125 Hytera 447.260 -5 High - - - Color 1 1 - 21 # BM HyteraUSA 1126 TAC_310 447.260 -5 High - - - Color 1 1 - 136 # BM TAC 310 1127 TAC_311 447.260 -5 High - - - Color 1 1 - 137 # TAC 311 1128 TAC_312 447.260 -5 High - - - Color 1 1 - 138 # TAC 312 1129 US_Emergency 447.260 -5 High - - - Color 1 1 - 64 # Emergency 1130 Parrot 447.260 -5 High - - - Color 1 1 - 28 # BM PARROT 1131 Channel47 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1132 PALOMAR 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1133 Local 445.860 -5 High - - - Color 1 2 - 83 # Local 1134 NorCal_1 445.860 -5 High - - - Color 1 2 - 24 # BM NorCal 1 1135 NorCal 445.860 -5 High - - - Color 1 2 - 23 # BM NorCal 1136 Reflector_CQ 445.860 -5 High - - - Color 1 2 - 29 # BM REF-TG9 1137 BM_5150 445.860 -5 High - - - Color 1 2 - 18 # BM 5150 1138 Mountain_West 445.860 -5 High - - - Color 1 1 - 22 # BM Mt West 1139 Ventura_County 445.860 -5 High - - - Color 1 1 - 150 # VenturaCo 1140 SoCal_1 445.860 -5 High - - - Color 1 1 - 32 # BM SoCal 1 1141 SoCal 445.860 -5 High - - - Color 1 1 - 31 # BM SoCal 1142 CAL_1 445.860 -5 High - - - Color 1 1 - 20 # BM CAL 1 1143 California 445.860 -5 High - - - Color 1 1 - 44 # CA 3106 1144 Southwest_Region 445.860 -5 High - - - Color 1 1 - 133 # Southwest 1145 Call_Zone_6 445.860 -5 High - - - Color 1 1 - 48 # Call Zone 6 1146 SNARS 445.860 -5 High - - - Color 1 1 - 30 # BM SNARS 1147 North_America 445.860 -5 High - - - Color 1 1 - 25 # BM North AM 1148 Worldwide 445.860 -5 High - - - Color 1 1 - 42 # BM Worldwide 1149 Bridge 445.860 -5 High - - - Color 1 1 - 43 # BRIDGE 1150 Hytera 445.860 -5 High - - - Color 1 1 - 21 # BM HyteraUSA 1151 TAC_310 445.860 -5 High - - - Color 1 1 - 136 # BM TAC 310 1152 TAC_311 445.860 -5 High - - - Color 1 1 - 137 # TAC 311 1153 TAC_312 445.860 -5 High - - - Color 1 1 - 138 # TAC 312 1154 US_Emergency 445.860 -5 High - - - Color 1 1 - 64 # Emergency 1155 Parrot 445.860 -5 High - - - Color 1 1 - 28 # BM PARROT 1156 Channel48 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1157 SANTA_MONICA 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1158 Local 446.080 -5 High - - - Color 1 2 - 83 # Local 1159 NorCal_1 446.080 -5 High - - - Color 1 2 - 24 # BM NorCal 1 1160 NorCal 446.080 -5 High - - - Color 1 2 - 23 # BM NorCal 1161 Reflector_CQ 446.080 -5 High - - - Color 1 2 - 29 # BM REF-TG9 1162 BM_5150 446.080 -5 High - - - Color 1 2 - 18 # BM 5150 1163 Mountain_West 446.080 -5 High - - - Color 1 1 - 22 # BM Mt West 1164 Ventura_County 446.080 -5 High - - - Color 1 1 - 150 # VenturaCo 1165 SoCal_1 446.080 -5 High - - - Color 1 1 - 32 # BM SoCal 1 1166 SoCal 446.080 -5 High - - - Color 1 1 - 31 # BM SoCal 1167 CAL_1 446.080 -5 High - - - Color 1 1 - 20 # BM CAL 1 1168 California 446.080 -5 High - - - Color 1 1 - 44 # CA 3106 1169 Southwest_Region 446.080 -5 High - - - Color 1 1 - 133 # Southwest 1170 Call_Zone_6 446.080 -5 High - - - Color 1 1 - 48 # Call Zone 6 1171 SNARS 446.080 -5 High - - - Color 1 1 - 30 # BM SNARS 1172 North_America 446.080 -5 High - - - Color 1 1 - 25 # BM North AM 1173 Worldwide 446.080 -5 High - - - Color 1 1 - 42 # BM Worldwide 1174 Bridge 446.080 -5 High - - - Color 1 1 - 43 # BRIDGE 1175 Hytera 446.080 -5 High - - - Color 1 1 - 21 # BM HyteraUSA 1176 TAC_310 446.080 -5 High - - - Color 1 1 - 136 # BM TAC 310 1177 TAC_311 446.080 -5 High - - - Color 1 1 - 137 # TAC 311 1178 TAC_312 446.080 -5 High - - - Color 1 1 - 138 # TAC 312 1179 US_Emergency 446.080 -5 High - - - Color 1 1 - 64 # Emergency 1180 Parrot 446.080 -5 High - - - Color 1 1 - 28 # BM PARROT 1181 Channel49 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1182 SAN_MARCOS 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1183 Local 445.880 -5 High - - - Color 1 2 - 83 # Local 1184 NorCal_1 445.880 -5 High - - - Color 1 2 - 24 # BM NorCal 1 1185 NorCal 445.880 -5 High - - - Color 1 2 - 23 # BM NorCal 1186 Reflector_CQ 445.880 -5 High - - - Color 1 2 - 29 # BM REF-TG9 1187 BM_5150 445.880 -5 High - - - Color 1 2 - 18 # BM 5150 1188 Mountain_West 445.880 -5 High - - - Color 1 1 - 22 # BM Mt West 1189 Ventura_County 445.880 -5 High - - - Color 1 1 - 150 # VenturaCo 1190 SoCal_1 445.880 -5 High - - - Color 1 1 - 32 # BM SoCal 1 1191 SoCal 445.880 -5 High - - - Color 1 1 - 31 # BM SoCal 1192 CAL_1 445.880 -5 High - - - Color 1 1 - 20 # BM CAL 1 1193 California 445.880 -5 High - - - Color 1 1 - 44 # CA 3106 1194 Southwest_Region 445.880 -5 High - - - Color 1 1 - 133 # Southwest 1195 Call_Zone_6 445.880 -5 High - - - Color 1 1 - 48 # Call Zone 6 1196 SNARS 445.880 -5 High - - - Color 1 1 - 30 # BM SNARS 1197 North_America 445.880 -5 High - - - Color 1 1 - 25 # BM North AM 1198 Worldwide 445.880 -5 High - - - Color 1 1 - 42 # BM Worldwide 1199 Bridge 445.880 -5 High - - - Color 1 1 - 43 # BRIDGE 1200 Hytera 445.880 -5 High - - - Color 1 1 - 21 # BM HyteraUSA 1201 TAC_310 445.880 -5 High - - - Color 1 1 - 136 # BM TAC 310 1202 TAC_311 445.880 -5 High - - - Color 1 1 - 137 # TAC 311 1203 TAC_312 445.880 -5 High - - - Color 1 1 - 138 # TAC 312 1204 US_Emergency 445.880 -5 High - - - Color 1 1 - 64 # Emergency 1205 Parrot 445.880 -5 High - - - Color 1 1 - 28 # BM PARROT 1206 Channel50 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1207 SUNSET 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1208 Local 449.360 -5 High - - - Color 1 2 - 83 # Local 1209 NorCal_1 449.360 -5 High - - - Color 1 2 - 24 # BM NorCal 1 1210 NorCal 449.360 -5 High - - - Color 1 2 - 23 # BM NorCal 1211 Reflector_CQ 449.360 -5 High - - - Color 1 2 - 29 # BM REF-TG9 1212 BM_5150 449.360 -5 High - - - Color 1 2 - 18 # BM 5150 1213 Mountain_West 449.360 -5 High - - - Color 1 1 - 22 # BM Mt West 1214 Ventura_County 449.360 -5 High - - - Color 1 1 - 150 # VenturaCo 1215 SoCal_1 449.360 -5 High - - - Color 1 1 - 32 # BM SoCal 1 1216 SoCal 449.360 -5 High - - - Color 1 1 - 31 # BM SoCal 1217 CAL_1 449.360 -5 High - - - Color 1 1 - 20 # BM CAL 1 1218 California 449.360 -5 High - - - Color 1 1 - 44 # CA 3106 1219 Southwest_Region 449.360 -5 High - - - Color 1 1 - 133 # Southwest 1220 Call_Zone_6 449.360 -5 High - - - Color 1 1 - 48 # Call Zone 6 1221 SNARS 449.360 -5 High - - - Color 1 1 - 30 # BM SNARS 1222 North_America 449.360 -5 High - - - Color 1 1 - 25 # BM North AM 1223 Worldwide 449.360 -5 High - - - Color 1 1 - 42 # BM Worldwide 1224 Bridge 449.360 -5 High - - - Color 1 1 - 43 # BRIDGE 1225 Hytera 449.360 -5 High - - - Color 1 1 - 21 # BM HyteraUSA 1226 TAC_310 449.360 -5 High - - - Color 1 1 - 136 # BM TAC 310 1227 TAC_311 449.360 -5 High - - - Color 1 1 - 137 # TAC 311 1228 TAC_312 449.360 -5 High - - - Color 1 1 - 138 # TAC 312 1229 US_Emergency 449.360 -5 High - - - Color 1 1 - 64 # Emergency 1230 Parrot 449.360 -5 High - - - Color 1 1 - 28 # BM PARROT 1231 Channel51 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1232 VISTA 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1233 Local 447.300 -5 High - - - Color 1 2 - 83 # Local 1234 NorCal_1 447.300 -5 High - - - Color 1 2 - 24 # BM NorCal 1 1235 NorCal 447.300 -5 High - - - Color 1 2 - 23 # BM NorCal 1236 Reflector_CQ 447.300 -5 High - - - Color 1 2 - 29 # BM REF-TG9 1237 BM_5150 447.300 -5 High - - - Color 1 2 - 18 # BM 5150 1238 Mountain_West 447.300 -5 High - - - Color 1 1 - 22 # BM Mt West 1239 Ventura_County 447.300 -5 High - - - Color 1 1 - 150 # VenturaCo 1240 SoCal_1 447.300 -5 High - - - Color 1 1 - 32 # BM SoCal 1 1241 SoCal 447.300 -5 High - - - Color 1 1 - 31 # BM SoCal 1242 CAL_1 447.300 -5 High - - - Color 1 1 - 20 # BM CAL 1 1243 California 447.300 -5 High - - - Color 1 1 - 44 # CA 3106 1244 Southwest_Region 447.300 -5 High - - - Color 1 1 - 133 # Southwest 1245 Call_Zone_6 447.300 -5 High - - - Color 1 1 - 48 # Call Zone 6 1246 SNARS 447.300 -5 High - - - Color 1 1 - 30 # BM SNARS 1247 North_America 447.300 -5 High - - - Color 1 1 - 25 # BM North AM 1248 Worldwide 447.300 -5 High - - - Color 1 1 - 42 # BM Worldwide 1249 Bridge 447.300 -5 High - - - Color 1 1 - 43 # BRIDGE 1250 Hytera 447.300 -5 High - - - Color 1 1 - 21 # BM HyteraUSA 1251 TAC_310 447.300 -5 High - - - Color 1 1 - 136 # BM TAC 310 1252 TAC_311 447.300 -5 High - - - Color 1 1 - 137 # TAC 311 1253 TAC_312 447.300 -5 High - - - Color 1 1 - 138 # TAC 312 1254 US_Emergency 447.300 -5 High - - - Color 1 1 - 64 # Emergency 1255 Parrot 447.300 -5 High - - - Color 1 1 - 28 # BM PARROT 1256 Channel52 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1257 Channel53 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1258 Channel54 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1259 Channel55 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1260 Channel56 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1261 PEAVINE_PK 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1262 SNARSll 444.925 +5 High - - - Color 1 2 - 30 # BM SNARS 1263 SNARS_2 444.925 +5 High - - - Color 1 1 - 129 # SNARS 2 1264 Nevada 444.925 +5 High - - - Color 1 1 - 96 # Nevada 1265 Las_Vegas 444.925 +5 High - - - Color 1 2 - 82 # Las Vegas 1266 VCDRC_Ventura 444.925 +5 High - - - Color 1 1 - 150 # VenturaCo 1267 NorCal 444.925 +5 High - - - Color 1 1 - 106 # NorCal 1 1268 MOUNTAINWEST 444.925 +5 High - - - Color 1 1 - 90 # MountainWest 1269 SoCal 444.925 +5 High - - - Color 1 1 - 130 # SoCal 1270 California 444.925 +5 High - - - Color 1 1 - 47 # California 1271 PNW 444.925 +5 High - - - Color 1 1 - 119 # PNW 1272 SOUTHWEST 444.925 +5 High - - - Color 1 1 - 133 # Southwest 1273 N_AMERICA 444.925 +5 High - - - Color 1 1 - 110 # NorthAmerica 1274 WORLD 444.925 +5 High - - - Color 1 1 - 154 # World 1275 TAC_310 444.925 +5 High - - - Color 1 1 - 136 # BM TAC 310 1276 PARROT 444.925 +5 High - - - Color 1 1 - 171 # PARROT 1277 NEVADA_1 444.925 +5 High - - - Color 1 1 - 102 # Nevada 1 1278 SOUTHWEST_1 444.925 +5 High - - - Color 1 1 - 134 # Southwest 1 1279 CAL_1 444.925 +5 High - - - Color 1 1 - 46 # CAL 1 1280 NORCAL_1 444.925 +5 High - - - Color 1 1 - 106 # NorCal 1 1281 NV_VOAD 444.925 +5 High - - - Color 1 1 - 97 # NV VOAD 1282 TARA 444.925 +5 High - - - Color 1 1 - 141 # TARA 1283 Channel57 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1284 MT_DAVIDSON 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1285 SNARSv 444.825 +5 High - - - Color 1 2 - 30 # BM SNARS 1286 SNARS_2 444.825 +5 High - - - Color 1 1 - 129 # SNARS 2 1287 Nevada 444.825 +5 High - - - Color 1 1 - 96 # Nevada 1288 Las_Vegas 444.825 +5 High - - - Color 1 2 - 82 # Las Vegas 1289 VCDRC_Ventura 444.825 +5 High - - - Color 1 1 - 150 # VenturaCo 1290 NorCal 444.825 +5 High - - - Color 1 1 - 106 # NorCal 1 1291 MOUNTAINWEST 444.825 +5 High - - - Color 1 1 - 90 # MountainWest 1292 SoCal 444.825 +5 High - - - Color 1 1 - 130 # SoCal 1293 California 444.825 +5 High - - - Color 1 1 - 47 # California 1294 PNW 444.825 +5 High - - - Color 1 1 - 119 # PNW 1295 SOUTHWEST 444.825 +5 High - - - Color 1 1 - 133 # Southwest 1296 N_AMERICA 444.825 +5 High - - - Color 1 1 - 110 # NorthAmerica 1297 WORLD 444.825 +5 High - - - Color 1 1 - 154 # World 1298 TAC_310 444.825 +5 High - - - Color 1 1 - 136 # BM TAC 310 1299 PARROT 444.825 +5 High - - - Color 1 1 - 171 # PARROT 1300 NEVADA_1 444.825 +5 High - - - Color 1 1 - 102 # Nevada 1 1301 SOUTHWEST_1 444.825 +5 High - - - Color 1 1 - 134 # Southwest 1 1302 CAL_1 444.825 +5 High - - - Color 1 1 - 46 # CAL 1 1303 NORCAL_1 444.825 +5 High - - - Color 1 1 - 106 # NorCal 1 1304 NV_VOAD 444.825 +5 High - - - Color 1 1 - 97 # NV VOAD 1305 TARA 444.825 +5 High - - - Color 1 1 - 141 # TARA 1306 Channel58 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1307 MT_ROSE 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1308 kSNARS 443.925 +5 High - - - Color 1 2 - 30 # BM SNARS 1309 SNARS_2 443.925 +5 High - - - Color 1 1 - 129 # SNARS 2 1310 Nevada 443.925 +5 High - - - Color 1 1 - 96 # Nevada 1311 Las_Vegas 443.925 +5 High - - - Color 1 2 - 82 # Las Vegas 1312 VCDRC_Ventura 443.925 +5 High - - - Color 1 1 - 150 # VenturaCo 1313 NorCal 443.925 +5 High - - - Color 1 1 - 106 # NorCal 1 1314 MOUNTAINWEST 443.925 +5 High - - - Color 1 1 - 90 # MountainWest 1315 SoCal 443.925 +5 High - - - Color 1 1 - 130 # SoCal 1316 California 443.925 +5 High - - - Color 1 1 - 47 # California 1317 PNW 443.925 +5 High - - - Color 1 1 - 119 # PNW 1318 SOUTHWEST 443.925 +5 High - - - Color 1 1 - 133 # Southwest 1319 N_AMERICA 443.925 +5 High - - - Color 1 1 - 110 # NorthAmerica 1320 WORLD 443.925 +5 High - - - Color 1 1 - 154 # World 1321 TAC_310 443.925 +5 High - - - Color 1 1 - 136 # BM TAC 310 1322 PARROT 443.925 +5 High - - - Color 1 1 - 171 # PARROT 1323 NEVADA_1 443.925 +5 High - - - Color 1 1 - 102 # Nevada 1 1324 SOUTHWEST_1 443.925 +5 High - - - Color 1 1 - 134 # Southwest 1 1325 CAL_1 443.925 +5 High - - - Color 1 1 - 46 # CAL 1 1326 NORCAL_1 443.925 +5 High - - - Color 1 1 - 106 # NorCal 1 1327 NV_VOAD 443.925 +5 High - - - Color 1 1 - 97 # NV VOAD 1328 TARA 443.925 +5 High - - - Color 1 1 - 141 # TARA 1329 Channel59 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1330 INCLINE_VILLAGE 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1331 SNARS_h 443.950 +5 High - - - Color 1 2 - 30 # BM SNARS 1332 SNARS_2 443.950 +5 High - - - Color 1 1 - 129 # SNARS 2 1333 Nevada 443.950 +5 High - - - Color 1 1 - 96 # Nevada 1334 Las_Vegas 443.950 +5 High - - - Color 1 2 - 82 # Las Vegas 1335 VCDRC_Ventura 443.950 +5 High - - - Color 1 1 - 150 # VenturaCo 1336 NorCal 443.950 +5 High - - - Color 1 1 - 106 # NorCal 1 1337 MOUNTAINWEST 443.950 +5 High - - - Color 1 1 - 90 # MountainWest 1338 SoCal 443.950 +5 High - - - Color 1 1 - 130 # SoCal 1339 California 443.950 +5 High - - - Color 1 1 - 47 # California 1340 PNW 443.950 +5 High - - - Color 1 1 - 119 # PNW 1341 SOUTHWEST 443.950 +5 High - - - Color 1 1 - 133 # Southwest 1342 N_AMERICA 443.950 +5 High - - - Color 1 1 - 110 # NorthAmerica 1343 WORLD 443.950 +5 High - - - Color 1 1 - 154 # World 1344 TAC_310 443.950 +5 High - - - Color 1 1 - 136 # BM TAC 310 1345 PARROT 443.950 +5 High - - - Color 1 1 - 171 # PARROT 1346 NEVADA_1 443.950 +5 High - - - Color 1 1 - 102 # Nevada 1 1347 SOUTHWEST_1 443.950 +5 High - - - Color 1 1 - 134 # Southwest 1 1348 CAL_1 443.950 +5 High - - - Color 1 1 - 46 # CAL 1 1349 NORCAL_1 443.950 +5 High - - - Color 1 1 - 106 # NorCal 1 1350 NV_VOAD 443.950 +5 High - - - Color 1 1 - 97 # NV VOAD 1351 TARA 443.950 +5 High - - - Color 1 1 - 141 # TARA 1352 Channel60 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1353 DOWNTOWN_RENO 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1354 SNARS_d 442.850 +5 High - - - Color 1 2 - 30 # BM SNARS 1355 SNARS_2 442.850 +5 High - - - Color 1 1 - 129 # SNARS 2 1356 Nevada 442.850 +5 High - - - Color 1 1 - 96 # Nevada 1357 Las_Vegas 442.850 +5 High - - - Color 1 2 - 82 # Las Vegas 1358 VCDRC_Ventura 442.850 +5 High - - - Color 1 1 - 150 # VenturaCo 1359 NorCal 442.850 +5 High - - - Color 1 1 - 106 # NorCal 1 1360 MOUNTAINWEST 442.850 +5 High - - - Color 1 1 - 90 # MountainWest 1361 SoCal 442.850 +5 High - - - Color 1 1 - 130 # SoCal 1362 California 442.850 +5 High - - - Color 1 1 - 47 # California 1363 PNW 442.850 +5 High - - - Color 1 1 - 119 # PNW 1364 SOUTHWEST 442.850 +5 High - - - Color 1 1 - 133 # Southwest 1365 N_AMERICA 442.850 +5 High - - - Color 1 1 - 110 # NorthAmerica 1366 WORLD 442.850 +5 High - - - Color 1 1 - 154 # World 1367 TAC_310 442.850 +5 High - - - Color 1 1 - 136 # BM TAC 310 1368 PARROT 442.850 +5 High - - - Color 1 1 - 171 # PARROT 1369 NEVADA_1 442.850 +5 High - - - Color 1 1 - 102 # Nevada 1 1370 SOUTHWEST_1 442.850 +5 High - - - Color 1 1 - 134 # Southwest 1 1371 CAL_1 442.850 +5 High - - - Color 1 1 - 46 # CAL 1 1372 NORCAL_1 442.850 +5 High - - - Color 1 1 - 106 # NorCal 1 1373 NV_VOAD 442.850 +5 High - - - Color 1 1 - 97 # NV VOAD 1374 TARA 442.850 +5 High - - - Color 1 1 - 141 # TARA 1375 Channel61 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1376 VIRGINA_PEAK 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1377 cSNARS 442.875 +5 High - - - Color 1 2 - 30 # BM SNARS 1378 SNARS_2 442.875 +5 High - - - Color 1 1 - 129 # SNARS 2 1379 Nevada 442.875 +5 High - - - Color 1 1 - 96 # Nevada 1380 Las_Vegas 442.875 +5 High - - - Color 1 2 - 82 # Las Vegas 1381 VCDRC_Ventura 442.875 +5 High - - - Color 1 1 - 150 # VenturaCo 1382 NorCal 442.875 +5 High - - - Color 1 1 - 106 # NorCal 1 1383 MOUNTAINWEST 442.875 +5 High - - - Color 1 1 - 90 # MountainWest 1384 SoCal 442.875 +5 High - - - Color 1 1 - 130 # SoCal 1385 California 442.875 +5 High - - - Color 1 1 - 47 # California 1386 PNW 442.875 +5 High - - - Color 1 1 - 119 # PNW 1387 SOUTHWEST 442.875 +5 High - - - Color 1 1 - 133 # Southwest 1388 N_AMERICA 442.875 +5 High - - - Color 1 1 - 110 # NorthAmerica 1389 WORLD 442.875 +5 High - - - Color 1 1 - 154 # World 1390 TAC_310 442.875 +5 High - - - Color 1 1 - 136 # BM TAC 310 1391 PARROT 442.875 +5 High - - - Color 1 1 - 171 # PARROT 1392 NEVADA_1 442.875 +5 High - - - Color 1 1 - 102 # Nevada 1 1393 SOUTHWEST_1 442.875 +5 High - - - Color 1 1 - 134 # Southwest 1 1394 CAL_1 442.875 +5 High - - - Color 1 1 - 46 # CAL 1 1395 NORCAL_1 442.875 +5 High - - - Color 1 1 - 106 # NorCal 1 1396 NV_VOAD 442.875 +5 High - - - Color 1 1 - 97 # NV VOAD 1397 TARA 442.875 +5 High - - - Color 1 1 - 141 # TARA 1398 Channel62 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1399 FERNLEY/FALLON 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1400 aSNARS 441.950 +5 High - - - Color 1 2 - 30 # BM SNARS 1401 SNARS_2 441.950 +5 High - - - Color 1 1 - 129 # SNARS 2 1402 Nevada 441.950 +5 High - - - Color 1 1 - 96 # Nevada 1403 Las_Vegas 441.950 +5 High - - - Color 1 2 - 82 # Las Vegas 1404 VCDRC_Ventura 441.950 +5 High - - - Color 1 1 - 150 # VenturaCo 1405 NorCal 441.950 +5 High - - - Color 1 1 - 106 # NorCal 1 1406 MOUNTAINWEST 441.950 +5 High - - - Color 1 1 - 90 # MountainWest 1407 SoCal 441.950 +5 High - - - Color 1 1 - 130 # SoCal 1408 California 441.950 +5 High - - - Color 1 1 - 47 # California 1409 PNW 441.950 +5 High - - - Color 1 1 - 119 # PNW 1410 SOUTHWEST 441.950 +5 High - - - Color 1 1 - 133 # Southwest 1411 N_AMERICA 441.950 +5 High - - - Color 1 1 - 110 # NorthAmerica 1412 WORLD 441.950 +5 High - - - Color 1 1 - 154 # World 1413 TAC_310 441.950 +5 High - - - Color 1 1 - 136 # BM TAC 310 1414 PARROT 441.950 +5 High - - - Color 1 1 - 171 # PARROT 1415 NEVADA_1 441.950 +5 High - - - Color 1 1 - 102 # Nevada 1 1416 SOUTHWEST_1 441.950 +5 High - - - Color 1 1 - 134 # Southwest 1 1417 CAL_1 441.950 +5 High - - - Color 1 1 - 46 # CAL 1 1418 NORCAL_1 441.950 +5 High - - - Color 1 1 - 106 # NorCal 1 1419 NV_VOAD 441.950 +5 High - - - Color 1 1 - 97 # NV VOAD 1420 TARA 441.950 +5 High - - - Color 1 1 - 141 # TARA 1421 Channel63 435.000 +0 Low - - - - 0 1 - 1 # BLANK 1423 os_SNARS 441.0125 +0 Low - - - - 1 1 - 30 # BM SNARS 1424 os_CALIFRONIA 441.0125 +0 Low - - - - 1 1 - 47 # California 1425 os_NEVADA 441.0125 +0 Low - - - - 1 1 - 96 # Nevada 1426 os_NorCal 441.0125 +0 Low - - - - 1 1 - 23 # BM NorCal 1438 Channel_1 440.000 +0 High - - - - 1 1 - 1 # BLANK 1440 Channel_10 440.000 +0 High - - - - 1 1 - 1 # BLANK 1441 NorCAL__dvmega 446.500 +0 High - - - - 1 1 - 23 # BM NorCal 1442 CA_3106_dvmega 446.500 +0 High - - - - 1 1 - 44 # CA 3106 1443 SNARS_dvmega 446.500 +0 High - - - - 1 1 - 30 # BM SNARS 1444 MTN_WESt_dvmega 446.500 +0 High - - - - 1 1 - 22 # BM Mt West 1445 dvmega_socal 446.500 +0 High - - - - 1 1 - 31 # BM SoCal 1446 CallZ_6_dvmega 446.500 +0 High - - - - 1 1 - 8 # 4646 Zone 6 1447 NA_dvmega 446.500 +0 High - - - - 1 1 - 25 # BM North AM 1448 310TAC_dvmega 446.500 +0 High - - - - 1 1 - 136 # BM TAC 310 1449 Utah_dvmerga 446.500 +0 High - - - - 1 1 - 148 # UT 3149 1450 dvmega__Parrot 446.500 +0 Turbo - - - - 1 1 - 28 # BM PARROT 1451 dvmega_Oregon 446.500 +0 High - - - - 1 1 - 115 # OR 3141 1452 Gathering_dvmeg 446.500 +0 High - - - - 1 1 - 69 # Gathering 1453 Channel_111 440.000 +0 High - - - - 1 1 - 1 # BLANK 1454 Colv_Meadw 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1455 Local 440.050 +5 High - - - Color 1 2 - 83 # Local 1456 NorCal_1 440.050 +5 High - - - Color 1 1 - 24 # BM NorCal 1 1457 NorCal 440.050 +5 High - - - Color 1 1 - 23 # BM NorCal 1458 Reflector_CQ 440.050 +5 High - - - Color 1 1 - 29 # BM REF-TG9 1459 BM_5150 440.050 +5 High - - - Color 1 1 - 18 # BM 5150 1460 Mountain_West 440.050 +5 High - - - Color 1 2 - 22 # BM Mt West 1461 Utah_dvmerga 440.050 +5 High - - - Color 1 1 - 148 # UT 3149 1462 SoCal_1 440.050 +5 High - - - Color 1 1 - 32 # BM SoCal 1 1463 SoCal 440.050 +5 High - - - Color 1 1 - 31 # BM SoCal 1464 CAL_1 440.050 +5 High - - - Color 1 1 - 20 # BM CAL 1 1465 California 440.050 +5 High - - - Color 1 1 - 44 # CA 3106 1466 Gathering_dvmeg 440.050 +5 High - - - - 1 1 - 69 # Gathering 1467 Call_Zone_6 440.050 +5 High - - - Color 1 1 - 48 # Call Zone 6 1468 SNARS 440.050 +5 High - - - Color 1 1 - 30 # BM SNARS 1469 North_America 440.050 +5 High - - - Color 1 1 - 25 # BM North AM 1470 Worldwide 440.050 +5 High - - - Color 1 1 - 42 # BM Worldwide 1471 TAC_310 440.050 +5 High - - - Color 1 1 - 136 # BM TAC 310 1472 TAC_311 440.050 +5 High - - - Color 1 1 - 137 # TAC 311 1473 TAC_312 440.050 +5 High - - - Color 1 1 - 138 # TAC 312 1474 US_Emergency 440.050 +5 High - - - Color 1 1 - 64 # Emergency 1475 Channel1475 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1476 Fresno__bear 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1477 Local 442.2375 +5 High - - - Color 1 2 - 83 # Local 1478 NorCal_1 442.2375 +5 High - - - Color 1 1 - 24 # BM NorCal 1 1479 NorCal 442.2375 +5 High - - - Color 1 1 - 23 # BM NorCal 1480 Reflector_CQ 442.2375 +5 High - - - Color 1 1 - 29 # BM REF-TG9 1481 BM_5150 442.2375 +5 High - - - Color 1 1 - 18 # BM 5150 1482 Mountain_West 442.2375 +5 High - - - Color 1 2 - 22 # BM Mt West 1483 Utah_dvmerga 442.2375 +5 High - - - Color 1 1 - 148 # UT 3149 1484 SoCal_1 442.2375 +5 High - - - Color 1 1 - 32 # BM SoCal 1 1485 SoCal 442.2375 +5 High - - - Color 1 1 - 31 # BM SoCal 1486 CAL_1 442.2375 +5 High - - - Color 1 1 - 20 # BM CAL 1 1487 California 442.2375 +5 High - - - Color 1 1 - 44 # CA 3106 1488 Gathering_dvmeg 442.2375 +5 High - - - - 1 1 - 69 # Gathering 1489 Call_Zone_6 442.2375 +5 High - - - Color 1 1 - 48 # Call Zone 6 1490 SNARS 442.2375 +5 High - - - Color 1 1 - 30 # BM SNARS 1491 North_America 442.2375 +5 High - - - Color 1 1 - 25 # BM North AM 1492 Worldwide 442.2375 +5 High - - - Color 1 1 - 42 # BM Worldwide 1493 TAC_310 442.2375 +5 High - - - Color 1 1 - 136 # BM TAC 310 1494 TAC_311 442.2375 +5 High - - - Color 1 1 - 137 # TAC 311 1495 TAC_312 442.2375 +5 High - - - Color 1 1 - 138 # TAC 312 1496 US_Emergency 442.2375 +5 High - - - Color 1 1 - 64 # Emergency 1497 _ 440.000 +0 Low - - - - 0 1 - 1 # BLANK 1498 CHANELL_1498 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1499 Tulare_B_Ridge 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1500 Local 442.4875 +5 High - - - Color 1 2 - 83 # Local 1501 NorCal_1 442.4875 +5 High - - - Color 1 1 - 24 # BM NorCal 1 1502 NorCal 442.4875 +5 High - - - Color 1 1 - 23 # BM NorCal 1503 Reflector_CQ 442.4875 +5 High - - - Color 1 1 - 29 # BM REF-TG9 1504 BM_5150 442.4875 +5 High - - - Color 1 1 - 18 # BM 5150 1505 Mountain_West 442.4875 +5 High - - - Color 1 2 - 22 # BM Mt West 1506 Utah_dvmerga 442.4875 +5 High - - - Color 1 1 - 148 # UT 3149 1507 SoCal_1 442.4875 +5 High - - - Color 1 1 - 32 # BM SoCal 1 1508 SoCal 442.4875 +5 High - - - Color 1 1 - 31 # BM SoCal 1509 CAL_1 442.4875 +5 High - - - Color 1 1 - 20 # BM CAL 1 1510 California 442.4875 +5 High - - - Color 1 1 - 44 # CA 3106 1511 Gathering_dvmeg 442.4875 +5 High - - - - 1 1 - 69 # Gathering 1512 Call_Zone_6 442.4875 +5 High - - - Color 1 1 - 48 # Call Zone 6 1513 SNARS 442.4875 +5 High - - - Color 1 1 - 30 # BM SNARS 1514 North_America 442.4875 +5 High - - - Color 1 1 - 25 # BM North AM 1515 Worldwide 442.4875 +5 High - - - Color 1 1 - 42 # BM Worldwide 1516 TAC_310 442.4875 +5 High - - - Color 1 1 - 136 # BM TAC 310 1517 TAC_311 442.4875 +5 High - - - Color 1 1 - 137 # TAC 311 1518 TAC_312 442.4875 +5 High - - - Color 1 1 - 138 # TAC 312 1519 US_Emergency 442.4875 +5 High - - - Color 1 1 - 64 # Emergency 1520 Channel1520 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1521 vis_park_R 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1522 Local 442.325 +5 High - - - Color 2 2 - 83 # Local 1523 NorCal_1 442.325 +5 High - - - Color 2 1 - 24 # BM NorCal 1 1524 NorCal 442.325 +5 High - - - Color 2 1 - 23 # BM NorCal 1525 Reflector_CQ 442.325 +5 High - - - Color 2 1 - 29 # BM REF-TG9 1526 BM_5150 442.325 +5 High - - - Color 2 1 - 18 # BM 5150 1527 Mountain_West 442.325 +5 High - - - Color 2 2 - 22 # BM Mt West 1528 Utah_dvmerga 442.325 +5 High - - - Color 2 1 - 148 # UT 3149 1529 SoCal_1 442.325 +5 High - - - Color 2 1 - 32 # BM SoCal 1 1530 SoCal 442.325 +5 High - - - Color 2 1 - 31 # BM SoCal 1531 CAL_1 442.325 +5 High - - - Color 2 1 - 20 # BM CAL 1 1532 California 442.325 +5 High - - - Color 2 1 - 44 # CA 3106 1533 Gathering_dvmeg 442.325 +5 High - - - - 2 1 - 69 # Gathering 1534 Call_Zone_6 442.325 +5 High - - - Color 2 1 - 48 # Call Zone 6 1535 SNARS 442.325 +5 High - - - Color 2 1 - 30 # BM SNARS 1536 North_America 442.325 +5 High - - - Color 2 1 - 25 # BM North AM 1537 Worldwide 442.325 +5 High - - - Color 2 1 - 42 # BM Worldwide 1538 TAC_310 442.325 +5 High - - - Color 2 1 - 136 # BM TAC 310 1539 TAC_311 442.325 +5 High - - - Color 2 1 - 137 # TAC 311 1540 TAC_312 442.325 +5 High - - - Color 2 1 - 138 # TAC 312 1541 US_Emergency 442.325 +5 High - - - Color 2 1 - 64 # Emergency 1542 Channel1542 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1543 Mt_Bullion_MW 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1544 Local 442.2875 +5 High - - - Color 1 2 - 83 # Local 1545 NorCal_1 442.2875 +5 High - - - Color 1 1 - 24 # BM NorCal 1 1546 NorCal 442.2875 +5 High - - - Color 1 1 - 23 # BM NorCal 1547 Reflector_CQ 442.2875 +5 High - - - Color 1 1 - 29 # BM REF-TG9 1548 BM_5150 442.2875 +5 High - - - Color 1 1 - 18 # BM 5150 1549 Mountain_West 442.2875 +5 High - - - Color 1 2 - 22 # BM Mt West 1550 Utah_dvmerga 442.2875 +5 High - - - Color 1 1 - 148 # UT 3149 1551 SoCal_1 442.2875 +5 High - - - Color 1 1 - 32 # BM SoCal 1 1552 SoCal 442.2875 +5 High - - - Color 1 1 - 31 # BM SoCal 1553 CAL_1 442.2875 +5 High - - - Color 1 1 - 20 # BM CAL 1 1554 California 442.2875 +5 High - - - Color 1 1 - 44 # CA 3106 1555 Gathering_dvmeg 442.2875 +5 High - - - - 1 1 - 69 # Gathering 1556 Call_Zone_6 442.2875 +5 High - - - Color 1 1 - 48 # Call Zone 6 1557 SNARS 442.2875 +5 High - - - Color 1 1 - 30 # BM SNARS 1558 North_America 442.2875 +5 High - - - Color 1 1 - 25 # BM North AM 1559 Worldwide 442.2875 +5 High - - - Color 1 1 - 42 # BM Worldwide 1560 TAC_310 442.2875 +5 High - - - Color 1 1 - 136 # BM TAC 310 1561 TAC_311 442.2875 +5 High - - - Color 1 1 - 137 # TAC 311 1562 TAC_312 442.2875 +5 High - - - Color 1 1 - 138 # TAC 312 1563 US_Emergency 442.2875 +5 High - - - Color 1 1 - 64 # Emergency 1564 Channel1564 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1565 Santa_Rita__MW 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1566 Local 442.000 +5 High - - - Color 1 2 - 83 # Local 1567 NorCal_1 442.000 +5 High - - - Color 1 1 - 24 # BM NorCal 1 1568 NorCal 442.000 +5 High - - - Color 1 1 - 23 # BM NorCal 1569 Reflector_CQ 442.000 +5 High - - - Color 1 1 - 29 # BM REF-TG9 1570 BM_5150 442.000 +5 High - - - Color 1 1 - 18 # BM 5150 1571 Mountain_West 442.000 +5 High - - - Color 1 2 - 22 # BM Mt West 1572 Utah_dvmerga 442.000 +5 High - - - Color 1 1 - 148 # UT 3149 1573 SoCal_1 442.000 +5 High - - - Color 1 1 - 32 # BM SoCal 1 1574 SoCal 442.000 +5 High - - - Color 1 1 - 31 # BM SoCal 1575 CAL_1 442.000 +5 High - - - Color 1 1 - 20 # BM CAL 1 1576 California 442.000 +5 High - - - Color 1 1 - 44 # CA 3106 1577 Gathering_dvmeg 442.000 +5 High - - - - 1 1 - 69 # Gathering 1578 Call_Zone_6 442.000 +5 High - - - Color 1 1 - 48 # Call Zone 6 1579 SNARS 442.000 +5 High - - - Color 1 1 - 30 # BM SNARS 1580 North_America 442.000 +5 High - - - Color 1 1 - 25 # BM North AM 1581 Worldwide 442.000 +5 High - - - Color 1 1 - 42 # BM Worldwide 1582 TAC_310 442.000 +5 High - - - Color 1 1 - 136 # BM TAC 310 1583 TAC_311 442.000 +5 High - - - Color 1 1 - 137 # TAC 311 1584 TAC_312 442.000 +5 High - - - Color 1 1 - 138 # TAC 312 1585 US_Emergency 442.000 +5 High - - - Color 1 1 - 64 # Emergency 1586 Channel1586 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1587 Fresno_Dtown 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1588 Local 440.0625 +5 High - - - Color 1 2 - 83 # Local 1589 NorCal_1 440.0625 +5 High - - - Color 1 1 - 24 # BM NorCal 1 1590 NorCal 440.0625 +5 High - - - Color 1 1 - 23 # BM NorCal 1591 Reflector_CQ 440.0625 +5 High - - - Color 1 1 - 29 # BM REF-TG9 1592 BM_5150 440.0625 +5 High - - - Color 1 1 - 18 # BM 5150 1593 Mountain_West 440.0625 +5 High - - - Color 1 2 - 22 # BM Mt West 1594 Utah_dvmerga 440.0625 +5 High - - - Color 1 1 - 148 # UT 3149 1595 SoCal_1 440.0625 +5 High - - - Color 1 1 - 32 # BM SoCal 1 1596 SoCal 440.0625 +5 High - - - Color 1 1 - 31 # BM SoCal 1597 CAL_1 440.0625 +5 High - - - Color 1 1 - 20 # BM CAL 1 1598 California 440.0625 +5 High - - - Color 1 1 - 44 # CA 3106 1599 Gathering_dvmeg 440.0625 +5 High - - - - 1 1 - 69 # Gathering 1600 Call_Zone_6 440.0625 +5 High - - - Color 1 1 - 48 # Call Zone 6 1601 Snars 440.0625 +5 Low - - - - 0 1 - 30 # BM SNARS 1602 North_America 440.0625 +5 High - - - Color 1 1 - 25 # BM North AM 1603 Worldwide 440.0625 +5 High - - - Color 1 1 - 42 # BM Worldwide 1604 TAC_310 440.0625 +5 High - - - Color 1 1 - 136 # BM TAC 310 1605 TAC_311 440.0625 +5 High - - - Color 1 1 - 137 # TAC 311 1606 TAC_312 440.0625 +5 High - - - Color 1 1 - 138 # TAC 312 1607 xUS_Emergency 440.0625 +5 High - - - Color 1 1 - 64 # Emergency 1608 CHANELL_1498 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1609 V_Santa_rita 435.000 +0 Low - - - Color 0 1 - 1 # BLANK 1610 Local 145.025 +2.45 High - - - Color 2 2 - 83 # Local 1611 NorCal_1 145.025 +2.45 High - - - Color 2 1 - 24 # BM NorCal 1 1612 NorCal 145.025 +2.45 High - - - Color 2 1 - 23 # BM NorCal 1613 Reflector_CQ 145.025 +2.45 High - - - Color 2 1 - 29 # BM REF-TG9 1614 BM_5150 145.025 +2.45 High - - - Color 2 1 - 18 # BM 5150 1615 Mountain_West 145.025 +2.45 High - - - Color 2 2 - 22 # BM Mt West 1616 Utah_dvmerga 145.025 +2.45 High - - - Color 2 1 - 148 # UT 3149 1617 SoCal_1 145.025 +2.45 High - - - Color 2 1 - 32 # BM SoCal 1 1618 SoCal 145.025 +2.45 High - - - Color 2 1 - 31 # BM SoCal 1619 CAL_1 145.025 +2.45 High - - - Color 2 1 - 20 # BM CAL 1 1620 Californiac 145.025 +2.45 High - - - Color 2 1 - 44 # CA 3106 1621 Gathering_dvmega 145.025 +2.45 High - - - - 2 1 - 69 # Gathering 1622 UTah 145.025 +2.45 Low - - - - 2 1 - 148 # UT 3149 1623 North_America 145.025 +2.45 High - - - Color 1 1 - 25 # BM North AM 1624 Worldwide 145.025 +2.45 High - - - Color 1 1 - 42 # BM Worldwide 1625 TAC_310 145.025 +2.45 High - - - Color 1 1 - 136 # BM TAC 310 1626 TAC_311 145.025 +2.45 High - - - Color 1 1 - 137 # TAC 311 1627 TAC_312 145.025 +2.45 High - - - Color 1 1 - 138 # TAC 312 1628 xUS_Emergency 145.025 +2.45 High - - - Color 1 1 - 64 # Emergency 1629 DV_Norcal 446.500 +0 High - - - - 1 1 - 23 # BM NorCal 1630 DV_Norcal1 446.500 +0 High - - - - 1 1 - 24 # BM NorCal 1 1631 DV_MtnWest 446.500 +0 High - - - - 1 1 - 22 # BM Mt West 1632 DV_UTAH 446.500 +0 High - - - - 1 1 - 148 # UT 3149 1633 DV_Snars 446.500 +0 High - - - - 1 1 - 30 # BM SNARS 1634 DV_SO_CAL 446.500 +0 High - - - - 1 1 - 31 # BM SoCal 1635 DV_CA3106 446.500 +0 High - - - - 1 1 - 44 # CA 3106 1636 DV_Cal1 446.500 +0 High - - - - 1 1 - 20 # BM CAL 1 1637 DV_PNNW 446.500 +0 High - - - - 1 1 - 69 # Gathering 1638 DV_T310 446.500 +0 High - - - - 1 1 - 136 # BM TAC 310 1639 BM_Tac311 446.500 +0 High - - - - 1 1 - 137 # TAC 311 1640 DV_Tac312 446.500 +0 High - - - - 1 1 - 138 # TAC 312 1641 DV_911_EMG 446.500 +0 High - - - - 1 1 - 64 # Emergency 1642 DV_Namerica 446.500 +0 High - - - - 1 1 - 1 # BLANK 1643 DV_World 446.500 +0 High - - - - 1 1 - 42 # BM Worldwide 1644 DV_Parott 446.500 +0 High - - - - 1 1 - 28 # BM PARROT 1953 Channel_VFO_A 435.125 +0 Low - - - - 0 1 - 1 # BLANK 1954 Channel_VFO_B 145.125 +0 Low - - - - 0 1 - 1 # BLANK 1955 Channel_VFO_A 435.125 +0 Low - - - - 0 1 - 1 # BLANK 1956 Channel_VFO_B 145.125 +0 Low - - - - 0 1 - 1 # BLANK # Table of analog channels. # 1) Channel number: 1-4000 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Mid, Low, Turbo # 6) Scan list: - or index # 7) Transmit timeout timer: (unused) # 8) Receive only: -, + # 9) Admit criteria: -, Free, Tone # 10) Squelch level: Normal (unused) # 11) Guard tone for receive, or '-' to disable # 12) Guard tone for transmit, or '-' to disable # 13) Bandwidth in kHz: 12.5, 25 # Analog Name Receive Transmit Power Scan TOT RO Admit Squelch RxTone TxTone Width 7 446.76_A/R 446.760 -5 High - - - - Normal 100.0 100.0 12.5 1430 a_446.000 446.000 +0 High - - - - Normal - - 25 1431 Alameda_REp 444.575 +5 High - - - - Normal - 88.5 25 1432 _147.24_ 147.240 +0.6 High - - - - Normal 107.2 107.2 25 1433 _147.06_ 147.060 +0.6 Turbo - - - - Normal 100.0 - 25 1434 a_446.004 446.000 +0 High - - - - Normal - - 25 1435 a_446.005 446.000 +0 High - - - - Normal - - 25 1436 a_446.006 446.000 +0 High - - - - Normal - - 25 1437 Channel_146.52 146.520 +0 High - - - - Normal - 100.0 12.5 # Table of channel zones. # 1) Zone number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of channels: numbers and ranges (N-M) separated by comma # Zone Name Channels 1 Oakland_U 583-605 2 LUKENS1 22-37 3 SANTIAGO 4-19 4 SIERRA 40-55 5 SONOMA 58-80 6 SAN_JOSE 83-105 7 FREMONT 108-130 8 PITSBURG 133-155 9 SANTA_CRUZ 483-505 10 NIPONMO 508-530 11 MT_OSO 158-180 12 WALNUT_CREEK 183-205 13 DAILY_CITY 258-280 14 NAVATO 283-305 15 LIVERMORE_U 308-330 16 PALTO_ALTO 333-355 17 GUALALA 358-380 18 SANTA_ROSA 383-405 19 MODESTO 408-430 20 TUOLUMNE1 433-455 21 TOULUMNE 433-455 22 SONORA 533-555 23 MILPITAS 558-580 24 SAN_JOSE_449.025 608-630 25 SAN_JOSE449.375 633-655 26 PLEASANTON 658-680 27 TURLOCK 683-705 28 SALINAS 733-755 29 MT_BULLION 758-780 30 MARIPOSA 758-780 31 V_WINTERS 783-805 32 V_MT_VACA2 808-830 33 V_VISALIA 808-830 34 V_SANJOSE 858-880 35 V_ORLAND 858-880 36 V_MARIPOA 783-805 37 V_MT_DIABLO 958-980 38 V_FREMONT 983-1005 39 V_EL_DORADO2 1008-1030 40 WOODSON 1083-1105 41 OAT 1108-1130 42 PALOMAR 1133-1155 43 SANTIA_MONICA 1158-1180 44 SAN-MARCOS 1183-1205 45 SUNSET 1208-1230 46 VISTA 1233-1255 47 PEAVINE_PK 1262-1282 48 MT_DAVIDSON 1285-1305 49 MT_ROSE 1308-1328 50 INCLINE_VILLAGE 1331-1351 51 RENO_DOWNTOWN 1354-1374 52 VIRGINA_PEAK 1377-1397 53 FERENLEY_FALLON 1400-1420 54 TARA_SNARS? 1423-1426 55 DVMEGA 1441-1452 56 ALAMEDA_ANALOG 1430-1437 57 V_S_Rita 1610-1621 58 Frezno_Dtn 1588-1607 59 S_Rita_uhf 1566-1585 60 MtBulin_MW_MW 1544-1563 61 Vis_PArk_R 1522-1541 62 Tulare_B_Ridge 1500-1519 63 Fresno_Bear_Mt 1477-1496 64 Clovis_Meadow_LK 1455-1474 65 DV_MEga2 1629-1644 # Table of contacts. # 1) Contact number: 1-10000 # 2) Name: up to 16 characters, use '_' instead of space # 3) Call type: Group, Private, All # 4) Call ID: 1...16777215 # 5) Incoming call alert: -, +, Online # Contact Name Type ID RxTone 1 BLANK Group 10000 - 2 4640_Zone_0 Group 4640 - 3 4641_Zone_1 Group 4641 - 4 4642_Zone_2 Group 4642 - 5 4643_Zone_3 Group 4643 - 6 4644_Zone_4 Group 4644 - 7 4645_Zone_5 Group 4645 - 8 4646_Zone_6 Group 4646 - 9 4647_Zone_7 Group 4647 - 10 4648_Zone_8 Group 4648 - 11 4649_Zone_9 Group 4649 - 12 AK_3102 Group 3102 - 13 AL_3101 Group 3101 - 14 Alert_Radio Group 31079 - 15 AR_3105 Group 3105 - 16 AREA_Club Group 2732 - 17 AZ_3104 Group 3104 - 18 BM_5150 Group 95150 - 19 BM_altPARROT Private 310997 - 20 BM_CAL_1 Group 31061 - 21 BM_HyteraUSA Group 31089 - 22 BM_Mt_West Group 31062 - 23 BM_NorCal Group 31068 - 24 BM_NorCal_1 Group 31069 - 25 BM_North_AM Group 93 - 26 BM_NZ-OZ Group 95 - 27 BM_PAPA Group 97272 - 28 BM_PARROT Private 9990 - 29 BM_REF-TG9 Group 9 - 30 BM_SNARS Group 31328 - 31 BM_SoCal Group 31066 - 32 BM_SoCal_1 Group 31067 - 33 BM_TAC-1 Group 8951 - 34 BM_TAC-2 Group 8952 - 35 BM_TAC-3 Group 8953 - 36 BM_TAC-4 Group 8954 - 37 BM_TAC-5 Group 8955 - 38 BM_TAC-6 Group 8956 - 39 BM_TAC-7 Group 8957 - 40 BM_TAC-8 Group 8958 - 41 BM_TAC-9 Group 8959 - 42 BM_Worldwide Group 91 - 43 BRIDGE Group 3100 - 44 CA_3106 Group 3106 - 45 CACTUS Group 3185 - 46 CAL_1 Group 2251 - 47 California Group 3107 - 48 Call_Zone_6 Group 31096 - 49 CalNeva Group 2268 - 50 CanadaEngl Group 3026 - 51 CanadaFrench Group 3027 - 52 CenCal_1 Group 221 - 53 CenCoast Group 805 - 54 CO_3108 Group 3108 - 55 Comm_1 Group 3777215 - 56 Comm_2 Group 3777216 - 57 CSI_RuKi Group 1234 - 58 CT_3109 Group 3109 - 59 DC_3111 Group 3111 - 60 DE_3110 Group 3110 - 61 DIRECT_MODE Group 99 - 62 DMR_TechTalk Group 100 - 63 Echo_Test Group 9998 - 64 Emergency Group 911 - 65 English_1 Group 5 - 66 FL_3112 Group 3112 - 67 French_World Group 11 - 68 GA_3113 Group 3113 - 69 Gathering Group 31771 - 70 Hawaii_2 Group 3115808 - 71 HI_3115 Group 3115 - 72 HyteraUSA Group 4962 - 73 I-5 Group 3168 - 74 IA_3119 Group 3119 - 75 ID_3116 Group 3116 - 76 IL_3117 Group 3117 - 77 IN_3118 Group 3118 - 78 Inland Group 465263 - 79 KS_3121 Group 3120 - 80 KY_3121 Group 3121 - 81 LA_3122 Group 3122 - 82 Las_Vegas Private 31327 - 83 Local Group 2 - 84 MA_3125 Group 3125 - 85 MD_3124 Group 3124 - 86 ME_3123 Group 3123 - 87 MI_3126 Group 3126 - 88 MN_3127 Group 3127 - 89 Mountain Group 3177 - 90 MountainWest Group 236225 - 91 MS_3128 Group 3128 - 92 MT_3130 Group 3130 - 93 N_Bay Group 707 - 94 National Group 6 - 95 Nationwide Group 4639 - 96 Nevada Group 3132 - 97 NV_VOAD Group 31322 - 98 NC_3137 Group 3137 - 99 ND_3138 Group 3138 - 100 NE_3131 Group 3131 - 101 NE_Nevada Group 6368 - 102 Nevada_1 Group 31321 - 103 NH_3133 Group 3133 - 104 NJ_3134 Group 3134 - 105 NM_3135 Group 3135 - 106 NorCal_1 Group 621 - 107 NorCal_2 Group 622 - 108 NorCal_209 Group 209 - 109 NorCal_5150 Group 5150 - 110 NorthAmerica Group 3 - 111 NY_3136 Group 3136 - 112 Oahu_Local Group 96801 - 113 OH_3139 Group 3139 - 114 OK_3140 Group 3140 - 115 OR_3141 Group 3141 - 116 PA_3142 Group 3142 - 117 PAPA Group 7272 - 118 PAPA_RuKi Group 1235 - 119 PNW Group 103187 - 120 RED_CROSS Group 4742 - 121 REF_STATUS Group 5000 - 122 REF_UNLINK Group 4000 - 123 RENO Group 31070 - 124 RI_3144 Group 3144 - 125 SanDiego_TG Group 92101 - 126 SC_3145 Group 3145 - 127 SD_3146 Group 3146 - 128 xSNARS Group 331328 - 129 SNARS__2 Private 31329 - 130 SoCal Group 76225 - 131 SoCal_1 Group 721 - 132 South_Plains Group 3175 - 133 Southwest Group 3176 - 134 Southwest_1 Group 31761 - 135 SpanishWorld Group 14 - 136 BM_TAC_310 Group 310 - 137 TAC_311 Group 311 - 138 TAC_312 Group 312 - 139 TAC_5 Group 7 - 140 TAC_6 Group 4 - 141 TARA Group 31072 - 142 Tech411 Group 411 - 143 TERA_RuKi Group 11111111 - 144 TN_3147 Group 3147 - 145 TX_3148 Group 3148 - 146 UA_English_1 Group 113 - 147 UA_English_2 Group 123 - 148 UT_3149 Group 3149 - 149 VA_3151 Group 3151 - 150 VenturaCo Group 310652 - 151 VT_3150 Group 3150 - 152 WA_3153 Group 3153 - 153 WI_3155 Group 3155 - 154 World Group 1 - 155 WV_3154 Group 3154 - 156 WW_English Group 13 - 157 WW_German Group 10 - 158 WW_Italian Group 16 - 159 WW_Nordic Group 17 - 160 WY_3156 Group 3156 - 161 XLX013 Group 31078 - 162 Zone_0 Group 31090 - 163 Zone_1 Group 31091 - 164 Zone_2 Group 31092 - 165 Zone_3 Group 31093 - 166 Zone_4 Group 31094 - 167 Zone_5 Group 31095 - 168 Zone_7 Group 31097 - 169 Zone_8 Group 31098 - 170 Zone_9 Group 31099 - 171 PARROT Group 999 - # Table of group lists. # 1) Group list number: 1-250 # 2) Name: up to 35 characters, use '_' instead of space # 3) List of contacts: numbers and ranges (N-M) separated by comma # Grouplist Name Contacts 1 Sant_Slot_1 14,20,25,44,48,110,154 2 Sant_Slot_2 1,18,22-24,30-32,83 3 Sierra_Slot_1 1,14,20,43-44,48,136 4 Sierra_Slot_2 1,18,23-24,27,30-32,83 # Table of text messages. # 1) Message number: 1-100 # 2) Text: up to 200 characters # Message Text 1 Hello! 2 Welcome! 3 Thank you! 4 Good bye! 5 Happy every day! # Unique DMR ID and name of this radio. ID: 3106451 Name: ka7qqv # Text displayed when the radio powers up. Intro Line 1: KA7QQV DON Intro Line 2: - dmrconfig-master/examples/d868uv-rmham-2018-10-20.conf000066400000000000000000000610561354060760700222170ustar00rootroot00000000000000# # Configuration generated 2018/11/12 by dmrconfig, version 0.9.193 # Radio: Anytone AT-D868UV # Table of digital channels. # 1) Channel number: 1-4000 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Mid, Low, Turbo # 6) Scan list: - or index in Scanlist table # 7) Transmit timeout timer: (unused) # 8) Receive only: -, + # 9) Admit criteria: -, Free, Color, NColor # 10) Color code: 0, 1, 2, 3... 15 # 11) Time slot: 1 or 2 # 12) Receive group list: - or index in Grouplist table # 13) Contact for transmit: - or index in Contacts table # Digital Name Receive Transmit Power Scan TOT RO Admit Color Slot RxGL TxContact 94 ABQ_Rk_Mtn 442.900 +5 High 3 - - NColor 7 1 7 9 # Rocky Mountain 95 ABQ_South 442.900 +5 High 3 - - NColor 7 2 9 11 # South 96 Akron_Rk_Mtn 448.175 -5 High 2 - - NColor 7 1 7 9 # Rocky Mountain 97 Akron_North 448.175 -5 High 2 - - NColor 7 2 8 13 # North 98 Almagre_Rk_Mtn 446.950 -5 High 3 - - NColor 7 1 7 9 # Rocky Mountain 99 Almagre_South 446.950 -5 High 3 - - NColor 7 2 9 11 # South 100 Badger_Rk_Mtn 446.7625 -5 High 1 - - NColor 7 1 7 9 # Rocky Mountain 101 Badger_Central 446.7625 -5 High 1 - - NColor 7 2 10 12 # Central 102 Boulder_Rk_Mtn 446.9875 -5 High 2 - - NColor 7 1 7 9 # Rocky Mountain 103 Boulder_North 446.9875 -5 High 2 - - NColor 7 2 8 13 # North 104 Breck_Rk_Mtn 445.0875 -5 High 1 - - NColor 7 1 7 9 # Rocky Mountain 105 Breck_Central 445.0875 -5 High 1 - - NColor 7 2 10 12 # Central 106 Canon_Rk_Mtn 446.7375 -5 High 3 - - NColor 7 1 7 9 # Rocky Mountain 107 Canon_South 446.7375 -5 High 3 - - NColor 7 2 9 11 # South 108 Cheyenne_Rk_Mtn 449.9375 -5 High 2 - - NColor 7 1 7 9 # Rocky Mountain 109 Cheyenne_North 449.9375 -5 High 2 - - NColor 7 2 8 13 # North 110 Devils_South 446.925 -5 High 3 - - NColor 7 1 9 11 # South 111 Devils_Central 446.925 -5 High 1 - - NColor 7 2 10 12 # Central 112 Durango_Rk_Mtn 446.7375 -5 High 3 - - NColor 6 1 7 9 # Rocky Mountain 113 Durango_South 446.7375 -5 High 3 - - NColor 6 2 9 11 # South 114 Ft_Morgan_Rk_Mtn 448.200 -5 High 2 - - NColor 7 1 7 9 # Rocky Mountain 115 Ft_Morgan_North 448.200 -5 High 2 - - NColor 7 2 8 13 # North 116 Genoa_Rk_Mtn 446.7375 -5 High 1 - - NColor 8 1 7 9 # Rocky Mountain 117 Genoa_Central 446.7375 -5 High 1 - - NColor 8 2 10 12 # Central 118 Horsetooth_Rk_Mt 446.750 -5 High 2 - - NColor 7 1 7 9 # Rocky Mountain 119 Horsetooth_North 446.750 -5 High 2 - - NColor 7 2 8 13 # North 120 Leadville_Rk_Mtn 445.050 -5 High 1 - - NColor 7 1 7 9 # Rocky Mountain 121 Leadville_Centra 445.050 -5 High 1 - - NColor 7 2 10 12 # Central 122 Lookout_Local 446.8375 -5 High 1 - - NColor 7 1 11 10 # Lookout Local 123 Lookout_Central 446.8375 -5 High 1 - - NColor 7 2 10 12 # Central 124 Pueblo_Rk_Mtn 446.9875 -5 High 3 - - NColor 6 1 7 9 # Rocky Mountain 125 Pueblo_South 446.9875 -5 High 3 - - NColor 6 2 9 11 # South 126 Salida_Rk_Mtn 446.8125 -5 High 3 - - NColor 7 1 7 9 # Rocky Mountain 127 Salida_South 446.8125 -5 High 3 - - NColor 7 2 9 11 # South 128 Squaw_Rk_Mtn 446.9375 -5 High 1 - - NColor 7 1 7 9 # Rocky Mountain 129 Squaw_Central 446.9375 -5 High 1 - - NColor 7 2 10 12 # Central 130 Thorodin_Rk_Mtn 446.800 -5 High 1 - - NColor 7 1 7 9 # Rocky Mountain 131 Thorodin_Central 446.800 -5 High 1 - - NColor 7 2 10 12 # Central 132 Vail_Rk_Mtn 445.075 -5 High 1 - - NColor 7 1 7 9 # Rocky Mountain 133 Vail_Central 445.075 -5 High 1 - - NColor 7 2 10 12 # Central 134 Westcreek_Rk_Mtn 446.875 -5 High 1 - - NColor 6 1 7 9 # Rocky Mountain 135 Westcreek_Centra 446.875 -5 High 1 - - NColor 6 2 10 12 # Central 136 Trailer_Rk_Mtn 438.225 -5 High 1 - - NColor 7 1 7 9 # Rocky Mountain 137 Trailer_North 438.225 -5 High 2 - - NColor 7 2 8 13 # North 138 Trailer_Central 438.225 -5 High 1 - - NColor 7 2 10 12 # Central 139 Trailer_South 438.225 -5 High 3 - - NColor 7 2 9 11 # South 140 446.2000_SX_Dig 446.200 +0 High - - - NColor 1 1 - 25 # All Call 141 446.2125_SX_Dig 446.2125 +0 High - - - NColor 1 1 - 25 # All Call 142 446.2250_SX_Dig 446.225 +0 High - - - NColor 1 1 - 25 # All Call 143 446.2375_SX_Dig 446.2375 +0 High - - - NColor 1 1 - 25 # All Call 144 446.2500_SX_Dig 446.250 +0 High - - - NColor 1 1 - 25 # All Call 145 446.2625_SX_Dig 446.2625 +0 High - - - NColor 1 1 - 25 # All Call 146 446.2750_SX_Dig 446.275 +0 High - - - NColor 1 1 - 25 # All Call 147 446.2875_SX_Dig 446.2875 +0 High - - - NColor 1 1 - 25 # All Call 148 446.3000_SX_Dig 446.300 +0 High - - - NColor 1 1 - 25 # All Call 149 DMR.MARC_Simplex 446.075 +0 High - - - NColor 1 1 6 7 # DMR MARC Simplex 150 W0CFI_S1 446.625 -5 High - - - NColor 7 1 - 25 # All Call 151 W0TX_WorldWide 446.7875 -5 High - - - NColor 1 1 - 6 # BM Worldwide 152 W0TX_USA 446.7875 -5 High - - - NColor 1 1 - 14 # BM USA 153 W0TX_Mtn_West 446.7875 -5 High - - - NColor 1 1 - 19 # BM MTN West 154 W0TX_Colorado 446.7875 -5 High - - - NColor 1 1 - 15 # BM Colorado 155 W0TX_T310 446.7875 -5 High - - - NColor 1 1 - 8 # BM TAC 310 156 W0TX_Parrot 446.7875 -5 High - - - NColor 1 1 13 18 # BM Parrot 157 W0TX_TS1_Unlink 446.7875 -5 High - - - NColor 1 1 - 17 # BM Unlink 158 W0TX_Local 446.7875 -5 High - - - NColor 1 2 - 20 # BM W0TX Lcl 159 SlvrH_WorldWide 446.825 -5 High - - - NColor 1 1 - 6 # BM Worldwide 160 SlvrH_USA 446.825 -5 High - - - NColor 1 1 - 14 # BM USA 161 SlvrH_Mtn_West 446.825 -5 High - - - NColor 1 1 - 19 # BM MTN West 162 SlvrH_Colorado 446.825 -5 High - - - NColor 1 1 - 15 # BM Colorado 163 SlvrH_T310 446.825 -5 High - - - NColor 1 1 - 8 # BM TAC 310 164 SlvrH_Parrot 446.825 -5 High - - - NColor 1 1 13 18 # BM Parrot 165 SlvrH_TS1_Unlink 446.825 -5 High - - - NColor 1 1 - 17 # BM Unlink 166 SlvrH_ARESDEC 446.825 -5 High - - - NColor 1 2 - 23 # BM ARESDEC 167 PRA_Worldwide 445.075 -5 High - - - NColor 1 1 - 6 # BM Worldwide 168 PRA_USA 445.075 -5 High - - - NColor 1 1 - 14 # BM USA 169 PRA_Mtn_West 445.075 -5 High - - - NColor 1 1 - 19 # BM MTN West 170 PRA_Colorado 445.075 -5 High - - - NColor 1 1 - 15 # BM Colorado 171 PRA_T310 445.075 -5 High - - - NColor 1 1 - 8 # BM TAC 310 172 PRA_Parrot 445.075 -5 High - - - NColor 1 1 13 18 # BM Parrot 173 PRA_TS1_Unlink 445.075 -5 High - - - NColor 1 1 - 17 # BM Unlink 174 PRA_Local 445.075 -5 High - - - NColor 1 2 - 24 # BM PRA Lcl 175 Lee_Hill_WW 445.050 -5 High - - - NColor 1 1 13 6 # BM Worldwide 176 Lee_Hill_USA 445.050 -5 High - - - NColor 1 1 13 14 # BM USA 177 Lee_Hill_MtnWest 445.050 -5 High - - - NColor 1 1 13 19 # BM MTN West 178 Lee_Hill_Colo 445.050 -5 High - - - NColor 1 1 13 15 # BM Colorado 179 Lee_Hill_T310 445.050 -5 High - - - NColor 1 1 13 8 # BM TAC 310 180 Lee_Hill_Parrot 445.050 -5 High - - - NColor 1 1 13 18 # BM Parrot 181 Lee_Hill_TS1_UNL 445.050 -5 High - - - NColor 1 1 13 17 # BM Unlink 182 Lee_Hill_Local 445.050 -5 High - - - NColor 1 2 13 21 # Lee Hill Local 183 C_Sprgs_WW 445.0625 -5 High - - - NColor 1 1 13 6 # BM Worldwide 184 C_Sprgs_USA 445.0625 -5 High - - - NColor 1 1 13 14 # BM USA 185 C_Sprgs_MtnWest 445.0625 -5 High - - - NColor 1 1 13 19 # BM MTN West 186 C_Sprgs_Colorado 445.0625 -5 High - - - NColor 1 1 13 15 # BM Colorado 187 C_Sprgs_T310 445.0625 -5 High - - - NColor 1 1 13 8 # BM TAC 310 188 C_Sprgs_Parrot 445.0625 -5 High - - - NColor 1 1 13 18 # BM Parrot 189 C_Sprgs_TS1_UNL 445.0625 -5 High - - - NColor 1 1 13 17 # BM Unlink 190 C_Sprgs_Local 445.0625 -5 High - - - NColor 1 2 13 22 # C Spgs Local 191 Mission_Rk_Mtn 445.1375 -5 High 3 - - NColor 7 1 7 9 # Rocky Mountain 192 Mission_South 445.1375 -5 High 3 - - NColor 7 2 9 11 # South 193 Rangely_Rk_Mtn 445.2625 -5 High 3 - - NColor 7 1 7 9 # Rocky Mountain 194 Rangely_Central 445.2625 -5 High 1 - - NColor 7 2 10 12 # Central # Table of analog channels. # 1) Channel number: 1-4000 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Mid, Low, Turbo # 6) Scan list: - or index # 7) Transmit timeout timer: (unused) # 8) Receive only: -, + # 9) Admit criteria: -, Free, Tone # 10) Squelch level: Normal (unused) # 11) Guard tone for receive, or '-' to disable # 12) Guard tone for transmit, or '-' to disable # 13) Bandwidth in kHz: 12.5, 25 # Analog Name Receive Transmit Power Scan TOT RO Admit Squelch RxTone TxTone Width 1 Denver_Thorodin 449.225 -5 High 5 - - - Normal 141.3 141.3 25 2 Denver_Squaw 448.225 -5 High 5 - - - Normal 141.3 141.3 25 3 Denver_Lookout 449.625 -5 High 5 - - - Normal 141.3 141.3 25 4 Denver_Lee_Hill 447.750 -5 High 5 - - - Normal 141.3 141.3 25 5 Breckenridge 447.850 -5 High 5 - - - Normal 100.0 100.0 25 6 446.000_Simplex 446.000 +0 High - - - - Normal - - 25 7 446.000_Smplx_PL 446.000 +0 High - - - - Normal 141.3 141.3 25 8 446.025_Simplex 446.025 +0 High - - - - Normal - - 25 9 446.025_Smplx_PL 446.025 +0 High - - - - Normal 141.3 141.3 25 10 446.050_Simplex 446.050 +0 High - - - - Normal - - 25 11 446.050_Smplx_PL 446.050 +0 High - - - - Normal 141.3 141.3 25 12 446.075_Simplex 446.075 +0 High - - - - Normal - - 25 13 446.075_Smplx_PL 446.075 +0 High - - - - Normal 141.3 141.3 25 14 446.100_Simplex 446.100 +0 High - - - - Normal - - 25 15 446.100_Smplx_PL 446.100 +0 High - - - - Normal 141.3 141.3 25 16 446.125_Simplex 446.125 +0 High - - - - Normal - - 25 17 446.125_Smplx_PL 446.125 +0 High - - - - Normal 141.3 141.3 25 18 446.150_Simplex 446.150 +0 High - - - - Normal - - 25 19 446.150_Smplx_PL 446.150 +0 High - - - - Normal 141.3 141.3 25 20 446.175_Simplex 446.175 +0 High - - - - Normal - - 25 21 446.175_Smplx_PL 446.175 +0 High - - - - Normal 141.3 141.3 25 22 446.200_Simplex 446.200 +0 High - - - - Normal - - 12.5 23 446.200_SmplxDCS 446.200 +0 High - - - - Normal D023N D023N 12.5 24 446.225_Simplex 446.225 +0 High - - - - Normal - - 12.5 25 446.225_SmplxDCS 446.225 +0 High - - - - Normal D023N D023N 12.5 26 446.250_Simplex 446.250 +0 High - - - - Normal - - 12.5 27 446.250_SmplxDCS 446.250 -0.025 High - - - - Normal D023N D023N 12.5 28 446.275_Simplex 446.275 +0 High - - - - Normal - - 12.5 29 446.275_SmplxDCS 446.275 +0 High - - - - Normal D023N D023N 12.5 30 446.300_Simplex 446.275 +0 High - - - - Normal - - 12.5 31 446.300_SmplxDCS 446.275 +0 High - - - - Normal D023N D023N 12.5 32 438.225_91.5 438.225 -5 High - - - - Normal 91.5 91.5 25 33 447.225_103.5 447.225 -5 High - - - - Normal 103.5 103.5 25 34 449.075_141.3 449.075 -5 High - - - - Normal 141.3 141.3 25 35 449.100_141.3 449.100 -5 High - - - - Normal 141.3 141.3 25 36 447.300_BZZ_Rptr 447.300 -5 High - - - - Normal 141.3 141.3 25 37 448.050_K0PWO1 448.050 -5 High - - - - Normal 179.9 179.9 25 38 448.050_K0PWO2 448.050 -5 High - - - - Normal D023N D023N 25 39 448.325_K0PWO3 448.325 -5 High - - - - Normal 179.9 179.9 25 40 448.325_K0PWO4 448.325 -5 High - - - - Normal D023N D023N 25 41 447.125_91.5 447.125 -5 High 6 - - - Normal 91.5 91.5 25 42 447.150_107.2 447.150 -5 High 6 - - - Normal - 107.2 25 43 447.175_186.2 447.175 -5 High 6 - - - Normal - 186.2 25 44 447.225_141.3 447.225 -5 High 6 - - - Normal 141.3 141.3 25 45 447.275_100.0 447.275 -5.15 High 6 - - - Normal - 100.0 25 46 447.350_151.4 447.350 -5 High 6 - - - Normal 151.4 151.4 25 47 447.450_123.0 447.450 -5 High 6 - - - Normal - 123.0 25 48 447.500_88.5 447.500 -5 High 6 - - - Normal - 88.5 25 49 447.650_141.3 447.650 -5 High 6 - - - Normal 141.3 141.3 25 50 447.700_100.0 447.700 -5 High 6 - - - Normal 100.0 100.0 25 51 447.750_141.3 447.750 -5 High 6 - - - Normal 141.3 141.3 25 52 447.825_NB_073 447.825 -5 High 6 - - - Normal D073N D073N 12.5 53 447.925_100.0 447.925 -5 High 6 - - - Normal - 100.0 25 54 447.975_107.2 447.975 -5 High 6 - - - Normal - 107.2 25 55 448.025_100.0 448.025 -5 High 7 - - - Normal - 100.0 25 56 448.075_123.0 448.075 -5 High 7 - - - Normal - 123.0 25 57 448.125_107.2 448.125 -5 High 7 - - - Normal - 107.2 25 58 448.200_NB_023 448.200 -5 High 7 - - - Normal D023N D023N 12.5 59 448.200_141.3 448.200 -5 High 7 - - - Normal 141.3 141.3 25 60 448.225_141.3 448.225 -5 High 7 - - - Normal - 141.3 25 61 448.450_100.0 448.450 -5 High 7 - - - Normal 100.0 100.0 25 62 448.475_100.0 448.475 -5 High 7 - - - Normal - 100.0 25 63 448.500_100.0 448.500 -5 High 7 - - - Normal - 100.0 25 64 448.625_100.0 448.625 -5 High 7 - - - Normal - 100.0 25 65 448.675_100.0 448.625 -5 High 7 - - - Normal - 100.0 25 66 448.700_146.2 448.700 -5 High 7 - - - Normal - 146.2 25 67 448.850_88.5 448.850 -5 High 7 - - - Normal - 88.5 25 68 448.900_100.0 448.900 -5 High 7 - - - Normal - 100.0 25 69 448.975_123.0 448.975 -5 High 7 - - - Normal - 123.0 25 70 448.975_100.0 448.975 -5 High 7 - - - Normal 100.0 100.0 25 71 449.050_107.2 449.050 -5 High 8 - - - Normal - 107.2 25 72 449.125_103.5 449.125 -5 High 8 - - - Normal - 103.5 25 73 449.350_100.0 449.350 -5 High 8 - - - Normal - 100.0 25 74 449.450_103.5 449.450 -5 High 8 - - - Normal - 103.5 25 75 449.525_100.0 449.525 -5 High 8 - - - Normal - 100.0 25 76 449.600_100.0 449.600 -5 High 8 - - - Normal - 100.0 25 77 449.625_141.3 449.625 -5 High 8 - - - Normal 141.3 141.3 25 78 449.650_136.5 449.650 -5 High 8 - - - Normal - 136.5 25 79 449.725_127.3 449.725 -5 High 8 - - - Normal - 127.3 25 80 449.750_103.5 449.750 -5 High 8 - - - Normal - 103.5 25 81 449.800_123.0 449.800 -5 High 8 - - - Normal - 123.0 25 82 449.825_103.5 449.825 -5 High 8 - - - Normal - 103.5 25 83 449.850_100.0 449.850 -5 High 8 - - - Normal - 100.0 25 84 449.875_103.5 449.875 -5 High 8 - - - Normal - 103.5 25 85 Devilshead 448.950 -5 High - - - - Normal 100.0 100.0 25 86 Cordova_Pass 449.750 -5 High - - - - Normal 100.0 100.0 25 87 Black_Forest 447.625 -5 High - - - - Normal 100.0 100.0 25 88 Boone 447.275 -5 High - - - - Normal 100.0 100.0 25 89 Pueblo_Salida 449.975 -5 High - - - - Normal 100.0 100.0 25 90 Canon_City 447.975 -5 High - - - - Normal 100.0 100.0 25 91 Canon_Fremont 447.250 -5 High - - - - Normal 100.0 100.0 25 92 DIA_Denver 448.150 -5 High - - - - Normal 141.3 141.3 25 93 Pueblo_West 448.975 -5 High - - - - Normal 100.0 100.0 25 # Table of channel zones. # 1) Zone number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of channels: numbers and ranges (N-M) separated by comma # Zone Name Channels 1 TRBO_CentralEast 111,116-117,122-123,128-131,134-135 2 TRBO_CentralWest 100-101,104-105,120-121,132-133,193-194 3 TRBO_North 96-97,102-103,108-109,114-115,118-119,136-137 4 TRBO_South 94-95,98-99,106-107,110-113,124-127,191-192 5 BM_RMHAM 175-190 6 BM_Other_1 151-158 7 BM_Other_2 159-174 8 RMHAM_Analog 1-5 9 Fun_Machines 85-93 10 SX_Analog 6-21 11 SX_Analog_NB 22-31 12 SX_Digital 140-149 13 W0CFI_Local 150 14 Portable_Rptrs 32-36,39-40,136-137,139 15 HAM_447 33,41-54 16 Ham_448 55-70 17 HAM_449 71-84 18 ARES_525 1 # Table of scan lists. # 1) Scan list number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) Priority channel 1: -, Curr or index # 4) Priority channel 2: -, Curr or index # 5) Designated transmit channel: Sel or Last # 6) List of channels: numbers and ranges (N-M) separated by comma # Scanlist Name PCh1 PCh2 TxCh Channels 1 TRBO_Central - - Sel 100-102,104-105,111,116-117,120-123,128-135,193-194 2 TRBO_North - - Sel 96-97,102-103,108-109,114-115,118-119,136-137 3 TRBO_South - - Sel 94-95,98-99,106-107,110-113,124-127,136,139,191-192 4 DMR_MARC_RMHAM - - Sel 175 5 RMHAM_Analog - - Sel 1-5 6 HAM_447 - - Sel 33,41-54 7 HAM_448 - - Sel 55-70 8 HAM_449 - - Sel 71-84 # Table of contacts. # 1) Contact number: 1-10000 # 2) Name: up to 16 characters, use '_' instead of space # 3) Call type: Group, Private, All # 4) Call ID: 1...16777215 # 5) Incoming call alert: -, +, Online # Contact Name Type ID RxTone 1 Contact_1 Group 1 - 2 Local Group 2 - 3 DMR_MARC_NA Group 3 - 4 BM_Rflctr Group 9 - 5 DMR_MARC_WW_Eng Group 13 - 6 BM_Worldwide Group 91 - 7 DMR_MARC_Simplex Group 99 - 8 BM_TAC_310 Group 310 - 9 Rocky_Mountain Group 700 - 10 Lookout_Local Group 710 - 11 South Group 719 - 12 Central Group 720 - 13 North Group 721 - 14 BM_USA Group 3100 - 15 BM_Colorado Group 3108 - 16 DMR_MARC_MTN Group 3177 - 17 BM_Unlink Group 4000 - 18 BM_Parrot Private 9990 - 19 BM_MTN_West Group 31062 - 20 BM_W0TX_Lcl Group 310804 - 21 Lee_Hill_Local Group 310819 - 22 C_Spgs_Local Group 310820 - 23 BM_ARESDEC Group 310842 - 24 BM_PRA_Lcl Group 310844 - 25 All_Call All 16777215 - # Table of group lists. # 1) Group list number: 1-250 # 2) Name: up to 35 characters, use '_' instead of space # 3) List of contacts: numbers and ranges (N-M) separated by comma # Grouplist Name Contacts 2 DMR_MARC_NA 3 3 DMR_MARC_WW_Eng 5 4 Local 16 5 DMR_MARC_MTN 16 6 DMR_MARC_Simplex 7 7 Rocky_Mountain 9 8 North 13 9 South 11 10 Central 12 11 Lookout_Local 10 13 BM_All 2,4,6,8,14-15,17,19-24 14 BM_TAC_310 8 15 BM_USA 14 16 BM_Colorado 15 17 BM_MTN_West 19 18 BM_Unlink 17 20 BM_ARESDEC 23 21 BM_Worldwide 6 22 BM_W0TX_Lcl 20 # Table of text messages. # 1) Message number: 1-100 # 2) Text: up to 200 characters # Message Text 1 Hello! 2 Welcome! 3 Thank you! 4 Good bye! 5 Happy every day! # Unique DMR ID and name of this radio. ID: 54321 Name: RMHAM Sample # Text displayed when the radio powers up. Intro Line 1: - Intro Line 2: - dmrconfig-master/examples/dm1801-south-bay-area.conf000066400000000000000000000622571354060760700225610ustar00rootroot00000000000000# # Generic DMR configuration for South Bay Area. # Radio: Baofeng DM-1801 # Table of analog channels. # 1) Channel number: 1-1024 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Low # 6) Scan list: - or index # 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555 # 8) Receive only: -, + # 9) Admit criteria: -, Free, Tone # 10) Squelch level: Normal, Tight # 11) Guard tone for receive, or '-' to disable # 12) Guard tone for transmit, or '-' to disable # 13) Bandwidth in kHz: 12.5, 20, 25 # Analog Name Receive Transmit Power Scan TOT RO Admit Squelch RxTone TxTone Width # VHF Band 144-148 201 Palo_Alto_N6NFI 145.230 -0.6 High 1 180 - Free Normal - 100.0 25 202 Milpitas_W6MLP 145.430 -0.6 High 1 180 - Free Normal - 85.4 25 203 Saratoga_K6SA 146.655 -0.6 High 1 180 - Free Normal - 114.8 25 204 Newark_N6MM 146.670 -0.6 High 1 180 - Free Normal - 110.9 25 205 Mill_Vally_K6GWE 146.700 -0.6 High 1 180 - Free Normal - 179.9 25 206 San_Jose_K6INC 146.820 -0.6 High 1 180 - Free Normal - 123.0 25 207 Orinda_K6LNK 146.850 -0.6 High 1 180 - Free Normal - 103.5 25 208 Pleasanton_W6SRR 147.045 +0.6 High 1 180 - Free Normal - 94.8 25 209 Concord_W6CX 147.060 +0.6 High 1 180 - Free Normal - 100.0 25 210 Napa_W6CO 147.180 +0.6 High 1 180 - Free Normal - 91.5 25 211 Morgan_Hil_K7DAA 147.330 +0.6 High 1 180 - Free Normal - 103.5 25 212 Los_Gatos_AB6LI 147.945 -0.6 High 1 180 - Free Normal - 156.7 25 # UHF Band 440-446 301 San_Jose_W6YOP 440.275 +5 High 1 180 - Free Normal - 127.3 25 302 Woodside_N6ZX 440.450 +5 High 1 180 - Free Normal - 107.2 25 303 Campbell_NO1PC 441.025 +5 High 1 180 - Free Normal - 110.9 25 304 Los_Gatos_K6UB 441.700 +5 High 1 180 - Free Normal - 127.3 25 305 San_Jose_WB6ZVW 442.500 +5 High 1 180 - Free Normal - 100.0 25 306 San_Jose_WR6ABD 442.900 +5 High 1 180 - Free Normal - 162.2 25 307 Morgan_Hil_K7DAA 442.975 +5 High 1 180 - Free Normal - 100.0 25 308 Orinda_N6QOP 443.050 +5 High 1 180 - Free Normal - 114.8 25 309 San_Jose_K6LNK 443.075 +5 High 1 180 - Free Normal - 123.0 25 310 Palo_Alto_WW6BAY 443.225 +5 High 1 180 - Free Normal - 100.0 25 311 San_Jose_KE6STH 443.575 +5 High 1 180 - Free Normal - 110.9 25 312 Oakland_WW6BAY 443.975 +5 High 1 180 - Free Normal - 100.0 25 313 San_Jose_K6GOD 444.725 +5 High 1 180 - Free Normal - 162.2 25 314 Los_Gatos_WB6KHP 444.975 +5 High 1 180 - Free Normal - 127.3 25 # Simplex frequencies 401 S_446.0 446.000 +0 High 2 180 - Free Normal - - 25 402 S_446.5 446.500 +0 High 2 180 - Free Normal - - 25 403 S_441.0 441.000 +0 High 2 180 - Free Normal - - 25 404 S_146.52 146.520 +0 High 2 180 - Free Normal - - 25 405 S_146.46 146.460 +0 High 2 180 - Free Normal - - 25 406 S_147.42 147.420 +0 High 2 180 - Free Normal - - 25 407 WX_1 162.450 +0 Low - 180 + Free Normal - - 25 408 WX_5 162.550 +0 Low - 180 + Free Normal - - 25 # Table of digital channels. # 1) Channel number: 1-1024 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Low # 6) Scan list: - or index in Scanlist table # 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555 # 8) Receive only: -, + # 9) Admit criteria: -, Free, Color # 10) Color code: 0, 1, 2, 3... 15 # 11) Time slot: 1 or 2 # 12) Receive group list: - or index in Grouplist table # 13) Contact for transmit: - or index in Contacts table # Digital Name Receive Transmit Power Scan TOT RO Admit Color Slot RxGL TxContact # (1) W6TCP, Milpitas, NorCal 1 Mi_RX_All 440.125 +5 Low - 180 + Color 3 1 1 - # Receive only 2 Mi_World 440.125 +5 High - 180 - Color 3 1 11 91 # 91 Worldwide 3 Mi_North_America 440.125 +5 High - 180 - Color 3 1 12 93 # 93 North America 4 Mi_TAC_310 440.125 +5 High - 180 - Color 3 1 13 10 # 310 TAC 310 5 Mi_TAC_311 440.125 +5 High - 180 - Color 3 1 14 11 # 311 TAC 311 6 Mi_USA_Nation 440.125 +5 High - 180 - Color 3 1 15 100 # 3100 USA Nationwide 7 Mi_California 440.125 +5 High - 180 - Color 3 1 16 106 # 3106 California 8 Mi_NorCal 440.125 +5 High - 180 - Color 3 2 19 68 # 31068 NorCal 9 Mi_Bay-Net 440.125 +5 High - 180 - Color 3 1 20 75 # 31075 Bay-Net 10 Mi_Anarchy 440.125 +5 High - 180 - Color 3 2 23 66 # 31666 DMR of Anarchy 11 Mi_NC_5150 440.125 +5 High - 180 - Color 3 2 24 95 # 95150 NorCal 5150 12 Mi_Parrot 440.125 +5 High - 180 - Color 3 1 - 90 # 9990 Parrot # (2) N6AMG, San Bruno, Baycom 21 Br_RX_All 440.500 +5 Low - 180 + Color 1 1 1 - # Receive only 22 Br_World 440.500 +5 High - 180 - Color 1 1 11 91 # 91 Worldwide 23 Br_North_America 440.500 +5 High - 180 - Color 1 1 12 93 # 93 North America 24 Br_TAC_310 440.500 +5 High - 180 - Color 1 1 13 10 # 310 TAC 310 25 Br_TAC_311 440.500 +5 High - 180 - Color 1 1 14 11 # 311 TAC 311 26 Br_USA_Nation 440.500 +5 High - 180 - Color 1 1 15 100 # 3100 USA Nationwide 27 Br_California 440.500 +5 High - 180 - Color 1 1 16 106 # 3106 California 28 Br_NC_AllStr 440.500 +5 High - 180 - Color 1 1 18 65 # 31065 NorCal AllStar 29 Br_NorCal 440.500 +5 High - 180 - Color 1 2 19 68 # 31068 NorCal 30 Br_Bay-Net 440.500 +5 High - 180 - Color 1 1 20 75 # 31075 Bay-Net 31 Br_USA_Area6 440.500 +5 High - 180 - Color 1 1 22 96 # 31096 USA Area 6 32 Br_Anarchy 440.500 +5 High - 180 - Color 1 2 23 66 # 31666 DMR of Anarchy 33 Br_NC_5150 440.500 +5 High - 180 - Color 1 2 24 95 # 95150 NorCal 5150 34 Br_Baycom 440.500 +5 High - 180 - Color 1 2 25 97 # 97150 Baycom 35 Br_Parrot 440.500 +5 High - 180 - Color 1 1 - 90 # 9990 Parrot # (3) WB6ECE, Boulder Creek, Baycom 41 Bo_RX_All 440.5875 +5 Low - 180 + Color 2 1 1 - # Receive only 42 Bo_World 440.5875 +5 High - 180 - Color 2 1 11 91 # 91 Worldwide 43 Bo_North_America 440.5875 +5 High - 180 - Color 2 1 12 93 # 93 North America 44 Bo_TAC_310 440.5875 +5 High - 180 - Color 2 1 13 10 # 310 TAC 310 45 Bo_TAC_311 440.5875 +5 High - 180 - Color 2 1 14 11 # 311 TAC 311 46 Bo_USA_Nation 440.5875 +5 High - 180 - Color 2 1 15 100 # 3100 USA Nationwide 47 Bo_California 440.5875 +5 High - 180 - Color 2 1 16 106 # 3106 California 48 Bo_Santa_Clara 440.5875 +5 High - 180 - Color 2 1 17 64 # 31064 Santa Clara County 49 Bo_NC_AllStr 440.5875 +5 High - 180 - Color 2 1 18 65 # 31065 NorCal AllStar 50 Bo_NorCal 440.5875 +5 High - 180 - Color 2 2 19 68 # 31068 NorCal 51 Bo_Bay-Net 440.5875 +5 High - 180 - Color 2 1 20 75 # 31075 Bay-Net 52 Bo_USA_Area6 440.5875 +5 High - 180 - Color 2 1 22 96 # 31096 USA Area 6 53 Bo_Anarchy 440.5875 +5 High - 180 - Color 2 2 23 66 # 31666 DMR of Anarchy 54 Bo_NC_5150 440.5875 +5 High - 180 - Color 2 2 24 95 # 95150 NorCal 5150 55 Bo_Baycom 440.5875 +5 High - 180 - Color 2 2 25 97 # 97150 Baycom 56 Bo_Parrot 440.5875 +5 High - 180 - Color 2 1 - 90 # 9990 Parrot # (4) K6OTR, Palo Alto, Baycom 61 PA_RX_All 441.850 +5 Low - 180 + Color 1 1 1 - # Receive only 62 PA_World 441.850 +5 High - 180 - Color 1 1 11 91 # 91 Worldwide 63 PA_North_America 441.850 +5 High - 180 - Color 1 1 12 93 # 93 North America 64 PA_TAC_310 441.850 +5 High - 180 - Color 1 1 13 10 # 310 TAC 310 65 PA_TAC_311 441.850 +5 High - 180 - Color 1 1 14 11 # 311 TAC 311 66 USA_Nation 441.850 +5 High - 180 - Color 1 1 15 100 # 3100 USA Nationwide 67 PA_California 441.850 +5 High - 180 - Color 1 1 16 106 # 3106 California 68 PA_NC_AllStr 441.850 +5 High - 180 - Color 1 1 18 65 # 31065 NorCal AllStar 69 PA_NorCal 441.850 +5 High - 180 - Color 1 2 19 68 # 31068 NorCal 70 PA_Bay-Net 441.850 +5 High - 180 - Color 1 1 20 75 # 31075 Bay-Net 71 PA_USA_Area6 441.850 +5 High - 180 - Color 1 1 22 96 # 31096 USA - Area 6 4646 72 PA_Anarchy 441.850 +5 High - 180 - Color 1 2 23 66 # 31666 DMR of Anarchy 73 PA_NC_5150 441.850 +5 High - 180 - Color 1 2 24 95 # 95150 NorCal 5150 74 PA_Baycom 441.850 +5 High - 180 - Color 1 2 25 97 # 97150 Baycom 75 PA_Parrot 441.850 +5 High - 180 - Color 1 1 - 90 # 9990 Parrot # (5) KK6USZ, Saratoga 81 Sa_RX_All 441.950 +5 Low - 180 + Color 1 1 1 - # Receive only 82 Sa_World 441.950 +5 High - 180 - Color 1 1 11 91 # 91 Worldwide 83 Sa_North_America 441.950 +5 High - 180 - Color 1 1 12 93 # 93 North America 84 Sa_TAC_310 441.950 +5 High - 180 - Color 1 1 13 10 # 310 TAC 310 85 Sa_TAC_311 441.950 +5 High - 180 - Color 1 1 14 11 # 311 TAC 311 86 Sa_USA_Nation 441.950 +5 High - 180 - Color 1 1 15 100 # 3100 USA Nationwide 87 Sa_California 441.950 +5 High - 180 - Color 1 1 16 106 # 3106 California 88 Sa_Nebraska 441.950 +5 High - 180 - Color 1 1 26 131 # 3131 Nebraska 89 Sa_Texas 441.950 +5 High - 180 - Color 1 1 27 148 # 3148 Texas 90 Sa_Santa_Clara 441.950 +5 High - 180 - Color 1 2 17 64 # 31064 Santa Clara County 91 Sa_NorCal 441.950 +5 High - 180 - Color 1 2 19 68 # 31068 NorCal 92 Sa_Bay-Net 441.950 +5 High - 180 - Color 1 2 20 75 # 31075 Bay-Net 93 Sa_Anarchy 441.950 +5 High - 180 - Color 1 2 23 66 # 31666 DMR of Anarchy 94 Sa_NC_5150 441.950 +5 High - 180 - Color 1 2 24 95 # 95150 NorCal 5150 95 Sa_Baycom 441.950 +5 High - 180 - Color 1 2 25 97 # 97150 Baycom 96 Sa_Parrot 441.950 +5 High - 180 - Color 1 1 - 90 # 9990 Parrot # (6) WA6YCZ, Mt Umunhum, Baycom 101 Um_RX_All 442.5375 +5 Low - 180 + Color 1 1 1 - # Receive only 102 Um_World 442.5375 +5 High - 180 - Color 1 1 11 91 # 91 Worldwide 103 Um_North_America 442.5375 +5 High - 180 - Color 1 1 12 93 # 93 North America 104 Um_TAC_310 442.5375 +5 High - 180 - Color 1 1 13 10 # 310 TAC 310 105 Um_TAC_311 442.5375 +5 High - 180 - Color 1 1 14 11 # 311 TAC 311 106 Um_USA_Nation 442.5375 +5 High - 180 - Color 1 1 15 100 # 3100 USA Nationwide 107 Um_California 442.5375 +5 High - 180 - Color 1 1 16 106 # 3106 California 108 Um_Santa_Clara 442.5375 +5 High - 180 - Color 1 1 17 64 # 31064 Santa Clara County 109 Um_NC_AllStr 442.5375 +5 High - 180 - Color 1 1 18 65 # 31065 NorCal AllStar 110 Um_NorCal 442.5375 +5 High - 180 - Color 1 2 19 68 # 31068 NorCal 111 Um_Bay-Net 442.5375 +5 High - 180 - Color 1 1 20 75 # 31075 Bay-Net 112 Um_USA_Area6 442.5375 +5 High - 180 - Color 1 1 22 96 # 31096 USA Area 6 113 Um_Anarchy 442.5375 +5 High - 180 - Color 1 2 23 66 # 31666 DMR of Anarchy 114 Um_NC_5150 442.5375 +5 High - 180 - Color 1 2 24 95 # 95150 NorCal 5150 115 Um_Baycom 442.5375 +5 High - 180 - Color 1 2 25 97 # 97150 Baycom 116 Um_Parrot 442.5375 +5 High - 180 - Color 1 1 - 90 # 9990 Parrot # (7) K6LNK, Berkeley, NorCal, Carla 121 Be_RX_All 443.500 +5 Low - 180 + Color 1 1 1 - # Receive only 122 Be_World 443.500 +5 High - 180 - Color 1 1 11 91 # 91 Worldwide 123 Be_North_America 443.500 +5 High - 180 - Color 1 1 12 93 # 93 North America 124 Be_TAC_310 443.500 +5 High - 180 - Color 1 1 13 10 # 310 TAC 310 125 Be_TAC_311 443.500 +5 High - 180 - Color 1 1 14 11 # 311 TAC 311 126 Be_USA_Nation 443.500 +5 High - 180 - Color 1 1 15 100 # 3100 USA Nationwide 127 Be_California 443.500 +5 High - 180 - Color 1 1 16 106 # 3106 California 128 Be_NorCal 443.500 +5 High - 180 - Color 1 2 19 68 # 31068 NorCal 129 Be_Bay-Net 443.500 +5 High - 180 - Color 1 1 20 75 # 31075 Bay-Net 130 Be_Anarchy 443.500 +5 High - 180 - Color 1 2 23 66 # 31666 DMR of Anarchy 131 Be_NC_5150 443.500 +5 High - 180 - Color 1 2 24 95 # 95150 NorCal 5150 132 Be_Parrot 443.500 +5 High - 180 - Color 1 1 - 90 # 9990 Parrot # (8) K6HLE, Loma Prieta, NorCal, AREA 141 Lo_RX_All 444.025 +5 Low - 180 + Color 1 1 1 - # Receive only 142 Lo_World 444.025 +5 High - 180 - Color 1 1 11 91 # 91 Worldwide 143 Lo_North_America 444.025 +5 High - 180 - Color 1 1 12 93 # 93 North America 144 Lo_TAC_310 444.025 +5 High - 180 - Color 1 1 13 10 # 310 TAC 310 145 Lo_TAC_311 444.025 +5 High - 180 - Color 1 1 14 11 # 311 TAC 311 146 Lo_USA_Nation 444.025 +5 High - 180 - Color 1 1 15 100 # 3100 USA Nationwide 147 Lo_California 444.025 +5 High - 180 - Color 1 1 16 106 # 3106 California 148 Lo_NorCal 444.025 +5 High - 180 - Color 1 2 19 68 # 31068 NorCal 149 Lo_Bay-Net 444.025 +5 High - 180 - Color 1 1 20 75 # 31075 Bay-Net 150 Lo_USA_Area6 444.025 +5 High - 180 - Color 1 1 22 96 # 31096 USA - Area 6 4646 151 Lo_Anarchy 444.025 +5 High - 180 - Color 1 2 23 66 # 31666 DMR of Anarchy 152 Lo_NC_5150 444.025 +5 High - 180 - Color 1 2 24 95 # 95150 NorCal 5150 153 Lo_Parrot 444.025 +5 High - 180 - Color 1 1 - 90 # 9990 Parrot # (9) WW6BAY, Palo Alto, Bay-Net 161 Bay_RX_All 444.350 +5 Low - 180 + Color 1 1 1 - # Receive only 162 Bay_World 444.350 +5 High - 180 - Color 1 1 11 91 # 91 Worldwide 163 Bay_North_Am 444.350 +5 High - 180 - Color 1 1 12 93 # 93 North America 164 Bay_TAC_310 444.350 +5 High - 180 - Color 1 1 13 10 # 310 TAC 310 165 Bay_TAC_311 444.350 +5 High - 180 - Color 1 1 14 11 # 311 TAC 311 166 Bay_USA_Nation 444.350 +5 High - 180 - Color 1 1 15 100 # 3100 USA Nationwide 167 Bay_Santa_Clara 444.350 +5 High - 180 - Color 1 1 17 64 # 31064 Santa Clara County 168 Bay_NorCal 444.350 +5 High - 180 - Color 1 2 19 68 # 31068 NorCal 169 Bay_Bay-Net 444.350 +5 High - 180 - Color 1 2 20 75 # 31075 Bay-Net 170 Bay_Anarchy 444.350 +5 High - 180 - Color 1 2 23 66 # 31666 DMR of Anarchy 171 Bay_NC_5150 444.350 +5 High - 180 - Color 1 2 24 95 # 95150 NorCal 5150 172 Bay_Parrot 444.350 +5 High - 180 - Color 1 1 - 90 # 9990 Parrot # (10) W6OTX, Alum Rock, NorCal, PAARA 181 Al_RX_All 444.475 +5 Low - 180 + Color 1 1 1 - # Receive only 182 Al_World 444.475 +5 High - 180 - Color 1 1 11 91 # 91 Worldwide 183 Al_North_Am 444.475 +5 High - 180 - Color 1 1 12 93 # 93 North America 184 Al_TAC_310 444.475 +5 High - 180 - Color 1 1 13 10 # 310 TAC 310 185 Al_TAC_311 444.475 +5 High - 180 - Color 1 1 14 11 # 311 TAC 311 186 Al_USA_Nation 444.475 +5 High - 180 - Color 1 1 15 100 # 3100 USA Nationwide 187 Al_California 444.475 +5 High - 180 - Color 1 1 16 106 # 3106 California 188 Al_NorCal 444.475 +5 High - 180 - Color 1 2 19 68 # 31068 NorCal 189 Al_Bay-Net 444.475 +5 High - 180 - Color 1 1 20 75 # 31075 Bay-Net 190 Al_Anarchy 444.475 +5 High - 180 - Color 1 2 23 66 # 31666 DMR of Anarchy 191 Al_NC_5150 444.475 +5 High - 180 - Color 1 2 24 95 # 95150 NorCal 5150 192 Al_Parrot 444.475 +5 High - 180 - Color 1 1 - 90 # 9990 Parrot # (11) DMR simplex 701 441.0 441.000 +0 High 3 555 - - 1 1 9 99 702 446.5 446.500 +0 High 3 555 - - 1 1 9 99 703 446.075 446.075 +0 High 3 555 - - 1 1 9 99 704 433.45 433.450 +0 High 3 555 - - 1 1 9 99 705 145.79 145.790 +0 High 3 555 - - 1 1 9 99 706 145.51 145.510 +0 High 3 555 - - 1 1 9 99 # Table of channel zones. # 1) Zone number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of channels: numbers and ranges (N-M) separated by comma # Zone Name Channels 1 Milpitas 1-12 # 440.125 W6TCP 2 San_Bruno 21-35 # 440.500 N6AMG 3 Boulder_Creek 41-56 # 440.5875 WB6ECE 4 Palo_Alto 61-75 # 441.850 K6OTR 5 Saratoga 81-96 # 441.950 KK6USZ 6 Mt_Umunhum 101-116 # 442.5375 WA6YCZ 7 Berkeley 121-132 # 443.500 K6LNK 8 Loma_Prieta 141-153 # 444.025 K6HLE 9 Baynet_Palo_Alto 161-172 # 444.350 WW6BAY 10 Alum_Rock 181-192 # 444.475 W6OTX 11 DMR_Simplex 701-706 # DMR Simplex: UHF, VHF 12 VHF 201-212 # 144-148 VHF Band 13 UHF 301-314 # 440-446 UHF Band 14 FM_Simplex 401-408 # FM Simplex: VHF, UHF # Table of scan lists. # 1) Scan list number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) Priority channel 1 (50% of scans): -, Sel or index # 4) Priority channel 2 (25% of scans): -, Sel or index # 5) Designated transmit channel: Last, Sel or index # 6) List of channels: numbers and ranges (N-M) separated by comma # Scanlist Name PCh1 PCh2 TxCh Channels 1 Analog - - Last 201-212,301-314 2 FM_Simplex - - Last 401-406 3 DMR_Simplex - - Last 701-706 # Table of group lists. # 1) Group list number: 1-40 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of contacts: numbers and ranges (N-M) separated by comma # Grouplist Name Contacts 1 All_Groups 91 # 91 Worldwide 1 All_Groups 93 # 93 North America 1 All_Groups 10 # 310 TAC 310 1 All_Groups 11 # 311 TAC 311 1 All_Groups 100 # 3100 USA Nationwide 1 All_Groups 106 # 3106 California 1 All_Groups 64 # 31064 Santa Clara County 1 All_Groups 65 # 31065 NorCal AllStar 1 All_Groups 68 # 31068 NorCal 1 All_Groups 75 # 31075 Bay-Net 1 All_Groups 78 # 31078 XLX013D PAPA 1 All_Groups 96 # 31096 USA - Area 6 4646 1 All_Groups 66 # 31666 DMR of Anarchy 1 All_Groups 95 # 95150 NorCal 5150 1 All_Groups 97 # 97150 Baycom 9 Simplex 99 # 99 Simplex 11 Worldwide 91 # 91 Worldwide 12 North_America 93 # 93 North America 13 TAC_310 10 # 310 TAC 310 14 TAC_311 11 # 311 TAC 311 15 USA_Nationwide 100 # 3100 USA Nationwide 16 California 106 # 3106 California 17 Santa_Clara_Cnty 64 # 31064 Santa Clara County 18 NorCal_AllStar 65 # 31065 NorCal AllStar 19 NorCal 68 # 31068 NorCal 20 Bay-Net 75 # 31075 Bay-Net 21 XLX013D_PAPA 78 # 31078 XLX013D PAPA 22 USA_Area_6 96 # 31096 USA - Area 6 4646 23 DMR_of_Anarchy 66 # 31666 DMR of Anarchy 24 NorCal_5150 95 # 95150 NorCal 5150 25 Baycom 97 # 97150 Baycom 26 Nebraska 131 # 3131 Nebraska 27 Texas 148 # 3148 Texas # Table of contacts. # 1) Contact number: 1-256 # 2) Name: up to 16 characters, use '_' instead of space # 3) Call type: Group, Private, All # 4) Call ID: 1...16777215 # 5) Call receive tone: -, + # Contact Name Type ID RxTone # From all Bay Area repeaters 91 Worldwide Group 91 - 93 North_America Group 93 - 99 Simplex Group 99 - 10 TAC_310 Group 310 - 11 TAC_311 Group 311 - 100 USA_Nationwide Group 3100 - 106 California Group 3106 - 131 Nebraska Group 3131 - 148 Texas Group 3148 - 64 Santa_Clara_Cnty Group 31064 - 65 NorCal_AllStar Group 31065 - 68 NorCal Group 31068 - 72 KPARN Group 31072 - 75 Bay-Net Group 31075 - 78 XLX013D_PAPA Group 31078 - 96 USA_Area_6 Group 31096 - 28 SNARS Group 31328 - 29 SNARS_2 Group 31329 - 66 DMR_of_Anarchy Group 31666 - 95 NorCal_5150 Group 95150 - 97 Baycom Group 97150 - # Private 90 Parrot Private 9990 - 42 Sergey_KK6ABQ Private 3114542 + # Sergey Vakulenko # Table of text messages. # 1) Message number: 1-32 # 2) Text: up to 144 characters # Message Text 1 Hi there! 2 QSY Norcal 31068, pls 3 QSY California 3106, pls 4 Be Right Back 5 My email is CALLSIGN@arrl.net 6 73 . . . dmrconfig-master/examples/dmr6x2-factory.conf000066400000000000000000000072151354060760700216100ustar00rootroot00000000000000# # Configuration generated 2018/11/14 by dmrconfig, version 0.9.191 # Radio: BTECH DMR-6x2 # Table of digital channels. # 1) Channel number: 1-4000 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Mid, Low, Turbo # 6) Scan list: - or index in Scanlist table # 7) Transmit timeout timer: (unused) # 8) Receive only: -, + # 9) Admit criteria: -, Free, Color, NColor # 10) Color code: 0, 1, 2, 3... 15 # 11) Time slot: 1 or 2 # 12) Receive group list: - or index in Grouplist table # 13) Contact for transmit: - or index in Contacts table # Digital Name Receive Transmit Power Scan TOT RO Admit Color Slot RxGL TxContact 2 Channel_2 436.325 +0 Turbo 1 - - - 1 1 1 1 # Contact1 4 Channel_4 438.875 +0 Turbo 1 - - - 1 1 1 1 # Contact1 6 Channel_6 146.325 +0 Turbo 1 - - - 1 1 1 1 # Contact1 8 Channel_8 148.875 +0 Turbo 1 - - - 1 1 1 1 # Contact1 # Table of analog channels. # 1) Channel number: 1-4000 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Mid, Low, Turbo # 6) Scan list: - or index # 7) Transmit timeout timer: (unused) # 8) Receive only: -, + # 9) Admit criteria: -, Free, Tone # 10) Squelch level: Normal (unused) # 11) Guard tone for receive, or '-' to disable # 12) Guard tone for transmit, or '-' to disable # 13) Bandwidth in kHz: 12.5, 25 # Analog Name Receive Transmit Power Scan TOT RO Admit Squelch RxTone TxTone Width 1 Channel_1 435.525 +0 Turbo 1 - - - Normal - - 25 3 Channel_3 437.575 +0 Turbo 1 - - - Normal - - 25 5 Channel_5 144.525 +0 Turbo 1 - - - Normal - - 25 7 Channel_7 147.575 +0 Turbo 1 - - - Normal - - 25 # Table of channel zones. # 1) Zone number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of channels: numbers and ranges (N-M) separated by comma # Zone Name Channels 1 Zone_1 1-8 # Table of scan lists. # 1) Scan list number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) Priority channel 1: -, Curr or index # 4) Priority channel 2: -, Curr or index # 5) Designated transmit channel: Sel or Last # 6) List of channels: numbers and ranges (N-M) separated by comma # Scanlist Name PCh1 PCh2 TxCh Channels 1 Scan_List_1 - - Sel 1-8 # Table of contacts. # 1) Contact number: 1-10000 # 2) Name: up to 16 characters, use '_' instead of space # 3) Call type: Group, Private, All # 4) Call ID: 1...16777215 # 5) Incoming call alert: -, +, Online # Contact Name Type ID RxTone 1 Contact1 Group 12345678 - # Table of group lists. # 1) Group list number: 1-250 # 2) Name: up to 35 characters, use '_' instead of space # 3) List of contacts: numbers and ranges (N-M) separated by comma # Grouplist Name Contacts 1 Group_List_1 1 # Table of text messages. # 1) Message number: 1-100 # 2) Text: up to 200 characters # Message Text 1 Hello! 2 Welcome! 3 Thank you! 4 Good bye! 5 Happy every day! # Unique DMR ID and name of this radio. ID: 12345678 Name: My Radio # Text displayed when the radio powers up. Intro Line 1: WELCOM Intro Line 2: ANYTONE dmrconfig-master/examples/dmr6x2-rmham-2018-10-20.conf000066400000000000000000000610521354060760700222710ustar00rootroot00000000000000# # Configuration generated 2018/11/12 by dmrconfig, version 0.9.193 # Radio: BTECH DMR-6x2 # Table of digital channels. # 1) Channel number: 1-4000 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Mid, Low, Turbo # 6) Scan list: - or index in Scanlist table # 7) Transmit timeout timer: (unused) # 8) Receive only: -, + # 9) Admit criteria: -, Free, Color, NColor # 10) Color code: 0, 1, 2, 3... 15 # 11) Time slot: 1 or 2 # 12) Receive group list: - or index in Grouplist table # 13) Contact for transmit: - or index in Contacts table # Digital Name Receive Transmit Power Scan TOT RO Admit Color Slot RxGL TxContact 94 ABQ_Rk_Mtn 442.900 +5 High 3 - - NColor 7 1 7 9 # Rocky Mountain 95 ABQ_South 442.900 +5 High 3 - - NColor 7 2 9 11 # South 96 Akron_Rk_Mtn 448.175 -5 High 2 - - NColor 7 1 7 9 # Rocky Mountain 97 Akron_North 448.175 -5 High 2 - - NColor 7 2 8 13 # North 98 Almagre_Rk_Mtn 446.950 -5 High 3 - - NColor 7 1 7 9 # Rocky Mountain 99 Almagre_South 446.950 -5 High 3 - - NColor 7 2 9 11 # South 100 Badger_Rk_Mtn 446.7625 -5 High 1 - - NColor 7 1 7 9 # Rocky Mountain 101 Badger_Central 446.7625 -5 High 1 - - NColor 7 2 10 12 # Central 102 Boulder_Rk_Mtn 446.9875 -5 High 2 - - NColor 7 1 7 9 # Rocky Mountain 103 Boulder_North 446.9875 -5 High 2 - - NColor 7 2 8 13 # North 104 Breck_Rk_Mtn 445.0875 -5 High 1 - - NColor 7 1 7 9 # Rocky Mountain 105 Breck_Central 445.0875 -5 High 1 - - NColor 7 2 10 12 # Central 106 Canon_Rk_Mtn 446.7375 -5 High 3 - - NColor 7 1 7 9 # Rocky Mountain 107 Canon_South 446.7375 -5 High 3 - - NColor 7 2 9 11 # South 108 Cheyenne_Rk_Mtn 449.9375 -5 High 2 - - NColor 7 1 7 9 # Rocky Mountain 109 Cheyenne_North 449.9375 -5 High 2 - - NColor 7 2 8 13 # North 110 Devils_South 446.925 -5 High 3 - - NColor 7 1 9 11 # South 111 Devils_Central 446.925 -5 High 1 - - NColor 7 2 10 12 # Central 112 Durango_Rk_Mtn 446.7375 -5 High 3 - - NColor 6 1 7 9 # Rocky Mountain 113 Durango_South 446.7375 -5 High 3 - - NColor 6 2 9 11 # South 114 Ft_Morgan_Rk_Mtn 448.200 -5 High 2 - - NColor 7 1 7 9 # Rocky Mountain 115 Ft_Morgan_North 448.200 -5 High 2 - - NColor 7 2 8 13 # North 116 Genoa_Rk_Mtn 446.7375 -5 High 1 - - NColor 8 1 7 9 # Rocky Mountain 117 Genoa_Central 446.7375 -5 High 1 - - NColor 8 2 10 12 # Central 118 Horsetooth_Rk_Mt 446.750 -5 High 2 - - NColor 7 1 7 9 # Rocky Mountain 119 Horsetooth_North 446.750 -5 High 2 - - NColor 7 2 8 13 # North 120 Leadville_Rk_Mtn 445.050 -5 High 1 - - NColor 7 1 7 9 # Rocky Mountain 121 Leadville_Centra 445.050 -5 High 1 - - NColor 7 2 10 12 # Central 122 Lookout_Local 446.8375 -5 High 1 - - NColor 7 1 11 10 # Lookout Local 123 Lookout_Central 446.8375 -5 High 1 - - NColor 7 2 10 12 # Central 124 Pueblo_Rk_Mtn 446.9875 -5 High 3 - - NColor 6 1 7 9 # Rocky Mountain 125 Pueblo_South 446.9875 -5 High 3 - - NColor 6 2 9 11 # South 126 Salida_Rk_Mtn 446.8125 -5 High 3 - - NColor 7 1 7 9 # Rocky Mountain 127 Salida_South 446.8125 -5 High 3 - - NColor 7 2 9 11 # South 128 Squaw_Rk_Mtn 446.9375 -5 High 1 - - NColor 7 1 7 9 # Rocky Mountain 129 Squaw_Central 446.9375 -5 High 1 - - NColor 7 2 10 12 # Central 130 Thorodin_Rk_Mtn 446.800 -5 High 1 - - NColor 7 1 7 9 # Rocky Mountain 131 Thorodin_Central 446.800 -5 High 1 - - NColor 7 2 10 12 # Central 132 Vail_Rk_Mtn 445.075 -5 High 1 - - NColor 7 1 7 9 # Rocky Mountain 133 Vail_Central 445.075 -5 High 1 - - NColor 7 2 10 12 # Central 134 Westcreek_Rk_Mtn 446.875 -5 High 1 - - NColor 6 1 7 9 # Rocky Mountain 135 Westcreek_Centra 446.875 -5 High 1 - - NColor 6 2 10 12 # Central 136 Trailer_Rk_Mtn 438.225 -5 High 1 - - NColor 7 1 7 9 # Rocky Mountain 137 Trailer_North 438.225 -5 High 2 - - NColor 7 2 8 13 # North 138 Trailer_Central 438.225 -5 High 1 - - NColor 7 2 10 12 # Central 139 Trailer_South 438.225 -5 High 3 - - NColor 7 2 9 11 # South 140 446.2000_SX_Dig 446.200 +0 High - - - NColor 1 1 - 25 # All Call 141 446.2125_SX_Dig 446.2125 +0 High - - - NColor 1 1 - 25 # All Call 142 446.2250_SX_Dig 446.225 +0 High - - - NColor 1 1 - 25 # All Call 143 446.2375_SX_Dig 446.2375 +0 High - - - NColor 1 1 - 25 # All Call 144 446.2500_SX_Dig 446.250 +0 High - - - NColor 1 1 - 25 # All Call 145 446.2625_SX_Dig 446.2625 +0 High - - - NColor 1 1 - 25 # All Call 146 446.2750_SX_Dig 446.275 +0 High - - - NColor 1 1 - 25 # All Call 147 446.2875_SX_Dig 446.2875 +0 High - - - NColor 1 1 - 25 # All Call 148 446.3000_SX_Dig 446.300 +0 High - - - NColor 1 1 - 25 # All Call 149 DMR.MARC_Simplex 446.075 +0 High - - - NColor 1 1 6 7 # DMR MARC Simplex 150 W0CFI_S1 446.625 -5 High - - - NColor 7 1 - 25 # All Call 151 W0TX_WorldWide 446.7875 -5 High - - - NColor 1 1 - 6 # BM Worldwide 152 W0TX_USA 446.7875 -5 High - - - NColor 1 1 - 14 # BM USA 153 W0TX_Mtn_West 446.7875 -5 High - - - NColor 1 1 - 19 # BM MTN West 154 W0TX_Colorado 446.7875 -5 High - - - NColor 1 1 - 15 # BM Colorado 155 W0TX_T310 446.7875 -5 High - - - NColor 1 1 - 8 # BM TAC 310 156 W0TX_Parrot 446.7875 -5 High - - - NColor 1 1 13 18 # BM Parrot 157 W0TX_TS1_Unlink 446.7875 -5 High - - - NColor 1 1 - 17 # BM Unlink 158 W0TX_Local 446.7875 -5 High - - - NColor 1 2 - 20 # BM W0TX Lcl 159 SlvrH_WorldWide 446.825 -5 High - - - NColor 1 1 - 6 # BM Worldwide 160 SlvrH_USA 446.825 -5 High - - - NColor 1 1 - 14 # BM USA 161 SlvrH_Mtn_West 446.825 -5 High - - - NColor 1 1 - 19 # BM MTN West 162 SlvrH_Colorado 446.825 -5 High - - - NColor 1 1 - 15 # BM Colorado 163 SlvrH_T310 446.825 -5 High - - - NColor 1 1 - 8 # BM TAC 310 164 SlvrH_Parrot 446.825 -5 High - - - NColor 1 1 13 18 # BM Parrot 165 SlvrH_TS1_Unlink 446.825 -5 High - - - NColor 1 1 - 17 # BM Unlink 166 SlvrH_ARESDEC 446.825 -5 High - - - NColor 1 2 - 23 # BM ARESDEC 167 PRA_Worldwide 445.075 -5 High - - - NColor 1 1 - 6 # BM Worldwide 168 PRA_USA 445.075 -5 High - - - NColor 1 1 - 14 # BM USA 169 PRA_Mtn_West 445.075 -5 High - - - NColor 1 1 - 19 # BM MTN West 170 PRA_Colorado 445.075 -5 High - - - NColor 1 1 - 15 # BM Colorado 171 PRA_T310 445.075 -5 High - - - NColor 1 1 - 8 # BM TAC 310 172 PRA_Parrot 445.075 -5 High - - - NColor 1 1 13 18 # BM Parrot 173 PRA_TS1_Unlink 445.075 -5 High - - - NColor 1 1 - 17 # BM Unlink 174 PRA_Local 445.075 -5 High - - - NColor 1 2 - 24 # BM PRA Lcl 175 Lee_Hill_WW 445.050 -5 High - - - NColor 1 1 13 6 # BM Worldwide 176 Lee_Hill_USA 445.050 -5 High - - - NColor 1 1 13 14 # BM USA 177 Lee_Hill_MtnWest 445.050 -5 High - - - NColor 1 1 13 19 # BM MTN West 178 Lee_Hill_Colo 445.050 -5 High - - - NColor 1 1 13 15 # BM Colorado 179 Lee_Hill_T310 445.050 -5 High - - - NColor 1 1 13 8 # BM TAC 310 180 Lee_Hill_Parrot 445.050 -5 High - - - NColor 1 1 13 18 # BM Parrot 181 Lee_Hill_TS1_UNL 445.050 -5 High - - - NColor 1 1 13 17 # BM Unlink 182 Lee_Hill_Local 445.050 -5 High - - - NColor 1 2 13 21 # Lee Hill Local 183 C_Sprgs_WW 445.0625 -5 High - - - NColor 1 1 13 6 # BM Worldwide 184 C_Sprgs_USA 445.0625 -5 High - - - NColor 1 1 13 14 # BM USA 185 C_Sprgs_MtnWest 445.0625 -5 High - - - NColor 1 1 13 19 # BM MTN West 186 C_Sprgs_Colorado 445.0625 -5 High - - - NColor 1 1 13 15 # BM Colorado 187 C_Sprgs_T310 445.0625 -5 High - - - NColor 1 1 13 8 # BM TAC 310 188 C_Sprgs_Parrot 445.0625 -5 High - - - NColor 1 1 13 18 # BM Parrot 189 C_Sprgs_TS1_UNL 445.0625 -5 High - - - NColor 1 1 13 17 # BM Unlink 190 C_Sprgs_Local 445.0625 -5 High - - - NColor 1 2 13 22 # C Spgs Local 191 Mission_Rk_Mtn 445.1375 -5 High 3 - - NColor 7 1 7 9 # Rocky Mountain 192 Mission_South 445.1375 -5 High 3 - - NColor 7 2 9 11 # South 193 Rangely_Rk_Mtn 445.2625 -5 High 3 - - NColor 7 1 7 9 # Rocky Mountain 194 Rangely_Central 445.2625 -5 High 1 - - NColor 7 2 10 12 # Central # Table of analog channels. # 1) Channel number: 1-4000 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Mid, Low, Turbo # 6) Scan list: - or index # 7) Transmit timeout timer: (unused) # 8) Receive only: -, + # 9) Admit criteria: -, Free, Tone # 10) Squelch level: Normal (unused) # 11) Guard tone for receive, or '-' to disable # 12) Guard tone for transmit, or '-' to disable # 13) Bandwidth in kHz: 12.5, 25 # Analog Name Receive Transmit Power Scan TOT RO Admit Squelch RxTone TxTone Width 1 Denver_Thorodin 449.225 -5 High 5 - - - Normal 141.3 141.3 25 2 Denver_Squaw 448.225 -5 High 5 - - - Normal 141.3 141.3 25 3 Denver_Lookout 449.625 -5 High 5 - - - Normal 141.3 141.3 25 4 Denver_Lee_Hill 447.750 -5 High 5 - - - Normal 141.3 141.3 25 5 Breckenridge 447.850 -5 High 5 - - - Normal 100.0 100.0 25 6 446.000_Simplex 446.000 +0 High - - - - Normal - - 25 7 446.000_Smplx_PL 446.000 +0 High - - - - Normal 141.3 141.3 25 8 446.025_Simplex 446.025 +0 High - - - - Normal - - 25 9 446.025_Smplx_PL 446.025 +0 High - - - - Normal 141.3 141.3 25 10 446.050_Simplex 446.050 +0 High - - - - Normal - - 25 11 446.050_Smplx_PL 446.050 +0 High - - - - Normal 141.3 141.3 25 12 446.075_Simplex 446.075 +0 High - - - - Normal - - 25 13 446.075_Smplx_PL 446.075 +0 High - - - - Normal 141.3 141.3 25 14 446.100_Simplex 446.100 +0 High - - - - Normal - - 25 15 446.100_Smplx_PL 446.100 +0 High - - - - Normal 141.3 141.3 25 16 446.125_Simplex 446.125 +0 High - - - - Normal - - 25 17 446.125_Smplx_PL 446.125 +0 High - - - - Normal 141.3 141.3 25 18 446.150_Simplex 446.150 +0 High - - - - Normal - - 25 19 446.150_Smplx_PL 446.150 +0 High - - - - Normal 141.3 141.3 25 20 446.175_Simplex 446.175 +0 High - - - - Normal - - 25 21 446.175_Smplx_PL 446.175 +0 High - - - - Normal 141.3 141.3 25 22 446.200_Simplex 446.200 +0 High - - - - Normal - - 12.5 23 446.200_SmplxDCS 446.200 +0 High - - - - Normal D023N D023N 12.5 24 446.225_Simplex 446.225 +0 High - - - - Normal - - 12.5 25 446.225_SmplxDCS 446.225 +0 High - - - - Normal D023N D023N 12.5 26 446.250_Simplex 446.250 +0 High - - - - Normal - - 12.5 27 446.250_SmplxDCS 446.250 -0.025 High - - - - Normal D023N D023N 12.5 28 446.275_Simplex 446.275 +0 High - - - - Normal - - 12.5 29 446.275_SmplxDCS 446.275 +0 High - - - - Normal D023N D023N 12.5 30 446.300_Simplex 446.275 +0 High - - - - Normal - - 12.5 31 446.300_SmplxDCS 446.275 +0 High - - - - Normal D023N D023N 12.5 32 438.225_91.5 438.225 -5 High - - - - Normal 91.5 91.5 25 33 447.225_103.5 447.225 -5 High - - - - Normal 103.5 103.5 25 34 449.075_141.3 449.075 -5 High - - - - Normal 141.3 141.3 25 35 449.100_141.3 449.100 -5 High - - - - Normal 141.3 141.3 25 36 447.300_BZZ_Rptr 447.300 -5 High - - - - Normal 141.3 141.3 25 37 448.050_K0PWO1 448.050 -5 High - - - - Normal 179.9 179.9 25 38 448.050_K0PWO2 448.050 -5 High - - - - Normal D023N D023N 25 39 448.325_K0PWO3 448.325 -5 High - - - - Normal 179.9 179.9 25 40 448.325_K0PWO4 448.325 -5 High - - - - Normal D023N D023N 25 41 447.125_91.5 447.125 -5 High 6 - - - Normal 91.5 91.5 25 42 447.150_107.2 447.150 -5 High 6 - - - Normal - 107.2 25 43 447.175_186.2 447.175 -5 High 6 - - - Normal - 186.2 25 44 447.225_141.3 447.225 -5 High 6 - - - Normal 141.3 141.3 25 45 447.275_100.0 447.275 -5.15 High 6 - - - Normal - 100.0 25 46 447.350_151.4 447.350 -5 High 6 - - - Normal 151.4 151.4 25 47 447.450_123.0 447.450 -5 High 6 - - - Normal - 123.0 25 48 447.500_88.5 447.500 -5 High 6 - - - Normal - 88.5 25 49 447.650_141.3 447.650 -5 High 6 - - - Normal 141.3 141.3 25 50 447.700_100.0 447.700 -5 High 6 - - - Normal 100.0 100.0 25 51 447.750_141.3 447.750 -5 High 6 - - - Normal 141.3 141.3 25 52 447.825_NB_073 447.825 -5 High 6 - - - Normal D073N D073N 12.5 53 447.925_100.0 447.925 -5 High 6 - - - Normal - 100.0 25 54 447.975_107.2 447.975 -5 High 6 - - - Normal - 107.2 25 55 448.025_100.0 448.025 -5 High 7 - - - Normal - 100.0 25 56 448.075_123.0 448.075 -5 High 7 - - - Normal - 123.0 25 57 448.125_107.2 448.125 -5 High 7 - - - Normal - 107.2 25 58 448.200_NB_023 448.200 -5 High 7 - - - Normal D023N D023N 12.5 59 448.200_141.3 448.200 -5 High 7 - - - Normal 141.3 141.3 25 60 448.225_141.3 448.225 -5 High 7 - - - Normal - 141.3 25 61 448.450_100.0 448.450 -5 High 7 - - - Normal 100.0 100.0 25 62 448.475_100.0 448.475 -5 High 7 - - - Normal - 100.0 25 63 448.500_100.0 448.500 -5 High 7 - - - Normal - 100.0 25 64 448.625_100.0 448.625 -5 High 7 - - - Normal - 100.0 25 65 448.675_100.0 448.625 -5 High 7 - - - Normal - 100.0 25 66 448.700_146.2 448.700 -5 High 7 - - - Normal - 146.2 25 67 448.850_88.5 448.850 -5 High 7 - - - Normal - 88.5 25 68 448.900_100.0 448.900 -5 High 7 - - - Normal - 100.0 25 69 448.975_123.0 448.975 -5 High 7 - - - Normal - 123.0 25 70 448.975_100.0 448.975 -5 High 7 - - - Normal 100.0 100.0 25 71 449.050_107.2 449.050 -5 High 8 - - - Normal - 107.2 25 72 449.125_103.5 449.125 -5 High 8 - - - Normal - 103.5 25 73 449.350_100.0 449.350 -5 High 8 - - - Normal - 100.0 25 74 449.450_103.5 449.450 -5 High 8 - - - Normal - 103.5 25 75 449.525_100.0 449.525 -5 High 8 - - - Normal - 100.0 25 76 449.600_100.0 449.600 -5 High 8 - - - Normal - 100.0 25 77 449.625_141.3 449.625 -5 High 8 - - - Normal 141.3 141.3 25 78 449.650_136.5 449.650 -5 High 8 - - - Normal - 136.5 25 79 449.725_127.3 449.725 -5 High 8 - - - Normal - 127.3 25 80 449.750_103.5 449.750 -5 High 8 - - - Normal - 103.5 25 81 449.800_123.0 449.800 -5 High 8 - - - Normal - 123.0 25 82 449.825_103.5 449.825 -5 High 8 - - - Normal - 103.5 25 83 449.850_100.0 449.850 -5 High 8 - - - Normal - 100.0 25 84 449.875_103.5 449.875 -5 High 8 - - - Normal - 103.5 25 85 Devilshead 448.950 -5 High - - - - Normal 100.0 100.0 25 86 Cordova_Pass 449.750 -5 High - - - - Normal 100.0 100.0 25 87 Black_Forest 447.625 -5 High - - - - Normal 100.0 100.0 25 88 Boone 447.275 -5 High - - - - Normal 100.0 100.0 25 89 Pueblo_Salida 449.975 -5 High - - - - Normal 100.0 100.0 25 90 Canon_City 447.975 -5 High - - - - Normal 100.0 100.0 25 91 Canon_Fremont 447.250 -5 High - - - - Normal 100.0 100.0 25 92 DIA_Denver 448.150 -5 High - - - - Normal 141.3 141.3 25 93 Pueblo_West 448.975 -5 High - - - - Normal 100.0 100.0 25 # Table of channel zones. # 1) Zone number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of channels: numbers and ranges (N-M) separated by comma # Zone Name Channels 1 TRBO_CentralEast 111,116-117,122-123,128-131,134-135 2 TRBO_CentralWest 100-101,104-105,120-121,132-133,193-194 3 TRBO_North 96-97,102-103,108-109,114-115,118-119,136-137 4 TRBO_South 94-95,98-99,106-107,110-113,124-127,191-192 5 BM_RMHAM 175-190 6 BM_Other_1 151-158 7 BM_Other_2 159-174 8 RMHAM_Analog 1-5 9 Fun_Machines 85-93 10 SX_Analog 6-21 11 SX_Analog_NB 22-31 12 SX_Digital 140-149 13 W0CFI_Local 150 14 Portable_Rptrs 32-36,39-40,136-137,139 15 HAM_447 33,41-54 16 Ham_448 55-70 17 HAM_449 71-84 18 ARES_525 1 # Table of scan lists. # 1) Scan list number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) Priority channel 1: -, Curr or index # 4) Priority channel 2: -, Curr or index # 5) Designated transmit channel: Sel or Last # 6) List of channels: numbers and ranges (N-M) separated by comma # Scanlist Name PCh1 PCh2 TxCh Channels 1 TRBO_Central - - Sel 100-102,104-105,111,116-117,120-123,128-135,193-194 2 TRBO_North - - Sel 96-97,102-103,108-109,114-115,118-119,136-137 3 TRBO_South - - Sel 94-95,98-99,106-107,110-113,124-127,136,139,191-192 4 DMR_MARC_RMHAM - - Sel 175 5 RMHAM_Analog - - Sel 1-5 6 HAM_447 - - Sel 33,41-54 7 HAM_448 - - Sel 55-70 8 HAM_449 - - Sel 71-84 # Table of contacts. # 1) Contact number: 1-10000 # 2) Name: up to 16 characters, use '_' instead of space # 3) Call type: Group, Private, All # 4) Call ID: 1...16777215 # 5) Incoming call alert: -, +, Online # Contact Name Type ID RxTone 1 Contact_1 Group 1 - 2 Local Group 2 - 3 DMR_MARC_NA Group 3 - 4 BM_Rflctr Group 9 - 5 DMR_MARC_WW_Eng Group 13 - 6 BM_Worldwide Group 91 - 7 DMR_MARC_Simplex Group 99 - 8 BM_TAC_310 Group 310 - 9 Rocky_Mountain Group 700 - 10 Lookout_Local Group 710 - 11 South Group 719 - 12 Central Group 720 - 13 North Group 721 - 14 BM_USA Group 3100 - 15 BM_Colorado Group 3108 - 16 DMR_MARC_MTN Group 3177 - 17 BM_Unlink Group 4000 - 18 BM_Parrot Private 9990 - 19 BM_MTN_West Group 31062 - 20 BM_W0TX_Lcl Group 310804 - 21 Lee_Hill_Local Group 310819 - 22 C_Spgs_Local Group 310820 - 23 BM_ARESDEC Group 310842 - 24 BM_PRA_Lcl Group 310844 - 25 All_Call All 16777215 - # Table of group lists. # 1) Group list number: 1-250 # 2) Name: up to 35 characters, use '_' instead of space # 3) List of contacts: numbers and ranges (N-M) separated by comma # Grouplist Name Contacts 2 DMR_MARC_NA 3 3 DMR_MARC_WW_Eng 5 4 Local 16 5 DMR_MARC_MTN 16 6 DMR_MARC_Simplex 7 7 Rocky_Mountain 9 8 North 13 9 South 11 10 Central 12 11 Lookout_Local 10 13 BM_All 2,4,6,8,14-15,17,19-24 14 BM_TAC_310 8 15 BM_USA 14 16 BM_Colorado 15 17 BM_MTN_West 19 18 BM_Unlink 17 20 BM_ARESDEC 23 21 BM_Worldwide 6 22 BM_W0TX_Lcl 20 # Table of text messages. # 1) Message number: 1-100 # 2) Text: up to 200 characters # Message Text 1 Hello! 2 Welcome! 3 Thank you! 4 Good bye! 5 Happy every day! # Unique DMR ID and name of this radio. ID: 54321 Name: RMHAM Sample # Text displayed when the radio powers up. Intro Line 1: - Intro Line 2: - dmrconfig-master/examples/gd77-empty.conf000066400000000000000000000044751354060760700207320ustar00rootroot00000000000000# # Configuration generated 2018/11/12 by dmrconfig, version 0.9.193 # Radio: Radioddity GD-77 Last Programmed Date: 2018-10-04 21:05 # Table of digital channels. # 1) Channel number: 1-1024 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Low # 6) Scan list: - or index in Scanlist table # 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555 # 8) Receive only: -, + # 9) Admit criteria: -, Free, Color # 10) Color code: 0, 1, 2, 3... 15 # 11) Time slot: 1 or 2 # 12) Receive group list: - or index in Grouplist table # 13) Contact for transmit: - or index in Contacts table # Digital Name Receive Transmit Power Scan TOT RO Admit Color Slot RxGL TxContact 1 Channel1 440.425 +0 High 1 - - - 0 1 1 1 # Contact1 # Table of channel zones. # 1) Zone number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of channels: numbers and ranges (N-M) separated by comma # Zone Name Channels 1 Zone1 1 # Table of scan lists. # 1) Scan list number: 1-64 # 2) Name: up to 16 characters, use '_' instead of space # 3) Priority channel 1 (50% of scans): -, Sel or index # 4) Priority channel 2 (25% of scans): -, Sel or index # 5) Designated transmit channel: Last, Sel or index # 6) List of channels: numbers and ranges (N-M) separated by comma # Scanlist Name PCh1 PCh2 TxCh Channels 1 ScanList1 - - Last 1 # Table of contacts. # 1) Contact number: 1-1024 # 2) Name: up to 16 characters, use '_' instead of space # 3) Call type: Group, Private, All # 4) Call ID: 1...16777215 # 5) Call receive tone: -, + # Contact Name Type ID RxTone 1 Contact1 Group 1 + # Table of group lists. # 1) Group list number: 1-76 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of contacts: numbers and ranges (N-M) separated by comma # Grouplist Name Contacts 1 GroupList1 1 # Table of text messages. # 1) Message number: 1-32 # 2) Text: up to 144 characters # Message Text 1 HELLO! # Unique DMR ID and name of this radio. ID: 1 Name: GD-77 # Text displayed when the radio powers up. Intro Line 1: Radioddity Intro Line 2: GD-77 dmrconfig-master/examples/gd77-factory.conf000066400000000000000000000142221354060760700212320ustar00rootroot00000000000000# # Configuration generated 2018/11/21 by dmrconfig, version 0.9.193 # Radio: Radioddity GD-77 Last Programmed Date: 2018-03-23 15:19 # Table of digital channels. # 1) Channel number: 1-1024 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Low # 6) Scan list: - or index in Scanlist table # 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555 # 8) Receive only: -, + # 9) Admit criteria: -, Free, Color # 10) Color code: 0, 1, 2, 3... 15 # 11) Time slot: 1 or 2 # 12) Receive group list: - or index in Grouplist table # 13) Contact for transmit: - or index in Contacts table # Digital Name Receive Transmit Power Scan TOT RO Admit Color Slot RxGL TxContact 1 Channel1 144.025 +0 High 1 - - - 0 1 1 1 # Contact1 2 Channel2 144.125 +0 High 1 - - - 0 1 1 1 # Contact1 3 Channel3 144.255 +0 High 1 - - - 0 1 1 1 # Contact1 4 Channel4 144.325 +0 High 1 - - - 0 1 1 1 # Contact1 5 Channel5 144.425 +0 High 1 - - - 0 1 1 1 # Contact1 6 Channel6 144.525 +0 High 1 - - - 0 1 1 1 # Contact1 7 Channel7 144.625 +0 High 1 - - - 0 1 1 1 # Contact1 8 Channel8 144.725 +0 High 1 - - - 0 1 1 1 # Contact1 9 Channel9 144.825 +0 High 1 - - - 0 1 1 1 # Contact1 10 Channel10 144.925 +0 High 1 - - - 0 1 1 1 # Contact1 11 Channel11 145.025 +0 High 1 - - - 0 1 1 1 # Contact1 12 Channel12 145.125 +0 High 1 - - - 0 1 1 1 # Contact1 13 Channel13 145.225 +0 High 1 - - - 0 1 1 1 # Contact1 14 Channel14 145.325 +0 High 1 - - - 0 1 1 1 # Contact1 15 Channel15 145.425 +0 High 1 - - - 0 1 1 1 # Contact1 17 Channel17 430.015 +0 High 2 - - - 0 1 1 1 # Contact1 18 Channel18 430.525 +0 High 2 - - - 0 1 1 1 # Contact1 19 Channel19 431.025 +0 High 2 - - - 0 1 1 1 # Contact1 20 Channel20 431.525 +0 High 2 - - - 0 1 1 1 # Contact1 21 Channel21 432.025 +0 High 2 - - - 0 1 1 1 # Contact1 22 Channel22 432.525 +0 High 2 - - - 0 1 1 1 # Contact1 23 Channel23 433.125 +0 High 2 - - - 0 1 1 1 # Contact1 24 Channel24 433.525 +0 High 2 - - - 0 1 1 1 # Contact1 25 Channel25 434.025 +0 High 2 - - - 0 1 1 1 # Contact1 26 Channel26 434.525 +0 High 2 - - - 0 1 1 1 # Contact1 27 Channel27 435.025 +0 High 2 - - - 0 1 1 1 # Contact1 28 Channel28 435.525 +0 High 2 - - - 0 1 1 1 # Contact1 29 Channel29 436.025 +0 High 2 - - - 0 1 1 1 # Contact1 30 Channel30 436.525 +0 High 2 - - - 0 1 1 1 # Contact1 31 Channel31 437.025 +0 High 2 - - - 0 1 1 1 # Contact1 # Table of analog channels. # 1) Channel number: 1-1024 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Low # 6) Scan list: - or index # 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555 # 8) Receive only: -, + # 9) Admit criteria: -, Free, Tone # 10) Squelch level: Normal, Tight # 11) Guard tone for receive, or '-' to disable # 12) Guard tone for transmit, or '-' to disable # 13) Bandwidth in kHz: 12.5, 20, 25 # Analog Name Receive Transmit Power Scan TOT RO Admit Squelch RxTone TxTone Width 16 Channel16 145.885 +0 High 1 - - - Normal 67.0 67.0 25 32 Channel32 437.850 +0 High 2 - - - Normal 67.0 67.0 25 # Table of channel zones. # 1) Zone number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of channels: numbers and ranges (N-M) separated by comma # Zone Name Channels 1 Zone1 17-32 2 Zone2 1-16 # Table of scan lists. # 1) Scan list number: 1-64 # 2) Name: up to 16 characters, use '_' instead of space # 3) Priority channel 1 (50% of scans): -, Sel or index # 4) Priority channel 2 (25% of scans): -, Sel or index # 5) Designated transmit channel: Last, Sel or index # 6) List of channels: numbers and ranges (N-M) separated by comma # Scanlist Name PCh1 PCh2 TxCh Channels 1 SCAN_V - - Last 1-16 2 SCAN_U - - Last 17-32 # Table of contacts. # 1) Contact number: 1-1024 # 2) Name: up to 16 characters, use '_' instead of space # 3) Call type: Group, Private, All # 4) Call ID: 1...16777215 # 5) Call receive tone: -, + # Contact Name Type ID RxTone 1 Contact1 Group 2 + 2 Contact2 Group 1 + 3 Contact3 All 16777215 + # Table of group lists. # 1) Group list number: 1-76 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of contacts: numbers and ranges (N-M) separated by comma # Grouplist Name Contacts 1 GroupList1 1 # Table of text messages. # 1) Message number: 1-32 # 2) Text: up to 144 characters # Message Text 1 HELLO! # Unique DMR ID and name of this radio. ID: 523 Name: GD-77 # Text displayed when the radio powers up. Intro Line 1: Radioddity Intro Line 2: GD-77 dmrconfig-master/examples/gd77-south-bay-area.conf000066400000000000000000000664551354060760700224230ustar00rootroot00000000000000# # Generic DMR configuration for South Bay Area. # Radio: Radioddity GD-77 # Table of digital channels. # 1) Channel number: 1-1024 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Low # 6) Scan list: - or index in Scanlist table # 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555 # 8) Receive only: -, + # 9) Admit criteria: -, Free, Color # 10) Color code: 0, 1, 2, 3... 15 # 11) Time slot: 1 or 2 # 12) Receive group list: - or index in Grouplist table # 13) Contact for transmit: - or index in Contacts table # Digital Name Receive Transmit Power Scan TOT RO Admit Color Slot RxGL TxContact # (1) W6TCP, Milpitas, NorCal 1 Mi_RX_All 440.125 +5 Low - 180 + Color 3 1 1 - # Receive only 2 Mi_World 440.125 +5 High - 180 - Color 3 1 11 91 # 91 Worldwide Dynamic 3 Mi_North_America 440.125 +5 High - 180 - Color 3 1 12 93 # 93 North America Dynamic 4 Mi_TAC_310 440.125 +5 High - 180 - Color 3 1 13 10 # 310 TAC 310 Dynamic 5 Mi_TAC_311 440.125 +5 High - 180 - Color 3 1 14 11 # 311 TAC 311 Dynamic 6 Mi_USA_Nation 440.125 +5 High - 180 - Color 3 1 15 100 # 3100 USA Nationwide Dynamic 7 Mi_California 440.125 +5 High - 180 - Color 3 1 16 106 # 3106 California Static 8 Mi_NorCal 440.125 +5 High - 180 - Color 3 2 19 68 # 31068 NorCal Static 9 Mi_Bay-Net 440.125 +5 High - 180 - Color 3 1 20 75 # 31075 Bay-Net Dynamic 10 Mi_Anarchy 440.125 +5 High - 180 - Color 3 2 23 66 # 31666 DMR of Anarchy Static 11 Mi_NC_5150 440.125 +5 High - 180 - Color 3 2 24 95 # 95150 NorCal 5150 Static 12 Mi_Parrot 440.125 +5 High - 180 - Color 3 1 - 90 # 9990 Parrot Private # (2) N6AMG, San Bruno, Baycom 21 Br_RX_All 440.500 +5 Low - 180 + Color 1 1 1 - # Receive only 22 Br_World 440.500 +5 High - 180 - Color 1 1 11 91 # 91 Worldwide Dynamic 23 Br_North_America 440.500 +5 High - 180 - Color 1 1 12 93 # 93 North America Static 24 Br_TAC_310 440.500 +5 High - 180 - Color 1 1 13 10 # 310 TAC 310 Dynamic 25 Br_TAC_311 440.500 +5 High - 180 - Color 1 1 14 11 # 311 TAC 311 Dynamic 26 Br_USA_Nation 440.500 +5 High - 180 - Color 1 1 15 100 # 3100 USA Nationwide Dynamic 27 Br_California 440.500 +5 High - 180 - Color 1 1 16 106 # 3106 California Static 28 Br_NC_AllStr 440.500 +5 High - 180 - Color 1 1 18 65 # 31065 NorCal AllStar Static 29 Br_NorCal 440.500 +5 High - 180 - Color 1 2 19 68 # 31068 NorCal Dynamic 30 Br_Bay-Net 440.500 +5 High - 180 - Color 1 1 20 75 # 31075 Bay-Net Static 31 Br_USA_Area6 440.500 +5 High - 180 - Color 1 1 22 96 # 31096 USA Area 6 Static 32 Br_Anarchy 440.500 +5 High - 180 - Color 1 2 23 66 # 31666 DMR of Anarchy Dynamic 33 Br_NC_5150 440.500 +5 High - 180 - Color 1 2 24 95 # 95150 NorCal 5150 Dynamic 34 Br_Baycom 440.500 +5 High - 180 - Color 1 2 25 97 # 97150 Baycom Static 35 Br_Parrot 440.500 +5 High - 180 - Color 1 1 - 90 # 9990 Parrot Private # (3) WB6ECE, Boulder Creek, Baycom 41 Bo_RX_All 440.5875 +5 Low - 180 + Color 2 1 1 - # Receive only 42 Bo_World 440.5875 +5 High - 180 - Color 2 1 11 91 # 91 Worldwide Dynamic 43 Bo_North_America 440.5875 +5 High - 180 - Color 2 1 12 93 # 93 North America Static 44 Bo_TAC_310 440.5875 +5 High - 180 - Color 2 1 13 10 # 310 TAC 310 Dynamic 45 Bo_TAC_311 440.5875 +5 High - 180 - Color 2 1 14 11 # 311 TAC 311 Dynamic 46 Bo_USA_Nation 440.5875 +5 High - 180 - Color 2 1 15 100 # 3100 USA Nationwide Dynamic 47 Bo_California 440.5875 +5 High - 180 - Color 2 1 16 106 # 3106 California Static 48 Bo_Santa_Clara 440.5875 +5 High - 180 - Color 2 1 17 64 # 31064 Santa Clara County Static 49 Bo_NC_AllStr 440.5875 +5 High - 180 - Color 2 1 18 65 # 31065 NorCal AllStar Static 50 Bo_NorCal 440.5875 +5 High - 180 - Color 2 2 19 68 # 31068 NorCal Dynamic 51 Bo_Bay-Net 440.5875 +5 High - 180 - Color 2 1 20 75 # 31075 Bay-Net Static 52 Bo_USA_Area6 440.5875 +5 High - 180 - Color 2 1 22 96 # 31096 USA Area 6 Static 53 Bo_Anarchy 440.5875 +5 High - 180 - Color 2 2 23 66 # 31666 DMR of Anarchy Dynamic 54 Bo_NC_5150 440.5875 +5 High - 180 - Color 2 2 24 95 # 95150 NorCal 5150 Dynamic 55 Bo_Baycom 440.5875 +5 High - 180 - Color 2 2 25 97 # 97150 Baycom Static 56 Bo_Parrot 440.5875 +5 High - 180 - Color 2 1 - 90 # 9990 Parrot Private # (4) K6OTR, Palo Alto, Baycom 61 PA_RX_All 441.850 +5 Low - 180 + Color 1 1 1 - # Receive only 62 PA_World 441.850 +5 High - 180 - Color 1 1 11 91 # 91 Worldwide Dynamic 63 PA_North_America 441.850 +5 High - 180 - Color 1 1 12 93 # 93 North America Static 64 PA_TAC_310 441.850 +5 High - 180 - Color 1 1 13 10 # 310 TAC 310 Dynamic 65 PA_TAC_311 441.850 +5 High - 180 - Color 1 1 14 11 # 311 TAC 311 Dynamic 66 USA_Nation 441.850 +5 High - 180 - Color 1 1 15 100 # 3100 USA Nationwide Dynamic 67 PA_California 441.850 +5 High - 180 - Color 1 1 16 106 # 3106 California Static 68 PA_NC_AllStr 441.850 +5 High - 180 - Color 1 1 18 65 # 31065 NorCal AllStar Static 69 PA_NorCal 441.850 +5 High - 180 - Color 1 2 19 68 # 31068 NorCal Dynamic 70 PA_Bay-Net 441.850 +5 High - 180 - Color 1 1 20 75 # 31075 Bay-Net Static 71 PA_USA_Area6 441.850 +5 High - 180 - Color 1 1 22 96 # 31096 USA - Area 6 4646 Static 72 PA_Anarchy 441.850 +5 High - 180 - Color 1 2 23 66 # 31666 DMR of Anarchy Dynamic 73 PA_NC_5150 441.850 +5 High - 180 - Color 1 2 24 95 # 95150 NorCal 5150 Dynamic 74 PA_Baycom 441.850 +5 High - 180 - Color 1 2 25 97 # 97150 Baycom Static 75 PA_Parrot 441.850 +5 High - 180 - Color 1 1 - 90 # 9990 Parrot Private # (5) KK6USZ, Saratoga 81 Sa_RX_All 441.950 +5 Low - 180 + Color 1 1 1 - # Receive only 82 Sa_World 441.950 +5 High - 180 - Color 1 1 11 91 # 91 Worldwide Dynamic 83 Sa_North_America 441.950 +5 High - 180 - Color 1 1 12 93 # 93 North America Dynamic 84 Sa_TAC_310 441.950 +5 High - 180 - Color 1 1 13 10 # 310 TAC 310 Dynamic 85 Sa_TAC_311 441.950 +5 High - 180 - Color 1 1 14 11 # 311 TAC 311 Dynamic 86 Sa_USA_Nation 441.950 +5 High - 180 - Color 1 1 15 100 # 3100 USA Nationwide Dynamic 87 Sa_California 441.950 +5 High - 180 - Color 1 1 16 106 # 3106 California Dynamic 88 Sa_Nebraska 441.950 +5 High - 180 - Color 1 1 26 131 # 3131 Nebraska Static 89 Sa_Texas 441.950 +5 High - 180 - Color 1 1 27 148 # 3148 Texas Dynamic 90 Sa_Santa_Clara 441.950 +5 High - 180 - Color 1 2 17 64 # 31064 Santa Clara County Static 91 Sa_NorCal 441.950 +5 High - 180 - Color 1 2 19 68 # 31068 NorCal Static 92 Sa_Bay-Net 441.950 +5 High - 180 - Color 1 2 20 75 # 31075 Bay-Net Static 93 Sa_Anarchy 441.950 +5 High - 180 - Color 1 2 23 66 # 31666 DMR of Anarchy Dynamic 94 Sa_NC_5150 441.950 +5 High - 180 - Color 1 2 24 95 # 95150 NorCal 5150 Dynamic 95 Sa_Baycom 441.950 +5 High - 180 - Color 1 2 25 97 # 97150 Baycom Static 96 Sa_Parrot 441.950 +5 High - 180 - Color 1 1 - 90 # 9990 Parrot Private # (6) WA6YCZ, Mt Umunhum, Baycom 101 Um_RX_All 442.5375 +5 Low - 180 + Color 1 1 1 - # Receive only 102 Um_World 442.5375 +5 High - 180 - Color 1 1 11 91 # 91 Worldwide Dynamic 103 Um_North_America 442.5375 +5 High - 180 - Color 1 1 12 93 # 93 North America Static 104 Um_TAC_310 442.5375 +5 High - 180 - Color 1 1 13 10 # 310 TAC 310 Dynamic 105 Um_TAC_311 442.5375 +5 High - 180 - Color 1 1 14 11 # 311 TAC 311 Dynamic 106 Um_USA_Nation 442.5375 +5 High - 180 - Color 1 1 15 100 # 3100 USA Nationwide Dynamic 107 Um_California 442.5375 +5 High - 180 - Color 1 1 16 106 # 3106 California Static 108 Um_Santa_Clara 442.5375 +5 High - 180 - Color 1 1 17 64 # 31064 Santa Clara County Static 109 Um_NC_AllStr 442.5375 +5 High - 180 - Color 1 1 18 65 # 31065 NorCal AllStar Static 110 Um_NorCal 442.5375 +5 High - 180 - Color 1 2 19 68 # 31068 NorCal Dynamic 111 Um_Bay-Net 442.5375 +5 High - 180 - Color 1 1 20 75 # 31075 Bay-Net Static 112 Um_USA_Area6 442.5375 +5 High - 180 - Color 1 1 22 96 # 31096 USA Area 6 Static 113 Um_Anarchy 442.5375 +5 High - 180 - Color 1 2 23 66 # 31666 DMR of Anarchy Dynamic 114 Um_NC_5150 442.5375 +5 High - 180 - Color 1 2 24 95 # 95150 NorCal 5150 Dynamic 115 Um_Baycom 442.5375 +5 High - 180 - Color 1 2 25 97 # 97150 Baycom Static 116 Um_Parrot 442.5375 +5 High - 180 - Color 1 1 - 90 # 9990 Parrot Private # (7) K6LNK, Berkeley, NorCal, Carla 121 Be_RX_All 443.500 +5 Low - 180 + Color 1 1 1 - # Receive only 122 Be_World 443.500 +5 High - 180 - Color 1 1 11 91 # 91 Worldwide Dynamic 123 Be_North_America 443.500 +5 High - 180 - Color 1 1 12 93 # 93 North America Dynamic 124 Be_TAC_310 443.500 +5 High - 180 - Color 1 1 13 10 # 310 TAC 310 Dynamic 125 Be_TAC_311 443.500 +5 High - 180 - Color 1 1 14 11 # 311 TAC 311 Dynamic 126 Be_USA_Nation 443.500 +5 High - 180 - Color 1 1 15 100 # 3100 USA Nationwide Dynamic 127 Be_California 443.500 +5 High - 180 - Color 1 1 16 106 # 3106 California Static 128 Be_NorCal 443.500 +5 High - 180 - Color 1 2 19 68 # 31068 NorCal Static 129 Be_Bay-Net 443.500 +5 High - 180 - Color 1 1 20 75 # 31075 Bay-Net Dynamic 130 Be_Anarchy 443.500 +5 High - 180 - Color 1 2 23 66 # 31666 DMR of Anarchy Dynamic 131 Be_NC_5150 443.500 +5 High - 180 - Color 1 2 24 95 # 95150 NorCal 5150 Dynamic 132 Be_Parrot 443.500 +5 High - 180 - Color 1 1 - 90 # 9990 Parrot Private # (8) K6HLE, Loma Prieta, NorCal, AREA 141 Lo_RX_All 444.025 +5 Low - 180 + Color 1 1 1 - # Receive only 142 Lo_World 444.025 +5 High - 180 - Color 1 1 11 91 # 91 Worldwide Dynamic 143 Lo_North_America 444.025 +5 High - 180 - Color 1 1 12 93 # 93 North America Static 144 Lo_TAC_310 444.025 +5 High - 180 - Color 1 1 13 10 # 310 TAC 310 Dynamic 145 Lo_TAC_311 444.025 +5 High - 180 - Color 1 1 14 11 # 311 TAC 311 Dynamic 146 Lo_USA_Nation 444.025 +5 High - 180 - Color 1 1 15 100 # 3100 USA Nationwide Dynamic 147 Lo_California 444.025 +5 High - 180 - Color 1 1 16 106 # 3106 California Static 148 Lo_NorCal 444.025 +5 High - 180 - Color 1 2 19 68 # 31068 NorCal Static 149 Lo_Bay-Net 444.025 +5 High - 180 - Color 1 1 20 75 # 31075 Bay-Net Dynamic 150 Lo_USA_Area6 444.025 +5 High - 180 - Color 1 1 22 96 # 31096 USA - Area 6 4646 Static 151 Lo_Anarchy 444.025 +5 High - 180 - Color 1 2 23 66 # 31666 DMR of Anarchy Dynamic 152 Lo_NC_5150 444.025 +5 High - 180 - Color 1 2 24 95 # 95150 NorCal 5150 Dynamic 153 Lo_Parrot 444.025 +5 High - 180 - Color 1 1 - 90 # 9990 Parrot Private # (9) WW6BAY, Palo Alto, Bay-Net 161 Bay_RX_All 444.350 +5 Low - 180 + Color 1 1 1 - # Receive only 162 Bay_World 444.350 +5 High - 180 - Color 1 1 11 91 # 91 Worldwide Dynamic 163 Bay_North_Am 444.350 +5 High - 180 - Color 1 1 12 93 # 93 North America Dynamic 164 Bay_TAC_310 444.350 +5 High - 180 - Color 1 1 13 10 # 310 TAC 310 Dynamic 165 Bay_TAC_311 444.350 +5 High - 180 - Color 1 1 14 11 # 311 TAC 311 Dynamic 166 Bay_USA_Nation 444.350 +5 High - 180 - Color 1 1 15 100 # 3100 USA Nationwide Dynamic 167 Bay_Santa_Clara 444.350 +5 High - 180 - Color 1 1 17 64 # 31064 Santa Clara County Static 168 Bay_NorCal 444.350 +5 High - 180 - Color 1 2 19 68 # 31068 NorCal Dynamic 169 Bay_Bay-Net 444.350 +5 High - 180 - Color 1 2 20 75 # 31075 Bay-Net Static 170 Bay_Anarchy 444.350 +5 High - 180 - Color 1 2 23 66 # 31666 DMR of Anarchy Dynamic 171 Bay_NC_5150 444.350 +5 High - 180 - Color 1 2 24 95 # 95150 NorCal 5150 Dynamic 172 Bay_Parrot 444.350 +5 High - 180 - Color 1 1 - 90 # 9990 Parrot Private # (10) W6OTX, Alum Rock, NorCal, PAARA 181 Al_RX_All 444.475 +5 Low - 180 + Color 1 1 1 - # Receive only 182 Al_World 444.475 +5 High - 180 - Color 1 1 11 91 # 91 Worldwide Dynamic 183 Al_North_Am 444.475 +5 High - 180 - Color 1 1 12 93 # 93 North America Dynamic 184 Al_TAC_310 444.475 +5 High - 180 - Color 1 1 13 10 # 310 TAC 310 Dynamic 185 Al_TAC_311 444.475 +5 High - 180 - Color 1 1 14 11 # 311 TAC 311 Dynamic 186 Al_USA_Nation 444.475 +5 High - 180 - Color 1 1 15 100 # 3100 USA Nationwide Dynamic 187 Al_California 444.475 +5 High - 180 - Color 1 1 16 106 # 3106 California Static 188 Al_NorCal 444.475 +5 High - 180 - Color 1 2 19 68 # 31068 NorCal Static 189 Al_Bay-Net 444.475 +5 High - 180 - Color 1 1 20 75 # 31075 Bay-Net Dynamic 190 Al_Anarchy 444.475 +5 High - 180 - Color 1 2 23 66 # 31666 DMR of Anarchy Dynamic 191 Al_NC_5150 444.475 +5 High - 180 - Color 1 2 24 95 # 95150 NorCal 5150 Dynamic 192 Al_Parrot 444.475 +5 High - 180 - Color 1 1 - 90 # 9990 Parrot Private # (11) DMR simplex 701 441.0 441.000 +0 High 3 555 - - 1 1 9 99 702 446.5 446.500 +0 High 3 555 - - 1 1 9 99 703 446.075 446.075 +0 High 3 555 - - 1 1 9 99 704 433.45 433.450 +0 High 3 555 - - 1 1 9 99 705 145.79 145.790 +0 High 3 555 - - 1 1 9 99 706 145.51 145.510 +0 High 3 555 - - 1 1 9 99 # Table of analog channels. # 1) Channel number: 1-1024 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Low # 6) Scan list: - or index # 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555 # 8) Receive only: -, + # 9) Admit criteria: -, Free, Tone # 10) Squelch level: Normal, Tight # 11) Guard tone for receive, or '-' to disable # 12) Guard tone for transmit, or '-' to disable # 13) Bandwidth in kHz: 12.5, 20, 25 # Analog Name Receive Transmit Power Scan TOT RO Admit Squelch RxTone TxTone Width # VHF Band 144-148 201 Palo_Alto_N6NFI 145.230 -0.6 High 1 180 - Free Normal - 100.0 25 202 Milpitas_W6MLP 145.430 -0.6 High 1 180 - Free Normal - 85.4 25 203 Saratoga_K6SA 146.655 -0.6 High 1 180 - Free Normal - 114.8 25 204 Newark_N6MM 146.670 -0.6 High 1 180 - Free Normal - 110.9 25 205 Mill_Vally_K6GWE 146.700 -0.6 High 1 180 - Free Normal - 179.9 25 206 San_Jose_K6INC 146.820 -0.6 High 1 180 - Free Normal - 123.0 25 207 Orinda_K6LNK 146.850 -0.6 High 1 180 - Free Normal - 103.5 25 208 Pleasanton_W6SRR 147.045 +0.6 High 1 180 - Free Normal - 94.8 25 209 Concord_W6CX 147.060 +0.6 High 1 180 - Free Normal - 100.0 25 210 Napa_W6CO 147.180 +0.6 High 1 180 - Free Normal - 91.5 25 211 Morgan_Hil_K7DAA 147.330 +0.6 High 1 180 - Free Normal - 103.5 25 212 Los_Gatos_AB6LI 147.945 -0.6 High 1 180 - Free Normal - 156.7 25 # UHF Band 440-446 301 San_Jose_W6YOP 440.275 +5 High 1 180 - Free Normal - 127.3 25 302 Woodside_N6ZX 440.450 +5 High 1 180 - Free Normal - 107.2 25 303 Campbell_NO1PC 441.025 +5 High 1 180 - Free Normal - 110.9 25 304 Los_Gatos_K6UB 441.700 +5 High 1 180 - Free Normal - 127.3 25 305 San_Jose_WB6ZVW 442.500 +5 High 1 180 - Free Normal - 100.0 25 306 San_Jose_WR6ABD 442.900 +5 High 1 180 - Free Normal - 162.2 25 307 Morgan_Hil_K7DAA 442.975 +5 High 1 180 - Free Normal - 100.0 25 308 Orinda_N6QOP 443.050 +5 High 1 180 - Free Normal - 114.8 25 309 San_Jose_K6LNK 443.075 +5 High 1 180 - Free Normal - 123.0 25 310 Palo_Alto_WW6BAY 443.225 +5 High 1 180 - Free Normal - 100.0 25 311 San_Jose_KE6STH 443.575 +5 High 1 180 - Free Normal - 110.9 25 312 Oakland_WW6BAY 443.975 +5 High 1 180 - Free Normal - 100.0 25 313 San_Jose_K6GOD 444.725 +5 High 1 180 - Free Normal - 162.2 25 314 Los_Gatos_WB6KHP 444.975 +5 High 1 180 - Free Normal - 127.3 25 # Simplex frequencies 401 S_446.0 446.000 +0 High 2 180 - Free Normal - - 25 402 S_446.5 446.500 +0 High 2 180 - Free Normal - - 25 403 S_441.0 441.000 +0 High 2 180 - Free Normal - - 25 404 S_146.52 146.520 +0 High 2 180 - Free Normal - - 25 405 S_146.46 146.460 +0 High 2 180 - Free Normal - - 25 406 S_147.42 147.420 +0 High 2 180 - Free Normal - - 25 407 WX_1 162.450 +0 Low - 180 + Free Normal - - 25 408 WX_5 162.550 +0 Low - 180 + Free Normal - - 25 # Table of channel zones. # 1) Zone number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of channels: numbers and ranges (N-M) separated by comma # Zone Name Channels 1 Milpitas 1-12 # 440.125 W6TCP 2 San_Bruno 21-35 # 440.500 N6AMG 3 Boulder_Creek 41-56 # 440.5875 WB6ECE 4 Palo_Alto 61-75 # 441.850 K6OTR 5 Saratoga 81-96 # 441.950 KK6USZ 6 Mt_Umunhum 101-116 # 442.5375 WA6YCZ 7 Berkeley 121-132 # 443.500 K6LNK 8 Loma_Prieta 141-153 # 444.025 K6HLE 9 Baynet_Palo_Alto 161-172 # 444.350 WW6BAY 10 Alum_Rock 181-192 # 444.475 W6OTX 11 DMR_Simplex 701-706 # DMR Simplex: UHF, VHF 12 VHF 201-212 # 144-148 VHF Band 13 UHF 301-314 # 440-446 UHF Band 14 FM_Simplex 401-408 # FM Simplex: VHF, UHF # Table of scan lists. # 1) Scan list number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) Priority channel 1 (50% of scans): -, Sel or index # 4) Priority channel 2 (25% of scans): -, Sel or index # 5) Designated transmit channel: Last, Sel or index # 6) List of channels: numbers and ranges (N-M) separated by comma # Scanlist Name PCh1 PCh2 TxCh Channels 1 Analog - - Last 201-212,301-314 2 FM_Simplex - - Last 401-406 3 DMR_Simplex - - Last 701-706 # Table of group lists. # 1) Group list number: 1-64 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of contacts: numbers and ranges (N-M) separated by comma # Grouplist Name Contacts 1 All_Groups 91 # 91 Worldwide 1 All_Groups 93 # 93 North America 1 All_Groups 10 # 310 TAC 310 1 All_Groups 11 # 311 TAC 311 1 All_Groups 100 # 3100 USA Nationwide 1 All_Groups 106 # 3106 California 1 All_Groups 64 # 31064 Santa Clara County 1 All_Groups 65 # 31065 NorCal AllStar 1 All_Groups 68 # 31068 NorCal 1 All_Groups 75 # 31075 Bay-Net 1 All_Groups 78 # 31078 XLX013D PAPA 1 All_Groups 96 # 31096 USA - Area 6 4646 1 All_Groups 66 # 31666 DMR of Anarchy 1 All_Groups 95 # 95150 NorCal 5150 1 All_Groups 97 # 97150 Baycom 9 Simplex 99 # 99 Simplex 11 Worldwide 91 # 91 Worldwide 12 North_America 93 # 93 North America 13 TAC_310 10 # 310 TAC 310 14 TAC_311 11 # 311 TAC 311 15 USA_Nationwide 100 # 3100 USA Nationwide 16 California 106 # 3106 California 17 Santa_Clara_Cnty 64 # 31064 Santa Clara County 18 NorCal_AllStar 65 # 31065 NorCal AllStar 19 NorCal 68 # 31068 NorCal 20 Bay-Net 75 # 31075 Bay-Net 21 XLX013D_PAPA 78 # 31078 XLX013D PAPA 22 USA_Area_6 96 # 31096 USA - Area 6 4646 23 DMR_of_Anarchy 66 # 31666 DMR of Anarchy 24 NorCal_5150 95 # 95150 NorCal 5150 25 Baycom 97 # 97150 Baycom 26 Nebraska 131 # 3131 Nebraska 27 Texas 148 # 3148 Texas # Table of contacts. # 1) Contact number: 1-256 # 2) Name: up to 16 characters, use '_' instead of space # 3) Call type: Group, Private, All # 4) Call ID: 1...16777215 # 5) Call receive tone: -, + # Contact Name Type ID RxTone # From all Bay Area repeaters 91 Worldwide Group 91 - 93 North_America Group 93 - 99 Simplex Group 99 - 10 TAC_310 Group 310 - 11 TAC_311 Group 311 - 100 USA_Nationwide Group 3100 - 106 California Group 3106 - 131 Nebraska Group 3131 - 148 Texas Group 3148 - 64 Santa_Clara_Cnty Group 31064 - 65 NorCal_AllStar Group 31065 - 68 NorCal Group 31068 - 72 KPARN Group 31072 - 75 Bay-Net Group 31075 - 78 XLX013D_PAPA Group 31078 - 96 USA_Area_6 Group 31096 - 28 SNARS Group 31328 - 29 SNARS_2 Group 31329 - 66 DMR_of_Anarchy Group 31666 - 95 NorCal_5150 Group 95150 - 97 Baycom Group 97150 - # Private 90 Parrot Private 9990 - 42 Sergey_KK6ABQ Private 3114542 + # Sergey Vakulenko # Table of text messages. # 1) Message number: 1-32 # 2) Text: up to 144 characters # Message Text 1 Hi there! 2 QSY Norcal 31068, pls 3 QSY California 3106, pls 4 Be Right Back 5 My email is CALLSIGN@arrl.net 6 73 . . . dmrconfig-master/examples/gd77-ver311-W5NOR-Oklahoma.conf000066400000000000000000002205011354060760700232040ustar00rootroot00000000000000# # Configuration generated 2018/11/21 by dmrconfig, version 0.9.193 # Radio: Radioddity GD-77 Last Programmed Date: 2018-05-05 01:54 # Table of digital channels. # 1) Channel number: 1-1024 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Low # 6) Scan list: - or index in Scanlist table # 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555 # 8) Receive only: -, + # 9) Admit criteria: -, Free, Color # 10) Color code: 0, 1, 2, 3... 15 # 11) Time slot: 1 or 2 # 12) Receive group list: - or index in Grouplist table # 13) Contact for transmit: - or index in Contacts table # Digital Name Receive Transmit Power Scan TOT RO Admit Color Slot RxGL TxContact 5 Bar_SCARS 444.475 +5 High 1 - - - 2 2 2 1 # SCARS 6 Bar_OKState 444.475 +5 High 1 - - - 2 2 2 2 # OK State 7 Bar_OKCent 444.475 +5 High 1 - - - 2 2 2 3 # OK Central 8 Bar_OKEast 444.475 +5 High 1 - - - 2 2 2 4 # OK East 9 Bar_OKTAC 444.475 +5 High 1 - - - 2 1 1 5 # OK TAC 10 Bar_Local 444.475 +5 High 1 - - - 2 2 2 6 # Local 11 Bar_Reg_5 444.475 +5 High 1 - - - 2 1 1 7 # Region 5 12 Bar_NA 444.475 +5 High 1 - - - 2 1 1 8 # North America 13 Bar_World 444.475 +5 High 1 - - - 2 1 1 9 # Worldwide 14 Bar_TAC310 444.475 +5 High 1 - - - 2 1 1 10 # TAC 310 15 Bar_TAC311 444.475 +5 High 1 - - - 2 1 1 11 # TAC 311 16 Bar_TAC312 444.475 +5 High 1 - - - 2 1 1 12 # TAC 312 17 Bar_Parrott 444.475 +5 High 1 - - - 2 1 1 13 # Parrot 18 Bar_WWYL 444.475 +5 High 1 - - - 2 1 1 14 # WWYL 19 Big_SCARS 443.825 +5 High 1 - - - 1 2 2 1 # SCARS 20 Big_OKState 443.825 +5 High 1 - - - 1 2 2 2 # OK State 21 Big_OKCent 443.825 +5 High 1 - - - 1 2 2 3 # OK Central 22 Big_OKEast 443.825 +5 High 1 - - - 1 2 2 4 # OK East 23 Big_OKTAC 443.825 +5 High 1 - - - 1 1 1 5 # OK TAC 24 Big_Local 443.825 +5 High 1 - - - 1 2 2 6 # Local 25 Big_Reg_5 443.825 +5 High 1 - - - 1 1 1 7 # Region 5 26 Big_NA 443.825 +5 High 1 - - - 1 1 1 8 # North America 27 Big_World 443.825 +5 High 1 - - - 1 1 1 9 # Worldwide 28 Big_TAC310 443.825 +5 High 1 - - - 1 1 1 10 # TAC 310 29 Big_TAC311 443.825 +5 High 1 - - - 1 1 1 11 # TAC 311 30 Big_TAC312 443.825 +5 High 1 - - - 1 1 1 12 # TAC 312 31 Big_Parrott 443.825 +5 High 1 - - - 1 1 1 13 # Parrot 32 Big_WWYL 443.825 +5 High 1 - - - 1 1 1 14 # WWYL 33 Cal_SCARS 444.325 +5 High 1 - - - 1 2 2 1 # SCARS 34 Cal_OKState 444.325 +5 High 1 - - - 1 2 2 2 # OK State 35 Cal_OKCent 444.325 +5 High 1 - - - 1 2 2 3 # OK Central 36 Cal_OKEast 444.325 +5 High 1 - - - 1 2 2 4 # OK East 37 Cal_OKTAC 444.325 +5 High 1 - - - 1 1 1 5 # OK TAC 38 Cal_Local 444.325 +5 High 1 - - - 1 2 2 6 # Local 39 Cal_Reg_5 444.325 +5 High 1 - - - 1 1 1 7 # Region 5 40 Cal_NA 444.325 +5 High 1 - - - 1 1 1 8 # North America 41 Cal_World 444.325 +5 High 1 - - - 1 1 1 9 # Worldwide 42 Cal_TAC310 444.325 +5 High 1 - - - 1 1 1 10 # TAC 310 43 Cal_TAC311 444.325 +5 High 1 - - - 1 1 1 11 # TAC 311 44 Cal_TAC312 444.325 +5 High 1 - - - 1 1 1 12 # TAC 312 45 Cal_Parrott 444.325 +5 High 1 - - - 1 1 1 13 # Parrot 46 Cal_WWYL 444.325 +5 High 1 - - - 1 1 1 14 # WWYL 47 Cle_SCARS 442.625 +5 High 1 - - - 1 2 2 1 # SCARS 48 Cle_OKState 442.625 +5 High 1 - - - 1 2 2 2 # OK State 49 Cle_OKCent 442.625 +5 High 1 - - - 1 2 2 3 # OK Central 50 Cle_OKEast 442.625 +5 High 1 - - - 1 2 2 4 # OK East 51 Cle_OKTAC 442.625 +5 High 1 - - - 1 1 1 5 # OK TAC 52 Cle_Local 442.625 +5 High 1 - - - 1 2 2 6 # Local 53 Cle_Reg_5 442.625 +5 High 1 - - - 1 1 1 7 # Region 5 54 Cle_NA 442.625 +5 High 1 - - - 1 1 1 8 # North America 55 Cle_World 442.625 +5 High 1 - - - 1 1 1 9 # Worldwide 56 Cle_TAC310 442.625 +5 High 1 - - - 1 1 1 10 # TAC 310 57 Cle_TAC311 442.625 +5 High 1 - - - 1 1 1 11 # TAC 311 58 Cle_TAC312 442.625 +5 High 1 - - - 1 1 1 12 # TAC 312 59 Cle_Parrott 442.625 +5 High 1 - - - 1 1 1 13 # Parrot 60 Cle_WWYL 442.625 +5 High 1 - - - 1 1 1 14 # WWYL 61 Dep_SCARS 444.375 +5 High 1 - - - 1 2 2 1 # SCARS 62 Dep_OKState 444.375 +5 High 1 - - - 1 2 2 2 # OK State 63 Dep_OKCent 444.375 +5 High 1 - - - 1 2 2 3 # OK Central 64 Dep_OKEast 444.375 +5 High 1 - - - 1 2 2 4 # OK East 65 Dep_OKTAC 444.375 +5 High 1 - - - 1 1 1 5 # OK TAC 66 Dep_Local 444.375 +5 High 1 - - - 1 2 2 6 # Local 67 Dep_Reg_5 444.375 +5 High 1 - - - 1 1 1 7 # Region 5 68 Dep_NA 444.375 +5 High 1 - - - 1 1 1 8 # North America 69 Dep_World 444.375 +5 High 1 - - - 1 1 1 9 # Worldwide 70 Dep_TAC310 444.375 +5 High 1 - - - 1 1 1 10 # TAC 310 71 Dep_TAC311 444.375 +5 High 1 - - - 1 1 1 11 # TAC 311 72 Dep_TAC312 444.375 +5 High 1 - - - 1 1 1 12 # TAC 312 73 Dep_Parrott 444.375 +5 High 1 - - - 1 1 1 13 # Parrot 74 Dep_WWYL 444.375 +5 High 1 - - - 1 1 1 14 # WWYL 75 DwnO_SCARS 443.225 +5 High 1 - - - 1 2 2 1 # SCARS 76 DwnO_OKState 443.225 +5 High 1 - - - 1 2 2 2 # OK State 77 DwnO_OKCent 443.225 +5 High 1 - - - 1 2 2 3 # OK Central 78 DwnO_OKEast 443.225 +5 High 1 - - - 1 2 2 4 # OK East 79 DwnO_OKTAC 443.225 +5 High 1 - - - 1 1 1 5 # OK TAC 80 DwnO_Local 443.225 +5 High 1 - - - 1 2 2 6 # Local 81 DwnO_Reg_5 443.225 +5 High 1 - - - 1 1 1 7 # Region 5 82 DwnO_NA 443.225 +5 High 1 - - - 1 1 1 8 # North America 83 DwnO_World 443.225 +5 High 1 - - - 1 1 1 9 # Worldwide 84 DwnO_TAC310 443.225 +5 High 1 - - - 1 1 1 10 # TAC 310 85 DwnO_TAC311 443.225 +5 High 1 - - - 1 1 1 11 # TAC 311 86 DwnO_TAC312 443.225 +5 High 1 - - - 1 1 1 12 # TAC 312 87 DwnO_Parrott 443.225 +5 High 1 - - - 1 1 1 13 # Parrot 88 DwnO_WWYL 443.225 +5 High 1 - - - 1 1 1 14 # WWYL 89 EaO_SCARS 443.175 +5 High 1 - - - 1 2 2 1 # SCARS 90 EaO_OKState 443.175 +5 High 1 - - - 1 2 2 2 # OK State 91 EaO_OKCent 443.175 +5 High 1 - - - 1 2 2 3 # OK Central 92 EaO_OKEast 443.175 +5 High 1 - - - 1 2 2 4 # OK East 93 EaO_OKTAC 443.175 +5 High 1 - - - 1 1 1 5 # OK TAC 94 EaO_Local 443.175 +5 High 1 - - - 1 2 2 6 # Local 95 EaO_Reg_5 443.175 +5 High 1 - - - 1 1 1 7 # Region 5 96 EaO_NA 443.175 +5 High 1 - - - 1 1 1 8 # North America 97 EaO_World 443.175 +5 High 1 - - - 1 1 1 9 # Worldwide 98 EaO_TAC310 443.175 +5 High 1 - - - 1 1 1 10 # TAC 310 99 EaO_TAC311 443.175 +5 High 1 - - - 1 1 1 11 # TAC 311 100 EaO_TAC312 443.175 +5 High 1 - - - 1 1 1 12 # TAC 312 101 EaO_Parrott 443.175 +5 High 1 - - - 1 1 1 13 # Parrot 102 EaO_WWYL 443.175 +5 High 1 - - - 1 1 1 14 # WWYL 103 Edm_SCARS 442.325 +5 High 1 - - - 1 2 2 1 # SCARS 104 Edm_OKState 442.325 +5 High 1 - - - 1 2 2 2 # OK State 105 Edm_OKCent 442.325 +5 High 1 - - - 1 2 2 3 # OK Central 106 Edm_OKEast 442.325 +5 High 1 - - - 1 2 2 4 # OK East 107 Edm_OKTAC 442.325 +5 High 1 - - - 1 1 1 5 # OK TAC 108 Edm_Local 442.325 +5 High 1 - - - 1 2 2 6 # Local 109 Edm_Reg_5 442.325 +5 High 1 - - - 1 1 1 7 # Region 5 110 Edm_NA 442.325 +5 High 1 - - - 1 1 1 8 # North America 111 Edm_World 442.325 +5 High 1 - - - 1 1 1 9 # Worldwide 112 Edm_TAC310 442.325 +5 High 1 - - - 1 1 1 10 # TAC 310 113 Edm_TAC311 442.325 +5 High 1 - - - 1 1 1 11 # TAC 311 114 Edm_TAC312 442.325 +5 High 1 - - - 1 1 1 12 # TAC 312 115 Edm_Parrott 442.325 +5 High 1 - - - 1 1 1 13 # Parrot 116 Edm_WWYL 442.325 +5 High 1 - - - 1 1 1 14 # WWYL 117 FtG_SCARS 442.125 +5 High 1 - - - 1 2 2 1 # SCARS 118 FtG_OKState 442.125 +5 High 1 - - - 1 2 2 2 # OK State 119 FtG_OKCent 442.125 +5 High 1 - - - 1 2 2 3 # OK Central 120 FtG_OKEast 442.125 +5 High 1 - - - 1 2 2 4 # OK East 121 FtG_OKTAC 442.125 +5 High 1 - - - 1 1 1 5 # OK TAC 122 FtG_Local 442.125 +5 High 1 - - - 1 2 2 6 # Local 123 FtG_Reg_5 442.125 +5 High 1 - - - 1 1 1 7 # Region 5 124 FtG_NA 442.125 +5 High 1 - - - 1 1 1 8 # North America 125 FtG_World 442.125 +5 High 1 - - - 1 1 1 9 # Worldwide 126 FtG_TAC310 442.125 +5 High 1 - - - 1 1 1 10 # TAC 310 127 FtG_TAC311 442.125 +5 High 1 - - - 1 1 1 11 # TAC 311 128 FtG_TAC312 442.125 +5 High 1 - - - 1 1 1 12 # TAC 312 129 FtG_Parrott 442.125 +5 High 1 - - - 1 1 1 13 # Parrot 130 FtG_WWYL 442.125 +5 High 1 - - - 1 1 1 14 # WWYL 131 Hog_SCARS 442.1875 +5 High 1 - - - 1 2 2 1 # SCARS 132 Hog_OKState 442.1875 +5 High 1 - - - 1 2 2 2 # OK State 133 Hog_OKCent 442.1875 +5 High 1 - - - 1 2 2 3 # OK Central 134 Hog_OKEast 442.1875 +5 High 1 - - - 1 2 2 4 # OK East 135 Hog_OKTAC 442.1875 +5 High 1 - - - 1 1 1 5 # OK TAC 136 Hog_Local 442.1875 +5 High 1 - - - 1 2 2 6 # Local 137 Hog_Reg_5 442.1875 +5 High 1 - - - 1 1 1 7 # Region 5 138 Hog_NA 442.1875 +5 High 1 - - - 1 1 1 8 # North America 139 Hog_World 442.1875 +5 High 1 - - - 1 1 1 9 # Worldwide 140 Hog_TAC310 442.1875 +5 High 1 - - - 1 1 1 10 # TAC 310 141 Hog_TAC311 442.1875 +5 High 1 - - - 1 1 1 11 # TAC 311 142 Hog_TAC312 442.1875 +5 High 1 - - - 1 1 1 12 # TAC 312 143 Hog_Parrott 442.1875 +5 High 1 - - - 1 1 1 13 # Parrot 144 Hog_WWYL 442.1875 +5 High 1 - - - 1 1 1 14 # WWYL 145 Kee_SCARS 442.350 +5 High 1 - - - 1 2 2 1 # SCARS 146 Kee_OKState 442.350 +5 High 1 - - - 1 2 2 2 # OK State 147 Kee_OKCent 442.350 +5 High 1 - - - 1 2 2 3 # OK Central 148 Kee_OKEast 442.350 +5 High 1 - - - 1 2 2 4 # OK East 149 Kee_OKTAC 442.350 +5 High 1 - - - 1 1 1 5 # OK TAC 150 Kee_Local 442.350 +5 High 1 - - - 1 2 2 6 # Local 151 Kee_Reg_5 442.350 +5 High 1 - - - 1 1 1 7 # Region 5 152 Kee_NA 442.350 +5 High 1 - - - 1 1 1 8 # North America 153 Kee_World 442.350 +5 High 1 - - - 1 1 1 9 # Worldwide 154 Kee_TAC310 442.350 +5 High 1 - - - 1 1 1 10 # TAC 310 155 Kee_TAC311 442.350 +5 High 1 - - - 1 1 1 11 # TAC 311 156 Kee_TAC312 442.350 +5 High 1 - - - 1 1 1 12 # TAC 312 157 Kee_Parrott 442.350 +5 High 1 - - - 1 1 1 13 # Parrot 158 Kee_WWYL 442.350 +5 High 1 - - - 1 1 1 14 # WWYL 159 Law_SCARS 443.600 +5 High 1 - - - 4 2 2 1 # SCARS 160 Law_OKState 443.600 +5 High 1 - - - 4 2 2 2 # OK State 161 Law_OKCent 443.600 +5 High 1 - - - 4 2 2 3 # OK Central 162 Law_OKEast 443.600 +5 High 1 - - - 4 2 2 4 # OK East 163 Law_OKTAC 443.600 +5 High 1 - - - 4 1 1 5 # OK TAC 164 Law_Local 443.600 +5 High 1 - - - 4 2 2 6 # Local 165 Law_Reg_5 443.600 +5 High 1 - - - 4 1 1 7 # Region 5 166 Law_NA 443.600 +5 High 1 - - - 4 1 1 8 # North America 167 Law_World 443.600 +5 High 1 - - - 4 1 1 9 # Worldwide 168 Law_TAC310 443.600 +5 High 1 - - - 4 1 1 10 # TAC 310 169 Law_TAC311 443.600 +5 High 1 - - - 4 1 1 11 # TAC 311 170 Law_TAC312 443.600 +5 High 1 - - - 4 1 1 12 # TAC 312 171 Law_Parrott 443.600 +5 High 1 - - - 4 1 1 13 # Parrot 172 Law_WWYL 443.600 +5 High 1 - - - 4 1 1 14 # WWYL 173 Leo_SCARS 443.650 +5 High 1 - - - 1 2 2 1 # SCARS 174 Leo_OKState 443.650 +5 High 1 - - - 1 2 2 2 # OK State 175 Leo_OKCent 443.650 +5 High 1 - - - 1 2 2 3 # OK Central 176 Leo_OKEast 443.650 +5 High 1 - - - 1 2 2 4 # OK East 177 Leo_OKTAC 443.650 +5 High 1 - - - 1 1 1 5 # OK TAC 178 Leo_Local 443.650 +5 High 1 - - - 1 2 2 6 # Local 179 Leo_Reg_5 443.650 +5 High 1 - - - 1 1 1 7 # Region 5 180 Leo_NA 443.650 +5 High 1 - - - 1 1 1 8 # North America 181 Leo_World 443.650 +5 High 1 - - - 1 1 1 9 # Worldwide 182 Leo_TAC310 443.650 +5 High 1 - - - 1 1 1 10 # TAC 310 183 Leo_TAC311 443.650 +5 High 1 - - - 1 1 1 11 # TAC 311 184 Leo_TAC312 443.650 +5 High 1 - - - 1 1 1 12 # TAC 312 185 Leo_Parrott 443.650 +5 High 1 - - - 1 1 1 13 # Parrot 186 Leo_WWYL 443.650 +5 High 1 - - - 1 1 1 14 # WWYL 187 Man_SCARS 444.450 +5 High 1 - - - 1 2 2 1 # SCARS 188 Man_OKState 444.450 +5 High 1 - - - 1 2 2 2 # OK State 189 Man_OKCent 444.450 +5 High 1 - - - 1 2 2 3 # OK Central 190 Man_OKEast 444.450 +5 High 1 - - - 1 2 2 4 # OK East 191 Man_OKTAC 444.450 +5 High 1 - - - 1 1 1 5 # OK TAC 192 Man_Local 444.450 +5 High 1 - - - 1 2 2 6 # Local 193 Man_Reg_5 444.450 +5 High 1 - - - 1 1 1 7 # Region 5 194 Man_NA 444.450 +5 High 1 - - - 1 1 1 8 # North America 195 Man_World 444.450 +5 High 1 - - - 1 1 1 9 # Worldwide 196 Man_TAC310 444.450 +5 High 1 - - - 1 1 1 10 # TAC 310 197 Man_TAC311 444.450 +5 High 1 - - - 1 1 1 11 # TAC 311 198 Man_TAC312 444.450 +5 High 1 - - - 1 1 1 12 # TAC 312 199 Man_Parrott 444.450 +5 High 1 - - - 1 1 1 13 # Parrot 200 Man_WWYL 444.450 +5 High 1 - - - 1 1 1 14 # WWYL 201 Mou_SCARS 444.850 +5 High 1 - - - 1 2 2 1 # SCARS 202 Mou_OKState 444.850 +5 High 1 - - - 1 2 2 2 # OK State 203 Mou_OKCent 444.850 +5 High 1 - - - 1 2 2 3 # OK Central 204 Mou_OKEast 444.850 +5 High 1 - - - 1 2 2 4 # OK East 205 Mou_OKTAC 444.850 +5 High 1 - - - 1 1 1 5 # OK TAC 206 Mou_Local 444.850 +5 High 1 - - - 1 2 2 6 # Local 207 Mou_Reg_5 444.850 +5 High 1 - - - 1 1 1 7 # Region 5 208 Mou_NA 444.850 +5 High 1 - - - 1 1 1 8 # North America 209 Mou_World 444.850 +5 High 1 - - - 1 1 1 9 # Worldwide 210 Mou_TAC310 444.850 +5 High 1 - - - 1 1 1 10 # TAC 310 211 Mou_TAC311 444.850 +5 High 1 - - - 1 1 1 11 # TAC 311 212 Mou_TAC312 444.850 +5 High 1 - - - 1 1 1 12 # TAC 312 213 Mou_Parrott 444.850 +5 High 1 - - - 1 1 1 13 # Parrot 214 Mou_WWYL 444.850 +5 High 1 - - - 1 1 1 14 # WWYL 215 NoO_SCARS 442.500 +5 High 1 - - - 1 2 2 1 # SCARS 216 NoO_OKState 442.500 +5 High 1 - - - 1 2 2 2 # OK State 217 NoO_OKCent 442.500 +5 High 1 - - - 1 2 2 3 # OK Central 218 NoO_OKEast 442.500 +5 High 1 - - - 1 2 2 4 # OK East 219 NoO_OKTAC 442.500 +5 High 1 - - - 1 1 1 5 # OK TAC 220 NoO_Local 442.500 +5 High 1 - - - 1 2 2 6 # Local 221 NoO_Reg_5 442.500 +5 High 1 - - - 1 1 1 7 # Region 5 222 NoO_NA 442.500 +5 High 1 - - - 1 1 1 8 # North America 223 NoO_World 442.500 +5 High 1 - - - 1 1 1 9 # Worldwide 224 NoO_TAC310 442.500 +5 High 1 - - - 1 1 1 10 # TAC 310 225 NoO_TAC311 442.500 +5 High 1 - - - 1 1 1 11 # TAC 311 226 NoO_TAC312 442.500 +5 High 1 - - - 1 1 1 12 # TAC 312 227 NoO_Parrott 442.500 +5 High 1 - - - 1 1 1 13 # Parrot 228 NoO_WWYL 442.500 +5 High 1 - - - 1 1 1 14 # WWYL 229 Nrm_SCARS 443.825 +5 High 1 - - - 1 2 2 1 # SCARS 230 Nrm_OKState 443.825 +5 High 1 - - - 1 2 2 2 # OK State 231 Nrm_OKCent 443.825 +5 High 1 - - - 1 2 2 3 # OK Central 232 Nrm_OKEast 443.825 +5 High 1 - - - 1 2 2 4 # OK East 233 Nrm_OKTAC 443.825 +5 High 1 - - - 1 1 1 5 # OK TAC 234 Nrm_Local 443.825 +5 High 1 - - - 1 2 2 6 # Local 235 Nrm_Reg_5 443.825 +5 High 1 - - - 1 1 1 7 # Region 5 236 Nrm_NA 443.825 +5 High 1 - - - 1 1 1 8 # North America 237 Nrm_World 443.825 +5 High 1 - - - 1 1 1 9 # Worldwide 238 Nrm_TAC310 443.825 +5 High 1 - - - 1 1 1 10 # TAC 310 239 Nrm_TAC311 443.825 +5 High 1 - - - 1 1 1 11 # TAC 311 240 Nrm_TAC312 443.825 +5 High 1 - - - 1 1 1 12 # TAC 312 241 Nrm_Parrott 443.825 +5 High 1 - - - 1 1 1 13 # Parrot 242 Nrm_WWYL 443.825 +5 High 1 - - - 1 1 1 14 # WWYL 243 NwO_SCARS 442.625 +5 High 1 - - - 1 2 2 1 # SCARS 244 NwO_OKState 442.625 +5 High 1 - - - 1 2 2 2 # OK State 245 NwO_OKCent 442.625 +5 High 1 - - - 1 2 2 3 # OK Central 246 NwO_OKEast 442.625 +5 High 1 - - - 1 2 2 4 # OK East 247 NwO_OKTAC 442.625 +5 High 1 - - - 1 1 1 5 # OK TAC 248 NwO_Local 442.625 +5 High 1 - - - 1 2 2 6 # Local 249 NwO_Reg_5 442.625 +5 High 1 - - - 1 1 1 7 # Region 5 250 NwO_NA 442.625 +5 High 1 - - - 1 1 1 8 # North America 251 NwO_World 442.625 +5 High 1 - - - 1 1 1 9 # Worldwide 252 NwO_TAC310 442.625 +5 High 1 - - - 1 1 1 10 # TAC 310 253 NwO_TAC311 442.625 +5 High 1 - - - 1 1 1 11 # TAC 311 254 NwO_TAC312 442.625 +5 High 1 - - - 1 1 1 12 # TAC 312 255 NwO_Parrott 442.625 +5 High 1 - - - 1 1 1 13 # Parrot 256 NwO_WWYL 442.625 +5 High 1 - - - 1 1 1 14 # WWYL 257 PC__SCARS 444.750 +5 High 1 - - - 1 2 2 1 # SCARS 258 PC__OKState 444.750 +5 High 1 - - - 1 2 2 2 # OK State 259 PC__OKCent 444.750 +5 High 1 - - - 1 2 2 3 # OK Central 260 PC__OKEast 444.750 +5 High 1 - - - 1 2 2 4 # OK East 261 PC__OKTAC 444.750 +5 High 1 - - - 1 1 1 5 # OK TAC 262 PC__Local 444.750 +5 High 1 - - - 1 2 2 6 # Local 263 PC__Reg_5 444.750 +5 High 1 - - - 1 1 1 7 # Region 5 264 PC__NA 444.750 +5 High 1 - - - 1 1 1 8 # North America 265 PC__World 444.750 +5 High 1 - - - 1 1 1 9 # Worldwide 266 PC__TAC310 444.750 +5 High 1 - - - 1 1 1 10 # TAC 310 267 PC__TAC311 444.750 +5 High 1 - - - 1 1 1 11 # TAC 311 268 PC__TAC312 444.750 +5 High 1 - - - 1 1 1 12 # TAC 312 269 PC__Parrott 444.750 +5 High 1 - - - 1 1 1 13 # Parrot 270 PC__WWYL 444.750 +5 High 1 - - - 1 1 1 14 # WWYL 271 SeE_SCARS 443.050 +5 High 1 - - - 1 2 2 1 # SCARS 272 SeE_OKState 443.050 +5 High 1 - - - 1 2 2 2 # OK State 273 SeE_OKCent 443.050 +5 High 1 - - - 1 2 2 3 # OK Central 274 SeE_OKEast 443.050 +5 High 1 - - - 1 2 2 4 # OK East 275 SeE_OKTAC 443.050 +5 High 1 - - - 1 1 1 5 # OK TAC 276 SeE_Local 443.050 +5 High 1 - - - 1 2 2 6 # Local 277 SeE_Reg_5 443.050 +5 High 1 - - - 1 1 1 7 # Region 5 278 SeE_NA 443.050 +5 High 1 - - - 1 1 1 8 # North America 279 SeE_World 443.050 +5 High 1 - - - 1 1 1 9 # Worldwide 280 SeE_TAC310 443.050 +5 High 1 - - - 1 1 1 10 # TAC 310 281 SeE_TAC311 443.050 +5 High 1 - - - 1 1 1 11 # TAC 311 282 SeE_TAC312 443.050 +5 High 1 - - - 1 1 1 12 # TAC 312 283 SeE_Parrott 443.050 +5 High 1 - - - 1 1 1 13 # Parrot 284 SeE_WWYL 443.050 +5 High 1 - - - 1 1 1 14 # WWYL 285 Stl_SCARS 444.475 +5 High 1 - - - 1 2 2 1 # SCARS 286 Stl_OKState 444.475 +5 High 1 - - - 1 2 2 2 # OK State 287 Stl_OKCent 444.475 +5 High 1 - - - 1 2 2 3 # OK Central 288 Stl_OKEast 444.475 +5 High 1 - - - 1 2 2 4 # OK East 289 Stl_OKTAC 444.475 +5 High 1 - - - 1 1 1 5 # OK TAC 290 Stl_Local 444.475 +5 High 1 - - - 1 2 2 6 # Local 291 Stl_Reg_5 444.475 +5 High 1 - - - 1 1 1 7 # Region 5 292 Stl_NA 444.475 +5 High 1 - - - 1 1 1 8 # North America 293 Stl_World 444.475 +5 High 1 - - - 1 1 1 9 # Worldwide 294 Stl_TAC310 444.475 +5 High 1 - - - 1 1 1 10 # TAC 310 295 Stl_TAC311 444.475 +5 High 1 - - - 1 1 1 11 # TAC 311 296 Stl_TAC312 444.475 +5 High 1 - - - 1 1 1 12 # TAC 312 297 Stl_Parrott 444.475 +5 High 1 - - - 1 1 1 13 # Parrot 298 Stl_WWYL 444.475 +5 High 1 - - - 1 1 1 14 # WWYL 299 TuC_SCARS 442.475 +5 High 1 - - - 2 2 2 1 # SCARS 300 TuC_OKState 442.475 +5 High 1 - - - 2 2 2 2 # OK State 301 TuC_OKCent 442.475 +5 High 1 - - - 2 2 2 3 # OK Central 302 TuC_OKEast 442.475 +5 High 1 - - - 2 2 2 4 # OK East 303 TuC_OKTAC 442.475 +5 High 1 - - - 2 1 1 5 # OK TAC 304 TuC_Local 442.475 +5 High 1 - - - 2 2 2 6 # Local 305 TuC_Reg_5 442.475 +5 High 1 - - - 2 1 1 7 # Region 5 306 TuC_NA 442.475 +5 High 1 - - - 2 1 1 8 # North America 307 TuC_World 442.475 +5 High 1 - - - 2 1 1 9 # Worldwide 308 TuC_TAC310 442.475 +5 High 1 - - - 2 1 1 10 # TAC 310 309 TuC_TAC311 442.475 +5 High 1 - - - 2 1 1 11 # TAC 311 310 TuC_TAC312 442.475 +5 High 1 - - - 2 1 1 12 # TAC 312 311 TuC_Parrott 442.475 +5 High 1 - - - 2 1 1 13 # Parrot 312 TuC_WWYL 442.475 +5 High 1 - - - 2 1 1 14 # WWYL 313 TuS_SCARS 442.1625 +5 High 1 - - - 2 2 2 1 # SCARS 314 TuS_OKState 442.1625 +5 High 1 - - - 2 2 2 2 # OK State 315 TuS_OKCent 442.1625 +5 High 1 - - - 2 2 2 3 # OK Central 316 TuS_OKEast 442.1625 +5 High 1 - - - 2 2 2 4 # OK East 317 TuS_OKTAC 442.1625 +5 High 1 - - - 2 1 1 5 # OK TAC 318 TuS_Local 442.1625 +5 High 1 - - - 2 2 2 6 # Local 319 TuS_Reg_5 442.1625 +5 High 1 - - - 2 1 1 7 # Region 5 320 TuS_NA 442.1625 +5 High 1 - - - 2 1 1 8 # North America 321 TuS_World 442.1625 +5 High 1 - - - 2 1 1 9 # Worldwide 322 TuS_TAC310 442.1625 +5 High 1 - - - 2 1 1 10 # TAC 310 323 TuS_TAC311 442.1625 +5 High 1 - - - 2 1 1 11 # TAC 311 324 TuS_TAC312 442.1625 +5 High 1 - - - 2 1 1 12 # TAC 312 325 TuS_Parrott 442.1625 +5 High 1 - - - 2 1 1 13 # Parrot 326 TuS_WWYL 442.1625 +5 High 1 - - - 2 1 1 14 # WWYL # Table of analog channels. # 1) Channel number: 1-1024 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Low # 6) Scan list: - or index # 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555 # 8) Receive only: -, + # 9) Admit criteria: -, Free, Tone # 10) Squelch level: Normal, Tight # 11) Guard tone for receive, or '-' to disable # 12) Guard tone for transmit, or '-' to disable # 13) Bandwidth in kHz: 12.5, 20, 25 # Analog Name Receive Transmit Power Scan TOT RO Admit Squelch RxTone TxTone Width 1 147.06R 147.060 +0.6 High 1 - - - Normal - 141.3 12.5 2 147.06S 147.060 +0 High 1 - - - Normal - - 12.5 3 443.7R 443.700 +5 High 1 - - - Normal - 141.3 12.5 4 443.7S 443.700 +0 High 1 - - - Normal - - 12.5 # Table of channel zones. # 1) Zone number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of channels: numbers and ranges (N-M) separated by comma # Zone Name Channels 1 Bartlesville 5-18 2 Big_Cabin 19-32 3 Calumet 33-46 4 Cleora 47-60 5 Depew 61-74 6 Downtown_OKC 75-88 7 East_OKC 89-102 8 Edmond 103-116 9 Fort_Gibson 117-130 10 Hogshooter 131-144 11 Keetonville 145-158 12 Lawton 159-172 13 Leonard 173-186 14 Mannford 187-200 15 Mounds 201-214 16 North_OKC 215-228 17 Norman 1,3,229-242 18 NW_OKC 243-256 19 Ponca_City 257-270 20 SE_Edmond 271-284 21 Stillwater 285-298 22 Tulsa_Central 299-312 23 Tulsa_South 313-326 # Table of scan lists. # 1) Scan list number: 1-64 # 2) Name: up to 16 characters, use '_' instead of space # 3) Priority channel 1 (50% of scans): -, Sel or index # 4) Priority channel 2 (25% of scans): -, Sel or index # 5) Designated transmit channel: Last, Sel or index # 6) List of channels: numbers and ranges (N-M) separated by comma # Scanlist Name PCh1 PCh2 TxCh Channels 1 SCAN_V - - Last Sel 2 SCAN_U - - Last Sel # Table of contacts. # 1) Contact number: 1-1024 # 2) Name: up to 16 characters, use '_' instead of space # 3) Call type: Group, Private, All # 4) Call ID: 1...16777215 # 5) Call receive tone: -, + # Contact Name Type ID RxTone 1 SCARS Group 314016 + 2 OK_State Group 3140 + 3 OK_Central Group 31401 + 4 OK_East Group 31402 + 5 OK_TAC Group 31400 + 6 Local Group 2 + 7 Region_5 Group 31095 + 8 North_America Group 3100 + 9 Worldwide Group 91 + 10 TAC_310 Group 310 + 11 TAC_311 Group 311 + 12 TAC_312 Group 312 + 13 Parrot Private 9990 + 14 WWYL Group 955 + 15 AE5DN_Mark_Matal Private 3140001 - 16 AE5DN_Mark_Matal Private 3140002 - 17 KE5BDG_Leah_Mata Private 3140003 - 18 KE5ADB_T._J._Jus Private 3140004 - 19 KX5MOT_Jon_Leach Private 3140005 - 20 KB5KWV_Don_Clark Private 3140006 - 21 KC5BTT_Lanora_Cl Private 3140007 - 22 KJ7EFF_Jeffrey_W Private 3140008 - 23 W5RAB_Bob_Buford Private 3140009 - 24 WD5ETD_Rick_Wils Private 3140010 - 25 K5OVT_Tom_Shaw Private 3140011 - 26 KB5LOH_Greg_Turn Private 3140012 - 27 WA5VMS_Joe_Borov Private 3140013 - 28 KE9XB_Don_Poquet Private 3140014 - 29 WX5UIF_Travis_Da Private 3140015 - 30 N5PLV_Bennie_Row Private 3140016 - 31 AC5JM_Jerry_Moye Private 3140017 - 32 W5DRO_Donald_Ohs Private 3140018 - 33 K5SNG_Chad_King Private 3140019 - 34 WB5ANX_Paul_Teel Private 3140020 - 35 WA5TXX_Mike_Fost Private 3140021 - 36 KC5MW_Raymond_Pe Private 3140022 - 37 W5BS_Brad_Smith Private 3140023 - 38 AE5RH_Scott_Wool Private 3140024 - 39 AE5TD_Tom_Devlin Private 3140025 - 40 AE5PB_Paul_Bisdo Private 3140026 - 41 KB7QQQ_Sam_Roe Private 3140027 - 42 N5SJX_Jamie_Ott Private 3140028 - 43 KD5WFY_Brian_You Private 3140029 - 44 KC5NOI_Matt_Skin Private 3140030 - 45 AD5OR_Greg_Legge Private 3140031 - 46 N5PLV_Bennie_Row Private 3140032 - 47 NN5Q_James_Hines Private 3140033 - 48 AA5PD_James_Stra Private 3140034 - 49 AA5PD_James_Stra Private 3140035 - 50 KE5WY_John_Marsh Private 3140036 - 51 K5FVL_Dan_Schroe Private 3140037 - 52 W5JCS_Jim_Shidel Private 3140038 - 53 W5RAB_Bob_Buford Private 3140039 - 54 W5RAB_Bob_Buford Private 3140040 - 55 W5RDF_Richard_Fi Private 3140041 - 56 KF5FWE_Mark_Eigh Private 3140042 - 57 WA5QDZ_Bud_Blust Private 3140043 - 58 KI5JJ_Will_Mccut Private 3140044 - 59 WD5ETD_Rick_Wils Private 3140045 - 60 W5ZXC_Earl_Whitt Private 3140046 - 61 W5BE_Butch_Herri Private 3140047 - 62 KC5DPV_Joe_Minni Private 3140048 - 63 KD5YOH_Rob_Hill Private 3140049 - 64 WA5BGT_Mike_Roar Private 3140050 - 65 WD0AJG_Rex_Ishma Private 3140051 - 66 N5TWB_Bartley_Pi Private 3140052 - 67 K5BOX_Mike_Box Private 3140053 - 68 KE5EHM_Paul_Youn Private 3140054 - 69 K5BDM_Brian_Meye Private 3140055 - 70 N5XQK_Johnny_Ren Private 3140056 - 71 AE5MM_Loyd_Beeso Private 3140057 - 72 W5TOR_Lee_Dumas Private 3140058 - 73 KG5VW_Scott_Brat Private 3140059 - 74 KE5WPH_Andrew_Mc Private 3140060 - 75 KB5TSI_Brian_Lee Private 3140061 - 76 NO5R_Barney_Boon Private 3140062 - 77 KC5EBR_Jay_Brash Private 3140063 - 78 N5ZJR_Alvin_Auwe Private 3140064 - 79 K5LDE_Justin_Cha Private 3140065 - 80 K5XTL_Korey_Thom Private 3140066 - 81 AD5AJ_Stephen_Hi Private 3140067 - 82 AF5XC_Dustin_Dye Private 3140068 - 83 KF5VCQ_Steve_Chi Private 3140069 - 84 K5CRQ_Ed_Compos Private 3140070 - 85 K5CFY_Raymond_Yo Private 3140071 - 86 N5XQK_Johnny_Ren Private 3140072 - 87 K5SJW_John_Simon Private 3140073 - 88 KF5FWE_Mark_Eigh Private 3140074 - 89 N5OST_Paul_Locky Private 3140075 - 90 K5SJW_John_Simon Private 3140076 - 91 KG5AUN_Robert_Gi Private 3140077 - 92 KF5RKQ_Parsons_D Private 3140078 - 93 K0CKW_Larry_Gree Private 3140079 - 94 KD5TLN_Dan_Mcbat Private 3140080 - 95 K3UUF_Eric_Spieg Private 3140081 - 96 WB5NJU_Rocky_Key Private 3140082 - 97 KA5IWY_Merle_Key Private 3140083 - 98 N5ANY_Charles_Ro Private 3140084 - 99 KE5URG_Steven_St Private 3140085 - 100 AF5LW_Justin_Pai Private 3140086 - 101 KD5JIO_Jeff_Smit Private 3140087 - 102 N3CI_David_Edger Private 3140088 - 103 WD5G_David_Downi Private 3140089 - 104 AA5KD_Duane_Angl Private 3140090 - 105 KF5ACD_Stanford, Private 3140091 - 106 KA5OUG_Charles_H Private 3140092 - 107 AE5YJ_Andrew_Sel Private 3140093 - 108 K5HDA_William_Va Private 3140094 - 109 KC5WSI_Ray_Truit Private 3140095 - 110 W5NRD_Justin_Dun Private 3140096 - 111 N5JFQ_Stan_Van_N Private 3140097 - 112 K5LUO_Billy_Crow Private 3140098 - 113 WB5CGD_Steve_Bar Private 3140099 - 114 KF5FKI_Catherine Private 3140100 - 115 KF5RXZ_Tim_Sprag Private 3140101 - 116 KF5ZOI_Ryan_Thom Private 3140102 - 117 KD5SDZ_Jordan_Wo Private 3140103 - 118 KB5LSB_John_Grah Private 3140104 - 119 W9UQ_Dan_Crews Private 3140105 - 120 W5VL_David_Rodri Private 3140106 - 121 KD5NJR_Kenneth_H Private 3140107 - 122 AE5QL_Michael_W_ Private 3140108 - 123 KD5DDD_Dennis_Da Private 3140109 - 124 K5TBL_John_Carr Private 3140110 - 125 KF5XK_Gary_Moore Private 3140111 - 126 KF5VCT_John_Hall Private 3140112 - 127 KG5FLN_Carl_Lee Private 3140113 - 128 WX5DRS_Dave_Smit Private 3140114 - 129 KC5RBH_Jeff_Day Private 3140115 - 130 KG5DOH_Larry_Day Private 3140116 - 131 K5OKE_Gerald_Car Private 3140117 - 132 KD5CS_Jack_Aldri Private 3140118 - 133 KG5CUA_Nathaniel Private 3140119 - 134 W5RUN_William_Mc Private 3140120 - 135 KX5I_David_Balli Private 3140121 - 136 AE5ME_Jeff_Scovi Private 3140122 - 137 KB5DBR_Joe_Widne Private 3140123 - 138 WB5MBK_Mark_Thra Private 3140124 - 139 N5KNU_Jerry_Sams Private 3140125 - 140 KG5FZR_James_Hug Private 3140126 - 141 KC4URD_John_Brud Private 3140127 - 142 WB5JJA_Ray_Richa Private 3140128 - 143 K5ZQR_Stephen_Gu Private 3140129 - 144 KA9MLL_Steven_Pi Private 3140130 - 145 W5VL_David_Rodri Private 3140131 - 146 W5GDL_Steve_Haze Private 3140132 - 147 K5LAD_Jim_Picket Private 3140133 - 148 K5OHM_Tom_B_Shel Private 3140134 - 149 W5NAT_Natalie_Ba Private 3140135 - 150 AD5JK_Thomas_Van Private 3140136 - 151 K5BOW_Rick_Rhoad Private 3140137 - 152 K5BOW_Rick_Rhoad Private 3140138 - 153 W5HJ_Hank_Blacks Private 3140139 - 154 KE5LTS_Rolland_G Private 3140140 - 155 W5CGP_Ken_Goddar Private 3140141 - 156 KC5ZQP_Gary_Parh Private 3140142 - 157 N5KXI_Lee_Allen Private 3140143 - 158 KB0FHF_David_H_H Private 3140144 - 159 KC5VCN_Gary_Mcge Private 3140145 - 160 W5GDL_Steve_Haze Private 3140146 - 161 WX5OKE_Denton_Sa Private 3140147 - 162 WB5MXO_Guy_Shipl Private 3140148 - 163 KF5KFB_Jason_Lee Private 3140149 - 164 W5TAH_Timothy_Ha Private 3140150 - 165 KF5VJT_Michael_P Private 3140151 - 166 W5SGB_Sandra_Boo Private 3140152 - 167 NX5O_Craig_Wrigh Private 3140153 - 168 KE5HQM_David_Cas Private 3140154 - 169 KG5ILG_Jason_Bro Private 3140155 - 170 KG5HCS_David_Fur Private 3140156 - 171 W5JVS_Jim_Seigni Private 3140157 - 172 WN5J_Glen_A_Bish Private 3140158 - 173 W5CCP_D._Craig_B Private 3140159 - 174 W5NZS_Larry_Haze Private 3140160 - 175 AD5VL_Paula_Sieb Private 3140161 - 176 WA5RAY_Ray_Shank Private 3140162 - 177 K5EMS_Eddie_Manl Private 3140163 - 178 KF5VJT_Michael_P Private 3140164 - 179 KU5M_Joe_Eder Private 3140165 - 180 K9KLB_Kevin_Brow Private 3140166 - 181 KF5VBY_Eddie_Ray Private 3140167 - 182 WA9AFM_Thomas_We Private 3140168 - 183 KG5FBI_Peter_Hil Private 3140169 - 184 KN6UG_Martin_Vin Private 3140170 - 185 KD5IPG_Tom_Milam Private 3140171 - 186 AE5MM_Loyd_Beeso Private 3140172 - 187 W4KUN_Christophe Private 3140173 - 188 KG5IWH_Michael_W Private 3140174 - 189 W4NFD_Michael_Ro Private 3140175 - 190 W4NFD_Michael_Ro Private 3140176 - 191 KC5KLM_Larry_Hol Private 3140177 - 192 N5YOL_John_Heste Private 3140178 - 193 N5CMH_Chris_Hell Private 3140179 - 194 KD0QJS_Gerhardt_ Private 3140180 - 195 N5UPY_Michael_Be Private 3140181 - 196 W5SNA_David_Ryer Private 3140182 - 197 KC5IQE_Warren_Wi Private 3140183 - 198 WG5JJN_Robert_Ca Private 3140184 - 199 N5FJK_Lonnie_L_L Private 3140185 - 200 KA5TRO_Lowell_A_ Private 3140186 - 201 KC5MWZ_Gerald_Ta Private 3140187 - 202 KC5MWZ_Gerald_Ta Private 3140188 - 203 KG5DOC_Jon_Godwi Private 3140189 - 204 W3RXO_Daniel_Gal Private 3140190 - 205 N5PJ_Perry_Jenki Private 3140191 - 206 KG5C_Jerry_Gonza Private 3140192 - 207 KE5KQL_Frankie_T Private 3140193 - 208 KF5VXR_Dustin_Th Private 3140194 - 209 N5TEX_Gorkos_Joe Private 3140195 - 210 W5AQT_Glen_A_Bis Private 3140196 - 211 N5HZR_Mark_Klein Private 3140197 - 212 KB5TWP_Gary_HUNT Private 3140198 - 213 N5MS_Micheal_Sal Private 3140199 - 214 KB5LHM_Justin_Tu Private 3140200 - 215 N5WX_Ron_Gamel Private 3140201 - 216 N5EPR_Carol_Game Private 3140202 - 217 N5BYS_Walter_Ken Private 3140203 - 218 N5PWY_Peter_Laws Private 3140204 - 219 N5UWY_Peter_Laws Private 3140205 - 220 KG5KKJ_Kevin_Eig Private 3140206 - 221 KG5GWM_Matthew_W Private 3140207 - 222 N5XET_Robert_Ble Private 3140208 - 223 KC5TER_Edward_Ro Private 3140209 - 224 N5BYS_Walter_Ken Private 3140210 - 225 N5BYS_Walter_Ken Private 3140211 - 226 AJ4YK_Dr_Ronald_ Private 3140212 - 227 AK4UN_Jennipher_ Private 3140213 - 228 N5CEL_Curtis_Loo Private 3140214 - 229 KE5WPH_Andrew_Mc Private 3140215 - 230 K5TBL_John_Carr Private 3140216 - 231 N5EDJ_Gary_Hanig Private 3140217 - 232 KD5VJN_Christoph Private 3140218 - 233 WY7RM_Roland_Mil Private 3140219 - 234 KG5JJM_Larry_Mcc Private 3140220 - 235 W5DZG_Dasha_Step Private 3140221 - 236 KF5JRP_Matt_Ford Private 3140222 - 237 K2GKK_Donald_Mac Private 3140223 - 238 WA5VMS_Joe_Borov Private 3140224 - 239 W5ADH_Anthony_Ha Private 3140225 - 240 K7JKZ_John_Maass Private 3140226 - 241 AF5TU_Robert_Gol Private 3140227 - 242 N9TRC_George_Bar Private 3140228 - 243 N5OUU_Kit_Bratt Private 3140229 - 244 W5WBB_Eddie_Coll Private 3140230 - 245 N5VEB_John_Black Private 3140231 - 246 KD5FLX_Cory Private 3140232 - 247 W5TPD_Michael Private 3140233 - 248 KB5T_Kenneth Private 3140234 - 249 AF5TQ_Duane_Coff Private 3140235 - 250 WA6LBU_Clay_Mayr Private 3140236 - 251 W6DLV_Alan_Sales Private 3140237 - 252 W5KIS_Warren_Sch Private 3140238 - 253 KN5UPS_John_Ande Private 3140239 - 254 KB5DBR_Joseph_Wi Private 3140240 - 255 N5DKM_David_Mill Private 3140241 - 256 N5UUA_Jon_Edward Private 3140242 - 257 KN5UPS_John_Ande Private 3140243 - 258 KA5J_David_Gibso Private 3140244 - 259 KS5P_Ron_Grossma Private 3140245 - 260 KF5PFU_Ryan_Fred Private 3140246 - 261 KF5MTZ_Michael_W Private 3140247 - 262 AF5Q_Ronald_Gros Private 3140248 - 263 KE9XB_Don_Poquet Private 3140249 - 264 WD5USA_Michael_M Private 3140250 - 265 KF5EIP_Luis_Ball Private 3140251 - 266 KE5PGS_Jeffery_H Private 3140252 - 267 N5LYJ_Kenneth_Hu Private 3140253 - 268 N5ZPG_Sharon_Gro Private 3140254 - 269 KC5RAJ_Larry_Ble Private 3140255 - 270 W5AMX_James_Cann Private 3140256 - 271 KJ5LY_Darrel_Gro Private 3140257 - 272 KB5VDB_Lancaster Private 3140258 - 273 K5WXL_Matt_Walke Private 3140259 - 274 KD5TDK_Chris_Eti Private 3140260 - 275 K5DBW_Daniel_Wil Private 3140261 - 276 KC5RCV_Larry_Ble Private 3140262 - 277 KF5IBE_Scott_Smi Private 3140263 - 278 WA5LSH_Tracie_Wa Private 3140264 - 279 KA5LSU_William_W Private 3140265 - 280 N5VIN_Troy_Fehri Private 3140266 - 281 KF5OK_Jeff_Ewy Private 3140267 - 282 KG5IRQ_Ronny_Cro Private 3140268 - 283 KG5IRQ_Ron_Cross Private 3140269 - 284 KG5CLM_Charles_D Private 3140270 - 285 KD5SKS_Tyler_E_T Private 3140271 - 286 AJ5W_David_J_Wil Private 3140272 - 287 KG5LXQ_Richard_L Private 3140273 - 288 KG5ICZ_Stephan_E Private 3140274 - 289 W5EJK_John_F_Mar Private 3140275 - 290 KG5DIR_Charles_A Private 3140276 - 291 W5MIQ_Gary_Mcbro Private 3140277 - 292 N0OIJ_Robert_E_J Private 3140278 - 293 KE5YYL_Larry_N_W Private 3140279 - 294 N5DBL_Daniel_B_L Private 3140280 - 295 N5DBL_Daniel_B_L Private 3140281 - 296 KF5YJL_Branda_D_ Private 3140282 - 297 KF5YJK_Wilburn_E Private 3140283 - 298 KC5WJE_Aaron_M_D Private 3140284 - 299 KG5KLO_Carisa_G_ Private 3140285 - 300 KD5CJB_David_R_U Private 3140286 - 301 KF5BMZ_Peter_Sla Private 3140287 - 302 KE0GTA_Johnathan Private 3140288 - 303 K5GBN_Brandy_L_H Private 3140289 - 304 N5OSH_Anthony_S_ Private 3140290 - 305 KE5OEX_William_B Private 3140291 - 306 N5YZA_John_E_Dro Private 3140292 - 307 N5PTV_Matthew_R_ Private 3140293 - 308 KF5GTX_Bobby_Dun Private 3140294 - 309 N5HOL_Jimmy_D_Br Private 3140295 - 310 KF5CKQ_Jonathan_ Private 3140296 - 311 KD5CJB_David_R_U Private 3140297 - 312 KM5CL_David_W_Ze Private 3140298 - 313 KB5QAI_S_A_P_Lau Private 3140299 - 314 NQ2J_Skipper_E_S Private 3140300 - 315 WX5OKC_Putnam_E_ Private 3140301 - 316 AG5DV_Edwin_Hatc Private 3140302 - 317 KA5ZYM_Patrick_O Private 3140303 - 318 N5PYD_Paul_D_War Private 3140304 - 319 WA5MA_Mark_Adams Private 3140305 - 320 KB5TQH_Harrison_ Private 3140306 - 321 WA5FLV_Gary_L_Sh Private 3140307 - 322 KB5TQH_Harrison_ Private 3140308 - 323 KC5YUP_Roger_A_P Private 3140309 - 324 AG5DZ_James_P_Da Private 3140310 - 325 KD5ET_Michael_S_ Private 3140311 - 326 KC5UVQ_Ann_Shaw Private 3140312 - 327 KG5MYP_Luis_A_Ga Private 3140313 - 328 KF5RCI_Ronald_K_ Private 3140314 - 329 AG5DB_Peter_Khor Private 3140315 - 330 KD5RXR_Mike_J_Wa Private 3140316 - 331 KD5NJW_Larry_G_K Private 3140317 - 332 WC5B_Tom_Lange Private 3140318 - 333 N5VEA_Michael_R_ Private 3140319 - 334 KM4UPN_Claire_V_ Private 3140320 - 335 W5RLW_Robert_L_W Private 3140321 - 336 KF5GMT_Vance_Fre Private 3140322 - 337 WA5A_Scott_A_Bak Private 3140323 - 338 KD8FQB_David_Kel Private 3140324 - 339 N5KNU_Jerry_Sams Private 3140325 - 340 WA5A_Scott_A_Bak Private 3140326 - 341 KA5JTY_Richard_L Private 3140327 - 342 AA0NI_Daniel_M_R Private 3140328 - 343 KB7QQQ_Samuel_Ro Private 3140329 - 344 KG5UCE_Kristen_R Private 3140330 - 345 W3RXO_Daniel_K_G Private 3140331 - 346 KD5JP_Jesse_M_Pa Private 3140332 - 347 K5DLR_David_Rich Private 3140333 - 348 W5KLD_Kenneth_L_ Private 3140334 - 349 WA5ETV_Gary_L_Mc Private 3140335 - 350 AE5FC_Mervin_Bry Private 3140336 - 351 N5NOQ_Daniel_W_C Private 3140337 - 352 AF5DI_Clark_L_Ov Private 3140338 - 353 K5RKK_Roger_Kiss Private 3140339 - 354 KG5FZO_Carl_Palm Private 3140340 - 355 KG5FZO_Carl_Palm Private 3140341 - 356 KI4DS_Mikaila_A_ Private 3140342 - 357 KG5NOR_Desriee_A Private 3140343 - 358 NB5B_David_L_War Private 3140344 - 359 N5TWB_Bart_Picke Private 3140345 - 360 AF5SX_William_J_ Private 3140346 - 361 N5WDW._Wayne_Wri Private 3140347 - 362 KG5LQX_Gary_J_Gr Private 3140348 - 363 KG5LQX_Gary_J_Gr Private 3140349 - 364 KE5FCA_Daryl_L_B Private 3140350 - 365 NB5B_David_L_War Private 3140351 - 366 AD5JL_Robert_M_B Private 3140352 - 367 WD5IDB_Howard_O_ Private 3140353 - 368 K0CIE_Karl_Kauki Private 3140354 - 369 K5AJT_Anthony_J_ Private 3140355 - 370 AD5JL_Robert_M_B Private 3140356 - 371 KD5RJZ_Michael_N Private 3140357 - 372 AE5MT_Brian_K_Te Private 3140358 - 373 N5ZY_Marcus_Sutl Private 3140359 - 374 KG5HVL_Matthew_E Private 3140360 - 375 W5KSU_Michael_W_ Private 3140361 - 376 AJ4YK_Dr._Ronald Private 3140362 - 377 AK4UN_Jennipher_ Private 3140363 - 378 KG5NOS_Lord_A_Fe Private 3140364 - 379 KD5HPG_Kelly_L_W Private 3140365 - 380 K5NOV_Lee_Mallin Private 3140366 - 381 KG5ICX_Robert_J_ Private 3140367 - 382 KG5MTB_Keith_L_B Private 3140368 - 383 AE5GS_Gary_V_Sti Private 3140369 - 384 KG5MWL_Scott_Par Private 3140370 - 385 W2HK_Robert_A_Le Private 3140371 - 386 KF5UZA_Rodney_Ba Private 3140372 - 387 WB5ULK_Gary_A_Sk Private 3140373 - 388 WG5T_Bill_G_Bake Private 3140374 - 389 K5MAF_Michael_A_ Private 3140375 - 390 N5KUK_Kenneth_A_ Private 3140376 - 391 KE5EQC_Michael_E Private 3140377 - 392 KC0OOX_Roger_Bla Private 3140378 - 393 KG5GOV_Randy_F_D Private 3140379 - 394 KS5B_Stanley_L_B Private 3140380 - 395 KA5YPH_Arluster_ Private 3140381 - 396 WD5HUT_Ronald_L_ Private 3140382 - 397 K5URM_Bill_K_Hoa Private 3140383 - 398 KC5MXE_Buford_R_ Private 3140384 - 399 KF5IM_Richard_C_ Private 3140385 - 400 WX5DF_Douglas_E_ Private 3140386 - 401 AF5UV_John_C_Cra Private 3140387 - 402 N5SOF_Michael_C_ Private 3140388 - 403 K5JCN_James_C_No Private 3140389 - 404 AE5F_William_Loc Private 3140390 - 405 KA9OYD_Cliff_Pet Private 3140391 - 406 KD5VSF_Terry_L_A Private 3140392 - 407 N5TLJ_Tommy_L_Jo Private 3140393 - 408 KG5MXA_Luciana_S Private 3140394 - 409 KD5MUY_Lloyd_Wal Private 3140395 - 410 KG5OCN_Daniel_R_ Private 3140396 - 411 AE5MG_David_L_Cr Private 3140397 - 412 N4THC_William_A_ Private 3140398 - 413 WB5ONA_Nelson_J_ Private 3140399 - 414 KD5MUY_Lloyd_C_W Private 3140400 - 415 KD5UGO_Philip_M_ Private 3140401 - 416 N5OSU_Curtiss_Sc Private 3140402 - 417 N5JXS_Gerald_J_C Private 3140403 - 418 K2ARW_George_A_S Private 3140404 - 419 KF5RYA_Richard_D Private 3140405 - 420 KF5NZK_Marc_L_Mc Private 3140406 - 421 WE1OSU_Jeremy_E_ Private 3140407 - 422 N5SOI_Rob_B_Holl Private 3140408 - 423 K2ARW_George_A_S Private 3140409 - 424 W8OU_Andrew_C_Jo Private 3140410 - 425 KG5HTA_Nathan_A_ Private 3140411 - 426 KE5TZQ_Donald_Ho Private 3140412 - 427 KD5AFS_Grant_C_B Private 3140413 - 428 KG5PDR_Terrill_F Private 3140414 - 429 KE5DTZ_Scotty_Ma Private 3140415 - 430 KG5NL_James_D_Do Private 3140416 - 431 W5IUA_Robert_W_S Private 3140417 - 432 KG5MBX_Brent_W_P Private 3140418 - 433 KG5HSZ_Nathan_A_ Private 3140419 - 434 WA5SEC_Wayne_R_S Private 3140420 - 435 KD5JP_Jesse_M_Pa Private 3140421 - 436 K5WCA_William_C_ Private 3140422 - 437 N5UUA_Jon_M_Edwa Private 3140423 - 438 N5ZIW_Chris_Schu Private 3140424 - 439 KK4EWY_Club_User Private 3140425 - 440 KK4EWY_Club_User Private 3140426 - 441 KK4EWY_Club_User Private 3140427 - 442 KK4EWY_Club_User Private 3140428 - 443 KG5PSX_Tera_Simo Private 3140429 - 444 KF5YAP_Michael_L Private 3140430 - 445 KD5WPU_Ronald_R_ Private 3140431 - 446 KD5WPU_Ronald_R_ Private 3140432 - 447 K5KBA_James_S_Br Private 3140433 - 448 WE5Z_Norbert_Suc Private 3140434 - 449 N1LLK_Wayne_Tetl Private 3140435 - 450 W5TJO_Theodore_J Private 3140436 - 451 W5BM_Daniel_A_Wo Private 3140437 - 452 KE4KGU_David_P_W Private 3140438 - 453 N5YEI_Jeffrey_T_ Private 3140439 - 454 W1PDQ_Christophe Private 3140440 - 455 WX5NWM_Nwm_Natio Private 3140441 - 456 W1PDQ_Christophe Private 3140442 - 457 K5WTX_Markus_D_T Private 3140443 - 458 KG5GQ_Richard_M_ Private 3140444 - 459 KG5QEY_Ryan_Dawk Private 3140445 - 460 AA1OU_Bradley_Wa Private 3140446 - 461 WB5IEK_Donald_W_ Private 3140448 - 462 KA_5_STN_Stanley Private 3140449 - 463 KB5STV_Roy_E_Thr Private 3140450 - 464 K5GSM_Bryan_N_De Private 3140451 - 465 WX5LEO_David_J_M Private 3140452 - 466 KG5EWK_James_Erb Private 3140453 - 467 K5GSM_Bryan_N_De Private 3140454 - 468 W5BIV_Steve_Pier Private 3140455 - 469 NR5L_Mark_L_Rehm Private 3140456 - 470 WX5IRL_Bruce_R_S Private 3140457 - 471 K5SBH_Steve_Hola Private 3140458 - 472 KE6ITF_Scott_W_B Private 3140459 - 473 KG5EIZ_Dylan_R_L Private 3140460 - 474 KF5ZDZ_Robert_O_ Private 3140461 - 475 AA5ZU_Joe_A_Bent Private 3140462 - 476 KF5ZDZ_Robert_O_ Private 3140463 - 477 WX5IRL_Bruce_R_S Private 3140464 - 478 WA5VXI_Manuel_A_ Private 3140465 - 479 N5JMG_Howard_R_S Private 3140466 - 480 KG5ILP_William_R Private 3140467 - 481 KK5IO_Wayne_Dutt Private 3140468 - 482 KF5SKN_Donna_M_D Private 3140469 - 483 W5RST_William_M_ Private 3140470 - 484 WX5MOR_Gayland_D Private 3140471 - 485 N0BOB_Bob_Rogers Private 3140472 - 486 KD6QCZ_Lee_Lacla Private 3140473 - 487 KD6QED_Mildred_L Private 3140474 - 488 KF5JC_James_A_Cr Private 3140475 - 489 WD6CZY_David_H_M Private 3140476 - 490 KB0OZV_Joel_B_Mo Private 3140477 - 491 AE5EH_Edward_R_H Private 3140478 - 492 KG5QZM_Freddie_D Private 3140479 - 493 WD6DCD_Judith_A_ Private 3140480 - 494 AE5EH_Edward_R_H Private 3140481 - 495 KF5WRQ_Glen_E_Ha Private 3140482 - 496 KG5QYK_Michael_G Private 3140483 - 497 K5YHF_John_C_Bak Private 3140484 - 498 KG5QFA_William_T Private 3140485 - 499 N4RDB_Robert_D_B Private 3140486 - 500 KD5UGS_David_D_T Private 3140487 - 501 KB5MGH_Michael_H Private 3140488 - 502 AE5EH_Edward_R_H Private 3140489 - 503 KI5DO_Kelly_C_Cr Private 3140490 - 504 KD5RXI_James_Joh Private 3140491 - 505 W5MVM_Michael_V_ Private 3140492 - 506 KD5SAW_William_S Private 3140493 - 507 N5XLZ_Nathan_E_M Private 3140494 - 508 KF5DEW_Neil_R_Mc Private 3140495 - 509 KF5LGJ_Andrew_L_ Private 3140496 - 510 KG5NNO_Don_V_Mil Private 3140497 - 511 N4IJ_Douglas_R_S Private 3140498 - 512 K3YC_William_E_T Private 3140499 - 513 KG5RLS_Jose_Alva Private 3140500 - 514 K7TOP_Barry_E_Ki Private 3140501 - 515 KM5GZ_Robert_C_C Private 3140502 - 516 KG5PHN_Jeffrey_C Private 3140503 - 517 K5GLH_Paul_L_Mcc Private 3140504 - 518 W7BWY_Robert_M_A Private 3140505 - 519 WX5DEL_Michael_W Private 3140506 - 520 KF5BQD_Cy_Howens Private 3140507 - 521 KG5RFH_James_Tay Private 3140508 - 522 K5HRA_Christophe Private 3140509 - 523 KC5SFE_Dirk_L_Wi Private 3140510 - 524 KG5MQQ_Robert_D_ Private 3140511 - 525 WX5LIB_Matthew_R Private 3140512 - 526 KI3S_Nathan_S_Sc Private 3140513 - 527 W5LHG_Larry_H_Go Private 3140514 - 528 N5TUG_Kelly_D_Ba Private 3140515 - 529 KD5ZYD_Chad_Cunn Private 3140516 - 530 KD5MCE_Richard_W Private 3140517 - 531 N0HDV_Larry_D_Ri Private 3140518 - 532 KF5NAG_Frank_Lot Private 3140519 - 533 N8RSQ_Sean_M_Kin Private 3140520 - 534 AB5GX_John_D_Iri Private 3140521 - 535 WB5VST_Benjamin_ Private 3140522 - 536 W5QO_Paul_L_Mcco Private 3140524 - 537 KG5ILR_Keith_M_M Private 3140525 - 538 W5MQC_Michelle_C Private 3140526 - 539 WR5RR_Ronald_Rea Private 3140527 - 540 N6YSC_Terry_L_Rh Private 3140528 - 541 W0GMM_Gary_M_Met Private 3140529 - 542 W0GMM_Gary_M_Met Private 3140530 - 543 K0DKR_Vincent_J_ Private 3140531 - 544 W5ZP_Jason_McCla Private 3140532 - 545 KG5RSM_Gregory_W Private 3140533 - 546 K5BAM_Robert_Sto Private 3140534 - 547 KF5GDN_Carter_B_ Private 3140535 - 548 N5TNK_Dane_R_Jeh Private 3140536 - 549 KG5RYT_William_S Private 3140537 - 550 KG5MRN_Keith_Mor Private 3140538 - 551 KG5NEK_Myron_But Private 3140539 - 552 KG5SLL_Gerald_S_ Private 3140540 - 553 KG5QEZ_Delmar_J_ Private 3140541 - 554 N0EDB_Eric_Brown Private 3140542 - 555 N5HLJ_James_W_Ro Private 3140543 - 556 KK5EE_Michael_K_ Private 3140544 - 557 W5ZBN_Ben_L_Nova Private 3140545 - 558 WA5PSA_Marvin_B_ Private 3140546 - 559 KF5LGJ_Andrew_L_ Private 3140547 - 560 KD6QCZ_Lee_V_La_ Private 3140548 - 561 N5AVV_Jonathan_W Private 3140549 - 562 N0BOB_Robert_L_R Private 3140550 - 563 KG5SLN_Timothy_C Private 3140551 - 564 N3MAL_Mark_Long_ Private 3140552 - 565 KB1ZQ_Harold_Mil Private 3140553 - 566 N1LPN_Linda_G_Mi Private 3140554 - 567 WA5EEZ_Bob_Roger Private 3140555 - 568 WA5FLT_Joseph_L_ Private 3140556 - 569 AE5GZ_Michael_D_ Private 3140557 - 570 N5KCO_Neal_R_Kap Private 3140558 - 571 AE5CJ_John_A_Sny Private 3140559 - 572 K5OAM_James_Glen Private 3140560 - 573 K5OAM_James_Glen Private 3140561 - 574 W0KIE_Michael_R_ Private 3140563 - 575 K5EB_Earl_G_Keen Private 3140564 - 576 KC5DBH_Matthew_F Private 3140565 - 577 KG5GOG_Monte_M_M Private 3140566 - 578 KG5TEE_Tom_R_Mar Private 3140567 - 579 K5ELO_Jackie_W_S Private 3140570 - 580 N5BRB_Bill_R_Bec Private 3140571 - 581 KF5SYP_Bobby_Lar Private 3140572 - 582 K9AQT_Amber_R_Hi Private 3140573 - 583 KG5SJO_Richard_F Private 3140574 - 584 KD5OND_David_L_K Private 3140575 - 585 W5TJS_Terrance_J Private 3140576 - 586 KG5RYU_William_W Private 3140577 - 587 KF5APK_Gary_J_Cu Private 3140578 - 588 KA7Y_Ralph_P_Mil Private 3140579 - 589 KD5NJR_Scott_Hal Private 3140580 - 590 KA7Y_Ralph_P_Mil Private 3140581 - 591 KG5SGQ_Larry_D_S Private 3140582 - 592 W5JJA_John_Alexa Private 3140583 - 593 KF5APA_Diane_L_C Private 3140584 - 594 KF5APA_Diane_L_C Private 3140585 - 595 KE5-LEY_John_E_N Private 3140586 - 596 N5DJH_David_J_He Private 3140587 - 597 KG5COX_Kari_L_To Private 3140588 - 598 KM5H_Thomas_M_Ho Private 3140589 - 599 K0WHN_William_H_ Private 3140590 - 600 AC0PA_Roger_G_Ru Private 3140591 - 601 KC5OIX_Gary_G_Fo Private 3140592 - 602 KF5MCI_Michael_E Private 3140593 - 603 W0MRB_Monte_R_Br Private 3140594 - 604 N5USQ_Kevin_R_Me Private 3140595 - 605 KD5ORW_Scott_E_E Private 3140596 - 606 KF5TVG_Robert_D_ Private 3140597 - 607 KP4DJT_William_H Private 3140598 - 608 WX5CWO_Joshua_He Private 3140599 - 609 W5ABT_Thurman_E_ Private 3140600 - 610 N5DT_David_Tingl Private 3140601 - 611 AE5LT_Morris_J_K Private 3140602 - 612 AE5LT_Morris_J_K Private 3140603 - 613 KF5CUN_Joseph_L_ Private 3140604 - 614 KF5CUN_Joseph_L_ Private 3140605 - 615 KC5NWD_Kent_R_Ki Private 3140606 - 616 WB5PMF_James_M_D Private 3140607 - 617 KC5QCV_Ronald_S_ Private 3140608 - 618 N5UM_Alan_J_Plan Private 3140609 - 619 AC5CQ_Bradley_J_ Private 3140610 - 620 K5HMD_Joe_C_Chri Private 3140611 - 621 WA5IYI_Joseph_M_ Private 3140612 - 622 KG5FUU_Grady_A_R Private 3140613 - 623 KG5IPO_David_Aus Private 3140614 - 624 KD5MAF_Larry_D_C Private 3140615 - 625 AF5SX_William_J_ Private 3140616 - 626 KD5ZLF_Robert_L_ Private 3140617 - 627 KF5WRU_Stanley_P Private 3140618 - 628 WB6GMI_Robert_L_ Private 3140619 - 629 KC5FM_Lloyd_A_Co Private 3140620 - 630 KG5GZU_Dennis_Fu Private 3140621 - 631 KD5TJG_Jason_Ogl Private 3140622 - 632 KD5TJG_Jason_Ogl Private 3140623 - 633 KD5ZLF_Robert_L_ Private 3140624 - 634 N2MOT_John_Burro Private 3140625 - 635 W5NIN_Gary_O_Cli Private 3140626 - 636 KC5BEJ_Christoph Private 3140627 - 637 KD5KGN_Joel_Merr Private 3140628 - 638 KP4DJT_Chuck_Has Private 3140629 - 639 AF5BL_Brad_L_Sni Private 3140630 - 640 KG5TGO_Delbert_C Private 3140631 - 641 KR5B_Terry_L_Gra Private 3140632 - 642 KR5B_Terry_L_Gra Private 3140633 - 643 W5GFI_John_W_Sch Private 3140635 - 644 AE5OF_Gary_H_Way Private 3140636 - 645 KG5OKC_Bruce_W_L Private 3140637 - 646 KG5NGD_John_W_He Private 3140639 - 647 N5AFY_Larry_W_Ki Private 3140641 - 648 W5ACA_Charles_R_ Private 3140642 - 649 K0LOT_Leo_E_Neye Private 3140643 - 650 KF5NML_Gary_D_Ki Private 3140644 - 651 WD5HJZ_Eddie_L_K Private 3140645 - 652 KC5UEX_April_Fow Private 3140646 - 653 W0ON_Kerry_W_Ste Private 3140647 - 654 WX5NXR_David_D_T Private 3140648 - 655 KC5MXW_John_W_Ch Private 3140649 - 656 KG5UVV_Edward_He Private 3140650 - 657 N5EDD_Edward_F_O Private 3140652 - 658 N2OMG_Steven_R_M Private 3140653 - 659 AE5CI_George_M_M Private 3140655 - 660 KG5KBX_Earl_J_Ma Private 3140656 - 661 KG5RT_Robert_R_T Private 3140657 - 662 K5OES_Janice_Rea Private 3140658 - 663 K5WAN_Wendell_A_ Private 3140659 - 664 KB5AWD_Ray_H_New Private 3140660 - 665 KE5S_Patrick_A_C Private 3140661 - 666 KE5YBC_Andrew_K_ Private 3140662 - 667 WX5DRS_David_R_S Private 3140663 - 668 K5ERR_Larry_B_Ke Private 3140664 - 669 N5OCO_Eric_T_Oos Private 3140665 - 670 N9VAL_Valoriee_D Private 3140666 - 671 K5SNG_Chad_A_Kin Private 3140667 - 672 WX5DLH_David_L_H Private 3140668 - 673 N6FSQ_Jennifer_D Private 3140669 - 674 KK5QS_Quincy_S_S Private 3140670 - 675 KG5UNH_Glenn_F_C Private 3140671 - 676 KC5ULF_Hubert_R_ Private 3140672 - 677 KC5ULF_Hubert_R_ Private 3140673 - 678 K5BDW_Billy_D_Wi Private 3140674 - 679 WD5ADQ_Wilbert_T Private 3140675 - 680 W8AW_Don_V_Mille Private 3140676 - 681 N5HRO_Howard_R_H Private 3140677 - 682 KK5O_Timothy_B_L Private 3140678 - 683 AA5GW_Gary_R_Woo Private 3140679 - 684 N5FEE_Dallas_R_S Private 3140680 - 685 NA5O_James_D_Wal Private 3140681 - 686 KG5VNH_Kros_N_Do Private 3140682 - 687 KA0ZWV_Cecil_E_C Private 3140683 - 688 KG5VQO_Christoph Private 3140684 - 689 WW5DAV_David_L_C Private 3140685 - 690 KG5SSV_Mark_G_Pa Private 3140686 - 691 KE5SBT_Joshua_L_ Private 3140687 - 692 N5SLO_Sheldon_L_ Private 3140688 - 693 KG5EVZ_Danny_P_P Private 3140689 - 694 KG5VKC_Cory_Sams Private 3140690 - 695 W5NK_Donald_W_Mc Private 3140691 - 696 KG5SQT_Frank_L_C Private 3140692 - 697 N5CLH_Clyde_L_He Private 3140693 - 698 KG5VVI_Thomas_M_ Private 3140694 - 699 KG5VVI_Thomas_M_ Private 3140695 - 700 K9HFN_Earl_Stark Private 3140696 - 701 KG5EOG_Elmo_W_Sp Private 3140697 - 702 N5VYF_Richard_A_ Private 3140698 - 703 K9HFN_Earl_Stark Private 3140699 - 704 KD5RAK_H_Jerrod_ Private 3140700 - 705 KG5UVU_Craig_Stu Private 3140701 - 706 W5DPH_Joseph_B_B Private 3140702 - 707 AC0PA_Roger_G_Ru Private 3140703 - 708 N5DRW_Steven_K_L Private 3140704 - 709 KG6FWL_Frank_J_E Private 3140705 - 710 K5VPN_Victor_P_N Private 3140706 - 711 N5PYD_Paul_Warde Private 3140707 - 712 W5KS_Lawton_Fort Private 3140708 - 713 AF5XA_John_M_Lam Private 3140709 - 714 AE5RL_Philip_C_C Private 3140710 - 715 KG5FHR_Steven_D_ Private 3140711 - 716 W5DSM_Dale_Mello Private 3140712 - 717 KG5KBL_Christoph Private 3140713 - 718 K5WZE_Glenn_F_Cr Private 3140714 - 719 N9QWR_Craig_W_Pa Private 3140715 - 720 N9QWR_Craig_W_Pa Private 3140716 - 721 KB5VDO_Jay_Leste Private 3140718 - 722 N5BWP_Brent_W_Pr Private 3140719 - 723 KD5ZMC_Christoph Private 3140720 - 724 KA5DEB_Debra_Mal Private 3140721 - 725 K5TMH_Timothy_M_ Private 3140722 - 726 K5AEB_Ann_E_Bruu Private 3140723 - 727 KG5WIH_Stuart_D_ Private 3140724 - 728 KD0QJS_Gerhardt_ Private 3140725 - 729 KG5OFF_Alfred_L_ Private 3140726 - 730 KG0XP_Kenneth_W_ Private 3140727 - 731 NE5SD_Steven_R_D Private 3140728 - 732 KG5OFF_Alfred_El Private 3140729 - 733 K5VPN_Victor_P_N Private 3140730 - 734 KA5SIG_Brian_E_A Private 3140731 - 735 AG5MU_John_W_Col Private 3140732 - 736 KD5CMW_Joshua_A_ Private 3140733 - 737 NE5SD_Steven_R_D Private 3140734 - 738 NO5R_Barney_J_Bo Private 3140735 - 739 KG5UZC_George_W_ Private 3140736 - 740 KD5FGU_Corey_M_R Private 3140737 - 741 KF5TIZ_Thomas_J_ Private 3140739 - 742 WB5Y_Kenneth_W_D Private 3140740 - 743 KG5SSK_Jerry_R_S Private 3140741 - 744 K0PKO_Clarence_M Private 3140742 - 745 KG5WTP_Logan_She Private 3140743 - 746 KE5YMI_Michael_C Private 3140744 - 747 KG5WWT_Christoph Private 3140745 - 748 KG5KLX_Nicholas_ Private 3140746 - 749 W5SRO_Arnulf_P_H Private 3140747 - 750 KB5BLZ_Mike_Ella Private 3140748 - 751 KB5BLZ_Mike_Ella Private 3140749 - 752 KE5DRB_Dustin_Ba Private 3140750 - 753 KF5RYB_Daniel_F_ Private 3140751 - 754 KW5JC_Jack_W_Coc Private 3140752 - 755 AB5CC_Kenneth_P_ Private 3140753 - 756 AG5LB_Jeff_Russe Private 3140754 - 757 KG5RBO_Kyle_J_Ha Private 3140755 - 758 KD5OEK_Jerry_E_G Private 3140756 - 759 KD5UTU_James_A_H Private 3140757 - 760 KD5WA_Louis_M_Ru Private 3140758 - 761 W5HLG_H._Lea_Gre Private 3140759 - 762 W5ZT_Daniel_E_Kn Private 3140760 - 763 K5AED_Allen_E_Du Private 3140761 - 764 K5FJP_Jerrold_Pe Private 3140762 - 765 W5RFG_Phillip_W_ Private 3140763 - 766 KD5EYN_Mitchell_ Private 3140764 - 767 N5YZJ_Kevin_P_Ep Private 3140765 - 768 AD5GG_Gordon_W_H Private 3140766 - 769 NQ5M_Kyle_N_Sloa Private 3140767 - 770 AA5CJ_Collin_And Private 3140768 - 771 KG5VLN_Robert_W_ Private 3140769 - 772 KG5PPK_Michael_A Private 3140770 - 773 KG5UIS_Andy_Aske Private 3140771 - 774 KG5UIS_Andy_Aske Private 3140772 - 775 KC5WW_Caleb_M_An Private 3140775 - 776 KG5FBN_Richard_M Private 3140778 - 777 KG5FBN_Richard_M Private 3140779 - 778 K5ZDP_David_M_Pa Private 3140780 - 779 WX5JCL_Justin_La Private 3140781 - 780 WX5JCL_Justin_La Private 3140782 - 781 KC5PIQ_Christoph Private 3140783 - 782 KC5PIQ_Christoph Private 3140784 - 783 AE5L_Alfred_T_In Private 3140786 - 784 W5BE_Burl_E_Herr Private 3140787 - 785 W5JHC_John_Conwa Private 3140789 - 786 W5ZP_Jason_P_McC Private 3140790 - 787 KG5YGM_Daniel_E_ Private 3140791 - 788 W2ND_Christopher Private 3140792 - 789 W2ND_Christopher Private 3140793 - 790 KG5YRF_Jake_Hill Private 3140794 - 791 K5NTW_Kent_Wohle Private 3140796 - 792 K5NTW_Kent_Wohle Private 3140797 - 793 KG5YRM_Dee_Dee_W Private 3140798 - 794 KG5YRM_Dee_Dee_W Private 3140799 - 795 N5VTC_Jerry_G_Br Private 3140800 - 796 KE5JDG_Robert_H_ Private 3140801 - 797 KG5AZR_John_R_Da Private 3140802 - 798 W5KES_Kevin_E_St Private 3140803 - 799 N5KUO_Judith_D_V Private 3140804 - 800 KG5AZR_John_R_Da Private 3140805 - 801 W5KES_Kevin_E_St Private 3140806 - 802 W5ESA_David_Reed Private 3140807 - 803 K5LVC_Kenneth_Br Private 3140808 - 804 KG5HQB_Bryan_M_M Private 3140809 - 805 WD5EQZ_Reuben_D_ Private 3140810 - 806 KK5EE_Michael_K_ Private 3140811 - 807 KG5YBH_Robert_B_ Private 3140812 - 808 KG5YKL_Dana_M_En Private 3140813 - 809 KG5RT_Robert_R_T Private 3140815 - 810 KE5NKM_Gary_Marl Private 3140816 - 811 KE5NKM_Gary_Marl Private 3140817 - 812 KD5DA_David_B_Ba Private 3140818 - 813 AF5IK_Carolyn_K_ Private 3140819 - 814 KG5YBI_William_R Private 3140820 - 815 N5LUV_Zach_W_Ren Private 3140821 - 816 N5BKH_Bryan_K_Ha Private 3140822 - 817 WD0CTA_Michael_W Private 3140824 - 818 KD5FX_David_Land Private 3140825 - 819 KC9ILN_Brandon_S Private 3140826 - 820 W5COV_Charles_O_ Private 3140827 - 821 KG5GJJ_Shane_A_L Private 3140828 - 822 W5TLR_Jimmie_D_S Private 3140829 - 823 N0HDV_Larry_D_Ri Private 3140830 - 824 KE5ZCZ_Robert_Mi Private 3140831 - 825 KG5SSU_Michael_J Private 3140832 - 826 KG5SSU_Michael_J Private 3140833 - 827 W5BS_Bradford_S_ Private 3140834 - 828 KG5CLM_Charles_D Private 3140835 - 829 KC5GRZ_Francis_M Private 3140837 - 830 KG5OSV_Randall_E Private 3140838 - 831 KF5CKO_Brandon_K Private 3140839 - 832 KC0JOJ_Larry_D_N Private 3140840 - 833 KG5ZGA_Samuel_Wa Private 3140841 - 834 K0PKO_Clarence_M Private 3140842 - 835 AF7GN_Joseph_F_G Private 3140843 - 836 KC5ZZE_Andrew_A_ Private 3140844 - 837 N2MOT_John_C_Bur Private 3140845 - 838 KG5NCF_John_C_Ai Private 3140846 - 839 KF5SVA_David_M_B Private 3140847 - 840 KG5YSN_William_L Private 3140848 - 841 KB5GVS_Guy_V_Sti Private 3140851 - 842 KD5KDI_Mark_T_Ga Private 3140852 - 843 W5KKY_Billy_R_Ar Private 3140853 - 844 WB5YBZ_Rich_Rodg Private 3140854 - 845 KG5WTN_Lisa_D_Ec Private 3140855 - 846 W5IFN_Harold_L_B Private 3140856 - 847 W5KKY_Billy_R_Ar Private 3140857 - 848 WA3OPY_Darell_F_ Private 3140858 - 849 KN5EW_Sid_R_Tryz Private 3140859 - 850 KG5ZNB_Jim_R_Rag Private 3140860 - 851 W5JA_Judson_L_Ah Private 3140861 - 852 W5JA_Judson_L_Ah Private 3140862 - 853 K5YM_David_A_Boo Private 3140863 - 854 KG5ZGB_Nick_Khor Private 3140864 - 855 K5YM_David_A_Boo Private 3140865 - 856 KA5ECX_Howard_K_ Private 3140866 - 857 KG5SSW_Carl_Purs Private 3140867 - # Table of group lists. # 1) Group list number: 1-76 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of contacts: numbers and ranges (N-M) separated by comma # Grouplist Name Contacts 1 TS1 5,7-12,14 2 TS2 1-4,6 # Table of text messages. # 1) Message number: 1-32 # 2) Text: up to 144 characters # Message Text 1 HELLO! # Unique DMR ID and name of this radio. ID: 1 Name: Callsign # Text displayed when the radio powers up. Intro Line 1: SCARS Intro Line 2: 5/4/2018 dmrconfig-master/examples/md-uv380-empty.conf000066400000000000000000000045321354060760700214370ustar00rootroot00000000000000# # Configuration generated 2018/11/12 by dmrconfig, version 0.9.193 # Radio: TYT MD-UV380 Last Programmed Date: 2018-08-20 12:41:08 CPS Software Version: V01.07 # Table of analog channels. # 1) Channel number: 1-3000 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Mid, Low # 6) Scan list: - or index # 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555 # 8) Receive only: -, + # 9) Admit criteria: -, Free, Tone # 10) Squelch level: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 # 11) Guard tone for receive, or '-' to disable # 12) Guard tone for transmit, or '-' to disable # 13) Bandwidth in kHz: 12.5, 20, 25 # Analog Name Receive Transmit Power Scan TOT RO Admit Sq RxTone TxTone Width 1 Channel1 400.000 +0 High - 60 - - 1 - - 12.5 # Table of channel zones. # 1) Zone number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of channels: numbers and ranges (N-M) separated by comma # Zone Name Channels 1a Zone1 1 1b - - # Table of scan lists. # 1) Scan list number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) Priority channel 1 (50% of scans): -, Sel or index # 4) Priority channel 2 (25% of scans): -, Sel or index # 5) Designated transmit channel: Last, Sel or index # 6) List of channels: numbers and ranges (N-M) separated by comma # Scanlist Name PCh1 PCh2 TxCh Channels 1 ScanList1 - - Last 1 # Table of contacts. # 1) Contact number: 1-10000 # 2) Name: up to 16 characters, use '_' instead of space # 3) Call type: Group, Private, All # 4) Call ID: 1...16777215 # 5) Call receive tone: -, + # Contact Name Type ID RxTone 1 Contact1 Group 1 - # Table of group lists. # 1) Group list number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of contacts: numbers and ranges (N-M) separated by comma # Grouplist Name Contacts 1 GroupList1 1 # Table of text messages. # 1) Message number: 1-50 # 2) Text: up to 144 characters # Message Text 1 Hello # Unique DMR ID and name of this radio. ID: 1234 Name: - # Text displayed when the radio powers up. Intro Line 1: - Intro Line 2: - dmrconfig-master/examples/md-uv380-factory.conf000066400000000000000000000075771354060760700217640ustar00rootroot00000000000000# # Configuration generated 2018/11/12 by dmrconfig, version 0.9.193 # Radio: TYT MD-UV380 Last Programmed Date: 2018-07-13 16:02:59 CPS Software Version: V01.07 # Table of digital channels. # 1) Channel number: 1-3000 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Mid, Low # 6) Scan list: - or index in Scanlist table # 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555 # 8) Receive only: -, + # 9) Admit criteria: -, Free, Color # 10) Color code: 0, 1, 2, 3... 15 # 11) Time slot: 1 or 2 # 12) Receive group list: - or index in Grouplist table # 13) Contact for transmit: - or index in Contacts table # Digital Name Receive Transmit Power Scan TOT RO Admit Color Slot RxGL TxContact 1 Channel1 431.125 +0 Low - 60 - - 1 1 1 1 # Contact1 2 Channel2 432.225 +0 High - 60 - - 1 1 1 1 # Contact1 3 Channel3 433.325 +0 High - 60 - - 1 1 1 1 # Contact1 4 Channel4 434.425 +0 High - 60 - - 1 1 1 1 # Contact1 6 Channel6 141.125 +0 High - 60 - - 1 1 1 1 # Contact1 7 Channel7 142.225 +0 High - 60 - - 1 1 1 1 # Contact1 8 Channel8 143.325 +0 High - 60 - - 1 1 1 1 # Contact1 9 Channel9 144.425 +0 High - 60 - - 1 1 1 1 # Contact1 # Table of analog channels. # 1) Channel number: 1-3000 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Mid, Low # 6) Scan list: - or index # 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555 # 8) Receive only: -, + # 9) Admit criteria: -, Free, Tone # 10) Squelch level: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 # 11) Guard tone for receive, or '-' to disable # 12) Guard tone for transmit, or '-' to disable # 13) Bandwidth in kHz: 12.5, 20, 25 # Analog Name Receive Transmit Power Scan TOT RO Admit Sq RxTone TxTone Width 5 Channel5 435.525 +0 High - 60 - - 3 82.5 82.5 12.5 10 Channel10 145.525 +0 High - 60 - - 3 82.5 82.5 12.5 # Table of channel zones. # 1) Zone number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of channels: numbers and ranges (N-M) separated by comma # Zone Name Channels 1a Zone1 1-5 1b - 6-10 # Table of scan lists. # 1) Scan list number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) Priority channel 1 (50% of scans): -, Sel or index # 4) Priority channel 2 (25% of scans): -, Sel or index # 5) Designated transmit channel: Last, Sel or index # 6) List of channels: numbers and ranges (N-M) separated by comma # Scanlist Name PCh1 PCh2 TxCh Channels 1 ScanList1 - - Last 1 # Table of contacts. # 1) Contact number: 1-10000 # 2) Name: up to 16 characters, use '_' instead of space # 3) Call type: Group, Private, All # 4) Call ID: 1...16777215 # 5) Call receive tone: -, + # Contact Name Type ID RxTone 1 Contact1 Group 1 - # Table of group lists. # 1) Group list number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of contacts: numbers and ranges (N-M) separated by comma # Grouplist Name Contacts 1 GroupList1 1 # Table of text messages. # 1) Message number: 1-50 # 2) Text: up to 144 characters # Message Text 1 Hello # Unique DMR ID and name of this radio. ID: 1234 Name: - # Text displayed when the radio powers up. Intro Line 1: - Intro Line 2: - dmrconfig-master/examples/md-uv380_bm_2018-08-07.conf000066400000000000000000003033301354060760700221020ustar00rootroot00000000000000# # Configuration generated 2018/11/12 by dmrconfig, version 0.9.193 # Radio: TYT MD-UV380 Last Programmed Date: 2018-08-05 17:54:47 CPS Software Version: V01.32 # Table of digital channels. # 1) Channel number: 1-3000 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Mid, Low # 6) Scan list: - or index in Scanlist table # 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555 # 8) Receive only: -, + # 9) Admit criteria: -, Free, Color # 10) Color code: 0, 1, 2, 3... 15 # 11) Time slot: 1 or 2 # 12) Receive group list: - or index in Grouplist table # 13) Contact for transmit: - or index in Contacts table # Digital Name Receive Transmit Power Scan TOT RO Admit Color Slot RxGL TxContact 1 Bandholm_LK_238 434.650 -2 High 48 180 - Color 15 1 1 34 # 238_DNK 2 Bandholm_LKS_238 434.650 -2 High 48 180 - Color 15 1 1 34 # 238_DNK 3 Bandholm_REF_2/9 434.650 -2 High 48 180 - Color 15 2 2 19 # 009_LOK 4 Bandholm_2/2381 434.650 -2 High 48 180 - Color 15 2 2 35 # TG2381<->DK_Nord 5 Bandholm_2/2382 434.650 -2 High 48 180 - Color 15 2 2 36 # TG2382<->DK_Midt 6 Bandholm_2/2383 434.650 -2 High 48 180 - Color 15 2 2 37 # TG2383<->DK_Syd 7 Bandholm_2/2384 434.650 -2 High 48 180 - Color 15 2 2 38 # TG2384<->DK_Cph 8 Bandholm_2/2385 434.650 -2 High 48 180 - Color 15 2 2 39 # TG2385<->DK_Sj 9 Bandho_QSY1_2386 434.650 -2 High 48 180 - Color 15 2 2 40 # TG2386<->DK_QSY1 10 Bandho_QSY2_2387 434.650 -2 High 48 180 - Color 15 2 2 41 # TG2387<->DK_QSY2 11 Bandholm_WW_1/1 434.650 -2 High 48 180 - Color 15 1 1 17 # 001_WW 12 Bandholm_EU_1/2 434.650 -2 High 48 180 - Color 15 1 1 18 # 002_EU 13 Bandholm_1/240_S 434.650 -2 High 48 180 - Color 15 1 1 48 # 240_SWE 14 Bandholm_1/262_D 434.650 -2 High 48 180 - Color 15 1 1 51 # 262_DEU 16 Borup_LK_1/238 434.700 -2 High 43 180 - Color 15 1 1 34 # 238_DNK 17 Borup_LKS_1/238 434.700 -2 High 43 180 - Color 15 1 1 34 # 238_DNK 18 Borup_REF_2/9 434.700 -2 High 43 180 - Color 15 2 2 19 # 009_LOK 19 Borup_2/2381 434.700 -2 High 43 180 - Color 15 2 2 35 # TG2381<->DK_Nord 20 Borup_2/2382 434.700 -2 High 43 180 - Color 15 2 2 36 # TG2382<->DK_Midt 21 Borup_2/2383 434.700 -2 High 43 180 - Color 15 2 2 37 # TG2383<->DK_Syd 22 Borup_2/2384 434.700 -2 High 43 180 - Color 15 2 2 38 # TG2384<->DK_Cph 23 Borup_2/2385 434.700 -2 High 43 180 - Color 15 2 2 39 # TG2385<->DK_Sj 24 Borup_QSY1_2386 434.700 -2 High 43 180 - Color 15 2 2 40 # TG2386<->DK_QSY1 25 Borup_QSY2_2387 434.700 -2 High 43 180 - Color 15 2 2 41 # TG2387<->DK_QSY2 26 Borup_WW_1/1 434.700 -2 High 43 180 - Color 15 1 1 17 # 001_WW 27 Borup_EU_1/2 434.700 -2 High 43 180 - Color 15 1 1 18 # 002_EU 28 Borup_1/240_S 434.700 -2 High 43 180 - Color 15 1 1 48 # 240_SWE 29 Borup_1/262_D 434.700 -2 High 43 180 - Color 15 1 1 51 # 262_DEU 30 Bregnin_LK_1/238 434.7125 -2 High 39 180 - Color 5 1 1 34 # 238_DNK 31 Bregni_LKS_1/238 434.7125 -2 High 39 180 - Color 5 1 1 34 # 238_DNK 32 Bregnin_REF_2/9 434.7125 -2 High 39 180 - Color 5 2 1 19 # 009_LOK 33 Bregninge_2/2381 434.7125 -2 High 39 180 - Color 5 2 2 35 # TG2381<->DK_Nord 34 Bregninge_2/2382 434.7125 -2 High 39 180 - Color 5 2 2 36 # TG2382<->DK_Midt 35 Bregninge_2/2383 434.7125 -2 High 39 180 - Color 5 2 2 37 # TG2383<->DK_Syd 36 Bregninge_2/2384 434.7125 -2 High 39 180 - Color 5 2 2 38 # TG2384<->DK_Cph 37 Bregninge_2/2385 434.7125 -2 High 39 180 - Color 5 2 2 39 # TG2385<->DK_Sj 38 Bregni_QSY1_2386 434.7125 -2 High 39 180 - Color 5 2 2 40 # TG2386<->DK_QSY1 39 Bregni_QSY2_2387 434.7125 -2 High 39 180 - Color 5 2 2 41 # TG2387<->DK_QSY2 40 Bregninge_WW_1/1 434.7125 -2 High 39 180 - Color 5 1 1 17 # 001_WW 41 Bregninge_EU_1/2 434.7125 -2 High 39 180 - Color 5 1 1 18 # 002_EU 42 Bregnin_1/240_S 434.7125 -2 High 39 180 - Color 5 1 1 48 # 240_SWE 43 Bregnin_1/262_D 434.7125 -2 High 39 180 - Color 5 1 1 51 # 262_DEU 44 CPH_Cit_LK_1/238 434.7875 -2 High 36 180 - Color 4 1 1 34 # 238_DNK 45 CPH_Ci_LKS_1/238 434.7875 -2 High 36 180 - Color 4 1 1 34 # 238_DNK 46 CPH_City_REF_2/9 434.7875 -2 High 36 180 - Color 4 2 2 19 # 009_LOK 47 CPH_City_2/2381 434.7875 -2 High 36 180 - Color 4 2 2 35 # TG2381<->DK_Nord 48 CPH_City_2/2382 434.7875 -2 High 36 180 - Color 4 2 2 36 # TG2382<->DK_Midt 49 CPH_City_2/2383 434.7875 -2 High 36 180 - Color 4 2 2 37 # TG2383<->DK_Syd 50 CPH_City_2/2384 434.7875 -2 High 36 180 - Color 4 2 2 38 # TG2384<->DK_Cph 51 CPH_City_2/2385 434.7875 -2 High 36 180 - Color 4 2 2 39 # TG2385<->DK_Sj 52 CPH_Ci_QSY1_2386 434.7875 -2 High 36 180 - Color 4 2 2 40 # TG2386<->DK_QSY1 53 CPH_Ci_QSY2_2387 434.7875 -2 High 36 180 - Color 4 2 2 41 # TG2387<->DK_QSY2 54 CPH_City_WW_1/1 434.7875 -2 High 36 180 - Color 4 1 1 17 # 001_WW 55 CPH_City_EU_1/2 434.7875 -2 High 36 180 - Color 4 1 1 18 # 002_EU 56 CPH_City_1/240_S 434.7875 -2 High 36 180 - Color 4 1 1 48 # 240_SWE 57 CPH_City_1/262_D 434.7875 -2 High 36 180 - Color 4 1 1 51 # 262_DEU 58 CPH_F_LK_1/238 434.675 -2 High 34 180 - Color 14 1 1 34 # 238_DNK 59 CPH_F_LKS_1/238 434.675 -2 High 34 180 - Color 14 1 1 34 # 238_DNK 60 CPH_F_REF_2/9 434.675 -2 High 34 180 - Color 14 2 2 19 # 009_LOK 61 CPH_F_2/2381 434.675 -2 High 34 180 - Color 14 2 2 35 # TG2381<->DK_Nord 62 CPH_F_2/2382 434.675 -2 High 34 180 - Color 14 2 2 36 # TG2382<->DK_Midt 63 CPH_F_2/2383 434.675 -2 High 34 180 - Color 14 2 2 37 # TG2383<->DK_Syd 64 CPH_F_2/2384 434.675 -2 High 34 180 - Color 14 2 2 38 # TG2384<->DK_Cph 65 CPH_F_2/2385 434.675 -2 High 34 180 - Color 14 2 2 39 # TG2385<->DK_Sj 66 CPH_F_QSY1_2386 434.675 -2 High 34 180 - Color 14 2 2 40 # TG2386<->DK_QSY1 67 CPH_F_QSY2_2387 434.675 -2 High 34 180 - Color 14 2 2 41 # TG2387<->DK_QSY2 68 CPH_F_WW_1/1 434.675 -2 High 34 180 - Color 14 1 1 17 # 001_WW 69 CPH_F_EU_1/2 434.675 -2 High 34 180 - Color 14 1 1 18 # 002_EU 70 CPH_F_1/240_S 434.675 -2 High 34 180 - Color 14 1 1 48 # 240_SWE 71 CPH_F_1/262_D 434.675 -2 High 34 180 - Color 14 1 1 51 # 262_DEU 72 Ebberup_LK_1/238 434.7375 -2 High 42 180 - Color 5 1 1 34 # 238_DNK 73 Ebberu_LKS_1/238 434.7375 -2 High 42 180 - Color 5 1 1 34 # 238_DNK 74 Ebberup_REF_2/9 434.7375 -2 High 42 180 - Color 5 2 2 19 # 009_LOK 75 Ebberup_2/2381 434.7375 -2 High 42 180 - Color 5 2 2 35 # TG2381<->DK_Nord 76 Ebberup_2/2382 434.7375 -2 High 42 180 - Color 5 2 2 36 # TG2382<->DK_Midt 77 Ebberup_2/2383 434.7375 -2 High 42 180 - Color 5 2 2 37 # TG2383<->DK_Syd 78 Ebberup_2/2384 434.7375 -2 High 42 180 - Color 5 2 2 38 # TG2384<->DK_Cph 79 Ebberup_2/2385 434.7375 -2 High 42 180 - Color 5 2 2 39 # TG2385<->DK_Sj 80 Ebberu_QSY1_2386 434.7375 -2 High 42 180 - Color 5 2 2 40 # TG2386<->DK_QSY1 81 Ebberu_QSY2_2387 434.7375 -2 High 42 180 - Color 5 2 2 41 # TG2387<->DK_QSY2 82 Ebberup_WW_1/1 434.7375 -2 High 42 180 - Color 5 1 1 17 # 001_WW 83 Ebberup_EU_1/2 434.7375 -2 High 42 180 - Color 5 1 1 18 # 002_EU 84 Ebberup_1/240_S 434.7375 -2 High 42 180 - Color 5 1 1 48 # 240_SWE 85 Ebberup_1/262_D 434.7375 -2 High 42 180 - Color 5 1 2 51 # 262_DEU 86 Esb_N_LK_1/238 434.650 -2 High 25 180 - Color 13 1 1 34 # 238_DNK 87 Esb_N_LKS_1/238 434.650 -2 High 25 180 - Color 13 1 1 34 # 238_DNK 88 Esb_N_REF_2/9 434.650 -2 High 25 180 - Color 13 2 2 19 # 009_LOK 89 Esb_N_2/2381 434.650 -2 High 25 180 - Color 13 2 2 35 # TG2381<->DK_Nord 90 Esb_N_2/2382 434.650 -2 High 25 180 - Color 13 2 2 36 # TG2382<->DK_Midt 91 Esb_N_2/2383 434.650 -2 High 25 180 - Color 13 2 2 37 # TG2383<->DK_Syd 92 Esb_N_2/2384 434.650 -2 High 25 180 - Color 13 2 2 38 # TG2384<->DK_Cph 93 Esb_N_2/2385 434.650 -2 High 25 180 - Color 13 2 2 39 # TG2385<->DK_Sj 94 Esb_N_QSY1_2386 434.650 -2 High 25 180 - Color 13 2 2 40 # TG2386<->DK_QSY1 95 Esb_N_QSY2_2387 434.650 -2 High 25 180 - Color 13 2 2 41 # TG2387<->DK_QSY2 96 Esb_N__WW_1/1 434.650 -2 High 25 180 - Color 13 1 1 17 # 001_WW 97 Esb_N_EU_1/2 434.650 -2 High 25 180 - Color 13 1 1 18 # 002_EU 98 Esb_N_1/240_S 434.650 -2 High 25 180 - Color 13 1 1 48 # 240_SWE 99 Esb_N_1/262_D 434.650 -2 High 25 180 - Color 13 1 1 51 # 262_DEU 100 Esb_LK_1/238 434.6875 -2 High 26 180 - Color 13 1 1 34 # 238_DNK 101 Esb_LKS_1/238 434.6875 -2 High 26 180 - Color 13 1 1 34 # 238_DNK 102 Esb_REF_2/9 434.6875 -2 High 26 180 - Color 13 2 2 19 # 009_LOK 103 Esb_2/2381 434.6875 -2 High 26 180 - Color 13 2 2 35 # TG2381<->DK_Nord 104 Esb_2/2382 434.6875 -2 High 26 180 - Color 13 2 2 36 # TG2382<->DK_Midt 105 Esb_2/2383 434.6875 -2 High 26 180 - Color 13 2 2 37 # TG2383<->DK_Syd 106 Esb_2/2384 434.6875 -2 High 26 180 - Color 13 2 2 38 # TG2384<->DK_Cph 107 Esb_2/2385 434.6875 -2 High 26 180 - Color 13 2 2 39 # TG2385<->DK_Sj 108 Esb_QSY1_2386 434.6875 -2 High 26 180 - Color 13 2 2 40 # TG2386<->DK_QSY1 109 Esb_QSY2_2387 434.6875 -2 High 26 180 - Color 13 2 2 41 # TG2387<->DK_QSY2 110 Esb__WW_1/1 434.6875 -2 High 26 180 - Color 13 1 1 17 # 001_WW 111 Esb_EU_1/2 434.6875 -2 High 26 180 - Color 13 1 1 18 # 002_EU 112 Esb_1/240_S 434.6875 -2 High 26 180 - Color 13 1 11 34 # 238_DNK 113 Esb_1/262_D 434.6875 -2 High 26 180 - Color 13 1 1 51 # 262_DEU 114 Farum_LK_1/238 434.7625 -2 High 33 180 - Color 4 1 1 34 # 238_DNK 115 Farum_LKS_1/238 434.7625 -2 High 33 180 - Color 4 1 1 34 # 238_DNK 116 Farum_REF_2/9 434.7625 -2 High 33 180 - Color 4 2 2 19 # 009_LOK 117 Farum_2/2381 434.7625 -2 High 33 180 - Color 4 2 2 35 # TG2381<->DK_Nord 118 Farum_2/2382 434.7625 -2 High 33 180 - Color 4 2 2 36 # TG2382<->DK_Midt 119 Farum_2/2383 434.7625 -2 High 33 180 - Color 4 2 2 37 # TG2383<->DK_Syd 120 Farum_2/2384 434.7625 -2 High 33 180 - Color 4 2 2 38 # TG2384<->DK_Cph 121 Farum_2/2385 434.7625 -2 High 33 180 - Color 4 2 2 39 # TG2385<->DK_Sj 122 Farum_QSY1_2386 434.7625 -2 High 33 180 - Color 4 2 2 40 # TG2386<->DK_QSY1 123 Farum_QSY2_2387 434.7625 -2 High 33 180 - Color 4 2 2 41 # TG2387<->DK_QSY2 124 Farum_WW_1/1 434.7625 -2 High 33 180 - Color 4 1 1 17 # 001_WW 125 Farum_EU_1/2 434.7625 -2 High 33 180 - Color 4 1 1 18 # 002_EU 126 Farum_1/240_S 434.7625 -2 High 33 180 - Color 4 1 1 48 # 240_SWE 127 Farum_1/262_D 434.7625 -2 High 33 180 - Color 4 1 1 51 # 262_DEU 128 Frc_LK_1/238 434.800 -2 High 24 180 - Color 3 1 1 34 # 238_DNK 129 Frc_LKS_1/238 434.800 -2 High 24 180 - Color 3 1 1 34 # 238_DNK 130 Frc_REF_2/9 434.800 -2 High 24 180 - Color 3 2 2 19 # 009_LOK 131 Frc_2/2381 434.800 -2 High 24 180 - Color 3 2 2 35 # TG2381<->DK_Nord 132 Frc_2/2382 434.800 -2 High 24 180 - Color 3 2 2 36 # TG2382<->DK_Midt 133 Frc_2/2383 434.800 -2 High 24 180 - Color 3 2 2 37 # TG2383<->DK_Syd 134 Frc_2/2384 434.800 -2 High 24 180 - Color 3 2 2 38 # TG2384<->DK_Cph 135 Frc_2/2385 434.800 -2 High 24 180 - Color 3 2 2 39 # TG2385<->DK_Sj 136 Frc_QSY1_2/2386 434.800 -2 High 24 180 - Color 3 2 2 40 # TG2386<->DK_QSY1 137 Frc_QSY2_2/2387 434.800 -2 High 24 180 - Color 3 2 2 41 # TG2387<->DK_QSY2 138 Frc_WW_1/1 434.800 -2 High 24 180 - Color 3 1 1 17 # 001_WW 139 Frc_EU_1/2 434.800 -2 High 24 180 - Color 3 1 1 18 # 002_EU 140 Frc_1/240_S 434.800 -2 High 24 180 - Color 3 1 1 48 # 240_SWE 141 Frc_1/262_D 434.800 -2 High 24 180 - Color 3 1 1 51 # 262_DEU 142 Fr.havn_LK_1/238 434.625 -2 High 16 180 - Color 11 1 1 34 # 238_DNK 143 Fr.hav_LKS_1/238 434.625 -2 High 16 180 - Color 11 1 1 34 # 238_DNK 144 Fr.havn_REF_2/9 434.625 -2 High 16 180 - Color 11 2 2 19 # 009_LOK 145 Fr.hav_2/2381 434.625 -2 High 16 180 - Color 11 2 2 35 # TG2381<->DK_Nord 146 Fr.hav_2/2382 434.625 -2 High 16 180 - Color 11 2 2 36 # TG2382<->DK_Midt 147 Fr.hav_2/2383 434.625 -2 High 16 180 - Color 11 2 2 37 # TG2383<->DK_Syd 148 Fr.hav_2/2384 434.625 -2 High 16 180 - Color 11 2 2 38 # TG2384<->DK_Cph 149 Fr.hav_2/2385 434.625 -2 High 16 180 - Color 11 2 2 39 # TG2385<->DK_Sj 150 Fr.hav_QSY1_2386 434.625 -2 High 16 180 - Color 11 2 2 40 # TG2386<->DK_QSY1 151 Fr.hav_QSY2_2387 434.625 -2 High 16 180 - Color 11 2 2 41 # TG2387<->DK_QSY2 152 Fr.havn_WW_1/1 434.625 -2 High 16 180 - Color 11 1 1 17 # 001_WW 153 Fr.havn_EU_1/2 434.625 -2 High 16 180 - Color 11 1 1 18 # 002_EU 154 Fr.havn_1/240_S 434.625 -2 High 16 180 - Color 11 1 1 48 # 240_SWE 155 Fr.havn_1/262_D 434.625 -2 High 16 180 - Color 11 1 1 51 # 262_DEU 156 Fr.Sund_LK_1/238 434.5375 -2 High 32 180 - Color 14 1 1 34 # 238_DNK 157 Fr.Sun_LKS_1/238 434.5375 -2 High 32 180 - Color 14 1 1 34 # 238_DNK 158 Fr.Sund_REF_2/9 434.5375 -2 High 32 180 - Color 14 2 2 19 # 009_LOK 159 Fr.Sund_2/2381 434.5375 -2 High 32 180 - Color 14 2 2 35 # TG2381<->DK_Nord 160 Fr.Sund_2/2382 434.5375 -2 High 32 180 - Color 14 2 2 36 # TG2382<->DK_Midt 161 Fr.Sund_2/2383 434.5375 -2 High 32 180 - Color 14 2 2 37 # TG2383<->DK_Syd 162 Fr.Sund_2/2384 434.5375 -2 High 32 180 - Color 14 2 2 38 # TG2384<->DK_Cph 163 Fr.Sund_2/2385 434.5375 -2 High 32 180 - Color 14 2 2 39 # TG2385<->DK_Sj 164 Fr.Sun_QSY1_2386 434.5375 -2 High 32 180 - Color 14 2 2 40 # TG2386<->DK_QSY1 165 Fr.Sun_QSY1_2387 434.5375 -2 High 32 180 - Color 14 2 2 41 # TG2387<->DK_QSY2 166 Fr.Sund_WW_1/1 434.5375 -2 High 32 180 - Color 14 1 1 17 # 001_WW 167 Fr.Sund_EU_1/2 434.5375 -2 High 32 180 - Color 14 1 1 18 # 002_EU 168 Fr.Sund_1/240_S 434.5375 -2 High 32 180 - Color 14 1 1 48 # 240_SWE 169 Fr.Sund_1/262_D 434.5375 -2 High 32 180 - Color 14 1 1 51 # 262_DEU 170 Grenaa_LK_1/238 434.700 -2 High 21 180 - Color 12 1 1 34 # 238_DNK 171 Grenaa_LKS_1/238 434.700 -2 High 21 180 - Color 12 1 1 34 # 238_DNK 172 Grenaa_REF_2/9 434.700 -2 High 21 180 - Color 12 2 2 19 # 009_LOK 173 Grenaa_2/2381 434.700 -2 High 21 180 - Color 12 2 2 35 # TG2381<->DK_Nord 174 Grenaa_2/2382 434.700 -2 High 21 180 - Color 12 2 2 36 # TG2382<->DK_Midt 175 Grenaa_2/2383 434.700 -2 High 21 180 - Color 12 2 2 37 # TG2383<->DK_Syd 176 Grenaa_2/2384 434.700 -2 High 21 180 - Color 12 2 2 38 # TG2384<->DK_Cph 177 Grenaa_2/2385 434.700 -2 High 21 180 - Color 12 2 2 39 # TG2385<->DK_Sj 178 Grenaa_QSY1_2386 434.700 -2 High 21 180 - Color 12 2 2 40 # TG2386<->DK_QSY1 179 Grenaa_QSY2_2387 434.700 -2 High 21 180 - Color 12 2 2 41 # TG2387<->DK_QSY2 180 Grenaa_WW_1/1 434.700 -2 High 21 180 - Color 12 1 1 17 # 001_WW 181 Grenaa_EU_1/2 434.700 -2 High 21 180 - Color 12 1 1 18 # 002_EU 182 Grenaa_1/240_S 434.700 -2 High 21 180 - Color 12 1 1 48 # 240_SWE 183 Grenaa_1/262_D 434.700 -2 High 21 180 - Color 12 1 1 51 # 262_DEU 184 Helsing_LK_1/238 434.800 -2 High 31 180 - Color 4 1 1 34 # 238_DNK 185 Helsin_LKS_1/238 434.800 -2 High 31 180 - Color 4 1 1 34 # 238_DNK 186 Helsingo_REF_2/9 434.800 -2 High 31 180 - Color 4 2 2 19 # 009_LOK 187 Helsingor_2/2381 434.800 -2 High 31 180 - Color 4 2 2 35 # TG2381<->DK_Nord 188 Helsingor_2/2382 434.800 -2 High 31 180 - Color 4 2 2 36 # TG2382<->DK_Midt 189 Helsingor_2/2383 434.800 -2 High 31 180 - Color 4 2 2 37 # TG2383<->DK_Syd 190 Helsingor_2/2384 434.800 -2 High 31 180 - Color 4 2 2 38 # TG2384<->DK_Cph 191 Helsingor_2/2385 434.800 -2 High 31 180 - Color 4 2 2 39 # TG2385<->DK_Sj 192 Helsin_QSY1_2386 434.800 -2 High 31 180 - Color 4 2 2 40 # TG2386<->DK_QSY1 193 Helsin_QSY2_2387 434.800 -2 High 31 180 - Color 4 2 2 41 # TG2387<->DK_QSY2 194 Helsingor_WW_1/1 434.800 -2 High 31 180 - Color 4 1 1 17 # 001_WW 195 Helsingor_EU_1/2 434.800 -2 High 31 180 - Color 4 1 1 18 # 002_EU 196 Helsingo_1/240_S 434.800 -2 High 31 180 - Color 4 1 1 48 # 240_SWE 197 Helsingo_1/262_D 434.800 -2 High 10 180 - Color 4 1 1 51 # 262_DEU 198 Hojby_LK_1/238 434.725 -2 High 37 180 - Color 5 1 1 34 # 238_DNK 199 Hojby_LKS_1/238 434.725 -2 High 37 180 - Color 5 1 1 34 # 238_DNK 200 Hojby_REF_2/9 434.725 -2 High 37 180 - Color 5 2 2 19 # 009_LOK 201 Hojby_2/2381 434.725 -2 High 37 180 - Color 5 2 2 35 # TG2381<->DK_Nord 202 Hojby_2/2382 434.725 -2 High 37 180 - Color 5 2 2 36 # TG2382<->DK_Midt 203 Hojby_2/2383 434.725 -2 High 37 180 - Color 5 2 2 37 # TG2383<->DK_Syd 204 Hojby_2/2384 434.725 -2 High 37 180 - Color 5 2 2 38 # TG2384<->DK_Cph 205 Hojby_2/2385 434.725 -2 High 37 180 - Color 5 2 2 39 # TG2385<->DK_Sj 206 Hojby_QSY1_2386 434.725 -2 High 37 180 - Color 5 2 2 40 # TG2386<->DK_QSY1 207 Hojby_QSY2_2387 434.725 -2 High 37 180 - Color 5 2 2 41 # TG2387<->DK_QSY2 208 Hojby_WV_1/1 434.725 -2 High 37 180 - Color 5 1 1 17 # 001_WW 209 Hojby_EU_1/2 434.725 -2 High 37 180 - Color 5 1 1 18 # 002_EU 210 Hojby_1/240_S 434.725 -2 High 37 180 - Color 5 1 1 48 # 240_SWE 211 Hojby_1/262_D 434.725 -2 High 37 180 - Color 5 1 1 51 # 262_DEU 212 Nakskov_LK_1/238 434.675 -2 High 49 180 - Color 15 1 1 34 # 238_DNK 213 Naksko_LKS_1/238 434.675 -2 High 49 180 - Color 15 1 1 34 # 238_DNK 214 Nakskov_REF_2/9 434.675 -2 High 49 180 - Color 15 2 2 19 # 009_LOK 215 Nakskov_2/2381 434.675 -2 High 49 180 - Color 15 2 2 35 # TG2381<->DK_Nord 216 Nakskov_2/2382 434.675 -2 High 49 180 - Color 15 2 2 36 # TG2382<->DK_Midt 217 Nakskov_2/2383 434.675 -2 High 49 180 - Color 15 2 2 37 # TG2383<->DK_Syd 218 Nakskov_2/2384 434.675 -2 High 49 180 - Color 15 2 2 38 # TG2384<->DK_Cph 219 Nakskov_2/2385 434.675 -2 High 49 180 - Color 15 2 2 39 # TG2385<->DK_Sj 220 Naksko_QSY1_2386 434.675 -2 High 49 180 - Color 15 2 2 40 # TG2386<->DK_QSY1 221 Naksko_QSY2_2387 434.675 -2 High 49 180 - Color 15 2 2 41 # TG2387<->DK_QSY2 222 Nakskov_WW_1/1 434.675 -2 High 49 180 - Color 15 1 1 17 # 001_WW 223 Nakskov_EU_1/2 434.675 -2 High 49 180 - Color 15 1 1 18 # 002_EU 224 Nakskov_1/240_S 434.675 -2 High 49 180 - Color 15 1 1 48 # 240_SWE 225 Nakskov_1/262_D 434.675 -2 High 49 180 - Color 15 1 1 51 # 262_DEU 227 Naestve_LK_1/238 434.6875 -2 High 45 180 - Color 15 1 1 34 # 238_DNK 228 Naestv_LKS_1/238 434.6875 -2 High 45 180 - Color 15 1 1 34 # 238_DNK 229 Naestved_REF_2/9 434.6875 -2 High 45 180 - Color 15 2 2 19 # 009_LOK 230 Naestved_2/2381 434.6875 -2 High 45 180 - Color 15 2 2 35 # TG2381<->DK_Nord 231 Naestved_2/2382 434.6875 -2 High 45 180 - Color 15 2 2 36 # TG2382<->DK_Midt 232 Naestved_2/2383 434.6875 -2 High 45 180 - Color 15 2 2 37 # TG2383<->DK_Syd 233 Naestved_2/2384 434.6875 -2 High 45 180 - Color 15 2 2 38 # TG2384<->DK_Cph 234 Naestved_2/2385 434.6875 -2 High 45 180 - Color 15 2 2 39 # TG2385<->DK_Sj 235 Naestv_QSY1_2386 434.6875 -2 High 45 180 - Color 15 2 2 40 # TG2386<->DK_QSY1 236 Naestv_QSY2_2387 434.6875 -2 High 45 180 - Color 15 2 2 41 # TG2387<->DK_QSY2 237 Naestved_WW_1/1 434.6875 -2 High 45 180 - Color 15 1 1 17 # 001_WW 238 Naestved_EU_1/2 434.6875 -2 High 45 180 - Color 15 1 1 18 # 002_EU 239 Naestved_1/240_S 434.6875 -2 High 45 180 - Color 14 1 1 48 # 240_SWE 240 Naestved_1/262_D 434.6875 -2 High 45 180 - Color 14 1 1 51 # 262_DEU 241 Regstru_LK_1/238 434.650 -2 High 41 180 - Color 5 1 1 34 # 238_DNK 242 Regstr_LKS_1/238 434.650 -2 High 41 180 - Color 5 1 1 34 # 238_DNK 243 Regstrup_REF_2/9 434.650 -2 High 41 180 - Color 5 2 2 19 # 009_LOK 244 Regstrup_2/2381 434.650 -2 High 41 180 - Color 5 2 2 35 # TG2381<->DK_Nord 245 Regstrup_2/2382 434.650 -2 High 41 180 - Color 5 2 2 36 # TG2382<->DK_Midt 246 Regstrup_2/2383 434.650 -2 High 41 180 - Color 5 2 2 37 # TG2383<->DK_Syd 247 Regstrup_2/2384 434.650 -2 High 41 180 - Color 5 2 2 38 # TG2384<->DK_Cph 248 Regstrup_2/2385 434.650 -2 High 41 180 - Color 5 2 2 39 # TG2385<->DK_Sj 249 Regstr_QSY1/2386 434.650 -2 High 41 180 - Color 5 2 2 40 # TG2386<->DK_QSY1 250 Regstr_QSY2/2387 434.650 -2 High 41 180 - Color 5 2 2 41 # TG2387<->DK_QSY2 251 Regstrup_WW_1/1 434.650 -2 High 41 180 - Color 5 1 1 17 # 001_WW 252 Regstrup_EU_1/2 434.650 -2 High 41 180 - Color 5 1 1 18 # 002_EU 253 Regstrup_1/240_S 434.650 -2 High 41 180 - Color 5 1 1 48 # 240_SWE 254 Regstrup_1/262_D 434.650 -2 High 41 180 - Color 5 1 1 51 # 262_DEU 255 Risskov_LK_1/238 434.775 -2 High 22 180 - Color 2 1 1 34 # 238_DNK 256 Rissko_LKS_1/238 434.775 -2 High 22 180 - Color 2 1 1 34 # 238_DNK 257 Risskov_REF_2/9 434.775 -2 High 22 180 - Color 2 2 2 19 # 009_LOK 258 Risskov_2/2381 434.775 -2 High 22 180 - Color 2 2 2 35 # TG2381<->DK_Nord 259 Risskov_2/2382 434.775 -2 High 22 180 - Color 2 2 2 36 # TG2382<->DK_Midt 260 Risskov_2/2383 434.775 -2 High 22 180 - Color 2 2 2 37 # TG2383<->DK_Syd 261 Risskov_2/2384 434.775 -2 High 22 180 - Color 2 2 2 38 # TG2384<->DK_Cph 262 Risskov_2/2385 434.775 -2 High 22 180 - Color 2 2 2 39 # TG2385<->DK_Sj 263 Rissko_QSY1_2386 434.775 -2 High 22 180 - Color 2 2 2 40 # TG2386<->DK_QSY1 264 Rissko_QSY2_2387 434.775 -2 High 22 180 - Color 2 2 2 41 # TG2387<->DK_QSY2 265 Risskov_WW_1/1 434.775 -2 High 22 180 - Color 2 1 1 17 # 001_WW 266 Risskov_EU_1/2 434.775 -2 High 22 180 - Color 2 1 1 18 # 002_EU 267 Risskov_1/240_S 434.775 -2 High 22 180 - Color 2 1 1 48 # 240_SWE 268 Risskov_1/262_D 434.775 -2 High 22 180 - Color 3 1 1 51 # 262_DEU 269 Rodovre_LK_1/238 434.7125 -2 High 35 180 - Color 4 1 1 34 # 238_DNK 270 Rodovr_LKS_1/238 434.7125 -2 High 35 180 - Color 4 1 1 34 # 238_DNK 271 Rodovre_REF_2/9 434.7125 -2 High 35 180 - Color 4 2 2 19 # 009_LOK 272 Rodovre_2/2381 434.7125 -2 High 35 180 - Color 4 2 2 35 # TG2381<->DK_Nord 273 Rodovre_2/2382 434.7125 -2 High 35 180 - Color 4 2 2 36 # TG2382<->DK_Midt 274 Rodovre_2/2383 434.7125 -2 High 35 180 - Color 4 2 2 37 # TG2383<->DK_Syd 275 Rodovre_2/2384 434.7125 -2 High 35 180 - Color 4 2 2 38 # TG2384<->DK_Cph 276 Rodovre_2/2385 434.7125 -2 High 35 180 - Color 4 2 2 39 # TG2385<->DK_Sj 277 Rodovr_QSY1_2386 434.7125 -2 High 35 180 - Color 4 2 2 40 # TG2386<->DK_QSY1 278 Rodovr_QSY2_2387 434.7125 -2 High 35 180 - Color 4 2 2 41 # TG2387<->DK_QSY2 279 Rodovre_WW_1/1 434.7125 -2 High 35 180 - Color 4 1 1 17 # 001_WW 280 Rodovre_EU_1/2 434.7125 -2 High 35 180 - Color 4 1 1 18 # 002_EU 281 Rodovre_1/240_S 434.7125 -2 High 35 180 - Color 4 1 1 48 # 240_SWE 282 Rodovre_1/262_D 434.7125 -2 High 35 180 - Color 4 1 1 51 # 262_DEU 283 RaadeG_LK_1/238 434.800 -2 High 46 180 - Color 5 1 1 34 # 238_DNK 284 RaadeG_LKS_1/238 434.800 -2 High 46 180 - Color 5 1 1 34 # 238_DNK 285 RaadeG_REF_2/9 434.800 -2 High 46 180 - Color 5 2 2 19 # 009_LOK 286 RaadeG_2/2381 434.800 -2 High 46 180 - Color 5 2 2 35 # TG2381<->DK_Nord 287 RaadeG_2/2382 434.800 -2 High 46 180 - Color 5 2 2 36 # TG2382<->DK_Midt 288 RaadeG_2/2383 434.800 -2 High 46 180 - Color 5 2 2 37 # TG2383<->DK_Syd 289 RaadeG_2/2384 434.800 -2 High 46 180 - Color 5 2 2 38 # TG2384<->DK_Cph 290 RaadeG_2/2385 434.800 -2 High 46 180 - Color 5 2 2 39 # TG2385<->DK_Sj 291 RaadeG_QSY1_2386 434.800 -2 High 46 180 - Color 5 2 2 40 # TG2386<->DK_QSY1 292 RaadeG_QSY2_2387 434.800 -2 High 46 180 - Color 5 2 2 41 # TG2387<->DK_QSY2 293 RaadeG_WW_1/1 434.800 -2 High 46 180 - Color 5 1 1 17 # 001_WW 294 RaadeG_EU_1/2 434.800 -2 High 46 180 - Color 5 1 1 18 # 002_EU 295 RaadeG_1/240_S 434.800 -2 High 46 180 - Color 5 1 1 48 # 240_SWE 296 RaadeG_1/262_D 434.800 -2 High 46 180 - Color 5 1 1 51 # 262_DEU 297 Slagels_LK_1/238 434.750 -2 High 44 180 - Color 5 1 1 34 # 238_DNK 298 Slagel_LKS_1/238 434.750 -2 High 44 180 - Color 5 1 1 34 # 238_DNK 299 Slagels_REF_2/9 434.750 -2 High 44 180 - Color 5 2 2 19 # 009_LOK 300 Slagelse_2/2381 434.750 -2 High 44 180 - Color 5 2 2 35 # TG2381<->DK_Nord 301 Slagelse_2/2382 434.750 -2 High 44 180 - Color 5 2 2 36 # TG2382<->DK_Midt 302 Slagelse_2/2383 434.750 -2 High 44 180 - Color 5 2 2 37 # TG2383<->DK_Syd 303 Slagelse_2/2384 434.750 -2 High 44 180 - Color 5 2 2 38 # TG2384<->DK_Cph 304 Slagelse_2/2385 434.750 -2 High 44 180 - Color 5 2 2 39 # TG2385<->DK_Sj 305 Slagel_QSY1_2386 434.750 -2 High 44 180 - Color 5 2 2 40 # TG2386<->DK_QSY1 306 Slagel_QSY2_2387 434.750 -2 High 44 180 - Color 5 2 2 41 # TG2387<->DK_QSY2 307 Slagelse_WW_1/1 434.750 -2 High 44 180 - Color 5 1 1 17 # 001_WW 308 Slagelse_EU_1/2 434.750 -2 High 44 180 - Color 5 1 1 18 # 002_EU 309 Slagels_1/240_S 434.750 -2 High 44 180 - Color 5 1 1 48 # 240_SWE 310 Slagels_1/262_D 434.750 -2 High 44 180 - Color 5 1 1 51 # 262_DEU 311 Snertin_LK_1/238 434.650 -2 High 40 180 - Color 15 1 1 34 # 238_DNK 312 Snerti_LKS_1/238 434.650 -2 High 40 180 - Color 15 1 1 34 # 238_DNK 313 Snerting_REF_2/9 434.650 -1.985 High 40 180 - Color 15 2 2 19 # 009_LOK 314 Snertinge_2/2381 434.650 -1.985 High 40 180 - Color 15 2 2 35 # TG2381<->DK_Nord 315 Snertinge_2/2382 434.650 -1.985 High 40 180 - Color 15 2 2 36 # TG2382<->DK_Midt 316 Snertinge_2/2383 434.650 -1.985 High 40 180 - Color 15 2 2 37 # TG2383<->DK_Syd 317 Snertinge_2/2384 434.650 -1.985 High 40 180 - Color 15 2 2 38 # TG2384<->DK_Cph 318 Snertinge_2/2385 434.650 -1.985 High 40 180 - Color 15 2 2 39 # TG2385<->DK_Sj 319 Snerti_QSY1_2386 434.650 -1.985 High 40 180 - Color 15 2 2 40 # TG2386<->DK_QSY1 320 Snerti_QSY2_2387 434.650 -1.985 High 40 180 - Color 15 2 2 41 # TG2387<->DK_QSY2 321 Snertinge_WW_1/1 434.650 -2 High 40 180 - Color 15 1 1 17 # 001_WW 322 Snertinge_EU_1/2 434.650 -2 High 40 180 - Color 15 1 1 18 # 002_EU 323 Snerting_1/240_S 434.650 -2 High 40 180 - Color 15 1 1 48 # 240_SWE 324 Snerting_1/262_D 434.650 -2 High 40 180 - Color 15 1 1 51 # 262_DEU 325 Stovrin_LK_1/238 434.6875 -2 High 18 180 - Color 11 1 1 34 # 238_DNK 326 Stovri_LKS_1/238 434.6875 -2 High 18 180 - Color 11 1 1 34 # 238_DNK 327 Stovring_REF_2/9 434.6875 -2 High 18 180 - Color 11 2 2 19 # 009_LOK 328 Stovring_2/2381 434.6875 -2 High 18 180 - Color 11 2 2 35 # TG2381<->DK_Nord 329 Stovring_2/2382 434.6875 -2 High 18 180 - Color 11 2 2 36 # TG2382<->DK_Midt 330 Stovring_2/2383 434.6875 -2 High 18 180 - Color 11 2 2 37 # TG2383<->DK_Syd 331 Stovring_2/2384 434.6875 -2 High 18 180 - Color 11 2 2 38 # TG2384<->DK_Cph 332 Stovring_2/2385 434.6875 -2 High 18 180 - Color 11 2 2 39 # TG2385<->DK_Sj 333 Stovri_QSY1_2386 434.6875 -2 High 18 180 - Color 11 2 2 40 # TG2386<->DK_QSY1 334 Stovri_QSY2_2387 434.6875 -2 High 18 180 - Color 11 2 2 41 # TG2387<->DK_QSY2 335 Stovring_WW_1/1 434.6875 -2 High 18 180 - Color 11 1 1 17 # 001_WW 336 Stovring_EU_1/2 434.6875 -2 High 18 180 - Color 11 1 1 18 # 002_EU 337 Stovring_1/240_S 434.6875 -2 High 18 180 - Color 11 1 1 48 # 240_SWE 338 Stovring_1/262_D 434.6875 -2 High 18 180 - Color 11 1 1 51 # 262_DEU 339 Svbg_LK_1/238 434.775 -2 High 28 180 - Color 3 1 1 34 # 238_DNK 340 Svbg_LKS_1/238 434.775 -2 High 28 180 - Color 3 1 1 34 # 238_DNK 341 Svbg_REF_2/9 434.775 -2 High 28 180 - Color 3 2 2 19 # 009_LOK 342 Svbg_2/2381 434.775 -2 High 28 180 - Color 3 2 2 35 # TG2381<->DK_Nord 343 Svbg_2/2382 434.775 -2 High 28 180 - Color 3 2 2 36 # TG2382<->DK_Midt 344 Svbg_2/2383 434.775 -2 High 28 180 - Color 3 2 2 37 # TG2383<->DK_Syd 345 Svbg_2/2384 434.775 -2 High 28 180 - Color 3 2 2 38 # TG2384<->DK_Cph 346 Svbg_2/2385 434.775 -2 High 28 180 - Color 3 2 2 39 # TG2385<->DK_Sj 347 Svbg_QSY1_2386 434.775 -2 High 28 180 - Color 3 2 2 40 # TG2386<->DK_QSY1 348 Svbg_QSY2_2387 434.775 -2 High 28 180 - Color 3 2 2 41 # TG2387<->DK_QSY2 349 Svbg_WW_1/1 434.775 -2 High 28 180 - Color 3 1 1 17 # 001_WW 350 Svbg_EU_1/2 434.775 -2 High 28 180 - Color 3 1 1 18 # 002_EU 351 Svbg_1/240_S 434.775 -2 High 28 180 - Color 3 1 1 48 # 240_SWE 352 Svbg_1/262_D 434.775 -2 High 28 180 - Color 3 1 1 51 # 262_DEU 353 Thyholm_LK_1/238 434.700 -2 High 19 180 - Color 12 1 1 34 # 238_DNK 354 Thyhol_LKS_1/238 434.700 -2 High 19 180 - Color 12 1 1 34 # 238_DNK 355 Thyholm_REF_2/9 434.700 -2 High 19 180 - Color 12 2 2 19 # 009_LOK 356 Thyholm_2/2381 434.700 -2 High 19 180 - Color 12 2 2 35 # TG2381<->DK_Nord 357 Thyholm_2/2382 434.700 -2 High 19 180 - Color 12 2 2 36 # TG2382<->DK_Midt 358 Thyholm_2/2383 434.700 -2 High 19 180 - Color 12 2 2 37 # TG2383<->DK_Syd 359 Thyholm_2/2384 434.700 -2 High 19 180 - Color 12 2 2 38 # TG2384<->DK_Cph 360 Thyholm_2/2385 434.700 -2 High 19 180 - Color 12 2 2 39 # TG2385<->DK_Sj 361 Thyhol_QSY1_2386 434.700 -2 High 19 180 - Color 12 2 2 40 # TG2386<->DK_QSY1 362 Thyhol_QSY2_2387 434.700 -2 High 19 180 - Color 12 2 2 41 # TG2387<->DK_QSY2 363 Thyholm_WW_1/1 434.700 -2 High 19 180 - Color 12 1 1 17 # 001_WW 364 Thyholm_EU_1/2 434.700 -2 High 19 180 - Color 12 1 1 18 # 002_EU 365 Thyholm_1/240_S 434.700 -2 High 19 180 - Color 12 1 1 48 # 240_SWE 366 Thyholm_1/262_D 434.700 -2 High 19 180 - Color 12 1 1 51 # 262_DEU 368 Torphoj_LK_1/238 434.7875 -2 High 23 180 - Color 3 1 1 34 # 238_DNK 369 Torpho_LKS_1/238 434.7875 -2 High 23 180 - Color 3 1 1 34 # 238_DNK 370 Torphoj_REF_2/9 434.7875 -2 High 23 180 - Color 3 2 2 19 # 009_LOK 371 Torphoj_2/2381 434.7875 -2 High 23 180 - Color 3 2 2 35 # TG2381<->DK_Nord 372 Torphoj_2/2382 434.7875 -2 High 23 180 - Color 3 2 2 36 # TG2382<->DK_Midt 373 Torphoj_2/2383 434.7875 -2 High 23 180 - Color 3 2 2 37 # TG2383<->DK_Syd 374 Torphoj_2/2384 434.7875 -2 High 23 180 - Color 3 2 2 38 # TG2384<->DK_Cph 375 Torphoj_2/2385 434.7875 -2 High 23 180 - Color 3 2 2 39 # TG2385<->DK_Sj 376 Torpho_QSY1_2386 434.7875 -2 High 23 180 - Color 3 2 2 40 # TG2386<->DK_QSY1 377 Torpho_QSY2_2387 434.7875 -2 High 23 180 - Color 3 2 2 41 # TG2387<->DK_QSY2 378 Torphoj_WW_1/1 434.7875 -2 High 23 180 - Color 3 1 1 17 # 001_WW 379 Torphoj_EU_1/2 434.7875 -2 High 23 180 - Color 3 1 1 18 # 002_EU 380 Torphoj_1/240_S 434.7875 -2 High 23 180 - Color 3 1 1 48 # 240_SWE 381 Torphoj_1/262_D 434.7875 -2 High 23 180 - Color 3 1 1 51 # 262_DEU 382 Tonder_LK_1/238 434.700 -2 High 29 180 - Color 13 1 1 34 # 238_DNK 383 Tonder_LKS_1/238 434.700 -2 High 29 180 - Color 13 1 1 34 # 238_DNK 384 Tonder_REF_2/9 434.700 -2 High 29 180 - Color 13 2 2 19 # 009_LOK 385 Tonder_2/2381 434.700 -2 High 29 180 - Color 13 2 2 35 # TG2381<->DK_Nord 386 Tonder_2/2382 434.700 -2 High 29 180 - Color 13 2 2 36 # TG2382<->DK_Midt 387 Tonder_2/2383 434.700 -2 High 29 180 - Color 13 2 2 37 # TG2383<->DK_Syd 388 Tonder_2/2384 434.700 -2 High 29 180 - Color 13 2 2 38 # TG2384<->DK_Cph 389 Tonder_2/2385 434.700 -2 High 29 180 - Color 13 2 2 39 # TG2385<->DK_Sj 390 Tonder_QSY1_2386 434.700 -2 High 29 180 - Color 13 2 2 40 # TG2386<->DK_QSY1 391 Tonder_QSY1_2387 434.700 -2 High 29 180 - Color 13 2 2 41 # TG2387<->DK_QSY2 392 Tonder_WW_1/1 434.700 -2 High 29 180 - Color 13 1 1 17 # 001_WW 393 Tonder_EU_1/2 434.700 -2 High 29 180 - Color 13 1 1 18 # 002_EU 394 Tonder_1/240_S 434.700 -2 High 29 180 - Color 13 1 1 48 # 240_SWE 395 Tonder_1/262_D 434.700 -2 High 29 180 - Color 13 1 1 51 # 262_DEU 396 Vejby_LK_1/238 434.750 -2 High 30 180 - Color 4 1 1 34 # 238_DNK 397 Vejby_LKS_1/238 434.750 -2 High 30 180 - Color 4 1 1 34 # 238_DNK 398 Vejby_REF_2/9 434.750 -2 High 30 180 - Color 4 2 2 19 # 009_LOK 399 Vejby_2/2381 434.750 -2 High 30 180 - Color 4 2 2 35 # TG2381<->DK_Nord 400 Vejby_2/2382 434.750 -2 High 30 180 - Color 4 2 2 36 # TG2382<->DK_Midt 401 Vejby_2/2383 434.750 -2 High 30 180 - Color 4 2 2 37 # TG2383<->DK_Syd 402 Vejby_2/2384 434.750 -2 High 30 180 - Color 4 2 2 38 # TG2384<->DK_Cph 403 Vejby_2/2385 434.750 -2 High 30 180 - Color 4 2 2 39 # TG2385<->DK_Sj 404 Vejby_QSY1_2386 434.750 -2 High 30 180 - Color 4 2 2 40 # TG2386<->DK_QSY1 405 Vejby_QSY2_2387 434.750 -2 High 30 180 - Color 4 2 2 41 # TG2387<->DK_QSY2 406 Vejby_WW_1/1 434.750 -2 High 30 180 - Color 4 1 1 17 # 001_WW 407 Vejby_EU_1/2 434.750 -2 High 30 180 - Color 4 1 1 18 # 002_EU 408 Vejby_1/240_S 434.750 -2 High 30 180 - Color 4 1 1 48 # 240_SWE 409 Vejby_1/262_D 434.750 -2 High 30 180 - Color 4 1 1 51 # 262_DEU 410 Viborg_LK_1/238 434.6125 -2 High 20 180 - Color 12 1 1 34 # 238_DNK 411 Viborg_LKS_1/238 434.6125 -2 High 20 180 - Color 12 1 1 34 # 238_DNK 412 Viborg_REF_2/9 434.6125 -2 High 20 180 - Color 12 2 2 19 # 009_LOK 413 Viborg_2/2381 434.6125 -2 High 20 180 - Color 12 2 2 35 # TG2381<->DK_Nord 414 Viborg_2/2382 434.6125 -2 High 20 180 - Color 12 2 2 36 # TG2382<->DK_Midt 415 Viborg_2/2383 434.6125 -2 High 20 180 - Color 12 2 2 37 # TG2383<->DK_Syd 416 Viborg_2/2384 434.6125 -2 High 20 180 - Color 12 2 2 38 # TG2384<->DK_Cph 417 Viborg_2/2385 434.6125 -2 High 20 180 - Color 12 2 2 39 # TG2385<->DK_Sj 418 Viborg_QSY1_2386 434.6125 -2 High 20 180 - Color 12 2 2 40 # TG2386<->DK_QSY1 419 Viborg_QSY2_2387 434.6125 -2 High 20 180 - Color 12 2 2 41 # TG2387<->DK_QSY2 420 Viborg_WW_1/1 434.6125 -2 High 20 180 - Color 12 1 1 17 # 001_WW 421 Viborg_EU_1/2 434.6125 -2 High 20 180 - Color 12 1 1 18 # 002_EU 422 Viborg_1/240_S 434.6125 -2 High 20 180 - Color 12 1 1 48 # 240_SWE 423 Viborg_1/262_D 434.6125 -2 High 20 180 - Color 12 1 1 51 # 262_DEU 424 Vig_LK_1/238 434.6125 -2 High 38 180 - Color 15 1 1 34 # 238_DNK 425 Vig_LKS_1/238 434.6125 -2 High 38 180 - Color 15 1 1 34 # 238_DNK 426 Vig_REF_2/9 434.6125 -2 High 38 180 - Color 15 2 2 19 # 009_LOK 427 Vig_2/2381 434.6125 -2 High 38 180 - Color 15 2 2 35 # TG2381<->DK_Nord 428 Vig_2/2382 434.6125 -2 High 38 180 - Color 15 2 2 36 # TG2382<->DK_Midt 429 Vig_2/2383 434.6125 -2 High 38 180 - Color 15 2 2 37 # TG2383<->DK_Syd 430 Vig_2/2384 434.6125 -2 High 38 180 - Color 15 2 2 38 # TG2384<->DK_Cph 431 Vig_2/2385 434.6125 -2 High 38 180 - Color 15 2 2 39 # TG2385<->DK_Sj 432 Vig_QSY1_2386 434.6125 -2 High 38 180 - Color 15 2 2 40 # TG2386<->DK_QSY1 433 Vig_QSY2_2387 434.6125 -2 High 38 180 - Color 15 2 2 41 # TG2387<->DK_QSY2 434 Vig_WW_1/1 434.6125 -2 High 38 180 - Color 15 1 1 17 # 001_WW 435 Vig_EU_1/2 434.6125 -2 High 38 180 - Color 15 1 1 18 # 002_EU 436 Vig_1/240_S 434.6125 -2 High 38 180 - Color 15 1 1 48 # 240_SWE 437 Vig_1/262_D 434.6125 -2 High 38 180 - Color 15 1 1 51 # 262_DEU 438 VissenB_LK_1/238 434.6125 -2 High 27 180 - Color 13 1 1 34 # 238_DNK 439 Vissen_LKS_1/238 434.6125 -2 High 27 180 - Color 13 1 1 34 # 238_DNK 440 VissenB_REF_2/9 434.6125 -2 High 27 180 - Color 13 2 2 19 # 009_LOK 441 VissenB_2/2381 434.6125 -2 High 27 180 - Color 13 2 2 35 # TG2381<->DK_Nord 442 VissenB_2/2382 434.6125 -2 High 27 180 - Color 13 2 2 36 # TG2382<->DK_Midt 443 VissenB_2/2383 434.6125 -2 High 27 180 - Color 13 2 2 37 # TG2383<->DK_Syd 444 VissenB_2/2384 434.6125 -2 High 27 180 - Color 13 2 2 38 # TG2384<->DK_Cph 445 VissenB_2/2385 434.6125 -2 High 27 180 - Color 13 2 2 39 # TG2385<->DK_Sj 446 Vissen_QSY1_2386 434.6125 -2 High 27 180 - Color 13 2 2 40 # TG2386<->DK_QSY1 447 Vissen_QSY2_2387 434.6125 -2 High 27 180 - Color 13 2 2 41 # TG2387<->DK_QSY2 448 VissenB_WW_1/1 434.6125 -2 High 27 180 - Color 13 1 1 17 # 001_WW 449 VissenB_EU_1/2 434.6125 -2 High 27 180 - Color 13 1 1 18 # 002_EU 450 VissenB_1/240_S 434.6125 -2 High 27 180 - Color 13 1 1 48 # 240_SWE 451 VissenB_1/262_D 434.6125 -2 High 27 180 - Color 13 1 1 51 # 262_DEU 452 Vodskov_LK_1/238 434.675 -2 High 17 180 - Color 11 1 1 34 # 238_DNK 453 Vodsko_LKS_1/238 434.675 -2 High 17 180 - Color 11 1 1 34 # 238_DNK 454 Vodskov_REF_2/9 434.675 -2 High 17 180 - Color 11 2 2 19 # 009_LOK 455 Vodskov_2/2281 434.675 -2 High 17 180 - Color 11 2 2 35 # TG2381<->DK_Nord 456 Vodskov_2/2282 434.675 -2 High 17 180 - Color 11 2 2 36 # TG2382<->DK_Midt 457 Vodskov_2/2283 434.675 -2 High 17 180 - Color 11 2 2 37 # TG2383<->DK_Syd 458 Vodskov_2/2284 434.675 -2 High 17 180 - Color 11 2 2 38 # TG2384<->DK_Cph 459 Vodskov_2/2285 434.675 -2 High 17 180 - Color 11 2 2 39 # TG2385<->DK_Sj 460 Vodsko_QSY1_2286 434.675 -2 High 17 180 - Color 11 2 2 40 # TG2386<->DK_QSY1 461 Vodsko_QSY2_2287 434.675 -2 High 17 180 - Color 11 2 2 41 # TG2387<->DK_QSY2 462 Vodskov_WW_1/1 434.675 -2 High 17 180 - Color 11 1 1 17 # 001_WW 463 Vodskov_EU_1/2 434.675 -2 High 17 180 - Color 11 1 1 18 # 002_EU 464 Vodskov_1/240_S 434.675 -2 High 17 180 - Color 11 1 1 48 # 240_SWE 465 Vodskov_1/262_D 434.675 -2 High 17 180 - Color 11 1 1 51 # 262_DEU 466 Vording_LK_1/238 434.700 -2 High 47 180 - Color 15 1 1 34 # 238_DNK 467 Vordin_LKS_1/238 434.700 -2 High 47 180 - Color 15 1 1 34 # 238_DNK 468 VordingB_REF_2/9 434.700 -2 High 47 180 - Color 15 2 2 19 # 009_LOK 469 Vordingbo_2/2381 434.700 -2 High 47 180 - Color 15 2 2 35 # TG2381<->DK_Nord 470 Vordingbo_2/2382 434.700 -2 High 47 180 - Color 15 2 2 36 # TG2382<->DK_Midt 471 Vordingbo_2/2383 434.700 -2 High 47 180 - Color 15 2 2 37 # TG2383<->DK_Syd 472 Vordingbo_2/2384 434.700 -2 High 47 180 - Color 15 2 2 38 # TG2384<->DK_Cph 473 Vordingbo_2/2385 434.700 -2 High 47 180 - Color 15 2 2 39 # TG2385<->DK_Sj 474 Vordin_QSY1_2386 434.700 -2 High 47 180 - Color 15 2 2 40 # TG2386<->DK_QSY1 475 Vordin_QSY2_2387 434.700 -2 High 47 180 - Color 15 2 2 41 # TG2387<->DK_QSY2 476 VordingB_WW_1/1 434.700 -2 High 47 180 - Color 15 1 1 17 # 001_WW 477 VordingB_EU_1/2 434.700 -2 High 47 180 - Color 15 1 1 18 # 002_EU 478 VordingB_1/240_S 434.700 -2 High 47 180 - Color 15 1 1 48 # 240_SWE 479 VordingB_1/262_D 434.700 -2 High 47 180 - Color 15 1 1 51 # 262_DEU 480 Aarhus_LK_1/238 434.6375 -2 High 3 180 - Color 12 1 3 34 # 238_DNK 481 Aarhus_LKS_1/238 434.6375 -2 High 3 180 - Color 12 1 3 34 # 238_DNK 482 Aarhus_REF_2/9 434.6375 -2 High 3 180 - Color 12 2 4 19 # 009_LOK 483 Aarhus_2/2381 434.6375 -2 High 3 180 - Color 12 2 4 35 # TG2381<->DK_Nord 484 Aarhus_2/2382 434.6375 -2 High 3 180 - Color 12 2 4 36 # TG2382<->DK_Midt 485 Aarhus_2/2383 434.6375 -2 High 3 180 - Color 12 2 4 37 # TG2383<->DK_Syd 486 Aarhus_2/2384 434.6375 -2 High 3 180 - Color 12 2 4 38 # TG2384<->DK_Cph 487 Aarhus_2/2385 434.6375 -2 High 3 180 - Color 12 2 4 39 # TG2385<->DK_Sj 488 Aarhus_2/2386 434.6375 -2 High 3 180 - Color 12 2 4 40 # TG2386<->DK_QSY1 489 Aarhus_2/2387 434.6375 -2 High 3 180 - Color 12 2 4 41 # TG2387<->DK_QSY2 490 Aarhus_2/2388 434.6375 -2 High 3 180 - Color 12 2 4 42 # TG2388<->DCS699B 491 Aarhus_2/2389 434.6375 -2 High 3 180 - Color 12 2 4 43 # TG2389<->XLX238 492 Aarhus_2/23810 434.6375 -2 High 3 180 - Color 12 2 4 44 # TG23810<->YSF 493 Aarhus_2/23811 434.6375 -2 High 3 180 - Color 12 2 4 45 # TG23811<->X-SWE 494 Aarhus_2/23812 434.6375 -2 High 3 180 - Color 12 2 4 46 # TG23812<->X-DK 495 Aarhus_2/23813 434.6375 -2 High 3 180 - Color 12 2 4 47 # TG23813<->DCS04Y 496 Aarhus_WW_1/1 434.6375 -2 High 3 180 - Color 12 1 3 21 # 091_BM_WW_ENG 497 Aarhus_EU_1/2 434.6375 -2 High 3 180 - Color 12 1 3 22 # 092_BM_EU 498 Aarhus_1/240_S 434.6375 -2 High 3 180 - Color 12 1 3 48 # 240_SWE 499 Aarhus_1/262_D 434.6375 -2 High 3 180 - Color 12 1 3 51 # 262_DEU 500 Aarhu_V_LK_1/238 434.725 -2 High 4 180 - Color 12 1 3 34 # 238_DNK 501 Aarh_V_LKS_1/238 434.725 -2 High 4 180 - Color 12 1 3 34 # 238_DNK 502 Aarhus_V_REF_2/9 434.725 -2 High 4 180 - Color 12 2 4 19 # 009_LOK 503 Aarhus_V_2/2381 434.725 -2 High 4 180 - Color 12 2 4 35 # TG2381<->DK_Nord 504 Aarhus_V_2/2382 434.725 -2 High 4 180 - Color 12 2 4 36 # TG2382<->DK_Midt 505 Aarhus_V_2/2383 434.725 -2 High 4 180 - Color 12 2 4 37 # TG2383<->DK_Syd 506 Aarhus_V_2/2384 434.725 -2 High 4 180 - Color 12 2 4 38 # TG2384<->DK_Cph 507 Aarhus_V_2/2385 434.725 -2 High 4 180 - Color 12 2 4 39 # TG2385<->DK_Sj 508 Aarhus_V_2/2386 434.725 -2 High 4 180 - Color 12 2 4 40 # TG2386<->DK_QSY1 509 Aarhus_V_2/2387 434.725 -2 High 4 180 - Color 12 2 4 41 # TG2387<->DK_QSY2 510 Aarhus_V_2/2388 434.725 -2 High 4 180 - Color 12 2 4 42 # TG2388<->DCS699B 511 Aarhus_V_2/2389 434.725 -2 High 4 180 - Color 12 2 4 43 # TG2389<->XLX238 512 Aarhus_V_2/23810 434.725 -2 High 4 180 - Color 12 2 4 44 # TG23810<->YSF 513 Aarhus_V_2/23811 434.725 -2 High 4 180 - Color 12 2 4 45 # TG23811<->X-SWE 514 Aarhus_V_2/23812 434.725 -2 High 4 180 - Color 12 2 4 46 # TG23812<->X-DK 515 Aarhus_V_2/23813 434.725 -2 High 4 180 - Color 12 2 4 47 # TG23813<->DCS04Y 516 Aarhus_V_WW_1/91 434.725 -2 High 4 180 - Color 12 1 3 21 # 091_BM_WW_ENG 517 Aarhus_V_EU_1/92 434.725 -2 High 4 180 - Color 12 1 3 22 # 092_BM_EU 518 Aarhus_V_1/240_S 434.725 -2 High 4 180 - Color 12 1 3 48 # 240_SWE 519 Aarhus_V_1/262_D 434.725 -2 High 4 180 - Color 12 1 3 51 # 262_DEU 520 Chrfeld_LK_1/238 434.6625 -2 High 8 180 - Color 13 1 4 34 # 238_DNK 521 Chrfel_LKS_1/238 434.6625 -2 High 8 180 - Color 13 1 4 34 # 238_DNK 522 Chrfeld_REF_2/9 434.6625 -2 High 8 180 - Color 13 2 4 19 # 009_LOK 523 Chrfeld_2/2381 434.6625 -2 High 8 180 - Color 13 2 4 35 # TG2381<->DK_Nord 524 Chrfeld_2/2382 434.6625 -2 High 8 180 - Color 13 2 4 36 # TG2382<->DK_Midt 525 Chrfeld_2/2383 434.6625 -2 High 8 180 - Color 13 2 4 37 # TG2383<->DK_Syd 526 Chrfeld_2/2384 434.6625 -2 High 8 180 - Color 13 2 4 38 # TG2384<->DK_Cph 527 Chrfeld_2/2385 434.6625 -2 High 8 180 - Color 13 2 4 39 # TG2385<->DK_Sj 528 Chrfeld_2/2386 434.6625 -2 High 8 180 - Color 13 2 4 40 # TG2386<->DK_QSY1 529 Chrfeld_2/2387 434.6625 -2 High 8 180 - Color 13 2 4 41 # TG2387<->DK_QSY2 530 Chrfeld_2/2388 434.6625 -2 High 8 180 - Color 13 2 4 42 # TG2388<->DCS699B 531 Chrfeld_2/2389 434.6625 -2 High 8 180 - Color 13 2 4 43 # TG2389<->XLX238 532 Chrfeld_2/23810 434.6625 -2 High 8 180 - Color 13 2 4 44 # TG23810<->YSF 533 Chrfeld_2/23811 434.6625 -2 High 8 180 - Color 13 2 4 45 # TG23811<->X-SWE 534 Chrfeld_2/23812 434.6625 -2 High 8 180 - Color 13 2 4 46 # TG23812<->X-DK 535 Chrfeld_2/23813 434.6625 -2 High 8 180 - Color 13 2 4 47 # TG23813<->DCS04Y 536 Chrfeld_WW_1/91 434.6625 -2 High 8 180 - Color 13 1 4 21 # 091_BM_WW_ENG 537 Chrfeld_EU_1/92 434.6625 -2 High 8 180 - Color 13 1 4 22 # 092_BM_EU 538 Chrfeld_1/240_S 434.6625 -2 High 8 180 - Color 13 1 4 48 # 240_SWE 539 Chrfeld_1/262_D 434.6625 -2 High 8 180 - Color 13 1 4 51 # 262_DEU 540 DrMolle_LK_1/238 434.5625 -2 High 9 180 - Color 14 1 3 34 # 238_DNK 541 DrMoll_LKS_1/238 434.5625 -2 High 9 180 - Color 14 1 3 34 # 238_DNK 542 DrMolle_REF_2/9 434.5625 -2 High 9 180 - Color 14 2 4 19 # 009_LOK 543 DrMolle_2/2381 434.5625 -2 High 9 180 - Color 14 2 4 35 # TG2381<->DK_Nord 544 DrMolle_2/2382 434.5625 -2 High 9 180 - Color 14 2 4 36 # TG2382<->DK_Midt 545 DrMolle_2/2383 434.5625 -2 High 9 180 - Color 14 2 4 37 # TG2383<->DK_Syd 546 DrMolle_2/2384 434.5625 -2 High 9 180 - Color 14 2 4 38 # TG2384<->DK_Cph 547 DrMolle_2/2385 434.5625 -2 High 9 180 - Color 14 2 4 39 # TG2385<->DK_Sj 548 DrMolle_2/2386 434.5625 -2 High 9 180 - Color 14 2 4 40 # TG2386<->DK_QSY1 549 DrMolle_2/2387 434.5625 -2 High 9 180 - Color 14 2 4 41 # TG2387<->DK_QSY2 550 DrMolle_2/2388 434.5625 -2 High 9 180 - Color 14 2 4 42 # TG2388<->DCS699B 551 DrMolle_2/2389 434.5625 -2 High 9 180 - Color 14 2 4 43 # TG2389<->XLX238 552 DrMolle_2/23810 434.5625 -2 High 9 180 - Color 14 2 4 44 # TG23810<->YSF 553 DrMolle_2/23811 434.5625 -2 High 9 180 - Color 14 2 4 45 # TG23811<->X-SWE 554 DrMolle_2/23812 434.5625 -2 High 9 180 - Color 14 2 4 46 # TG23812<->X-DK 555 DrMolle_2/23813 434.5625 -2 High 9 180 - Color 14 2 4 47 # TG23813<->DCS04Y 556 DrMolle_WW_1/91 434.5625 -2 High 9 180 - Color 14 1 3 21 # 091_BM_WW_ENG 557 DrMolle_EU_1/92 434.5625 -2 High 9 180 - Color 14 1 3 22 # 092_BM_EU 558 DrMolle_1/240_S 434.5625 -2 High 9 180 - Color 14 1 3 48 # 240_SWE 559 DrMolle_1/262_D 434.5625 -2 High 9 180 - Color 14 1 3 51 # 262_DEU 560 Gorlose_LK_1/238 434.700 -2 High 12 180 - Color 14 1 3 34 # 238_DNK 561 Gorlos_LKS_1/238 434.700 -2 High 12 180 - Color 14 1 3 34 # 238_DNK 562 Gorlose_REF_2/9 434.700 -2 High 12 180 - Color 14 2 4 19 # 009_LOK 563 Gorlose_2/2381 434.700 -2 High 12 180 - Color 14 2 4 35 # TG2381<->DK_Nord 564 Gorlose_2/2382 434.700 -2 High 12 180 - Color 14 2 4 36 # TG2382<->DK_Midt 565 Gorlose_2/2383 434.700 -2 High 12 180 - Color 14 2 4 37 # TG2383<->DK_Syd 566 Gorlose_2/2384 434.700 -2 High 12 180 - Color 14 2 4 38 # TG2384<->DK_Cph 567 Gorlose_2/2385 434.700 -2 High 12 180 - Color 14 2 4 39 # TG2385<->DK_Sj 568 Gorlose_2/2386 434.700 -2 High 12 180 - Color 14 2 4 40 # TG2386<->DK_QSY1 569 Gorlose_2/2387 434.700 -2 High 12 180 - Color 14 2 4 41 # TG2387<->DK_QSY2 570 Gorlose_2/2388 434.700 -2 High 12 180 - Color 14 2 4 42 # TG2388<->DCS699B 571 Gorlose_2/2389 434.700 -2 High 12 180 - Color 14 2 4 43 # TG2389<->XLX238 572 Gorlose_2/23810 434.700 -2 High 12 180 - Color 14 2 4 44 # TG23810<->YSF 573 Gorlose_2/23811 434.700 -2 High 12 180 - Color 14 2 4 45 # TG23811<->X-SWE 574 Gorlose_2/23812 434.700 -2 High 12 180 - Color 14 2 4 46 # TG23812<->X-DK 575 Gorlose_2/23813 434.700 -2 High 12 180 - Color 14 2 4 47 # TG23813<->DCS04Y 576 Gorlose_WW_1/91 434.700 -2 High 12 180 - Color 14 1 3 21 # 091_BM_WW_ENG 577 Gorlose_EU_1/92 434.700 -2 High 12 180 - Color 14 1 3 22 # 092_BM_EU 578 Gorlose_1/240_S 434.700 -2 High 12 180 - Color 14 1 3 48 # 240_SWE 579 Gorlose_1/262_D 434.700 -2 High 12 180 - Color 14 1 3 51 # 262_DEU 580 Helsing_LK_1/238 434.6375 -2 High 10 180 - Color 14 1 3 34 # 238_DNK 581 Helsi_LKS_1/238 434.6375 -2 High 10 180 - Color 14 1 3 34 # 238_DNK 582 Helsingo_REF_2/9 434.6375 -2 High 10 180 - Color 14 2 4 19 # 009_LOK 583 Helsingoe_2/2381 434.6375 -2 High 10 180 - Color 14 2 4 35 # TG2381<->DK_Nord 584 Helsingoe_2/2382 434.6375 -2 High 10 180 - Color 14 2 4 36 # TG2382<->DK_Midt 585 Helsingoe_2/2383 434.6375 -2 High 10 180 - Color 14 2 4 37 # TG2383<->DK_Syd 586 Helsingoe_2/2384 434.6375 -2 High 10 180 - Color 14 2 4 38 # TG2384<->DK_Cph 587 Helsingoe_2/2385 434.6375 -2 High 10 180 - Color 14 2 4 39 # TG2385<->DK_Sj 588 Helsingoe_2/2386 434.6375 -2 High 10 180 - Color 14 2 4 40 # TG2386<->DK_QSY1 589 Helsingoe_2/2387 434.6375 -2 High 10 180 - Color 14 2 4 41 # TG2387<->DK_QSY2 590 Helsingoe_2/2388 434.6375 -2 High 10 180 - Color 14 2 4 42 # TG2388<->DCS699B 591 Helsingoe_2/2389 434.6375 -2 High 10 180 - Color 14 2 4 43 # TG2389<->XLX238 592 Helsingo_2/23810 434.6375 -2 High 10 180 - Color 14 2 4 44 # TG23810<->YSF 593 Helsingo_2/23811 434.6375 -2 High 10 180 - Color 14 2 4 45 # TG23811<->X-SWE 594 Helsingo_2/23812 434.6375 -2 High 10 180 - Color 14 2 4 46 # TG23812<->X-DK 595 Helsingo_2/23813 434.6375 -2 High 10 180 - Color 14 2 4 47 # TG23813<->DCS04Y 596 Helsing__WW_1/91 434.6375 -2 High 10 180 - Color 14 1 3 21 # 091_BM_WW_ENG 597 Helsing__EU_1/92 434.6375 -2 High 10 180 - Color 14 1 3 22 # 092_BM_EU 598 Helsingo_1/240_S 434.6375 -2 High 10 180 - Color 14 1 3 48 # 240_SWE 599 Helsingo_1/262_D 434.6375 -2 High 10 180 - Color 14 1 3 51 # 262_DEU 601 Herlev_LK_1/238 434.625 -2 High 13 180 - Color 14 1 3 34 # 238_DNK 602 Herlev_LKS_1/238 434.625 -2 High 13 180 - Color 14 1 3 34 # 238_DNK 603 Herlev_REF_2/9 434.625 -2 High 13 180 - Color 14 2 4 19 # 009_LOK 604 Herlev_2/2381 434.625 -2 High 13 180 - Color 14 2 4 35 # TG2381<->DK_Nord 605 Herlev_2/2382 434.625 -2 High 13 180 - Color 14 2 4 36 # TG2382<->DK_Midt 606 Herlev_2/2383 434.625 -2 High 13 180 - Color 14 2 4 37 # TG2383<->DK_Syd 607 Herlev_2/2384 434.625 -2 High 13 180 - Color 14 2 4 38 # TG2384<->DK_Cph 608 Herlev_2/2385 434.625 -2 High 13 180 - Color 14 2 4 39 # TG2385<->DK_Sj 609 Herlev_2/2386 434.625 -2 High 13 180 - Color 14 2 4 40 # TG2386<->DK_QSY1 610 Herlev_2/2387 434.625 -2 High 13 180 - Color 14 2 4 41 # TG2387<->DK_QSY2 611 Herlev_2/2388 434.625 -2 High 13 180 - Color 14 2 4 42 # TG2388<->DCS699B 612 Herlev_2/2389 434.625 -2 High 13 180 - Color 14 2 4 43 # TG2389<->XLX238 613 Herlev_2/23810 434.625 -2 High 13 180 - Color 14 2 4 44 # TG23810<->YSF 614 Herlev_2/23811 434.625 -2 High 13 180 - Color 14 2 4 45 # TG23811<->X-SWE 615 Herlev_2/23812 434.625 -2 High 13 180 - Color 14 2 4 46 # TG23812<->X-DK 616 Herlev_2/23813 434.625 -2 High 13 180 - Color 14 2 4 47 # TG23813<->DCS04Y 617 Herlev_WW_1/91 434.625 -2 High 13 180 - Color 14 1 3 21 # 091_BM_WW_ENG 618 Herlev_EU_1/92 434.625 -2 High 13 180 - Color 14 1 3 22 # 092_BM_EU 619 Herlev_1/240_S 434.625 -2 High 13 180 - Color 14 1 3 48 # 240_SWE 620 Herlev_1/262_D 434.625 -2 High 13 180 - Color 14 1 3 51 # 262_DEU 621 Humlebæ_LK_1/238 434.6875 -2 High 11 180 - Color 9 1 3 34 # 238_DNK 622 Humleb_LKS_1/238 434.6875 -2 High 11 180 - Color 9 1 3 34 # 238_DNK 623 Humlebæk_REF_2/9 434.6875 -2 High 11 180 - Color 9 2 4 19 # 009_LOK 624 Humlebæk_2/2381 434.6875 -2 High 11 180 - Color 9 2 4 35 # TG2381<->DK_Nord 625 Humlebæk_2/2382 434.6875 -2 High 11 180 - Color 9 2 4 36 # TG2382<->DK_Midt 626 Humlebæk_2/2383 434.6875 -2 High 11 180 - Color 9 2 4 37 # TG2383<->DK_Syd 627 Humlebæk_2/2384 434.6875 -2 High 11 180 - Color 9 2 4 38 # TG2384<->DK_Cph 628 Humlebæk_2/2385 434.6875 -2 High 11 180 - Color 9 2 4 39 # TG2385<->DK_Sj 629 Humlebæk_2/2386 434.6875 -2 High 11 180 - Color 9 2 4 40 # TG2386<->DK_QSY1 630 Humlebæk_2/2387 434.6875 -2 High 11 180 - Color 9 2 4 41 # TG2387<->DK_QSY2 631 Humlebæk_2/2388 434.6875 -2 High 11 180 - Color 9 2 4 42 # TG2388<->DCS699B 632 Humlebæk_2/2389 434.6875 -2 High 11 180 - Color 9 2 4 43 # TG2389<->XLX238 633 Humlebæk_2/23810 434.6875 -2 High 11 180 - Color 9 2 4 44 # TG23810<->YSF 634 Humlebæk_2/23811 434.6875 -2 High 11 180 - Color 9 2 4 45 # TG23811<->X-SWE 635 Humlebæk_2/23812 434.6875 -2 High 11 180 - Color 9 2 4 46 # TG23812<->X-DK 636 Humlebæk_2/23813 434.6875 -2 High 11 180 - Color 9 2 4 47 # TG23813<->DCS04Y 637 Humlebæk_WW_1/91 434.6875 -2 High 11 180 - Color 9 1 3 21 # 091_BM_WW_ENG 638 Humlebæk_EU_1/92 434.6875 -2 High 11 180 - Color 9 1 3 22 # 092_BM_EU 639 Humlebæk_1/240_S 434.6875 -2 High 11 180 - Color 9 1 3 48 # 240_SWE 640 Humlebæk_1/262_D 434.6875 -2 High 11 180 - Color 9 1 3 51 # 262_DEU 641 BM_FRH_LK_1/238 434.7125 -2 High 2 180 - Color 11 1 3 34 # 238_DNK 642 BM_FRH_LKS_1/238 434.7125 -2 High 2 180 - Color 11 1 3 34 # 238_DNK 643 BM_FRH_REF_2/9 434.7125 -2 High 2 180 - Color 11 2 4 19 # 009_LOK 644 BM_FRH_1/2381 434.7125 -2 High 2 180 - Color 11 2 4 35 # TG2381<->DK_Nord 645 BM_FRH_1/2382 434.7125 -2 High 2 180 - Color 11 2 4 36 # TG2382<->DK_Midt 646 BM_FRH_1/2383 434.7125 -2 High 2 180 - Color 11 2 4 37 # TG2383<->DK_Syd 647 BM_FRH_1/2384 434.7125 -2 High 2 180 - Color 11 2 4 38 # TG2384<->DK_Cph 648 BM_FRH_1/2385 434.7125 -2 High 2 180 - Color 11 2 4 39 # TG2385<->DK_Sj 649 BM_FRH_1/2386 434.7125 -2 High 2 180 - Color 11 2 4 40 # TG2386<->DK_QSY1 650 BM_FRH_1/2387 434.7125 -2 High 2 180 - Color 11 2 4 41 # TG2387<->DK_QSY2 651 BM_FRH_1/2388 434.7125 -2 High 2 180 - Color 11 2 4 42 # TG2388<->DCS699B 652 BM_FRH_1/2389 434.7125 -2 High 2 180 - Color 11 2 4 43 # TG2389<->XLX238 653 BM_FRH_1/23810 434.7125 -2 High 2 180 - Color 11 2 4 44 # TG23810<->YSF 654 BM_FRH_1/23811 434.7125 -2 High 2 180 - Color 11 2 4 45 # TG23811<->X-SWE 655 BM_FRH_1/23812 434.7125 -2 High 2 180 - Color 11 2 4 46 # TG23812<->X-DK 656 BM_FRH_1/23813 434.7125 -2 High 2 180 - Color 11 2 4 47 # TG23813<->DCS04Y 657 BM_FRH_WW_1/91 434.7125 -2 High 2 180 - Color 11 1 3 21 # 091_BM_WW_ENG 658 BM_FRH_EU_1/92 434.7125 -2 High 2 180 - Color 11 1 3 22 # 092_BM_EU 659 BM_FRH_1/240_S 434.7125 -2 High 2 180 - Color 11 1 3 48 # 240_SWE 660 BM_FRH_1/262_D 434.7125 -2 High 2 180 - Color 11 1 3 51 # 262_DEU 661 Mogenst_LK_1/238 434.600 -2 High 15 180 - Color 15 1 3 34 # 238_DNK 662 Mogens_LKS_1/238 434.600 -2 High 15 180 - Color 15 1 3 34 # 238_DNK 663 Mogenstr_REF_2/9 434.600 -2 High 15 180 - Color 15 2 4 19 # 009_LOK 664 Mogenstru_2/2381 434.600 -2 High 15 180 - Color 15 2 4 35 # TG2381<->DK_Nord 665 Mogenstru_2/2382 434.600 -2 High 15 180 - Color 15 2 4 36 # TG2382<->DK_Midt 666 Mogenstru_2/2383 434.600 -2 High 15 180 - Color 15 2 4 37 # TG2383<->DK_Syd 667 Mogenstru_2/2384 434.600 -2 High 15 180 - Color 15 2 4 38 # TG2384<->DK_Cph 668 Mogenstru_2/2385 434.600 -2 High 15 180 - Color 15 2 4 39 # TG2385<->DK_Sj 669 Mogenstru_2/2386 434.600 -2 High 15 180 - Color 15 2 4 40 # TG2386<->DK_QSY1 670 Mogenstru_2/2387 434.600 -2 High 15 180 - Color 15 2 4 41 # TG2387<->DK_QSY2 671 Mogenstru_2/2388 434.600 -2 High 15 180 - Color 15 2 4 42 # TG2388<->DCS699B 672 Mogenstru_2/2389 434.600 -2 High 15 180 - Color 15 2 4 43 # TG2389<->XLX238 673 Mogenstr_2/23810 434.600 -2 High 15 180 - Color 15 2 4 44 # TG23810<->YSF 674 Mogenstr_2/23811 434.600 -2 High 15 180 - Color 15 2 4 45 # TG23811<->X-SWE 675 Mogenstr_2/23812 434.600 -2 High 15 180 - Color 15 2 4 46 # TG23812<->X-DK 676 Mogenstr_2/23813 434.600 -2 High 15 180 - Color 15 2 4 47 # TG23813<->DCS04Y 677 Mogenstr_WW_1/91 434.600 -2 High 15 180 - Color 15 1 3 21 # 091_BM_WW_ENG 678 Mogenstr_EU_1/92 434.600 -2 High 15 180 - Color 15 1 3 22 # 092_BM_EU 679 Mogenstr_1/240_S 434.600 -2 High 15 180 - Color 15 1 3 48 # 240_SWE 680 Mogenstr_1/262_D 434.600 -2 High 15 180 - Color 15 1 3 51 # 262_DEU 681 Odense_LK_1/238 434.5375 -2 High 7 180 - Color 13 1 3 34 # 238_DNK 682 Odense_LKS_1/238 434.5375 -2 High 7 180 - Color 13 1 3 34 # 238_DNK 683 Odense_REF_2/9 434.5375 -2 High 7 180 - Color 13 2 4 19 # 009_LOK 684 Odense_2/2381 434.5375 -2 High 7 180 - Color 13 2 4 35 # TG2381<->DK_Nord 685 Odense_2/2382 434.5375 -2 High 7 180 - Color 13 2 4 36 # TG2382<->DK_Midt 686 Odense_2/2383 434.5375 -2 High 7 180 - Color 13 2 4 37 # TG2383<->DK_Syd 687 Odense_2/2384 434.5375 -2 High 7 180 - Color 13 2 4 38 # TG2384<->DK_Cph 688 Odense_2/2385 434.5375 -2 High 7 180 - Color 13 2 4 39 # TG2385<->DK_Sj 689 Odense_2/2386 434.5375 -2 High 7 180 - Color 13 2 4 40 # TG2386<->DK_QSY1 690 Odense_2/2387 434.5375 -2 High 7 180 - Color 13 2 4 41 # TG2387<->DK_QSY2 691 Odense_2/2388 434.5375 -2 High 7 180 - Color 13 2 4 42 # TG2388<->DCS699B 692 Odense_2/2389 434.5375 -2 High 7 180 - Color 13 2 4 43 # TG2389<->XLX238 693 Odense_2/23810 434.5375 -2 High 7 180 - Color 13 2 4 44 # TG23810<->YSF 694 Odense_2/23811 434.5375 -2 High 7 180 - Color 13 2 4 45 # TG23811<->X-SWE 695 Odense_2/23812 434.5375 -2 High 7 180 - Color 13 2 4 46 # TG23812<->X-DK 696 Odense_2/23813 434.5375 -2 High 7 180 - Color 13 2 4 47 # TG23813<->DCS04Y 697 Odense_WW_1/91 434.5375 -2 High 7 180 - Color 13 1 3 21 # 091_BM_WW_ENG 698 Odense_EU_1/92 434.5375 -2 High 7 180 - Color 13 1 3 22 # 092_BM_EU 699 Odense_1/240_S 434.5375 -2 High 7 180 - Color 13 1 3 48 # 240_SWE 700 Odense_1/262_D 434.5375 -2 High 7 180 - Color 13 1 3 51 # 262_DEU 701 Regnema_LK_1/238 434.6375 -2 High 14 180 - Color 9 1 3 34 # 238_DNK 702 Regnem_LKS_1/238 434.6375 -2 High 14 180 - Color 9 1 3 34 # 238_DNK 703 Regnemar_REF_2/9 434.6375 -2 High 14 180 - Color 9 2 4 19 # 009_LOK 704 Regnemark_2/2381 434.6375 -2 High 14 180 - Color 9 2 4 35 # TG2381<->DK_Nord 705 Regnemark_2/2382 434.6375 -2 High 14 180 - Color 9 2 4 36 # TG2382<->DK_Midt 706 Regnemark_2/2383 434.6375 -2 High 14 180 - Color 9 2 4 37 # TG2383<->DK_Syd 707 Regnemark_2/2384 434.6375 -2 High 14 180 - Color 9 2 4 38 # TG2384<->DK_Cph 708 Regnemark_2/2385 434.6375 -2 High 14 180 - Color 9 2 4 39 # TG2385<->DK_Sj 709 Regnemark_2/2386 434.6375 -2 High 14 180 - Color 9 2 4 40 # TG2386<->DK_QSY1 710 Regnemark_2/2387 434.6375 -2 High 14 180 - Color 9 2 4 41 # TG2387<->DK_QSY2 711 Regnemark_2/2388 434.6375 -2 High 14 180 - Color 9 2 4 42 # TG2388<->DCS699B 712 Regnemark_2/2389 434.6375 -2 High 14 180 - Color 9 2 4 43 # TG2389<->XLX238 713 Regnemar_2/23810 434.6375 -2 High 14 180 - Color 9 2 4 44 # TG23810<->YSF 714 Regnemar_2/23811 434.6375 -2 High 14 180 - Color 9 2 4 45 # TG23811<->X-SWE 715 Regnemar_2/23812 434.6375 -2 High 14 180 - Color 9 2 4 46 # TG23812<->X-DK 716 Regnemar_2/23813 434.6375 -2 High 14 180 - Color 9 2 4 47 # TG23813<->DCS04Y 717 Regnemar_WW_1/91 434.6375 -2 High 14 180 - Color 9 1 3 21 # 091_BM_WW_ENG 718 Regnemar_EU_1/92 434.6375 -2 High 14 180 - Color 9 1 3 22 # 092_BM_EU 719 Regnemar_1/240_S 434.6375 -2 High 14 180 - Color 9 1 3 48 # 240_SWE 720 Regnemar_1/262_D 434.6375 -2 High 14 180 - Color 9 1 3 51 # 262_DEU 721 Sunds_LK_1/238 434.7375 -2 High 6 180 - Color 12 1 3 34 # 238_DNK 722 Sunds_LKS_1/238 434.7375 -2 High 6 180 - Color 12 1 3 34 # 238_DNK 723 Sunds_REF_2/9 434.7375 -2 High 6 180 - Color 12 2 4 19 # 009_LOK 724 Sunds_2/2381 434.7375 -2 High 6 180 - Color 12 2 4 35 # TG2381<->DK_Nord 725 Sunds_2/2382 434.7375 -2 High 6 180 - Color 12 2 4 36 # TG2382<->DK_Midt 726 Sunds_2/2383 434.7375 -2 High 6 180 - Color 12 2 4 37 # TG2383<->DK_Syd 727 Sunds_2/2384 434.7375 -2 High 6 180 - Color 12 2 4 38 # TG2384<->DK_Cph 728 Sunds_2/2385 434.7375 -2 High 6 180 - Color 12 2 4 39 # TG2385<->DK_Sj 729 Sunds_2/2386 434.7375 -2 High 6 180 - Color 12 2 4 40 # TG2386<->DK_QSY1 730 Sunds_2/2387 434.7375 -2 High 6 180 - Color 12 2 4 41 # TG2387<->DK_QSY2 731 Sunds_2/2388 434.7375 -2 High 6 180 - Color 12 2 4 42 # TG2388<->DCS699B 732 Sunds_2/2389 434.7375 -2 High 6 180 - Color 12 2 4 43 # TG2389<->XLX238 733 Sunds_2/23810 434.7375 -2 High 6 180 - Color 12 2 4 44 # TG23810<->YSF 734 Sunds_2/23811 434.7375 -2 High 6 180 - Color 12 2 4 45 # TG23811<->X-SWE 735 Sunds_2/23812 434.7375 -2 High 6 180 - Color 12 2 4 46 # TG23812<->X-DK 736 Sunds_2/23813 434.7375 -2 High 6 180 - Color 12 2 4 47 # TG23813<->DCS04Y 737 Sunds_WW_1/91 434.7375 -2 High 6 180 - Color 12 1 3 21 # 091_BM_WW_ENG 738 Sunds_EU_1/92 434.7375 -2 High 6 180 - Color 12 1 3 21 # 091_BM_WW_ENG 739 Sunds_1/240_S 434.7375 -2 High 6 180 - Color 12 1 3 48 # 240_SWE 740 Sunds_1/262_D 434.7375 -2 High 6 180 - Color 12 1 3 51 # 262_DEU 741 Yding_LK_1/238 434.675 -2 High 5 180 - Color 12 1 3 34 # 238_DNK 742 Yding_LKS_1/238 434.675 -2 High 5 180 - Color 12 1 3 34 # 238_DNK 743 Yding_REF_2/9 434.675 -2 High 5 180 - Color 12 2 4 19 # 009_LOK 744 Yding_2/2381 434.675 -2 High 5 180 - Color 12 2 4 35 # TG2381<->DK_Nord 745 Yding_2/2382 434.675 -2 High 5 180 - Color 12 2 4 36 # TG2382<->DK_Midt 746 Yding_2/2383 434.675 -2 High 5 180 - Color 12 2 4 37 # TG2383<->DK_Syd 747 Yding_2/2384 434.675 -2 High 5 180 - Color 12 2 4 38 # TG2384<->DK_Cph 748 Yding_2/2385 434.675 -2 High 5 180 - Color 12 2 4 39 # TG2385<->DK_Sj 749 Yding_2/2386 434.675 -2 High 5 180 - Color 12 2 4 40 # TG2386<->DK_QSY1 750 Yding_2/2387 434.675 -2 High 5 180 - Color 12 2 4 41 # TG2387<->DK_QSY2 751 Yding_2/2388 434.675 -2 High 5 180 - Color 12 2 4 42 # TG2388<->DCS699B 752 Yding_2/2389 434.675 -2 High 5 180 - Color 12 2 4 43 # TG2389<->XLX238 753 Yding_2/23810 434.675 -2 High 5 180 - Color 12 2 4 44 # TG23810<->YSF 754 Yding_2/23811 434.675 -2 High 5 180 - Color 12 2 4 45 # TG23811<->X-SWE 755 Yding_2/23812 434.675 -2 High 5 180 - Color 12 2 4 46 # TG23812<->X-DK 756 Yding_2/23813 434.675 -2 High 5 180 - Color 12 2 4 47 # TG23813<->DCS04Y 757 Yding_WW_1/1 434.675 -2.05 High 5 180 - Color 12 1 3 21 # 091_BM_WW_ENG 758 Yding_EU_1/2 434.675 -2 High 5 180 - Color 12 1 3 22 # 092_BM_EU 759 Yding_1/240_S 434.675 -2 High 5 180 - Color 12 1 3 48 # 240_SWE 760 Yding_1/262_D 434.675 -2 High 5 180 - Color 12 1 3 51 # 262_DEU 761 433.3000 433.300 +0 High - 180 - - 1 1 - 23 # 099_Simpleks 762 433.3125 433.3125 +0 High - 180 - - 1 1 - 23 # 099_Simpleks 763 433.3250 433.325 +0 High - 180 - - 1 1 - 23 # 099_Simpleks 764 433.3375 433.3375 +0 High - 180 - - 1 1 - 23 # 099_Simpleks 765 433.3500 433.350 +0 High - 180 - - 1 1 - 23 # 099_Simpleks 766 433.3625 433.3625 -0.0375 High - 180 - - 1 1 - 23 # 099_Simpleks 767 433.3750 433.375 +0 High - 180 - - 1 1 - 23 # 099_Simpleks 768 433.3875 433.3875 +0 High - 180 - - 1 1 - 23 # 099_Simpleks 769 433.4000 433.400 +0 High - 180 - - 1 1 - 23 # 099_Simpleks 770 433.4125 433.4125 +0 High - 180 - - 1 1 - 23 # 099_Simpleks 771 433.4250 433.425 +0 High - 180 - - 1 1 - 23 # 099_Simpleks 772 433.4375 433.4375 +0 High - 180 - - 1 1 - 23 # 099_Simpleks 773 433.4500 433.450 +0 High - 180 - - 1 1 - 23 # 099_Simpleks 774 433.4625 433.4625 +0 High - 180 - - 1 1 - 23 # 099_Simpleks 775 433.4750 433.475 +0 High - 180 - - 1 1 - 23 # 099_Simpleks 776 433.4875 433.4875 +0 High - 180 - - 1 1 - 23 # 099_Simpleks # Table of analog channels. # 1) Channel number: 1-3000 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Mid, Low # 6) Scan list: - or index # 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555 # 8) Receive only: -, + # 9) Admit criteria: -, Free, Tone # 10) Squelch level: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 # 11) Guard tone for receive, or '-' to disable # 12) Guard tone for transmit, or '-' to disable # 13) Bandwidth in kHz: 12.5, 20, 25 # Analog Name Receive Transmit Power Scan TOT RO Admit Sq RxTone TxTone Width 15 Bandholm_FM 434.650 -2 High 54 180 - - 1 82.5 82.5 12.5 226 Nakskov_FM 434.675 -2 High 54 180 - - 1 82.5 82.5 12.5 367 Thyholm_FM 434.700 -2 High 50 180 - - 1 94.8 94.8 12.5 600 Helsingoer_FM 434.6375 -1.9625 High 53 180 - - 1 82.5 82.5 12.5 777 433.5000_Analog 433.500 +0 High - 180 - - 1 - - 12.5 778 433.5250_Analog 433.525 +0 High - 180 - - 1 - - 12.5 779 433.5500_Analog 433.550 +0 High - 180 - - 1 - - 12.5 780 433.5750_Analog 433.575 +0 High - 180 - - 1 - - 12.5 781 433.6000_Analog 433.600 +0 High - 180 - - 1 - - 12.5 782 433.6250_Analog 433.625 +0 High - 180 - - 1 - - 12.5 783 433.6500_Analog 433.650 +0 High - 180 - - 1 - - 12.5 784 433.6750_Analog 433.675 +0 High - 180 - - 1 - - 12.5 785 433.7000_Analog 433.700 +0 High - 180 - - 1 - - 12.5 786 433.7250_Analog 433.725 +0 High - 180 - - 1 - - 12.5 787 433.7500_Analog 433.750 +0 High - 180 - - 1 - - 12.5 788 433.7750_Analog 433.775 +0 High - 180 - - 1 - - 12.5 789 433.8000_Analog 433.800 +0 High - 180 - - 1 - - 12.5 790 433.8250_Analog 433.825 +0 High - 180 - - 1 - - 12.5 791 433.8500_Analog 433.850 +0 High - 180 - - 1 - - 12.5 792 433.8750_Analog 433.875 +0 High - 180 - - 1 - - 12.5 793 Frederikshavn_FM 434.825 -2 High 50 180 - - 1 - 94.8 12.5 794 Aalborg_City_FM 434.9625 -2 High 50 180 - - 1 - 94.8 12.5 795 Thisted_ASR 434.8625 -2 High 50 180 - - 1 - 94.8 12.5 796 Stenbjerg_ASR 434.900 -2 High 50 180 - - 1 - 94.8 12.5 797 Agger_FM 434.9625 -2 High 50 180 - - 1 - 94.8 12.5 798 Rold_1750 434.925 -2 High 50 180 - - 1 - - 12.5 799 Hurup_ASR 434.8375 +0 High 50 180 - - 1 94.8 94.8 12.5 800 Boddum_ASR 434.825 -2 High 50 180 - - 1 94.8 94.8 12.5 801 Skive_1750 434.875 -2 High 51 180 - - 1 - - 12.5 802 Lemvig_ASR 434.9875 -2 High 51 180 - - 1 - 77.0 12.5 803 Struer_ASR 434.9375 -2 High 51 180 - - 1 - 94.8 12.5 804 Randers_FM 434.9875 -2 High 51 180 - - 1 - 77.0 12.5 805 Grenaa_FM 434.900 -2 High 51 60 - - 1 - 77.0 12.5 806 Holstebro_ASR 434.850 -2 High 51 180 - - 1 77.0 77.0 12.5 807 Aarhus_N_FM 434.875 -2 High 51 180 - - 1 77.0 77.0 12.5 808 Spjald_1750 434.8875 -2 High 51 180 - - 1 - - 12.5 809 Ringkoebing_ASR 434.9125 -2 High 51 180 - - 1 - 77.0 12.5 810 Skanderborg 434.825 -2 High 51 180 - - 1 - 77.0 12.5 811 Yding_1750 434.975 -2 High 51 180 - - 1 - - 12.5 812 Vejle_by_ASR 434.925 -2 High 52 180 - - 1 - 77.0 12.5 813 Fredericia_1750 434.900 -2 High 52 180 - - 1 - - 12.5 814 Esbjerg_ASR 434.9625 -2 High 52 180 - - 1 88.5 88.5 12.5 815 Odense_1750 434.850 -2 High 52 180 - - 1 - - 12.5 816 Nyborg_1750 434.900 -2 High 52 180 - - 1 71.9 71.9 12.5 817 Svendborg_FM 434.875 -2 High 52 180 - - 1 - 71.9 12.5 818 Knivsbjerg_1750 434.825 -2 High 52 180 - - 1 - - 12.5 819 Ravsted_1750 434.950 -2 High 52 180 - - 1 - - 12.5 820 Gladsaxe_FM 434.900 -2 High 53 180 - - 1 - 82.5 12.5 821 Roret_FM 434.8375 -2 High 53 180 - - 1 82.5 82.5 12.5 822 HCO_FM 434.875 -2 High 53 180 - - 1 82.5 82.5 12.5 823 Raketten_FM 436.050 +0 High 53 180 - - 1 - 82.5 12.5 824 Gilleleje_FM 434.850 -2 High 53 180 - - 1 - 82.5 12.5 825 Ramloese_ASR 434.825 -2 High 53 180 - - 1 - 82.5 12.5 826 Frederikssund_FM 434.975 -2 High 53 180 - - 1 - - 12.5 827 Dutterhoej_ASR 434.925 -2 High 54 180 - - 1 82.5 82.5 12.5 828 Regstrup_FM 434.9125 -2 High 54 180 - - 1 82.5 82.5 12.5 829 Roskilde_FM 434.8125 -2 High 54 180 - - 1 82.5 82.5 12.5 830 Ringsted_ASR 434.950 -2 High 54 180 - - 1 82.5 82.5 12.5 831 Slagelse_ASR 434.8875 -2 High 54 180 - - 1 - 82.5 12.5 832 Vordingborg_FM 434.9875 -2 High 54 180 - - 1 82.5 82.5 12.5 833 Maribo_1750 434.825 -2 High 54 180 - - 1 - - 12.5 834 Roennede_FM 434.950 -2 High 54 180 - - 1 82.5 82.5 12.5 835 Helsingborg_FM 434.650 -2 High 53 180 - - 1 79.7 79.7 12.5 836 Lund_FM 434.725 -2 High 53 180 - - 1 79.7 79.7 12.5 837 Malmo_FM 434.775 -2 High 53 180 - - 1 79.7 79.7 12.5 # Table of channel zones. # 1) Zone number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of channels: numbers and ranges (N-M) separated by comma # Zone Name Channels 1a Lokal 741,743,745,749-750,757 1b - - 2a BM_Frederikshavn 641,643-654,657-659 2b - - 3a BM_Aarhus 480,482-489,496-497,499,761-764 3b - - 4a BM_Aarhus_V 500,502-513,516-518 4b - - 5a BM_Sunds 721,723-734,737-739 5b - - 6a BM_Yding 741,743-750,757-758,760-764 6b - - 7a BM_Odense 681,683-694,697-699 7b - - 8a BM_Chrfeld 520,522-533,536-538 8b - - 9a BM_Dronningmolle 540,542-553,556-558 9b - - 10a BM_Helsingoer 196,580,582-593,596-597 10b - - 11a BM_Humlebaek 621,623-634,637-639 11b - - 12a BM_Gorlose 560,562-573,576-578 12b - - 13a BM_Herlev 601,603-614,617-619 13b - - 14a BM_Regnemark 701,703-714,717-719 14b - - 15a BM_Mogenstrup 661,663-674,677-679 15b - - 16a Frederikhavn 142,144-155,761-763 16b - - 17a Vodskov 452,454-465,761-763 17b - - 18a Stoevring 325,327-338,761-763 18b - - 19a Thyholm 353,355-366,761-763 19b - - 20a Viborg 410,412-423,761-763 20b - - 21a Grenaa 170,172-183,761-763 21b - - 22a Risskov 255,257-268,761-763 22b - - 23a Torphoej 368,370-381,761-763 23b - - 24a Fredericia 128,130-141,761-763 24b - - 25a Esbjerg_N 86,88-99,761-763 25b - - 26a Esbjerg 100,102-113,761-763 26b - - 27a Vissenbjerg 438,440-451,761-763 27b - - 28a Svendborg 339,341-352,761-763 28b - - 29a Toender 382,384-395,761-763 29b - - 30a Vejby 396,398-409,761-763 30b - - 31a Helsingoer 184,186-197,761-763 31b - - 32a Frederikssund 156,158-169,761-763 32b - - 33a Farum 114,116-127,761-763 33b - - 34a CPH_F. 58,60-71,761-763 34b - - 35a Roedovre 269,271-282,761-763 35b - - 36a CPH_City 44,46-57,761-763 36b - - 37a Hoejby 198,200-211,761-763 37b - - 38a Vig 424,426-437,761-763 38b - - 39a Bregninge 30,32-43,761-763 39b - - 40a Snertinge 311,313-324,761-763 40b - - 41a Regstrup 241,243-254,761-763 41b - - 42a Ebberup 72,74-85,761-763 42b - - 43a Borup 16,18-29,761-763 43b - - 44a Slagelse 297,299-310,761-763 44b - - 45a Naestved 227,229-240,761-763 45b - - 46a Raadegaard 283,285-296,761-763 46b - - 47a Vordingborg 466,468-479,761-763 47b - - 48a Bandholm 1,3-14,761-763 48b - - 49a Nakskov 212,214-225,761-763 49b - - 50a DMR_Simplex 761-776 50b - - 51a FM_Nordjylland 367,777-781,793-796,798-799,801,804 51b - - 52a FM_Midtjylland 265,777-784,804,808-811 52b - - 53a FM_Syddanmark 777-786,811-813,818-819 53b - - 54a FM_Hovedstaden 600,777-779,820-828 54b - - 55a FM_Sjaelland 15,23,226,777-784,830-834 55b - - # Table of scan lists. # 1) Scan list number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) Priority channel 1 (50% of scans): -, Sel or index # 4) Priority channel 2 (25% of scans): -, Sel or index # 5) Designated transmit channel: Last, Sel or index # 6) List of channels: numbers and ranges (N-M) separated by comma # Scanlist Name PCh1 PCh2 TxCh Channels 1 Favoritter 760 760 Last 741,743 2 BM_Frederikshavn 760 760 Last 641,643 3 BM_Aarhus 760 760 Last 480,482 4 BM_Aarhus_V 760 760 Last 500,502 5 BM_Yding 760 760 Last 741,743 6 BM_Sunds 760 760 Last 721,723 7 BM_Odense 760 760 Last 681,683 8 BM_Chrfeld 760 760 Last 520,522 9 BM_Dronningmolle 760 760 Last 540,542 10 BM_Helsingoer 760 760 Last 580,582 11 BM_Humlebaek 760 760 Last 621,623 12 BM_Gorlose 760 760 Last 560,562 13 BM_Herlev 760 760 Last 601,603 14 BM_Regnemark 760 760 Last 701,703 15 BM_Mogenstrup 760 760 Last 661,663 16 Frederikhavn 760 760 Last 142,144 17 Vodskov 268 760 Last 452,454 18 Stoevring 760 760 Last 325,327 19 Thyholm 760 760 Last 353,355 20 Viborg 760 760 Last 410,412 21 Grenaa 760 760 Last 170,172 22 Risskov 760 760 Last 255,257 23 Torphoj 760 760 Last 368,370 24 Fredericia 760 760 Last 128,130 25 Esbjerg_N 760 760 Last 86,88 26 Esbjerg 760 760 Last 100,102 27 Vissenbjerg 760 760 Last 438,440 28 Svendborg 760 760 Last 339,341 29 Toender 760 760 Last 382,384 30 Vejby 760 760 Last 396,398 31 Helsingor 760 760 Last 184,186 32 Frederikssund 760 760 Last 156,158 33 Farum 760 760 Last 114,116 34 CPH_F. 760 760 Last 58,60 35 Roedovre 760 760 Last 269,271 36 CPH_City 760 760 Last 44,46 37 Hoejby 760 760 Last 198,200 38 Vig 760 760 Last 424,426 39 Bregninge 760 760 Last 30,32 40 Snertinge 760 760 Last 311,313 41 Regstrup 760 760 Last 241,243 42 Ebberup 760 760 Last 72,74 43 Borup 760 760 Last 16,18 44 Slagelse 760 760 Last 297,299 45 Naestved 760 760 Last 227,229 46 Raadegaard 760 760 Last 283,285 47 Vordingborg 760 760 Last 466,468 48 Bandholm 760 760 Last 1,3 49 Nakskov 760 760 Last 212,214 50 FM_Nordjylland 760 760 Last 367,793-795,797-800 51 FM_Midtjylland 760 760 Last 214,801-804,807-808,810-811 52 FM_Syddanmark 760 760 Last 812-814,818-819 53 FM_Hovedstaden 760 760 Last 600,820-822,824 54 FM_Sjaelland 760 760 Last 15,806,827-831 # Table of contacts. # 1) Contact number: 1-10000 # 2) Name: up to 16 characters, use '_' instead of space # 3) Call type: Group, Private, All # 4) Call ID: 1...16777215 # 5) Call receive tone: -, + # Contact Name Type ID RxTone 1 Unlink Group 4000 - 2 Danmark_238 Group 4238 - 3 Danmark Group 4700 - 4 Nordjylland Group 4701 - 5 Midtjylland Group 4702 - 6 Syddanmark Group 4703 - 7 Hovedstaden_ Group 4704 - 8 Sjaelland Group 4705 - 9 DV-Bridge Group 4706 - 10 Analog-Bridge Group 4707 - 11 Danmark_Chat_1 Group 4708 - 12 Danmark_Test Group 4709 - 13 DK-QSY_1 Group 4716 - 14 DK-QSY_2 Group 4717 - 15 DK-JOTA Group 4718 - 16 Repeater_status_ Group 5000 - 17 001_WW Group 1 - 18 002_EU Group 2 - 19 009_LOK Group 9 - 20 027_NOR Group 27 - 21 091_BM_WW_ENG Group 91 - 22 092_BM_EU Group 92 - 23 099_Simpleks Group 99 - 24 110_WW_GER Group 110 - 25 113_WW_ENG Group 113 - 26 119_WW_ALL Group 119 - 27 123_WW_ENG Group 123 - 28 129_WW_ALL Group 129 - 29 130_WW_GER Group 130 - 30 208_FRA Group 208 - 31 222_ITA Group 222 - 32 232_AUT Group 232 - 33 235_GBR Group 235 - 34 238_DNK Group 238 - 35 TG2381<->DK_Nord Group 2381 - 36 TG2382<->DK_Midt Group 2382 - 37 TG2383<->DK_Syd Group 2383 - 38 TG2384<->DK_Cph Group 2384 - 39 TG2385<->DK_Sj Group 2385 - 40 TG2386<->DK_QSY1 Group 2386 - 41 TG2387<->DK_QSY2 Group 2387 - 42 TG2388<->DCS699B Group 2388 - 43 TG2389<->XLX238 Group 2389 - 44 TG23810<->YSF Group 23810 - 45 TG23811<->X-SWE Group 23811 - 46 TG23812<->X-DK Group 23812 - 47 TG23813<->DCS04Y Group 23813 - 48 240_SWE Group 240 - 49 244_FIN Group 244 - 50 260_POL Group 260 - 51 262_DEU Group 262 - 52 913_BM_ENG Group 913 - 53 923_BM_EU_ENG Group 923 - 54 927_BM_NOR Group 927 - 55 TAC1 Group 8501 - 56 TAC2 Group 8502 - 57 TAC3 Group 8503 - 58 MOT_Parrot Group 8599 - 59 DMR+_Parrot Group 9990 - # Table of group lists. # 1) Group list number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of contacts: numbers and ranges (N-M) separated by comma # Grouplist Name Contacts 1 DMR+_TS_1 17-19,24-27,30-34,49,51 2 DMR+_TS_2 19,35-41,59 3 BM_TS_1 21-22,34,48,51,54 4 BM_TS_2 19,35-47,59 5 001_Verden 17 6 002_Europa 18 7 027_Norden 20 8 009_Lokal_9 19 9 235_UK 33 10 238_Danmark 34 11 240_Sverige 48 12 262_Germany 51 13 HS_RX 19,21-22,34-48 # Table of text messages. # 1) Message number: 1-50 # 2) Text: up to 144 characters # Message Text 1 Hello # Unique DMR ID and name of this radio. ID: 238 Name: Dit_Call # Text displayed when the radio powers up. Intro Line 1: Husk_ID Intro Line 2: og_Call dmrconfig-master/examples/md2017-7-23-2017.conf000066400000000000000000001547421354060760700207200ustar00rootroot00000000000000# # Configuration generated 2018/11/12 by dmrconfig, version 0.9.193 # Radio: TYT MD-UV380 Last Programmed Date: 2017-07-23 19:19:23 CPS Software Version: V01.17 # Table of digital channels. # 1) Channel number: 1-3000 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Mid, Low # 6) Scan list: - or index in Scanlist table # 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555 # 8) Receive only: -, + # 9) Admit criteria: -, Free, Color # 10) Color code: 0, 1, 2, 3... 15 # 11) Time slot: 1 or 2 # 12) Receive group list: - or index in Grouplist table # 13) Contact for transmit: - or index in Contacts table # Digital Name Receive Transmit Power Scan TOT RO Admit Color Slot RxGL TxContact 1 MB-Local 442.2875 +5 High 1 180 - - 1 2 - 1 # Local 2 MB-MtnWest 442.2875 +5 High 1 180 - - 1 2 - 2 # Mtn_West 3 MB-MtnWest_1 442.2875 +5 High 1 180 - - 1 2 - 3 # Mtn_West_1 4 MB-SDA 442.2875 +5 High 1 180 - - 1 1 - 4 # SDA 5 MB-NorCal 442.2875 +5 High 1 180 - - 1 1 - 5 # Nor_Cal 6 MB-NorCal_1 442.2875 +5 High 1 180 - - 1 1 - 6 # Nor_Cal_1 7 MB-SoCal 442.2875 +5 High 1 180 - - 1 1 - 7 # So_Cal 8 MB-SoCal_1 442.2875 +5 High 1 180 - - 1 1 - 8 # So_Cal_1 9 MB-Area_6 442.2875 +5 High 1 180 - - 1 1 - 21 # Area_6 10 MB-Calif 442.2875 +5 High 1 180 - - 1 1 - 16 # California 11 MB-Calif_1 442.2875 +5 High 1 180 - - 1 1 - 17 # California_1 12 MB-NorAmer 442.2875 +5 High 1 180 - - 1 1 - 19 # North_America 13 MB-World 442.2875 +5 High 1 180 - - 1 1 - 20 # World_Wide 14 MB-TAC_310 442.2875 +5 High 1 180 - - 1 1 - 15 # TAC_310 15 MB-SNARS 442.2875 +5 High 1 180 - - 1 1 - 13 # SNARS 16 MB-Parrot 442.2875 +5 High 1 180 - - 1 1 - 18 # Parrot 17 MLU-Local 440.050 +5 High 2 180 - - 1 2 - 1 # Local 18 MLU-MtnWest_ 440.050 +5 High 2 180 - - 1 2 - 2 # Mtn_West 19 MLU-MtnWest1 440.050 +5 High 2 180 - - 1 2 - 3 # Mtn_West_1 20 MLU-SDA 440.050 +5 High 2 180 - - 1 1 - 4 # SDA 21 MLU-NorCal 440.050 +5 High 2 180 - - 1 1 - 5 # Nor_Cal 22 MLU-NorCal1 440.050 +5 High 2 180 - - 1 1 - 6 # Nor_Cal_1 23 MLU-SoCal 440.050 +5 High 2 180 - - 1 1 - 7 # So_Cal 24 MLU-SoCal1 440.050 +5 High 2 180 - - 1 1 - 8 # So_Cal_1 25 MLU-Area_6 440.050 +5 High 2 180 - - 1 1 - 21 # Area_6 26 MLU-Calif 440.050 +5 High 2 180 - - 1 1 - 16 # California 27 MLU-Calif_1 440.050 +5 High 2 180 - - 1 1 - 17 # California_1 28 MLU-NorAmer 440.050 +5 High 2 180 - - 1 1 - 19 # North_America 29 MLU-World 440.050 +5 High 2 180 - - 1 1 - 20 # World_Wide 30 MLU-TAC_310 440.050 +5 High 2 180 - - 1 1 - 15 # TAC_310 31 MLU-SNARS 440.050 +5 High 2 180 - - 1 1 - 13 # SNARS 32 MLU-Parrot 440.050 +5 High 2 180 - - 1 1 - 18 # Parrot 33 DTU-Local 440.0625 +5 High 3 180 - - 1 2 - 1 # Local 34 DTU-MtnWest 440.0625 +5 High 3 180 - - 1 2 - 2 # Mtn_West 35 DTU-MtnWest1 440.0625 +5 High 3 180 - - 1 2 - 3 # Mtn_West_1 36 DTU-SDA 440.0625 +5 High 3 180 - - 1 1 - 4 # SDA 37 DTU-NorCal 440.0625 +5 High 3 180 - - 1 1 - 5 # Nor_Cal 38 DTU-NorCal1 440.0625 +5 High 3 180 - - 1 1 - 6 # Nor_Cal_1 39 DTU-SoCal 440.0625 +5 High 3 180 - - 1 1 - 7 # So_Cal 40 DTU-SoCal_1 440.0625 +5 High 3 180 - - 1 1 - 8 # So_Cal_1 41 DTU-Area_6 440.0625 +5 High 3 180 - - 1 1 - 21 # Area_6 42 DTU_Calif 440.0625 +5 High 3 180 - - 1 1 - 16 # California 43 DTU-Calif_1 440.0625 +5 High 3 180 - - 1 1 - 17 # California_1 44 DTU-Nor_Amer 440.0625 +5 High 3 180 - - 1 1 - 19 # North_America 45 DTU-World 440.0625 +5 High 3 180 - - 1 1 - 20 # World_Wide 46 DTU-TAC_310 440.0625 +5 High 3 180 - - 1 1 - 15 # TAC_310 47 DTU-SNARS 440.0625 +5 High 3 180 - - 1 1 - 13 # SNARS 48 DTU-Parrot 440.0625 +5 High 3 180 - - 1 1 - 1 # Local 49 BMU-Local 442.2375 +5 High 4 180 - - 1 2 - 1 # Local 50 BMU-MtnWest 442.2375 +5 High 4 180 - - 1 2 - 2 # Mtn_West 51 BMU-MtnWest_1 442.2375 +5 High 4 180 - - 1 2 - 3 # Mtn_West_1 52 BMU-SDA 442.2375 +5 High 4 180 - - 1 1 - 4 # SDA 53 BMU-NorCal 442.2375 +5 High 4 180 - - 1 1 - 5 # Nor_Cal 54 BMU-NorCal_1 442.2375 +5 High 4 180 - - 1 1 - 6 # Nor_Cal_1 55 BMU-SoCal 442.2375 +5 High 4 180 - - 1 1 - 7 # So_Cal 56 BMU-SoCal_1 442.2375 +5 High 4 180 - - 1 1 - 8 # So_Cal_1 57 BMU-Area_6 442.2375 +5 High 4 180 - - 1 1 - 21 # Area_6 58 BMU-Calif 442.2375 +5 High 4 180 - - 1 1 - 16 # California 59 BMU-Calif_1 442.2375 +5 High 4 180 - - 1 1 - 17 # California_1 60 BMU-NorAmer 442.2375 +5 High 4 180 - - 1 1 - 19 # North_America 61 BMU-World 442.2375 +5 High 4 180 - - 1 1 - 20 # World_Wide 62 BMU-TAC_310 442.2375 +5 High 4 180 - - 1 1 - 15 # TAC_310 63 BMU-SNARS 442.2375 +5 High 4 180 - - 1 1 - 13 # SNARS 64 BMU-Parrot 442.2375 +5 High 4 180 - - 1 1 - 18 # Parrot 65 PRU-Local 442.325 +5 High 5 180 - - 2 2 - 1 # Local 66 PRU-MtnWest 442.325 +5 High 5 180 - - 2 2 - 2 # Mtn_West 67 PRU-MtnWest1 442.325 +5 High 5 180 - - 2 2 - 3 # Mtn_West_1 68 PRU-SDA 442.325 +5 High 5 180 - - 2 1 - 4 # SDA 69 PRU-NorCal 442.325 +5 High 5 180 - - 2 1 - 5 # Nor_Cal 70 PRU-NorCal_1 442.325 +5 High 5 180 - - 2 1 - 6 # Nor_Cal_1 71 PRU-SoCal 442.325 +5 High 5 180 - - 2 1 - 7 # So_Cal 72 PRU-SoCal_1 442.325 +5 High 5 180 - - 2 1 - 7 # So_Cal 73 PRU-Area_6 442.325 +5 High 5 180 - - 2 1 - 21 # Area_6 74 PRU-Calif 442.325 +5 High 5 180 - - 2 1 - 16 # California 75 PRU-Calif_1 442.325 +5 High 5 180 - - 2 1 - 17 # California_1 76 PRU-NorAmer 442.325 +5 High 5 180 - - 2 1 - 19 # North_America 77 PRU-World 442.325 +5 High 5 180 - - 2 1 - 20 # World_Wide 78 PRU-TAC_310 442.325 +5 High 5 180 - - 2 1 - 15 # TAC_310 79 PRU-SNARS 442.325 +5 High 5 180 - - 2 1 - 13 # SNARS 80 PRU-Parrot 442.325 +5 High 5 180 - - 2 1 - 18 # Parrot 81 BRU-Local 442.4875 +5 High 6 180 - - 1 2 - 1 # Local 82 BRU-MtnWest 442.4875 +5 High 6 180 - - 1 2 - 2 # Mtn_West 83 BRU-MtnWest_1 442.4875 +5 High 6 180 - - 1 2 - 3 # Mtn_West_1 84 BRU-SDA 442.4875 +5 High 6 180 - - 1 1 - 4 # SDA 85 BRU-NorCal 442.4875 +5 High 6 180 - - 1 1 - 5 # Nor_Cal 86 BRU-NorCal_1 442.4875 +5 High 6 180 - - 1 1 - 6 # Nor_Cal_1 87 BRU-SoCal 442.4875 +5 High 6 180 - - 1 1 - 7 # So_Cal 88 BRU-SoCal_1 442.4875 +5 High 6 180 - - 1 1 - 8 # So_Cal_1 89 BRU-Area_6 442.4875 +5 High 6 180 - - 1 1 - 21 # Area_6 90 BRU-Calif 442.4875 +5 High 6 180 - - 1 1 - 16 # California 91 BRU-Calif_1 442.4875 +5 High 6 180 - - 1 1 - 17 # California_1 92 BRU-NorAmer 442.4875 +5 High 6 180 - - 1 1 - 19 # North_America 93 BRU-World 442.4875 +5 High 6 180 - - 1 1 - 20 # World_Wide 94 BRU-TAC_310 442.4875 +5 High 6 180 - - 1 1 - 15 # TAC_310 95 BRU-SNARS 442.4875 +5 High 6 180 - - 1 1 - 13 # SNARS 96 BRU-Parrot 442.4875 +5 High 6 180 - - 1 1 - 18 # Parrot 97 SRU-Local 442.000 +5 High 7 180 - - 1 2 - 1 # Local 98 SRU-MtnWest 442.000 +5 High 7 180 - - 1 2 - 2 # Mtn_West 99 SRU-MtnWest_1 442.000 +5 High 7 180 - - 1 2 - 3 # Mtn_West_1 100 SRU-SDA 442.000 +5 High 7 180 - - 1 1 - 4 # SDA 101 SRU-NorCal 442.000 +5 High 7 180 - - 1 1 - 5 # Nor_Cal 102 SRU-NorCal_1 442.000 +5 High 7 180 - - 1 1 - 6 # Nor_Cal_1 103 SRU-SoCal 442.000 +5 High 7 180 - - 1 1 - 7 # So_Cal 104 SRU-SoCal_1 442.000 +5 High 7 180 - - 1 1 - 8 # So_Cal_1 105 SRU-Area_6 442.000 +5 High 7 180 - - 1 1 - 21 # Area_6 106 SRU-Calif 442.000 +5 High 7 180 - - 1 1 - 16 # California 107 SRU-Calif_1 442.000 +5 High 7 180 - - 1 1 - 17 # California_1 108 SRU-NorAmer 442.000 +5 High 7 180 - - 1 1 - 19 # North_America 109 SRU-World 442.000 +5 High 7 180 - - 1 1 - 20 # World_Wide 110 SRU-TAC_310 442.000 +5 High 7 180 - - 1 1 - 15 # TAC_310 111 SRU-SNARS 442.000 +5 High 7 180 - - 1 1 - 13 # SNARS 112 SRU-Parrot 442.000 +5 High 7 180 - - 1 1 - 18 # Parrot 113 RMU-Local 440.950 +5 High 8 180 - - 1 2 - 1 # Local 114 RMU-MtnWest 440.950 +5 High 8 180 - - 1 2 - 2 # Mtn_West 115 RMU-MtnWest1 440.950 +5 High 8 180 - - 1 2 - 3 # Mtn_West_1 116 RMU-SDA 440.950 +5 High 8 180 - - 1 1 - 4 # SDA 117 RMU-NorCal 440.950 +5 High 8 180 - - 1 2 - 5 # Nor_Cal 118 RMU-NorCal1 440.950 +5 High 8 180 - - 1 2 - 6 # Nor_Cal_1 119 RMU-SoCal 440.950 +5 High 8 180 - - 1 2 - 7 # So_Cal 120 RMU-SoCal1 440.950 +5 High 8 180 - - 1 2 - 8 # So_Cal_1 121 RMU-Area_6 440.950 +5 High 8 180 - - 1 2 - 21 # Area_6 122 RMU-Calif 440.950 +5 High 8 180 - - 1 2 - 16 # California 123 RMU-Calif_1 440.950 +5 High 8 180 - - 1 2 - 17 # California_1 124 RMU-NorAmer 440.950 +5 High 8 180 - - 1 2 - 19 # North_America 125 RMU-World 440.950 +5 High 8 180 - - 1 2 - 20 # World_Wide 126 RMU-TAC_310 440.950 +5 High 8 180 - - 1 2 - 15 # TAC_310 127 RMU-SNARS 440.950 +5 High 8 180 - - 1 2 - 13 # SNARS 128 RMU-Parrot 440.950 +5 High 8 180 - - 1 2 - 18 # Parrot 129 SLO-Local 443.4375 +5 High 9 180 - - 1 2 - 1 # Local 130 SLO-MtnWest 443.4375 +5 High 9 180 - - 1 2 - 2 # Mtn_West 131 SLO-MtnWest_1 443.4375 +5 High 9 180 - - 1 2 - 3 # Mtn_West_1 132 SLO-SDA 443.4375 +5 High 9 180 - - 1 1 - 4 # SDA 133 SLO-NorCal 443.4375 +5 High 9 180 - - 1 1 - 5 # Nor_Cal 134 SLO-NorCal1 443.4375 +5 High 9 180 - - 1 1 - 6 # Nor_Cal_1 135 SLO-SoCal 443.4375 +5 High 9 180 - - 1 1 - 7 # So_Cal 136 SLO-SoCal1 443.4375 +5 High 9 180 - - 1 1 - 8 # So_Cal_1 137 SLO-Area_6 443.4375 +5 High 9 180 - - 1 1 - 21 # Area_6 138 SLO-Calif 443.4375 +5 High 9 180 - - 1 1 - 16 # California 139 SLO-Calif1 443.4375 +5 High 9 180 - - 1 1 - 17 # California_1 140 SLO-NorAmer 443.4375 +5 High 9 180 - - 1 1 - 19 # North_America 141 SLO-World 443.4375 +5 High 9 180 - - 1 1 - 20 # World_Wide 142 SLO-TAC_310 443.4375 +5 High 9 180 - - 1 1 - 15 # TAC_310 143 SLO-SNARS 443.4375 +5 High 9 180 - - 1 1 - 13 # SNARS 144 SLO-Parrot 443.4375 +5 High 9 180 - - 1 1 - 18 # Parrot 145 HFD-Local 442.5375 +5 High 10 180 - - 1 2 - 1 # Local 146 HFD-MtnWest 442.5375 +5 High 10 180 - - 1 2 - 2 # Mtn_West 147 HFD-MtnWest_1 442.5375 +5 High 10 180 - - 1 2 - 3 # Mtn_West_1 148 HFD-SDA 442.5375 +5 High 10 180 - - 1 1 - 4 # SDA 149 HFD-NorCal 442.5375 +5 High 10 180 - - 1 1 - 5 # Nor_Cal 150 HFD-NorCal1 442.5375 +5 High 10 180 - - 1 1 - 6 # Nor_Cal_1 151 HFD-SoCal 442.5375 +5 High 10 180 - - 1 1 - 7 # So_Cal 152 HFD-SoCal1 442.5375 +5 High 10 180 - - 1 1 - 8 # So_Cal_1 153 HFD-Area_6 442.5375 +5 High 10 180 - - 1 1 - 21 # Area_6 154 HFD-Calif 442.5375 +5 High 10 180 - - 1 1 - 16 # California 155 HFD-Calif_1 442.5375 +5 High 10 180 - - 1 1 - 17 # California_1 156 HFD-NorAmer 442.5375 +5 High 10 180 - - 1 1 - 19 # North_America 157 HFD-World 442.5375 +5 High 10 180 - - 1 1 - 20 # World_Wide 158 HFD-TAC_310 442.5375 +5 High 10 180 - - 1 1 - 15 # TAC_310 159 HFD-SNARS 442.5375 +5 High 10 180 - - 1 1 - 13 # SNARS 160 HFD-Parrot 442.5375 +5 High 10 180 - - 1 1 - 18 # Parrot 161 SCruz-Local 442.5375 +5 High 11 180 - - 1 2 - 1 # Local 162 SCruz-NorCal 442.5375 +5 High 11 180 - - 1 2 - 5 # Nor_Cal 163 SCruz-NorCal1 442.5375 +5 High 11 180 - - 1 2 - 6 # Nor_Cal_1 164 SCruz-MtnWest 442.5375 +5 High 11 180 - - 1 1 - 2 # Mtn_West 165 SCruz-MtnWest1 442.5375 +5 High 11 180 - - 1 1 - 3 # Mtn_West_1 166 SCruz-SoCal 442.5375 +5 High 11 180 - - 1 1 - 7 # So_Cal 167 SCruz-SoCal1 442.5375 +5 High 11 180 - - 1 1 - 8 # So_Cal_1 168 SCruz-Area_6 442.5375 +5 High 11 180 - - 1 1 - 21 # Area_6 169 SCruz-Calif 442.5375 +5 High 11 180 - - 1 1 - 16 # California 170 SCruz-Calif_1 442.5375 +5 High 11 180 - - 1 1 - 17 # California_1 171 SCruz-NorAmr 442.5375 +5 High 11 180 - - 1 1 - 19 # North_America 172 SCruz-World 442.5375 +5 High 11 180 - - 1 1 - 20 # World_Wide 173 SCruz-TAC310 442.5375 +5 High 11 180 - - 1 1 - 15 # TAC_310 174 SCruz-SNARS 442.5375 +5 High 11 180 - - 1 1 - 13 # SNARS 175 SCruz-Parrot 442.5375 +5 High 11 180 - - 1 1 - 18 # Parrot 176 SJ1-Local 444.025 +5 High 12 180 - - 1 2 - 1 # Local 177 SJ1-NorCal 444.025 +5 High 12 180 - - 1 2 - 5 # Nor_Cal 178 SJ1-NorCal1 444.025 +5 High 12 180 - - 1 2 - 6 # Nor_Cal_1 179 SJ1-MtnWest 444.025 +5 High 12 180 - - 1 1 - 2 # Mtn_West 180 SJ1-MtnWest1 444.025 +5 High 12 180 - - 1 1 - 3 # Mtn_West_1 181 SJ1-SoCal 444.025 +5 High 12 180 - - 1 1 - 7 # So_Cal 182 SJ1-SoCal1 444.025 +5 High 12 180 - - 1 1 - 8 # So_Cal_1 183 SJ1-Area_6 444.025 +5 High 12 180 - - 1 1 - 21 # Area_6 184 SJ1-Calif 444.025 +5 High 12 180 - - 1 1 - 16 # California 185 SJ1-Calif1 444.025 +5 High 12 180 - - 1 1 - 17 # California_1 186 SJ1-NorAmer 444.025 +5 High 12 180 - - 1 1 - 19 # North_America 187 SJ1-World 444.025 +5 High 12 180 - - 1 1 - 20 # World_Wide 188 SJ1-TAC_310 444.025 +5 High 12 180 - - 1 1 - 15 # TAC_310 189 SJ1-SNARS 444.025 +5 High 12 180 - - 1 1 - 13 # SNARS 190 SJ1-Parrot 444.025 +5 High 12 180 - - 1 1 - 18 # Parrot 191 SJ2-Local 444.0375 +5 High 13 180 - - 1 2 - 1 # Local 192 SJ2-NorCal 444.0375 +5 High 13 180 - - 1 2 - 5 # Nor_Cal 193 SJ2-NorCal1 444.0375 +5 High 13 180 - - 1 2 - 6 # Nor_Cal_1 194 SJ2-MtnWest 444.0375 +5 High 13 180 - - 1 1 - 2 # Mtn_West 195 SJ2-MtnWest1 444.0375 +5 High 13 180 - - 1 1 - 3 # Mtn_West_1 196 SJ2-SoCal 444.0375 +5 High 13 180 - - 1 1 - 7 # So_Cal 197 SJ2-SoCal1 444.0375 +5 High 13 180 - - 1 1 - 8 # So_Cal_1 198 SJ2-Area_6 444.0375 +5 High 13 180 - - 1 1 - 21 # Area_6 199 SJ2_Calif 444.0375 +5 High 13 180 - - 1 1 - 16 # California 200 SJ2-_Calif_1 444.0375 +5 High 13 180 - - 1 1 - 17 # California_1 201 SJ2-NorAmer 444.0375 +5 High 13 180 - - 1 1 - 19 # North_America 202 SJ2-World 444.0375 +5 High 13 180 - - 1 1 - 20 # World_Wide 203 SJ2-TAC310 444.0375 +5 High 13 180 - - 1 1 - 15 # TAC_310 204 SJ2-SNARS 444.0375 +5 High 13 180 - - 1 1 - 13 # SNARS 205 SJ2-Parrot 444.0375 +5 High 13 180 - - 1 1 - 18 # Parrot 206 SJ3-Local 440.0375 +5 High 14 180 - - 1 2 - 1 # Local 207 SJ3-NorCal 440.0375 +5 High 14 180 - - 1 2 - 5 # Nor_Cal 208 SJ3-NorCal1 440.0375 +5 High 14 180 - - 1 2 - 6 # Nor_Cal_1 209 SJ3-MtnWest 440.0375 +5 High 14 180 - - 1 1 - 2 # Mtn_West 210 SJ3-MtnWest_1 440.0375 +5 High 14 180 - - 1 1 - 3 # Mtn_West_1 211 SJ3-SoCal 440.0375 +5 High 14 180 - - 1 1 - 7 # So_Cal 212 SJ3-SoCal_1 440.0375 +5 High 14 180 - - 1 1 - 8 # So_Cal_1 213 SJ3-Area_6 440.0375 +5 High 14 180 - - 1 1 - 21 # Area_6 214 SJ3-Calif 440.0375 +5 High 14 180 - - 1 1 - 16 # California 215 SJ3-Calif_1 440.0375 +5 High 14 180 - - 1 1 - 17 # California_1 216 SJ3-NorAmer 440.0375 +5 High 14 180 - - 1 1 - 19 # North_America 217 SJ3-World 440.0375 +5 High 14 180 - - 1 1 - 20 # World_Wide 218 SJ3-TAC310 440.0375 +5 High 14 180 - - 1 1 - 15 # TAC_310 219 SJ3-SNARS 440.0375 +5 High 14 180 - - 1 1 - 13 # SNARS 220 SJ3-Parrot 440.0375 +5 High 14 180 - - 1 1 - 18 # Parrot 221 FMT-Local 440.125 +5 High 15 180 - - 3 2 - 1 # Local 222 FMT-NorCal 440.125 +5 High 15 180 - - 3 2 - 5 # Nor_Cal 223 FMT-NorCal_1 440.125 +5 High 15 180 - - 3 2 - 6 # Nor_Cal_1 224 FMT-MtnWest 440.125 +5 High 15 180 - - 3 1 - 2 # Mtn_West 225 FMT-MtnWest1 440.125 +5 High 15 180 - - 3 1 - 3 # Mtn_West_1 226 FMT-SoCal 440.125 +5 High 15 180 - - 3 1 - 7 # So_Cal 227 FMT-SoCal1 440.125 +5 High 15 180 - - 3 1 - 8 # So_Cal_1 228 FMT-Area_6 440.125 +5 High 15 180 - - 3 1 - 21 # Area_6 229 FMT-Calif 440.125 +5 High 15 180 - - 3 1 - 16 # California 230 FMT-Calif_1 440.125 +5 High 15 180 - - 3 1 - 17 # California_1 231 FMT-NorAmer 440.125 +5 High 15 180 - - 3 1 - 19 # North_America 232 FMT-World 440.125 +5 High 15 180 - - 3 1 - 20 # World_Wide 233 FMT-TAC_310 440.125 +5 High 15 180 - - 3 1 - 15 # TAC_310 234 FMT-SNARS 440.125 +5 High 15 180 - - 3 1 - 13 # SNARS 235 FMT-PArrot 440.125 +5 High 15 180 - - 3 1 - 18 # Parrot 236 WCU-Local 440.2125 +5 High 16 180 - - 1 2 - 1 # Local 237 WCU-NorCal 440.2125 +5 High 16 180 - - 1 2 - 5 # Nor_Cal 238 WCU-NorCal1 440.2125 +5 High 16 180 - - 1 2 - 6 # Nor_Cal_1 239 WCU-MtnWest 440.2125 +5 High 16 180 - - 1 1 - 2 # Mtn_West 240 WCU-MtnWest1 440.2125 +5 High 16 180 - - 1 1 - 3 # Mtn_West_1 241 WCU-SoCal 440.2125 +5 High 16 180 - - 1 1 - 7 # So_Cal 242 WCU-SoCal1 440.2125 +5 High 16 180 - - 1 1 - 8 # So_Cal_1 243 WCU-Area_6 440.2125 +5 High 16 180 - - 1 1 - 21 # Area_6 244 WCU-Calif 440.2125 +5 High 16 180 - - 1 1 - 16 # California 245 WCU-Calif_1 440.2125 +5 High 16 180 - - 1 1 - 17 # California_1 246 WCU-NorAmer 440.2125 +5 High 16 180 - - 1 1 - 19 # North_America 247 WCU-World 440.2125 +5 High 16 180 - - 1 1 - 20 # World_Wide 248 WCU-TAC310 440.2125 +5 High 16 180 - - 1 1 - 15 # TAC_310 249 WCU-SNARS 440.2125 +5 High 16 180 - - 1 1 - 13 # SNARS 250 WCU-Parrot 440.2125 +5 High 16 180 - - 1 1 - 1 # Local 251 SBruno-Local 440.500 +5 High 17 180 - - 1 2 - 1 # Local 252 SBruno-NorCal 440.500 +5 High 17 180 - - 1 2 - 5 # Nor_Cal 253 SBruno-NorCal1 440.500 +5 High 17 180 - - 1 2 - 6 # Nor_Cal_1 254 SBruno-MtnWest 440.500 +5 High 17 180 - - 1 1 - 2 # Mtn_West 255 SBruno-MtnWest1 440.500 +5 High 17 180 - - 1 1 - 3 # Mtn_West_1 256 SBruno-SoCal 440.500 +5 High 17 180 - - 1 1 - 7 # So_Cal 257 SBruno-SoCal1 440.500 +5 High 17 180 - - 1 1 - 8 # So_Cal_1 258 SBruno-Area_6 440.500 +5 High 17 180 - - 1 1 - 21 # Area_6 259 SBruno-Calif 440.500 +5 High 17 180 - - 1 1 - 16 # California 260 SBruno-Calif1 440.500 +5 High 17 180 - - 1 1 - 17 # California_1 261 SBruno-NorAmer 440.500 +5 High 17 180 - - 1 1 - 19 # North_America 262 SBruno-World 440.500 +5 High 17 180 - - 1 1 - 20 # World_Wide 263 SBruno-TAC_310 440.500 +5 High 17 180 - - 1 1 - 15 # TAC_310 264 SBruno-SNARS 440.500 +5 High 17 180 - - 1 1 - 13 # SNARS 265 SBruno-Parrot 440.500 +5 High 17 180 - - 1 1 - 18 # Parrot 266 OAK-Local 443.500 +5 High 18 180 - - 1 2 - 1 # Local 267 OAK-NorCal 443.500 +5 High 18 180 - - 1 2 - 5 # Nor_Cal 268 OAK-NorCal1 443.500 +5 High 18 180 - - 1 2 - 6 # Nor_Cal_1 269 OAK-MtnWest 443.500 +5 High 18 180 - - 1 1 - 2 # Mtn_West 270 OAK-MtnWest1 443.500 +5 High 18 180 - - 1 1 - 3 # Mtn_West_1 271 OAK-SoCal 443.500 +5 High 18 180 - - 1 1 - 7 # So_Cal 272 OAK-SoCal_1 443.500 +5 High 18 180 - - 1 1 - 8 # So_Cal_1 273 OAK-Area_6 443.500 +5 High 18 180 - - 1 1 - 21 # Area_6 274 OAK-Calif 443.500 +5 High 18 180 - - 1 1 - 16 # California 275 OAK-Calif_1 443.500 +5 High 18 180 - - 1 1 - 17 # California_1 276 OAK-NorAmer 443.500 +5 High 18 180 - - 1 1 - 19 # North_America 277 OAK-World 443.500 +5 High 18 180 - - 1 1 - 20 # World_Wide 278 OAK-TAC_310 443.500 +5 High 18 180 - - 1 1 - 15 # TAC_310 279 OAK-SNARS 443.500 +5 High 18 180 - - 1 1 - 13 # SNARS 280 OAK-Parrot 443.500 +5 High 18 180 - - 1 1 - 18 # Parrot 281 LVRMR-Local 441.825 +5 High 19 180 - - 1 2 - 1 # Local 282 LVRMR-NorCal 441.825 +5 High 19 180 - - 1 2 - 5 # Nor_Cal 283 LVRMR-NorCal1 441.825 +5 High 19 180 - - 1 2 - 6 # Nor_Cal_1 284 LVRMR-MtnWest 441.825 +5 High 19 180 - - 1 1 - 2 # Mtn_West 285 LVRMR-MtnWest1 441.825 +5 High 19 180 - - 1 1 - 3 # Mtn_West_1 286 LVRMR-SoCal 441.825 +5 High 19 180 - - 1 1 - 7 # So_Cal 287 LVRMR-SoCal1 441.825 +5 High 19 180 - - 1 1 - 8 # So_Cal_1 288 LVRMR-Area_6 441.825 +5 High 19 180 - - 1 1 - 21 # Area_6 289 LVRMR-Calif 441.825 +5 High 19 180 - - 1 1 - 16 # California 290 LVRMR-Calif_1 441.825 +5 High 19 180 - - 1 1 - 17 # California_1 291 LVRMR-NorAmer 441.825 +5 High 19 180 - - 1 1 - 19 # North_America 292 LVRMR-World 441.825 +5 High 19 180 - - 1 1 - 20 # World_Wide 293 LVRMR-TAC_310 441.825 +5 High 19 180 - - 1 1 - 15 # TAC_310 294 LVRMR-SNARS 441.825 +5 High 19 180 - - 1 1 - 13 # SNARS 295 LVRMR-Parrot 441.825 +5 High 19 180 - - 1 1 - 18 # Parrot 296 OSO-Local 440.1875 +5 High 20 180 - - 1 2 - 1 # Local 297 OSO-NorCal 440.1875 +5 High 20 180 - - 1 2 - 5 # Nor_Cal 298 OSO-NorCal_1 440.1875 +5 High 20 180 - - 1 2 - 6 # Nor_Cal_1 299 OSO-MtnWest 440.1875 +5 High 20 180 - - 1 1 - 2 # Mtn_West 300 OSO-MtnWest_1 440.1875 +5 High 20 180 - - 1 1 - 3 # Mtn_West_1 301 OSO-SoCal 440.1875 +5 High 20 180 - - 1 1 - 7 # So_Cal 302 OSO-SoCal_1 440.1875 +5 High 20 180 - - 1 1 - 8 # So_Cal_1 303 OSO-Area_6 440.1875 +5 High 20 180 - - 1 1 - 21 # Area_6 304 OSO-Calif 440.1875 +5 High 20 180 - - 1 1 - 16 # California 305 OSO-Calif_1 440.1875 +5 High 20 180 - - 1 1 - 17 # California_1 306 OSO-NorAmer 440.1875 +5 High 20 180 - - 1 1 - 19 # North_America 307 OSO-World 440.1875 +5 High 20 180 - - 1 1 - 20 # World_Wide 308 OSO-TAC_310 440.1875 +5 High 20 180 - - 1 1 - 15 # TAC_310 309 OSO-SNARS 440.1875 +5 High 20 180 - - 1 1 - 13 # SNARS 310 OSO-Parrot 440.1875 +5 High 20 180 - - 1 1 - 18 # Parrot 311 SLNS-Local 444.525 +5 High 21 180 - - 1 2 - 1 # Local 312 SLNS-NorCal 444.525 +5 High 21 180 - - 1 2 - 5 # Nor_Cal 313 SLNS-NorCal1 444.525 +5 High 21 180 - - 1 2 - 6 # Nor_Cal_1 314 SLNS-MtnWest 444.525 +5 High 21 180 - - 1 1 - 2 # Mtn_West 315 SLNS-MtnWest_1 444.525 +5 High 21 180 - - 1 1 - 3 # Mtn_West_1 316 SLNS-SoCal 444.525 +5 High 21 180 - - 1 1 - 7 # So_Cal 317 SLNS-SoCal_1 444.525 +5 High 21 180 - - 1 1 - 8 # So_Cal_1 318 SLNS-Area_6 444.525 +5 High 21 180 - - 1 1 - 21 # Area_6 319 SLNS-Calif 444.525 +5 High 21 180 - - 1 1 - 16 # California 320 SLNS-Calif_1 444.525 +5 High 21 180 - - 1 1 - 17 # California_1 321 SLNS-NorAmer 444.525 +5 High 21 180 - - 1 1 - 1 # Local 322 SLNS-World 444.525 +5 High 21 180 - - 1 1 - 20 # World_Wide 323 SLNS-TAC_310 444.525 +5 High 21 180 - - 1 1 - 15 # TAC_310 324 SLNS-SNARS 444.525 +5 High 21 180 - - 1 1 - 13 # SNARS 325 SLNS-Parrot 444.525 +5 High 21 180 - - 1 1 - 18 # Parrot 326 PSMO-Local 444.350 +5 High 22 180 - - 1 2 - 1 # Local 327 PSMO-NorCal 444.350 +5 High 22 180 - - 1 2 - 5 # Nor_Cal 328 PSMO-NorCal_1 444.350 +5 High 22 180 - - 1 2 - 6 # Nor_Cal_1 329 PSMO-MtnWest 444.350 +5 High 22 180 - - 1 1 - 2 # Mtn_West 330 PSMO-MtnWest1 444.350 +5 High 22 180 - - 1 1 - 1 # Local 331 PSMO-SoCal 444.350 +5 High 22 180 - - 1 1 - 7 # So_Cal 332 PSMO-SoCal_1 444.350 +5 High 22 180 - - 1 1 - 8 # So_Cal_1 333 PSMO-Area_6 444.350 +5 High 22 180 - - 1 1 - 21 # Area_6 334 PSMO-Calif 444.350 +5 High 22 180 - - 1 1 - 16 # California 335 PSMO-Calif_1 444.350 +5 High 22 180 - - 1 1 - 17 # California_1 336 PSMO-NorAmer 444.350 +5 High 22 180 - - 1 1 - 19 # North_America 337 PSMO-World 444.350 +5 High 22 180 - - 1 1 - 20 # World_Wide 338 PSMO-TAC_310 444.350 +5 High 22 180 - - 1 1 - 15 # TAC_310 339 PSMO-SNARS 444.350 +5 High 22 180 - - 1 1 - 13 # SNARS 340 PSMO-Parrot 444.350 +5 High 22 180 - - 1 1 - 18 # Parrot 341 SMaria-Local 440.425 +5 High 23 180 - - 2 2 - 1 # Local 342 SMaria-NorCal 440.425 +5 High 23 180 - - 2 2 - 5 # Nor_Cal 343 SMaria-NorCal1 440.425 +5 High 23 180 - - 2 2 - 6 # Nor_Cal_1 344 SMaria-MtnWest 440.425 +5 High 23 180 - - 2 1 - 2 # Mtn_West 345 SMaria-MtnWest1 440.425 +5 High 23 180 - - 2 1 - 3 # Mtn_West_1 346 SMaria-SoCal 440.425 +5 High 23 180 - - 2 1 - 7 # So_Cal 347 SMaria-SoCal_1 440.425 +5 High 23 180 - - 2 1 - 8 # So_Cal_1 348 SMaria-Area_6 440.425 +5 High 23 180 - - 2 1 - 21 # Area_6 349 SMaria-Calif 440.425 +5 High 23 180 - - 2 1 - 16 # California 350 SMaria-Calif_1 440.425 +5 High 23 180 - - 2 1 - 17 # California_1 351 SMaria-NorAmer 440.425 +5 High 23 180 - - 2 1 - 19 # North_America 352 SMaria-World 440.425 +5 High 23 180 - - 2 1 - 20 # World_Wide 353 SMAria-TAC_310 440.425 +5 High 23 180 - - 2 1 - 15 # TAC_310 354 SMaria-SNARS 440.425 +5 High 23 180 - - 2 1 - 13 # SNARS 355 SMaria-Parrot 440.425 +5 High 23 180 - - 2 1 - 18 # Parrot 356 SRV-Local 145.025 +2.475 High 24 180 - - 1 2 - 1 # Local 357 SRV-MTNWest 145.025 +2.475 High 24 180 - - 1 2 - 2 # Mtn_West 358 SRV-MtnWest1 145.025 +2.475 High 24 180 - - 1 2 - 3 # Mtn_West_1 359 SRV-SDA 145.025 +2.475 High 24 180 - - 1 1 - 4 # SDA 360 SRV-NorCal 145.025 +2.475 High 24 180 - - 1 1 - 5 # Nor_Cal 361 SRV-NorCal_1 145.025 +2.475 High 24 180 - - 1 1 - 6 # Nor_Cal_1 362 SRV-SoCal 145.025 +2.475 High 24 180 - - 1 1 - 7 # So_Cal 363 SRV-SoCal1 145.025 +2.475 High 24 180 - - 1 1 - 8 # So_Cal_1 364 SRV-Area_6 145.025 +2.475 High 24 180 - - 1 1 - 21 # Area_6 365 SRV-Calif 145.025 +2.475 High 24 180 - - 1 1 - 16 # California 366 SRV-Calif_1 145.025 +2.475 High 24 180 - - 1 1 - 17 # California_1 367 SRV-NorAmer 145.025 +2.475 High 24 180 - - 1 1 - 19 # North_America 368 SRV-World 145.025 +2.475 High 24 180 - - 1 1 - 20 # World_Wide 369 SRV-TAC_310 145.025 +2.475 High 24 180 - - 1 1 - 15 # TAC_310 370 SRV-SNARS 145.025 +2.475 High 24 180 - - 1 1 - 13 # SNARS 371 SRV-Parrot 145.025 +2.475 High 24 180 - - 1 1 - 18 # Parrot 372 PRV-Local 144.950 +2.5 High 25 180 - - 2 2 - 1 # Local 373 PRV-MtnWest 144.950 +2.5 High 25 180 - - 2 2 - 2 # Mtn_West 374 PRV-MtnWest1 144.950 +2.5 High 25 180 - - 2 2 - 3 # Mtn_West_1 375 PRV-SDA 144.950 +2.5 High 25 180 - - 2 1 - 4 # SDA 376 PRV-NorCal 144.950 +2.5 High 25 180 - - 2 1 - 5 # Nor_Cal 377 PRV-NorCal_1 144.950 +2.5 High 25 180 - - 2 1 - 6 # Nor_Cal_1 378 PRV-SoCal 144.950 +2.5 High 25 180 - - 2 1 - 7 # So_Cal 379 PRV-SoCal_1 144.950 +2.5 High 25 180 - - 2 1 - 8 # So_Cal_1 380 PRV-Area_6 144.950 +2.5 High 25 180 - - 2 1 - 21 # Area_6 381 PRV-Calif 144.950 +2.5 High 25 180 - - 2 1 - 16 # California 382 PRV-Calif_1 144.950 +2.5 High 25 180 - - 2 1 - 17 # California_1 383 PRV-NorAmer 144.950 +2.5 High 25 180 - - 2 1 - 19 # North_America 384 PRV-World 144.950 +2.5 High 25 180 - - 2 1 - 20 # World_Wide 385 PRV-TAC_310 144.950 +2.5 High 25 180 - - 2 1 - 15 # TAC_310 386 PRV-SNARS 144.950 +2.5 High 25 180 - - 2 1 - 13 # SNARS 387 PRV-Parrot 144.950 +2.5 High 25 180 - - 2 1 - 18 # Parrot 388 MLV-Local 145.450 -0.6 High 26 180 - - 1 2 - 1 # Local 389 MLV-MtnWest 145.450 -0.6 High 26 180 - - 1 2 - 2 # Mtn_West 390 MLV-MtnWest1 145.450 -0.6 High 26 180 - - 1 2 - 3 # Mtn_West_1 391 MLV-SDA 145.450 -0.6 High 26 180 - - 1 1 - 4 # SDA 392 MLV-NorCal 145.450 -0.6 High 26 180 - - 1 1 - 5 # Nor_Cal 393 MLV-Norcal1 145.450 -0.6 High 26 180 - - 1 1 - 6 # Nor_Cal_1 394 MLV-SoCal 145.450 -0.6 High 26 180 - - 1 1 - 7 # So_Cal 395 MLV-SoCal1 145.450 -0.6 High 26 180 - - 1 1 - 8 # So_Cal_1 396 MLV-Area_6 145.450 -0.6 High 26 180 - - 1 1 - 21 # Area_6 397 MLV-Calif 145.450 -0.6 High 26 180 - - 1 1 - 16 # California 398 MLV-Calif1 145.450 -0.6 High 26 180 - - 1 1 - 17 # California_1 399 MLV-NorAmer 145.450 -0.6 High 26 180 - - 1 1 - 19 # North_America 400 MLV-World 145.450 -0.6 High 26 180 - - 1 1 - 20 # World_Wide 401 MLV-TAC_310 145.450 -0.6 High 26 180 - - 1 1 - 15 # TAC_310 402 MLV-SNARS 145.450 -0.6 High 26 180 - - 1 1 - 13 # SNARS 403 MLV-Parrot 145.450 -0.6 High 26 180 - - 1 1 - 18 # Parrot 404 MBV-Local 144.9375 +2.5 High 27 180 - - 1 2 - 1 # Local 405 MBV-NorCal 144.9375 +2.5 High 27 180 - - 1 2 - 5 # Nor_Cal 406 MBV-NorCal_1 144.9375 +2.5 High 27 180 - - 1 2 - 6 # Nor_Cal_1 407 MBV-MtnWest 144.9375 +2.5 High 27 180 - - 1 1 - 2 # Mtn_West 408 MBV-MtnWest_1 144.9375 +2.5 High 27 180 - - 1 1 - 3 # Mtn_West_1 409 MBV-Socal 144.9375 +2.5 High 27 180 - - 1 1 - 7 # So_Cal 410 MBV-SoCal_1 144.9375 +2.5 High 27 180 - - 1 1 - 8 # So_Cal_1 411 MBV-Area_6 144.9375 +2.5 High 27 180 - - 1 1 - 21 # Area_6 412 MBV-Calif 144.9375 +2.5 High 27 180 - - 1 1 - 16 # California 413 MBV-Calif_1 144.9375 +2.5 High 27 180 - - 1 1 - 17 # California_1 414 MBV-NorAmer 144.9375 +2.5 High 27 180 - - 1 1 - 19 # North_America 415 MBV-World 144.9375 +2.5 High 27 180 - - 1 1 - 20 # World_Wide 416 MBV-TAC_310 144.9375 +2.5 High 27 180 - - 1 1 - 15 # TAC_310 417 MBV-SNARS 144.9375 +2.5 High 27 180 - - 1 1 - 13 # SNARS 418 MBV-Parrot 144.9375 +2.5 High 27 180 - - 1 1 - 18 # Parrot 419 SV-Local 144.9625 +2.5 High 28 180 - - 2 2 - 1 # Local 420 SV-NorCal 144.9625 +2.5 High 28 180 - - 2 2 - 5 # Nor_Cal 421 SV-NorCal_1 144.9625 +2.5 High 28 180 - - 2 2 - 6 # Nor_Cal_1 422 SV-MtnWest 144.9625 +2.5 High 28 180 - - 2 1 - 2 # Mtn_West 423 SV-MtnWest_1 144.9625 +2.5 High 28 180 - - 2 1 - 3 # Mtn_West_1 424 SV-SoCal 144.9625 +2.5 High 28 180 - - 2 1 - 7 # So_Cal 425 SV-Socal_1 144.9625 +2.5 High 28 180 - - 2 1 - 8 # So_Cal_1 426 SV-Area_6 144.9625 +2.5 High 28 180 - - 2 1 - 21 # Area_6 427 SV-Calif 144.9625 +2.5 High 28 180 - - 2 1 - 16 # California 428 SV-Calif_1 144.9625 +2.5 High 28 180 - - 2 1 - 17 # California_1 429 SV-NorAmer 144.9625 +2.5 High 28 180 - - 2 1 - 19 # North_America 430 SV-World 144.9625 +2.5 High 28 180 - - 2 1 - 20 # World_Wide 431 SV-TAC_310 144.9625 +2.5 High 28 180 - - 2 1 - 15 # TAC_310 432 SV-SNARS 144.9625 +2.5 High 28 180 - - 2 1 - 13 # SNARS 433 SVParrot 144.9625 +2.5 High 28 180 - - 2 1 - 18 # Parrot 434 MDV-Local 144.975 +2.5 High 29 180 - - 1 2 - 1 # Local 435 MDV-Norcal 144.975 +2.5 High 29 180 - - 1 2 - 5 # Nor_Cal 436 MDV-NorCal_1 144.975 +2.5 High 29 180 - - 1 2 - 6 # Nor_Cal_1 437 MDV-MtnWest 144.975 +2.5 High 29 180 - - 1 1 - 1 # Local 438 MDV-MtnWest1 144.975 +2.5 High 29 180 - - 1 1 - 3 # Mtn_West_1 439 MDV-SoCal 144.975 +2.5 High 29 180 - - 1 1 - 7 # So_Cal 440 MDV-SoCal_1 144.975 +2.5 High 29 180 - - 1 1 - 8 # So_Cal_1 441 MDV-Area_6 144.975 +2.5 High 29 180 - - 1 1 - 21 # Area_6 442 MDV-Calif 144.975 +2.5 High 29 180 - - 1 1 - 16 # California 443 MDV-Calif1 144.975 +2.5 High 29 180 - - 1 1 - 17 # California_1 444 MDV-NorAmer 144.975 +2.5 High 29 180 - - 1 1 - 19 # North_America 445 MDV-World 144.975 +2.5 High 29 180 - - 1 1 - 20 # World_Wide 446 MDV-TAC_310 144.975 +2.5 High 29 180 - - 1 1 - 15 # TAC_310 447 MDV-SNARS 144.975 +2.5 High 29 180 - - 1 1 - 13 # SNARS 448 MDV-Parrot 144.975 +2.5 High 29 180 - - 1 1 - 18 # Parrot 449 SAC-Local 144.950 +2.5 High 30 180 - - 3 2 - 1 # Local 450 SAC-NorCal 144.950 +2.5 High 30 180 - - 3 2 - 5 # Nor_Cal 451 SAC-NorCal1 144.950 +2.5 High 30 180 - - 3 2 - 6 # Nor_Cal_1 452 SAC-MtnWest 144.950 +2.5 High 30 180 - - 3 1 - 2 # Mtn_West 453 SAC-MtnWest_1 144.950 +2.5 High 30 180 - - 3 1 - 3 # Mtn_West_1 454 SAC-SoCal 144.950 +2.5 High 30 180 - - 3 1 - 7 # So_Cal 455 SAC-SoCal1 144.950 +2.5 High 30 180 - - 3 1 - 8 # So_Cal_1 456 SAC-Area_6 144.950 +2.5 High 30 180 - - 3 1 - 21 # Area_6 457 SAC-Calif 144.950 +2.5 High 30 180 - - 3 1 - 16 # California 458 SAC-Calif_1 144.950 +2.5 High 30 180 - - 3 1 - 17 # California_1 459 SAC-NorAmer 144.950 +2.5 High 30 180 - - 3 1 - 19 # North_America 460 SAC-World 144.950 +2.5 High 30 180 - - 3 1 - 20 # World_Wide 461 SAC-TAC310 144.950 +2.5 High 30 180 - - 3 1 - 15 # TAC_310 462 SAC-SNARS 144.950 +2.5 High 30 180 - - 3 1 - 13 # SNARS 463 SAC-Parrot 144.950 +2.5 High 30 180 - - 3 1 - 18 # Parrot # Table of analog channels. # 1) Channel number: 1-3000 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Mid, Low # 6) Scan list: - or index # 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555 # 8) Receive only: -, + # 9) Admit criteria: -, Free, Tone # 10) Squelch level: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 # 11) Guard tone for receive, or '-' to disable # 12) Guard tone for transmit, or '-' to disable # 13) Bandwidth in kHz: 12.5, 20, 25 # Analog Name Receive Transmit Power Scan TOT RO Admit Sq RxTone TxTone Width 464 N6DL_147.33 147.330 +0.6 High - 180 - - 1 - 100.0 25 465 145.11_N6CVC 145.110 -0.6 High - 180 - - 1 - 100.0 25 466 146.61_WA6OIB 146.610 -0.6 High - 180 - - 1 - 141.3 25 467 146.76_N6BYH 146.760 -0.6 High - 180 - - 1 - 141.3 25 468 146.94_W6TO 146.940 -0.6 High - 180 - - 1 - 141.3 25 469 147.675_K6ARP 147.675 -0.6 High - 180 - - 1 - 141.3 25 470 147.300_W6DXW 147.300 +0.6 High - 180 - - 1 - 94.8 25 471 147.03_W6BXN 147.030 +0.6 High - 180 - - 1 - 100.0 25 472 147.165_N6VRC 147.165 +0.6 High - 180 - - 1 - 141.3 25 473 441.900_N6DL 441.900 +5 High - 180 - - 1 - 100.0 25 474 444.275_N6VRC 442.275 +5 High - 180 - - 1 - 141.3 25 475 444.950_N6VRC 444.950 +5 High - 180 - - 1 - 141.3 25 476 443.35_WA6YLB 443.350 +5 High - 180 - - 1 - 141.3 25 477 444.725_K6ARP 444.725 +5 High - 180 - - 1 - 141.3 25 478 440.450_N6BYH 440.450 +5 High - 180 - - 1 - 141.3 25 479 443.425_W6WYT 443.425 +5 High - 180 - - 1 - 141.3 25 # Table of channel zones. # 1) Zone number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of channels: numbers and ranges (N-M) separated by comma # Zone Name Channels 1a Bullion-MtWest_U 1-16 1b - - 2a Meadow-MtnWest_U 17-32 2b - - 3a DT-MtnWest_U 33-48 3b - - 4a Bear-MtnWest_U 49-64 4b - - 5a Park-MtnWest_U 65-80 5b - - 6a BRidge-MtnWest_U 81-96 6b - - 7a Rita-MtnWest_U 97-112 7b - - 8a RndMtn-MtnWest_U 113-128 8b - - 9a SLO-MtnWest_U 129-144 9b - - 10a HFD-MtnWest_U 145-160 10b - - 11a SCruz-NorCal_U 161-175 11b - - 12a SJ1-NorCal_U 176-190 12b - - 13a SJ2-NorCal_U 191-205 13b - - 14a SJ3-NorCal_U 206-220 14b - - 15a FMT-NorCal_U 221-235 15b - - 16a WLNTCRK-NorCal_U 236-250 16b - - 17a SBruno-NorCal_U 251-265 17b - - 18a Oakland-NorCal_U 266-280 18b - - 19a Lvrmore-NorCal_U 281-295 19b - - 20a Mt_Oso-NorCal_U 296-310 20b - - 21a Salinas-NorCal_U 311-325 21b - - 22a Pismo-NorCal_U 326-340 22b - - 23a SMaria-NorCal_U 341-355 23b - - 24a Rita-MtnWest_V - 24b - 356-371 25a Park-MtnWest_V - 25b - 372-387 26a Meadow-MtnWest_V - 26b - 388-403 27a Bullion-NorCal_V - 27b - 404-418 28a Sonora-NorCal_V - 28b - 419-433 29a Diablo-NorCal_V - 29b - 434-448 30a Sac-NorCal_V - 30b - 449-463 31a Valley_VHF_F3E - 31b - 464-472 32a Valley_UHF_F3E 473-479 32b - - # Table of scan lists. # 1) Scan list number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) Priority channel 1 (50% of scans): -, Sel or index # 4) Priority channel 2 (25% of scans): -, Sel or index # 5) Designated transmit channel: Last, Sel or index # 6) List of channels: numbers and ranges (N-M) separated by comma # Scanlist Name PCh1 PCh2 TxCh Channels 1 Bullion-MtnWest_ 86 86 Last 1-15 2 Meadow-MtnWest_U 86 86 Last 17-32 3 DT-MtnWest_U 86 86 Last 33-48 4 Bear-MtnWest_U 86 86 Last 49-64 5 Park-MtnWest_U 86 86 Last 65-80 6 BRidge-MtnWest_U 86 86 Last 81-95 7 Rita-MtnWest_U Sel Sel Last 97-112 8 RndMtn-MtnWest_U 136 136 Last 113-128 9 SLO-MtnWest_U 136 136 Last 129-144 10 HFD-MtnWest_U 175 175 Last 145-160 11 SCruz-NorCal_U 175 175 Last 161-175 12 SJ1-NorCal_U 190 190 Last 176-190 13 SJ2-NorCal_U 311 311 Last 191-204 14 SJ3-NorCal_U 311 311 Last 206-220 15 FMT-NorCal_U 311 311 Last 221-235 16 WLNTCRK-NorCal_U 311 311 Last 236-250 17 SBruno-NorCal_U 311 311 Last 251-265 18 Oakland-NorCal_U 311 311 Last 266-280 19 Lvrmore-NorCal_U 311 311 Last 281-295 20 Mt_Oso-NorCal_U 311 311 Last 296-310 21 Salinas-NorCal_U 311 311 Last 311-325 22 Pismo-NorCal_U 403 403 Last 326-340 23 SMaria-NorCal_U 403 403 Last 341-355 24 Rita-MtnWest_V 403 403 Last 356-371 25 Park-MtnWest_V 403 403 Last 372-387 26 Meadow-MtnWest_V 403 403 Last 388-403 27 Bullion-NorCal_V - - Last 404-418 28 Sonora-NorCal_V - - Last 419-433 29 Diablo-NorCal_V - - Last 434-448 30 Sac-NorCal_V - - Last 449-463 # Table of contacts. # 1) Contact number: 1-10000 # 2) Name: up to 16 characters, use '_' instead of space # 3) Call type: Group, Private, All # 4) Call ID: 1...16777215 # 5) Call receive tone: -, + # Contact Name Type ID RxTone 1 Local Group 2 - 2 Mtn_West Group 31062 - 3 Mtn_West_1 Group 31063 - 4 SDA Group 310777 - 5 Nor_Cal Group 31068 - 6 Nor_Cal_1 Group 31069 - 7 So_Cal Group 31066 - 8 So_Cal_1 Group 31067 - 9 Ventura_County Group 31070 - 10 Hytera Group 31089 - 11 Reflector_CQ Group 9 - 12 South_West Group 3176 - 13 SNARS Group 31238 - 14 Bridge Group 3100 - 15 TAC_310 Group 310 - 16 California Group 3106 - 17 California_1 Group 31061 - 18 Parrot Private 9990 - 19 North_America Group 93 - 20 World_Wide Group 91 - 21 Area_6 Group 31096 - 22 Contact1 Group 1 - # Table of group lists. # 1) Group list number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of contacts: numbers and ranges (N-M) separated by comma # Grouplist Name Contacts 1 GroupList1 1 # Table of text messages. # 1) Message number: 1-50 # 2) Text: up to 144 characters # Message Text 1 Hello # Unique DMR ID and name of this radio. ID: 1234 Name: - # Text displayed when the radio powers up. Intro Line 1: - Intro Line 2: - dmrconfig-master/examples/md2017-DualHotspot-PNW-2017-07-19.conf000066400000000000000000003735431354060760700237150ustar00rootroot00000000000000# # Configuration generated 2018/11/12 by dmrconfig, version 0.9.193 # Radio: TYT MD-UV380 Last Programmed Date: 2017-07-19 07:09:13 CPS Software Version: V01.16 # Table of digital channels. # 1) Channel number: 1-3000 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Mid, Low # 6) Scan list: - or index in Scanlist table # 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555 # 8) Receive only: -, + # 9) Admit criteria: -, Free, Color # 10) Color code: 0, 1, 2, 3... 15 # 11) Time slot: 1 or 2 # 12) Receive group list: - or index in Grouplist table # 13) Contact for transmit: - or index in Contacts table # Digital Name Receive Transmit Power Scan TOT RO Admit Color Slot RxGL TxContact 171 dSmplx1_441.000 441.000 +0 High - 180 - Color 1 1 - 10 # Simplex_99 172 dSmplx2_446.500 446.500 +0 High - 180 - Color 1 1 - 10 # Simplex_99 173 dSmplx3_446.075 446.075 +0 High - 180 - Color 1 1 - 10 # Simplex_99 174 dSmplx4_433.450 443.450 +0 High - 180 - Color 1 1 - 10 # Simplex_99 175 dSmplx5_145.79 145.790 +0 High - 180 - Color 1 1 - 10 # Simplex_99 176 dSmplx6_145.510 145.510 +0 High - 180 - Color 1 1 1 10 # Simplex_99 177 h1_Local 432.550 +0 Low - 180 - Color 1 1 1 1 # B1_Local 178 m1_Local 438.0125 +0 Low - 180 - Color 1 1 1 1 # B1_Local 179 h2_Local 432.550 +0 Low - 180 - Color 1 1 1 2 # B2_Local 180 m2_Local 438.0125 +0 Low - 180 - Color 1 1 1 2 # B2_Local 181 h8_Regional 432.550 +0 Low - 180 - Color 1 1 1 3 # B8_Regional 182 m8_Regional 438.0125 +0 Low - 180 - Color 1 1 1 3 # B8_Regional 183 h9_Local/Ref 432.550 +0 Low - 180 - Color 1 1 1 4 # B9_Local/Ref 184 m9_Local/Ref 438.0125 +0 Low - 180 - Color 1 1 1 4 # B9_Local/Ref 185 h91_WW 432.550 +0 Low - 180 - Color 1 1 1 6 # B91_WW 186 m91_WW 438.0125 +0 Low - 180 - Color 1 1 1 6 # B91_WW 187 h92_Europe 432.550 +0 Low - 180 - Color 1 1 1 7 # B92_Europe 188 m92_Europe 438.0125 +0 Low - 180 - Color 1 1 1 7 # B92_Europe 189 h93_N_America 432.550 +0 Low - 180 - Color 1 1 1 8 # B93_N_America 190 m93_N_America 438.0125 +0 Low - 180 - Color 1 1 1 8 # B93_N_America 191 h95_Aus/NZ 432.550 +0 Low - 180 - Color 1 1 1 9 # B95_Aus/NZ 192 m95_Aus/NZ 438.0125 +0 Low - 180 - Color 1 1 1 9 # B95_Aus/NZ 193 h202_Greece 432.550 +0 Low - 180 - Color 1 1 1 12 # B202_Greece 194 m202_Greece 438.0125 +0 Low - 180 - Color 1 1 1 12 # B202_Greece 195 h204_Netherland 432.550 +0 Low - 180 - Color 1 1 1 13 # B204_Netherland 196 m204_Netherland 438.0125 +0 Low - 180 - Color 1 1 1 13 # B204_Netherland 197 h206_Belgium 432.550 +0 Low - 180 - Color 1 1 1 14 # B206_Belgium 198 m206_Belgium 438.0125 +0 Low - 180 - Color 1 1 1 14 # B206_Belgium 199 h208_France 432.550 +0 Low - 180 - Color 1 1 1 15 # B208_France 200 m208_France 438.0125 +0 Low - 180 - Color 1 1 1 15 # B208_France 201 h214_Spain 432.550 +0 Low - 180 - Color 1 1 1 16 # B214_Spain 202 m214_Spain 438.0125 +0 Low - 180 - Color 1 1 1 16 # B214_Spain 203 h216_Hungary 432.550 +0 Low - 180 - Color 1 1 1 17 # B216_Hungary 204 m216_Hungary 438.0125 +0 Low - 180 - Color 1 1 1 17 # B216_Hungary 205 h220_Serbia 432.550 +0 Low - 180 - Color 1 1 1 18 # B220_Serbia 206 m220_Serbia 438.0125 +0 Low - 180 - Color 1 1 1 18 # B220_Serbia 207 h222_Italy 432.550 +0 Low - 180 - Color 1 1 1 19 # B222_Italy 208 m222_Italy 438.0125 +0 Low - 180 - Color 1 1 1 19 # B222_Italy 209 h226_Romania 432.550 +0 Low - 180 - Color 1 1 1 20 # B226_Romania 210 m226_Romania 438.0125 +0 Low - 180 - Color 1 1 1 20 # B226_Romania 211 h228_Switzerlnd 432.550 +0 Low - 180 - Color 1 1 1 21 # B228_Switzerland 212 m228_Switzerlnd 438.0125 +0 Low - 180 - Color 1 1 1 21 # B228_Switzerland 213 h230_Czech_Rep 432.550 +0 Low - 180 - Color 1 1 1 22 # B230_Czech_Rep 214 m230_Czech_Rep 438.0125 +0 Low - 180 - Color 1 1 1 22 # B230_Czech_Rep 215 h231_Slovakia 432.550 +0 Low - 180 - Color 1 1 1 23 # B231_Slovakia 216 m231_Slovakia 438.0125 +0 Low - 180 - Color 1 1 1 23 # B231_Slovakia 217 h232_Austria 432.550 +0 Low - 180 - Color 1 1 1 24 # B232_Austria 218 m232_Austria 438.0125 +0 Low - 180 - Color 1 1 1 24 # B232_Austria 219 h235_UK 432.550 +0 Low - 180 - Color 1 1 1 25 # B235_UK 220 m235_UK 438.0125 +0 Low - 180 - Color 1 1 1 25 # B235_UK 221 h238_Denmark 432.550 +0 Low - 180 - Color 1 1 1 26 # B238_Denmark 222 m238_Denmark 438.0125 +0 Low - 180 - Color 1 1 1 26 # B238_Denmark 223 h240_Sweden 432.550 +0 Low - 180 - Color 1 1 1 27 # B240_Sweden 224 m240_Sweden 438.0125 +0 Low - 180 - Color 1 1 1 27 # B240_Sweden 225 h242_Norway 432.550 +0 Low - 180 - Color 1 1 1 28 # B242_Norway 226 m242_Norway 438.0125 +0 Low - 180 - Color 1 1 1 28 # B242_Norway 227 h244_Finland 432.550 +0 Low - 180 - Color 1 1 1 29 # B244_Finland 228 m244_Finland 438.0125 +0 Low - 180 - Color 1 1 1 29 # B244_Finland 229 h255_Ukraine 432.550 +0 Low - 180 - Color 1 1 1 30 # B255_Ukraine 230 m255_Ukraine 438.0125 +0 Low - 180 - Color 1 1 1 30 # B255_Ukraine 231 h260_Poland 432.550 +0 Low - 180 - Color 1 1 1 31 # B260_Poland 232 m260_Poland 438.0125 +0 Low - 180 - Color 1 1 1 31 # B260_Poland 233 h262_Germany 432.550 +0 Low - 180 - Color 1 1 1 32 # B262_Germany 234 m262_Germany 438.0125 +0 Low - 180 - Color 1 1 1 32 # B262_Germany 235 h268_Portugal 432.550 +0 Low - 180 - Color 1 1 1 33 # B268_Portugal 236 m268_Portugal 438.0125 +0 Low - 180 - Color 1 1 1 33 # B268_Portugal 237 h270_Luxembourg 432.550 +0 Low - 180 - Color 1 1 1 34 # B270_Luxembourg 238 m270_Luxembourg 438.0125 +0 Low - 180 - Color 1 1 1 34 # B270_Luxembourg 239 h280_Cyprus 432.550 +0 Low - 180 - Color 1 1 1 35 # B280_Cyprus 240 m280_Cyprus 438.0125 +0 Low - 180 - Color 1 1 1 35 # B280_Cyprus 241 h302_Canada 432.550 +0 Low - 180 - Color 1 1 1 36 # B302_Canada 242 m302_Canada 438.0125 +0 Low - 180 - Color 1 1 1 36 # B302_Canada 243 h310_TAC_310 432.550 +0 Low - 180 - Color 1 1 1 37 # B310_TAC_310 244 m310_TAC_310 438.0125 +0 Low - 180 - Color 1 1 1 37 # B310_TAC_310 245 h311_TAC_311 432.550 +0 Low - 180 - Color 1 1 1 38 # B311_TAC_311 246 m311_TAC_311 438.0125 +0 Low - 180 - Color 1 1 1 38 # B311_TAC_311 247 h312_TAC_312 432.550 +0 Low - 180 - Color 1 1 1 39 # B312_TAC_312 248 m312_TAC_312 438.0125 +0 Low - 180 - Color 1 1 1 39 # B312_TAC_312 249 h313_TAC_313 432.550 +0 Low - 180 - Color 1 1 1 40 # B313_TAC_313 250 m313_TAC_313 438.0125 +0 Low - 180 - Color 1 1 1 40 # B313_TAC_313 251 h314_TAC_314 432.550 +0 Low - 180 - Color 1 1 1 41 # B314_TAC_314 252 m314_TAC_314 438.0125 +0 Low - 180 - Color 1 1 1 41 # B314_TAC_314 253 h315_TAC_315 432.550 +0 Low - 180 - Color 1 1 1 42 # B315_TAC_315 254 m315_TAC_315 438.0125 +0 Low - 180 - Color 1 1 1 42 # B315_TAC_315 255 h316_TAC_316 432.550 +0 Low - 180 - Color 1 1 1 43 # B316_TAC_316 256 m316_TAC_316 438.0125 +0 Low - 180 - Color 1 1 1 43 # B316_TAC_316 257 h317_TAC_317 432.550 +0 Low - 180 - Color 1 1 1 44 # B317_TAC_317 258 m317_TAC_317 438.0125 +0 Low - 180 - Color 1 1 1 44 # B317_TAC_317 259 h318_TAC_318 432.550 +0 Low - 180 - Color 1 1 1 45 # B318_TAC_318 260 m318_TAC_318 438.0125 +0 Low - 180 - Color 1 1 1 45 # B318_TAC_318 261 h319_TAC_319 432.550 +0 Low - 180 - Color 1 1 1 46 # B319_TAC_319 262 m319_TAC_319 438.0125 +0 Low - 180 - Color 1 1 1 46 # B319_TAC_319 263 h334_XE_Mexico 432.550 +0 Low - 180 - Color 1 1 1 47 # B334_XE_Mexico 264 m334_XE_Mexico 438.0125 +0 Low - 180 - Color 1 1 1 48 # B358_St_Lucia 265 h358_St_Lucia 432.550 +0 Low - 180 - Color 1 1 1 48 # B358_St_Lucia 266 m358_St_Lucia 438.0125 +0 Low - 180 - Color 1 1 1 48 # B358_St_Lucia 267 h374_Trinidad/T 432.550 +0 Low - 180 - Color 1 1 1 49 # B374_Trinidad/T 268 m374_Trinidad/T 438.0125 +0 Low - 180 - Color 1 1 1 49 # B374_Trinidad/T 269 h425_Israel 432.550 +0 Low - 180 - Color 1 1 1 50 # B425_Israel 270 m425_Israel 438.0125 +0 Low - 180 - Color 1 1 1 50 # B425_Israel 271 h450_S_Korea 432.550 +0 Low - 180 - Color 1 1 1 51 # B450_South_Korea 272 m450_S_Korea 438.0125 +0 Low - 180 - Color 1 1 1 51 # B450_South_Korea 273 h454_China 432.550 +0 Low - 180 - Color 1 1 1 52 # B454_China 274 m454_China 438.0125 +0 Low - 180 - Color 1 1 1 52 # B454_China 275 h505_Australia 432.550 +0 Low - 180 - Color 1 1 1 53 # B505_Australia 276 m505_Australia 438.0125 +0 Low - 180 - Color 1 1 1 53 # B505_Australia 277 h520_Thailand 432.550 +0 Low - 180 - Color 1 1 1 54 # B520_Thailand 278 m520_Thailand 438.0125 +0 Low - 180 - Color 1 1 1 54 # B520_Thailand 279 h655_S_Africa 432.550 +0 Low - 180 - Color 1 1 1 55 # B655_S_Africa 280 m655_S_Africa 438.0125 +0 Low - 180 - Color 1 1 1 55 # B655_S_Africa 281 h714_Panama 432.550 +0 Low - 180 - Color 1 1 1 56 # B714_Panama 282 m714_Panama 438.0125 +0 Low - 180 - Color 1 1 1 56 # B714_Panama 283 h724_Brazil 432.550 +0 Low - 180 - Color 1 1 1 57 # B724_Brazil 284 m724_Brazil 438.0125 +0 Low - 180 - Color 1 1 1 57 # B724_Brazil 285 h730_Chile 432.550 +0 Low - 180 - Color 1 1 1 58 # B730_Chile 286 m730_Chile 438.0125 +0 Low - 180 - Color 1 1 1 58 # B730_Chile 287 h734_Venezuela 432.550 +0 Low - 180 - Color 1 1 1 59 # B734_Venezuela 288 m734_Venezuela 438.0125 +0 Low - 180 - Color 1 1 1 59 # B734_Venezuela 289 h748_Uruguay 432.550 +0 Low - 180 - Color 1 1 1 60 # B748_Uruguay 290 m748_Uruguay 438.0125 +0 Low - 180 - Color 1 1 1 60 # B748_Uruguay 291 h899_Rptr_Test 432.550 +0 Low - 180 - Color 1 1 1 61 # B899_Rptr_Test 292 m899_Rptr_Test 438.0125 +0 Low - 180 - Color 1 1 1 61 # B899_Rptr_Test 293 h907_JOTA 432.550 +0 Low - 180 - Color 1 1 1 62 # B907_JOTA 294 m907_JOTA 438.0125 +0 Low - 180 - Color 1 1 1 62 # B907_JOTA 295 h910_German 432.550 +0 Low - 180 - Color 1 1 1 63 # B910_German 296 m910_German 438.0125 +0 Low - 180 - Color 1 1 1 63 # B910_German 297 h913_English 432.550 +0 Low - 180 - Color 1 1 1 64 # B913_English 298 m913_English 438.0125 +0 Low - 180 - Color 1 1 1 64 # B913_English 299 h914_Spanish 432.550 +0 Low - 180 - Color 1 1 1 65 # B914_Spanish 300 m914_Spanish 438.0125 +0 Low - 180 - Color 1 1 1 65 # B914_Spanish 301 h915_Portuguese 432.550 +0 Low - 180 - Color 1 1 1 66 # B915_Portuguese 302 m915_Portuguese 438.0125 +0 Low - 180 - Color 1 1 1 66 # B915_Portuguese 303 h918_YOTA 432.550 +0 Low - 180 - Color 1 1 1 67 # B918_YOTA 304 m918_YOTA 438.0125 +0 Low - 180 - Color 1 1 1 67 # B918_YOTA 305 h920_DL/OE/HB9 432.550 +0 Low - 180 - Color 1 1 1 68 # B920_DL/OE/HB9 306 m920_DL/OE/HB9 438.0125 +0 Low - 180 - Color 1 1 1 68 # B920_DL/OE/HB9 307 h922_Dutch 432.550 +0 Low - 180 - Color 1 1 1 69 # B922_Dutch 308 m922_Dutch 438.0125 +0 Low - 180 - Color 1 1 1 69 # B922_Dutch 309 h923_Euro_Eng 432.550 +0 Low - 180 - Color 1 1 1 70 # B923_Euro_Eng 310 m923_Euro_Eng 438.0125 +0 Low - 180 - Color 1 1 1 70 # B923_Euro_Eng 311 h927_Nordic 432.550 +0 Low - 180 - Color 1 1 1 71 # B927_Nordic 312 m927_Nordic 438.0125 +0 Low - 180 - Color 1 1 1 71 # B927_Nordic 313 h930_PanHellen 432.550 +0 Low - 180 - Color 1 1 1 72 # B930_PanHellenic 314 m930_PanHellen 438.0125 +0 Low - 180 - Color 1 1 1 72 # B930_PanHellenic 315 h937_Francophon 432.550 +0 Low - 180 - Color 1 1 1 73 # B937_Francophon 316 m937_Francophon 438.0125 +0 Low - 180 - Color 1 1 1 73 # B937_Francophon 317 h955_WWYL 432.550 +0 Low - 180 - Color 1 1 1 74 # B955_WWYL 318 m955_WWYL 438.0125 +0 Low - 180 - Color 1 1 1 74 # B955_WWYL 319 h1776_USA 432.550 +0 Low - 180 - Color 1 1 1 75 # B1776_USA 320 m1776_USA 438.0125 +0 Low - 180 - Color 1 1 1 75 # B1776_USA 321 h2021_Greece_R1 432.550 +0 Low - 180 - Color 1 1 1 76 # B2021_Greece_R1 322 m2021_Greece_R1 438.0125 +0 Low - 180 - Color 1 1 1 76 # B2021_Greece_R1 323 h2022_Greece_R2 432.550 +0 Low - 180 - Color 1 1 1 77 # B2022_Greece_R2 324 m2022_Greece_R2 438.0125 +0 Low - 180 - Color 1 1 1 77 # B2022_Greece_R2 325 h2023_Greece_R3 432.550 +0 Low - 180 - Color 1 1 1 78 # B2023_Greece_R3 326 m2023_Greece_R3 438.0125 +0 Low - 180 - Color 1 1 1 78 # B2023_Greece_R3 327 h2024_Greece_R4 432.550 +0 Low - 180 - Color 1 1 1 79 # B2024_Greece_R4 328 m2024_Greece_R4 438.0125 +0 Low - 180 - Color 1 1 1 79 # B2024_Greece_R4 329 h2025_Greece_R5 432.550 +0 Low - 180 - Color 1 1 1 80 # B2025_Greece_R5 330 m2025_Greece_R5 438.0125 +0 Low - 180 - Color 1 1 1 80 # B2025_Greece_R5 331 h2026_Greece_R6 432.550 +0 Low - 180 - Color 1 1 1 81 # B2026_Greece_R6 332 m2026_Greece_R6 438.0125 +0 Low - 180 - Color 1 1 1 81 # B2026_Greece_R6 333 h2027_Greece_R7 432.550 +0 Low - 180 - Color 1 1 1 82 # B2027_Greece_R7 334 m2027_Greece_R7 438.0125 +0 Low - 180 - Color 1 1 1 82 # B2027_Greece_R7 335 h2028_Greece_R8 432.550 +0 Low - 180 - Color 1 1 1 84 # B2029_Greece_R9 336 m2028_Greece_R8 438.0125 +0 Low - 180 - Color 1 1 1 83 # B2028_Greece_R8 337 h2029_Greece_R9 432.550 +0 Low - 180 - Color 1 1 1 84 # B2029_Greece_R9 338 m2029_Greece_R9 438.0125 +0 Low - 180 - Color 1 1 1 84 # B2029_Greece_R9 339 h2041_North_NL 432.550 +0 Low - 180 - Color 1 1 1 85 # B2041_North_NL 340 m2041_North_NL 438.0125 +0 Low - 180 - Color 1 1 1 85 # B2041_North_NL 341 h2042_Mid_NL 432.550 +0 Low - 180 - Color 1 1 1 86 # B2042_Mid_NL 342 m2042_Mid_NL 438.0125 +0 Low - 180 - Color 1 1 1 86 # B2042_Mid_NL 343 h2043_South_NL 432.550 +0 Low - 180 - Color 1 1 1 87 # B2043_South_NL 344 m2043_South_NL 438.0125 +0 Low - 180 - Color 1 1 1 87 # B2043_South_NL 345 h2044_East_NL 432.550 +0 Low - 180 - Color 1 1 1 88 # B2044_East_NL 346 m2044_East_NL 438.0125 +0 Low - 180 - Color 1 1 1 88 # B2044_East_NL 347 h2045_NL_TechT 432.550 +0 Low - 180 - Color 1 1 1 89 # B2045_NL_TechTlk 348 m2045_NL_TechT 438.0125 +0 Low - 180 - Color 1 1 1 89 # B2045_NL_TechTlk 349 h2061_BE_North 432.550 +0 Low - 180 - Color 1 1 1 90 # B2061_BE_North 350 m2061_BE_North 438.0125 +0 Low - 180 - Color 1 1 1 90 # B2061_BE_North 351 h2062_BE_South 432.550 +0 Low - 180 - Color 1 1 1 91 # B2062_BE_South 352 m2062_BE_South 438.0125 +0 Low - 180 - Color 1 1 1 91 # B2062_BE_South 353 h2063_BE_East 432.550 +0 Low - 180 - Color 1 1 1 92 # B2063_BE_East 354 m2063_BE_East 438.0125 +0 Low - 180 - Color 1 1 1 92 # B2063_BE_East 355 h2064_BE_TAC4 432.550 +0 Low - 180 - Color 1 1 1 93 # B2064_BE_TAC4 356 m2064_BE_TAC4 438.0125 +0 Low - 180 - Color 1 1 1 93 # B2064_BE_TAC4 357 h2065_BE_TAC5 432.550 +0 Low - 180 - Color 1 1 1 94 # B2065_BE_TAC5 358 m2065_BE_TAC5 438.0125 +0 Low - 180 - Color 1 1 1 94 # B2065_BE_TAC5 359 h2066_BE_TAC6 432.550 +0 Low - 180 - Color 1 1 1 95 # B2066_BE_TAC6 360 m2066_BE_TAC6 438.0125 +0 Low - 180 - Color 1 1 1 95 # B2066_BE_TAC6 361 h2067_BE_TAC7 432.550 +0 Low - 180 - Color 1 1 1 96 # B2067_BE_TAC7 362 m2067_BE_TAC7 438.0125 +0 Low - 180 - Color 1 1 1 96 # B2067_BE_TAC7 363 h2068_BE_TAC8 432.550 +0 Low - 180 - Color 1 1 1 97 # B2068_BE_TAC8 364 m2068_BE_TAC8 438.0125 +0 Low - 180 - Color 1 1 1 97 # B2068_BE_TAC8 365 h2069_BE_TAC9 432.550 +0 Low - 180 - Color 1 1 1 98 # B2069_BE_TAC9 366 m2069_BE_TAC9 438.0125 +0 Low - 180 - Color 1 1 1 98 # B2069_BE_TAC9 367 h2080_FR_ile_de 432.550 +0 Low - 180 - Color 1 1 1 99 # B2080_FR_ile_de 368 m2080_FR_ile_de 438.0125 +0 Low - 180 - Color 1 1 1 99 # B2080_FR_ile_de 369 h2081_FR_Med1 432.550 +0 Low - 180 - Color 1 1 1 100 # B2081_FR_Med_1 370 m2081_FR_Med1 438.0125 +0 Low - 180 - Color 1 1 1 100 # B2081_FR_Med_1 371 h2082_FR_Alpes2 432.550 +0 Low - 180 - Color 1 1 1 101 # B2082_FR_Alpes_2 372 m2082_FR_Alpes2 438.0125 +0 Low - 180 - Color 1 1 1 101 # B2082_FR_Alpes_2 373 h2083_FR_Pyren3 432.550 +0 Low - 180 - Color 1 1 1 102 # B2083_FR_Pyren_3 374 m2083_FR_Pyren3 438.0125 +0 Low - 180 - Color 1 1 1 102 # B2083_FR_Pyren_3 375 h2084_FR_East4 432.550 +0 Low - 180 - Color 1 1 1 103 # B2084_FR_East_4 376 m2084_FR_East4 438.0125 +0 Low - 180 - Color 1 1 1 103 # B2084_FR_East_4 377 h2085_FR_West5 432.550 +0 Low - 180 - Color 1 1 1 104 # B2085_FR_West_5 378 m2085_FR_West5 438.0125 +0 Low - 180 - Color 1 1 1 104 # B2085_FR_West_5 379 h2086_FR_Atlan6 432.550 +0 Low - 180 - Color 1 1 1 105 # B2086_FR_Atlan_6 380 m2086_FR_Atlan6 438.0125 +0 Low - 180 - Color 1 1 1 105 # B2086_FR_Atlan_6 381 h2087_FR_North7 432.550 +0 Low - 180 - Color 1 1 1 106 # B2087_FR_North_7 382 m2087_FR_North7 438.0125 +0 Low - 180 - Color 1 1 1 106 # B2087_FR_North_7 383 h2088_FR_Centr8 432.550 +0 Low - 180 - Color 1 1 1 107 # B2088_FR_Centr_8 384 m2088_FR_Centr8 438.0125 +0 Low - 180 - Color 1 1 1 107 # B2088_FR_Centr_8 385 h2089_FR_DOMTOM 432.550 +0 Low - 180 - Color 1 1 1 108 # B2089_FR_DOM-TOM 386 m2089_FR_DOMTOM 438.0125 +0 Low - 180 - Color 1 1 1 108 # B2089_FR_DOM-TOM 387 h2141_EA_1 432.550 +0 Low - 180 - Color 1 1 1 109 # B2141_EA_1 388 m2141_EA_1 438.0125 +0 Low - 180 - Color 1 1 1 109 # B2141_EA_1 389 h2142_EA_2 432.550 +0 Low - 180 - Color 1 1 1 110 # B2142_EA2 390 m2142_EA_2 438.0125 +0 Low - 180 - Color 1 1 1 110 # B2142_EA2 391 h2143_EA_3 432.550 +0 Low - 180 - Color 1 1 1 111 # B2143_EA3 392 m2143_EA_3 438.0125 +0 Low - 180 - Color 1 1 1 111 # B2143_EA3 393 h2144_EA_4 432.550 +0 Low - 180 - Color 1 1 1 112 # B2144_EA4 394 m2144_EA_4 438.0125 +0 Low - 180 - Color 1 1 1 112 # B2144_EA4 395 h2145_EA_5 432.550 +0 Low - 180 - Color 1 1 1 113 # B2145_EA5 396 m2145_EA_5 438.0125 +0 Low - 180 - Color 1 1 1 113 # B2145_EA5 397 h2146_EA_6 432.550 +0 Low - 180 - Color 1 1 1 114 # B2146_EA6 398 m2146_EA_6 438.0125 +0 Low - 180 - Color 1 1 1 114 # B2146_EA6 399 h2147_EA_7 432.550 +0 Low - 180 - Color 1 1 1 115 # B2147_EA7 400 m2147_EA_7 438.0125 +0 Low - 180 - Color 1 1 1 115 # B2147_EA7 401 h2148_EA_8 432.550 +0 Low - 180 - Color 1 1 1 116 # B2148_EA8 402 m2148_EA_8 438.0125 +0 Low - 180 - Color 1 1 1 116 # B2148_EA8 403 h2149_EA_9 432.550 +0 Low - 180 - Color 1 1 1 117 # B2149_EA9 404 m2149_EA_9 438.0125 +0 Low - 180 - Color 1 1 1 117 # B2149_EA9 405 h2161_HU_East 432.550 +0 Low - 180 - Color 1 1 1 118 # B2161_HU_East 406 m2161_HU_East 438.0125 +0 Low - 180 - Color 1 1 1 118 # B2161_HU_East 407 h2162_HU_West 432.550 +0 Low - 180 - Color 1 1 1 119 # B2162_HU_West 408 m2162_HU_West 438.0125 +0 Low - 180 - Color 1 1 1 119 # B2162_HU_West 409 h2163_HU_North 432.550 +0 Low - 180 - Color 1 1 1 120 # B2163_HU_North 410 m2163_HU_North 438.0125 +0 Low - 180 - Color 1 1 1 120 # B2163_HU_North 411 h2164_HU_South 432.550 +0 Low - 180 - Color 1 1 1 121 # B2164_HU_South 412 m2164_HU_South 438.0125 +0 Low - 180 - Color 1 1 1 121 # B2164_HU_South 413 h2165_HU_Test 432.550 +0 Low - 180 - Color 1 1 1 122 # B2165_HU_Test 414 m2165_HU_Test 438.0125 +0 Low - 180 - Color 1 1 1 122 # B2165_HU_Test 415 h2169_Local_Rpt 432.550 +0 Low - 180 - Color 1 1 1 123 # B2169_Local_Rptr 416 m2169_Local_Rpt 438.0125 +0 Low - 180 - Color 1 1 1 123 # B2169_Local_Rptr 417 h2280_CH_Deutsc 432.550 +0 Low - 180 - Color 1 1 1 124 # B2280_CH_Deutsch 418 m2280_CH_Deutsc 438.0125 +0 Low - 180 - Color 1 1 1 124 # B2280_CH_Deutsch 419 h2281_CH_Romand 432.550 +0 Low - 180 - Color 1 1 1 125 # B2281_CH_Romande 420 m2281_CH_Romand 438.0125 +0 Low - 180 - Color 1 1 1 125 # B2281_CH_Romande 421 h2282_CH_Valais 432.550 +0 Low - 180 - Color 1 1 1 126 # B2282_CH_Valais 422 m2282_CH_Valais 438.0125 +0 Low - 180 - Color 1 1 1 126 # B2282_CH_Valais 423 h2283_CH_Bern 432.550 +0 Low - 180 - Color 1 1 1 127 # B2283_CH_Bern 424 m2283_CH_Bern 438.0125 +0 Low - 180 - Color 1 1 1 127 # B2283_CH_Bern 425 h2284_CH_Basel 432.550 +0 Low - 180 - Color 1 1 1 128 # B2284_CH_Basel 426 m2284_CH_Basel 438.0125 +0 Low - 180 - Color 1 1 1 128 # B2284_CH_Basel 427 h2285_CH_Aargau 432.550 +0 Low - 180 - Color 1 1 1 129 # B2285_CH_Aargau 428 m2285_CH_Aargau 438.0125 +0 Low - 180 - Color 1 1 1 129 # B2285_CH_Aargau 429 h2286_CH_Ticino 432.550 +0 Low - 180 - Color 1 1 1 130 # B2286_CH_Ticino 430 m2286_CH_Ticino 438.0125 +0 Low - 180 - Color 1 1 1 130 # B2286_CH_Ticino 431 h2287_CH_Graubu 432.550 +0 Low - 180 - Color 1 1 1 131 # B2287_CH_Graubue 432 m2287_CH_Graubu 438.0125 +0 Low - 180 - Color 1 1 1 131 # B2287_CH_Graubue 433 h2288_CH_Zurich 432.550 +0 Low - 180 - Color 1 1 1 132 # B2288_CH_Zurich 434 m2288_CH_Zurich 438.0125 +0 Low - 180 - Color 1 1 1 132 # B2288_CH_Zurich 435 h2289_CH_Ost 432.550 +0 Low - 180 - Color 1 1 1 133 # B2289_CH_Ost 436 m2289_CH_Ost 438.0125 +0 Low - 180 - Color 1 1 1 133 # B2289_CH_Ost 437 h2300_Czech_Xcn 432.550 +0 Low - 180 - Color 1 1 1 134 # B2300_Czech_Xcon 438 m2300_Czech_Xcn 438.0125 +0 Low - 180 - Color 1 1 1 134 # B2300_Czech_Xcon 439 h2301_Bohemia 432.550 +0 Low - 180 - Color 1 1 1 135 # B2301_Bohemia 440 m2301_Bohemia 438.0125 +0 Low - 180 - Color 1 1 1 135 # B2301_Bohemia 441 h2302_Moravia 432.550 +0 Low - 180 - Color 1 1 1 136 # B2302_Moravia 442 m2302_Moravia 438.0125 +0 Low - 180 - Color 1 1 1 136 # B2302_Moravia 443 h2311_Slovakia 432.550 +0 Low - 180 - Color 1 1 1 137 # B2311_Slovakia 444 m2311_Slovakia 438.0125 +0 Low - 180 - Color 1 1 1 137 # B2311_Slovakia 445 h2320_AT_Master 432.550 +0 Low - 180 - Color 1 1 1 138 # B2320_AT_Master 446 m2320_AT_Master 438.0125 +0 Low - 180 - Color 1 1 1 138 # B2320_AT_Master 447 h2321_AT_Wien 432.550 +0 Low - 180 - Color 1 1 1 139 # B2321_AT_Wien 448 m2321_AT_Wien 438.0125 +0 Low - 180 - Color 1 1 1 139 # B2321_AT_Wien 449 h2322_AT_Slzbrg 432.550 +0 Low - 180 - Color 1 1 1 140 # B2322_AT_Salzbrg 450 m2322_AT_Slzbrg 438.0125 +0 Low - 180 - Color 1 1 1 140 # B2322_AT_Salzbrg 451 h2323_AT_Nieder 432.550 +0 Low - 180 - Color 1 1 1 141 # B2323_AT_Nieder 452 m2323_AT_Nieder 438.0125 +0 Low - 180 - Color 1 1 1 141 # B2323_AT_Nieder 453 h2324_AT_Burgnl 432.550 +0 Low - 180 - Color 1 1 1 142 # B2324_AT_Burgenl 454 m2324_AT_Burgnl 438.0125 +0 Low - 180 - Color 1 1 1 142 # B2324_AT_Burgenl 455 h2325_AT_Ober 432.550 +0 Low - 180 - Color 1 1 1 143 # B2325_AT_Ober 456 m2325_AT_Ober 438.0125 +0 Low - 180 - Color 1 1 1 143 # B2325_AT_Ober 457 h2326_AT_Steier 432.550 +0 Low - 180 - Color 1 1 1 144 # B2326_AT_Steier 458 m2326_AT_Steier 438.0125 +0 Low - 180 - Color 1 1 1 144 # B2326_AT_Steier 459 h2327_AT_Tirol 432.550 +0 Low - 180 - Color 1 1 1 145 # B2327_AT_Tirol 460 m2327_AT_Tirol 438.0125 +0 Low - 180 - Color 1 1 1 145 # B2327_AT_Tirol 461 h2328_AT_Kaernt 432.550 +0 Low - 180 - Color 1 1 1 146 # B2328_AT_Kaerntn 462 m2328_AT_Kaernt 438.0125 +0 Low - 180 - Color 1 1 1 146 # B2328_AT_Kaerntn 463 h2329_AT_Vorarl 432.550 +0 Low - 180 - Color 1 1 1 147 # B2329_AT_Vorarlb 464 m2329_AT_Vorarl 438.0125 +0 Low - 180 - Color 1 1 1 147 # B2329_AT_Vorarlb 465 h2350_UK_4400 432.550 +0 Low - 180 - Color 1 1 1 148 # B2350_UK_4400 466 m2350_UK_4400 438.0125 +0 Low - 180 - Color 1 1 1 148 # B2350_UK_4400 467 h2351_UK_Chat 432.550 +0 Low - 180 - Color 1 1 1 149 # B2351_UK_Chat 468 m2351_UK_Chat 438.0125 +0 Low - 180 - Color 1 1 1 149 # B2351_UK_Chat 469 h2352_UK_Chat 432.550 +0 Low - 180 - Color 1 1 1 150 # B2352_UK_Chat 470 m2352_UK_Chat 438.0125 +0 Low - 180 - Color 1 1 1 150 # B2352_UK_Chat 471 h2353_UK_Chat 432.550 +0 Low - 180 - Color 1 1 1 151 # B2353_UK_Chat 472 m2353_UK_Chat 438.0125 +0 Low - 180 - Color 1 1 1 151 # B2353_UK_Chat 473 h2354_Ireland 432.550 +0 Low - 180 - Color 1 1 1 152 # B2354_Ireland 474 m2354_Ireland 438.0125 +0 Low - 180 - Color 1 1 1 152 # B2354_Ireland 475 h2355_Scotland 432.550 +0 Low - 180 - Color 1 1 1 153 # B2355_Scotland 476 m2355_Scotland 438.0125 +0 Low - 180 - Color 1 1 1 153 # B2355_Scotland 477 h2357_Wales 432.550 +0 Low - 180 - Color 1 1 1 154 # B2357_Wales 478 m2357_Wales 438.0125 +0 Low - 180 - Color 1 1 1 154 # B2357_Wales 479 h2381_DK_North 432.550 +0 Low - 180 - Color 1 1 1 155 # B2381_DK_North 480 m2381_DK_North 438.0125 +0 Low - 180 - Color 1 1 1 155 # B2381_DK_North 481 h2382_DK_Mid 432.550 +0 Low - 180 - Color 1 1 1 156 # B2382_DK_Mid 482 m2382_DK_Mid 438.0125 +0 Low - 180 - Color 1 1 1 156 # B2382_DK_Mid 483 h2383_DK_South 432.550 +0 Low - 180 - Color 1 1 1 157 # B2383_DK_South 484 m2383_DK_South 438.0125 +0 Low - 180 - Color 1 1 1 157 # B2383_DK_South 485 h2384_DK_Copenh 432.550 +0 Low - 180 - Color 1 1 1 158 # B2384_DK_Copenha 486 m2384_DK_Copenh 438.0125 +0 Low - 180 - Color 1 1 1 158 # B2384_DK_Copenha 487 h2385_DK_Sjaell 432.550 +0 Low - 180 - Color 1 1 1 159 # B2385_DK_Sjaella 488 m2385_DK_Sjaell 438.0125 +0 Low - 180 - Color 1 1 1 159 # B2385_DK_Sjaella 489 h2386_DK_Chat 432.550 +0 Low - 180 - Color 1 1 1 160 # B2386_DK_Chat 490 m2386_DK_Chat 438.0125 +0 Low - 180 - Color 1 1 1 160 # B2386_DK_Chat 491 h2387_DK_Chat 432.550 +0 Low - 180 - Color 1 1 1 161 # B2387_DK_Chat 492 m2387_DK_Chat 438.0125 +0 Low - 180 - Color 1 1 1 161 # B2387_DK_Chat 493 h2388_DK_D-Star 432.550 +0 Low - 180 - Color 1 1 1 162 # B2388_DK_D-Star 494 m2388_DK_D-Star 438.0125 +0 Low - 180 - Color 1 1 1 162 # B2388_DK_D-Star 495 h2389_DK_WiresX 432.550 +0 Low - 180 - Color 1 1 1 163 # B2389_DK_WiresX 496 m2389_DK_WiresX 438.0125 +0 Low - 180 - Color 1 1 1 163 # B2389_DK_WiresX 497 h2400_SM_Reg_0 432.550 +0 Low - 180 - Color 1 1 1 164 # B2400_SM_Region0 498 m2400_SM_Reg_0 438.0125 +0 Low - 180 - Color 1 1 1 164 # B2400_SM_Region0 499 h2401_SM_Reg_1 432.550 +0 Low - 180 - Color 1 1 1 165 # B2401_SM_Region1 500 m2401_SM_Reg_1 438.0125 +0 Low - 180 - Color 1 1 1 165 # B2401_SM_Region1 501 h2402_SM_Reg_2 432.550 +0 Low - 180 - Color 1 1 1 166 # B2402_SM_Region2 502 m2402_SM_Reg_2 438.0125 +0 Low - 180 - Color 1 1 1 166 # B2402_SM_Region2 503 h2403_SM_Reg_3 432.550 +0 Low - 180 - Color 1 1 1 167 # B2403_SM_Region3 504 m2403_SM_Reg_3 438.0125 +0 Low - 180 - Color 1 1 1 167 # B2403_SM_Region3 505 h2404_SM_Reg_4 432.550 +0 Low - 180 - Color 1 1 1 168 # B2404_SM_Region4 506 m2404_SM_Reg_4 438.0125 +0 Low - 180 - Color 1 1 1 168 # B2404_SM_Region4 507 h2405_SM_Reg_5 432.550 +0 Low - 180 - Color 1 1 1 169 # B2405_SM_Region5 508 m2405_SM_Reg_5 438.0125 +0 Low - 180 - Color 1 1 1 169 # B2405_SM_Region5 509 h2406_SM_Reg_6 432.550 +0 Low - 180 - Color 1 1 1 170 # B2406_SM_Region6 510 m2406_SM_Reg_6 438.0125 +0 Low - 180 - Color 1 1 1 170 # B2406_SM_Region6 511 h2407_SM_Reg_7 432.550 +0 Low - 180 - Color 1 1 1 171 # B2407_SM_Region7 512 m2407_SM_Reg_7 438.0125 +0 Low - 180 - Color 1 1 1 171 # B2407_SM_Region7 513 h2411_SM_TAC 432.550 +0 Low - 180 - Color 1 1 1 172 # B2411_SM_TAC 514 m2411_SM_TAC 438.0125 +0 Low - 180 - Color 1 1 1 172 # B2411_SM_TAC 515 h2415_XRF699N 432.550 +0 Low - 180 - Color 1 1 1 173 # B2415_XRF699N 516 m2415_XRF699N 438.0125 +0 Low - 180 - Color 1 1 1 173 # B2415_XRF699N 517 h2440_OH_Reg_0 432.550 +0 Low - 180 - Color 1 1 1 174 # B2440_OH_Region0 518 m2440_OH_Reg_0 438.0125 +0 Low - 180 - Color 1 1 1 174 # B2440_OH_Region0 519 h2441_OH_Reg_1 432.550 +0 Low - 180 - Color 1 1 1 175 # B2441_OH_Region1 520 m2441_OH_Reg_1 438.0125 +0 Low - 180 - Color 1 1 1 175 # B2441_OH_Region1 521 h2442_OH_Reg_2 432.550 +0 Low - 180 - Color 1 1 1 176 # B2442_OH_Region2 522 m2442_OH_Reg_2 438.0125 +0 Low - 180 - Color 1 1 1 176 # B2442_OH_Region2 523 h2443_OH_Reg_3 432.550 +0 Low - 180 - Color 1 1 1 177 # B2443_OH_Region3 524 m2443_OH_Reg_3 438.0125 +0 Low - 180 - Color 1 1 1 177 # B2443_OH_Region3 525 h2444_OH_Reg_4 432.550 +0 Low - 180 - Color 1 1 1 178 # B2444_OH_Region4 526 m2444_OH_Reg_4 438.0125 +0 Low - 180 - Color 1 1 1 178 # B2444_OH_Region4 527 h2445_OH_Reg_5 432.550 +0 Low - 180 - Color 1 1 1 181 # B2447_OH_Region7 528 m2445_OH_Reg_5 438.0125 +0 Low - 180 - Color 1 1 1 179 # B2445_OH_Region5 529 h2446_OH_Reg_6 432.550 +0 Low - 180 - Color 1 1 1 180 # B2446_OH_Region6 530 m2446_OH_Reg_6 438.0125 +0 Low - 180 - Color 1 1 1 180 # B2446_OH_Region6 531 h2447_OH_Reg_7 432.550 +0 Low - 180 - Color 1 1 1 181 # B2447_OH_Region7 532 m2447_OH_Reg_7 438.0125 +0 Low - 180 - Color 1 1 1 181 # B2447_OH_Region7 533 h2448_OH_Reg_8 432.550 +0 Low - 180 - Color 1 1 1 182 # B2448_OH_Region8 534 m2448_OH_Reg_8 438.0125 +0 Low - 180 - Color 1 1 1 182 # B2448_OH_Region8 535 h2449_OH_Reg_9 432.550 +0 Low - 180 - Color 1 1 1 183 # B2449_OH_Region9 536 m2449_OH_Reg_9 438.0125 +0 Low - 180 - Color 1 1 1 183 # B2449_OH_Region9 537 h2501_RU_Global 432.550 +0 Low - 180 - Color 1 1 1 184 # B2501_RU_Global 538 m2501_RU_Global 438.0125 +0 Low - 180 - Color 1 1 1 184 # B2501_RU_Global 539 h2502_XRF250A_B 432.550 +0 Low - 180 - Color 1 1 1 185 # B2502_XRF250A_Br 540 m2502_XRF250A_B 438.0125 +0 Low - 180 - Color 1 1 1 185 # B2502_XRF250A_Br 541 h2503_DSTAR-SU 432.550 +0 Low - 180 - Color 1 1 1 186 # B2503_DSTAR-SU 542 m2503_DSTAR-SU 438.0125 +0 Low - 180 - Color 1 1 1 186 # B2503_DSTAR-SU 543 h2555_UA_Bridge 432.550 +0 Low - 180 - Color 1 1 1 187 # B2555_UA_Bridge 544 m2555_UA_Bridge 438.0125 +0 Low - 180 - Color 1 1 1 187 # B2555_UA_Bridge 545 h2559_UA_Emerg 432.550 +0 Low - 180 - Color 1 1 1 188 # B2559_UA_Emergen 546 m2559_UA_Emerg 438.0125 +0 Low - 180 - Color 1 1 1 188 # B2559_UA_Emergen 547 h2620_Sachsen 432.550 +0 Low - 180 - Color 1 1 1 189 # B2620_DE_Sachsen 548 m2620_Sachsen 438.0125 +0 Low - 180 - Color 1 1 1 189 # B2620_DE_Sachsen 549 h2621_DE_Berlin 432.550 +0 Low - 180 - Color 1 1 1 190 # B2621_DE_Berlin 550 m2621_DE_Berlin 438.0125 +0 Low - 180 - Color 1 1 1 190 # B2621_DE_Berlin 551 h2622_DE_Hambrg 432.550 +0 Low - 180 - Color 1 1 1 191 # B2622_DE_Hamburg 552 m2622_DE_Hambrg 438.0125 +0 Low - 180 - Color 1 1 1 191 # B2622_DE_Hamburg 553 h2623_DE_Bremen 432.550 +0 Low - 180 - Color 1 1 1 192 # B2623_DE_Bremen 554 m2623_DE_Bremen 438.0125 +0 Low - 180 - Color 1 1 1 192 # B2623_DE_Bremen 555 h2624_DE_Nordrh 432.550 +0 Low - 180 - Color 1 1 1 193 # B2624_DE_Nordrhe 556 m2624_DE_Nordrh 438.0125 +0 Low - 180 - Color 1 1 1 193 # B2624_DE_Nordrhe 557 h2625_DE_Rheinl 432.550 +0 Low - 180 - Color 1 1 1 194 # B2625_DE_Rheinla 558 m2625_DE_Rheinl 438.0125 +0 Low - 180 - Color 1 1 1 194 # B2625_DE_Rheinla 559 h2626_DE_Hessen 432.550 +0 Low - 180 - Color 1 1 1 195 # B2626_DE_Hessen 560 m2626_DE_Hessen 438.0125 +0 Low - 180 - Color 1 1 1 195 # B2626_DE_Hessen 561 h2627_DE_BadnWu 432.550 +0 Low - 180 - Color 1 1 1 196 # B2627_DE_BadenWu 562 m2627_DE_BadnWu 438.0125 +0 Low - 180 - Color 1 1 1 196 # B2627_DE_BadenWu 563 h2628_DE_Bayern 432.550 +0 Low - 180 - Color 1 1 1 197 # B2628_DE_Bayern 564 m2628_DE_Bayern 438.0125 +0 Low - 180 - Color 1 1 1 197 # B2628_DE_Bayern 565 h2629_DE_Sachsn 432.550 +0 Low - 180 - Color 1 1 1 198 # B2629_DE_Sachsen 566 m2629_DE_Sachsn 438.0125 +0 Low - 180 - Color 1 1 1 198 # B2629_DE_Sachsen 567 h2681_PT_North 432.550 +0 Low - 180 - Color 1 1 1 199 # B2681_PT_North 568 m2681_PT_North 438.0125 +0 Low - 180 - Color 1 1 1 199 # B2681_PT_North 569 h2682_PT_Center 432.550 +0 Low - 180 - Color 1 1 1 200 # B2682_PT_Center 570 m2682_PT_Center 438.0125 +0 Low - 180 - Color 1 1 1 200 # B2682_PT_Center 571 h2683_PT_Capita 432.550 +0 Low - 180 - Color 1 1 1 201 # B2683_PT_Capital 572 m2683_PT_Capita 438.0125 +0 Low - 180 - Color 1 1 1 201 # B2683_PT_Capital 573 h2684_PT_South 432.550 +0 Low - 180 - Color 1 1 1 202 # B2684_PT_South 574 m2684_PT_South 438.0125 +0 Low - 180 - Color 1 1 1 202 # B2684_PT_South 575 h2685_PT_Algarv 432.550 +0 Low - 180 - Color 1 1 1 203 # B2685_PT_Algarve 576 m2685_PT_Algarv 438.0125 +0 Low - 180 - Color 1 1 1 203 # B2685_PT_Algarve 577 h2686_PT_Azores 432.550 +0 Low - 180 - Color 1 1 1 204 # B2686_PT_Azores 578 m2686_PT_Azores 438.0125 +0 Low - 180 - Color 1 1 1 204 # B2686_PT_Azores 579 h2687_PT_Madeir 432.550 +0 Low - 180 - Color 1 1 1 205 # B2687_PT_Madeira 580 m2687_PT_Madeir 438.0125 +0 Low - 180 - Color 1 1 1 205 # B2687_PT_Madeira 581 h2802_CY_Nicosi 432.550 +0 Low - 180 - Color 1 1 1 206 # B2802_CY_Nicosia 582 m2802_CY_Nicosi 438.0125 +0 Low - 180 - Color 1 1 1 206 # B2802_CY_Nicosia 583 h2803_CY_Famagu 432.550 +0 Low - 180 - Color 1 1 1 207 # B2803_CY_Famagus 584 m2803_CY_Famagu 438.0125 +0 Low - 180 - Color 1 1 1 207 # B2803_CY_Famagus 585 h2804_CY_Larnac 432.550 +0 Low - 180 - Color 1 1 1 208 # B2804_CY_Larnaca 586 m2804_CY_Larnac 438.0125 +0 Low - 180 - Color 1 1 1 208 # B2804_CY_Larnaca 587 h2805_CY_Limass 432.550 +0 Low - 180 - Color 1 1 1 209 # B2805_CY_Limasso 588 m2805_CY_Limass 438.0125 +0 Low - 180 - Color 1 1 1 209 # B2805_CY_Limasso 589 h2806_CY_Paphos 432.550 +0 Low - 180 - Color 1 1 1 210 # B2806_CY_Paphos 590 m2806_CY_Paphos 438.0125 +0 Low - 180 - Color 1 1 1 210 # B2806_CY_Paphos 591 h2807_CY_Kyreni 432.550 +0 Low - 180 - Color 1 1 1 211 # B2807_CY_Kyrenia 592 m2807_CY_Kyreni 438.0125 +0 Low - 180 - Color 1 1 1 211 # B2807_CY_Kyrenia 593 h3026_CA_Englsh 432.550 +0 Low - 180 - Color 1 1 1 212 # B3026_CA_English 594 m3026_CA_Englsh 438.0125 +0 Low - 180 - Color 1 1 1 212 # B3026_CA_English 595 h3027_CA_French 432.550 +0 Low - 180 - Color 1 1 1 213 # B3027_CA_French 596 m3027_CA_French 438.0125 +0 Low - 180 - Color 1 1 1 213 # B3027_CA_French 597 h3100_USA-wide 432.550 +0 Low - 180 - Color 1 1 1 214 # B3100_USA-wide 598 m3100_USA-wide 438.0125 +0 Low - 180 - Color 1 1 1 214 # B3100_USA-wide 599 h3101_AL_State 432.550 +0 Low - 180 - Color 1 1 1 215 # B3101_AL_State 600 m3101_AL_State 438.0125 +0 Low - 180 - Color 1 1 1 215 # B3101_AL_State 601 h3102_AK_State 432.550 +0 Low - 180 - Color 1 1 1 216 # B3102_AK_State 602 m3102_AK_State 438.0125 +0 Low - 180 - Color 1 1 1 216 # B3102_AK_State 603 h3104_AZ_State 432.550 +0 Low - 180 - Color 1 1 1 217 # B3104_AZ_State 604 m3104_AZ_State 438.0125 +0 Low - 180 - Color 1 1 1 217 # B3104_AZ_State 605 h3106_CA_State 432.550 +0 Low - 180 - Color 1 1 1 218 # B3106_CA_State 606 m3106_CA_State 438.0125 +0 Low - 180 - Color 1 1 1 218 # B3106_CA_State 607 h3108_CO_State 432.550 +0 Low - 180 - Color 1 1 1 219 # B3108_CO_State 608 m3108_CO_State 438.0125 +0 Low - 180 - Color 1 1 1 219 # B3108_CO_State 609 h3109_CT_State 432.550 +0 Low - 180 - Color 1 1 1 220 # B3109_CT_State 610 m3109_CT_State 438.0125 +0 Low - 180 - Color 1 1 1 220 # B3109_CT_State 611 h3110_DE_State 432.550 +0 Low - 180 - Color 1 1 1 221 # B3110_DE_State 612 m3110_DE_State 438.0125 +0 Low - 180 - Color 1 1 1 221 # B3110_DE_State 613 h3111_Wash_D.C. 432.550 +0 Low - 180 - Color 1 1 1 222 # B3111_Wash_D.C. 614 m3111_Wash_D.C. 438.0125 +0 Low - 180 - Color 1 1 1 222 # B3111_Wash_D.C. 615 h3112_FL_State 432.550 +0 Low - 180 - Color 1 1 1 223 # B3112_FL_State 616 m3112_FL_State 438.0125 +0 Low - 180 - Color 1 1 1 223 # B3112_FL_State 617 h3113_GA_State 432.550 +0 Low - 180 - Color 1 1 1 224 # B3113_GA_State 618 m3113_GA_State 438.0125 +0 Low - 180 - Color 1 1 1 224 # B3113_GA_State 619 h3115_HI_State 432.550 +0 Low - 180 - Color 1 1 1 225 # B3115_HI_State 620 m3115_HI_State 438.0125 +0 Low - 180 - Color 1 1 1 225 # B3115_HI_State 621 h3116_ID_State 432.550 +0 Low - 180 - Color 1 1 1 226 # B3116_ID_State 622 m3116_ID_State 438.0125 +0 Low - 180 - Color 1 1 1 226 # B3116_ID_State 623 h3117_IL_State 432.550 +0 Low - 180 - Color 1 1 1 227 # B3117_IL_State 624 m3117_IL_State 438.0125 +0 Low - 180 - Color 1 1 1 227 # B3117_IL_State 625 h3118_IN_State 432.550 +0 Low - 180 - Color 1 1 1 228 # B3118_IN_State 626 m3118_IN_State 438.0125 +0 Low - 180 - Color 1 1 1 228 # B3118_IN_State 627 h3119_IA_State 432.550 +0 Low - 180 - Color 1 1 1 229 # B3119_IA_State 628 m3119_IA_State 438.0125 +0 Low - 180 - Color 1 1 1 229 # B3119_IA_State 629 h3120_KS_State 432.550 +0 Low - 180 - Color 1 1 1 230 # B3120_KS_State 630 m3120_KS_State 438.0125 +0 Low - 180 - Color 1 1 1 230 # B3120_KS_State 631 h3121_KY_State 432.550 +0 Low - 180 - Color 1 1 1 231 # B3121_KY_State 632 m3121_KY_State 438.0125 +0 Low - 180 - Color 1 1 1 231 # B3121_KY_State 633 h3122_LA_State 432.550 +0 Low - 180 - Color 1 1 1 232 # B3122_LA_State 634 m3122_LA_State 438.0125 +0 Low - 180 - Color 1 1 1 232 # B3122_LA_State 635 h3123_ME_State 432.550 +0 Low - 180 - Color 1 1 1 233 # B3123_ME_State 636 m3123_ME_State 438.0125 +0 Low - 180 - Color 1 1 1 233 # B3123_ME_State 637 h3124_MD_State 432.550 +0 Low - 180 - Color 1 1 1 234 # B3124_MD_State 638 m3124_MD_State 438.0125 +0 Low - 180 - Color 1 1 1 234 # B3124_MD_State 639 h3125_MA_State 432.550 +0 Low - 180 - Color 1 1 1 235 # B3125_MA_State 640 m3125_MA_State 438.0125 +0 Low - 180 - Color 1 1 1 235 # B3125_MA_State 641 h3126_MI_State 432.550 +0 Low - 180 - Color 1 1 1 236 # B3126_MI_State 642 m3126_MI_State 438.0125 +0 Low - 180 - Color 1 1 1 236 # B3126_MI_State 643 h3127_MN_State 432.550 +0 Low - 180 - Color 1 1 1 237 # B3127_MN_State 644 m3127_MN_State 438.0125 +0 Low - 180 - Color 1 1 1 237 # B3127_MN_State 645 h3128_MS_State 432.550 +0 Low - 180 - Color 1 1 1 238 # B3128_MS_State 646 m3128_MS_State 438.0125 +0 Low - 180 - Color 1 1 1 238 # B3128_MS_State 647 h3129_MO_State 432.550 +0 Low - 180 - Color 1 1 1 239 # B3129_MO_State 648 m3129_MO_State 438.0125 +0 Low - 180 - Color 1 1 1 239 # B3129_MO_State 649 h3130_MT_State 432.550 +0 Low - 180 - Color 1 1 1 240 # B3130_MT_State 650 m3130_MT_State 438.0125 +0 Low - 180 - Color 1 1 1 240 # B3130_MT_State 651 h3131_NE_State 432.550 +0 Low - 180 - Color 1 1 1 241 # B3131_NE_State 652 m3131_NE_State 438.0125 +0 Low - 180 - Color 1 1 1 241 # B3131_NE_State 653 h3132_NV_State 432.550 +0 Low - 180 - Color 1 1 1 242 # B3132_NV_State 654 m3132_NV_State 438.0125 +0 Low - 180 - Color 1 1 1 242 # B3132_NV_State 655 h3133_NH_State 432.550 +0 Low - 180 - Color 1 1 1 243 # B3133_NH_State 656 m3133_NH_State 438.0125 +0 Low - 180 - Color 1 1 1 243 # B3133_NH_State 657 h3134_NJ_State 432.550 +0 Low - 180 - Color 1 1 1 244 # B3134_NJ_State 658 m3134_NJ_State 438.0125 +0 Low - 180 - Color 1 1 1 244 # B3134_NJ_State 659 h3135_NM_State 432.550 +0 Low - 180 - Color 1 1 1 245 # B3135_NM_State 660 m3135_NM_State 438.0125 +0 Low - 180 - Color 1 1 1 245 # B3135_NM_State 661 h3136_NY_State 432.550 +0 Low - 180 - Color 1 1 1 246 # B3136_NY_State 662 m3136_NY_State 438.0125 +0 Low - 180 - Color 1 1 1 246 # B3136_NY_State 663 h3137_NC_State 432.550 +0 Low - 180 - Color 1 1 1 247 # B3137_NC_State 664 m3137_NC_State 438.0125 +0 Low - 180 - Color 1 1 1 247 # B3137_NC_State 665 h3138_ND_State 432.550 +0 Low - 180 - Color 1 1 1 248 # B3138_ND_State 666 m3138_ND_State 438.0125 +0 Low - 180 - Color 1 1 1 248 # B3138_ND_State 667 h3139_OH_State 432.550 +0 Low - 180 - Color 1 1 1 249 # B3139_OH_State 668 m3139_OH_State 438.0125 +0 Low - 180 - Color 1 1 1 249 # B3139_OH_State 669 h3140_OK_State 432.550 +0 Low - 180 - Color 1 1 1 250 # B3140_OK_State 670 m3140_OK_State 438.0125 +0 Low - 180 - Color 1 1 1 250 # B3140_OK_State 671 h3141_OR_State 432.550 +0 Low - 180 - Color 1 1 1 251 # B3141_OR_State 672 m3141_OR_State 438.0125 +0 Low - 180 - Color 1 1 1 251 # B3141_OR_State 673 h3142_PA_State 432.550 +0 Low - 180 - Color 1 1 1 252 # B3142_PA_State 674 m3142_PA_State 438.0125 +0 Low - 180 - Color 1 1 1 252 # B3142_PA_State 675 h3144_RI_State 432.550 +0 Low - 180 - Color 1 1 1 253 # B3144_RI_State 676 m3144_RI_State 438.0125 +0 Low - 180 - Color 1 1 1 253 # B3144_RI_State 677 h3145_SC_State 432.550 +0 Low - 180 - Color 1 1 1 254 # B3145_SC_State 678 m3145_SC_State 438.0125 +0 Low - 180 - Color 1 1 1 254 # B3145_SC_State 679 h3146_SD_State 432.550 +0 Low - 180 - Color 1 1 1 255 # B3146_SD_State 680 m3146_SD_State 438.0125 +0 Low - 180 - Color 1 1 1 255 # B3146_SD_State 681 h3147_TN_State 432.550 +0 Low - 180 - Color 1 1 1 256 # B3147_TN_State 682 m3147_TN_State 438.0125 +0 Low - 180 - Color 1 1 1 256 # B3147_TN_State 683 h3148_TX_State 432.550 +0 Low - 180 - Color 1 1 1 257 # B3148_TX_State 684 m3148_TX_State 438.0125 +0 Low - 180 - Color 1 1 1 257 # B3148_TX_State 685 h3149_UT_State 432.550 +0 Low - 180 - Color 1 1 1 258 # B3149_UT_State 686 m3149_UT_State 438.0125 +0 Low - 180 - Color 1 1 1 258 # B3149_UT_State 687 h3150_VT_State 432.550 +0 Low - 180 - Color 1 1 1 259 # B3150_VT_State 688 m3150_VT_State 438.0125 +0 Low - 180 - Color 1 1 1 259 # B3150_VT_State 689 h3151_VA_State 432.550 +0 Low - 180 - Color 1 1 1 260 # B3151_VA_State 690 m3151_VA_State 438.0125 +0 Low - 180 - Color 1 1 1 260 # B3151_VA_State 691 h3153_WA_State 432.550 +0 Low - 180 - Color 1 1 1 261 # B3153_WA_State 692 m3153_WA_State 438.0125 +0 Low - 180 - Color 1 1 1 261 # B3153_WA_State 693 h3154_WV_State 432.550 +0 Low - 180 - Color 1 1 1 262 # B3154_WV_State 694 m3154_WV_State 438.0125 +0 Low - 180 - Color 1 1 1 262 # B3154_WV_State 695 h3155_WI_State 432.550 +0 Low - 180 - Color 1 1 1 263 # B3155_WI_State 696 m3155_WI_State 438.0125 +0 Low - 180 - Color 1 1 1 263 # B3155_WI_State 697 h3156_WY_State 432.550 +0 Low - 180 - Color 1 1 1 264 # B3156_WY_State 698 m3156_WY_State 438.0125 +0 Low - 180 - Color 1 1 1 264 # B3156_WY_State 699 h3167_Allstar 432.550 +0 Low - 180 - Color 1 1 1 270 # B3167_Allstar 700 m3167_Allstar 438.0125 +0 Low - 180 - Color 1 1 1 270 # B3167_Allstar 701 h3169_Midwest 432.550 +0 Low - 180 - Color 1 1 1 272 # B3169_Midwest 702 m3169_Midwest 438.0125 +0 Low - 180 - Color 1 1 1 272 # B3169_Midwest 703 h3171_NoCo 432.550 +0 Low - 180 - Color 1 1 1 273 # B3171_NoCo 704 m3171_NoCo 438.0125 +0 Low - 180 - Color 1 1 1 273 # B3171_NoCo 705 h3172_Northeast 432.550 +0 Low - 180 - Color 1 1 1 274 # B3172_Northeast 706 m3172_Northeast 438.0125 +0 Low - 180 - Color 1 1 1 274 # B3172_Northeast 707 h3173_Mid-Atlan 432.550 +0 Low - 180 - Color 1 1 1 275 # B3173_Mid-Atlant 708 m3173_Mid-Atlan 438.0125 +0 Low - 180 - Color 1 1 1 275 # B3173_Mid-Atlant 709 h3174_Southeast 432.550 +0 Low - 180 - Color 1 1 1 276 # B3174_Southeast 710 m3174_Southeast 438.0125 +0 Low - 180 - Color 1 1 1 276 # B3174_Southeast 711 h3175_S_Plains 432.550 +0 Low - 180 - Color 1 1 1 277 # B3175_S_Plains 712 m3175_S_Plains 438.0125 +0 Low - 180 - Color 1 1 1 277 # B3175_S_Plains 713 h3176_Southwest 432.550 +0 Low - 180 - Color 1 1 1 278 # B3176_Southwest 714 m3176_Southwest 438.0125 +0 Low - 180 - Color 1 1 1 278 # B3176_Southwest 715 h3177_Mountain 432.550 +0 Low - 180 - Color 1 1 1 279 # B3177_Mountain 716 m3177_Mountain 438.0125 +0 Low - 180 - Color 1 1 1 279 # B3177_Mountain 717 h3185_CACTUS 432.550 +0 Low - 180 - Color 1 1 1 282 # B3185_CACTUS 718 m3185_CACTUS 438.0125 +0 Low - 180 - Color 1 1 1 282 # B3185_CACTUS 719 h3341_XE_TAC_1 432.550 +0 Low - 180 - Color 1 1 1 284 # B3341_XE_TAC_1 720 m3341_XE_TAC_1 438.0125 +0 Low - 180 - Color 1 1 1 284 # B3341_XE_TAC_1 721 h3342_XE_TAC_2 432.550 +0 Low - 180 - Color 1 1 1 285 # B3342_XE_TAC_2 722 m3342_XE_TAC_2 438.0125 +0 Low - 180 - Color 1 1 1 285 # B3342_XE_TAC_2 723 h3343_XE_TAC_3 432.550 +0 Low - 180 - Color 1 1 1 286 # B3343_XE_TAC_3 724 m3343_XE_TAC_3 438.0125 +0 Low - 180 - Color 1 1 1 286 # B3343_XE_TAC_3 725 h3740_REACT 432.550 +0 Low - 180 - Color 1 1 1 287 # B3740_REACT 726 m3740_REACT 438.0125 +0 Low - 180 - Color 1 1 1 287 # B3740_REACT 727 h3741_TT_Woodbr 432.550 +0 Low - 180 - Color 1 1 1 288 # B3741_TT_Woodbro 728 m3741_TT_Woodbr 438.0125 +0 Low - 180 - Color 1 1 1 288 # B3741_TT_Woodbro 729 h3742_TT_PtOfS 432.550 +0 Low - 180 - Color 1 1 1 289 # B3742_TT_Pt_of_S 730 m3742_TT_PtOfS 438.0125 +0 Low - 180 - Color 1 1 1 289 # B3742_TT_Pt_of_S 731 h3743_TT_S_Fern 432.550 +0 Low - 180 - Color 1 1 1 290 # B3743_TT_S_Ferna 732 m3743_TT_S_Fern 438.0125 +0 Low - 180 - Color 1 1 1 290 # B3743_TT_S_Ferna 733 h3744_TT_Tobago 432.550 +0 Low - 180 - Color 1 1 1 291 # B3744_TT_Tobago 734 m3744_TT_Tobago 438.0125 +0 Low - 180 - Color 1 1 1 291 # B3744_TT_Tobago 735 h4000_Disconnec 432.550 +0 Low - 180 - Color 1 1 1 292 # B4000_Disconnect 736 m4000_Disconnec 438.0125 +0 Low - 180 - Color 1 1 1 292 # B4000_Disconnect 737 h5000_Refl_Info 432.550 +0 Low - 180 - Color 1 1 1 293 # B5000_Refl_Info 738 m5000_Refl_Info 438.0125 +0 Low - 180 - Color 1 1 1 293 # B5000_Refl_Info 739 h5050_AU_XRF500 432.550 +0 Low - 180 - Color 1 1 1 294 # B5050_AU_XRF500_ 740 m5050_AU_XRF500 438.0125 +0 Low - 180 - Color 1 1 1 294 # B5050_AU_XRF500_ 741 h5051_AU_Capital 432.550 +0 Low - 180 - Color 1 1 1 295 # B5051_AU_Capital 742 m5051_AU_Capital 438.0125 +0 Low - 180 - Color 1 1 1 295 # B5051_AU_Capital 743 h5052_AU_New_S_W 432.550 +0 Low - 180 - Color 1 1 1 296 # B5052_AU_New_S_W 744 m5052_AU_New_S_W 438.0125 +0 Low - 180 - Color 1 1 1 291 # B3744_TT_Tobago 745 h5053_AU_Victori 432.550 +0 Low - 180 - Color 1 1 1 297 # B5053_AU_Victori 746 m5053_AU_Victori 438.0125 +0 Low - 180 - Color 1 1 1 297 # B5053_AU_Victori 747 h5054_AU_Queensl 432.550 +0 Low - 180 - Color 1 1 1 298 # B5054_AU_Queensl 748 m5054_AU_Queensl 438.0125 +0 Low - 180 - Color 1 1 1 297 # B5053_AU_Victori 749 h5055_AU_South 432.550 +0 Low - 180 - Color 1 1 1 299 # B5055_AU_South 750 m5055_AU_South 438.0125 +0 Low - 180 - Color 1 1 1 299 # B5055_AU_South 751 h5056_AU_West 432.550 +0 Low - 180 - Color 1 1 1 300 # B5056_AU_West 752 m5056_AU_West 438.0125 +0 Low - 180 - Color 1 1 1 300 # B5056_AU_West 753 h5057_AU_Tasmani 432.550 +0 Low - 180 - Color 1 1 1 301 # B5057_AU_Tasmani 754 m5057_AU_Tasmani 438.0125 +0 Low - 180 - Color 1 1 1 301 # B5057_AU_Tasmani 755 h5058_AU_North 432.550 +0 Low - 180 - Color 1 1 1 302 # B5058_AU_North 756 m5058_AU_North 438.0125 +0 Low - 180 - Color 1 1 1 302 # B5058_AU_North 757 h5059_AU_YSF001 432.550 +0 Low - 180 - Color 1 1 1 303 # B5059_AU_YSF001 758 m5059_AU_YSF001 438.0125 +0 Low - 180 - Color 1 1 1 303 # B5059_AU_YSF001 759 h7141_PA_P_City 432.550 +0 Low - 180 - Color 1 1 1 304 # B7141_PA_P_City 760 m7141_PA_P_City 438.0125 +0 Low - 180 - Color 1 1 1 304 # B7141_PA_P_City 761 h7142_PA_Colon 432.550 +0 Low - 180 - Color 1 1 1 305 # B7142_PA_Colon 762 m7142_PA_Colon 438.0125 +0 Low - 180 - Color 1 1 1 305 # B7142_PA_Colon 763 h7143_PA_WiresX 432.550 +0 Low - 180 - Color 1 1 1 306 # B7143_PA_WiresX 764 m7143_PA_WiresX 438.0125 +0 Low - 180 - Color 1 1 1 306 # B7143_PA_WiresX 765 h7300_CL_CE0 432.550 +0 Low - 180 - Color 1 1 1 307 # B7300_CL_CE0 766 m7300_CL_CE0 438.0125 +0 Low - 180 - Color 1 1 1 307 # B7300_CL_CE0 767 h7301_CL_CE1 432.550 +0 Low - 180 - Color 1 1 1 308 # B7301_CL_CE1 768 m7301_CL_CE1 438.0125 +0 Low - 180 - Color 1 1 1 308 # B7301_CL_CE1 769 h7302_CL_CE2 432.550 +0 Low - 180 - Color 1 1 1 309 # B7302_CL_CE2 770 m7302_CL_CE2 438.0125 +0 Low - 180 - Color 1 1 1 309 # B7302_CL_CE2 771 h7303_CL_CE3 432.550 +0 Low - 180 - Color 1 1 1 310 # B7303_CL_CE3 772 m7303_CL_CE3 438.0125 +0 Low - 180 - Color 1 1 1 310 # B7303_CL_CE3 773 h7304_CL_CE4 432.550 +0 Low - 180 - Color 1 1 1 311 # B7304_CL_CE4 774 m7304_CL_CE4 438.0125 +0 Low - 180 - Color 1 1 1 311 # B7304_CL_CE4 775 h7305_CL_CE5 432.550 +0 Low - 180 - Color 1 1 1 312 # B7305_CL_CE5 776 m7305_CL_CE5 438.0125 +0 Low - 180 - Color 1 1 1 312 # B7305_CL_CE5 777 h7306_CL_CE6 432.550 +0 Low - 180 - Color 1 1 1 313 # B7306_CL_CE6 778 m7306_CL_CE6 438.0125 +0 Low - 180 - Color 1 1 1 313 # B7306_CL_CE6 779 h7307_CL_CE7 432.550 +0 Low - 180 - Color 1 1 1 314 # B7307_CL_CE7 780 m7307_CL_CE7 438.0125 +0 Low - 180 - Color 1 1 1 314 # B7307_CL_CE7 781 h7308_CL_CE8 432.550 +0 Low - 180 - Color 1 1 1 315 # B7308_CL_CE8 782 m7308_CL_CE8 438.0125 +0 Low - 180 - Color 1 1 1 315 # B7308_CL_CE8 783 h7309_CL_CE9 432.550 +0 Low - 180 - Color 1 1 1 316 # B7309_CL_CE9 784 m7309_CL_CE9 438.0125 +0 Low - 180 - Color 1 1 1 316 # B7309_CL_CE9 785 h8951_BM_TAC_1 432.550 +0 Low - 180 - Color 1 1 1 317 # B8951_BM_TAC_1 786 m8951_BM_TAC_1 438.0125 +0 Low - 180 - Color 1 1 1 317 # B8951_BM_TAC_1 787 h8952_BM_TAC_2 432.550 +0 Low - 180 - Color 1 1 1 318 # B8952_BM_TAC_2 788 m8952_BM_TAC_2 438.0125 +0 Low - 180 - Color 1 1 1 318 # B8952_BM_TAC_2 789 h8953_BM_TAC_3 432.550 +0 Low - 180 - Color 1 1 1 319 # B8953_BM_TAC_3 790 m8953_BM_TAC_3 438.0125 +0 Low - 180 - Color 1 1 1 319 # B8953_BM_TAC_3 791 h8954_BM_TAC_4 432.550 +0 Low - 180 - Color 1 1 1 320 # B8954_BM_TAC_4 792 m8954_BM_TAC_4 438.0125 +0 Low - 180 - Color 1 1 1 320 # B8954_BM_TAC_4 793 h8955_BM_TAC_5 432.550 +0 Low - 180 - Color 1 1 1 321 # B8955_BM_TAC_5 794 m8955_BM_TAC_5 438.0125 +0 Low - 180 - Color 1 1 1 321 # B8955_BM_TAC_5 795 h8956__BM_TAC_6 432.550 +0 Low - 180 - Color 1 1 1 322 # B8956_BM_TAC_6 796 m8956_BM_TAC_6 438.0125 +0 Low - 180 - Color 1 1 1 322 # B8956_BM_TAC_6 797 h8957_BM_TAC_7 432.550 +0 Low - 180 - Color 1 1 1 323 # B8957_BM_TAC_7 798 m8957_BM_TAC_7 438.0125 +0 Low - 180 - Color 1 1 1 323 # B8957_BM_TAC_7 799 h8958_BM_TAC_8 432.550 +0 Low - 180 - Color 1 1 1 324 # B8958_BM_TAC_8 800 m8958_BM_TAC_8 438.0125 +0 Low - 180 - Color 1 1 1 324 # B8958_BM_TAC_8 801 h8959_BM_TAC_9 432.550 +0 Low - 180 - Color 1 1 1 325 # B8959_BM_TAC_9 802 m8959_BM_TAC_9 438.0125 +0 Low - 180 - Color 1 1 1 325 # B8959_BM_TAC_9 803 h9112_EMCOM_EU 432.550 +0 Low - 180 - Color 1 1 1 326 # B9112_Emcom_EU 804 m9112_EMCOM_EU 438.0125 +0 Low - 180 - Color 1 1 1 326 # B9112_Emcom_EU 805 h9911_EMCOM_US 432.550 +0 Low - 180 - Color 1 1 1 327 # B9911_Emcom_US 806 m9911_EMCOM_US 438.0125 +0 Low - 180 - Color 1 1 1 327 # B9911_Emcom_US 807 h9990_Parrot 432.550 +0 Low - 180 - Color 1 1 1 328 # B9990_Parrot 808 m9990_Parrot 438.0125 +0 Low - 180 - Color 1 1 1 328 # B9990_Parrot 809 h26200_DE_TAC_1 432.550 +0 Low - 180 - Color 1 1 1 331 # B26200_DE_TAC_1 810 m26200_DE_TAC_1 438.0125 +0 Low - 180 - Color 1 1 1 331 # B26200_DE_TAC_1 811 h26223_DE_Chaos 432.550 +0 Low - 180 - Color 1 1 1 332 # B26223_DE_Chaos 812 m26223_DE_Chaos 438.0125 +0 Low - 180 - Color 1 1 1 332 # B26223_DE_Chaos 813 h26299_DE_TAC_2 432.550 +0 Low - 180 - Color 1 1 1 333 # B26299_DE_TAC_2 814 m26299_DE_TAC_2 438.0125 +0 Low - 180 - Color 1 1 1 333 # B26299_DE_TAC_2 815 h31061_Cal_1 432.550 +0 Low - 180 - Color 1 1 1 334 # B31061_Cal_1 816 m31061_Cal_1 438.0125 +0 Low - 180 - Color 1 1 1 334 # B31061_Cal_1 817 h31062_Mtn_West 432.550 +0 Low - 180 - Color 1 1 1 335 # B31062_Mtn_West 818 m31062_Mtn_West 438.0125 +0 Low - 180 - Color 1 1 1 335 # B31062_Mtn_West 819 h31063_Mtn_West1 432.550 +0 Low - 180 - Color 1 1 1 336 # B31063_Mtn_West1 820 m31063_Mtn_West1 438.0125 +0 Low - 180 - Color 1 1 1 336 # B31063_Mtn_West1 821 h31065_NorCal_A* 432.550 +0 Low - 180 - Color 1 1 1 337 # B31065_NorCal_A* 822 m31065_NorCal_A* 438.0125 +0 Low - 180 - Color 1 1 1 337 # B31065_NorCal_A* 823 h31066_SoCal 432.550 +0 Low - 180 - Color 1 1 1 338 # B31066_SoCal 824 m31066_SoCal 438.0125 +0 Low - 180 - Color 1 1 1 338 # B31066_SoCal 825 h31067_SoCal_1 432.550 +0 Low - 180 - Color 1 1 1 339 # B31067_SoCal_1 826 m31067_SoCal_1 438.0125 +0 Low - 180 - Color 1 1 1 339 # B31067_SoCal_1 827 h31068_NorCal 432.550 +0 Low - 180 - Color 1 1 1 340 # B31068_NorCal 828 m31068_NorCal 438.0125 +0 Low - 180 - Color 1 1 1 340 # B31068_NorCal 829 h31069_NorCal_1 432.550 +0 Low - 180 - Color 1 1 1 341 # B31069_NorCal_1 830 m31069_NorCal_1 438.0125 +0 Low - 180 - Color 1 1 1 341 # B31069_NorCal_1 831 h31078_PAPA_XLX 432.550 +0 Low - 180 - Color 1 1 1 342 # B31078_PAPA_XLX 832 m31078_PAPA_XLX 438.0125 +0 Low - 180 - Color 1 1 1 342 # B31078_PAPA_XLX 833 h31089_Hytera_US 432.550 +0 Low - 180 - Color 1 1 1 343 # B31089_Hytera_US 834 m31089_Hytera_US 438.0125 +0 Low - 180 - Color 1 1 1 343 # B31089_Hytera_US 835 h31090_US_Area_0 432.550 +0 Low - 180 - Color 1 1 1 344 # B31090_US_Area_0 836 m31090_US_Area_0 438.0125 +0 Low - 180 - Color 1 1 1 344 # B31090_US_Area_0 837 h31091_US_Area_1 432.550 +0 Low - 180 - Color 1 1 1 345 # B31091_US_Area_1 838 m31091_US_Area_1 438.0125 +0 Low - 180 - Color 1 1 1 345 # B31091_US_Area_1 839 h31092_US_Area_2 432.550 +0 Low - 180 - Color 1 1 1 346 # B31092_US_Area_2 840 m31092_US_Area_2 438.0125 +0 Low - 180 - Color 1 1 1 346 # B31092_US_Area_2 841 h31093_US_Area_3 432.550 +0 Low - 180 - Color 1 1 1 347 # B31093_US_Area_3 842 m31093_US_Area_3 438.0125 +0 Low - 180 - Color 1 1 1 347 # B31093_US_Area_3 843 h31094_US_Area_4 432.550 +0 Low - 180 - Color 1 1 1 348 # B31094_US_Area_4 844 m31094_US_Area_4 438.0125 +0 Low - 180 - Color 1 1 1 348 # B31094_US_Area_4 845 h31095_US_Area_5 432.550 +0 Low - 180 - Color 1 1 1 349 # B31095_US_Area_5 846 m31095_US_Area_5 438.0125 +0 Low - 180 - Color 1 1 1 349 # B31095_US_Area_5 847 h31096_US_Area_6 432.550 +0 Low - 180 - Color 1 1 1 350 # B31096_US_Area_6 848 m31096_US_Area_6 438.0125 +0 Low - 180 - Color 1 1 1 350 # B31096_US_Area_6 849 h31097_US_Area_7 432.550 +0 Low - 180 - Color 1 1 1 351 # B31097_US_Area_7 850 m31097_US_Area_7 438.0125 +0 Low - 180 - Color 1 1 1 351 # B31097_US_Area_7 851 h31098_US_Area_8 432.550 +0 Low - 180 - Color 1 1 1 352 # B31098_US_Area_8 852 m31098_US_Area_8 438.0125 +0 Low - 180 - Color 1 1 1 352 # B31098_US_Area_8 853 h31099_US_Area_9 432.550 +0 Low - 180 - Color 1 1 1 353 # B31099_US_Area_9 854 m31099_US_Area_9 438.0125 +0 Low - 180 - Color 1 1 1 353 # B31099_US_Area_9 855 h31120_FL_TAC 432.550 +0 Low - 180 - Color 1 1 1 354 # B31120_FL_TAC 856 m31120_FL_TAC 438.0125 +0 Low - 180 - Color 1 1 1 354 # B31120_FL_TAC 857 h31121_FL_FCDMR 432.550 +0 Low - 180 - Color 1 1 1 355 # B31121_FL_FCDMR 858 m31121_FL_FCDMR 438.0125 +0 Low - 180 - Color 1 1 1 355 # B31121_FL_FCDMR 859 h31122_FL_WC 432.550 +0 Low - 180 - Color 1 1 1 356 # B31122_FL_WC 860 m31122_FL_WC 438.0125 +0 Low - 180 - Color 1 1 1 356 # B31122_FL_WC 861 h31123_FL_TreasC 432.550 +0 Low - 180 - Color 1 1 1 357 # B31123_FL_TreasC 862 m31123_FL_TreasC 438.0125 +0 Low - 180 - Color 1 1 1 357 # B31123_FL_TreasC 863 h31124_FL_SE 432.550 +0 Low - 180 - Color 1 1 1 358 # B31124_FL_SE 864 m31124_FL_SE 438.0125 +0 Low - 180 - Color 1 1 1 358 # B31124_FL_SE 865 h31125_FL_Disney 432.550 +0 Low - 180 - Color 1 1 1 359 # B31125_FL_Disney 866 m31125_FL_Disney 438.0125 +0 Low - 180 - Color 1 1 1 359 # B31125_FL_Disney 867 h31127_FL_MNDMR 432.550 +0 Low - 180 - Color 1 1 1 360 # B31127_FL_MNDMR 868 m31127_FL_MNDMR 438.0125 +0 Low - 180 - Color 1 1 1 360 # B31127_FL_MNDMR 869 h31131_GA_Atlant 432.550 +0 Low - 180 - Color 1 1 1 361 # B31131_GA_Atlant 870 m31131_GA_Atlant 438.0125 +0 Low - 180 - Color 1 1 1 361 # B31131_GA_Atlant 871 h31151_HI_Maui 432.550 +0 Low - 180 - Color 1 1 1 362 # B31151_HI_Maui 872 m31151_HI_Maui 438.0125 +0 Low - 180 - Color 1 1 1 362 # B31151_HI_Maui 873 h31152_HI_Honolu 432.550 +0 Low - 180 - Color 1 1 1 363 # B31152_HI_Honolu 874 m31152_HI_Honolu 438.0125 +0 Low - 180 - Color 1 1 1 363 # B31152_HI_Honolu 875 h31153_HI_Hawaii 432.550 +0 Low - 180 - Color 1 1 1 364 # B31153_HI_Hawaii 876 m31153_HI_Hawaii 438.0125 +0 Low - 180 - Color 1 1 1 364 # B31153_HI_Hawaii 877 h31154_HI_Kauai 432.550 +0 Low - 180 - Color 1 1 1 365 # B31154_HI_Kauai 878 m31154_HI_Kauai 438.0125 +0 Low - 180 - Color 1 1 1 365 # B31154_HI_Kauai 879 h31160_ID_ARES 432.550 +0 Low - 180 - Color 1 1 1 366 # B31160_ID_ARES 880 m31160_ID_ARES 438.0125 +0 Low - 180 - Color 1 1 1 366 # B31160_ID_ARES 881 h31171_IL_CHI-Ne 432.550 +0 Low - 180 - Color 1 1 1 367 # B31171_IL_CHI-Ne 882 m31171_IL_CHI-Ne 438.0125 +0 Low - 180 - Color 1 1 1 367 # B31171_IL_CHI-Ne 883 h31189_IN_Cross 432.550 +0 Low - 180 - Color 1 1 1 368 # B31189_IN_Cross 884 m31189_IN_Cross 438.0125 +0 Low - 180 - Color 1 1 1 368 # B31189_IN_Cross 885 h31190_IA_Chat 432.550 +0 Low - 180 - Color 1 1 1 369 # B31190_IA_Chat 886 m31190_IA_Chat 438.0125 +0 Low - 180 - Color 1 1 1 369 # B31190_IA_Chat 887 h31191_IA_DSM_1 432.550 +0 Low - 180 - Color 1 1 1 370 # B31191_IA_DSM_1 888 m31191_IA_DSM_1 438.0125 +0 Low - 180 - Color 1 1 1 370 # B31191_IA_DSM_1 889 h31192_IA_ALO_2 432.550 +0 Low - 180 - Color 1 1 1 371 # B31192_IA_ALO_2 890 m31192_IA_ALO_2 438.0125 +0 Low - 180 - Color 1 1 1 371 # B31192_IA_ALO_2 891 h31193_IA_NW_3 432.550 +0 Low - 180 - Color 1 1 1 372 # B31193_IA_NW_3 892 m31193_IA_NW_3 438.0125 +0 Low - 180 - Color 1 1 1 372 # B31193_IA_NW_3 893 h31194_IA_SW_4 432.550 +0 Low - 180 - Color 1 1 1 373 # B31194_IA_SW_4 894 m31194_IA_SW_4 438.0125 +0 Low - 180 - Color 1 1 1 373 # B31194_IA_SW_4 895 h31195_IA_SE_5 432.550 +0 Low - 180 - Color 1 1 1 374 # B31195_IA_SE_5 896 m31195_IA_SE_5 438.0125 +0 Low - 180 - Color 1 1 1 374 # B31195_IA_SE_5 897 h31196_IA_CID_6 432.550 +0 Low - 180 - Color 1 1 1 375 # B31196_IA_CID_6 898 m31196_IA_CID_6 438.0125 +0 Low - 180 - Color 1 1 1 375 # B31196_IA_CID_6 899 h31198_IA_NWS_DV 432.550 +0 Low - 180 - Color 1 1 1 376 # B31198_IA_NWS_DV 900 m31198_IA_NWS_DV 438.0125 +0 Low - 180 - Color 1 1 1 376 # B31198_IA_NWS_DV 901 h31199_IA_NWS_DM 432.550 +0 Low - 180 - Color 1 1 1 377 # B31199_IA_NWS_DM 902 m31199_IA_NWS_DM 438.0125 +0 Low - 180 - Color 1 1 1 377 # B31199_IA_NWS_DM 903 h31201_KS_BYRG 432.550 +0 Low - 180 - Color 1 1 1 378 # B31201_KS_BYRG 904 m31201_KS_BYRG 438.0125 +0 Low - 180 - Color 1 1 1 378 # B31201_KS_BYRG 905 h31261_MI_State1 432.550 +0 Low - 180 - Color 1 1 1 379 # B31261_MI_State1 906 m31261_MI_State1 438.0125 +0 Low - 180 - Color 1 1 1 379 # B31261_MI_State1 907 h31262_MI_State2 432.550 +0 Low - 180 - Color 1 1 1 380 # B31262_MI_State2 908 m31262_MI_State2 438.0125 +0 Low - 180 - Color 1 1 1 380 # B31262_MI_State2 909 h31263_MI_Event1 432.550 +0 Low - 180 - Color 1 1 1 381 # B31263_MI_Event1 910 m31263_MI_Event1 438.0125 +0 Low - 180 - Color 1 1 1 381 # B31263_MI_Event1 911 h31265_MI_Event3 432.550 +0 Low - 180 - Color 1 1 1 382 # B31265_MI_Event3 912 m31265_MI_Event3 438.0125 +0 Low - 180 - Color 1 1 1 382 # B31265_MI_Event3 913 h31269_MI_WMTG 432.550 +0 Low - 180 - Color 1 1 1 383 # B31269_MI_WMTG 914 m31269_MI_WMTG 438.0125 +0 Low - 180 - Color 1 1 1 383 # B31269_MI_WMTG 915 h31274_MN_AARG 432.550 +0 Low - 180 - Color 1 1 1 384 # B31274_MN_AARG 916 m31274_MN_AARG 438.0125 +0 Low - 180 - Color 1 1 1 384 # B31274_MN_AARG 917 h31301_MT_MPRG 432.550 +0 Low - 180 - Color 1 1 1 385 # B31301_MT_MPRG 918 m31301_MT_MPRG 438.0125 +0 Low - 180 - Color 1 1 1 385 # B31301_MT_MPRG 919 h31302_MT_MPRG_2 432.550 +0 Low - 180 - Color 1 1 1 386 # B31302_MT_MPRG_2 920 m31302_MT_MPRG_2 438.0125 +0 Low - 180 - Color 1 1 1 386 # B31302_MT_MPRG_2 921 h31321_NV_NV_1 432.550 +0 Low - 180 - Color 1 1 1 387 # B31321_NV_NV_1 922 m31321_NV_NV_1 438.0125 +0 Low - 180 - Color 1 1 1 387 # B31321_NV_NV_1 923 h31322_NV_VOAD 432.550 +0 Low - 180 - Color 1 1 1 388 # B31322_NV_VOAD 924 m31322_NV_VOAD 438.0125 +0 Low - 180 - Color 1 1 1 388 # B31322_NV_VOAD 925 h31325_NV_HXO 432.550 +0 Low - 180 - Color 1 1 1 389 # B31325_NV_HXO 926 m31325_NV_HXO 438.0125 +0 Low - 180 - Color 1 1 1 389 # B31325_NV_HXO 927 h31327_NV_LasVeg 432.550 +0 Low - 180 - Color 1 1 1 390 # B31327_NV_LasVeg 928 m31327_NV_LasVeg 438.0125 +0 Low - 180 - Color 1 1 1 390 # B31327_NV_LasVeg 929 h31328_NV_SNARS 432.550 +0 Low - 180 - Color 1 1 1 391 # B31328_NV_SNARS 930 m31328_NV_SNARS 438.0125 +0 Low - 180 - Color 1 1 1 391 # B31328_NV_SNARS 931 h31329_NV_SNARS2 432.550 +0 Low - 180 - Color 1 1 1 392 # B31329_NV_SNARS2 932 m31329_NV_SNARS2 438.0125 +0 Low - 180 - Color 1 1 1 392 # B31329_NV_SNARS2 933 h31340_NJ_NJPA_* 432.550 +0 Low - 180 - Color 1 1 1 393 # B31340_NJ_NJPA_* 934 m31340_NJ_NJPA_* 438.0125 +0 Low - 180 - Color 1 1 1 393 # B31340_NJ_NJPA_* 935 h31341_NJ_SJersy 432.550 +0 Low - 180 - Color 1 1 1 394 # B31341_NJ_SJersy 936 m31341_NJ_SJersy 438.0125 +0 Low - 180 - Color 1 1 1 394 # B31341_NJ_SJersy 937 h31342_NJ_NJersy 432.550 +0 Low - 180 - Color 1 1 1 395 # B31342_NJ_NJersy 938 m31342_NJ_NJersy 438.0125 +0 Low - 180 - Color 1 1 1 395 # B31342_NJ_NJersy 939 h31360_NY/NJ/PA 432.550 +0 Low - 180 - Color 1 1 1 396 # B31360_NY/NJ/PA 940 m31360_NY/NJ/PA 438.0125 +0 Low - 180 - Color 1 1 1 396 # B31360_NY/NJ/PA 941 h31361_NY_Upstat 432.550 +0 Low - 180 - Color 1 1 1 397 # B31361_NY_Upstat 942 m31361_NY_Upstat 438.0125 +0 Low - 180 - Color 1 1 1 397 # B31361_NY_Upstat 943 h31362_NY_Metro 432.550 +0 Low - 180 - Color 1 1 1 398 # B31362_NY_Metro 944 m31362_NY_Metro 438.0125 +0 Low - 180 - Color 1 1 1 398 # B31362_NY_Metro 945 h31363_NY_ADK 432.550 +0 Low - 180 - Color 1 1 1 399 # B31363_NY_ADK 946 m31363_NY_ADK 438.0125 +0 Low - 180 - Color 1 1 1 399 # B31363_NY_ADK 947 h31364_NY_LwrHud 432.550 +0 Low - 180 - Color 1 1 1 400 # B31364_NY_LwrHud 948 m31364_NY_LwrHud 438.0125 +0 Low - 180 - Color 1 1 1 400 # B31364_NY_LwrHud 949 h31367_NY_STier 432.550 +0 Low - 180 - Color 1 1 1 401 # B31367_NY_STier 950 m31367_NY_STier 438.0125 +0 Low - 180 - Color 1 1 1 401 # B31367_NY_STier 951 h31420_PA_ACS 432.550 +0 Low - 180 - Color 1 1 1 402 # B31420_PA_ACS 952 m31420_PA_ACS 438.0125 +0 Low - 180 - Color 1 1 1 402 # B31420_PA_ACS 953 h31421_PA_TAC 432.550 +0 Low - 180 - Color 1 1 1 403 # B31421_PA_TAC 954 m31421_PA_TAC 438.0125 +0 Low - 180 - Color 1 1 1 403 # B31421_PA_TAC 955 h31422_PA_WestPA 432.550 +0 Low - 180 - Color 1 1 1 404 # B31422_PA_WestPA 956 m31422_PA_WestPA 438.0125 +0 Low - 180 - Color 1 1 1 404 # B31422_PA_WestPA 957 h31428_PA_RF-IT 432.550 +0 Low - 180 - Color 1 1 1 405 # B31428_PA_RF-IT 958 m31428_PA_RF-IT 438.0125 +0 Low - 180 - Color 1 1 1 405 # B31428_PA_RF-IT 959 h31429_PA_Zednet 432.550 +0 Low - 180 - Color 1 1 1 406 # B31429_PA_Zednet 960 m31429_PA_Zednet 438.0125 +0 Low - 180 - Color 1 1 1 406 # B31429_PA_Zednet 961 h31481_TX_North 432.550 +0 Low - 180 - Color 1 1 1 407 # B31481_TX_North 962 m31481_TX_North 438.0125 +0 Low - 180 - Color 1 1 1 407 # B31481_TX_North 963 h31482_TX_South 432.550 +0 Low - 180 - Color 1 1 1 408 # B31482_TX_South 964 m31482_TX_South 438.0125 +0 Low - 180 - Color 1 1 1 408 # B31482_TX_South 965 h31483_TX_West 432.550 +0 Low - 180 - Color 1 1 1 409 # B31483_TX_West 966 m31483_TX_West 438.0125 +0 Low - 180 - Color 1 1 1 409 # B31483_TX_West 967 h31485_TX_Amaril 432.550 +0 Low - 180 - Color 1 1 1 410 # B31485_TX_Amaril 968 m31485_TX_Amaril 438.0125 +0 Low - 180 - Color 1 1 1 410 # B31485_TX_Amaril 969 h31530_PNW-West 432.550 +0 Low - 180 - Color 1 1 1 411 # B31530_PNW-West 970 m31530_PNW-West 438.0125 +0 Low - 180 - Color 1 1 1 411 # B31530_PNW-West 971 h31533_WA_ARES 432.550 +0 Low - 180 - Color 1 1 1 412 # B31533_WA_ARES 972 m31533_WA_ARES 438.0125 +0 Low - 180 - Color 1 1 1 412 # B31533_WA_ARES 973 h31551_WI_Linkhu 432.550 +0 Low - 180 - Color 1 1 1 413 # B31551_WI_Linkhu 974 m31551_WI_Linkhu 438.0125 +0 Low - 180 - Color 1 1 1 413 # B31551_WI_Linkhu 975 h31555_WI_DMR 432.550 +0 Low - 180 - Color 1 1 1 414 # B31555_WI_DMR 976 m31555_WI_DMR 438.0125 +0 Low - 180 - Color 1 1 1 414 # B31555_WI_DMR 977 h31665_TGIF 432.550 +0 Low - 180 - Color 1 1 1 415 # B31665_TGIF 978 m31665_TGIF 438.0125 +0 Low - 180 - Color 1 1 1 415 # B31665_TGIF 979 h31666_DMR_Anarc 432.550 +0 Low - 180 - Color 1 1 1 416 # B31666_DMR_Anarc 980 m31666_DMR_Anarc 438.0125 +0 Low - 180 - Color 1 1 1 416 # B31666_DMR_Anarc 981 h31697_Ru_Americ 432.550 +0 Low - 180 - Color 1 1 1 417 # B31697_Ru_Americ 982 m31697_Ru_Americ 438.0125 +0 Low - 180 - Color 1 1 1 417 # B31697_Ru_Americ 983 h31699_Gr_Americ 432.550 +0 Low - 180 - Color 1 1 1 418 # B31699_Gr_Americ 984 m31699_Gr_Americ 438.0125 +0 Low - 180 - Color 1 1 1 418 # B31699_Gr_Americ 985 h31771_PNWR 432.550 +0 Low - 180 - Color 1 1 1 419 # B31771_PNWR 986 m31771_PNWR 438.0125 +0 Low - 180 - Color 1 1 1 419 # B31771_PNWR 987 h316272_NASA 432.550 +0 Low - 180 - Color 1 1 1 423 # B316272_NASA 988 m316272_NASA 438.0125 +0 Low - 180 - Color 1 1 1 423 # B316272_NASA 989 h316273_JSC 432.550 +0 Low - 180 - Color 1 1 1 424 # B316273_JSC 990 m316273_JSC 438.0125 +0 Low - 180 - Color 1 1 1 424 # B316273_JSC 991 h316274_KSC 432.550 +0 Low - 180 - Color 1 1 1 425 # B316274_KSC 992 m316274_KSC 438.0125 +0 Low - 180 - Color 1 1 1 425 # B316274_KSC 993 CapPk_Scan 440.7125 +5 High 3 180 - - 1 1 2 - 994 CapPk_Loc_1 440.7125 +5 High 3 180 - Color 1 1 2 280 # d3181_Local_1 995 CapPk_Loc_2 440.7125 +5 High 3 180 - Color 1 2 2 269 # d3166_Local_2 996 CapPk_WA_1 440.7125 +5 High 3 180 - Color 1 1 2 261 # B3153_WA_State 997 CapPk_WA_2 440.7125 +5 High 3 180 - Color 1 2 2 421 # d103153_WA_2 998 CapPk_PNW_1 440.7125 +5 High 3 180 - Color 1 1 2 283 # d3187_PNW_1 999 CapPk_PNW_2 440.7125 +5 High 3 180 - Color 1 2 2 419 # B31771_PNWR 1000 CapPk_PNWR_2 440.7125 +5 High 3 180 - Color 1 2 2 419 # B31771_PNWR 1001 CapPk_Parrot_1 440.7125 +5 High - 180 - Color 1 1 - 329 # d9998_Parrot_1 1002 BawFaw_Scan 440.7375 +5 High 4 180 - - 1 1 2 - 1003 BawFaw_Loc_1 440.7375 +5 High 4 180 - Color 1 1 2 280 # d3181_Local_1 1004 BawFaw_Loc_2 440.7375 +5 High 4 180 - Color 1 2 2 269 # d3166_Local_2 1005 BawFaw_WA_1 440.7375 +5 High 4 180 - Color 1 1 2 261 # B3153_WA_State 1006 BawFaw_WA_2 440.7375 +5 High 4 180 - Color 1 2 2 421 # d103153_WA_2 1007 BawFaw_PNW_1 440.7375 +5 High 4 180 - Color 1 1 2 283 # d3187_PNW_1 1008 BawFaw_PNW_2 440.7375 +5 High 4 180 - Color 1 2 2 422 # d102187_PNW_2 1009 BawFaw_PNWR_2 440.7375 +5 High 4 180 - Color 1 2 2 419 # B31771_PNWR 1010 BawFaw_Parrot_1 440.7375 +5 High - 180 - Color 1 1 - 329 # d9998_Parrot_1 # Table of analog channels. # 1) Channel number: 1-3000 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Mid, Low # 6) Scan list: - or index # 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555 # 8) Receive only: -, + # 9) Admit criteria: -, Free, Tone # 10) Squelch level: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 # 11) Guard tone for receive, or '-' to disable # 12) Guard tone for transmit, or '-' to disable # 13) Bandwidth in kHz: 12.5, 20, 25 # Analog Name Receive Transmit Power Scan TOT RO Admit Sq RxTone TxTone Width 1 01_PRMARY_145.37 145.370 -0.6 High - 180 - - 1 - 136.5 25 2 02_GIGHRB_145.35 145.350 -0.6 High - 180 - - 1 - 103.5 25 3 03_N-CNTY_146.64 146.640 -0.6 High - 180 - - 1 - 103.5 25 4 04_LKWOOD_145.41 145.410 -0.6 High - 180 - - 1 - 103.5 25 5 05_NE-TAC_147.02 147.020 +0.6 High - 180 - - 1 - 103.5 25 6 06_C-TAC_147.28 147.280 +0.6 High - 180 - - 1 - 103.5 25 7 07_S-CNTY_146.70 146.700 -0.6 High - 180 - - 1 - 103.5 25 8 08_ETNVIL_442.72 442.725 +5 High - 180 - - 1 - 103.5 25 9 09_N-TAC_145.210 145.210 -0.6 High - 180 - - 1 - 141.3 25 10 10_ROY_147.380 147.380 +0.6 High - 180 - - 1 - 103.5 25 11 11_SRCH-R_147.30 147.300 +0.6 High - 180 - - 1 - 88.5 25 12 12_3SISTER_444.6 444.675 +5 High - 180 - - 1 - 136.5 25 13 13_E-TIGR_443.30 443.300 +5 High - 180 - - 1 - 156.7 25 14 14_GRAHAM_145.23 145.230 -0.6 High - 180 - - 1 - 146.2 25 15 15_PC-SX1_146.56 146.560 +0 High - 180 - - 1 - - 25 16 16_PC-SX2_146.46 146.460 +0 High - 180 - - 1 - - 25 17 17_PC-SX3_145.53 145.530 +0 High - 180 - - 1 - - 25 18 18_PC-SX4_146.43 146.430 +0 High - 180 - - 1 - - 25 19 19_PC-SX5_146.58 146.580 +0 High - 180 - - 1 - - 25 20 20_PC-SX6_147.42 147.420 +0 High - 180 - - 1 - - 25 21 21_MASON_145.17 145.170 -0.6 High - 180 - - 1 - 103.5 25 22 22_BEARS_145.33 145.330 -0.6 High - 180 - - 1 - 179.9 25 23 23_KITSAP_145.43 145.430 -0.6 High - 180 - - 1 - 103.5 25 24 24_CAPPK_145.47 145.470 -0.6 High - 180 - - 1 - 100.0 25 25 25_CRYSTL145.49 145.490 -0.6 High - 180 - - 1 - 179.9 25 26 26_HSPSX1_145.52 145.520 +0 High - 180 - - 1 - - 25 27 27_HSPSX2_146.42 146.420 +0 High - 180 - - 1 - - 25 28 28_NAT-SX_146.52 146.520 +0 High - 180 - - 1 - - 25 29 29_KIT-BU_146.62 146.620 -0.6 High - 180 - - 1 - 103.5 25 30 30_SHLTON_146.72 146.720 -0.6 High - 180 - - 1 - 103.5 25 31 31_FWEOC_146.76 146.760 -0.6 High - 180 - - 1 - 103.5 25 32 32_WHDBY_146.86 146.860 -0.6 High - 180 - - 1 - 127.3 25 33 33_GRNMTN_146.88 146.880 -0.6 High - 180 - - 1 - 100.0 25 34 34_MEDSVC_146.90 146.900 -0.6 High - 180 - - 1 - 103.5 25 35 35_TACOM2_146.94 146.940 -0.6 High - 180 - - 1 - 103.5 25 36 36_SEAEOC_146.96 146.960 -0.6 High - 180 - - 1 - 103.5 25 37 37_BALDI_146.98 146.980 -0.6 High - 180 - - 1 - 107.2 25 38 38_FWEOC2_147.04 147.040 +0.6 High - 180 - - 1 - 103.5 25 39 39_GRMHIL_147.14 147.140 +0.6 High - 180 - - 1 - 103.5 25 40 40_HSPSX3_147.58 147.580 +0 High - 180 - - 1 - - 25 41 41_TCEOC2_147.36 147.360 +0.6 High - 180 - - 1 - 103.5 25 42 42_TCEOC4_441.40 441.400 +5 High - 180 - - 1 - 103.5 25 43 43_LEWIS_147.06 147.060 +0.6 High - 180 - - 1 - 110.9 25 44 44_ETC-SX_146.55 146.550 +0 High - 180 - - 1 - - 25 45 45_ETC-RP_440.20 440.200 +5 High - 180 - - 1 - 100.0 25 46 46_OLALLA_440.22 440.225 +5 High - 180 - - 1 - 103.5 25 47 47_PTDEFI_442.45 442.450 +5 High - 180 - - 1 - 103.5 25 48 48_MEDBU_442.625 442.625 +5 High - 180 - - 1 - 103.5 25 49 49_WWARA_442.65 442.650 +5 High - 180 - - 1 - 103.5 25 50 50_SBEND_442.675 442.675 +5 High - 180 - - 1 - 118.8 25 51 51_FDWAY4_442.95 442.950 +5 High - 180 - - 1 - 103.5 25 52 52_TGMED_443.675 443.675 +5 High - 180 - - 1 - 103.5 25 53 53_TACOM4_443.82 443.825 +5 High - 180 - - 1 - 88.5 25 54 54_PSEELC_442.25 442.250 +5 High - 180 - - 1 - 103.5 25 55 55_HSPSX4_445.82 445.825 +0 High - 180 - - 1 - - 25 56 56_HSPSX5_445.87 445.875 +0 High - 180 - - 1 - - 25 57 57_HSPSX6_446.50 446.500 +0 High - 180 - - 1 - - 25 58 SeaCol_444.5500+ 444.550 +5 High - 180 - Tone 1 141.3 141.3 25 59 GoldMt_441.200+ 441.200 +5 High - 180 - - 1 - 123.0 25 60 OARS_441.400+ 441.400 +5 High - 180 - - 1 - 103.5 25 61 RCT_147.380+ 147.380 +0.6 High 2 180 - Tone 1 103.5 103.5 25 62 N7YLM_440.200+ 440.200 +5 High - 180 - - 1 - 100.0 25 63 Eatonv_146.700- 146.700 -0.6 High - 180 - - 1 - 103.5 25 64 Prdise_145.130- 145.130 -0.6 High - 180 - - 1 - 100.0 25 65 BawFaw_147.060+ 147.060 +0.6 High - 180 - - 1 - 110.9 25 66 CapPK_145.470- 145.470 -0.6 High - 180 - - 1 - 100.0 25 67 irlp3179_446.025 446.025 +0 High - 180 - Tone 1 131.8 131.8 25 68 BchNetO_444.950+ 444.950 +6 High - 180 - - 1 - 118.8 25 69 OcnPrk_145.170- 145.170 -5 High - 180 - - 1 - 118.8 25 70 NCove1_145.310- 145.310 -0.6 High - 180 - - 1 - 118.8 25 71 NCove2_145.310- 145.310 -0.6 High - 180 - - 1 - 114.8 25 72 Cosmo_145.390- 145.390 -0.6 High - 180 - - 1 - 118.8 25 73 GryRivr_147.020+ 147.020 +0.6 High - 180 - - 1 - 118.8 25 74 Megler_147.180+ 147.180 +0.6 High - 180 - - 1 - 82.5 25 75 SBend2M_147.340+ 147.340 +0.6 High - 180 - - 1 - 82.5 25 76 Naselle_440.675+ 440.675 +5 High - 180 - - 1 - 118.8 25 77 KOPeak_441.675+ 441.675 +5 High - 180 - - 1 - 118.8 25 78 SBend4_442.675+ 442.675 +5 High - 180 - - 1 - 118.8 25 79 Minot_444.050+ 444.050 +5 High - 180 - - 1 - 118.8 25 80 OcnShr_444.200+ 444.200 +5 High - 180 - - 1 - 118.8 25 81 NCove3_444.400+ 444.400 +5 High - 180 - - 1 - 118.8 25 82 Nicoli_444.500+ 444.500 +5 High - 180 - - 1 - 118.8 25 83 Neilton_444.700+ 444.700 +5 High - 180 - - 1 - 118.8 25 84 LngBch_444.800+ 444.800 +5 High - 180 - - 1 - 118.8 25 85 AnalogSpare0 444.950 +6 High - 180 - - 1 - 118.8 25 86 Seaside2_145.490 145.490 +0 High - 180 - - 1 - 118.8 25 87 Seaside4_443.875 443.875 +0 High - 180 - - 1 - 118.8 25 88 PIRPRT_440.450+ 440.450 +0 High - 180 - - 1 - 118.8 25 89 PIRHood_443.875+ 443.875 +0 High - 180 - - 1 - 118.8 25 90 PIRGrz_444.175+ 444.175 +0 High - 180 - - 1 - 118.8 25 91 APRS_144.390 144.390 +0 High - 180 - - 1 - - 25 92 AnalogSpare1 446.500 +0 High - 180 - - 1 - - 25 93 AnalogSpare2 446.500 +0 High - 180 - - 1 - - 25 94 AnalogSpare3 446.500 +0 High - 180 - - 1 - - 25 95 AnalogSpare4 446.500 +0 High - 180 - - 1 - - 25 96 AnalogSpare5 446.500 +0 High - 180 - - 1 - - 25 97 2M_Call_146.520 146.520 +0 High - 180 - - 1 - - 25 98 2M_Smpx2_146.535 146.535 +0 High - 180 - - 1 - - 25 99 2M_Smpx3_146.550 146.550 +0 High - 180 - - 1 - - 25 100 2M_Smpx4_146.565 146.565 +0 High - 180 - - 1 - - 25 101 2M_Smpx5_146.580 146.580 +0 High - 180 - - 1 - - 25 102 2M_Smpx6_147.520 147.520 +0 High - 180 - - 1 - - 25 103 2M_Smpx7_147.535 147.535 +0 High - 180 - - 1 - - 25 104 2M_Smpx8_147.555 147.555 +0 High - 180 - - 1 - - 25 105 2M_Smpx9_147.565 147.565 +0 High - 180 - - 1 - - 25 106 2M_Smp10_147.585 147.585 +0 High - 180 - - 1 - - 25 107 70cmSmp1_445.975 445.975 +0 High - 60 - - 1 - - 25 108 70cmCall_446.000 446.000 +0 High - 180 - - 1 - - 25 109 70cmSmp3_446.025 446.025 +0 Low - 180 - - 1 - - 25 110 70cmSmp4_446.050 446.050 +0 High - 180 - - 1 - - 25 111 70cmSmp5_446.075 446.075 +0 High - 180 - - 1 - - 25 112 TCTAC1 155.550 +0 High 1 180 + Tone 1 136.5 - 12.5 113 TCTAC2 156.150 +0 High 1 180 + Tone 1 88.5 - 12.5 114 TCTAC5 154.800 +0 High 1 180 + - 1 - - 12.5 115 TCTAC9 158.8575 +0 High 1 180 + Tone 1 107.2 - 12.5 116 Lewis_SO 155.625 +0 High 1 180 + Tone 1 88.5 - 12.5 117 WX_1 162.400 +0 High - 180 + - 1 - - 12.5 118 WX_2 162.425 +0 High - 180 + - 1 - - 12.5 119 WX_3 162.450 +0 High - 180 + - 1 - - 12.5 120 WX_4 162.475 +0 High - 180 + - 1 - - 12.5 121 WX_5 162.500 +0 High - 180 + - 1 - - 12.5 122 WX_6 162.525 +0 High - 180 + - 1 - - 12.5 123 WX_7 162.550 +0 High - 180 + - 1 - - 12.5 124 MURS-1 151.820 +0 High - 180 - - 1 - - 12.5 125 MURS-2 151.880 +0 High - 180 - - 1 - - 12.5 126 MURS-2P 151.880 +0 High - 180 - Tone 1 141.3 141.3 12.5 127 MURS-3 151.940 +0 High - 180 - - 1 - - 12.5 128 MURS-4 154.570 +0 High - 180 - - 1 - - 12.5 129 MURS-5 154.600 +0 High - 180 - - 1 - - 12.5 130 FRS1g_-_462.5625 462.5625 +0 Low - 180 - - 1 - - 12.5 131 FRS2g_-_462.5875 462.5875 +0 Low - 180 - - 1 - - 12.5 132 FRS3g_-_462.6125 462.6125 +0 Low - 180 - - 1 - - 12.5 133 FRS3prv 462.6125 +0 High - 180 - Tone 1 233.6 233.6 12.5 134 FRS4g_-_462.6375 462.6375 +0 Low - 180 - - 1 - - 12.5 135 FRS5g_-_462.6625 462.6625 +0 Low - 180 - - 1 - - 12.5 136 FRS6g_-_462.6875 462.6875 +0 Low - 180 - - 1 - - 12.5 137 FRS7g_-_462.7125 462.7125 +0 Low - 180 - - 1 - - 12.5 138 FRS8_-_467.5625 467.5625 +0 Low - 180 - - 1 - - 12.5 139 FRS9_-_467.5875 467.5875 +0 Low - 180 - Tone 1 - - 12.5 140 FRS10_-_467.6125 467.6125 +0 Low - 180 - - 1 - - 12.5 141 FRS11_-_467.6375 467.6375 +0 Low - 180 - - 1 - - 12.5 142 FRS12_-_467.6625 467.6625 +0 Low - 180 - - 1 - - 12.5 143 FRS13_-_467.6875 467.6875 +0 Low - 180 - - 1 - - 12.5 144 FRS14_-_467.7125 467.7125 +0 Low - 180 - - 1 - - 12.5 145 GRMS15_-_462.550 462.550 +0 Low - 180 - - 1 - - 25 146 GRMS15_rptr 462.550 +5 Low - 180 - - 1 - - 25 147 GMRS16_-_462.575 462.575 +0 Low - 180 - - 1 - - 25 148 GMRS16_rptr 462.575 +5 Low - 180 - - 1 - - 25 149 GMRS17_-_462.600 462.600 +0 Low - 180 - - 1 - - 25 150 GMRS17_rptr 462.600 +5 Low - 180 - - 1 - - 25 151 GMRS18_-_462.625 462.625 +0 Low - 180 - - 1 - - 25 152 GMRS18_rptr 462.625 +5 Low - 180 - - 1 - - 25 153 GMRS19_-_462.650 462.650 +0 Low - 180 - - 1 - - 25 154 GMRS19_rptr 462.650 +5 Low - 180 - - 1 - - 25 155 GMRS20_-_462.675 462.675 +0 Low - 180 - - 1 - 141.3 25 156 GMRS20_rptr 462.675 +5 Low - 180 - - 1 - 141.3 25 157 GMRS21_-_462.700 462.700 +0 Low - 180 - - 1 - - 25 158 GMRS21_rptr 462.700 +5 Low - 180 - - 1 - - 25 159 GMRS22_-_462.725 462.725 +0 Low - 180 - - 1 - - 25 160 GMRS22_rptr 462.725 +5 Low - 180 - - 1 - - 25 161 Marine09_156.450 156.450 +0 Low - 180 - - 1 - - 25 162 Marine16_156.800 156.800 +0 Low - 180 - - 1 - - 25 163 Marine22_157.100 157.100 +0 Low - 180 - - 1 - - 25 164 Marine68_156.425 156.425 +0 Low - 180 - - 1 - - 25 165 Marine69_156.475 156.475 +0 Low - 180 - - 1 - - 25 166 AnalogSpare6 446.500 +0 High - 180 - - 1 - - 25 167 AnalogSpare7 446.500 +0 High - 180 - - 1 - - 25 168 AnalogSpare8 446.500 +0 High - 180 - - 1 - - 25 169 AnalogSpare9 446.500 +0 High - 180 - - 1 - - 25 170 AnalogSpare10 446.500 +0 High - 180 - - 1 - - 25 # Table of channel zones. # 1) Zone number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of channels: numbers and ranges (N-M) separated by comma # Zone Name Channels 1a PNW_Home_Zone 993-1008,1009-1010 1b - 171-176,691-692,735-738,985-986,994-1001,1003-1010 2a Mobile_Zone - 2b - - 3a Pierce_Cty_ARES 1-16 3b - 17-57,117-123 4a Favorites_Zone 1,7-8,10,28,37,41-45,58-59,61,65-66,67-68,68-84,86-90,112-116,171-176,185,233,296,306,597,605,615,671,683,691,699,735,737 4b - 1,7-8,10,28,37,41-45,58-59,61,65-68,68-84,86-90,112-116,171-176,186,234,296,306,598,606,616,672,684,692,700,736,738 5a Non-Ham_Zone 124-139 5b - 112-123,156-165 6a Testing_Zone 126,133,171,175 6b - 126,133,171,175 7a BeachNet_Rptrs 68-83,84,185,187,189,243,245,247,249,251,253,255,257,259,261,319,597,671,691,715,735,737,785,787,789 7b - 68-84,186,188,190,244,246,248,250,252,254,256,258,260,262,320,598,672,692,716,736,738,786,788,790 8a California_Zone 605,713,717,735,737,807,815,817,819,821,823,825,827,829,831,847 8b - 606,714,718,736,738,808,816,818,820,822,824,826,828,830,832,848 # Table of scan lists. # 1) Scan list number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) Priority channel 1 (50% of scans): -, Sel or index # 4) Priority channel 2 (25% of scans): -, Sel or index # 5) Designated transmit channel: Last, Sel or index # 6) List of channels: numbers and ranges (N-M) separated by comma # Scanlist Name PCh1 PCh2 TxCh Channels 1 Public_Safety 992 992 Sel 112-116 2 FavHamOnlyScan 992 992 Sel 60-63 3 Capitol_Pk_Scan - - Last 994-1000 4 BawFaw_Scan - - Last 1003-1010 # Table of contacts. # 1) Contact number: 1-10000 # 2) Name: up to 16 characters, use '_' instead of space # 3) Call type: Group, Private, All # 4) Call ID: 1...16777215 # 5) Call receive tone: -, + # Contact Name Type ID RxTone 1 B1_Local Group 1 - 2 B2_Local Group 2 - 3 B8_Regional Group 8 - 4 B9_Local/Ref Group 9 - 5 d13_WW_Eng_2 Group 13 - 6 B91_WW Group 91 - 7 B92_Europe Group 92 - 8 B93_N_America Group 93 - 9 B95_Aus/NZ Group 95 - 10 Simplex_99 Group 99 - 11 d123_TAC_Eng_2 Group 123 - 12 B202_Greece Group 202 - 13 B204_Netherland Group 204 - 14 B206_Belgium Group 206 - 15 B208_France Group 208 - 16 B214_Spain Group 214 - 17 B216_Hungary Group 216 - 18 B220_Serbia Group 220 - 19 B222_Italy Group 222 - 20 B226_Romania Group 226 - 21 B228_Switzerland Group 228 - 22 B230_Czech_Rep Group 230 - 23 B231_Slovakia Group 231 - 24 B232_Austria Group 232 - 25 B235_UK Group 235 - 26 B238_Denmark Group 238 - 27 B240_Sweden Group 240 - 28 B242_Norway Group 242 - 29 B244_Finland Group 244 - 30 B255_Ukraine Group 255 - 31 B260_Poland Group 260 - 32 B262_Germany Group 262 - 33 B268_Portugal Group 268 - 34 B270_Luxembourg Group 270 - 35 B280_Cyprus Group 280 - 36 B302_Canada Group 302 - 37 B310_TAC_310 Group 310 - 38 B311_TAC_311 Group 311 - 39 B312_TAC_312 Group 312 - 40 B313_TAC_313 Group 313 - 41 B314_TAC_314 Group 314 - 42 B315_TAC_315 Group 315 - 43 B316_TAC_316 Group 316 - 44 B317_TAC_317 Group 317 - 45 B318_TAC_318 Group 318 - 46 B319_TAC_319 Group 319 - 47 B334_XE_Mexico Group 334 - 48 B358_St_Lucia Group 358 - 49 B374_Trinidad/T Group 374 - 50 B425_Israel Group 425 - 51 B450_South_Korea Group 450 - 52 B454_China Group 454 - 53 B505_Australia Group 505 - 54 B520_Thailand Group 520 - 55 B655_S_Africa Group 655 - 56 B714_Panama Group 714 - 57 B724_Brazil Group 724 - 58 B730_Chile Group 730 - 59 B734_Venezuela Group 734 - 60 B748_Uruguay Group 748 - 61 B899_Rptr_Test Group 899 - 62 B907_JOTA Group 907 - 63 B910_German Group 910 - 64 B913_English Group 913 - 65 B914_Spanish Group 914 - 66 B915_Portuguese Group 915 - 67 B918_YOTA Group 918 - 68 B920_DL/OE/HB9 Group 920 - 69 B922_Dutch Group 922 - 70 B923_Euro_Eng Group 923 - 71 B927_Nordic Group 927 - 72 B930_PanHellenic Group 930 - 73 B937_Francophon Group 937 - 74 B955_WWYL Group 955 - 75 B1776_USA Group 1776 - 76 B2021_Greece_R1 Group 2021 - 77 B2022_Greece_R2 Group 2022 - 78 B2023_Greece_R3 Group 2023 - 79 B2024_Greece_R4 Group 2024 - 80 B2025_Greece_R5 Group 2025 - 81 B2026_Greece_R6 Group 2026 - 82 B2027_Greece_R7 Group 2027 - 83 B2028_Greece_R8 Group 2028 - 84 B2029_Greece_R9 Group 2029 - 85 B2041_North_NL Group 2041 - 86 B2042_Mid_NL Group 2042 - 87 B2043_South_NL Group 2043 - 88 B2044_East_NL Group 2044 - 89 B2045_NL_TechTlk Group 2045 - 90 B2061_BE_North Group 2061 - 91 B2062_BE_South Group 2062 - 92 B2063_BE_East Group 2063 - 93 B2064_BE_TAC4 Group 2064 - 94 B2065_BE_TAC5 Group 2065 - 95 B2066_BE_TAC6 Group 2066 - 96 B2067_BE_TAC7 Group 2067 - 97 B2068_BE_TAC8 Group 2068 - 98 B2069_BE_TAC9 Group 2069 - 99 B2080_FR_ile_de Group 2080 - 100 B2081_FR_Med_1 Group 2081 - 101 B2082_FR_Alpes_2 Group 2082 - 102 B2083_FR_Pyren_3 Group 2083 - 103 B2084_FR_East_4 Group 2084 - 104 B2085_FR_West_5 Group 2085 - 105 B2086_FR_Atlan_6 Group 2086 - 106 B2087_FR_North_7 Group 2087 - 107 B2088_FR_Centr_8 Group 2088 - 108 B2089_FR_DOM-TOM Group 2089 - 109 B2141_EA_1 Group 2141 - 110 B2142_EA2 Group 2142 - 111 B2143_EA3 Group 2143 - 112 B2144_EA4 Group 2144 - 113 B2145_EA5 Group 2145 - 114 B2146_EA6 Group 2146 - 115 B2147_EA7 Group 2147 - 116 B2148_EA8 Group 2148 - 117 B2149_EA9 Group 2149 - 118 B2161_HU_East Group 2161 - 119 B2162_HU_West Group 2162 - 120 B2163_HU_North Group 2163 - 121 B2164_HU_South Group 2164 - 122 B2165_HU_Test Group 2165 - 123 B2169_Local_Rptr Group 2169 - 124 B2280_CH_Deutsch Group 2280 - 125 B2281_CH_Romande Group 2281 - 126 B2282_CH_Valais Group 2282 - 127 B2283_CH_Bern Group 2283 - 128 B2284_CH_Basel Group 2284 - 129 B2285_CH_Aargau Group 2285 - 130 B2286_CH_Ticino Group 2286 - 131 B2287_CH_Graubue Group 2287 - 132 B2288_CH_Zurich Group 2288 - 133 B2289_CH_Ost Group 2289 - 134 B2300_Czech_Xcon Group 2300 - 135 B2301_Bohemia Group 2301 - 136 B2302_Moravia Group 2302 - 137 B2311_Slovakia Group 2311 - 138 B2320_AT_Master Group 2320 - 139 B2321_AT_Wien Group 2321 - 140 B2322_AT_Salzbrg Group 2322 - 141 B2323_AT_Nieder Group 2323 - 142 B2324_AT_Burgenl Group 2324 - 143 B2325_AT_Ober Group 2325 - 144 B2326_AT_Steier Group 2326 - 145 B2327_AT_Tirol Group 2327 - 146 B2328_AT_Kaerntn Group 2328 - 147 B2329_AT_Vorarlb Group 2329 - 148 B2350_UK_4400 Group 2350 - 149 B2351_UK_Chat Group 2351 - 150 B2352_UK_Chat Group 2352 - 151 B2353_UK_Chat Group 2353 - 152 B2354_Ireland Group 2354 - 153 B2355_Scotland Group 2355 - 154 B2357_Wales Group 2357 - 155 B2381_DK_North Group 2381 - 156 B2382_DK_Mid Group 2382 - 157 B2383_DK_South Group 2383 - 158 B2384_DK_Copenha Group 2384 - 159 B2385_DK_Sjaella Group 2385 - 160 B2386_DK_Chat Group 2386 - 161 B2387_DK_Chat Group 2387 - 162 B2388_DK_D-Star Group 2388 - 163 B2389_DK_WiresX Group 2389 - 164 B2400_SM_Region0 Group 2400 - 165 B2401_SM_Region1 Group 2401 - 166 B2402_SM_Region2 Group 2402 - 167 B2403_SM_Region3 Group 2403 - 168 B2404_SM_Region4 Group 2404 - 169 B2405_SM_Region5 Group 2405 - 170 B2406_SM_Region6 Group 2406 - 171 B2407_SM_Region7 Group 2407 - 172 B2411_SM_TAC Group 2411 - 173 B2415_XRF699N Group 2415 - 174 B2440_OH_Region0 Group 2440 - 175 B2441_OH_Region1 Group 2441 - 176 B2442_OH_Region2 Group 2442 - 177 B2443_OH_Region3 Group 2443 - 178 B2444_OH_Region4 Group 2444 - 179 B2445_OH_Region5 Group 2445 - 180 B2446_OH_Region6 Group 2446 - 181 B2447_OH_Region7 Group 2447 - 182 B2448_OH_Region8 Group 2448 - 183 B2449_OH_Region9 Group 2449 - 184 B2501_RU_Global Group 2501 - 185 B2502_XRF250A_Br Group 2502 - 186 B2503_DSTAR-SU Group 2503 - 187 B2555_UA_Bridge Group 2555 - 188 B2559_UA_Emergen Group 2559 - 189 B2620_DE_Sachsen Group 2620 - 190 B2621_DE_Berlin Group 2621 - 191 B2622_DE_Hamburg Group 2622 - 192 B2623_DE_Bremen Group 2623 - 193 B2624_DE_Nordrhe Group 2624 - 194 B2625_DE_Rheinla Group 2625 - 195 B2626_DE_Hessen Group 2626 - 196 B2627_DE_BadenWu Group 2627 - 197 B2628_DE_Bayern Group 2628 - 198 B2629_DE_Sachsen Group 2629 - 199 B2681_PT_North Group 2681 - 200 B2682_PT_Center Group 2682 - 201 B2683_PT_Capital Group 2683 - 202 B2684_PT_South Group 2684 - 203 B2685_PT_Algarve Group 2685 - 204 B2686_PT_Azores Group 2686 - 205 B2687_PT_Madeira Group 2687 - 206 B2802_CY_Nicosia Group 2802 - 207 B2803_CY_Famagus Group 2803 - 208 B2804_CY_Larnaca Group 2804 - 209 B2805_CY_Limasso Group 2805 - 210 B2806_CY_Paphos Group 2806 - 211 B2807_CY_Kyrenia Group 2807 - 212 B3026_CA_English Group 3026 - 213 B3027_CA_French Group 3027 - 214 B3100_USA-wide Group 3100 - 215 B3101_AL_State Group 3101 - 216 B3102_AK_State Group 3102 - 217 B3104_AZ_State Group 3104 - 218 B3106_CA_State Group 3106 - 219 B3108_CO_State Group 3108 - 220 B3109_CT_State Group 3109 - 221 B3110_DE_State Group 3110 - 222 B3111_Wash_D.C. Group 3111 - 223 B3112_FL_State Group 3112 - 224 B3113_GA_State Group 3113 - 225 B3115_HI_State Group 3115 - 226 B3116_ID_State Group 3116 - 227 B3117_IL_State Group 3117 - 228 B3118_IN_State Group 3118 - 229 B3119_IA_State Group 3119 - 230 B3120_KS_State Group 3120 - 231 B3121_KY_State Group 3121 - 232 B3122_LA_State Group 3122 - 233 B3123_ME_State Group 3123 - 234 B3124_MD_State Group 3124 - 235 B3125_MA_State Group 3125 - 236 B3126_MI_State Group 3126 - 237 B3127_MN_State Group 3127 - 238 B3128_MS_State Group 3128 - 239 B3129_MO_State Group 3129 - 240 B3130_MT_State Group 3130 - 241 B3131_NE_State Group 3131 - 242 B3132_NV_State Group 3132 - 243 B3133_NH_State Group 3133 - 244 B3134_NJ_State Group 3134 - 245 B3135_NM_State Group 3135 - 246 B3136_NY_State Group 3136 - 247 B3137_NC_State Group 3137 - 248 B3138_ND_State Group 3138 - 249 B3139_OH_State Group 3139 - 250 B3140_OK_State Group 3140 - 251 B3141_OR_State Group 3141 - 252 B3142_PA_State Group 3142 - 253 B3144_RI_State Group 3144 - 254 B3145_SC_State Group 3145 - 255 B3146_SD_State Group 3146 - 256 B3147_TN_State Group 3147 - 257 B3148_TX_State Group 3148 - 258 B3149_UT_State Group 3149 - 259 B3150_VT_State Group 3150 - 260 B3151_VA_State Group 3151 - 261 B3153_WA_State Group 3153 - 262 B3154_WV_State Group 3154 - 263 B3155_WI_State Group 3155 - 264 B3156_WY_State Group 3156 - 265 d3160_DCI_1 Group 3160 - 266 d3161_WW_2 Group 3161 - 267 d3162_DCI_2 Group 3162 - 268 d3163_NA_2 Group 3163 - 269 d3166_Local_2 Group 3166 - 270 B3167_Allstar Group 3167 - 271 d3168_I-5_1 Group 3168 - 272 B3169_Midwest Group 3169 - 273 B3171_NoCo Group 3171 - 274 B3172_Northeast Group 3172 - 275 B3173_Mid-Atlant Group 3173 - 276 B3174_Southeast Group 3174 - 277 B3175_S_Plains Group 3175 - 278 B3176_Southwest Group 3176 - 279 B3177_Mountain Group 3177 - 280 d3181_Local_1 Group 3181 - 281 d3182_Fusion_2 Group 3182 - 282 B3185_CACTUS Group 3185 - 283 d3187_PNW_1 Group 3187 - 284 B3341_XE_TAC_1 Group 3341 - 285 B3342_XE_TAC_2 Group 3342 - 286 B3343_XE_TAC_3 Group 3343 - 287 B3740_REACT Group 3740 - 288 B3741_TT_Woodbro Group 3741 - 289 B3742_TT_Pt_of_S Group 3742 - 290 B3743_TT_S_Ferna Group 3743 - 291 B3744_TT_Tobago Group 3744 - 292 B4000_Disconnect Group 4000 - 293 B5000_Refl_Info Group 5000 - 294 B5050_AU_XRF500_ Group 5050 - 295 B5051_AU_Capital Group 5051 - 296 B5052_AU_New_S_W Group 5052 - 297 B5053_AU_Victori Group 5053 - 298 B5054_AU_Queensl Group 5054 - 299 B5055_AU_South Group 5055 - 300 B5056_AU_West Group 5056 - 301 B5057_AU_Tasmani Group 5057 - 302 B5058_AU_North Group 5058 - 303 B5059_AU_YSF001 Group 5059 - 304 B7141_PA_P_City Group 7141 - 305 B7142_PA_Colon Group 7142 - 306 B7143_PA_WiresX Group 7143 - 307 B7300_CL_CE0 Group 7300 - 308 B7301_CL_CE1 Group 7301 - 309 B7302_CL_CE2 Group 7302 - 310 B7303_CL_CE3 Group 7303 - 311 B7304_CL_CE4 Group 7304 - 312 B7305_CL_CE5 Group 7305 - 313 B7306_CL_CE6 Group 7306 - 314 B7307_CL_CE7 Group 7307 - 315 B7308_CL_CE8 Group 7308 - 316 B7309_CL_CE9 Group 7309 - 317 B8951_BM_TAC_1 Group 8951 - 318 B8952_BM_TAC_2 Group 8952 - 319 B8953_BM_TAC_3 Group 8953 - 320 B8954_BM_TAC_4 Group 8954 - 321 B8955_BM_TAC_5 Group 8955 - 322 B8956_BM_TAC_6 Group 8956 - 323 B8957_BM_TAC_7 Group 8957 - 324 B8958_BM_TAC_8 Group 8958 - 325 B8959_BM_TAC_9 Group 8959 - 326 B9112_Emcom_EU Group 9112 - 327 B9911_Emcom_US Group 9911 - 328 B9990_Parrot Private 9990 - 329 d9998_Parrot_1 Group 9998 - 330 d9999_Audio_Test Group 9999 - 331 B26200_DE_TAC_1 Group 26200 - 332 B26223_DE_Chaos Group 26223 - 333 B26299_DE_TAC_2 Group 26299 - 334 B31061_Cal_1 Group 31061 - 335 B31062_Mtn_West Group 31062 - 336 B31063_Mtn_West1 Group 31063 - 337 B31065_NorCal_A* Group 31065 - 338 B31066_SoCal Group 31066 - 339 B31067_SoCal_1 Group 31067 - 340 B31068_NorCal Group 31068 - 341 B31069_NorCal_1 Group 31069 - 342 B31078_PAPA_XLX Group 31078 - 343 B31089_Hytera_US Group 31089 - 344 B31090_US_Area_0 Group 31090 - 345 B31091_US_Area_1 Group 31091 - 346 B31092_US_Area_2 Group 31092 - 347 B31093_US_Area_3 Group 31093 - 348 B31094_US_Area_4 Group 31094 - 349 B31095_US_Area_5 Group 31095 - 350 B31096_US_Area_6 Group 31096 - 351 B31097_US_Area_7 Group 31097 - 352 B31098_US_Area_8 Group 31098 - 353 B31099_US_Area_9 Group 31099 - 354 B31120_FL_TAC Group 31120 - 355 B31121_FL_FCDMR Group 31121 - 356 B31122_FL_WC Group 31122 - 357 B31123_FL_TreasC Group 31123 - 358 B31124_FL_SE Group 31124 - 359 B31125_FL_Disney Group 31125 - 360 B31127_FL_MNDMR Group 31127 - 361 B31131_GA_Atlant Group 31131 - 362 B31151_HI_Maui Group 31151 - 363 B31152_HI_Honolu Group 31152 - 364 B31153_HI_Hawaii Group 31153 - 365 B31154_HI_Kauai Group 31154 - 366 B31160_ID_ARES Group 31160 - 367 B31171_IL_CHI-Ne Group 31171 - 368 B31189_IN_Cross Group 31189 - 369 B31190_IA_Chat Group 31190 - 370 B31191_IA_DSM_1 Group 31191 - 371 B31192_IA_ALO_2 Group 31192 - 372 B31193_IA_NW_3 Group 31193 - 373 B31194_IA_SW_4 Group 31194 - 374 B31195_IA_SE_5 Group 31195 - 375 B31196_IA_CID_6 Group 31196 - 376 B31198_IA_NWS_DV Group 31198 - 377 B31199_IA_NWS_DM Group 31199 - 378 B31201_KS_BYRG Group 31201 - 379 B31261_MI_State1 Group 31261 - 380 B31262_MI_State2 Group 31262 - 381 B31263_MI_Event1 Group 31263 - 382 B31265_MI_Event3 Group 31265 - 383 B31269_MI_WMTG Group 31269 - 384 B31274_MN_AARG Group 31274 - 385 B31301_MT_MPRG Group 31301 - 386 B31302_MT_MPRG_2 Group 31302 - 387 B31321_NV_NV_1 Group 31321 - 388 B31322_NV_VOAD Group 31322 - 389 B31325_NV_HXO Group 31325 - 390 B31327_NV_LasVeg Group 31327 - 391 B31328_NV_SNARS Group 31328 - 392 B31329_NV_SNARS2 Group 31329 - 393 B31340_NJ_NJPA_* Group 31340 - 394 B31341_NJ_SJersy Group 31341 - 395 B31342_NJ_NJersy Group 31342 - 396 B31360_NY/NJ/PA Group 31360 - 397 B31361_NY_Upstat Group 31361 - 398 B31362_NY_Metro Group 31362 - 399 B31363_NY_ADK Group 31363 - 400 B31364_NY_LwrHud Group 31364 - 401 B31367_NY_STier Group 31367 - 402 B31420_PA_ACS Group 31420 - 403 B31421_PA_TAC Group 31421 - 404 B31422_PA_WestPA Group 31422 - 405 B31428_PA_RF-IT Group 31428 - 406 B31429_PA_Zednet Group 31429 - 407 B31481_TX_North Group 31481 - 408 B31482_TX_South Group 31482 - 409 B31483_TX_West Group 31483 - 410 B31485_TX_Amaril Group 31485 - 411 B31530_PNW-West Group 31530 - 412 B31533_WA_ARES Group 31533 - 413 B31551_WI_Linkhu Group 31551 - 414 B31555_WI_DMR Group 31555 - 415 B31665_TGIF Group 31665 - 416 B31666_DMR_Anarc Group 31666 - 417 B31697_Ru_Americ Group 31697 - 418 B31699_Gr_Americ Group 31699 - 419 B31771_PNWR Group 31771 - 420 d103126_MI_2 Group 103126 - 421 d103153_WA_2 Group 103153 - 422 d102187_PNW_2 Group 103187 - 423 B316272_NASA Group 316272 - 424 B316273_JSC Group 316273 - 425 B316274_KSC Group 316274 - 426 APRS_BM Private 315999 - 427 d3777215_Comm_1 Group 3777215 - 428 ALL_CALL All 16777215 - # Table of group lists. # 1) Group list number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of contacts: numbers and ranges (N-M) separated by comma # Grouplist Name Contacts 1 Hotspot_Rx_List 4,75,292-293,327,411-412,419,423 2 PNW_All 5,11,265-269,271,280-281,283,329-330,420-422,427 # Table of text messages. # 1) Message number: 1-50 # 2) Text: up to 144 characters # Message Text 1 Hello # Unique DMR ID and name of this radio. ID: 12345678 Name: YourCall-Here # Text displayed when the radio powers up. Intro Line 1: YourName Intro Line 2: YourCall dmrconfig-master/examples/md380-baynet-full-codeplug-rev1.conf000066400000000000000000000136761354060760700245570ustar00rootroot00000000000000# # Configuration generated 2018/11/12 by dmrconfig, version 0.9.193 # Radio: TYT MD-380 Last Programmed Date: 2018-03-29 10:33:50 CPS Software Version: V01.34 # Table of digital channels. # 1) Channel number: 1-1000 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Low # 6) Scan list: - or index in Scanlist table # 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555 # 8) Receive only: -, + # 9) Admit criteria: -, Free, Color # 10) Color code: 0, 1, 2, 3... 15 # 11) Time slot: 1 or 2 # 12) Receive group list: - or index in Grouplist table # 13) Contact for transmit: - or index in Contacts table # Digital Name Receive Transmit Power Scan TOT RO Admit Color Slot RxGL TxContact 1 Black_DMR 444.350 +5 High - 60 - - 1 2 - 15 # BayNet 2 Home_BayNet 439.3125 +0 Low - 540 - - 1 2 - 15 # BayNet 6 USZ_BayNet 441.950 +5 High - 60 - - 1 2 - 15 # BayNet 7 Home_TAC_310 439.3125 +0 Low - 540 - - 1 2 - 6 # TAC_310 8 USZ_TAC310 441.950 +5 High - 60 - - 1 2 - 6 # TAC_310 # Table of analog channels. # 1) Channel number: 1-1000 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Low # 6) Scan list: - or index # 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555 # 8) Receive only: -, + # 9) Admit criteria: -, Free, Tone # 10) Squelch level: Normal, Tight # 11) Guard tone for receive, or '-' to disable # 12) Guard tone for transmit, or '-' to disable # 13) Bandwidth in kHz: 12.5, 20, 25 # Analog Name Receive Transmit Power Scan TOT RO Admit Squelch RxTone TxTone Width 3 Black_FM 443.225 +5 High - - - - Normal 100.0 100.0 25 4 Simplex_446 446.000 +0 High - - - - Normal - - 25 5 Crystal_FM 443.550 +5 High - - - - Normal - 100.0 25 # Table of channel zones. # 1) Zone number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of channels: numbers and ranges (N-M) separated by comma # Zone Name Channels 1 Fav's 1-8 2 Bay_Area 1,3,5-6,8 3 Hot_Spot 2,7 # Table of scan lists. # 1) Scan list number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) Priority channel 1 (50% of scans): -, Sel or index # 4) Priority channel 2 (25% of scans): -, Sel or index # 5) Designated transmit channel: Last, Sel or index # 6) List of channels: numbers and ranges (N-M) separated by comma # Scanlist Name PCh1 PCh2 TxCh Channels 1 Daly_City Sel Sel Last - 2 Oakland Sel Sel Last - 3 Palo_Alto Sel Sel Last - 4 San_Jose_4 Sel Sel Last - 5 Moffett Sel Sel Last - 6 Auburn Sel Sel Last - 7 Bodega Sel Sel Last - 8 Dixon Sel Sel Last - 9 Fremont_1 Sel Sel Last - 10 Fremont_2 Sel Sel Last - 11 Gilroy Sel Sel Last - 12 Gualala Sel Sel Last - 13 Livermore Sel Sel Last - 14 Mariposa_MB Sel Sel Last - 15 Milpitas Sel Sel Last - 16 Modesto Sel Sel Last - 17 Mt._Oso Sel Sel Last - 18 New_Cuyama Sel Sel Last - 19 Novato Sel Sel Last - 20 Pittsburg Sel Sel Last - 21 Pleasanton Sel Sel Last - 22 Salinas Sel Sel Last - 23 San_Jose_1 Sel Sel Last - 24 San_Jose_2 Sel Sel Last - 25 San_Jose_3 Sel Sel Last - 26 San_Luis_Obispo Sel Sel Last - 27 Sanel_Mtn Sel Sel Last - 28 Santa_Cruz Sel Sel Last - 29 Santa_Maria Sel Sel Last - 30 Santa_Rosa Sel Sel Last - 31 Sebastopol Sel Sel Last - 32 Sonoma Sel Sel Last - 33 Sonoma_Mtn Sel Sel Last 1 34 Sonora Sel Sel Last - 35 S._Lake_Tahoe Sel Sel Last - 36 Tuolumne Sel Sel Last - 37 Turlock Sel Sel Last - 38 Walnut_Creek Sel Sel Last - 39 Talk_Around Sel Sel Last - # Table of contacts. # 1) Contact number: 1-1000 # 2) Name: up to 16 characters, use '_' instead of space # 3) Call type: Group, Private, All # 4) Call ID: 1...16777215 # 5) Call receive tone: -, + # Contact Name Type ID RxTone 1 Local Group 2 - 2 Reflector_CQ Group 9 - 3 World_Wide Group 91 - 4 North_America Group 93 - 5 Simplex Group 99 - 6 TAC_310 Group 310 - 7 TAC_311 Group 311 - 8 TAC_312 Group 312 - 9 California Group 3106 - 10 Parrot Private 9990 - 11 CAL_1 Group 31061 - 12 Mountain_West Group 31062 - 13 Cactus Group 3185 - 14 Adventure Group 31772 - 15 BayNet Group 31075 - 16 Santa_Clara Group 31064 - # Table of group lists. # 1) Group list number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of contacts: numbers and ranges (N-M) separated by comma # Grouplist Name Contacts 1 Amateur_T2 1-2 # Table of text messages. # 1) Message number: 1-50 # 2) Text: up to 144 characters # Message Text 1 Hello # Unique DMR ID and name of this radio. ID: 1234567 Name: YOURCALL # Text displayed when the radio powers up. Intro Line 1: WELCOME Intro Line 2: YOURCALL dmrconfig-master/examples/md380-generic-norcal-uhf-20161103b.conf000066400000000000000000003573661354060760700243760ustar00rootroot00000000000000# # Configuration generated 2018/11/12 by dmrconfig, version 0.9.193 # Radio: TYT MD-380 Last Programmed Date: 2016-09-11 21:46:59 CPS Software Version: V01.32 # Table of digital channels. # 1) Channel number: 1-1000 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Low # 6) Scan list: - or index in Scanlist table # 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555 # 8) Receive only: -, + # 9) Admit criteria: -, Free, Color # 10) Color code: 0, 1, 2, 3... 15 # 11) Time slot: 1 or 2 # 12) Receive group list: - or index in Grouplist table # 13) Contact for transmit: - or index in Contacts table # Digital Name Receive Transmit Power Scan TOT RO Admit Color Slot RxGL TxContact 1 PAARA_(SJ)_w6otx 444.475 +5 High 1 90 - Color 1 2 2 1 # Local 2 paaraRefCQ 444.475 +5 High 1 90 - Color 1 2 2 2 # Reflector_CQ 3 paaraNCal 444.475 +5 High 1 90 - Color 1 2 2 3 # NorCal 4 paaraNCal1 444.475 +5 High 1 90 - Color 1 2 2 4 # NorCal_1 5 paaraCal 444.475 +5 High 1 90 - Color 1 1 1 5 # California 6 paaraCal1 444.475 +5 High 1 90 - Color 1 1 1 6 # Cal_1 7 paaraCz6 444.475 +5 High 1 90 - Color 1 1 1 7 # Call_Zone_6 8 paaraUSA 444.475 +5 High 1 90 - Color 1 1 1 8 # USA_Bridge 9 paaraNAmer 444.475 +5 High 1 90 - Color 1 1 1 9 # N_America 10 paaraWorld 444.475 +5 High 1 90 - Color 1 1 1 10 # Worldwide 11 paaraBayCom 444.475 +5 High 1 90 - Color 1 1 1 11 # BayCom 12 paaraParrot 444.475 +5 High 1 90 - Color 1 2 2 12 # Parrot 13 paaraTS1 444.475 +5 High 1 90 - Color 1 1 1 5 # California 14 paaraTS2 444.475 +5 High 1 90 - Color 1 2 2 1 # Local 15 paaraTAC310 444.475 +5 High 1 90 - Color 1 1 1 18 # TAC_310 16 paaraTAC311 444.475 +5 High 1 90 - Color 1 1 1 19 # TAC_311 17 paaraTAC312 444.475 +5 High 1 90 - Color 1 1 1 20 # TAC_312 18 paaraUSEmCom 444.475 +5 High 1 90 - Color 1 1 1 22 # US_EmCom 19 paaraSWest 444.475 +5 High 1 90 - Color 1 1 1 23 # Southwest 20 paaraMtnWest 444.475 +5 High 1 90 - Color 1 1 1 25 # Mtn_West 21 paaraMtnWest1 444.475 +5 High 1 90 - Color 1 1 1 26 # Mtn_West_1 22 paaraVenturaCo 444.475 +5 High 1 90 - Color 1 1 1 28 # Ventura_Co. 23 paaraSanDiego 444.475 +5 High 1 90 - Color 1 1 1 29 # San_Diego 24 paaraSoCal 444.475 +5 High 1 90 - Color 1 1 1 30 # SoCal 25 PaloAlto_k6otr 441.850 +5 High 2 90 - Color 1 2 2 1 # Local 26 ploaltoRefCQ 441.850 +5 High 2 90 - Color 1 2 2 2 # Reflector_CQ 27 ploaltoNCal 441.850 +5 High 2 90 - Color 1 2 2 3 # NorCal 28 ploaltoNCal1 441.850 +5 High 2 90 - Color 1 2 2 4 # NorCal_1 29 ploaltoCal 441.850 +5 High 2 90 - Color 1 1 1 5 # California 30 ploaltoCal1 441.850 +5 High 2 90 - Color 1 1 1 6 # Cal_1 31 ploaltoCz6 441.850 +5 High 2 90 - Color 1 1 1 7 # Call_Zone_6 32 ploAltoUSA 441.850 +5 High 2 90 - Color 1 1 1 8 # USA_Bridge 33 ploaltoWorld 441.850 +5 High 2 90 - Color 1 1 1 10 # Worldwide 34 ploaltoNAmer 441.850 +5 High 2 90 - Color 1 1 1 9 # N_America 35 ploaltoBayCom 441.850 +5 High 2 90 - Color 1 1 1 11 # BayCom 36 ploaltoParrot 441.850 +5 High 2 90 - Color 1 2 2 12 # Parrot 37 ploaltoTS1 441.850 +5 High 2 90 - Color 1 1 1 5 # California 38 ploaltoTS2 441.850 +5 High 2 90 - Color 1 2 2 1 # Local 39 ploaltoTAC310 441.850 +5 High 2 90 - Color 1 1 1 18 # TAC_310 40 ploaltoTAC311 441.850 +5 High 2 90 - Color 1 1 1 19 # TAC_311 41 ploaltoTAC312 441.850 +5 High 2 90 - Color 1 1 1 20 # TAC_312 42 ploaltoUSEmCom 441.850 +5 High 2 90 - Color 1 1 1 22 # US_EmCom 43 ploaltoSWest 441.850 +5 High 2 90 - Color 1 1 1 23 # Southwest 44 ploaltoMtnWest 441.850 +5 High 2 90 - Color 1 1 1 25 # Mtn_West 45 ploaltoMtnWest1 441.850 +5 High 2 90 - Color 1 1 1 26 # Mtn_West_1 46 ploaltoVenturaCo 441.850 +5 High 2 90 - Color 1 1 1 28 # Ventura_Co. 47 ploaltoSanDiego 441.850 +5 High 2 90 - Color 1 1 1 29 # San_Diego 48 ploaltoSoCal 441.850 +5 High 2 90 - Color 1 1 1 30 # SoCal 49 DalyCity_n6amg 440.500 +5 High 3 90 - Color 1 2 2 1 # Local 50 dlyctyRefCQ 440.500 +5 High 3 90 - Color 1 2 2 2 # Reflector_CQ 51 dlyctyNCal 440.500 +5 High 3 90 - Color 1 2 2 3 # NorCal 52 dlyctyNCal1 440.500 +5 High 3 90 - Color 1 2 2 4 # NorCal_1 53 dlyctyCal 440.500 +5 High 3 90 - Color 1 1 1 5 # California 54 dlyctyCal1 440.500 +5 High 3 90 - Color 1 1 1 6 # Cal_1 55 dlyctyCz6 440.500 +5 High 3 90 - Color 1 1 1 7 # Call_Zone_6 56 dlyctyUSA 440.500 +5 High 3 90 - Color 1 1 1 8 # USA_Bridge 57 dlyctyNAmer 440.500 +5 High 3 90 - Color 1 1 1 9 # N_America 58 dlyctyWorld 440.500 +5 High 3 90 - Color 1 1 1 10 # Worldwide 59 dlyctyBayCom 440.500 +5 High 3 90 - Color 1 1 1 11 # BayCom 60 dlyctyParrot 440.500 +5 High 3 90 - Color 1 2 2 12 # Parrot 61 dlyctyTS1 440.500 +5 High 3 90 - Color 1 1 1 5 # California 62 dlyctyTS2 440.500 +5 High 3 90 - Color 1 2 2 1 # Local 63 dlyctyTAC310 440.500 +5 High 3 90 - Color 1 1 1 18 # TAC_310 64 dlyctyTAC311 440.500 +5 High 3 90 - Color 1 1 1 19 # TAC_311 65 dlyctyTAC312 440.500 +5 High 3 90 - Color 1 1 1 20 # TAC_312 66 dlyctyUSEmCom 440.500 +5 High 3 90 - Color 1 1 1 22 # US_EmCom 67 dlyctySWest 440.500 +5 High 3 90 - Color 1 1 1 23 # Southwest 68 dlyctyMtnWest 440.500 +5 High 3 90 - Color 1 1 1 25 # Mtn_West 69 dlyctyMtnWest1 440.500 +5 High 3 90 - Color 1 1 1 26 # Mtn_West_1 70 dlyctyVenturaCo 440.500 +5 High 3 90 - Color 1 1 1 28 # Ventura_Co. 71 dlyctySanDiego 440.500 +5 High 3 90 - Color 1 1 1 29 # San_Diego 72 dlyctySoCal 440.500 +5 High 3 90 - Color 1 1 1 30 # SoCal 73 MoffettFld_w6cmu 443.825 +5 High 4 90 - Color 1 2 2 1 # Local 74 moffetRefCQ 443.825 +5 High 4 90 - Color 1 2 2 2 # Reflector_CQ 75 moffetNCal 443.825 +5 High 4 90 - Color 1 2 2 3 # NorCal 76 moffetNCal1 443.825 +5 High 4 90 - Color 1 2 2 4 # NorCal_1 77 moffetCal 443.825 +5 High 4 90 - Color 1 1 1 5 # California 78 moffetCal1 443.825 +5 High 4 90 - Color 1 1 1 6 # Cal_1 79 moffetCz6 443.825 +5 High 4 90 - Color 1 1 1 7 # Call_Zone_6 80 moffetUSA 443.825 +5 High 4 90 - Color 1 1 1 8 # USA_Bridge 81 moffetNAmer 443.825 +5 High 4 90 - Color 1 1 1 9 # N_America 82 moffetWorld 443.825 +5 High 4 90 - Color 1 1 1 10 # Worldwide 83 moffetBayCom 443.825 +5 High 4 90 - Color 1 1 1 11 # BayCom 84 moffetParrot 443.825 +5 High 4 90 - Color 1 2 2 12 # Parrot 85 moffetTS1 443.825 +5 High 4 90 - Color 1 1 1 5 # California 86 moffetTS2 443.825 +5 High 4 90 - Color 1 2 2 1 # Local 87 moffetTAC310 443.825 +5 High 4 90 - Color 1 1 1 18 # TAC_310 88 moffetTAC311 443.825 +5 High 4 90 - Color 1 1 1 19 # TAC_311 89 moffetTAC312 443.825 +5 High 4 90 - Color 1 1 1 20 # TAC_312 90 moffetUSEmCom 443.825 +5 High 4 90 - Color 1 1 1 22 # US_EmCom 91 moffetSWest 443.825 +5 High 4 90 - Color 1 1 1 23 # Southwest 92 moffetMtnWest 443.825 +5 High 4 90 - Color 1 1 1 25 # Mtn_West 93 moffetMtnWest1 443.825 +5 High 4 90 - Color 1 1 1 26 # Mtn_West_1 94 moffetVenturaCo 443.825 +5 High 4 90 - Color 1 1 1 28 # Ventura_Co. 95 moffetSanDiego 443.825 +5 High 4 90 - Color 1 1 1 29 # San_Diego 96 moffetSoCal 443.825 +5 High 4 90 - Color 1 1 1 30 # SoCal 97 SanJose_k6hle 444.0375 +5 High 5 90 - Color 1 2 2 1 # Local 98 sanjseRefCQ 444.0375 +5 High 5 90 - Color 1 2 2 2 # Reflector_CQ 99 sanjseNCal 444.0375 +5 High 5 90 - Color 1 2 2 3 # NorCal 100 sanjseNCal1 444.0375 +5 High 5 90 - Color 1 2 2 4 # NorCal_1 101 sanjseCal 444.0375 +5 High 5 90 - Color 1 1 1 5 # California 102 sanjseCal1 444.0375 +5 High 5 90 - Color 1 1 1 6 # Cal_1 103 sanjseCz6 444.0375 +5 High 5 90 - Color 1 1 1 7 # Call_Zone_6 104 sanjseUSA 444.0375 +5 High 5 90 - Color 1 1 1 8 # USA_Bridge 105 sanjseNAmer 444.0375 +5 High 5 90 - Color 1 1 1 9 # N_America 106 sanjseWorld 444.0375 +5 High 5 90 - Color 1 1 1 10 # Worldwide 107 sanjseBayCom 444.0375 +5 High 5 90 - Color 1 1 1 11 # BayCom 108 sanjseParrot 444.0375 +5 High 5 90 - Color 1 2 2 12 # Parrot 109 sanjseTS1 444.0375 +5 High 5 90 - Color 1 1 1 5 # California 110 sanjseTS2 444.0375 +5 High 5 90 - Color 1 2 2 1 # Local 111 sanjseTAC310 444.0375 +5 High 5 90 - Color 1 1 1 18 # TAC_310 112 sanjseTAC311 444.0375 +5 High 5 90 - Color 1 1 1 19 # TAC_311 113 sanjseTAC312 444.0375 +5 High 5 90 - Color 1 1 1 20 # TAC_312 114 sanjseUSEmCom 444.0375 +5 High 5 90 - Color 1 1 1 22 # US_EmCom 115 sanjseSWest 444.0375 +5 High 5 90 - Color 1 1 1 23 # Southwest 116 sanjseMtnWest 444.0375 +5 High 5 90 - Color 1 1 1 25 # Mtn_West 117 sanjseMtnWest1 444.0375 +5 High 5 90 - Color 1 1 1 26 # Mtn_West_1 118 sanjseVenturaCo 444.0375 +5 High 5 90 - Color 1 1 1 28 # Ventura_Co. 119 sanjseSanDiego 444.0375 +5 High 5 90 - Color 1 1 1 29 # San_Diego 120 sanjseSoCal 444.0375 +5 High 5 90 - Color 1 1 1 30 # SoCal 121 CrystalPk_k6hle 444.025 +5 High 6 90 - Color 1 2 2 1 # Local 122 crstlpkRefCQ 444.025 +5 High 6 90 - Color 1 2 2 2 # Reflector_CQ 123 crstlpkNCal 444.025 +5 High 6 90 - Color 1 2 2 3 # NorCal 124 crstlpkNCal1 444.025 +5 High 6 90 - Color 1 2 2 4 # NorCal_1 125 crstlpkCal 444.025 +5 High 6 90 - Color 1 1 1 5 # California 126 crstlpkCal1 444.025 +5 High 6 90 - Color 1 1 1 6 # Cal_1 127 crstlpkCz6 444.025 +5 High 6 90 - Color 1 1 1 7 # Call_Zone_6 128 crstlpkUSA 444.025 +5 High 6 90 - Color 1 1 1 8 # USA_Bridge 129 crstlpkNAmer 444.025 +5 High 6 90 - Color 1 1 1 9 # N_America 130 crstlpkWorld 444.025 +5 High 6 90 - Color 1 1 1 10 # Worldwide 131 crstlpkBayCom 444.025 +5 High 6 90 - Color 1 1 1 11 # BayCom 132 crstlpkParrot 444.025 +5 High 6 90 - Color 1 2 2 12 # Parrot 133 crstlpkTS1 444.025 +5 High 6 90 - Color 1 1 1 5 # California 134 crstlpkTS2 444.025 +5 High 6 90 - Color 1 2 2 1 # Local 135 crstlpkTAC310 444.025 +5 High 6 90 - Color 1 1 1 18 # TAC_310 136 crstlpkTAC311 444.025 +5 High 6 90 - Color 1 1 1 19 # TAC_311 137 crstlpkTAC312 444.025 +5 High 6 90 - Color 1 1 1 20 # TAC_312 138 crstlpkUSEmCom 444.025 +5 High 6 90 - Color 1 1 1 22 # US_EmCom 139 crstlpkSWest 444.025 +5 High 6 90 - Color 1 1 1 23 # Southwest 140 crstlpkMtnWest 444.025 +5 High 6 90 - Color 1 1 1 25 # Mtn_West 141 crstlpkMtnWest1 444.025 +5 High 6 90 - Color 1 1 1 26 # Mtn_West_1 142 crstlpkVenturaCo 444.025 +5 High 6 90 - Color 1 1 1 28 # Ventura_Co. 143 crstlpkSanDiego 444.025 +5 High 6 90 - Color 1 1 1 29 # San_Diego 144 crstlpkSoCal 444.025 +5 High 6 90 - Color 1 1 1 30 # SoCal 145 LomaPrieta_w6yyy 440.0375 +5 High 7 90 - Color 1 2 2 1 # Local 146 lmaprtaRefCQ 440.0375 +5 High 7 90 - Color 1 2 2 2 # Reflector_CQ 147 lmaprtaNCal 440.0375 +5 High 7 90 - Color 1 2 2 3 # NorCal 148 lmaprtaNCal1 440.0375 +5 High 7 90 - Color 1 2 2 4 # NorCal_1 149 lmaprtaCal 440.0375 +5 High 7 90 - Color 1 1 1 5 # California 150 lmaprtaCal1 440.0375 +5 High 7 90 - Color 1 1 1 6 # Cal_1 151 lmaprtaCz6 440.0375 +5 High 7 90 - Color 1 1 1 7 # Call_Zone_6 152 lmaprtaUSA 440.0375 +5 High 7 90 - Color 1 1 1 8 # USA_Bridge 153 lmaprtaNAmer 440.0375 +5 High 7 90 - Color 1 1 1 9 # N_America 154 lmaprtaWorld 440.0375 +5 High 7 90 - Color 1 1 1 10 # Worldwide 155 lmaprtaBayCom 440.0375 +5 High 7 90 - Color 1 1 1 11 # BayCom 156 lmaprtaParrot 440.0375 +5 High 7 90 - Color 1 2 2 12 # Parrot 157 lmaprtaTS1 440.0375 +5 High 7 90 - Color 1 1 1 5 # California 158 lmaprtaTS2 440.0375 +5 High 7 90 - Color 1 2 2 1 # Local 159 lmaprtaTAC310 440.0375 +5 High 7 90 - Color 1 1 1 18 # TAC_310 160 lmaprtaTAC311 440.0375 +5 High 7 90 - Color 1 1 1 19 # TAC_311 161 lmaprtaTAC312 440.0375 +5 High 7 90 - Color 1 1 1 20 # TAC_312 162 lmaprtaUSEmCom 440.0375 +5 High 7 90 - Color 1 1 1 22 # US_EmCom 163 lmaprtaSWest 440.0375 +5 High 7 90 - Color 1 1 1 23 # Southwest 164 lmaprtaMtnWest 440.0375 +5 High 7 90 - Color 1 1 1 25 # Mtn_West 165 lmaprtaMtnWest1 440.0375 +5 High 7 90 - Color 1 1 1 26 # Mtn_West_1 166 lmaprtaVenturaCo 440.0375 +5 High 7 90 - Color 1 1 1 28 # Ventura_Co. 167 lmaprtaSanDiego 440.0375 +5 High 7 90 - Color 1 1 1 29 # San_Diego 168 lmaprtaSoCal 440.0375 +5 High 7 90 - Color 1 1 1 30 # SoCal 169 Gilroy_k6sia 440.1375 +5 High 8 90 - Color 3 2 2 1 # Local 170 gilroyRefCQ 440.1375 +5 High 8 90 - Color 3 2 2 2 # Reflector_CQ 171 gilroyNCal 440.1375 +5 High 8 90 - Color 3 2 2 3 # NorCal 172 gilroyNCal1 440.1375 +5 High 8 90 - Color 3 2 2 4 # NorCal_1 173 gilroyCal 440.1375 +5 High 8 90 - Color 3 1 1 5 # California 174 gilroyCal1 440.1375 +5 High 8 90 - Color 3 1 1 6 # Cal_1 175 gilroyCz6 440.1375 +5 High 8 90 - Color 3 1 1 7 # Call_Zone_6 176 gilroyUSA 440.1375 +5 High 8 90 - Color 3 1 1 8 # USA_Bridge 177 gilroyNAmer 440.1375 +5 High 8 90 - Color 3 1 1 9 # N_America 178 gilroyWorld 440.1375 +5 High 8 90 - Color 3 1 1 10 # Worldwide 179 gilroyBayCom 440.1375 +5 High 8 90 - Color 3 1 1 11 # BayCom 180 gilroyParrot 440.1375 +5 High 8 90 - Color 3 2 2 12 # Parrot 181 gilroyTS1 440.1375 +5 High 8 90 - Color 3 1 1 5 # California 182 gilroyTS2 440.1375 +5 High 8 90 - Color 3 2 2 1 # Local 183 gilroyTAC310 440.1375 +5 High 8 90 - Color 3 1 1 18 # TAC_310 184 gilroyTAC311 440.1375 +5 High 8 90 - Color 3 1 1 19 # TAC_311 185 gilroyTAC312 440.1375 +5 High 8 90 - Color 3 1 1 20 # TAC_312 186 gilroyUSEmCom 440.1375 +5 High 8 90 - Color 3 1 1 22 # US_EmCom 187 gilroySWest 440.1375 +5 High 8 90 - Color 3 1 1 23 # Southwest 188 gilroyMtnWest 440.1375 +5 High 8 90 - Color 3 1 1 25 # Mtn_West 189 gilroyMtnWest1 440.1375 +5 High 8 90 - Color 3 1 1 26 # Mtn_West_1 190 gilroyVenturaCo 440.1375 +5 High 8 90 - Color 3 1 1 28 # Ventura_Co. 191 gilroySanDiego 440.1375 +5 High 8 90 - Color 3 1 1 29 # San_Diego 192 gilroySoCal 440.1375 +5 High 8 90 - Color 3 1 1 30 # SoCal 193 MtAllison_w6tcp 440.125 +5 High 9 90 - Color 3 2 2 1 # Local 194 mtalsnRefCQ 440.125 +5 High 9 90 - Color 3 2 2 2 # Reflector_CQ 195 mtalsnNCal 440.125 +5 High 9 90 - Color 3 2 2 3 # NorCal 196 mtalsnNCal1 440.125 +5 High 9 90 - Color 3 2 2 4 # NorCal_1 197 mtalsnCal 440.125 +5 High 9 90 - Color 3 1 1 5 # California 198 mtalsnCal1 440.125 +5 High 9 90 - Color 3 1 1 6 # Cal_1 199 mtalsnCz6 440.125 +5 High 9 90 - Color 3 1 1 7 # Call_Zone_6 200 mtalsnUSA 440.125 +5 High 9 90 - Color 3 1 1 8 # USA_Bridge 201 mtalsnNAmer 440.125 +5 High 9 90 - Color 3 1 1 9 # N_America 202 mtalsnWorld 440.125 +5 High 9 90 - Color 3 1 1 10 # Worldwide 203 mtalsnBayCom 440.125 +5 High 9 90 - Color 3 1 1 11 # BayCom 204 mtalsnParrot 440.125 +5 High 9 90 - Color 3 2 2 12 # Parrot 205 mtalsnTS1 440.125 +5 High 9 90 - Color 3 1 1 5 # California 206 mtalsnTS2 440.125 +5 High 9 90 - Color 3 2 2 1 # Local 207 mtalsnTAC310 440.125 +5 High 9 90 - Color 3 1 1 18 # TAC_310 208 mtalsnTAC311 440.125 +5 High 9 90 - Color 3 1 1 19 # TAC_311 209 mtalsnTAC312 440.125 +5 High 9 90 - Color 3 1 1 20 # TAC_312 210 mtalsnUSEmCom 440.125 +5 High 9 90 - Color 3 1 1 22 # US_EmCom 211 mtalsnSWest 440.125 +5 High 9 90 - Color 3 1 1 23 # Southwest 212 mtalsnMtnWest 440.125 +5 High 9 90 - Color 3 1 1 25 # Mtn_West 213 mtalsnMtnWest1 440.125 +5 High 9 90 - Color 3 1 1 26 # Mtn_West_1 214 mtalsnVenturaCo 440.125 +5 High 9 90 - Color 3 1 1 28 # Ventura_Co. 215 mtalsnSanDiego 440.125 +5 High 9 90 - Color 3 1 1 29 # San_Diego 216 mtalsnSoCal 440.125 +5 High 9 90 - Color 3 1 1 30 # SoCal 217 Milpitas_wa6kpx 443.400 +5 High 10 90 - Color 1 2 2 1 # Local 218 milptsRefCQ 443.400 +5 High 10 90 - Color 1 2 2 2 # Reflector_CQ 219 milptsNCal 443.400 +5 High 10 90 - Color 1 2 2 3 # NorCal 220 milptsNCal1 443.400 +5 High 10 90 - Color 1 2 2 4 # NorCal_1 221 milptsCal 443.400 +5 High 10 90 - Color 1 1 1 5 # California 222 milptsCal1 443.400 +5 High 10 90 - Color 1 1 1 6 # Cal_1 223 milptsCz6 443.400 +5 High 10 90 - Color 1 1 1 7 # Call_Zone_6 224 milptsUSA 443.400 +5 High 10 90 - Color 1 1 1 8 # USA_Bridge 225 milptsNAmer 443.400 +5 High 10 90 - Color 1 1 1 9 # N_America 226 milptsWorld 443.400 +5 High 10 90 - Color 1 1 1 10 # Worldwide 227 milptsBayCom 443.400 +5 High 10 90 - Color 1 1 1 11 # BayCom 228 milptsParrot 443.400 +5 High 10 90 - Color 1 2 2 12 # Parrot 229 milptsTS1 443.400 +5 High 10 90 - Color 1 1 1 5 # California 230 milptsTS2 443.400 +5 High 10 90 - Color 1 2 2 1 # Local 231 milptsTAC310 443.400 +5 High 10 90 - Color 1 1 1 18 # TAC_310 232 milptsTAC311 443.400 +5 High 10 90 - Color 1 1 1 19 # TAC_311 233 milptsTAC312 443.400 +5 High 10 90 - Color 1 1 1 20 # TAC_312 234 milptsUSEmCom 443.400 +5 High 10 90 - Color 1 1 1 22 # US_EmCom 235 milptsSWest 443.400 +5 High 10 90 - Color 1 1 1 23 # Southwest 236 milptsMtnWest 443.400 +5 High 10 90 - Color 1 1 1 25 # Mtn_West 237 milptsMtnWest1 443.400 +5 High 10 90 - Color 1 1 1 26 # Mtn_West_1 238 milptsVenturaCo 443.400 +5 High 10 90 - Color 1 1 1 28 # Ventura_Co. 239 milptsSanDiego 443.400 +5 High 10 90 - Color 1 1 1 29 # San_Diego 240 milptsSoCal 443.400 +5 High 10 90 - Color 1 1 1 30 # SoCal 241 Oakland_k6lnk 443.500 +5 High 11 90 - Color 1 2 2 1 # Local 242 oaklndRefCQ 443.500 +5 High 11 90 - Color 1 2 2 2 # Reflector_CQ 243 oaklndNCal 443.500 +5 High 11 90 - Color 1 2 2 3 # NorCal 244 oaklndNCal1 443.500 +5 High 11 90 - Color 1 2 2 4 # NorCal_1 245 oaklndCal 443.500 +5 High 11 90 - Color 1 1 1 5 # California 246 oaklndCal1 443.500 +5 High 11 90 - Color 1 1 1 6 # Cal_1 247 oaklndCz6 443.500 +5 High 11 90 - Color 1 1 1 7 # Call_Zone_6 248 oaklndUSA 443.500 +5 High 11 90 - Color 1 1 1 8 # USA_Bridge 249 oaklndNAmer 443.500 +5 High 11 90 - Color 1 1 1 9 # N_America 250 oaklndWorld 443.500 +5 High 11 90 - Color 1 1 1 10 # Worldwide 251 oaklndBayCom 443.500 +5 High 11 90 - Color 1 1 1 11 # BayCom 252 oaklndParrot 443.500 +5 High 11 90 - Color 1 2 2 12 # Parrot 253 oaklndTS1 443.500 +5 High 11 90 - Color 1 1 1 5 # California 254 oaklndTS2 443.500 +5 High 11 90 - Color 1 2 2 3 # NorCal 255 oaklndTAC310 443.500 +5 High 11 90 - Color 1 1 1 18 # TAC_310 256 oaklndTAC311 443.500 +5 High 11 90 - Color 1 1 1 19 # TAC_311 257 oaklndTAC312 443.500 +5 High 11 90 - Color 1 1 1 20 # TAC_312 258 oaklndUSEmCom 443.500 +5 High 11 90 - Color 1 1 1 22 # US_EmCom 259 oaklndSWest 443.500 +5 High 11 90 - Color 1 1 1 23 # Southwest 260 oaklndMtnWest 443.500 +5 High 11 90 - Color 1 1 1 25 # Mtn_West 261 oaklndMtnWest1 443.500 +5 High 11 90 - Color 1 1 1 26 # Mtn_West_1 262 oaklndVenturaCo 443.500 +5 High 11 90 - Color 1 1 1 28 # Ventura_Co. 263 oaklndSanDiego 443.500 +5 High 11 90 - Color 1 1 1 29 # San_Diego 264 oaklndSoCal 443.500 +5 High 11 90 - Color 1 1 1 30 # SoCal 265 SantaCruz_wa6ycz 442.5375 +5 High 12 90 - Color 1 2 2 1 # Local 266 sntacrzRefCQ 442.5375 +5 High 12 90 - Color 1 2 2 2 # Reflector_CQ 267 sntacrzNCal 442.5375 +5 High 12 90 - Color 1 2 2 3 # NorCal 268 sntacrzNCal1 442.5375 +5 High 12 90 - Color 1 2 2 4 # NorCal_1 269 sntacrzCal 442.5375 +5 High 12 90 - Color 1 1 1 5 # California 270 sntacrzCal1 442.5375 +5 High 12 90 - Color 1 1 1 6 # Cal_1 271 sntacrzCz6 442.5375 +5 High 12 90 - Color 1 1 1 7 # Call_Zone_6 272 sntacrzUSA 442.5375 +5 High 12 90 - Color 1 1 1 8 # USA_Bridge 273 sntacrzNAmer 442.5375 +5 High 12 90 - Color 1 1 1 9 # N_America 274 sntacrzWorld 442.5375 +5 High 12 90 - Color 1 1 1 10 # Worldwide 275 sntacrzBayCom 442.5375 +5 High 12 90 - Color 1 1 1 11 # BayCom 276 sntacrzParrot 442.5375 +5 High 12 90 - Color 1 2 2 12 # Parrot 277 sntacrzTS1 442.5375 +5 High 12 90 - Color 1 1 1 5 # California 278 sntacrzTS2 442.5375 +5 High 12 90 - Color 1 2 2 1 # Local 279 sntacrzTAC310 442.5375 +5 High 12 90 - Color 1 1 1 18 # TAC_310 280 sntacrzTAC311 442.5375 +5 High 12 90 - Color 1 1 1 19 # TAC_311 281 sntacrzTAC312 442.5375 +5 High 12 90 - Color 1 1 1 20 # TAC_312 282 sntacrzUSEmCom 442.5375 +5 High 12 90 - Color 1 1 1 22 # US_EmCom 283 sntacrzSWest 442.5375 +5 High 12 90 - Color 1 1 1 23 # Southwest 284 sntacrzMtnWest 442.5375 +5 High 12 90 - Color 1 1 1 25 # Mtn_West 285 sntacrzMtnWest1 442.5375 +5 High 12 90 - Color 1 1 1 26 # Mtn_West_1 286 sntacrzVenturaCo 442.5375 +5 High 12 90 - Color 1 1 1 28 # Ventura_Co. 287 sntacrzSanDiego 442.5375 +5 High 12 90 - Color 1 1 1 29 # San_Diego 288 sntacrzSoCal 442.5375 +5 High 12 90 - Color 1 1 1 30 # SoCal 289 Salinas_w6jso 444.525 +5 High 13 90 - Color 1 2 2 1 # Local 290 salinsRefCQ 444.525 +5 High 13 90 - Color 1 2 2 2 # Reflector_CQ 291 salinsNCal 444.525 +5 High 13 90 - Color 1 2 2 3 # NorCal 292 salinsNCal1 444.525 +5 High 13 90 - Color 1 2 2 4 # NorCal_1 293 salinsCal 444.525 +5 High 13 90 - Color 1 1 1 5 # California 294 salinsCal1 444.525 +5 High 13 90 - Color 1 1 1 6 # Cal_1 295 salinsCz6 444.525 +5 High 13 90 - Color 1 1 1 7 # Call_Zone_6 296 salinsUSA 444.525 +5 High 13 90 - Color 1 1 1 8 # USA_Bridge 297 salinsNAmer 444.525 +5 High 13 90 - Color 1 1 1 9 # N_America 298 salinsWorld 444.525 +5 High 13 90 - Color 1 1 1 10 # Worldwide 299 salinsBayCom 444.525 +5 High 13 90 - Color 1 1 1 11 # BayCom 300 salinsParrot 444.525 +5 High 13 90 - Color 1 2 2 12 # Parrot 301 salinsTS1 444.525 +5 High 13 90 - Color 1 1 1 5 # California 302 salinsTS2 444.525 +5 High 13 90 - Color 1 2 2 1 # Local 303 salinsTAC310 444.525 +5 High 13 90 - Color 1 1 1 18 # TAC_310 304 salinsTAC311 444.525 +5 High 13 90 - Color 1 1 1 19 # TAC_311 305 salinsTAC312 444.525 +5 High 13 90 - Color 1 1 1 20 # TAC_312 306 salinsUSEmCom 444.525 +5 High 13 90 - Color 1 1 1 22 # US_EmCom 307 salinsSWest 444.525 +5 High 13 90 - Color 1 1 1 23 # Southwest 308 salinsMtnWest 444.525 +5 High 13 90 - Color 1 1 1 25 # Mtn_West 309 salinsMtnWest1 444.525 +5 High 13 90 - Color 1 1 1 26 # Mtn_West_1 310 salinsVenturaCo 444.525 +5 High 13 90 - Color 1 1 1 28 # Ventura_Co. 311 salinsSanDiego 444.525 +5 High 13 90 - Color 1 1 1 29 # San_Diego 312 salinsSoCal 444.525 +5 High 13 90 - Color 1 1 1 30 # SoCal 313 BlankDigital1 430.000 +0 Low 15 60 - - 1 1 - - 314 BlankDigital2 430.000 +0 Low 15 60 - - 1 1 - - 315 BlankDigital3 430.000 +0 Low 15 60 - - 1 1 - - 316 BlankDigital4 430.000 +0 Low 15 60 - - 1 1 - - 317 Direct_U1 441.000 +0 High 14 90 - - 1 1 - 15 # Direct_Mode 318 Direct_U2 446.500 +0 High 14 90 - - 1 1 - 15 # Direct_Mode 319 Direct_U3 441.0125 +0 High 14 90 - - 1 1 - 15 # Direct_Mode 320 Direct_U4 440.9875 +0 High 14 90 - - 1 1 - 15 # Direct_Mode 321 Direct_U5 446.5125 +0 High 14 90 - - 1 1 - 15 # Direct_Mode 322 Direct_U6 445.9875 +0 High 14 90 - - 1 1 - 15 # Direct_Mode 333 Pleasanton_n6ldj 444.275 +5 High 16 90 - Color 1 2 2 1 # Local 334 plsntnRefCQ 444.275 +5 High 16 90 - Color 1 2 2 2 # Reflector_CQ 335 plsntnNcal 444.275 +5 High 16 90 - Color 1 2 2 3 # NorCal 336 plsntnNCal1 444.275 +5 High 16 90 - Color 1 2 2 4 # NorCal_1 337 plsntnCal 444.275 +5 High 16 90 - Color 1 1 1 5 # California 338 plsntnCal1 444.275 +5 High 16 90 - Color 1 1 1 6 # Cal_1 339 plsntnCz6 444.275 +5 High 16 90 - Color 1 1 1 7 # Call_Zone_6 340 plsntnUSA 444.275 +5 High 16 90 - Color 1 1 1 8 # USA_Bridge 341 plsntnNAmer 444.275 +5 High 16 90 - Color 1 1 1 9 # N_America 342 plsntnWorld 444.275 +5 High 16 90 - Color 1 1 1 10 # Worldwide 343 plsntnBayCom 444.275 +5 High 16 90 - Color 1 1 1 11 # BayCom 344 plsntnParrot 444.275 +5 High 16 90 - Color 1 2 2 12 # Parrot 345 plsntnTS1 444.275 +5 High 16 90 - Color 1 1 1 5 # California 346 plsntnTS2 444.275 +5 High 16 90 - Color 1 2 2 1 # Local 347 plsntnTAC310 444.275 +5 High 16 90 - Color 1 1 1 18 # TAC_310 348 plsntnTAC311 444.275 +5 High 16 90 - Color 1 1 1 19 # TAC_311 349 plsntnTAC312 444.275 +5 High 16 90 - Color 1 1 1 20 # TAC_312 350 plsntnUSEmCom 444.275 +5 High 16 90 - Color 1 1 1 22 # US_EmCom 351 plsntnSWest 444.275 +5 High 16 90 - Color 1 1 1 23 # Southwest 352 plsntnMtnWest 444.275 +5 High 16 90 - Color 1 1 1 25 # Mtn_West 353 plsntnMtnWest1 444.275 +5 High 16 90 - Color 1 1 1 26 # Mtn_West_1 354 plsntnVenturaCo 444.275 +5 High 16 90 - Color 1 1 1 28 # Ventura_Co. 355 plsntnSanDiego 444.275 +5 High 16 90 - Color 1 1 1 29 # San_Diego 356 plsntnSoCal 444.275 +5 High 16 90 - Color 1 1 1 30 # SoCal 357 Livermore_k6lrg 441.825 +5 High 17 90 - Color 1 2 2 1 # Local 358 lvrmreRefCQ 441.825 +5 High 17 90 - Color 1 2 2 2 # Reflector_CQ 359 lvrmreNCal 441.825 +5 High 17 90 - Color 1 2 2 3 # NorCal 360 lvrmreNCal1 441.825 +5 High 17 90 - Color 1 2 2 4 # NorCal_1 361 lvrmreCal 441.825 +5 High 17 90 - Color 1 1 1 5 # California 362 lvrmreCal1 441.825 +5 High 17 90 - Color 1 1 1 6 # Cal_1 363 lvrmreCz6 441.825 +5 High 17 90 - Color 1 1 1 7 # Call_Zone_6 364 lvrmreUSA 441.825 +5 High 17 90 - Color 1 1 1 8 # USA_Bridge 365 lvrmreNAmer 441.825 +5 High 17 90 - Color 1 1 1 9 # N_America 366 lvrmreWorld 441.825 +5 High 17 90 - Color 1 1 1 10 # Worldwide 367 lvrmreBayCom 441.825 +5 High 17 90 - Color 1 1 1 11 # BayCom 368 lvrmreParrot 441.825 +5 High 17 90 - Color 1 2 2 12 # Parrot 369 lvrmreTS1 441.825 +5 High 17 90 - Color 1 1 1 5 # California 370 lvrmreTS2 441.825 +5 High 17 90 - Color 1 2 2 1 # Local 371 lvrmreTAC310 441.825 +5 High 17 90 - Color 1 1 1 18 # TAC_310 372 lvrmreTAC311 441.825 +5 High 17 90 - Color 1 1 1 19 # TAC_311 373 lvrmreTAC312 441.825 +5 High 17 90 - Color 1 1 1 20 # TAC_312 374 lvrmreUSEmCom 441.825 +5 High 17 90 - Color 1 1 1 22 # US_EmCom 375 lvrmreSWest 441.825 +5 High 17 90 - Color 1 1 1 23 # Southwest 376 lvrmreMtnWest 441.825 +5 High 17 90 - Color 1 1 1 25 # Mtn_West 377 lvrmreMtnWest1 441.825 +5 High 17 90 - Color 1 1 1 26 # Mtn_West_1 378 lvrmreVenturaCo 441.825 +5 High 17 90 - Color 1 1 1 28 # Ventura_Co. 379 lvrmreSanDiego 441.825 +5 High 17 90 - Color 1 1 1 29 # San_Diego 380 lvrmreSoCal 441.825 +5 High 17 90 - Color 1 1 1 30 # SoCal 381 Pittsburg_k6pit 440.1375 +5 High 18 90 - Color 2 2 2 1 # Local 382 pitsbrgRefCQ 440.1375 +5 High 18 90 - Color 2 2 2 2 # Reflector_CQ 383 pitsburgNCal 440.1375 +5 High 18 90 - Color 2 2 2 3 # NorCal 384 pitsbrgNCal1 440.1375 +5 High 18 90 - Color 2 2 2 4 # NorCal_1 385 pitsbrgCal 440.1375 +5 High 18 90 - Color 2 1 1 5 # California 386 pitsbrgCal1 440.1375 +5 High 18 90 - Color 2 1 1 6 # Cal_1 387 pitsbrgCz6 440.1375 +5 High 18 90 - Color 2 1 1 7 # Call_Zone_6 388 pitsbrgUSA 440.1375 +5 High 18 90 - Color 2 1 1 8 # USA_Bridge 389 pitsbrgNAmer 440.1375 +5 High 18 90 - Color 2 1 1 9 # N_America 390 pitsbrgWorld 440.1375 +5 High 18 90 - Color 2 1 1 10 # Worldwide 391 pitsbrgBayCom 440.1375 +5 High 18 90 - Color 2 1 1 11 # BayCom 392 pitsbrgParrot 440.1375 +5 High 18 90 - Color 2 2 2 12 # Parrot 393 pitsbrgTS1 440.1375 +5 High 18 90 - Color 2 1 1 5 # California 394 pitsbrgTS2 440.1375 +5 High 18 90 - Color 2 2 2 1 # Local 395 pitsbrgTAC310 440.1375 +5 High 18 90 - Color 2 1 1 18 # TAC_310 396 pitsbrgTAC311 440.1375 +5 High 18 90 - Color 2 1 1 19 # TAC_311 397 pitsbrgTAC312 440.1375 +5 High 18 90 - Color 2 1 1 20 # TAC_312 398 pitsbrgUSEmCom 440.1375 +5 High 18 90 - Color 2 1 1 22 # US_EmCom 399 pitsbrgSWest 440.1375 +5 High 18 90 - Color 2 1 1 23 # Southwest 400 pitsbrgMtnWest 440.1375 +5 High 18 90 - Color 2 1 1 25 # Mtn_West 401 pitsbrgMtnWest1 440.1375 +5 High 18 90 - Color 2 1 1 26 # Mtn_West_1 402 pitsbrgVenturaCo 440.1375 +5 High 18 90 - Color 2 1 1 28 # Ventura_Co. 403 pitsbrgSanDiego 440.1375 +5 High 18 90 - Color 2 1 1 29 # San_Diego 404 pitsbrgSoCal 440.1375 +5 High 18 90 - Color 2 1 1 30 # SoCal 405 WalnutCrk_k6lnk 440.2125 +5 High 19 90 - Color 1 2 2 1 # Local 406 walntcrkRefCQ 440.2125 +5 High 19 90 - Color 1 2 2 2 # Reflector_CQ 407 walntcrkNCal 440.2125 +5 High 19 90 - Color 1 2 2 3 # NorCal 408 walntcrkNCal1 440.2125 +5 High 19 90 - Color 1 2 2 4 # NorCal_1 409 walntcrkCal 440.2125 +5 High 19 90 - Color 1 1 1 5 # California 410 walntcrkCal1 440.2125 +5 High 19 90 - Color 1 1 1 6 # Cal_1 411 walntcrkCz6 440.2125 +5 High 19 90 - Color 1 1 1 7 # Call_Zone_6 412 walntcrkUSA 440.2125 +5 High 19 90 - Color 1 1 1 8 # USA_Bridge 413 walntcrkNAmer 440.2125 +5 High 19 90 - Color 1 1 1 9 # N_America 414 walntcrkWorld 440.2125 +5 High 19 90 - Color 1 1 1 10 # Worldwide 415 walntcrkBayCom 440.2125 +5 High 19 90 - Color 1 1 1 11 # BayCom 416 walntcrkParrot 440.2125 +5 High 19 90 - Color 1 2 2 12 # Parrot 417 walntcrkTS1 440.2125 +5 High 19 90 - Color 1 1 1 5 # California 418 walntcrkTS2 440.2125 +5 High 19 90 - Color 1 2 2 1 # Local 419 walntcrkTAC310 440.2125 +5 High 19 90 - Color 1 1 1 18 # TAC_310 420 walntcrkTAC311 440.2125 +5 High 19 90 - Color 1 1 1 19 # TAC_311 421 walntcrkTAC312 440.2125 +5 High 19 90 - Color 1 1 1 20 # TAC_312 422 walntcrkUSEmCom 440.2125 +5 High 19 90 - Color 1 1 1 22 # US_EmCom 423 walntcrkSWest 440.2125 +5 High 19 90 - Color 1 1 1 23 # Southwest 424 walntcrkMtnWest 440.2125 +5 High 19 90 - Color 1 1 1 25 # Mtn_West 425 walntcrkMtnWest1 440.2125 +5 High 19 90 - Color 1 1 1 26 # Mtn_West_1 426 walntcrkVentura 440.2125 +5 High 19 90 - Color 1 1 1 28 # Ventura_Co. 427 walntcrkSanDiego 440.2125 +5 High 19 90 - Color 1 1 1 29 # San_Diego 428 walnutcrkSoCal 440.2125 +5 High 19 90 - Color 1 1 1 30 # SoCal 429 WalnutCrk2_n6mvt 443.0625 +5 High 20 90 - Color 2 2 2 1 # Local 430 wlntcrk2RefCQ 443.0625 +5 High 20 90 - Color 2 2 2 2 # Reflector_CQ 431 wlntcrk2NCal 443.0625 +5 High 20 90 - Color 2 2 2 3 # NorCal 432 wlntcrk2NCal1 443.0625 +5 High 20 90 - Color 2 2 2 4 # NorCal_1 433 wlntcrk2Cal 443.0625 +5 High 20 90 - Color 2 1 1 5 # California 434 wlntcrk2Cal1 443.0625 +5 High 20 90 - Color 2 1 1 6 # Cal_1 435 wlntcrk2Cz6 443.0625 +5 High 20 90 - Color 2 1 1 7 # Call_Zone_6 436 wlntcrk2USA 443.0625 +5 High 20 90 - Color 2 1 1 8 # USA_Bridge 437 wlntcrk2NAmer 443.0625 +5 High 20 90 - Color 2 1 1 9 # N_America 438 wlntcrk2World 443.0625 +5 High 20 90 - Color 2 1 1 10 # Worldwide 439 wlntcrk2BayCom 443.0625 +5 High 20 90 - Color 2 1 1 11 # BayCom 440 wlntcrk2Parrot 443.0625 +5 High 20 90 - Color 2 2 2 12 # Parrot 441 wlntcrk2TS1 443.0625 +5 High 20 90 - Color 2 1 1 5 # California 442 wlntcrk2TS2 443.0625 +5 High 20 90 - Color 2 2 2 1 # Local 443 wlntcrk2TAC310 443.0625 +5 High 20 90 - Color 2 1 1 18 # TAC_310 444 wlntcrk2TAC311 443.0625 +5 High 20 90 - Color 2 1 1 19 # TAC_311 445 wlntcrk2TAC312 443.0625 +5 High 20 90 - Color 2 1 1 20 # TAC_312 446 wlntcrk2USEmCom 443.0625 +5 High 20 90 - Color 2 1 1 22 # US_EmCom 447 wlntcrk2SWest 443.0625 +5 High 20 90 - Color 2 1 1 23 # Southwest 448 wlntcrk2MtnWest 443.0625 +5 High 20 90 - Color 2 1 1 25 # Mtn_West 449 wlntcrk2MtnWest1 443.0625 +5 High 20 90 - Color 2 1 1 26 # Mtn_West_1 450 wlntcrk2Ventura 443.0625 +5 High 20 90 - Color 2 1 1 28 # Ventura_Co. 451 wlntcrk2SanDiego 443.0625 +5 High 20 90 - Color 2 1 1 29 # San_Diego 452 wlntcrk2SoCal 443.0625 +5 High 20 90 - Color 2 1 1 30 # SoCal 453 Novato_kg6mzv 440.650 +5 High 21 90 - Color 2 2 2 1 # Local 454 novatoRefCQ 440.650 +5 High 21 90 - Color 2 2 2 2 # Reflector_CQ 455 novatoNCal 440.650 +5 High 21 90 - Color 2 2 2 3 # NorCal 456 novatoNCal1 440.650 +5 High 21 90 - Color 2 2 2 4 # NorCal_1 457 novatoCal 440.650 +5 High 21 90 - Color 2 1 1 5 # California 458 novatoCal1 440.650 +5 High 21 90 - Color 2 1 1 6 # Cal_1 459 novatoCz6 440.650 +5 High 21 90 - Color 2 1 1 7 # Call_Zone_6 460 novatoUSA 440.650 +5 High 21 90 - Color 2 1 1 8 # USA_Bridge 461 novatoNAmer 440.650 +5 High 21 90 - Color 2 1 1 9 # N_America 462 novatoWorld 440.650 +5 High 21 90 - Color 2 1 1 10 # Worldwide 463 novatoBayCom 440.650 +5 High 21 90 - Color 2 1 1 11 # BayCom 464 novatoParrot 440.650 +5 High 21 90 - Color 2 2 2 12 # Parrot 465 novatoTS1 440.650 +5 High 21 90 - Color 2 1 1 5 # California 466 novatoTS2 440.650 +5 High 21 90 - Color 2 2 2 1 # Local 467 novatoTAC310 440.650 +5 High 21 90 - Color 2 1 1 18 # TAC_310 468 novatoTAC311 440.650 +5 High 21 90 - Color 2 1 1 19 # TAC_311 469 novatoTAC312 440.650 +5 High 21 90 - Color 2 1 1 20 # TAC_312 470 novatoUSEmCom 440.650 +5 High 21 90 - Color 2 1 1 22 # US_EmCom 471 novatoSWest 440.650 +5 High 21 90 - Color 2 1 1 23 # Southwest 472 novatoMtnWest 440.650 +5 High 21 90 - Color 2 1 1 25 # Mtn_West 473 novatoMtnWest1 440.650 +5 High 21 90 - Color 2 1 1 26 # Mtn_West_1 474 novatoVenturaCo 440.650 +5 High 21 90 - Color 2 1 1 28 # Ventura_Co. 475 novatoSanDiego 440.650 +5 High 21 90 - Color 2 1 1 29 # San_Diego 476 novatoSoCal 440.650 +5 High 21 90 - Color 2 1 1 30 # SoCal 477 Sanel_Mtn_nn6j 440.1375 +5 High 22 90 - Color 1 2 2 1 # Local 478 sanelmtRefCQ 440.1375 +5 High 22 90 - Color 1 2 2 2 # Reflector_CQ 479 sanelmtNCal 440.1375 +5 High 22 90 - Color 1 2 2 3 # NorCal 480 sanelmtNCal1 440.1375 +5 High 22 90 - Color 1 2 2 4 # NorCal_1 481 sanelmtCal 440.1375 +5 High 22 90 - Color 1 1 1 5 # California 482 sanelmtCal1 440.1375 +5 High 22 90 - Color 1 1 1 6 # Cal_1 483 sanelmtCz6 440.1375 +5 High 22 90 - Color 1 1 1 7 # Call_Zone_6 484 sanelmtUSA 440.1375 +5 High 22 90 - Color 1 1 1 8 # USA_Bridge 485 sanelmtNAmer 440.1375 +5 High 22 90 - Color 1 1 1 9 # N_America 486 sanelmtWorld 440.1375 +5 High 22 90 - Color 1 1 1 10 # Worldwide 487 sanelmtBayCom 440.1375 +5 High 22 90 - Color 1 1 1 11 # BayCom 488 sanelmtParrot 440.1375 +5 High 22 90 - Color 1 2 2 12 # Parrot 489 sanelmtTS1 440.1375 +5 High 22 90 - Color 1 1 1 5 # California 490 sanelmtTS2 440.1375 +5 High 22 90 - Color 1 2 2 1 # Local 491 sanelmtTAC310 440.1375 +5 High 22 90 - Color 1 1 1 18 # TAC_310 492 sanelmtTAC311 440.1375 +5 High 22 90 - Color 1 1 1 19 # TAC_311 493 sanelmtTAC312 440.1375 +5 High 22 90 - Color 1 1 1 20 # TAC_312 494 sanelmtUSEmCom 440.1375 +5 High 22 90 - Color 1 1 1 22 # US_EmCom 495 sanelmtSWest 440.1375 +5 High 22 90 - Color 1 1 1 23 # Southwest 496 sanelmtMtnWest 440.1375 +5 High 22 90 - Color 1 1 1 25 # Mtn_West 497 sanelmtMtnWest1 440.1375 +5 High 22 90 - Color 1 1 1 26 # Mtn_West_1 498 sanelmtVenturaCo 440.1375 +5 High 22 90 - Color 1 1 1 28 # Ventura_Co. 499 sanelmtSanDiego 440.1375 +5 High 22 90 - Color 1 1 1 29 # San_Diego 500 sanelmtSoCal 440.1375 +5 High 22 90 - Color 1 1 1 30 # SoCal 501 SonomaCty_w6pe 440.0125 +5 High 23 90 - Color 1 2 2 1 # Local 502 snmactyRefCQ 440.0125 +5 High 23 90 - Color 1 2 2 2 # Reflector_CQ 503 snmactyNCal 440.0125 +5 High 23 90 - Color 1 2 2 3 # NorCal 504 snmactyNCal1 440.0125 +5 High 23 90 - Color 1 2 2 4 # NorCal_1 505 snmactyCal 440.0125 +5 High 23 90 - Color 1 1 1 5 # California 506 snmactyCal1 440.0125 +5 High 23 90 - Color 1 1 1 6 # Cal_1 507 snmactyCz6 440.0125 +5 High 23 90 - Color 1 1 1 7 # Call_Zone_6 508 snmactyUSA 440.0125 +5 High 23 90 - Color 1 1 1 8 # USA_Bridge 509 snmactyNAmer 440.0125 +5 High 23 90 - Color 1 1 1 9 # N_America 510 snmactyWorld 440.0125 +5 High 23 90 - Color 1 1 1 10 # Worldwide 511 snmactyBayCom 440.0125 +5 High 23 90 - Color 1 1 1 11 # BayCom 512 snmactyParrot 440.0125 +5 High 23 90 - Color 1 2 2 12 # Parrot 513 snmactyTS1 440.0125 +5 High 23 90 - Color 1 1 1 5 # California 514 snmactyTS2 440.0125 +5 High 23 90 - Color 1 2 2 1 # Local 515 snmactyTAC310 440.0125 +5 High 23 90 - Color 1 1 1 18 # TAC_310 516 snmactyTAC311 440.0125 +5 High 23 90 - Color 1 1 1 19 # TAC_311 517 snmactyTAC312 440.0125 +5 High 23 90 - Color 1 1 1 20 # TAC_312 518 snmactyUSEmCom 440.0125 +5 High 23 90 - Color 1 1 1 22 # US_EmCom 519 snmactySWest 440.0125 +5 High 23 90 - Color 1 1 1 23 # Southwest 520 snmactyMtnWest 440.0125 +5 High 23 90 - Color 1 1 1 25 # Mtn_West 521 snmactyMtnWest1 440.0125 +5 High 23 90 - Color 1 1 1 26 # Mtn_West_1 522 snmactyVenturaCo 440.0125 +5 High 23 90 - Color 1 1 1 28 # Ventura_Co. 523 snmactySanDiego 440.0125 +5 High 23 90 - Color 1 1 1 29 # San_Diego 524 snmactySoCal 440.0125 +5 High 23 90 - Color 1 1 1 30 # SoCal 525 SonomaMtn_nn6j 444.0375 +5 High 24 90 - Color 2 2 2 1 # Local 526 snmamtRefCQ 444.0375 +5 High 24 90 - Color 2 2 2 2 # Reflector_CQ 527 snmamtNCal 444.0375 +5 High 24 90 - Color 2 2 2 3 # NorCal 528 snmamtNCal1 444.0375 +5 High 24 90 - Color 2 2 2 4 # NorCal_1 529 snmamtCal 444.0375 +5 High 24 90 - Color 2 1 1 5 # California 530 snmamtCal1 444.0375 +5 High 24 90 - Color 2 1 1 6 # Cal_1 531 snmamtCz6 444.0375 +5 High 24 90 - Color 2 1 1 7 # Call_Zone_6 532 snmamtUSA 444.0375 +5 High 24 90 - Color 2 1 1 8 # USA_Bridge 533 snmamtNAmer 444.0375 +5 High 24 90 - Color 2 1 1 9 # N_America 534 snmamtWorld 444.0375 +5 High 24 90 - Color 2 1 1 10 # Worldwide 535 snmamtBayCom 444.0375 +5 High 24 90 - Color 2 1 1 11 # BayCom 536 snmamtParrot 444.0375 +5 High 24 90 - Color 2 2 2 12 # Parrot 537 snmamtTS1 444.0375 +5 High 24 90 - Color 2 1 1 5 # California 538 snmamtTS2 444.0375 +5 High 24 90 - Color 2 2 2 1 # Local 539 snmamtTAC310 444.0375 +5 High 24 90 - Color 2 1 1 18 # TAC_310 540 snmamtTAC311 444.0375 +5 High 24 90 - Color 2 1 1 19 # TAC_311 541 snmamtTAC312 444.0375 +5 High 24 90 - Color 2 1 1 20 # TAC_312 542 snmamtUSEmCom 444.0375 +5 High 24 90 - Color 2 1 1 22 # US_EmCom 543 snmamtSWest 444.0375 +5 High 24 90 - Color 2 1 1 23 # Southwest 544 snmamtMtnWest 444.0375 +5 High 24 90 - Color 2 1 1 25 # Mtn_West 545 snmamtMtnWest1 444.0375 +5 High 24 90 - Color 2 1 1 26 # Mtn_West_1 546 snmamtVenturaCo 444.0375 +5 High 24 90 - Color 2 1 1 28 # Ventura_Co. 547 snmamtSanDiego 444.0375 +5 High 24 90 - Color 2 1 1 29 # San_Diego 548 snmamtSoCal 444.0375 +5 High 24 90 - Color 2 1 1 30 # SoCal 549 SantaRosa_k6acs 442.1125 +5 High 25 90 - Color 1 2 2 1 # Local 550 sntarsaRefCQ 442.1125 +5 High 25 90 - Color 1 2 2 2 # Reflector_CQ 551 sntarsaNCal 442.1125 +5 High 25 90 - Color 1 2 2 3 # NorCal 552 sntarsaNCal1 442.1125 +5 High 25 90 - Color 1 2 2 4 # NorCal_1 553 sntarsaCal 442.1125 +5 High 25 90 - Color 1 1 1 5 # California 554 sntarsaCal1 442.1125 +5 High 25 90 - Color 1 1 1 6 # Cal_1 555 sntarsaCz6 442.1125 +5 High 25 90 - Color 1 1 1 7 # Call_Zone_6 556 sntarsaUSA 442.1125 +5 High 25 90 - Color 1 1 1 8 # USA_Bridge 557 sntarsaNAmer 442.1125 +5 High 25 90 - Color 1 1 1 9 # N_America 558 sntarsaWorld 442.1125 +5 High 25 90 - Color 1 1 1 10 # Worldwide 559 sntarsaBayCom 442.1125 +5 High 25 90 - Color 1 1 1 11 # BayCom 560 sntarsaParrot 442.1125 +5 High 25 90 - Color 1 2 2 12 # Parrot 561 sntarsaTS1 442.1125 +5 High 25 90 - Color 1 1 1 5 # California 562 sntarsaTS2 442.1125 +5 High 25 90 - Color 1 2 2 1 # Local 563 sntarsaTAC310 442.1125 +5 High 25 90 - Color 1 1 1 18 # TAC_310 564 sntarsaTAC311 442.1125 +5 High 25 90 - Color 1 1 1 19 # TAC_311 565 sntarsaTAC312 442.1125 +5 High 25 90 - Color 1 1 1 20 # TAC_312 566 sntarsaUSEmCom 442.1125 +5 High 25 90 - Color 1 1 1 22 # US_EmCom 567 sntarsaSWest 442.1125 +5 High 25 90 - Color 1 1 1 23 # Southwest 568 sntarsaMtnWest 442.1125 +5 High 25 90 - Color 1 1 1 25 # Mtn_West 569 sntarsaMtnWest1 442.1125 +5 High 25 90 - Color 1 1 1 26 # Mtn_West_1 570 sntarsaVenturaCo 442.1125 +5 High 25 90 - Color 1 1 1 28 # Ventura_Co. 571 sntarsaSanDiego 442.1125 +5 High 25 90 - Color 1 1 1 29 # San_Diego 572 sntarsaSoCal 442.1125 +5 High 25 90 - Color 1 1 1 30 # SoCal 573 Sebstopol_kc6sot 444.9875 +5 High 26 90 - Color 1 2 2 1 # Local 574 sbstplRefCQ 444.9875 +5 High 26 90 - Color 1 2 2 2 # Reflector_CQ 575 sbstplNCal 444.9875 +5 High 26 90 - Color 1 2 2 3 # NorCal 576 sbstplNCal1 444.9875 +5 High 26 90 - Color 1 2 2 4 # NorCal_1 577 sbstplCal 444.9875 +5 High 26 90 - Color 1 1 1 5 # California 578 sbstplCal1 444.9875 +5 High 26 90 - Color 1 1 1 6 # Cal_1 579 sbstplCz6 444.9875 +5 High 26 90 - Color 1 1 1 7 # Call_Zone_6 580 sbstplUSA 444.9875 +5 High 26 90 - Color 1 1 1 8 # USA_Bridge 581 sbstplNAmer 444.9875 +5 High 26 90 - Color 1 1 1 9 # N_America 582 sbstplWorld 444.9875 +5 High 26 90 - Color 1 1 1 10 # Worldwide 583 sbstplBayCom 444.9875 +5 High 26 90 - Color 1 1 1 11 # BayCom 584 sbstplParrot 444.9875 +5 High 26 90 - Color 1 2 2 12 # Parrot 585 sbstplTS1 444.9875 +5 High 26 90 - Color 1 1 1 5 # California 586 sbstplTS2 444.9875 +5 High 26 90 - Color 1 2 2 1 # Local 587 sbstplTAC310 444.9875 +5 High 26 90 - Color 1 1 1 18 # TAC_310 588 sbstplTAC311 444.9875 +5 High 26 90 - Color 1 1 1 19 # TAC_311 589 sbstplTAC312 444.9875 +5 High 26 90 - Color 1 1 1 20 # TAC_312 590 sbstplUSEmCom 444.9875 +5 High 26 90 - Color 1 1 1 22 # US_EmCom 591 sbstplSWest 444.9875 +5 High 26 90 - Color 1 1 1 23 # Southwest 592 sbstplMtnWest 444.9875 +5 High 26 90 - Color 1 1 1 25 # Mtn_West 593 sbstplMtnWest1 444.9875 +5 High 26 90 - Color 1 1 1 26 # Mtn_West_1 594 sbstplVenturaCo 444.9875 +5 High 26 90 - Color 1 1 1 28 # Ventura_Co. 595 sbstplSanDiego 444.9875 +5 High 26 90 - Color 1 1 1 29 # San_Diego 596 sbstplSoCal 444.9875 +5 High 26 90 - Color 1 1 1 30 # SoCal 597 BodegaBay_kj6qbm 440.325 +5 High 27 90 - Color 1 2 2 1 # Local 598 bodegabyRefCQ 440.325 +5 High 27 90 - Color 1 2 2 2 # Reflector_CQ 599 bodegabyNCal 440.325 +5 High 27 90 - Color 1 2 2 3 # NorCal 600 bodegabyNCal1 440.325 +5 High 27 90 - Color 1 2 2 4 # NorCal_1 601 bodegabyCal 440.325 +5 High 27 90 - Color 1 1 1 5 # California 602 bodegabyCal1 440.325 +5 High 27 90 - Color 1 1 1 6 # Cal_1 603 bodegabyCz6 440.325 +5 High 27 90 - Color 1 1 1 7 # Call_Zone_6 604 bodegabyUSA 440.325 +5 High 27 90 - Color 1 1 1 8 # USA_Bridge 605 bodegabyNAmer 440.325 +5 High 27 90 - Color 1 1 1 9 # N_America 606 bodegabyWorld 440.325 +5 High 27 90 - Color 1 1 1 10 # Worldwide 607 bodegabyBayCom 440.325 +5 High 27 90 - Color 1 1 1 11 # BayCom 608 bodegabyParrot 440.325 +5 High 27 90 - Color 1 2 2 12 # Parrot 609 bodegabyTS1 440.325 +5 High 27 90 - Color 1 1 1 5 # California 610 bodegabyTS2 440.325 +5 High 27 90 - Color 1 2 2 1 # Local 611 bodegabyTAC310 440.325 +5 High 27 90 - Color 1 1 1 18 # TAC_310 612 bodegabyTAC311 440.325 +5 High 27 90 - Color 1 1 1 19 # TAC_311 613 bodegabyTAC312 440.325 +5 High 27 90 - Color 1 1 1 20 # TAC_312 614 bodegabyUSEmCom 440.325 +5 High 27 90 - Color 1 1 1 22 # US_EmCom 615 bodegabySWest 440.325 +5 High 27 90 - Color 1 1 1 23 # Southwest 616 bodegabyMtnWest 440.325 +5 High 27 90 - Color 1 1 1 25 # Mtn_West 617 bodegabyMtnWest1 440.325 +5 High 27 90 - Color 1 1 1 26 # Mtn_West_1 618 bodegabyVentura 440.325 +5 High 27 90 - Color 1 1 1 28 # Ventura_Co. 619 bodegabySanDiego 440.325 +5 High 27 90 - Color 1 1 1 29 # San_Diego 620 bodegabySoCal 440.325 +5 High 27 90 - Color 1 1 1 30 # SoCal 621 Gualala_k6lnk 442.075 +5 High 28 90 - Color 1 2 2 1 # Local 622 gualalaRefCQ 442.075 +5 High 28 90 - Color 1 2 2 2 # Reflector_CQ 623 gualalaNCal 442.075 +5 High 28 90 - Color 1 2 2 3 # NorCal 624 gualalaNCal1 442.075 +5 High 28 90 - Color 1 2 2 4 # NorCal_1 625 gualalaCal 442.075 +5 High 28 90 - Color 1 1 1 5 # California 626 gualalaCal1 442.075 +5 High 28 90 - Color 1 1 1 6 # Cal_1 627 gualalaCz6 442.075 +5 High 28 90 - Color 1 1 1 7 # Call_Zone_6 628 gualalaUSA 442.075 +5 High 28 90 - Color 1 1 1 8 # USA_Bridge 629 gualalaNAmer 442.075 +5 High 28 90 - Color 1 1 1 9 # N_America 630 gualalaWorld 442.075 +5 High 28 90 - Color 1 1 1 10 # Worldwide 631 gualalaBayCom 442.075 +5 High 28 90 - Color 1 1 1 11 # BayCom 632 gualalaParrot 442.075 +5 High 28 90 - Color 1 2 2 12 # Parrot 633 gualalaTS1 442.075 +5 High 28 90 - Color 1 1 1 5 # California 634 gualalaTS2 442.075 +5 High 28 90 - Color 1 2 2 1 # Local 635 gualalaTAC310 442.075 +5 High 28 90 - Color 1 1 1 18 # TAC_310 636 gualalaTAC311 442.075 +5 High 28 90 - Color 1 1 1 19 # TAC_311 637 gualalaTAC312 442.075 +5 High 28 90 - Color 1 1 1 20 # TAC_312 638 gualalaUSEmCom 442.075 +5 High 28 90 - Color 1 1 1 22 # US_EmCom 639 gualalaSWest 442.075 +5 High 28 90 - Color 1 1 1 23 # Southwest 640 gualalaMtnWest 442.075 +5 High 28 90 - Color 1 1 1 25 # Mtn_West 641 gualalaMtnWest1 442.075 +5 High 28 90 - Color 1 1 1 26 # Mtn_West_1 642 gualalaVenturaCo 442.075 +5 High 28 90 - Color 1 1 1 28 # Ventura_Co. 643 gualalaSanDiego 442.075 +5 High 28 90 - Color 1 1 1 29 # San_Diego 644 gualalaSoCal 442.075 +5 High 28 90 - Color 1 1 1 30 # SoCal 645 SLO_k6acr 444.350 +5 High 29 90 - Color 1 2 2 1 # Local 646 sloRefCQ 444.350 +5 High 29 90 - Color 1 2 2 2 # Reflector_CQ 647 sloNCal 444.350 +5 High 29 90 - Color 1 2 2 3 # NorCal 648 sloNCal1 444.350 +5 High 29 90 - Color 1 2 2 4 # NorCal_1 649 sloCal 444.350 +5 High 29 90 - Color 1 1 1 5 # California 650 sloCal1 444.350 +5 High 29 90 - Color 1 1 1 6 # Cal_1 651 sloCz6 444.350 +5 High 29 90 - Color 1 1 1 7 # Call_Zone_6 652 sloUSA 444.350 +5 High 29 90 - Color 1 1 1 8 # USA_Bridge 653 sloNAmer 444.350 +5 High 29 90 - Color 1 1 1 9 # N_America 654 sloWorld 444.350 +5 High 29 90 - Color 1 1 1 10 # Worldwide 655 sloBayCom 444.350 +5 High 29 90 - Color 1 1 1 11 # BayCom 656 sloParrot 444.350 +5 High 29 90 - Color 1 2 2 12 # Parrot 657 sloTS1 444.350 +5 High 29 90 - Color 1 1 1 5 # California 658 sloTS2 444.350 +5 High 29 90 - Color 1 2 2 1 # Local 659 sloTAC310 444.350 +5 High 29 90 - Color 1 1 1 18 # TAC_310 660 sloTAC311 444.350 +5 High 29 90 - Color 1 1 1 19 # TAC_311 661 sloTAC312 444.350 +5 High 29 90 - Color 1 1 1 20 # TAC_312 662 sloUSEmCom 444.350 +5 High 29 90 - Color 1 1 1 22 # US_EmCom 663 sloSWest 444.350 +5 High 29 90 - Color 1 1 1 23 # Southwest 664 sloMtnWest 444.350 +5 High 29 90 - Color 1 1 1 25 # Mtn_West 665 sloMtnWest1 444.350 +5 High 29 90 - Color 1 1 1 26 # Mtn_West_1 666 sloVenturaCo 444.350 +5 High 29 90 - Color 1 1 1 28 # Ventura_Co. 667 sloSanDiego 444.350 +5 High 29 90 - Color 1 1 1 29 # San_Diego 668 sloSoCal 444.350 +5 High 29 90 - Color 1 1 1 30 # SoCal 669 SantaMaria_k6acr 440.425 +5 High 30 90 - Color 2 2 2 1 # Local 670 sntamraRefCQ 440.425 +5 High 30 90 - Color 2 2 2 2 # Reflector_CQ 671 sntamraNCal 440.425 +5 High 30 90 - Color 2 2 2 3 # NorCal 672 sntamraNCal1 440.425 +5 High 30 90 - Color 2 2 2 4 # NorCal_1 673 sntamraCal 440.425 +5 High 30 90 - Color 2 1 1 5 # California 674 sntamraCal1 440.425 +5 High 30 90 - Color 2 1 1 6 # Cal_1 675 sntamraCz6 440.425 +5 High 30 90 - Color 2 1 1 7 # Call_Zone_6 676 sntamraUSA 440.425 +5 High 30 90 - Color 2 1 1 8 # USA_Bridge 677 sntamraNamer 440.425 +5 High 30 90 - Color 2 1 1 9 # N_America 678 sntamraWorld 440.425 +5 High 30 90 - Color 2 1 1 10 # Worldwide 679 sntamraBayCom 440.425 +5 High 30 90 - Color 2 1 1 11 # BayCom 680 sntamraParrot 440.425 +5 High 30 90 - Color 2 2 2 12 # Parrot 681 sntamraTS1 440.425 +5 High 30 90 - Color 2 1 1 5 # California 682 sntamraTS2 440.425 +5 High 30 90 - Color 2 2 2 1 # Local 683 sntamraTAC310 440.425 +5 High 30 90 - Color 2 1 1 18 # TAC_310 684 sntamraTAC311 440.425 +5 High 30 90 - Color 2 1 1 19 # TAC_311 685 sntamraTAC312 440.425 +5 High 30 90 - Color 2 1 1 20 # TAC_312 686 sntamraUSEmCom 440.425 +5 High 30 90 - Color 2 1 1 22 # US_EmCom 687 sntamraSWest 440.425 +5 High 30 90 - Color 2 1 1 23 # Southwest 688 sntamraMtnWest 440.425 +5 High 30 90 - Color 2 1 1 25 # Mtn_West 689 sntamraMtnWest1 440.425 +5 High 30 90 - Color 2 1 1 26 # Mtn_West_1 690 sntamraVenturaCo 440.425 +5 High 30 90 - Color 2 1 1 28 # Ventura_Co. 691 sntamraSanDiego 440.425 +5 High 30 90 - Color 2 1 1 29 # San_Diego 692 sntamraSoCal 440.425 +5 High 30 90 - Color 2 1 1 30 # SoCal 693 New_Cuyama_k7az 440.500 +5 High 31 90 - Color 2 2 2 1 # Local 694 cuyamaRefCQ 440.500 +5 High 31 90 - Color 2 2 2 2 # Reflector_CQ 695 cuyamaNCal 440.500 +5 High 31 90 - Color 2 2 2 3 # NorCal 696 cuyamaNCal1 440.500 +5 High 31 90 - Color 2 2 2 4 # NorCal_1 697 cuyamaCal 440.500 +5 High 31 90 - Color 2 1 1 5 # California 698 cuyamaCal1 440.500 +5 High 31 90 - Color 2 1 1 6 # Cal_1 699 cuyamaCz6 440.500 +5 High 31 90 - Color 2 1 1 7 # Call_Zone_6 700 cuyamaUSA 440.500 +5 High 31 90 - Color 2 1 1 8 # USA_Bridge 701 cuyamaNAmer 440.500 +5 High 31 90 - Color 2 1 1 9 # N_America 702 cuyamaWorld 440.500 +5 High 31 90 - Color 2 1 1 10 # Worldwide 703 cuyamaBayCom 440.500 +5 High 31 90 - Color 2 1 1 11 # BayCom 704 cuyamaParrot 440.500 +5 High 31 90 - Color 2 2 2 12 # Parrot 705 cuyamaTS1 440.500 +5 High 31 90 - Color 2 1 1 5 # California 706 cuyamaTS2 440.500 +5 High 31 90 - Color 2 2 2 1 # Local 707 cuyamaTAC310 440.500 +5 High 31 90 - Color 2 1 1 18 # TAC_310 708 cuyamaTAC311 440.500 +5 High 31 90 - Color 2 1 1 19 # TAC_311 709 cuyamaTAC312 440.500 +5 High 31 90 - Color 2 1 1 20 # TAC_312 710 cuyamaUSEmCom 440.500 +5 High 31 90 - Color 2 1 1 22 # US_EmCom 711 cuyamaSWest 440.500 +5 High 31 90 - Color 2 1 1 23 # Southwest 712 cuyamaMtnWest 440.500 +5 High 31 90 - Color 2 1 1 25 # Mtn_West 713 cuyamaMtnWest1 440.500 +5 High 31 90 - Color 2 1 1 26 # Mtn_West_1 714 cuyamaVenturaCo 440.500 +5 High 31 90 - Color 2 1 1 28 # Ventura_Co. 715 cuyamaSanDiego 440.500 +5 High 31 90 - Color 2 1 1 29 # San_Diego 716 cuyamaSoCal 440.500 +5 High 31 90 - Color 2 1 1 30 # SoCal 717 Dixon_k6jwn 444.525 +5 High 32 90 - Color 2 2 2 1 # Local 718 dixonRefCQ 444.525 +5 High 32 90 - Color 2 2 2 2 # Reflector_CQ 719 dixonNCal 444.525 +5 High 32 90 - Color 2 2 2 3 # NorCal 720 dixonNCal1 444.525 +5 High 32 90 - Color 2 2 2 4 # NorCal_1 721 dixonCal 444.525 +5 High 32 90 - Color 2 1 1 5 # California 722 dixonCal1 444.525 +5 High 32 90 - Color 2 1 1 6 # Cal_1 723 dixonCz6 444.525 +5 High 32 90 - Color 2 1 1 7 # Call_Zone_6 724 dixonUSA 444.525 +5 High 32 90 - Color 2 1 1 8 # USA_Bridge 725 dixonNAmer 444.525 +5 High 32 90 - Color 2 1 1 9 # N_America 726 dixonWorld 444.525 +5 High 32 90 - Color 2 1 1 10 # Worldwide 727 dixonBayCom 444.525 +5 High 32 90 - Color 2 1 1 11 # BayCom 728 dixonParrot 444.525 +5 High 32 90 - Color 2 2 2 12 # Parrot 729 dixonTS1 444.525 +5 High 32 90 - Color 2 1 1 5 # California 730 dixonTS2 444.525 +5 High 32 90 - Color 2 2 2 1 # Local 731 dixonTAC310 444.525 +5 High 32 90 - Color 2 1 1 18 # TAC_310 732 dixonTAC311 444.525 +5 High 32 90 - Color 2 1 1 19 # TAC_311 733 dixonTAC312 444.525 +5 High 32 90 - Color 2 1 1 20 # TAC_312 734 dixonUSEmCom 444.525 +5 High 32 90 - Color 2 1 1 22 # US_EmCom 735 dixonSWest 444.525 +5 High 32 90 - Color 2 1 1 23 # Southwest 736 dixonMtnWest 444.525 +5 High 32 90 - Color 2 1 1 25 # Mtn_West 737 dixonMtnWest1 444.525 +5 High 32 90 - Color 2 1 1 26 # Mtn_West_1 738 dixonVenturaCo 444.525 +5 High 32 90 - Color 2 1 1 28 # Ventura_Co. 739 dixonSanDiego 444.525 +5 High 32 90 - Color 2 1 1 29 # San_Diego 740 dixonSoCal 444.525 +5 High 32 90 - Color 2 1 1 30 # SoCal 741 Auburn_ng6d 442.9625 +5 High 33 90 - Color 1 2 2 1 # Local 742 auburnRefCQ 442.9625 +5 High 33 90 - Color 1 2 2 2 # Reflector_CQ 743 auburnNCal 442.9625 +5 High 33 90 - Color 1 2 2 3 # NorCal 744 auburnNCal1 442.9625 +5 High 33 90 - Color 1 2 2 4 # NorCal_1 745 auburnCal 442.9625 +5 High 33 90 - Color 1 1 1 5 # California 746 auburnCal1 442.9625 +5 High 33 90 - Color 1 1 1 6 # Cal_1 747 auburnCz6 442.9625 +5 High 33 90 - Color 1 1 1 7 # Call_Zone_6 748 auburnUSA 442.9625 +5 High 33 90 - Color 1 1 1 8 # USA_Bridge 749 auburnNAmer 442.9625 +5 High 33 90 - Color 1 1 1 9 # N_America 750 auburnWorld 442.9625 +5 High 33 90 - Color 1 1 1 10 # Worldwide 751 auburnBayCom 442.9625 +5 High 33 90 - Color 1 1 1 11 # BayCom 752 auburnParrot 442.9625 +5 High 33 90 - Color 1 2 2 12 # Parrot 753 auburnTS1 442.9625 +5 High 33 90 - Color 1 1 1 5 # California 754 auburnTS2 442.9625 +5 High 33 90 - Color 1 2 2 1 # Local 755 auburnTAC310 442.9625 +5 High 33 90 - Color 1 1 1 18 # TAC_310 756 auburnTAC311 442.9625 +5 High 33 90 - Color 1 1 1 19 # TAC_311 757 auburnTAC312 442.9625 +5 High 33 90 - Color 1 1 1 20 # TAC_312 758 auburnUSEmCom 442.9625 +5 High 33 90 - Color 1 1 1 22 # US_EmCom 759 auburnSWest 442.9625 +5 High 33 90 - Color 1 1 1 23 # Southwest 760 auburnMtnWest 442.9625 +5 High 33 90 - Color 1 1 1 25 # Mtn_West 761 auburnMtnWest1 442.9625 +5 High 33 90 - Color 1 1 1 26 # Mtn_West_1 762 auburnVenturaCo 442.9625 +5 High 33 90 - Color 1 1 1 28 # Ventura_Co. 763 auburnSanDiego 442.9625 +5 High 33 90 - Color 1 1 1 29 # San_Diego 764 auburnSoCal 442.9625 +5 High 33 90 - Color 1 1 1 30 # SoCal 765 SoLkTahoe_wa6ewv 443.700 +5 High 34 90 - Color 1 2 2 1 # Local 766 solkthoeRefCQ 443.700 +5 High 34 90 - Color 1 2 2 2 # Reflector_CQ 767 solkthoeNCal 443.700 +5 High 34 90 - Color 1 2 2 3 # NorCal 768 sllkthoeNCal1 443.700 +5 High 34 90 - Color 1 2 2 4 # NorCal_1 769 solkthoeCal 443.700 +5 High 34 90 - Color 1 1 1 5 # California 770 solkthoeCal1 443.700 +5 High 34 90 - Color 1 1 1 6 # Cal_1 771 solkthoeCz6 443.700 +5 High 34 90 - Color 1 1 1 7 # Call_Zone_6 772 solkthoeUSA 443.700 +5 High 34 90 - Color 1 1 1 8 # USA_Bridge 773 solkthoeNAmer 443.700 +5 High 34 90 - Color 1 1 1 9 # N_America 774 solkthoeWorld 443.700 +5 High 34 90 - Color 1 1 1 10 # Worldwide 775 solkthoeBayCom 443.700 +5 High 34 90 - Color 1 1 1 11 # BayCom 776 solkthoeParrot 443.700 +5 High 34 90 - Color 1 2 2 12 # Parrot 777 solkthoeTS1 443.700 +5 High 34 90 - Color 1 1 1 5 # California 778 solkthoeTS2 443.700 +5 High 34 90 - Color 1 2 2 1 # Local 779 solkthoeTAC310 443.700 +5 High 34 90 - Color 1 1 1 18 # TAC_310 780 solkthoeTAC311 443.700 +5 High 34 90 - Color 1 1 1 19 # TAC_311 781 solkthoeTAC312 443.700 +5 High 34 90 - Color 1 1 1 20 # TAC_312 782 solkthoeUSEmCom 443.700 +5 High 34 90 - Color 1 1 1 22 # US_EmCom 783 solkthoeSWest 443.700 +5 High 34 90 - Color 1 1 1 23 # Southwest 784 solkthoeMtnWest 443.700 +5 High 34 90 - Color 1 1 1 25 # Mtn_West 785 solkthoeMtnWest1 443.700 +5 High 34 90 - Color 1 1 1 26 # Mtn_West_1 786 solkthoeVentura 443.700 +5 High 34 90 - Color 1 1 1 28 # Ventura_Co. 787 solkthoeSanDiego 443.700 +5 High 34 90 - Color 1 1 1 29 # San_Diego 788 solkthoeSoCal 443.700 +5 High 34 90 - Color 1 1 1 30 # SoCal 789 Sonora_kj6nro 442.975 +5 High 35 90 - Color 1 2 2 1 # Local 790 sonoraRefCQ 442.975 +5 High 35 90 - Color 1 2 2 2 # Reflector_CQ 791 sonoraNcal 442.975 +5 High 35 90 - Color 1 2 2 3 # NorCal 792 sonoraNCal1 442.975 +5 High 35 90 - Color 1 2 2 4 # NorCal_1 793 sonoraCal 442.975 +5 High 35 90 - Color 1 1 1 5 # California 794 sonoraCal1 442.975 +5 High 35 90 - Color 1 1 1 6 # Cal_1 795 sonoraCz6 442.975 +5 High 35 90 - Color 1 1 1 7 # Call_Zone_6 796 sonoraUSA 442.975 +5 High 35 90 - Color 1 1 1 8 # USA_Bridge 797 sonoraNAmer 442.975 +5 High 35 90 - Color 1 1 1 9 # N_America 798 sonoraWorld 442.975 +5 High 35 90 - Color 1 1 1 10 # Worldwide 799 sonoraBayCom 442.975 +5 High 35 90 - Color 1 1 1 11 # BayCom 800 sonoraParrot 442.975 +5 High 35 90 - Color 1 2 2 12 # Parrot 801 sonoraTS1 442.975 +5 High 35 90 - Color 1 1 1 5 # California 802 sonoraTS2 442.975 +5 High 35 90 - Color 1 2 2 1 # Local 803 sonoraTAC310 442.975 +5 High 35 90 - Color 1 1 1 18 # TAC_310 804 sonoraTAC311 442.975 +5 High 35 90 - Color 1 1 1 19 # TAC_311 805 sonoraTAC312 442.975 +5 High 35 90 - Color 1 1 1 20 # TAC_312 806 sonoraUSEmCom 442.975 +5 High 35 90 - Color 1 1 1 22 # US_EmCom 807 sonoraSWest 442.975 +5 High 35 90 - Color 1 1 1 23 # Southwest 808 sonoraMtnWest 442.975 +5 High 35 90 - Color 1 1 1 25 # Mtn_West 809 sonoraMtnWest1 442.975 +5 High 35 90 - Color 1 1 1 26 # Mtn_West_1 810 sonoraVenturaCo 442.975 +5 High 35 90 - Color 1 1 1 28 # Ventura_Co. 811 sonoraSanDiego 442.975 +5 High 35 90 - Color 1 1 1 29 # San_Diego 812 sonoraSoCal 442.975 +5 High 35 90 - Color 1 1 1 30 # SoCal 813 Tuolumne_kj6nro 442.475 +5 High 36 90 - Color 1 2 2 1 # Local 814 tuolmneRefCQ 442.475 +5 High 36 90 - Color 1 2 2 2 # Reflector_CQ 815 tuolmneNCal 442.475 +5 High 36 90 - Color 1 2 2 3 # NorCal 816 tuolmneNCal1 442.475 +5 High 36 90 - Color 1 2 2 4 # NorCal_1 817 tuolmneCal 442.475 +5 High 36 90 - Color 1 1 1 5 # California 818 tuolmneCal1 442.475 +5 High 36 90 - Color 1 1 1 6 # Cal_1 819 tuolmneCz6 442.475 +5 High 36 90 - Color 1 1 1 7 # Call_Zone_6 820 tuolmneUSA 442.475 +5 High 36 90 - Color 1 1 1 8 # USA_Bridge 821 tuolmneNAmer 442.475 +5 High 36 90 - Color 1 1 1 9 # N_America 822 tuolmneWorld 442.475 +5 High 36 90 - Color 1 1 1 10 # Worldwide 823 tuolmneBayCom 442.475 +5 High 36 90 - Color 1 1 1 11 # BayCom 824 tuolmneParrot 442.475 +5 High 36 90 - Color 1 2 2 12 # Parrot 825 tuolmneTS1 442.475 +5 High 36 90 - Color 1 1 1 5 # California 826 tuolmneTS2 442.475 +5 High 36 90 - Color 1 2 2 1 # Local 827 tuolmneTAC310 442.475 +5 High 36 90 - Color 1 1 1 18 # TAC_310 828 tuolmneTAC311 442.475 +5 High 36 90 - Color 1 1 1 19 # TAC_311 829 tuolmneTAC312 442.475 +5 High 36 90 - Color 1 1 1 20 # TAC_312 830 tuolmneUSEmCom 442.475 +5 High 36 90 - Color 1 1 1 22 # US_EmCom 831 tuolmneSWest 442.475 +5 High 36 90 - Color 1 1 1 23 # Southwest 832 tuolmneMtnWest 442.475 +5 High 36 90 - Color 1 1 1 25 # Mtn_West 833 tuolmneMtnWest1 442.475 +5 High 36 90 - Color 1 1 1 26 # Mtn_West_1 834 tuolmneVenturaCo 442.475 +5 High 36 90 - Color 1 1 1 28 # Ventura_Co. 835 tuolmneSanDiego 442.475 +5 High 36 90 - Color 1 1 1 29 # San_Diego 836 tuolmneSoCal 442.475 +5 High 36 90 - Color 1 1 1 30 # SoCal 837 MtBullion_k6acr 444.7875 +5 High 37 90 - Color 1 2 2 1 # Local 838 mtbulnRefCQ 444.7875 +5 High 37 90 - Color 1 2 2 2 # Reflector_CQ 839 mtbulnNCal 444.7875 +5 High 37 90 - Color 1 2 2 3 # NorCal 840 mtbulnNCal1 444.7875 +5 High 37 90 - Color 1 2 2 4 # NorCal_1 841 mtbulnCal 444.7875 +5 High 37 90 - Color 1 1 1 5 # California 842 mtbulnCal1 444.7875 +5 High 37 90 - Color 1 1 1 6 # Cal_1 843 mtbulnCz6 444.7875 +5 High 37 90 - Color 1 1 1 7 # Call_Zone_6 844 mtbulnUSA 444.7875 +5 High 37 90 - Color 1 1 1 8 # USA_Bridge 845 mtbulnNAmer 444.7875 +5 High 37 90 - Color 1 1 1 9 # N_America 846 mtbulnWorld 444.7875 +5 High 37 90 - Color 1 1 1 10 # Worldwide 847 mtbulnBayCom 444.7875 +5 High 37 90 - Color 1 1 1 11 # BayCom 848 mtbulnParrot 444.7875 +5 High 37 90 - Color 1 2 2 12 # Parrot 849 mtbulnTS1 444.7875 +5 High 37 90 - Color 1 1 1 5 # California 850 mtbulnTS2 444.7875 +5 High 37 90 - Color 1 2 2 1 # Local 851 mtbulnTAC310 444.7875 +5 High 37 90 - Color 1 1 1 18 # TAC_310 852 mtbulnTAC311 444.7875 +5 High 37 90 - Color 1 1 1 19 # TAC_311 853 mtbulnTAC312 444.7875 +5 High 37 90 - Color 1 1 1 20 # TAC_312 854 mtbulnUSEmCom 444.7875 +5 High 37 90 - Color 1 1 1 22 # US_EmCom 855 mtbulnSWest 444.7875 +5 High 37 90 - Color 1 1 1 23 # Southwest 856 mtbulnMtnWest 444.7875 +5 High 37 90 - Color 1 1 1 25 # Mtn_West 857 mtbulnMtnWest1 444.7875 +5 High 37 90 - Color 1 1 1 26 # Mtn_West_1 858 mtbulnVenturaCo 444.7875 +5 High 37 90 - Color 1 1 1 28 # Ventura_Co. 859 mtbulnSanDiego 444.7875 +5 High 37 90 - Color 1 1 1 29 # San_Diego 860 mtbulnSoCal 444.7875 +5 High 37 90 - Color 1 1 1 30 # SoCal 861 MtOso_k6acr 440.1875 +5 High 38 90 - Color 1 2 2 1 # Local 862 mtosoRefCQ 440.1875 +5 High 38 90 - Color 1 2 2 2 # Reflector_CQ 863 mtosoNCal 440.1875 +5 High 38 90 - Color 1 2 2 3 # NorCal 864 mtosoNCal1 440.1875 +5 High 38 90 - Color 1 2 2 4 # NorCal_1 865 mtosoCal 440.1875 +5 High 38 90 - Color 1 1 1 5 # California 866 mtosoCal1 440.1875 +5 High 38 90 - Color 1 1 1 6 # Cal_1 867 mtosoCz6 440.1875 +5 High 38 90 - Color 1 1 1 7 # Call_Zone_6 868 mtosoUSA 440.1875 +5 High 38 90 - Color 1 1 1 8 # USA_Bridge 869 mtosoNAmer 440.1875 +5 High 38 90 - Color 1 1 1 9 # N_America 870 mtosoWorld 440.1875 +5 High 38 90 - Color 1 1 1 10 # Worldwide 871 mtosoBayCom 440.1875 +5 High 38 90 - Color 1 1 1 11 # BayCom 872 mtosoParrot 440.1875 +5 High 38 90 - Color 1 2 2 12 # Parrot 873 mtosoTS1 440.1875 +5 High 38 90 - Color 1 1 1 5 # California 874 mtosoTS2 440.1875 +5 High 38 90 - Color 1 2 2 1 # Local 875 mtosoTAC310 440.1875 +5 High 38 90 - Color 1 1 1 18 # TAC_310 876 mtosoTAC311 440.1875 +5 High 38 90 - Color 1 1 1 19 # TAC_311 877 mtosoTAC312 440.1875 +5 High 38 90 - Color 1 1 1 20 # TAC_312 878 mtosoUSEmCom 440.1875 +5 High 38 90 - Color 1 1 1 22 # US_EmCom 879 mtosoSWest 440.1875 +5 High 38 90 - Color 1 1 1 23 # Southwest 880 mtosoMtnWest 440.1875 +5 High 38 90 - Color 1 1 1 25 # Mtn_West 881 mtosoMtnWest1 440.1875 +5 High 38 90 - Color 1 1 1 26 # Mtn_West_1 882 mtosoVenturaCo 440.1875 +5 High 38 90 - Color 1 1 1 28 # Ventura_Co. 883 mtosoSanDiego 440.1875 +5 High 38 90 - Color 1 1 1 29 # San_Diego 884 mtosoSoCal 440.1875 +5 High 38 90 - Color 1 1 1 30 # SoCal 885 Modesto_k6acr 442.175 +5 High 39 90 - Color 1 2 2 1 # Local 886 modestoRefCQ 442.175 +5 High 39 90 - Color 1 2 2 2 # Reflector_CQ 887 modestoNCal 442.175 +5 High 39 90 - Color 1 2 2 3 # NorCal 888 modestoNCal1 442.175 +5 High 39 90 - Color 1 2 2 4 # NorCal_1 889 modestoCal 442.175 +5 High 39 90 - Color 1 1 1 5 # California 890 modestoCal1 442.175 +5 High 39 90 - Color 1 1 1 6 # Cal_1 891 modestoCz6 442.175 +5 High 39 90 - Color 1 1 1 7 # Call_Zone_6 892 modestoUSA 442.175 +5 High 39 90 - Color 1 1 1 8 # USA_Bridge 893 modestoNAmer 442.175 +5 High 39 90 - Color 1 1 1 9 # N_America 894 modestoWorld 442.175 +5 High 39 90 - Color 1 1 1 10 # Worldwide 895 modestoBayCom 442.175 +5 High 39 90 - Color 1 1 1 11 # BayCom 896 modestoParrot 442.175 +5 High 39 90 - Color 1 2 2 12 # Parrot 897 modestoTS1 442.175 +5 High 39 90 - Color 1 1 1 10 # Worldwide 898 modestoTS2 442.175 +5 High 39 90 - Color 1 2 2 1 # Local 899 modestoTAC310 442.175 +5 High 39 90 - Color 1 1 1 18 # TAC_310 900 modestoTAC311 442.175 +5 High 39 90 - Color 1 1 1 19 # TAC_311 901 modestoTAC312 442.175 +5 High 39 90 - Color 1 1 1 20 # TAC_312 902 modestoUSEmCom 442.175 +5 High 39 90 - Color 1 1 1 22 # US_EmCom 903 modestoSWest 442.175 +5 High 39 90 - Color 1 1 1 23 # Southwest 904 modestoMtnWest 442.175 +5 High 39 90 - Color 1 1 1 25 # Mtn_West 905 modestoMtnWest1 442.175 +5 High 39 90 - Color 1 1 1 26 # Mtn_West_1 906 modestoVenturaCo 442.175 +5 High 39 90 - Color 1 1 1 28 # Ventura_Co. 907 modestoSanDiego 442.175 +5 High 39 90 - Color 1 1 1 29 # San_Diego 908 modestoSoCal 442.175 +5 High 39 90 - Color 1 1 1 30 # SoCal 909 Turlock_k6acr 444.350 +5 High 40 90 - Color 2 2 2 1 # Local 910 turlckRefCQ 444.350 +5 High 40 90 - Color 2 2 2 2 # Reflector_CQ 911 turlckNCal 444.350 +5 High 40 90 - Color 2 2 2 3 # NorCal 912 turlckNCal1 444.350 +5 High 40 90 - Color 2 2 2 4 # NorCal_1 913 turlckCal 444.350 +5 High 40 90 - Color 2 1 1 5 # California 914 turlckCal1 444.350 +5 High 40 90 - Color 2 1 1 6 # Cal_1 915 turlckCz6 444.350 +5 High 40 90 - Color 2 1 1 7 # Call_Zone_6 916 turlckUSA 444.350 +5 High 40 90 - Color 2 1 1 8 # USA_Bridge 917 turlckNAmer 444.350 +5 High 40 90 - Color 2 1 1 9 # N_America 918 turlckWorld 444.350 +5 High 40 90 - Color 2 1 1 10 # Worldwide 919 turlckBayCom 444.350 +5 High 40 90 - Color 2 1 1 11 # BayCom 920 turlckParrot 444.350 +5 High 40 90 - Color 2 2 2 12 # Parrot 921 turlckTS1 444.350 +5 High 40 90 - Color 2 1 1 5 # California 922 turlckTS2 444.350 +5 High 40 90 - Color 2 2 2 1 # Local 923 turlckTAC310 444.350 +5 High 40 90 - Color 2 1 1 18 # TAC_310 924 turlckTAC311 444.350 +5 High 40 90 - Color 2 1 1 19 # TAC_311 925 turlckTAC312 444.350 +5 High 40 90 - Color 2 1 1 20 # TAC_312 926 turlckUSEmCom 444.350 +5 High 40 90 - Color 2 1 1 22 # US_EmCom 927 turlckSWest 444.350 +5 High 40 90 - Color 2 1 1 23 # Southwest 928 turlckMtnWest 444.350 +5 High 40 90 - Color 2 1 1 25 # Mtn_West 929 turlckMtnWest1 444.350 +5 High 40 90 - Color 2 1 1 26 # Mtn_West_1 930 turlckVenturaCo 444.350 +5 High 40 90 - Color 2 1 1 28 # Ventura_Co. 931 turlckSanDiego 444.350 +5 High 40 90 - Color 2 1 1 29 # San_Diego 932 turlckSoCal 444.350 +5 High 40 90 - Color 2 1 1 30 # SoCal # Table of analog channels. # 1) Channel number: 1-1000 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Low # 6) Scan list: - or index # 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555 # 8) Receive only: -, + # 9) Admit criteria: -, Free, Tone # 10) Squelch level: Normal, Tight # 11) Guard tone for receive, or '-' to disable # 12) Guard tone for transmit, or '-' to disable # 13) Bandwidth in kHz: 12.5, 20, 25 # Analog Name Receive Transmit Power Scan TOT RO Admit Squelch RxTone TxTone Width 323 NatlSmplx_446.0 446.000 +0 High 14 90 - - Normal - - 25 324 w6ash_440.800 440.800 +5 High - 90 - - Normal - 100.0 25 325 wb6led_440.950 440.950 +5 High - 90 - - Normal - 162.2 25 326 SCARES_444.500 444.500 +5 High - 90 - - Normal - 100.0 25 327 So.Bay.ww6bay 443.225 +5 High - 90 - - Normal - 100.0 25 328 No.Bay.ww6bay 443.975 +5 High - 90 - - Normal - 100.0 25 329 BlankAnalog1 430.000 +0 High - 90 - - Normal - - 25 330 BlankAnalog2 430.000 +0 High - 90 - - Normal - - 25 331 BlankAnalog3 430.000 +0 High - 90 - - Normal - - 25 332 BlankAnalog4 430.000 +0 High - 90 - - Normal - - 25 # Table of channel zones. # 1) Zone number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of channels: numbers and ranges (N-M) separated by comma # Zone Name Channels 1 PAARA_(SJ).rptr 1-7,12-17,20-21 2 PaloAlto.rptr 25-38 3 DalyCity.rptr 49-62 4 MoffettFld.rptr 73-86 5 SanJose.rptr 97-110 6 CrystalPeak.rptr 121-134 7 LomaPrieta.rptr 145-158 8 Gilroy.rptr 169-182 9 Mt.Allison.rptr 193-206 10 Milpitas.rptr 217-230 11 Oakland.rptr 241-254 12 SantaCruz.rptr 265-278 13 Salinas.rptr 289-302 14 Analog 323-328 15 Direct.uhf.dmr 317-323 16 Pleasanton.rptr 333-346 17 Livermore.rptr 357-370 18 Pittsburg.rptr 381-394 19 WalnutCreek.rptr 405-418 20 WalnutCrk2.rptr 429-442 21 Novato.rptr 453-466 22 SanelMtn.rptr 477-490 23 SonomaCity.rptr 501-514 24 SonomaMtn.rptr 525-538 25 SantaRosa.rptr 549-562 26 Sebastopol.rptr 573-586 27 BodegaBay.rptr 597-610 28 Gualala.rptr 621-634 29 SLO.rptr 645-658 30 SantaMaria.rptr 669-682 31 NewCuyama.rptr 693-706 32 Dixon(Sac).rptr 717-730 33 Auburn.rptr 741-754 34 SoLakeTahoe.rptr 765-778 35 Sonora.rptr 789-802 36 Tuolumne.rptr 813-826 37 Mt.Buillon.rptr 837-850 38 Mt.Oso.rptr 861-874 39 Modesto.rptr 885-898 40 Turlock.rptr 909-922 # Table of scan lists. # 1) Scan list number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) Priority channel 1 (50% of scans): -, Sel or index # 4) Priority channel 2 (25% of scans): -, Sel or index # 5) Designated transmit channel: Last, Sel or index # 6) List of channels: numbers and ranges (N-M) separated by comma # Scanlist Name PCh1 PCh2 TxCh Channels 1 PAARA_(SJ)_w6otx Sel - Last 1-24 2 PaloAlto_k6otr Sel - Last 25-48 3 DalyCity_n6amg Sel - Last 49-72 4 MoffettFld_w6cmu Sel - Last 73-96 5 SanJose_k6hle Sel - Last 97-120 6 CrystalPk_k6hle Sel - Last 121-144 7 LomaPrieta_w6yyy Sel - Last 145-168 8 Gilroy_k6sia Sel - Last 169-192 9 MtAllison_w6tcp Sel - Last 193-216 10 Milpitas_wa6kpx Sel - Last 217-240 11 Oakland_k6lnk Sel - Last 241-264 12 SantaCruz_wa6ycz Sel - Last 265-288 13 Salinas_w6jso Sel - Last 289-312 14 Direct - - Last 317-323 15 BlankDigital - - Last 313-316 16 Pleasanton_n6ldj Sel - Last 333-356 17 Livermore_k6lrg Sel - Last 357-380 18 Pittsburg_k6pit Sel - Last 381-404 19 WalnutCrk_k6lnk Sel - Last 405-428 20 WalnutCrk2_n6mvt Sel - Last 429-452 21 Novato_kg6mzv Sel - Last 453-476 22 SanelMtn_nn6j Sel - Last 477-500 23 SonomaCity_w6pe Sel - Last 501-524 24 SonomaMtn_nn6j Sel - Last 525-548 25 SantaRosa_k6acs Sel - Last 549-572 26 Sebstopol_kc6sot Sel - Last 573-596 27 BodegaBay_kj6qbm Sel - Last 597-620 28 Gualala_k6lnk Sel - Last 621-644 29 SLO_k6acr Sel - Last 645-668 30 SantaMaria_k6acr Sel - Last 669-692 31 NewCuyama_k7az Sel - Last 693-716 32 Dixon_Sac._k6jwn Sel - Last 717-740 33 Auburn_ng6d Sel - Last 741-764 34 SoLkTahoe_wa6ewv Sel - Last 765-788 35 Sonora_kj6nro Sel - Last 789-812 36 Tuolumne_kj6nro Sel - Last 813-836 37 MtBullion_k6acr Sel - Last 837-860 38 MtOso_k6acr Sel - Last 861-884 39 Modesto_k6acr Sel - Last 885-908 40 Turlock_k6acr Sel - Last 909-932 # Table of contacts. # 1) Contact number: 1-1000 # 2) Name: up to 16 characters, use '_' instead of space # 3) Call type: Group, Private, All # 4) Call ID: 1...16777215 # 5) Call receive tone: -, + # Contact Name Type ID RxTone 1 Local Group 2 - 2 Reflector_CQ Group 9 - 3 NorCal Group 31068 - 4 NorCal_1 Group 31069 - 5 California Group 3106 - 6 Cal_1 Group 31061 - 7 Call_Zone_6 Group 31096 - 8 USA_Bridge Group 3100 - 9 N_America Group 93 - 10 Worldwide Group 91 - 11 BayCom Group 97150 - 12 Parrot Private 9990 - 13 Audio_Test Group 9999 - 14 Echo_Test Group 9998 - 15 Direct_Mode Group 99 - 16 UA_Engl_1 Group 113 - 17 UA_Engl_2 Group 123 - 18 TAC_310 Group 310 - 19 TAC_311 Group 311 - 20 TAC_312 Group 312 - 21 EU_EmCom Group 9112 - 22 US_EmCom Group 9911 - 23 Southwest Group 3176 - 24 SWest_1 Group 31761 - 25 Mtn_West Group 31062 - 26 Mtn_West_1 Group 31063 - 27 MtnWest_old Group 96225 - 28 Ventura_Co. Group 310652 - 29 San_Diego Group 92101 - 30 SoCal Group 31066 - 31 SoCal_1 Group 31067 - 32 SNARS Group 31268 - 33 Hytera Group 31089 - 34 5150_restricted Group 95150 - 35 JotA_BSA Group 907 - 36 NCal_AllStar_Lnk Group 31065 - 37 PAPA_Sys Group 97272 - 38 Bridge_Oth Group 33100 - 39 Call_Zone_0 Group 31090 - 40 Call_Zone_1 Group 31091 - 41 Call_Zone_2 Group 31092 - 42 Call_Zone_3 Group 31093 - 43 Call_Zone_4 Group 31094 - 44 Call_Zone_5 Group 31095 - 45 Call_Zone_7 Group 31097 - 46 Call_Zone_8 Group 31098 - 47 Call_Zone_9 Group 31099 - 48 Parrot2 Private 1 - 49 ARS/GPS_Testing Group 310999 - 50 K6BIV_Tim1 Private 3106069 - 51 K6BIV_Tim_Mob1 Private 3106070 - 52 K6BIV_Tim_Mob2 Private 3106071 - 53 K6DLC_Daniel Private 3106277 - 54 KD6RC_Jeff Private 3106305 - 55 AE6TT_Mark Private 3106767 - 56 KD6W_Joel1 Private 3106772 - 57 K6DLC_Daniel2 Private 3106910 - 58 KK6HWP_Matthew Private 3106954 - 59 K6SV_Jim Private 3107312 - 60 KC6TYD_Rob Private 3107327 - 61 W6RHJ_Cheryl Private 3107400 - 62 AE6TT_Mark2 Private 3107401 - 63 NE6RD_Mike Private 3107477 - 64 KD6W_Joel2 Private 3107529 - 65 K6WX_Kristen Private 3107542 - 66 W6WZ_Michael Private 3107608 - 67 W6APZ_Rich Private 3107652 - 68 KK6HWP_Matthew2 Private 3107660 - 69 KG6LWE_Douglas Private 3107695 - 70 KK6HH_Ben Private 3107721 - 71 KE6CFX_Don Private 3107732 - 72 WY6G_Herb Private 3107746 - 73 KM6ETS_Fredrick Private 3107805 - 74 W6RHJ_Cheryl2 Private 3107914 - 75 N6RBR_Lonnie Private 3106010 - 76 W6ELL_Jim Private 3106026 - 77 W6ELL_Jim Private 3106027 - 78 W6TRW_Club Private 3106029 - 79 N6LDJ_Greg Private 3106047 - 80 W6UUU_Hork Private 3106048 - 81 N6LDJ_Greg Private 3106049 - 82 N6LDJ_Greg Private 3106052 - 83 W6TCP_Ian Private 3106055 - 84 W6TCP_Ian Private 3106056 - 85 W6TCP_Ian Private 3106057 - 86 W6TCP_Ian Private 3106058 - 87 W6TCP_Ian Private 3106059 - 88 WU7Q_Mike Private 3106060 - 89 WA6AXX_Ed Private 3106064 - 90 N6PMF_Keith Private 3106078 - 91 N6MVT_Tom Private 3106084 - 92 N6QOP_Jeff Private 3106086 - 93 WA6M_Bob Private 3106089 - 94 KK6FEZ_Gayle Private 3106090 - 95 KD6RC_Jeff Private 3106091 - 96 KE6ASC_Wendell Private 3106099 - 97 W6FQ_Curt Private 3106100 - 98 W6FQ_Curt Private 3106101 - 99 KK6FU_Jean Private 3106102 - 100 KF6WEY_Matt Private 3106110 - 101 KJ6NNZ_Edward Private 3106112 - 102 AF6PU_Jim Private 3106114 - 103 KM6PA_Dick Private 3106115 - 104 WA6JQV_Robert Private 3106119 - 105 WA6JQV_Robert Private 3106120 - 106 K6JWN_Jim Private 3106121 - 107 K6JWN_Jim Private 3106122 - 108 W6CJQ_Chris Private 3106127 - 109 W6CJQ_Chris Private 3106128 - 110 KI6KGN_Trevor Private 3106131 - 111 K6SCA_Steve Private 3106144 - 112 KG4RRZ_Clifford Private 3106152 - 113 KI6JUL_Area Private 3106165 - 114 NN6J_Joel Private 3106166 - 115 NN6J_Joel Private 3106167 - 116 KI6DMO_Alex Private 3106170 - 117 K6UU_Norman Private 3106180 - 118 WA6HTP_Juan Private 3106184 - 119 K7MBW_Michelle Private 3106185 - 120 NN6J_Joel Private 3106186 - 121 N6LXA_Geoffrey Private 3106190 - 122 WA6RQX_Greg Private 3106192 - 123 N6JOA_Charles Private 3106193 - 124 KI6DJZ_Mark Private 3106199 - 125 N6LRV_Gary Private 3106212 - 126 KG6MZV_Peter Private 3106218 - 127 KE6TIV_Robert Private 3106219 - 128 WB6YKU_Steve Private 3106221 - 129 WA6DWH_Dave Private 3106225 - 130 NN6J_Joel Private 3106228 - 131 KJ6CFV_Bernard Private 3106230 - 132 W6SNV_Joe Private 3106233 - 133 KD6CJQ_Ed Private 3106234 - 134 K6DEW_David Private 3106236 - 135 K6DEW_David Private 3106237 - 136 N6RCD_John Private 3106239 - 137 K6RGK_Barry Private 3106240 - 138 KB6UDA_Ted Private 3106243 - 139 K6FAA_Troy Private 3106244 - 140 WB6ZEI_Ron Private 3106245 - 141 KE6N_Ken Private 3106246 - 142 W3SMK_Stephen Private 3106247 - 143 N6JOA_Charles Private 3106249 - 144 N6JOA_Charles Private 3106250 - 145 N6OLO_Pamela Private 3106252 - 146 KD6ECF_Joe Private 3106257 - 147 KJ6OJJ_Daniel Private 3106258 - 148 KK6GMO_Jim Private 3106259 - 149 KK6FGZ_Alan Private 3106260 - 150 AG6HT_Dave Private 3106261 - 151 KI6PFJ_Michael Private 3106262 - 152 W6SJH_Steve Private 3106263 - 153 K6GDR_Glenn Private 3106265 - 154 NN6J_Joel Private 3106268 - 155 KM6I_Gordon Private 3106269 - 156 W6RQ_Curt Private 3106270 - 157 N6KM_Ken Private 3106272 - 158 KG6MZV_Peter Private 3106274 - 159 AA4JK_Jerry Private 3106275 - 160 W6YFR_Roger Private 3106276 - 161 W6JSO_Jeff Private 3106278 - 162 KE6TXN_Michelle Private 3106283 - 163 W6RD_Chuck Private 3106284 - 164 K6ACR_Sam Private 3106285 - 165 K6TRK_Tim Private 3106287 - 166 KC6RKY_Joe Private 3106288 - 167 KR6DY_Dave Private 3106289 - 168 NO1PC_Jim Private 3106290 - 169 W6GTT_George Private 3106292 - 170 K6RDJ_Darren Private 3106295 - 171 K6GTO_Stan Private 3106299 - 172 K6LRJ_Butch Private 3106303 - 173 KF6IDK_Kenneth Private 3106306 - 174 KJ6HUP_Chad Private 3106307 - 175 NW6F_Brian Private 3106308 - 176 KJ6BKZ_Stan Private 3106309 - 177 KK6KSB_Loney Private 3106310 - 178 KK6KRT_Ken Private 3106313 - 179 K6CHG_John Private 3106314 - 180 AE6XM_Michael Private 3106315 - 181 WB6WQF_John Private 3106317 - 182 K6LE_Rick Private 3106318 - 183 K6SAT_Joe Private 3106322 - 184 KF6OBI_Michael Private 3106325 - 185 KJ6SET_Larry Private 3106326 - 186 K6LRC_Lassen Private 3106337 - 187 N6LXA_Geoffrey Private 3106344 - 188 KC2ZNX_Steve Private 3106347 - 189 KC2ZNX_Steve Private 3106348 - 190 KD7YXE_Scott Private 3106352 - 191 WA6DNR_Alan Private 3106355 - 192 WA6PXL_Bruce Private 3106363 - 193 KK6KRS_Anthony Private 3106368 - 194 W6BRH_Ben Private 3106372 - 195 K6SUU_Dick Private 3106373 - 196 K6MLA_Dan Private 3106374 - 197 K6WL_Robert Private 3106375 - 198 K6WL_Robert Private 3106376 - 199 N6MTM_Manuel Private 3106378 - 200 K6KN_William Private 3106381 - 201 KA7QQV_Donald Private 3106384 - 202 N6RVI_Pete Private 3106385 - 203 WB6ALX_Alex Private 3106387 - 204 KF6VWH_James Private 3106389 - 205 N0ARY_Bob Private 3106397 - 206 K6GSJ_Lance Private 3106398 - 207 KK6DOQ_Brian Private 3106399 - 208 KA6AUR_Don Private 3106400 - 209 AA6EM_Eric Private 3106401 - 210 KJ6LJI_Matthew Private 3106402 - 211 W6GRC_Gary Private 3106406 - 212 KC6VHG_Desmond Private 3106407 - 213 KK6FEV_Jake Private 3106408 - 214 KI6DKF_Gene Private 3106410 - 215 N6UNE_Ralph Private 3106423 - 216 W6BSJ_Basim Private 3106426 - 217 W6WCN_Joel Private 3106428 - 218 KI6DKF_Gene Private 3106431 - 219 KG6TMG_Ross Private 3106432 - 220 AB6MB_Jeffrey Private 3106441 - 221 KC6WTF_Ethan Private 3106443 - 222 WF6R_Stephan Private 3106446 - 223 WF6R_Stephan Private 3106448 - 224 K6GSA_Geoffrey Private 3106456 - 225 KB6VTU_Josh Private 3106463 - 226 WA6AZP_Alan Private 3106464 - 227 KK6OWU_Natalie Private 3106469 - 228 KJ6NMD_Robin Private 3106482 - 229 KK6OJL_Paula Private 3106483 - 230 W6ZZY_Tony Private 3106489 - 231 WB6ALX_Alex Private 3106491 - 232 KQ6RC_Rj Private 3106493 - 233 KG6CGX_Michelle Private 3106494 - 234 N6BDE_Brad Private 3106495 - 235 K6TU_Stu Private 3106497 - 236 KJ6QDU_Joe Private 3106499 - 237 WA6OSB_Ken Private 3106505 - 238 KK7XX_Luke Private 3106519 - 239 KM6YH_Kenneth Private 3106521 - 240 KM6YH_Kenneth Private 3106522 - 241 W6JBN_James Private 3106524 - 242 W6BRH_Ben Private 3106530 - 243 KK6PKY_Ernie Private 3106539 - 244 KC2ILK_David Private 3106550 - 245 AK6DX_Nick Private 3106563 - 246 K6RCT_Kirk Private 3106567 - 247 N9ZJ_James Private 3106572 - 248 N6QJP_Jeff Private 3106574 - 249 W6BXN_Turlock Private 3106579 - 250 KF6FR_Rick Private 3106582 - 251 N6ZVC_Mark Private 3106583 - 252 KJ6CDA_Clifton Private 3106592 - 253 KC6UJO_Michael Private 3106597 - 254 N9MJE_Marc Private 3106601 - 255 KA6YXI_Mark Private 3106606 - 256 N6APC_Reid Private 3106608 - 257 KK7XX_Luke Private 3106617 - 258 W6JPP_John Private 3106621 - 259 N9MJE_Marc Private 3106623 - 260 KE6UWH_Philip Private 3106627 - 261 W6JSO_Jeff Private 3106635 - 262 KB6UOO_Scott Private 3106636 - 263 KB6UOO_Scott Private 3106637 - 264 WB6MIK_Mike Private 3106638 - 265 WB6RNH_Ron Private 3106639 - 266 KJ6TWF_Vince Private 3106646 - 267 W6DTW_David Private 3106647 - 268 KB6UOO_Scott Private 3106649 - 269 KE6FCB_Steven Private 3106650 - 270 K6BIH_Senad Private 3106652 - 271 N6PIV_Art Private 3106653 - 272 K6JM_Jim Private 3106656 - 273 WW6AOR_Edward Private 3106657 - 274 KJ6QLH_Kim Private 3106664 - 275 KF6FGL_Michael Private 3106676 - 276 KI6CRN_Rebecca Private 3106681 - 277 KG6NUO_Dave Private 3106683 - 278 KG6SYK_Russell Private 3106685 - 279 W6FRD_Fernando Private 3106690 - 280 W6OSC_Edward Private 3106691 - 281 K6DEW_Dave Private 3106692 - 282 KI6TRK_Robert Private 3106697 - 283 K2ACK_Alan Private 3106698 - 284 N6PAV_Pete Private 3106699 - 285 K6PIT_Tim Private 3106700 - 286 K6TD_Kevin Private 3106709 - 287 K6ZAS_Joe Private 3106712 - 288 KE6JDS_Mark Private 3106723 - 289 N5CV_Christopher Private 3106730 - 290 N6NVX_Russell Private 3106743 - 291 K6GLS_Gabriel Private 3106745 - 292 KJ6JEX_Mickey Private 3106748 - 293 W6OG_Norman Private 3106749 - 294 AE6GT_Jon Private 3106754 - 295 K6MJW_Michael Private 3106757 - 296 W6TPR_Thomas Private 3106761 - 297 W6OG_Norman Private 3106762 - 298 K6LAD_Cristian Private 3106763 - 299 W6MSU_Guy Private 3106765 - 300 K9WS_Stephan Private 3106780 - 301 KG6VSO_Brian Private 3106784 - 302 NU6P_John Private 3106788 - 303 W6DLO_Jeremiah Private 3106793 - 304 N6MIK_Mike Private 3106797 - 305 W6RJK_Rocky Private 3106800 - 306 N5ILN_Alan Private 3106803 - 307 KN6OE_David Private 3106809 - 308 K6AZN_Dan Private 3106816 - 309 WA6YTD_Darryl Private 3106817 - 310 N6JGA_Mike Private 3106823 - 311 N9KSP_Kenneth Private 3106826 - 312 K9WS_Steve Private 3106829 - 313 KJ6SCF_Ric Private 3106842 - 314 KJ6COI_Aaron Private 3106847 - 315 AB4GT_Jeffrey Private 3106849 - 316 K6GSJ_Lance Private 3106850 - 317 KC6FEW_Steve Private 3106851 - 318 N0ARY_Robert Private 3106852 - 319 K6SOE_Jim Private 3106853 - 320 N6PIV_Arthur Private 3106864 - 321 N6MZB_Martin Private 3106890 - 322 NO6A_Phoom Private 3106897 - 323 KJ6BQM_Martin Private 3106899 - 324 KI6ZLL_Dennis Private 3106914 - 325 N6PIV_Art Private 3106919 - 326 N6PQP_Glen Private 3106922 - 327 W1RDW_Reese Private 3106923 - 328 KD6ZXF_Gary Private 3106925 - 329 K4WTF_John Private 3106928 - 330 K4WTF_John Private 3106929 - 331 K6VAU_Randy Private 3106931 - 332 KB6RHD_David Private 3106933 - 333 KK6LIY_John Private 3106941 - 334 K6GRE_Dharmendra Private 3106942 - 335 K6PDL_Gary Private 3106949 - 336 KK6MES_Mel Private 3106958 - 337 W6TST_Timothy Private 3106960 - 338 W6FM_Ron Private 3106973 - 339 KG6QET_Randy Private 3106993 - 340 KG6ESP_Evan Private 3107005 - 341 AI6BH_Colin Private 3107010 - 342 WB6EZH_Roland Private 3107012 - 343 K6EHM_Donny Private 3107013 - 344 KK6BKU_Neil Private 3107019 - 345 N2FLT_David Private 3107025 - 346 KK6SUU_TJ Private 3107030 - 347 KK6MEP_Chad Private 3107035 - 348 KK6MET_Zachary Private 3107037 - 349 KK6MEQ_Kyle Private 3107038 - 350 KB6VHO_Marsha Private 3107046 - 351 KG6NXX_Jon Private 3107050 - 352 KI6QEE_William Private 3107052 - 353 AG6TF_Greg Private 3107059 - 354 KK6DON_Patrick Private 3107062 - 355 K6BAA_Bruce Private 3107063 - 356 W6GRC_Gary Private 3107066 - 357 N6WZ_Bennett Private 3107070 - 358 W6EI_Bob Private 3107079 - 359 KE6DBB_Jean-mich Private 3107088 - 360 W6CMU_Carnegie Private 3107089 - 361 W6CMU_Carnegie Private 3107090 - 362 KE6UPI_David Private 3107094 - 363 NJ6E_Stan Private 3107099 - 364 KK6YXX_Darrell Private 3107101 - 365 N6TRN_Ted Private 3107104 - 366 KE6YJC_Ted Private 3107107 - 367 WA6EWV_Paul Private 3107109 - 368 WB6SUB_John Private 3107112 - 369 W6CMU_Carnegie Private 3107114 - 370 N1YNQ_Jeremy Private 3107117 - 371 K9OHV_Robert Private 3107122 - 372 N1KYZ_Jeff Private 3107124 - 373 W6EDY_Eduard Private 3107125 - 374 KK6UGA_Clark Private 3107126 - 375 N6LY_Bryan Private 3107133 - 376 N6MM_Joseph Private 3107138 - 377 KI6JHH_Don Private 3107146 - 378 K6EEP_Michael Private 3107148 - 379 KD6TOD_James Private 3107149 - 380 AF6IM_Mark Private 3107154 - 381 W7NFN_James Private 3107160 - 382 KJ6CZM_Frederick Private 3107170 - 383 WB6CZG_William Private 3107186 - 384 N6VIC_Michael Private 3107188 - 385 KG6SUY_Eric Private 3107221 - 386 KC6RKY_Joe Private 3107255 - 387 WA2KDL_Christoph Private 3107281 - 388 K6YAP_Reilly Private 3107297 - 389 W6FST_Brian Private 3107304 - 390 N6GLH_Gary Private 3107311 - 391 N1YNQ_Jeremy Private 3107321 - 392 KI6CDV_Trelawny Private 3107322 - 393 KI6CDV_Trelawny Private 3107341 - 394 KI6KQW_William Private 3107345 - 395 W0GGY_Rodger Private 3107353 - 396 KM6BDU_Matthew Private 3107358 - 397 KC9KTB_Leighton Private 3107366 - 398 N6GAZ_Geoffrey Private 3107369 - 399 K6TSR_George Private 3107379 - 400 N1KN_Brad Private 3107392 - 401 W6JPP_John Private 3107397 - 402 K6ZWA_Zac Private 3107409 - 403 W9FFL_Barry Private 3107415 - 404 K6BIB_Bogdan Private 3107416 - 405 KF6MSP_Frank Private 3107424 - 406 KI6RT_Jonathan Private 3107430 - 407 W6MNL_Stephen Private 3107441 - 408 KM6AMQ_Matthew Private 3107451 - 409 KI6TCB_Oleg Private 3107452 - 410 KJ6PPC_Jane Private 3107460 - 411 K8TA_Todd Private 3107463 - 412 N6CRC_Chris Private 3107467 - 413 KF6QBW_James Private 3107478 - 414 W8DOD_Mitchell Private 3107493 - 415 KK6YXN_James Private 3107494 - 416 KM6HK_Daniel Private 3107499 - 417 AG6PN_John Private 3107532 - 418 KK6EZJ_Brian Private 3107535 - 419 KE6UVV_Hitoshi Private 3107545 - 420 K6JEL_Austin Private 3107549 - 421 NZ6J_Robert Private 3107555 - 422 AC6Y_Michael Private 3107561 - 423 N6MIK_Mike Private 3107566 - 424 WB6POT_Peter Private 3107571 - 425 KK6ISP_Clark Private 3107574 - 426 KI6LDB_Patrick Private 3107592 - 427 N6HRO_Hro Private 3107595 - 428 K6KBQ_Kevin Private 3107604 - 429 AF0XX_Frank Private 3107613 - 430 KD6KWV_Robert Private 3107614 - 431 KK6PBT_Alexander Private 3107617 - 432 N6CZE_Gary Private 3107635 - 433 K6CW_Donald Private 3107636 - 434 K6MMR_Mary Private 3107640 - 435 W6IFO_Alasdair Private 3107644 - 436 AG6PF_Tim Private 3107649 - 437 NB6F_Isaac Private 3107651 - 438 AF6CF_Nicholas Private 3107657 - 439 WA6PKY_Dennis Private 3107658 - 440 KK6NUI_Michelle Private 3107661 - 441 N6JET_Christophe Private 3107662 - 442 N6EIO_David Private 3107669 - 443 N6JET_Christophe Private 3107673 - 444 W6DH_David Private 3107685 - 445 KI6ZRE_Sam Private 3107689 - 446 AI6KG_Christophe Private 3107702 - 447 KM6EHE_Chris Private 3107712 - 448 N6MON_Terence Private 3107716 - 449 KB6UEX_Gualter Private 3107730 - 450 KI6IKV_Jackie Private 3107737 - 451 KD8DRX_William Private 3107756 - 452 K6KEL_Kelton Private 3107762 - 453 K6MAH_Michael Private 3107763 - 454 W6AWD_Alan Private 3107794 - 455 KM6ETS_Frederick Private 3107805 - 456 AI6QX_Michael Private 3107807 - 457 K6NAS_Richard Private 3107812 - 458 KJ6DBE_David Private 3107814 - 459 AE6TR_Paul Private 3107817 - 460 KI6JD_James Private 3107837 - 461 KK6NHN_Kevin Private 3107849 - 462 K6YRO_Jason Private 3107863 - 463 N6DEN_Donald Private 3107864 - 464 NN6AA_Edward Private 3107867 - 465 KM6EUV_Will Private 3107873 - 466 KJ6LEO_David Private 3107876 - 467 W9KKN_William Private 3107901 - 468 KA6SIP_Tom Private 3107902 - 469 KK6POK_Joseph Private 3107903 - 470 K6KPQ_Nathan Private 3107904 - 471 K6TMS_Tommy Private 3107905 - 472 KA5HPZ_Jeffrey Private 3107906 - 473 KB6BA_Oliver Private 3107907 - 474 KK6PLC_Jeff Private 3107908 - 475 KE6RRU_Dan Private 3107910 - 476 KA6UIX_Jeff Private 3107912 - 477 KE6RRU_Dan Private 3107913 - 478 KC6OGK_Lawrence Private 3107915 - 479 AK6O_Rodolfo Private 3107916 - 480 K2KK_Salahuddin Private 3107917 - 481 KK6VZO_Denny Private 3107920 - 482 N6HEW_Glen Private 3107923 - 483 K6YRO_Jason Private 3107929 - 484 K6KPQ_Nathan Private 3107931 - 485 KK6JP_John Private 3107932 - 486 KG6NQN_Vernon Private 3107933 - 487 WA6UDU_Peter Private 3107934 - 488 KA6HRO_Hro- Private 3107935 - 489 N7NVK_Philip Private 3107936 - 490 AF6FZ_Daniel Private 3107938 - 491 W6ABJ_Richard Private 3107939 - 492 KC6YDH_Ralph Private 3107940 - 493 KE6YJC_MountainW Private 3107941 - 494 AK6Y_Eric Private 3107943 - 495 KB6QEY_Matthew Private 3107945 - 496 K7DAA_David Private 3107946 - 497 KK6URZ_Vikki Private 3107947 - 498 KK6USF_Abbey Private 3107948 - 499 KJ6VTP_Ray Private 3107951 - 500 KJ6ZEB_Robert Private 3107952 - 501 KK6PGA_Richard Private 3107953 - 502 KI6ZHD_David Private 3107955 - 503 K7DAA_David Private 3107956 - 504 N9KTR_Michael Private 3107957 - 505 KK6QPE_Larry Private 3107958 - # Table of group lists. # 1) Group list number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of contacts: numbers and ranges (N-M) separated by comma # Grouplist Name Contacts 1 TS1.BM.TalkGrps 5-11,16-26,28-33,35-37,49 2 TS2.BM.TlkGrps 1-4 # Table of text messages. # 1) Message number: 1-50 # 2) Text: up to 144 characters # Message Text 1 QSY Norcal 95150, pls 2 QSY Local, pls 3 QSY California 3106, pls 4 QSY 441.000 CC1 TS1 TG99 Direct, pls 5 Be Right Back 6 My email is mycall@arrl.net 7 73 . . # Unique DMR ID and name of this radio. ID: 1234 Name: noname # Text displayed when the radio powers up. Intro Line 1: noname Intro Line 2: noDMRid dmrconfig-master/examples/md380-norcal-brandmeister.conf000066400000000000000000000743161354060760700236130ustar00rootroot00000000000000# # Configuration generated 2018/11/12 by dmrconfig, version 0.9.193 # Radio: TYT MD-380 Last Programmed Date: 2016-10-20 17:49:09 CPS Software Version: V01.32 # Table of digital channels. # 1) Channel number: 1-1000 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Low # 6) Scan list: - or index in Scanlist table # 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555 # 8) Receive only: -, + # 9) Admit criteria: -, Free, Color # 10) Color code: 0, 1, 2, 3... 15 # 11) Time slot: 1 or 2 # 12) Receive group list: - or index in Grouplist table # 13) Contact for transmit: - or index in Contacts table # Digital Name Receive Transmit Power Scan TOT RO Admit Color Slot RxGL TxContact 1 K6ACR_MB_CA 444.7875 +5 High 14 60 - Color 1 1 1 9 # California 2 K6ACR_MB_LCL 444.7875 +5 High 14 60 - Color 1 2 2 1 # Local 3 K6ACR_MB_NCA 444.7875 +5 High 14 60 - Color 1 2 2 18 # NorCal 4 K6ACR_MB_NCA1 444.7875 +5 High 14 60 - Color 1 2 2 19 # NorCal_1 5 K6ACR_MB_PRT 444.7875 +5 High 14 60 - Color 1 1 1 12 # Parrot 6 K6ACR_MD_CA 442.175 +5 High 16 60 - Color 1 1 1 9 # California 7 K6ACR_MD_LCL 442.175 +5 High 16 60 - Color 1 2 2 1 # Local 8 K6ACR_MD_NCA 442.175 +5 High 16 60 - Color 1 2 2 18 # NorCal 9 K6ACR_MD_NCA1 442.175 +5 High 16 60 - Color 1 2 2 19 # NorCal_1 10 K6ACR_MD_PRT 442.175 +5 High 16 60 - Color 1 1 1 12 # Parrot 11 K6ACR_MO_CA 440.1875 +5 High 17 60 - Color 1 1 1 9 # California 12 K6ACR_MO_LCL 440.1875 +5 High 17 60 - Color 1 2 2 1 # Local 13 K6ACR_MO_NCA 440.1875 +5 High 17 60 - Color 1 2 2 18 # NorCal 14 K6ACR_MO_NCA1 440.1875 +5 High 17 60 - Color 1 2 2 19 # NorCal_1 15 K6ACR_MO_PRT 440.1875 +5 High 17 60 - Color 1 1 1 12 # Parrot 16 K6ACR_SL_CA 444.350 +5 High 26 60 - Color 1 1 1 9 # California 17 K6ACR_SL_LCL 444.350 +5 High 26 60 - Color 1 2 2 1 # Local 18 K6ACR_SL_NCA 444.350 +5 High 26 60 - Color 1 2 2 18 # NorCal 19 K6ACR_SL_NCA1 444.350 +5 High 26 60 - Color 1 2 2 19 # NorCal_1 20 K6ACR_SL_PRT 444.350 +5 High 26 60 - Color 1 1 1 12 # Parrot 21 K6ACR_SM_CA 440.425 +5 High 29 60 - Color 2 1 1 9 # California 22 K6ACR_SM_LCL 440.425 +5 High 29 60 - Color 2 2 2 1 # Local 23 K6ACR_SM_NCA 440.425 +5 High 29 60 - Color 2 2 2 18 # NorCal 24 K6ACR_SM_NCA1 440.425 +5 High 29 60 - Color 2 2 2 19 # NorCal_1 25 K6ACR_SM_PRT 440.425 +5 High 29 60 - Color 2 1 1 12 # Parrot 26 K6ACR_TU_CA 444.350 +5 High 37 60 - Color 2 1 1 9 # California 27 K6ACR_TU_LCL 444.350 +5 High 37 60 - Color 2 2 2 1 # Local 28 K6ACR_TU_NCA 444.350 +5 High 37 60 - Color 2 2 2 18 # NorCal 29 K6ACR_TU_NCA1 444.350 +5 High 37 60 - Color 2 2 2 19 # NorCal_1 30 K6ACR_TU_PRT 444.350 +5 High 37 60 - Color 2 1 1 12 # Parrot 31 K6ACS_CA 442.1125 +5 High 30 60 - Color 1 1 1 9 # California 32 K6ACS_LCL 442.1125 +5 High 30 60 - Color 1 2 2 1 # Local 33 K6ACS_NCA 442.1125 +5 High 30 60 - Color 1 2 2 18 # NorCal 34 K6ACS_NCA1 442.1125 +5 High 30 60 - Color 1 2 2 19 # NorCal_1 35 K6ACS_PRT 442.1125 +5 High 30 60 - Color 1 1 1 12 # Parrot 36 K6HLE_SJ_CA 444.025 +5 High 24 60 - Color 1 1 1 9 # California 37 K6HLE_SJ_LCL 444.025 +5 High 24 60 - Color 1 2 2 1 # Local 38 K6HLE_SJ_NCA 444.025 +5 High 24 60 - Color 1 2 2 18 # NorCal 39 K6HLE_SJ_NCA1 444.025 +5 High 24 60 - Color 1 2 2 19 # NorCal_1 40 K6HLE_SJ_PRT 444.025 +5 High 24 60 - Color 1 1 1 12 # Parrot 41 K6HLE_SJ2_CA 444.0375 +5 High 25 60 - Color 1 1 1 9 # California 42 K6HLE_SJ2_LCL 444.0375 +5 High 25 60 - Color 1 2 2 1 # Local 43 K6HLE_SJ2_NCA 444.0375 +5 High 25 60 - Color 1 2 2 18 # NorCal 44 K6HLE_SJ2_NCA1 444.0375 +5 High 25 60 - Color 1 2 2 19 # NorCal_1 45 K6HLE_SJ2_PRT 444.0375 +5 High 25 60 - Color 1 1 1 12 # Parrot 46 K6JWN_CA 444.525 +5 High 8 60 - Color 2 1 1 9 # California 47 K6JWN_LCL 444.525 +5 High 8 60 - Color 2 2 2 1 # Local 48 K6JWN_NCA 444.525 +5 High 8 60 - Color 2 2 2 18 # NorCal 49 K6JWN_NCA1 444.525 +5 High 8 60 - Color 2 2 2 19 # NorCal_1 50 K6JWN_PRT 444.525 +5 High 8 60 - Color 2 1 1 12 # Parrot 51 K6LNK_GU_CA 442.075 +5 High 12 60 - Color 1 1 1 9 # California 52 K6LNK_GU_LCL 442.075 +5 High 12 60 - Color 1 2 2 1 # Local 53 K6LNK_GU_NCA 442.075 +5 High 12 60 - Color 1 2 2 18 # NorCal 54 K6LNK_GU_NCA1 442.075 +5 High 12 60 - Color 1 2 2 19 # NorCal_1 55 K6LNK_GU_PRT 442.075 +5 High 12 60 - Color 1 1 1 12 # Parrot 56 K6LNK_OA_CA 443.500 +5 High 2 60 - Color 1 1 1 9 # California 57 K6LNK_OA_CA1 443.500 +5 High 2 60 - Color 1 1 1 13 # CAL_1 58 K6LNK_OA_LCL 443.500 +5 High 2 60 - Color 1 2 2 1 # Local 59 K6LNK_OA_MW 443.500 +5 High 2 60 - Color 1 1 1 14 # Mountain_West 60 K6LNK_OA_MW1 443.500 +5 High 2 60 - Color 1 1 1 15 # Mountain_West_1 61 K6LNK_OA_NA 443.500 +5 High 2 60 - Color 1 1 1 4 # North_America 62 K6LNK_OA_NCA 443.500 +5 High 2 60 - Color 1 2 2 18 # NorCal 63 K6LNK_OA_NCA1 443.500 +5 High 2 60 - Color 1 2 2 19 # NorCal_1 64 K6LNK_OA_PRT 443.500 +5 High 2 60 - Color 1 1 1 12 # Parrot 65 K6LNK_OA_T310 443.500 +5 High 2 60 - Color 1 1 1 6 # TAC_310 66 K6LNK_OA_T311 443.500 +5 High 2 60 - Color 1 1 1 7 # TAC_311 67 K6LNK_OA_T312 443.500 +5 High 2 60 - Color 1 1 1 8 # TAC_312 68 K6LNK_OA_WW 443.500 +5 High 2 60 - Color 1 1 1 3 # World_Wide 69 K6LNK_OA_Z6 443.500 +5 High 2 60 - Color 1 1 1 27 # Call_Zone_6 70 K6LNK_WC_CA 440.2125 +5 High 38 60 - Color 1 1 1 9 # California 71 K6LNK_WC_LCL 440.2125 +5 High 38 60 - Color 1 2 2 1 # Local 72 K6LNK_WC_NCA 440.2125 +5 High 38 60 - Color 1 2 2 18 # NorCal 73 K6LNK_WC_NCA1 440.2125 +5 High 38 60 - Color 1 2 2 19 # NorCal_1 74 K6LNK_WC_PRT 440.2125 +5 High 38 60 - Color 1 1 1 12 # Parrot 75 K6LRG_CA 441.825 +5 High 13 60 - Color 1 1 1 9 # California 76 K6LRG_LCL 441.825 +5 High 13 60 - Color 1 2 2 1 # Local 77 K6LRG_NCA 441.825 +5 High 13 60 - Color 1 2 2 18 # NorCal 78 K6LRG_NCA1 441.825 +5 High 13 60 - Color 1 2 2 19 # NorCal_1 79 K6LRG_PRT 441.825 +5 High 13 60 - Color 1 1 1 12 # Parrot 80 K6OTR_CA 441.850 +5 High 13 60 - Color 1 1 1 9 # California 81 K6OTR_CA1 441.850 +5 High 3 60 - Color 1 1 1 13 # CAL_1 82 K6OTR_LCL 441.850 +5 High 3 60 - Color 1 2 2 1 # Local 83 K6OTR_MW 441.850 +5 High 3 60 - Color 1 1 1 14 # Mountain_West 84 K6OTR_MW1 441.850 +5 High 3 60 - Color 1 1 1 15 # Mountain_West_1 85 K6OTR_NA 441.850 +5 High 3 60 - Color 1 1 1 4 # North_America 86 K6OTR_NCA 441.850 +5 High 3 60 - Color 1 2 2 18 # NorCal 87 K6OTR_NCA1 441.850 +5 High 3 60 - Color 1 2 2 19 # NorCal_1 88 K6OTR_PRT 441.850 +5 High 3 60 - Color 1 1 1 12 # Parrot 89 K6OTR_T310 441.850 +5 High 3 60 - Color 1 1 1 6 # TAC_310 90 K6OTR_T311 441.850 +5 High 3 60 - Color 1 1 1 7 # TAC_311 91 K6OTR_T312 441.850 +5 High 3 60 - Color 1 1 1 8 # TAC_312 92 K6OTR_WW 441.850 +5 High 3 60 - Color 1 1 1 3 # World_Wide 93 K6OTR_Z6 441.850 +5 High 3 60 - Color 1 1 1 27 # Call_Zone_6 94 K6PIT_CA 440.1375 +5 High 20 60 - Color 2 1 1 9 # California 95 K6PIT_LCL 440.1375 +5 High 16 60 - Color 2 2 2 1 # Local 96 K6PIT_NCA 440.1375 +5 High 20 60 - Color 2 2 2 18 # NorCal 97 K6PIT_NCA1 440.1375 +5 High 20 60 - Color 2 2 2 19 # NorCal_1 98 K6PIT_PRT 440.1375 +5 High 20 60 - Color 2 1 1 12 # Parrot 99 K6SIA_CA 440.1375 +5 High 11 60 - Color 3 1 1 9 # California 100 K6SIA_LCL 440.1375 +5 High 11 60 - Color 3 2 2 1 # Local 101 K6SIA_NCA 440.1375 +5 High 11 60 - Color 3 2 2 18 # NorCal 102 K6SIA_NCA1 440.1375 +5 High 11 60 - Color 3 2 2 19 # NorCal_1 103 K6SIA_PRT 440.1375 +5 High 11 60 - Color 3 1 1 12 # Parrot 104 K7AZ_CA 440.500 +5 High 18 60 - Color 2 1 1 9 # California 105 K7AZ_LCL 440.500 +5 High 18 60 - Color 2 2 2 1 # Local 106 K7AZ_NCA 440.500 +5 High 18 60 - Color 2 2 2 18 # NorCal 107 K7AZ_NCA1 440.500 +5 High 18 60 - Color 2 2 2 19 # NorCal_1 108 K7AZ_PRT 440.500 +5 High 18 60 - Color 2 1 1 12 # Parrot 109 KC6SOT_CA 444.9875 +5 High 31 60 - Color 1 1 1 9 # California 110 KC6SOT_LCL 444.9875 +5 High 31 60 - Color 1 2 2 1 # Local 111 KC6SOT_NCA 444.9875 +5 High 31 60 - Color 1 2 2 18 # NorCal 112 KC6SOT_NCA1 444.9875 +5 High 31 60 - Color 1 2 2 19 # NorCal_1 113 KC6SOT_PRT 444.9875 +5 High 31 60 - Color 1 1 1 12 # Parrot 114 KG6MZV_CA 440.650 +5 High 19 60 - Color 2 1 1 9 # California 115 KG6MZV_LCL 440.650 +5 High 19 60 - Color 2 2 2 1 # Local 116 KG6MZV_NCA 440.650 +5 High 19 60 - Color 2 2 2 18 # NorCal 117 KG6MZV_NCA1 440.650 +5 High 19 60 - Color 2 2 2 19 # NorCal_1 118 KG6MZV_PRT 440.650 +5 High 19 60 - Color 2 1 1 12 # Parrot 119 KJ6NRO_SO_CA 442.975 +5 High 34 60 - Color 1 1 1 9 # California 120 KJ6NRO_SO_LCL 442.975 +5 High 34 60 - Color 1 2 2 1 # Local 121 KJ6NRO_SO_NCA 442.975 +5 High 34 60 - Color 1 2 2 18 # NorCal 122 KJ6NRO_SO_NCA1 442.975 +5 High 34 60 - Color 1 2 2 19 # NorCal_1 123 KJ6NRO_SO_PRT 442.975 +5 High 34 60 - Color 1 1 1 12 # Parrot 124 KJ6NRO_TU_CA 442.475 +5 High 36 60 - Color 1 1 1 9 # California 125 KJ6NRO_TU_LCL 442.475 +5 High 36 60 - Color 1 2 2 1 # Local 126 KJ6NRO_TU_NCA 442.475 +5 High 36 60 - Color 1 2 2 18 # NorCal 127 KJ6NRO_TU_NCA1 442.475 +5 High 36 60 - Color 1 2 2 19 # NorCal_1 128 KJ6NRO_TU_PRT 442.475 +5 High 36 60 - Color 1 1 1 12 # Parrot 129 KJ6QBM_CA 440.325 +5 High 7 60 - Color 1 1 1 9 # California 130 KJ6QBM_LCL 440.325 +5 High 7 60 - Color 1 2 2 1 # Local 131 KJ6QBM_NCA 440.325 +5 High 7 60 - Color 1 2 2 18 # NorCal 132 KJ6QBM_NCA1 440.325 +5 High 7 60 - Color 1 2 2 19 # NorCal_1 133 KJ6QBM_PRT 440.325 +5 High 7 60 - Color 1 1 1 12 # Parrot 134 N6AMG_CA 440.500 +5 High 1 60 - Color 1 1 1 9 # California 135 N6AMG_CA1 440.500 +5 High 1 60 - Color 1 1 1 13 # CAL_1 136 N6AMG_LCL 440.500 +5 High 1 60 - Color 1 2 2 1 # Local 137 N6AMG_MW 440.500 +5 High 1 60 - Color 1 1 1 14 # Mountain_West 138 N6AMG_MW1 440.500 +5 High 1 60 - Color 1 1 1 15 # Mountain_West_1 139 N6AMG_NA 440.500 +5 High 1 60 - Color 1 1 1 4 # North_America 140 N6AMG_NCA 440.500 +5 High 1 60 - Color 1 2 2 18 # NorCal 141 N6AMG_NCA1 440.500 +5 High 1 60 - Color 1 2 2 19 # NorCal_1 142 N6AMG_PRT 440.500 +5 High 1 60 - Color 1 1 1 12 # Parrot 143 N6AMG_T310 440.500 +5 High 1 60 - Color 1 1 1 6 # TAC_310 144 N6AMG_T311 440.500 +5 High 1 60 - Color 1 1 1 7 # TAC_311 145 N6AMG_T312 440.500 +5 High 1 60 - Color 1 1 1 8 # TAC_312 146 N6AMG_WW 440.500 +5 High 1 60 - Color 1 1 1 3 # World_Wide 147 N6AMG_Z6 440.500 +5 High 1 60 - Color 1 1 1 27 # Call_Zone_6 148 N6LDJ_CA 444.275 +5 High 21 60 - Color 1 1 1 9 # California 149 N6LDJ_LCL 444.275 +5 High 21 60 - Color 1 2 2 1 # Local 150 N6LDJ_NCA 444.275 +5 High 16 60 - Color 1 2 2 18 # NorCal 151 N6LDJ_NCA1 444.275 +5 High 21 60 - Color 1 2 2 19 # NorCal_1 152 N6LDJ_PRT 444.275 +5 High 21 60 - Color 1 1 1 12 # Parrot 153 NG6D_CA 442.9625 +5 High 6 60 - Color 1 1 1 9 # California 154 NG6D_LCL 442.9625 +5 High 6 60 - Color 1 2 2 1 # Local 155 NG6D_NCA 442.9625 +5 High 6 60 - Color 1 2 2 18 # NorCal 156 NG6D_NCA1 442.9625 +5 High 6 60 - Color 1 2 2 19 # NorCal_1 157 NG6D_PRT 442.9625 +5 High 6 60 - Color 1 1 1 12 # Parrot 158 NN6J_SA_CA 440.1375 +5 High 27 60 - Color 1 1 1 9 # California 159 NN6J_SA_LCL 440.1375 +5 High 27 60 - Color 1 2 2 1 # Local 160 NN6J_SA_NCA 440.1375 +5 High 27 60 - Color 1 2 2 18 # NorCal 161 NN6J_SA_NCA1 440.1375 +5 High 27 60 - Color 1 2 2 19 # NorCal_1 162 NN6J_SA_PRT 440.1375 +5 High 27 60 - Color 1 1 1 12 # Parrot 163 NN6J_SO_CA 444.0375 +5 High 33 60 - Color 2 1 1 9 # California 164 NN6J_SO_LCL 444.0375 +5 High 33 60 - Color 2 2 2 1 # Local 165 NN6J_SO_NCA 444.0375 +5 High 33 60 - Color 2 2 2 18 # NorCal 166 NN6J_SO_NCA1 444.0375 +5 High 33 60 - Color 2 2 2 19 # NorCal_1 167 NN6J_SO_PRT 444.0375 +5 High 33 60 - Color 2 1 1 12 # Parrot 168 Simplex_1 441.000 +0 High 39 60 - - 1 1 1 5 # Simplex 169 Simplex_2 446.500 +0 High 39 60 - - 1 1 1 5 # Simplex 170 Simplex_3 446.075 +0 High 39 60 - - 1 1 1 5 # Simplex 171 Simplex_4 443.450 +0 High 39 60 - - 1 1 1 5 # Simplex 172 W6CMU_CA 443.825 +5 High 5 60 - Color 1 1 1 9 # California 173 W6CMU_CA1 443.825 +5 High 5 60 - Color 1 1 1 13 # CAL_1 174 W6CMU_LCL 443.825 +5 High 5 60 - Color 1 2 2 1 # Local 175 W6CMU_MW 443.825 +5 High 5 60 - Color 1 1 1 14 # Mountain_West 176 W6CMU_MW1 443.825 +5 High 5 60 - Color 1 1 1 15 # Mountain_West_1 177 W6CMU_NA 443.825 +5 High 5 60 - Color 1 1 1 4 # North_America 178 W6CMU_NCA 443.825 +5 High 5 60 - Color 1 2 2 18 # NorCal 179 W6CMU_NCA1 443.825 +5 High 5 60 - Color 1 2 2 19 # NorCal_1 180 W6CMU_PRT 443.825 +5 High 5 60 - Color 1 1 1 12 # Parrot 181 W6CMU_T310 443.825 +5 High 5 60 - Color 1 1 1 6 # TAC_310 182 W6CMU_T311 443.825 +5 High 5 60 - Color 1 1 1 7 # TAC_311 183 W6CMU_T312 443.825 +5 High 5 60 - Color 1 1 1 8 # TAC_312 184 W6CMU_WW 443.825 +5 High 5 60 - Color 1 1 1 3 # World_Wide 185 W6CMU_Z6 443.825 +5 High 5 60 - Color 1 1 1 27 # Call_Zone_6 186 W6JSO_CA 444.525 +5 High 22 60 - Color 1 1 1 9 # California 187 W6JSO_LCL 444.525 +5 High 22 60 - Color 1 2 2 1 # Local 188 W6JSO_NCA 444.525 +5 High 22 60 - Color 1 2 2 18 # NorCal 189 W6JSO_NCA1 444.525 +5 High 22 60 - Color 1 2 2 19 # NorCal_1 190 W6JSO_PRT 444.525 +5 High 22 60 - Color 1 1 1 12 # Parrot 191 W6OTX_SJ_CA 444.475 +5 High 4 60 - Color 1 1 1 9 # California 192 W6OTX_SJ_CA1 444.475 +5 High 4 60 - Color 1 1 1 13 # CAL_1 193 W6OTX_SJ_LCL 444.475 +5 High 4 60 - Color 1 2 2 1 # Local 194 W6OTX_SJ_MW 444.475 +5 High 4 60 - Color 1 1 1 14 # Mountain_West 195 W6OTX_SJ_MW1 444.475 +5 High 4 60 - Color 1 1 1 15 # Mountain_West_1 196 W6OTX_SJ_NA 444.475 +5 High 4 60 - Color 1 1 1 4 # North_America 197 W6OTX_SJ_NCA 444.475 +5 High 4 60 - Color 1 2 2 18 # NorCal 198 W6OTX_SJ_NCA1 444.475 +5 High 4 60 - Color 1 2 2 1 # Local 199 W6OTX_SJ_PRT 444.475 +5 High 4 60 - Color 1 1 1 12 # Parrot 200 W6OTX_SJ_T310 444.475 +5 High 4 60 - Color 1 1 1 6 # TAC_310 201 W6OTX_SJ_T311 444.475 +5 High 4 60 - Color 1 1 1 7 # TAC_311 202 W6OTX_SJ_T312 444.475 +5 High 4 60 - Color 1 1 1 8 # TAC_312 203 W6OTX_SJ_WW 444.475 +5 High 4 60 - Color 1 1 1 3 # World_Wide 204 W6OTX_SJ_Z6 444.475 +5 High 4 60 - Color 1 1 1 27 # Call_Zone_6 205 W6PE_CA 440.0125 +5 High 32 60 - Color 1 1 1 9 # California 206 W6PE_LCL 440.0125 +5 High 32 60 - Color 1 2 2 1 # Local 207 W6PE_NCA 440.0125 +5 High 32 60 - Color 1 2 2 18 # NorCal 208 W6PE_NCA1 440.0125 +5 High 32 60 - Color 1 2 2 19 # NorCal_1 209 W6PE_PRT 440.0125 +5 High 32 60 - Color 1 1 1 12 # Parrot 210 W6SRR_CA 443.5125 +5 High 10 60 - Color 1 1 1 9 # California 211 W6SRR_LCL 443.5125 +5 High 10 60 - Color 1 2 2 1 # Local 212 W6SRR_NCA 443.5125 +5 High 10 60 - Color 1 2 2 18 # NorCal 213 W6SRR_NCA1 443.5125 +5 High 10 60 - Color 1 2 2 19 # NorCal_1 214 W6SRR_PRT 443.5125 +5 High 10 60 - Color 1 1 1 12 # Parrot 215 W6TCP_CA 440.125 +5 High 9 60 - Color 3 1 1 9 # California 216 W6TCP_LCL 440.125 +5 High 9 60 - Color 3 2 2 1 # Local 217 W6TCP_NCA 440.125 +5 High 9 60 - Color 3 2 2 18 # NorCal 218 W6TCP_NCA1 440.125 +5 High 9 60 - Color 3 2 2 19 # NorCal_1 219 W6TCP_PRT 440.125 +5 High 9 60 - Color 3 1 1 12 # Parrot 220 W6YYY_CA 440.0375 +5 High 23 60 - Color 1 1 1 9 # California 221 W6YYY_LCL 440.0375 +5 High 23 60 - Color 1 2 2 1 # Local 222 W6YYY_NCA 440.0375 +5 High 23 60 - Color 1 2 2 18 # NorCal 223 W6YYY_NCA1 440.0375 +5 High 23 60 - Color 1 2 2 19 # NorCal_1 224 W6YYY_PRT 440.0375 +5 High 23 60 - Color 1 1 1 12 # Parrot 225 WA6EWV_CA 443.700 +5 High 35 60 - Color 1 1 1 9 # California 226 WA6EWV_LCL 443.700 +5 High 35 60 - Color 1 2 2 1 # Local 227 WA6EWV_NCA 443.700 +5 High 35 60 - Color 1 2 2 18 # NorCal 228 WA6EWV_NCA1 443.700 +5 High 35 60 - Color 1 2 2 19 # NorCal_1 229 WA6EWV_PRT 443.700 +5 High 35 60 - Color 1 1 1 12 # Parrot 230 WA6KPX_CA 443.400 +5 High 15 60 - Color 1 1 1 9 # California 231 WA6KPX_LCL 443.400 +5 High 15 60 - Color 1 2 2 1 # Local 232 WA6KPX_NCA 443.400 +5 High 15 60 - Color 1 2 2 18 # NorCal 233 WA6KPX_NCA1 443.400 +5 High 15 60 - Color 1 2 2 19 # NorCal_1 234 WA6KPX_PRT 443.400 +5 High 15 60 - Color 1 1 1 12 # Parrot 235 WA6YCZ_CA 442.5375 +5 High 28 60 - Color 1 1 1 9 # California 236 WA6YCZ_LCL 442.5375 +5 High 28 60 - Color 1 2 2 1 # Local 237 WA6YCZ_NCA 442.5375 +5 High 28 60 - Color 1 2 2 18 # NorCal 238 WA6YCZ_NCA1 442.5375 +5 High 28 60 - Color 1 2 2 19 # NorCal_1 239 WA6YCZ_PRT 442.5375 +5 High 28 60 - Color 1 1 1 12 # Parrot # Table of channel zones. # 1) Zone number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of channels: numbers and ranges (N-M) separated by comma # Zone Name Channels 1 Auburn 153-157 2 Bodega 129-133 3 Daly_City 134-147 4 Dixon 46-49 5 Fremont_1 215-219 6 Fremont_2 210-214 7 Gilroy 99-103 8 Gualala 51-55 9 Livermore 75-79 10 Mariposa_MB 1-5 11 Milpitas 230-234 12 Modesto 11-15 13 Moffet 172-185 14 Mt._Oso 6-10 15 New_Cuyama 104-108 16 Novato 114-118 17 Oakland 56-69 18 Palo_Alto 80-93 19 Pittsburg 94-98 20 Pleasanton 148-152 21 Salinas 186-190 22 San_Jose_1 220-224 23 San_Jose_2 36-40 24 San_Jose_3 41-45 25 San_Jose_4 191-204 26 San_Luis_Obispo 16-20 27 Sanel_Mtn 158-162 28 Santa_Cruz 235-239 29 Santa_Maria 21-25 30 Santa_Rosa 31-35 31 Sebastopol 109-113 32 Sonoma 205-209 33 Sonoma_Mtn 163-167 34 Sonora 119-123 35 S._Lake_Tahoe 225-229 36 Talk_Around 168-171 37 Tuolumne 124-128 38 Turlock 26-30 39 Walnut_Creek 70-74 # Table of scan lists. # 1) Scan list number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) Priority channel 1 (50% of scans): -, Sel or index # 4) Priority channel 2 (25% of scans): -, Sel or index # 5) Designated transmit channel: Last, Sel or index # 6) List of channels: numbers and ranges (N-M) separated by comma # Scanlist Name PCh1 PCh2 TxCh Channels 1 Daly_City 140 140 Last 134-147 2 Oakland 140 140 Last 56-69 3 Palo_Alto 140 140 Last 80-93 4 San_Jose_4 140 140 Last 191-204 5 Moffett 140 140 Last 172-185 6 Auburn 140 140 Last 153-157 7 Bodega 140 140 Last 129-133 8 Dixon 140 140 Last 46-50 9 Fremont_1 140 140 Last 215-219 10 Fremont_2 140 140 Last 210-214 11 Gilroy 140 140 Last 99-103 12 Gualala 140 140 Last 51-55 13 Livermore 140 140 Last 75-79 14 Mariposa_MB 140 140 Last 1-5 15 Milpitas 140 140 Last 230-234 16 Modesto 140 140 Last 11-15 17 Mt._Oso 140 140 Last 6-10 18 New_Cuyama 140 140 Last 104-108 19 Novato 140 140 Last 114-118 20 Pittsburg 140 140 Last 94-98 21 Pleasanton 140 140 Last 148-152 22 Salinas 140 140 Last 186-190 23 San_Jose_1 140 140 Last 220-224 24 San_Jose_2 140 140 Last 36-40 25 San_Jose_3 140 140 Last 41-45 26 San_Luis_Obispo 140 140 Last 16-20 27 Sanel_Mtn 140 140 Last 158-162 28 Santa_Cruz 140 140 Last 235-239 29 Santa_Maria 140 140 Last 21-25 30 Santa_Rosa 140 140 Last 31-35 31 Sebastopol 140 140 Last 109-113 32 Sonoma 140 140 Last 205-209 33 Sonoma_Mtn 140 140 Last 163-167 34 Sonora 140 140 Last 119-123 35 S._Lake_Tahoe 140 140 Last 225-229 36 Tuolumne 140 140 Last 124-128 37 Turlock 140 140 Last 26-30 38 Walnut_Creek 140 140 Last 70-74 39 Talk_Around 227 227 Last 168-171 # Table of contacts. # 1) Contact number: 1-1000 # 2) Name: up to 16 characters, use '_' instead of space # 3) Call type: Group, Private, All # 4) Call ID: 1...16777215 # 5) Call receive tone: -, + # Contact Name Type ID RxTone 1 Local Group 2 - 2 Reflector_CQ Group 9 - 3 World_Wide Group 91 - 4 North_America Group 93 - 5 Simplex Group 99 - 6 TAC_310 Group 310 - 7 TAC_311 Group 311 - 8 TAC_312 Group 312 - 9 California Group 3106 - 10 EMCOM_EU Group 9112 - 11 EMCOM_US Group 9911 - 12 Parrot Private 9990 - 13 CAL_1 Group 31061 - 14 Mountain_West Group 31062 - 15 Mountain_West_1 Group 31063 - 16 SoCal Group 31066 - 17 SoCal_1 Group 31067 - 18 NorCal Group 31068 - 19 NorCal_1 Group 31069 - 20 Hytera Group 31089 - 21 Call_Zone_0 Group 31090 - 22 Call_Zone_1 Group 31091 - 23 Call_Zone_2 Group 31092 - 24 Call_Zone_3 Group 31093 - 25 Call_Zone_4 Group 31094 - 26 Call_Zone_5 Group 31095 - 27 Call_Zone_6 Group 31096 - 28 Call_Zone_7 Group 31097 - 29 Call_Zone_8 Group 31098 - 30 Call_Zone_9 Group 31099 - 31 SNARS Group 31268 - 32 Bridge Group 33100 - 33 51_50_Restricted Group 95150 - 34 Ventura_County Group 310652 - 35 W6AWD_-_Alan Private 3107794 - # Table of group lists. # 1) Group list number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of contacts: numbers and ranges (N-M) separated by comma # Grouplist Name Contacts 1 Amateur_T1 3-11,13-17,20-32,34 2 Amateur_T2 1-2,18-19,33 # Table of text messages. # 1) Message number: 1-50 # 2) Text: up to 144 characters # Message Text 1 Hello # Unique DMR ID and name of this radio. ID: 1234 Name: MYCALL # Text displayed when the radio powers up. Intro Line 1: MYCALL Intro Line 2: MYNAME dmrconfig-master/examples/md380-south-bay-area.conf000066400000000000000000000526621354060760700225010ustar00rootroot00000000000000# # Generic DMR configuration for South Bay Area. # # Schedules (PDT): # Monday 8-10 pm: PAPA DMR Roundtable, California (3106/TS1) # Tuesday 8-9 pm: SNARS DMR Net (31328/TS1) # Wednesday 5:30-6:30 pm: Texas Statewide Net (3148/TS1) # Thursday 7-7:30 pm: NorCal DMR Net (31068/TS2) # Thursday 8-10 pm: PAPA Tech Roundtable, XRF012A, analog&D-STAR (31078/TS1) # Saturday 9-11 am: Worldwide Net (91/TS1) # Radio: TYT MD-380 # Table of digital channels. # 1) Channel number: 1-1000 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Low # 6) Scan list: - or index in Scanlist table # 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555 # 8) Receive only: -, + # 9) Admit criteria: -, Free, Color # 10) Color code: 0, 1, 2, 3... 15 # 11) Time slot: 1 or 2 # 12) Receive group list: - or index in Grouplist table # 13) Contact for transmit: - or index in Contacts table # Digital Name Receive Transmit Power Scan TOT RO Admit Color Slot RxGL TxContact # (1) W6TCP, Milpitas, NorCal 101 ts1_Wide 440.125 +5 High 1 180 + Color 3 1 1 - # RX Only timeslot 1 102 California 440.125 +5 High 1 180 - Color 3 1 1 106 # 3106 California Static 103 TAC_310 440.125 +5 High 1 180 - Color 3 1 1 310 # 310 TAC 310 Dynamic 104 Bay-Net 440.125 +5 High 1 180 - Color 3 1 1 175 # 31075 Bay-Net Dynamic 105 World 440.125 +5 High 1 180 - Color 3 1 1 91 # 91 Worldwide Dynamic 151 ts2_Local 440.125 +5 High 1 180 + Color 3 2 2 - # RX Only timeslot 2 152 NorCal 440.125 +5 High 1 180 - Color 3 2 2 168 # 31068 NorCal Static 153 Anarchy 440.125 +5 High 1 180 - Color 3 2 2 166 # 31666 DMR of Anarchy Static 154 NC_5150 440.125 +5 High 1 180 - Color 3 2 2 515 # 95150 NorCal 5150 Static 155 Parrot 440.125 +5 High 1 180 - Color 3 2 2 990 # 9990 Parrot Private # (2) N6AMG, San Bruno, Baycom 201 ts1_Wide 440.500 +5 High 1 180 + Color 1 1 1 - # RX Only timeslot 1 202 North_America 440.500 +5 High 1 180 - Color 1 1 1 93 # 93 North America Static 203 California 440.500 +5 High 1 180 - Color 1 1 1 106 # 3106 California Static 204 NC_AllStr 440.500 +5 High 1 180 - Color 1 1 1 165 # 31065 NorCal AllStar Static 205 Bay-Net 440.500 +5 High 1 180 - Color 1 1 1 175 # 31075 Bay-Net Static 206 USA_Area6 440.500 +5 High 1 180 - Color 1 1 1 196 # 31096 USA Area 6 Static 207 TAC_310 440.500 +5 High 1 180 - Color 1 1 1 310 # 310 TAC 310 Dynamic 208 World 440.500 +5 High 1 180 - Color 1 1 1 91 # 91 Worldwide Dynamic 251 ts2_Local 440.500 +5 High 1 180 + Color 1 2 2 - # RX Only timeslot 2 252 Baycom 440.500 +5 High 1 180 - Color 1 2 2 715 # 97150 Baycom Static 253 NorCal 440.500 +5 High 1 180 - Color 1 2 2 168 # 31068 NorCal Dynamic 254 Anarchy 440.500 +5 High 1 180 - Color 1 2 2 166 # 31666 DMR of Anarchy Dynamic 255 NC_5150 440.500 +5 High 1 180 - Color 1 2 2 515 # 95150 NorCal 5150 Dynamic 256 Parrot 440.500 +5 High 1 180 - Color 1 2 2 990 # 9990 Parrot Private # (3) WB6ECE, Boulder Creek, Baycom 301 ts1_Wide 440.5875 +5 High 1 180 + Color 2 1 1 - # RX Only timeslot 1 302 North_America 440.5875 +5 High 1 180 - Color 2 1 1 93 # 93 North America Static 303 California 440.5875 +5 High 1 180 - Color 2 1 1 106 # 3106 California Static 304 Santa_Clara 440.5875 +5 High 1 180 - Color 2 1 1 164 # 31064 Santa Clara County Static 305 NC_AllStr 440.5875 +5 High 1 180 - Color 2 1 1 165 # 31065 NorCal AllStar Static 306 Bay-Net 440.5875 +5 High 1 180 - Color 2 1 1 175 # 31075 Bay-Net Static 307 USA_Area6 440.5875 +5 High 1 180 - Color 2 1 1 196 # 31096 USA Area 6 Static 308 TAC_310 440.5875 +5 High 1 180 - Color 2 1 1 310 # 310 TAC 310 Dynamic 309 World 440.5875 +5 High 1 180 - Color 2 1 1 91 # 91 Worldwide Dynamic 351 ts2_Local 440.5875 +5 High 1 180 + Color 2 2 2 - # RX Only timeslot 2 352 Baycom 440.5875 +5 High 1 180 - Color 2 2 2 715 # 97150 Baycom Static 353 NorCal 440.5875 +5 High 1 180 - Color 2 2 2 168 # 31068 NorCal Dynamic 354 Anarchy 440.5875 +5 High 1 180 - Color 2 2 2 166 # 31666 DMR of Anarchy Dynamic 355 NC_5150 440.5875 +5 High 1 180 - Color 2 2 2 515 # 95150 NorCal 5150 Dynamic 356 Parrot 440.5875 +5 High 1 180 - Color 2 2 2 990 # 9990 Parrot Private # (4) K6OTR, Palo Alto, Baycom 401 ts1_Wide 441.850 +5 High 1 180 + Color 1 1 1 - # RX Only timeslot 1 402 North_America 441.850 +5 High 1 180 - Color 1 1 1 93 # 93 North America Static 403 California 441.850 +5 High 1 180 - Color 1 1 1 106 # 3106 California Static 404 NC_AllStr 441.850 +5 High 1 180 - Color 1 1 1 165 # 31065 NorCal AllStar Static 405 Bay-Net 441.850 +5 High 1 180 - Color 1 1 1 175 # 31075 Bay-Net Static 406 USA_Area6 441.850 +5 High 1 180 - Color 1 1 1 196 # 31096 USA - Area 6 4646 Static 407 TAC_310 441.850 +5 High 1 180 - Color 1 1 1 310 # 310 TAC 310 Dynamic 408 World 441.850 +5 High 1 180 - Color 1 1 1 91 # 91 Worldwide Dynamic 451 ts2_Local 441.850 +5 High 1 180 + Color 1 2 2 - # RX Only timeslot 2 452 Baycom 441.850 +5 High 1 180 - Color 1 2 2 715 # 97150 Baycom Static 453 NorCal 441.850 +5 High 1 180 - Color 1 2 2 168 # 31068 NorCal Dynamic 454 Anarchy 441.850 +5 High 1 180 - Color 1 2 2 166 # 31666 DMR of Anarchy Dynamic 455 NC_5150 441.850 +5 High 1 180 - Color 1 2 2 515 # 95150 NorCal 5150 Dynamic 456 Parrot 441.850 +5 High 1 180 - Color 1 2 2 990 # 9990 Parrot Private # (5) KK6USZ, Saratoga 501 ts1_Wide 441.950 +5 High 1 180 + Color 1 1 1 - # RX Only timeslot 1 502 Nebraska 441.950 +5 High 1 180 - Color 1 1 1 131 # 3131 Nebraska Static 503 World 441.950 +5 High 1 180 - Color 1 1 1 91 # 91 Worldwide Dynamic 504 California 441.950 +5 High 1 180 - Color 1 1 1 106 # 3106 California Dynamic 505 Texas 441.950 +5 High 1 180 - Color 1 1 1 148 # 3148 Texas Dynamic 506 PAPA 441.950 +5 High 1 180 - Color 1 1 1 178 # 31078 XLX013D PAPA Dynamic 507 TAC_310 441.950 +5 High 1 180 - Color 1 1 1 310 # 310 TAC 310 Dynamic 551 ts2_Local 441.950 +5 High 1 180 + Color 1 2 2 - # RX Only timeslot 2 552 Santa_Clara 441.950 +5 High 1 180 - Color 1 2 2 164 # 31064 Santa Clara County Static 553 NorCal 441.950 +5 High 1 180 - Color 1 2 2 168 # 31068 NorCal Static 554 Bay-Net 441.950 +5 High 1 180 - Color 1 2 2 175 # 31075 Bay-Net Static 555 Baycom 441.950 +5 High 1 180 - Color 1 2 2 715 # 97150 Baycom Static 556 Clst_KK6USZ 441.950 +5 High 1 180 - Color 1 2 2 670 # 110670 Cluster KK6USZ Static 557 Anarchy 441.950 +5 High 1 180 - Color 1 2 2 166 # 31666 DMR of Anarchy Dynamic 558 NC_5150 441.950 +5 High 1 180 - Color 1 2 2 515 # 95150 NorCal 5150 Dynamic 559 Parrot 441.950 +5 High 1 180 - Color 1 2 2 990 # 9990 Parrot Private # (6) WA6YCZ, Mt Umunhum, Baycom 601 ts1_Wide 442.5375 +5 High 1 180 + Color 1 1 1 - # RX Only timeslot 1 602 North_America 442.5375 +5 High 1 180 - Color 1 1 1 93 # 93 North America Static 603 California 442.5375 +5 High 1 180 - Color 1 1 1 106 # 3106 California Static 604 Santa_Clara 442.5375 +5 High 1 180 - Color 1 1 1 164 # 31064 Santa Clara County Static 605 NC_AllStr 442.5375 +5 High 1 180 - Color 1 1 1 165 # 31065 NorCal AllStar Static 606 Bay-Net 442.5375 +5 High 1 180 - Color 1 1 1 175 # 31075 Bay-Net Static 607 USA_Area6 442.5375 +5 High 1 180 - Color 1 1 1 196 # 31096 USA Area 6 Static 608 TAC_310 442.5375 +5 High 1 180 - Color 1 1 1 310 # 310 TAC 310 Dynamic 609 World 442.5375 +5 High 1 180 - Color 1 1 1 91 # 91 Worldwide Dynamic 651 ts2_Local 442.5375 +5 High 1 180 + Color 1 2 2 - # RX Only timeslot 2 652 Baycom 442.5375 +5 High 1 180 - Color 1 2 2 715 # 97150 Baycom Static 653 NorCal 442.5375 +5 High 1 180 - Color 1 2 2 168 # 31068 NorCal Dynamic 654 Anarchy 442.5375 +5 High 1 180 - Color 1 2 2 166 # 31666 DMR of Anarchy Dynamic 655 NC_5150 442.5375 +5 High 1 180 - Color 1 2 2 515 # 95150 NorCal 5150 Dynamic 656 Parrot 442.5375 +5 High 1 180 - Color 1 2 2 990 # 9990 Parrot Private # (7) K6LNK, Berkeley, NorCal, Carla 701 ts1_Wide 443.500 +5 High 1 180 + Color 1 1 1 - # RX Only timeslot 1 702 California 443.500 +5 High 1 180 - Color 1 1 1 106 # 3106 California Static 703 KPARN 443.500 +5 High 1 180 - Color 1 1 1 172 # 31072 KPARN Static 704 SNARS 443.500 +5 High 1 180 - Color 1 1 1 328 # 31328 SNARS (Reno/Tahoe) Static 705 Clst_K6LNK 443.500 +5 High 1 180 - Color 1 1 1 23 # 23 Cluster K6LNK Static 706 TAC_310 443.500 +5 High 1 180 - Color 1 1 1 310 # 310 TAC 310 Dynamic 707 Bay-Net 443.500 +5 High 1 180 - Color 1 1 1 175 # 31075 Bay-Net Dynamic 708 World 443.500 +5 High 1 180 - Color 1 1 1 91 # 91 Worldwide Dynamic 751 ts2_Local 443.500 +5 High 1 180 + Color 1 2 2 - # RX Only timeslot 2 752 NorCal 443.500 +5 High 1 180 - Color 1 2 2 168 # 31068 NorCal Static 753 CARLA 443.500 +5 High 1 180 - Color 1 2 2 604 # 310604 CARLA Static 754 Tri-LERT 443.500 +5 High 1 180 - Color 1 2 2 703 # 310703 Tri-LERT Static 755 Clst_CARLA 443.500 +5 High 1 180 - Color 1 2 2 21 # 21 Cluster CARLA Static 756 Anarchy 443.500 +5 High 1 180 - Color 1 2 2 166 # 31666 DMR of Anarchy Dynamic 757 NC_5150 443.500 +5 High 1 180 - Color 1 2 2 515 # 95150 NorCal 5150 Dynamic 758 Parrot 443.500 +5 High 1 180 - Color 1 2 2 990 # 9990 Parrot Private # (8) K6HLE, Loma Prieta, NorCal, AREA 801 ts1_Wide 444.025 +5 High 1 180 + Color 1 1 1 - # RX Only timeslot 1 802 North_America 444.025 +5 High 1 180 - Color 1 1 1 93 # 93 North America Static 803 California 444.025 +5 High 1 180 - Color 1 1 1 106 # 3106 California Static 804 USA_Area_6 444.025 +5 High 1 180 - Color 1 1 1 196 # 31096 USA - Area 6 4646 Static 805 TAC_310 444.025 +5 High 1 180 - Color 1 1 1 310 # 310 TAC 310 Dynamic 806 Bay-Net 444.025 +5 High 1 180 - Color 1 1 1 175 # 31075 Bay-Net Dynamic 807 World 444.025 +5 High 1 180 - Color 1 1 1 91 # 91 Worldwide Dynamic 851 ts2_Local 444.025 +5 High 1 180 + Color 1 2 2 - # RX Only timeslot 2 852 NorCal 444.025 +5 High 1 180 - Color 1 2 2 168 # 31068 NorCal Static 853 Anarchy 444.025 +5 High 1 180 - Color 1 2 2 166 # 31666 DMR of Anarchy Dynamic 854 NC_5150 444.025 +5 High 1 180 - Color 1 2 2 515 # 95150 NorCal 5150 Dynamic 855 Parrot 444.025 +5 High 1 180 - Color 1 2 2 990 # 9990 Parrot Private # (9) WW6BAY, Palo Alto, Bay-Net 901 ts1_Wide 444.350 +5 High 1 180 + Color 1 1 1 - # RX Only timeslot 1 902 Santa_Clara 444.350 +5 High 1 180 - Color 1 1 1 164 # 31064 Santa Clara County Static 903 TAC_310 444.350 +5 High 1 180 - Color 1 1 1 310 # 310 TAC 310 Dynamic 904 World 444.350 +5 High 1 180 - Color 1 1 1 91 # 91 Worldwide Dynamic 951 ts2_Local 444.350 +5 High 1 180 + Color 1 2 2 - # RX Only timeslot 2 952 Bay-Net 444.350 +5 High 1 180 - Color 1 2 2 175 # 31075 Bay-Net Static 953 NorCal 444.350 +5 High 1 180 - Color 1 2 2 168 # 31068 NorCal Dynamic 954 Anarchy 444.350 +5 High 1 180 - Color 1 2 2 166 # 31666 DMR of Anarchy Dynamic 955 NC_5150 444.350 +5 High 1 180 - Color 1 2 2 515 # 95150 NorCal 5150 Dynamic 956 Parrot 444.350 +5 High 1 180 - Color 1 2 2 990 # 9990 Parrot Private # (10) W6OTX, Alum Rock, NorCal, PAARA 001 ts1_Wide 444.475 +5 High 1 180 + Color 1 1 1 - # RX Only timeslot 1 002 California 444.475 +5 High 1 180 - Color 1 1 1 106 # 3106 California Static 003 TAC_310 444.475 +5 High 1 180 - Color 1 1 1 310 # 310 TAC 310 Dynamic 004 Bay-Net 444.475 +5 High 1 180 - Color 1 1 1 175 # 31075 Bay-Net Dynamic 005 World 444.475 +5 High 1 180 - Color 1 1 1 91 # 91 Worldwide Dynamic 051 ts2_Local 444.475 +5 High 1 180 + Color 1 2 2 - # RX Only timeslot 2 052 NorCal 444.475 +5 High 1 180 - Color 1 2 2 168 # 31068 NorCal Static 053 Anarchy 444.475 +5 High 1 180 - Color 1 2 2 166 # 31666 DMR of Anarchy Dynamic 054 NC_5150 444.475 +5 High 1 180 - Color 1 2 2 515 # 95150 NorCal 5150 Dynamic 055 Parrot 444.475 +5 High 1 180 - Color 1 2 2 990 # 9990 Parrot Private # Table of channel zones. # 1) Zone number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of channels: numbers and ranges (N-M) separated by comma # Zone Name Channels 1 Milpitas 101-105,151-155 # 440.125 W6TCP 2 San_Bruno 201-208,251-256 # 440.500 N6AMG 3 Boulder_Creek 301-309,351-356 # 440.5875 WB6ECE 4 Palo_Alto 401-408,451-456 # 441.850 K6OTR 5 Saratoga 501-507,551-559 # 441.950 KK6USZ 6 Mt_Umunhum 601-609,651-656 # 442.5375 WA6YCZ 7 Berkeley 701-708,751-758 # 443.500 K6LNK 8 Loma_Prieta 801-807,851-855 # 444.025 K6HLE 9 Baynet_Palo_Alto 901-904,951-956 # 444.350 WW6BAY 10 Alum_Rock 1-5,51-55 # 444.475 W6OTX # Table of scan lists. # 1) Scan list number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) Priority channel 1 (50% of scans): -, Sel or index # 4) Priority channel 2 (25% of scans): -, Sel or index # 5) Designated transmit channel: Last, Sel or index # 6) List of channels: numbers and ranges (N-M) separated by comma # Scanlist Name PCh1 PCh2 TxCh Channels 1 Santa_Clara - - Last 101,151,201,251,301,351,401,451,501,551,601,651,701,751,801,851,901,951,1,51 # Table of group lists. # 1) Group list number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of contacts: numbers and ranges (N-M) separated by comma # Grouplist Name Contacts 1 Timeslot_1 23 # 23 Cluster K6LNK 1 Timeslot_1 91 # 91 Worldwide 1 Timeslot_1 93 # 93 North America 1 Timeslot_1 310 # 310 TAC 310 1 Timeslot_1 106 # 3106 California 1 Timeslot_1 131 # 3131 Nebraska 1 Timeslot_1 148 # 3148 Texas 1 Timeslot_1 164 # 31064 Santa Clara County 1 Timeslot_1 165 # 31065 NorCal AllStar 1 Timeslot_1 172 # 31072 KPARN 1 Timeslot_1 175 # 31075 Bay-Net 1 Timeslot_1 178 # 31078 XLX013D PAPA 1 Timeslot_1 196 # 31096 USA - Area 6 4646 1 Timeslot_1 328 # 31328 SNARS (Reno/Tahoe) 1 Timeslot_1 329 # 31329 SNARS 2 2 Timeslot_2 21 # 21 Cluster CARLA 2 Timeslot_2 604 # 310604 CARLA 2 Timeslot_2 670 # 110670 Cluster KK6USZ 2 Timeslot_2 703 # 310703 Tri-LERT 2 Timeslot_2 164 # 31064 Santa Clara County 2 Timeslot_2 168 # 31068 NorCal 2 Timeslot_2 175 # 31075 Bay-Net 2 Timeslot_2 166 # 31666 DMR of Anarchy 2 Timeslot_2 515 # 95150 NorCal 5150 2 Timeslot_2 715 # 97150 Baycom # Table of contacts. # 1) Contact number: 1-1000 # 2) Name: up to 16 characters, use '_' instead of space # 3) Call type: Group, Private, All # 4) Call ID: 1...16777215 # 5) Call receive tone: -, + # Contact Name Type ID RxTone # From all Bay Area repeaters 21 Cluster_CARLA Group 21 - 23 Cluster_K6LNK Group 23 - 91 Worldwide Group 91 - 93 North_America Group 93 - 310 TAC_310 Group 310 - 106 California Group 3106 - 131 Nebraska Group 3131 - 148 Texas Group 3148 - 164 Santa_Clara_Cnty Group 31064 - 165 NorCal_AllStar Group 31065 - 168 NorCal Group 31068 - 172 KPARN Group 31072 - 175 Bay-Net Group 31075 - 178 XLX013D_PAPA Group 31078 - 196 USA_Area_6 Group 31096 - 328 SNARS Group 31328 - 329 SNARS_2 Group 31329 - 166 DMR_of_Anarchy Group 31666 - 515 NorCal_5150 Group 95150 - 715 Baycom Group 97150 - 670 Cluster_KK6USZ Group 110670 - 604 CARLA Group 310604 - 703 Tri-LERT Group 310703 - # Private 990 Parrot Private 9990 - dmrconfig-master/examples/rd5r-baden-wuertemburg-codeplug-v3.conf000066400000000000000000000562731354060760700254500ustar00rootroot00000000000000# # Configuration generated 2018/11/21 by dmrconfig, version 0.9.193 # Radio: Baofeng RD-5R Last Programmed Date: 2018-05-13 13:25 # Table of digital channels. # 1) Channel number: 1-1024 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Low # 6) Scan list: - or index in Scanlist table # 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555 # 8) Receive only: -, + # 9) Admit criteria: -, Free, Color # 10) Color code: 0, 1, 2, 3... 15 # 11) Time slot: 1 or 2 # 12) Receive group list: - or index in Grouplist table # 13) Contact for transmit: - or index in Contacts table # Digital Name Receive Transmit Power Scan TOT RO Admit Color Slot RxGL TxContact 1 DB0SKF-TS1 439.900 -9.4 High 8 - - Color 1 1 1 5 # D+/BM Germany 2 DB0SKF-TS2 439.900 -9.4 High 8 - - Color 1 2 2 3 # BM/D+Local 3 DB0HZG-BM1 438.5875 -7.6 High 1 - - Color 1 1 3 5 # D+/BM Germany 4 DB0HZG-BM2 438.5875 -7.6 High 1 - - Color 1 2 4 3 # BM/D+Local 5 DB0HER-BM1 438.325 -7.6 High 1 - - Color 1 1 3 5 # D+/BM Germany 6 DB0HER-BM2 438.325 -7.6 High 1 - - Color 1 2 4 3 # BM/D+Local 7 DB0ARH-BM1 439.850 -9.4 High 1 - - Color 1 1 3 5 # D+/BM Germany 8 DB0ARH-BM2 439.850 -9.4 High 1 - - Color 1 2 4 3 # BM/D+Local 9 DB0VSS-TS1 439.250 -7.6 High 4 - - Color 1 1 1 5 # D+/BM Germany 10 DB0VSS-TS2 439.250 -7.6 High 4 - - Color 1 2 2 3 # BM/D+Local 11 DB0CI-TS1 439.500 -7.6 High 4 - - Color 1 1 1 5 # D+/BM Germany 12 DB0CI-TS2 439.500 -7.6 High 4 - - Color 1 2 2 3 # BM/D+Local 13 DM0KB-TS1 439.300 -7.6 High 4 - - Color 1 1 1 5 # D+/BM Germany 14 DM0KB-TS2 439.300 -7.6 High 4 - - Color 1 2 2 3 # BM/D+Local 15 DB0VSS-BM1 145.575 -0.6 High 3 - - Color 1 1 3 5 # D+/BM Germany 16 DB0VSS-BM2 145.575 -0.6 High 3 - - Color 1 2 4 3 # BM/D+Local 17 DG8GL-TS1 439.900 -9.4 High 4 - - Color 1 1 1 5 # D+/BM Germany 18 DG8GL-TS2 439.900 -9.4 High 4 - - Color 1 2 2 3 # BM/D+Local 19 DB0UZ-TS1 438.5125 -7.6 High 8 - - Color 1 1 1 5 # D+/BM Germany 20 DB0UZ-TS2 438.5125 -7.6 High 8 - - Color 1 2 2 3 # BM/D+Local 21 DB0UX-TS1 439.8875 -9.4 High 8 - - Color 1 1 1 5 # D+/BM Germany 22 DB0UX-TS2 439.8875 -9.4 High 8 - - Color 1 2 2 3 # BM/D+Local 23 DB0TN-BM1 439.875 -9.4 High 3 - - Color 1 1 - 5 # D+/BM Germany 24 DB0TN-BM2 439.875 -9.4 High 3 - - Color 1 2 - 3 # BM/D+Local 25 DB0HD-TS1 438.7125 -7.6 High 8 - - Color 1 1 1 5 # D+/BM Germany 26 DB0HD-TS2 438.7125 -7.6 High 8 - - Color 1 2 2 3 # BM/D+Local 27 DB0RB-TS1 439.8125 -8.4 High 8 - - Color 1 1 1 5 # D+/BM Germany 28 DB0RB-TS2 439.8125 -9.4 High 8 - - Color 1 2 2 3 # BM/D+Local 29 DB0BP-TS1 438.925 -7.6 High 13 - - Color 1 1 1 5 # D+/BM Germany 30 DB0BP-TS2 438.925 -7.6 High 13 - - Color 1 2 2 3 # BM/D+Local 31 DB0CRA-TS1 438.5375 -7.6 High 13 - - Color 1 1 1 5 # D+/BM Germany 32 DB0CRA-TS2 438.5375 -7.6 High 13 - - Color 1 2 2 3 # BM/D+Local 33 DM0VL-BM1 439.8375 -9.4 High 3 - - Color 1 1 - 5 # D+/BM Germany 34 DM0VL-BM2 439.8375 -9.4 High 3 - - Color 1 2 - 3 # BM/D+Local 35 DB0LBG-TS1 438.3375 -7.6 High 13 - - Color 1 1 1 5 # D+/BM Germany 36 DB0LBG-TS2 438.3375 -7.6 High 13 - - Color 1 2 2 3 # BM/D+Local 37 DM0KB-BM1 145.600 -0.6 High 3 - - Color 1 1 3 5 # D+/BM Germany 38 DM0KB-BM2 145.600 -0.6 High 3 - - Color 1 2 4 3 # BM/D+Local 39 DB0SDO-TS1 439.300 -7.6 High 13 - - Color 1 1 1 5 # D+/BM Germany 40 DB0SD0-TS2 439.300 -7.6 High 13 - - Color 1 2 2 3 # BM/D+Local 41 DG4SDO-TS1 439.800 -9.4 High 13 - - Color 1 1 1 5 # D+/BM Germany 42 DG4SDO-TS2 439.800 -9.4 High 13 - - Color 1 2 2 3 # BM/D+Local 43 DB0VS-BM1 438.300 -7.6 High 3 - - Color 1 1 3 5 # D+/BM Germany 44 DB0VS-BM2 438.300 -7.6 High 3 - - Color 1 2 4 3 # BM/D+Local 45 DB0SWR-TS1 438.375 -7.6 High 10 - - Color 1 1 1 5 # D+/BM Germany 46 DB0SWR-TS2 438.375 -7.6 High 10 - - Color 1 2 4 3 # BM/D+Local 47 DM0ZF-BM1 439.825 -9.4 High 3 - - - 1 1 - 4 # BM SOTA 48 DM0ZF-BM2 439.825 -9.4 High 3 - - - 1 2 - 4 # BM SOTA 49 DB0MGH-TS1 439.5625 -7.6 High 10 - - Color 1 1 1 5 # D+/BM Germany 50 DB0MGH-TS2 439.5625 -7.6 High 10 - - Color 1 2 2 3 # BM/D+Local 51 DM0ZF-1-BM1 439.9375 -9.4 High 3 - - Color 1 1 3 5 # D+/BM Germany 52 DM0ZF-1-BM2 439.9375 -9.4 High 3 - - Color 1 2 4 3 # BM/D+Local 53 DB0KLI-BM1 438.6625 -7.6 High 3 - - Color 1 1 3 5 # D+/BM Germany 54 DB0KLI-BM2 438.6625 -7.6 High 3 - - Color 1 2 4 3 # BM/D+Local 55 DB0BH-BM1 439.075 -7.6 High 4 - - Color 1 1 3 5 # D+/BM Germany 56 DB0BH-BM2 439.075 -7.6 High 4 - - Color 1 2 4 3 # BM/D+Local 57 DB0MGH-1-TS1 439.8125 -9.4 High 10 - - Color 1 1 1 5 # D+/BM Germany 58 DB0MGH-1-TS2 439.8125 -9.4 High 10 - - Color 1 2 2 3 # BM/D+Local 59 DB0MGH-2-TS1 145.575 -0.6 High 10 - - Color 1 1 1 5 # D+/BM Germany 60 DB0MGH-2-TS2 145.575 -0.6 High 10 - - Color 1 2 2 3 # BM/D+Local 61 DB0FAA-TS1 439.4875 -7.6 High 10 - - Color 1 1 1 5 # D+/BM Germany 62 DB0FAA-TS2 439.4875 -7.6 High 10 - - Color 1 2 2 3 # BM/D+Local 63 DB0FAA-1-TS1 439.1125 -7.6 High 10 - - Color 1 1 1 5 # D+/BM Germany 64 DB0FAA-1-TS2 439.1125 -7.6 High 10 - - Color 1 2 2 3 # BM/D+Local 65 DB0ORT-BM1 439.9625 -9.4 High 4 - - Color 1 1 3 5 # D+/BM Germany 66 DB0ORT-BM2 439.9625 -9.4 High 4 - - Color 1 2 4 3 # BM/D+Local 67 DB0LHR-BM1 438.550 -7.6 High 4 - - Color 1 1 3 5 # D+/BM Germany 68 DB0LHR-BM2 438.550 -7.6 High 4 - - Color 1 2 4 3 # BM/D+Local 69 DB0RWP-BM1 439.975 -9.4 High 4 - - Color 1 1 3 5 # D+/BM Germany 70 DB0RWP-BM2 439.975 -9.4 High 4 - - Color 1 2 4 3 # BM/D+Local 71 DB0FHA-TS1 145.6625 -0.6 High 10 - - Color 1 1 1 5 # D+/BM Germany 72 DB0FHA-TS2 145.6625 -0.6 High 10 - - Color 1 2 2 3 # BM/D+Local 73 DB0WBD-BM1 438.375 -7.6 High 7 - - Color 1 1 3 5 # D+/BM Germany 74 DB0WBD-BM2 438.375 -7.6 High 7 - - Color 1 2 4 3 # BM/D+Local 75 DB0TOD-BM1 438.500 -7.6 High 7 - - Color 1 1 3 5 # D+/BM Germany 76 DB0TOD-BM2 438.500 -7.6 High 7 - - Color 1 2 4 3 # BM/D+Local 77 DB0HM-BM1 439.950 -9.4 High 8 - - Color 1 1 3 5 # D+/BM Germany 78 DB0HM-BM2 439.950 -9.4 High 8 - - Color 1 2 4 3 # BM/D+Local 79 DB0FHA-1-TS1 439.0125 -7.6 High 10 - - Color 1 1 1 5 # D+/BM Germany 80 DB0FHA-1-TS2 439.0125 -7.6 High 10 - - Color 1 2 2 3 # BM/D+Local 81 DB0ODE-BM1 439.925 -9.4 High 8 - - Color 1 1 3 5 # D+/BM Germany 82 DB0ODE-BM2 439.925 -9.4 High 8 - - Color 1 2 4 3 # BM/D+Local 83 DM0ODW-BM1 438.350 -7.6 High 8 - - Color 1 1 3 5 # D+/BM Germany 84 DM0ODW-BM2 438.350 -7.6 High 8 - - Color 1 2 4 3 # BM/D+Local 85 DB0WTL-BM1 439.2125 -7.6 High 9 - - Color 1 1 3 5 # D+/BM Germany 86 DB0WTL-BM2 439.2125 -7.6 High 9 - - Color 1 2 4 3 # BM/D+Local 87 DB0SAA-BM1 438.475 -7.6 High 9 - - Color 1 1 3 5 # D+/BM Germany 88 DB0SAA-BM2 438.475 -7.6 High 9 - - Color 1 2 4 3 # BM/D+Local 89 DB0ZRB-BM1 439.5375 -7.6 High 9 - - Color 1 1 3 5 # D+/BM Germany 90 DB0ZRB-BM2 439.5375 -7.6 High 9 - - Color 1 2 4 3 # BM/D+Local 91 DB0ST-BM1 439.1875 -7.6 High 9 - - Color 1 1 3 5 # D+/BM Germany 92 DB0ST-BM2 439.1875 -7.6 High 9 - - Color 1 2 4 3 # BM/D+Local 93 DB0RV-TS1 439.4125 -7.6 High 11 - - Color 1 1 1 5 # D+/BM Germany 94 DB0RV-TS2 439.4125 -7.6 High 11 - - Color 1 2 2 3 # BM/D+Local 95 DB0HDH-BM1 438.425 -7.6 High 9 - - Color 1 1 3 5 # D+/BM Germany 96 DB0HDH-BM2 438.425 -7.6 High 9 - - Color 1 2 2 3 # BM/D+Local 97 DM0MGN-TS1 438.350 -7.6 High 11 - - Color 1 1 1 5 # D+/BM Germany 98 DM0MGN-TS2 438.350 -7.6 High 11 - - Color 1 2 2 3 # BM/D+Local 99 DB0TST-BM1 438.500 -7.6 High 9 - - Color 1 1 3 5 # D+/BM Germany 100 DB0TST-BM2 438.500 -7.6 High 9 - - Color 1 2 4 3 # BM/D+Local 101 DB0GK-BM1 438.8375 -7.6 High 9 - - Color 1 1 3 5 # D+/BM Germany 102 DB0GK-BM2 438.8375 -7.6 High 9 - - Color 1 2 4 3 # BM/D+Local 103 DO0OKO-BM1 438.7875 -7.6 High 9 - - Color 1 1 3 5 # D+/BM Germany 104 DO0OKO-BM2 438.7875 -7.6 High 9 - - Color 1 2 4 3 # BM/D+Local 105 DL8VA-TS1 439.300 -7.6 High 12 - - Color 1 1 1 5 # D+/BM Germany 106 DL8VA-TS2 439.300 -7.6 High 12 - - Color 1 2 2 3 # BM/D+Local 107 DB0RZ-TS1 439.475 -7.6 High 12 - - Color 1 1 1 5 # D+/BM Germany 108 DB0RZ-TS2 439.475 -7.6 High 12 - - Color 1 2 2 3 # BM/D+Local 109 DB0STB-BM1 439.525 -7.6 High 13 - - Color 1 1 1 5 # D+/BM Germany 110 DB0STB-BM2 439.525 -7.6 High 13 - - Color 1 2 2 3 # BM/D+Local 111 DB0TTM-BM1 438.550 -7.6 High 13 - - Color 5 1 1 5 # D+/BM Germany 112 DB0TTM-BM2 438.550 -7.6 High 13 - - Color 5 2 2 3 # BM/D+Local 113 DB0NZZ-BM1 438.400 -7.6 High 11 - - Color 1 1 3 5 # D+/BM Germany 114 DB0NZZ-BM2 438.400 -7.6 High 11 - - Color 1 2 4 3 # BM/D+Local 115 DB0ARD-BM1 438.450 -7.6 High 11 - - Color 1 1 3 5 # D+/BM Germany 116 DB0ARD-BM2 438.450 -7.6 High 11 - - Color 1 2 4 3 # BM/D+Local 117 DB0ULM-BM1 439.5875 -7.6 High 11 - - Color 1 1 3 5 # D+/BM Germany 118 DB0ULM-BM2 439.5875 -7.6 High 11 - - Color 1 2 4 3 # BM/D+Local 119 DM0ULM-BM1 439.9625 -9.4 High 11 - - Color 1 1 3 5 # D+/BM Germany 120 DM0ULM-BM2 439.9625 -9.4 High 11 - - Color 1 2 4 3 # BM/D+Local 121 DB0FMS-BM1 439.3375 -7.6 High 11 - - Color 1 1 1 5 # D+/BM Germany 122 DB0FMS-BM2 439.3375 -7.6 High 11 - - Color 1 2 2 3 # BM/D+Local 123 DB0REU-BM1 439.575 -7.6 High 11 - - Color 1 1 1 5 # D+/BM Germany 124 DB0REU-BM2 439.575 -7.6 High 11 - - Color 1 2 2 3 # BM/D+Local 127 DL1YBL-BM1 439.975 -9.4 High 7 - - - 1 1 1 5 # D+/BM Germany 128 DL1YBL-BM2 439.975 -9.4 High 7 - - - 1 2 4 3 # BM/D+Local 140 2M_DV_call 145.375 +0 High - - - - 0 1 - 98 # DMR Simplex 141 70cm_DV_Call 433.450 +0 High - - - - 0 1 - 98 # DMR Simplex 175 EXAMPL-TS1-0KB 145.600 -0.6 High 5 - - - 1 1 11 5 # D+/BM Germany # Table of analog channels. # 1) Channel number: 1-1024 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Low # 6) Scan list: - or index # 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555 # 8) Receive only: -, + # 9) Admit criteria: -, Free, Tone # 10) Squelch level: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 # 11) Guard tone for receive, or '-' to disable # 12) Guard tone for transmit, or '-' to disable # 13) Bandwidth in kHz: 12.5, 20, 25 # Analog Name Receive Transmit Power Scan TOT RO Admit Squelch RxTone TxTone Width 125 V-DK0TEN 145.750 -0.6 High 2 - - - 1 - - 25 133 V-DB0WV-E 145.625 -0.6 High 6 - - - 1 - - 25 142 70cm_FM_Call 433.500 +0 High 7 - - - 1 - - 25 143 2M_FM_Call 145.500 +0 High 7 - - - 1 - - 25 144 S21_FM 145.525 +0 High 7 - - - 1 - - 25 145 S22_FM 145.550 +0 High 7 - - - 1 - - 25 146 S23_FM 145.575 +0 High 7 - - - 1 - - 25 147 U-DB0LC-E 439.375 -7.6 High 6 - - - 1 - 123.0 25 148 U-OE9XFV 438.525 -7.6 High 16 - - - 1 - 67.0 25 149 U-OE9XVJ 438.875 -7.6 High 16 - - - 1 - - 25 150 U-HB9W 439.150 -7.6 High 16 - - - 1 - 88.5 25 151 U-HB9UF 438.750 -7.6 High 16 - - - 1 - 71.9 25 # Table of channel zones. # 1) Zone number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of channels: numbers and ranges (N-M) separated by comma # Zone Name Channels 1 BW-BOB 3-8 2 BW-FRE1 15-16,23-24,33-34,37-38,43-44,47-48,51-54 3 BW-FRE2 9-14,17-18,55-56,65-70 4 BW-KAR 1-2,19-22,25-28,77-78,81-84 5 70cm_FM_R1 147-148,151 6 BW-STU1 85-92,95-96,99-104 7 BW-STU2 45-46,49-50,57-64,71-72,79-80 8 BW-FRE3 73-76,127-128 9 BW-TUB1 93-94,97-98,113-124 10 BW-STU3 29-32,35-36,39-42,109-112 11 BW-TUB2 105-108 14 2m_FM_Rptrs 125,133 15 EXAMPLE-ZONE 175 30 Simplex_FM 142-146 32 Echolink 125,133,149-150 # Table of scan lists. # 1) Scan list number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) Priority channel 1 (50% of scans): -, Sel or index # 4) Priority channel 2 (25% of scans): -, Sel or index # 5) Designated transmit channel: Last, Sel or index # 6) List of channels: numbers and ranges (N-M) separated by comma # Scanlist Name PCh1 PCh2 TxCh Channels 1 DMR_Scan_BOB - - Sel 3-8 2 2m_FM_Rptrs - - Sel 125,133 3 DMR_Scan_FRE1 - - Sel 15-16,23-24,33-34,37-38,43-44,47-48,51-54 4 DMR_Scan_FRE2 - - Sel 9-14,17-18 5 EXAMPLE-SCAN - - Sel 175 6 Echolink - - Sel 133,147 7 DMR_SCAN_FRE3 - - Sel 73-76,127-128 8 DMR_Scan_KAR - - Sel 1-2,19-22,25-28,77-78,81-84 9 DMR_Scan_STU1 - - Sel 85-92,95-96,99-104 10 DMR_Scan_STU2 - - Sel 45-46,49-50,57-64,71-72,79-80 11 DMR_Scan_TUB1 - - Sel 93-94,97-98,113-124 12 DMR_SCAN_TUB2 - - Sel 105-108 13 DMR_SCAN_STU3 - - Sel 29-32,35-36,39-42,109-112 16 70cm_FM_Rptrs - - Sel 147-148,151 # Table of contacts. # 1) Contact number: 1-256 # 2) Name: up to 16 characters, use '_' instead of space # 3) Call type: Group, Private, All # 4) Call ID: 1...16777215 # 5) Call receive tone: -, + # Contact Name Type ID RxTone 1 D+WW/BMLocal Group 1 + 2 D+EU/BMClust Group 2 + 3 BM/D+Local Group 9 + 4 BM_SOTA Group 973 + 5 D+/BM_Germany Group 262 + 6 Parrot_TG Group 31000 - 7 D+_D.A.CH Group 20 + 8 BM_Reg. Group 8 + 9 D+_DL_WW Group 110 + 10 D+_DL_WW(Res.) Group 120 + 11 BM_WW Group 91 + 12 BM_EUR Group 92 + 13 BM_German_Lang Group 910 + 14 BM_SA/MV Group 2620 + 15 BM_B/BB Group 2621 + 16 BM_HH/SH Group 2622 + 17 BM_NI/BR Group 2623 + 18 BM_NRW Group 2624 + 19 BM_SL/RP Group 2625 + 20 BM_HE Group 2626 + 21 BM_BW Group 2627 + 22 BM_Bavaria Group 2628 + 23 BM_S/TH Group 2629 + 24 DH6LU_-_Uwe Private 2622507 - 25 BM_D.A.CH Group 920 + 26 BM_Austria Group 232 + 27 DD5LP_-_Ed Private 2638415 - 28 BMRef4000_Disc Group 4000 + 29 BMRef4001_DL Group 4001 + 30 BMRef4002_Hambg Group 4002 + 31 BMRef4003_Weser Group 30 + 32 BMRef4004_Hessen Group 4004 + 33 BMRef4005_Rhein Group 4005 + 34 BMRef4006_Ruhr Group 4006 + 35 BMRef4007_NRW Group 4007 + 36 BMRef4008_Wuert. Group 4008 + 37 BMRef4009_Baden Group 4009 + 38 BMRef4010_DLChat Group 4010 + 39 BMRef4011_Heide Group 4011 + 40 BMRef4012_D-Star Group 4012 + 41 BMRef4013_RLP Group 4013 + 42 BMRef4014_Test Group 4014 + 43 BMRef4015_Bayern Group 4015 + 44 BMRef4016_Berlin Group 4016 + 45 BMRef4017NiedOst Group 4017 + 46 BMRef4018NHessen Group 4018 + 47 BMRef4019gerTst Group 4019 + 48 BMRef4020_NiedMi Group 4020 + 49 BMRef4021May-Kob Group 4021 + 50 BMRef4022WhiteSt Group 4022 + 51 BMRef-4023RhNek Group 4023 + 52 BMRef4025BayOst Group 4025 + 53 BMRef4026Franken Group 4026 + 54 BMRef4027Inntal Group 4027 + 55 BMRef4028Thyring Group 4028 + 56 BMRef4029SaxAnh Group 4029 + 57 BMRef4030Harz Group 4030 + 58 BMRef4031NieSued Group 4031 + 59 BMRef4033Gestlnd Group 4033 + 60 BMRef4034Workshp Group 4034 + 61 BMRef4035DV4Mini Group 4035 + 62 BMRef4040OHessen Group 4040 + 63 BMRef4041Me-Vorp Group 4041 + 64 BMRef4044Brandbg Group 4044 + 65 BMRef4045RhWest Group 4045 + 66 BMRef4050OLippe Group 4050 + 67 BMRef5000Status Group 5000 + 68 DG1MBH_Robert Private 2638120 - 69 BM-YSF262 Group 26208 - 70 BM/D+_France Group 208 + 71 BM/D+_Italy Group 222 + 72 BM/D+Luxemburg Group 270 + 73 BM/D+_Sweden Group 240 + 74 BM/D+Switzerland Group 228 + 75 BM/D+_Spain Group 214 + 76 BM/D+TAC310USA Group 310 + 77 BM_BAYNET Group 31075 + 78 DK5WA_-_Klaus Private 2634973 - 79 DH2VH_-_Volker Private 2624888 - 80 DO3WKA_-_Werner Private 2627184 - 81 DL2HG_-_Harald Private 2622507 - 82 DM3KF_-_Horst Private 2620131 - 83 G3CWI-Richard/GW Private 2344756 - 84 KJ6VU_-_George Private 1106504 - 85 KF7IJZ_-_Jeremy Private 3139573 - 86 DL4ASJ_-_Gerhard Private 2629205 - 87 DG9DAB_Klaus Private 2634082 - 88 DD9AO_Hans_Juerg Private 2623570 - 89 DD1JD_Dirk Private 2634455 - 90 DK3KC_Raul Private 2628575 - 91 DO6ED_Dieter Private 2624256 - 92 DO1YKH_KarlHeinz Private 2624690 - 93 DL5OBG_Lutz Private 2623117 - 94 VK2HRX_Compton Private 5052052 - 95 DD8SO_Volker Private 2634922 - 96 DO1SHM_Hartmut Private 2634909 - 97 G4APO_Rowland Private 2345085 - 98 DMR_Simplex Group 99 - 99 DK8AW_Dirk Private 2623318 - 100 DL2KCM_Steffan Private 2634153 - 101 DH1GHL_Horst Private 2627087 - 102 DO2STA_Stefan Private 2626275 - 103 DL3CT_Alper Private 2638413 - 104 DM6ME_Manfred Private 2620072 - 105 Parrot_Priv Private 9990 - # Table of group lists. # 1) Group list number: 1-64 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of contacts: numbers and ranges (N-M) separated by comma # Grouplist Name Contacts 1 DMR+_TS1_WW 1-2,5-7,9-10,70-76 2 DMR+_TS2_Local 3 3 BM_TS1_WW 4-5,11-12,26,40-41,69-75,77 4 BM_TS2_Local 3,13-23,25,43 5 BM_Reflectors_1 29-43 6 BM_Reflectors_2 44-58 7 BMReflectors_3 59-67 11 ExamplTG262only 5 # Table of text messages. # 1) Message number: 1-32 # 2) Text: up to 144 characters # Message Text 1 DD5LP # Unique DMR ID and name of this radio. ID: 2639999 Name: CALLSIGN # Text displayed when the radio powers up. Intro Line 1: Baofeng RD-5R Intro Line 2: BW CODEPLUGv3 dmrconfig-master/examples/rd5r-bayern-codeplug-v3.conf000066400000000000000000000634501354060760700233040ustar00rootroot00000000000000# # Configuration generated 2018/11/21 by dmrconfig, version 0.9.193 # Radio: Baofeng RD-5R Last Programmed Date: 2018-05-20 16:52 # Table of digital channels. # 1) Channel number: 1-1024 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Low # 6) Scan list: - or index in Scanlist table # 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555 # 8) Receive only: -, + # 9) Admit criteria: -, Free, Color # 10) Color code: 0, 1, 2, 3... 15 # 11) Time slot: 1 or 2 # 12) Receive group list: - or index in Grouplist table # 13) Contact for transmit: - or index in Contacts table # Digital Name Receive Transmit Power Scan TOT RO Admit Color Slot RxGL TxContact 1 DB0TTB-TS1 439.300 -7.6 High 1 - - - 1 1 1 5 # D+/BM Germany 2 DB0TTB-TS2 439.300 -7.6 High 1 - - - 1 2 2 3 # BM/D+Local 3 DO0JG-BM1 438.375 -7.6 High 1 - - - 1 1 3 5 # D+/BM Germany 4 DO0JG-BM2 438.375 -7.6 High 1 - - - 1 2 4 3 # BM/D+Local 5 DB0FUE-BM1 439.850 -9.4 High 9 - - - 1 1 3 5 # D+/BM Germany 6 DB0FUE-BM2 439.850 -9.4 High 9 - - - 1 2 4 3 # BM/D+Local 7 DM0FFL-BM1 439.875 -9.4 High 1 - - - 1 1 3 5 # D+/BM Germany 8 DM0FFL-BM2 439.875 -9.4 High 1 - - - 1 2 4 3 # BM/D+Local 9 DB0IN-TS1 438.9375 -7.6 High 1 - - - 1 1 1 5 # D+/BM Germany 10 DB0IN-TS2 438.9375 -7.6 High 1 - - - 1 2 2 3 # BM/D+Local 11 DB0OAL-TS1 438.9375 -7.6 High 13 - - - 1 1 1 5 # D+/BM Germany 12 DB0OAL-TS2 438.9375 -7.6 High 13 - - - 1 2 2 3 # BM/D+Local 13 DB0HLB-TS1 439.975 -9.4 High 1 - - - 1 1 1 5 # D+/BM Germany 14 DB0HLB-TS2 439.975 -9.4 High 1 - - - 1 2 2 3 # BM/D+Local 15 DB0OCH-BM1 438.2625 -7.6 High 1 - - - 1 1 3 5 # D+/BM Germany 16 DB0OCH-BM2 438.2625 -7.6 High 1 - - - 1 2 4 3 # BM/D+Local 17 DB0LC-TS1 439.375 -7.6 High 13 - - - 1 1 1 5 # D+/BM Germany 18 DB0LC-TS2 439.375 -7.6 High 13 - - - 1 2 2 3 # BM/D+Local 19 DB0AAT-TS1 439.550 -7.6 High 3 - - - 1 1 1 5 # D+/BM Germany 20 DB0AAT-TS2 439.550 -7.6 High 3 - - - 1 2 2 3 # BM/D+Local 21 DM0GER-TS1-V 145.5875 -0.6 High 1 - - - 1 1 1 5 # D+/BM Germany 22 DM0GER-TS2-V 145.5875 -0.6 High 1 - - - 1 2 2 3 # BM/D+Local 23 EXAMP-TS1-OAL 439.9125 -9.4 High 5 - - - 1 1 12 5 # D+/BM Germany 25 DB0MI-TS1 439.875 -9.4 High 15 - - - 1 1 1 5 # D+/BM Germany 26 DB0MI-TS2 439.875 -9.4 High 15 - - - 1 2 2 3 # BM/D+Local 27 DM0AX-TS1 438.3875 -7.6 High 12 - - - 1 1 1 5 # D+/BM Germany 28 DM0AX-TS2 438.3875 -7.6 High 12 - - - 1 2 2 3 # BM/D+Local 29 DB0ARB-TS1 439.225 -7.6 High 10 - - - 1 1 1 5 # D+/BM Germany 30 DB0ARB-TS2 439.225 -7.6 High 10 - - - 1 2 2 3 # BM/D+Local 31 DB0DMR-TS1 439.475 -7.6 High 9 - - - 1 1 1 5 # D+/BM Germany 32 DB0DMR-TS2 439.475 -7.6 High 9 - - - 1 2 2 3 # BM/D+Local 35 DB0EEE-TS1 438.550 -7.6 High 13 - - - 1 1 1 5 # D+/BM Germany 36 DB0EEE-TS2 438.550 -7.6 High 13 - - - 1 2 2 3 # BM/D+Local 37 DB0TMH-BM1 438.725 -7.6 High 12 - - - 1 1 3 5 # D+/BM Germany 38 DB0TMH-BM2 438.725 -7.6 High 12 - - - 1 2 4 3 # BM/D+Local 39 DB0WBZ-TS1 439.5125 -7.6 High 9 - - - 1 1 1 5 # D+/BM Germany 40 DB0WBZ-TS2 439.5125 -7.6 High 9 - - - 1 2 2 3 # BM/D+Local 41 DM0QN-HY1 438.350 -7.6 High 8 - - - 1 1 1 5 # D+/BM Germany 42 DM0QN-HY2 438.350 -7.6 High 8 - - - 1 2 2 3 # BM/D+Local 43 DB0WBZ-BM1 438.5125 -7.6 High 9 - - - 1 1 3 5 # D+/BM Germany 44 DB0WBZ-BM2 438.5125 -7.6 High 9 - - - 1 2 4 3 # BM/D+Local 45 DB0THM-TS1 438.5875 -7.6 High 12 - - - 1 1 1 5 # D+/BM Germany 46 DB0THM-TS2 438.5875 -7.6 High 12 - - - 1 2 4 3 # BM/D+Local 49 DM0GER-TS1-U 439.5375 -7.6 High 1 - - - 1 1 1 5 # D+/BM Germany 50 DM0GER-TS2-U 439.5375 -7.6 High 1 - - - 1 2 2 3 # BM/D+Local 51 DB0ADB-BM1 439.300 -7.6 High 11 - - - 1 1 3 5 # D+/BM Germany 52 DB0ADB-BM2 439.300 -7.6 High 11 - - - 1 2 4 3 # BM/D+Local 53 DM0FOX-BM1 439.8625 -9.4 High 12 - - - 1 1 3 5 # D+/BM Germany 54 DM0FOX-BM2 439.8625 -9.4 High 12 - - - 1 2 4 3 # BM/D+Local 55 DB0MSK-BM1 439.050 -7.6 High 15 - - - 1 1 3 5 # D+/BM Germany 56 DB0MSK-BM2 439.050 -7.6 High 15 - - - 1 2 4 3 # BM/D+Local 57 DB0WZ-TS1 439.475 -7.6 High 15 - - - 1 1 1 5 # D+/BM Germany 58 DB0WZ-TS2 439.475 -7.6 High 15 - - - 1 2 2 3 # BM/D+Local 59 DB0ZKA-TS1 438.400 -7.6 High 13 - - - 1 1 1 5 # D+/BM Germany 60 DB0ZKA-TS2 438.400 -7.6 High 13 - - - 1 2 2 3 # BM/D+Local 61 DB0TVM-TS1 439.800 -9.4 High 8 - - - 1 1 1 5 # D+/BM Germany 62 DB0TVM-TS2 439.800 -9.4 High 8 - - - 1 2 2 3 # BM/D+Local 63 DB0MIC-TS1 439.525 -7.6 High 8 - - - 1 1 1 5 # D+/BM Germany 64 DB0MIC-TS2 439.525 -7.6 High 8 - - - 1 2 2 3 # BM/D+Local 65 DB0NJ-BM1 439.4375 -7.6 High 8 - - - 1 1 3 5 # D+/BM Germany 66 DB0NJ-BM2 439.4375 -7.6 High 8 - - - 1 2 4 3 # BM/D+Local 67 DB0MIO-BM1 438.700 -7.6 High 11 - - - 1 1 3 5 # D+/BM Germany 68 DB0MIO-BM2 438.700 -7.6 High 11 - - - 1 2 4 3 # BM/D+Local 69 DB0PME-BM1 439.825 -9.4 High 1 - - - 1 1 3 5 # D+/BM Germany 70 DB0PME-BM2 439.825 -9.4 High 1 - - - 1 2 4 3 # BM/D+Local 71 DB0HKN-TS1 438.300 -7.6 High 1 - - - 1 1 1 5 # D+/BM Germany 72 DB0HKN-TS2 438.300 -7.6 High 1 - - - 1 2 2 3 # BM/D+Local 73 DB0FSG-BM1 439.9375 -9.4 High 3 - - - 1 1 3 5 # D+/BM Germany 74 DB0FSG-BM2 439.9375 -9.4 High 3 - - - 1 2 4 3 # BM/D+Local 75 DB0UFO-BM1 438.3125 -7.6 High 1 - - - 1 1 3 5 # D+/BM Germany 76 DB0UFO-BM2 438.3125 -7.6 High 1 - - - 1 2 4 3 # BM/D+Local 77 DB0ESS-BM1 438.6125 -7.6 High 13 - - - 1 1 3 5 # D+/BM Germany 78 DB0ESS-BM2 438.6125 -7.6 High 13 - - - 1 2 4 3 # BM/D+Local 79 DM0ESS-TS1 438.5625 -7.6 High 13 - - - 1 1 1 5 # D+/BM Germany 80 DM0ESS-TS2 438.5625 -7.6 High 13 - - - 1 2 2 3 # BM/D+Local 81 DM0RDH-BM1 439.525 -7.6 High 10 - - - 1 1 3 5 # D+/BM Germany 82 DM0RDH-BM2 439.525 -7.6 High 10 - - - 1 2 4 3 # BM/D+Local 83 DB0RDH-BM1 439.925 -9.4 High 10 - - - 1 1 3 5 # D+/BM Germany 84 DB0RDH-BM2 439.925 -9.4 High 10 - - - 1 2 4 3 # BM/D+Local 85 DB0OAL-BM1 439.9125 -9.4 High 13 - - - 1 1 3 5 # D+/BM Germany 86 DB0OAL-BM2 439.9125 -9.4 High 13 - - - 1 2 4 3 # BM/D+Local 87 DK5RTA-BM1 438.575 -7.6 High 3 - - - 1 1 3 5 # D+/BM Germany 88 DK5RTA-BM2 438.575 -7.6 High 3 - - - 1 2 4 3 # BM/D+Local 89 DB0RTA-BM1 438.3625 -7.6 High 3 - - - 1 1 3 5 # D+/BM Germany 90 DB0RTA-BM2 438.3625 -7.6 High 3 - - - 1 2 4 3 # BM/D+Local 91 DB0PUC-BM1 439.950 -9.4 High 1 - - - 1 1 3 5 # D+/BM Germany 92 DB0PUC-BM2 439.950 -9.4 High 1 - - - 1 2 4 3 # BM/D+Local 93 DB0RTA-TS1 439.1625 -7.6 High 3 - - - 1 1 1 5 # D+/BM Germany 94 DB0RTA-TS2 439.1625 -7.6 High 3 - - - 1 2 2 3 # BM/D+Local 95 DB0TS-BM1 439.1625 -7.6 High 12 - - - 1 1 3 5 # D+/BM Germany 96 DB0TS-BM2 439.1625 -7.6 High 12 - - - 1 2 2 3 # BM/D+Local 97 DM0ESS-TS1 439.3125 -7.6 High 13 - - - 1 1 1 5 # D+/BM Germany 98 DM0ESS-TS2 439.3125 -7.6 High 13 - - - 1 2 2 3 # BM/D+Local 99 DB0CJ-BM1 439.4375 -7.6 High 12 - - - 1 1 3 5 # D+/BM Germany 100 DB0CJ-BM2 439.4375 -7.6 High 12 - - - 1 2 4 3 # BM/D+Local 101 DB0BAY-BM1 438.250 -7.6 High 3 - - - 1 1 3 5 # D+/BM Germany 102 DB0BAY-BM2 438.250 -7.6 High 3 - - - 1 2 4 3 # BM/D+Local 103 DB0POB-BM1 439.075 -7.6 High 3 - - - 1 1 3 5 # D+/BM Germany 104 DB0POB-BM2 439.075 -7.6 High 3 - - - 1 2 4 3 # BM/D+Local 105 DB0HOB-TS1 439.900 -9.4 High 10 - - - 1 1 1 5 # D+/BM Germany 106 DB0HOB-TS2 439.900 -9.4 High 10 - - - 1 2 2 3 # BM/D+Local 107 DB0FHC-TS1 439.450 -7.6 High 11 - - - 1 1 1 5 # D+/BM Germany 108 DB0FHC-TS2 439.450 -7.6 High 11 - - - 1 2 2 3 # BM/D+Local 111 DK0WUE-TS1 438.425 -7.6 High 15 - - - 1 1 1 5 # D+/BM Germany 112 DK0WUE-TS2 438.425 -7.6 High 15 - - - 1 2 2 3 # BM/D+Local 113 DM0RDT-BM1 439.825 -9.4 High 4 - - - 1 1 3 5 # D+/BM Germany 114 DM0RDT-BM2 439.825 -9.4 High 4 - - - 1 2 4 3 # BM/D+Local 115 DB0DON-BM1 438.575 -7.6 High 14 - - - 1 1 3 5 # D+/BM Germany 116 DB0DON-BM2 438.575 -7.6 High 14 - - - 1 2 4 3 # BM/D+Local 117 DB0RP-BM1 439.100 -7.6 High 12 - - - 1 1 3 5 # D+/BM Germany 118 DB0RP-BM2 439.100 -7.6 High 12 - - - 1 2 4 3 # BM/D+Local 121 DM0ET-TS1 439.1125 -7.6 High 11 - - - 1 1 1 5 # D+/BM Germany 122 DM0ET-TS2 439.1125 -7.6 High 11 - - - 1 2 2 3 # BM/D+Local 123 DK6PX-TS1 431.5125 +1.6 High 3 - - - 1 1 1 5 # D+/BM Germany 124 DK6PX-TS2 431.5125 +1.6 High 3 - - - 1 2 2 3 # BM/D+Local 140 2M_DV_call 145.375 +0 High - - - - 0 1 - 98 # DMR SIMPLEX 141 70cm_DV_Call 433.450 +0 High - - - - 0 1 - 98 # DMR SIMPLEX # Table of analog channels. # 1) Channel number: 1-1024 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Low # 6) Scan list: - or index # 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555 # 8) Receive only: -, + # 9) Admit criteria: -, Free, Tone # 10) Squelch level: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 # 11) Guard tone for receive, or '-' to disable # 12) Guard tone for transmit, or '-' to disable # 13) Bandwidth in kHz: 12.5, 20, 25 # Analog Name Receive Transmit Power Scan TOT RO Admit Squelch RxTone TxTone Width 125 V-DB0UA-E 145.6375 -0.6 High 6 - - - 1 - - 25 126 V-DB0ZM 145.750 -0.6 High 2 - - - 1 - 141.3 25 127 V-DB0TOL 145.7125 -0.6 High 2 - - - 1 - - 25 128 V-DM0GAP 145.6125 -0.5 High 2 - - - 1 - - 25 129 V-DB0ZU 145.725 -0.6 High 2 - - - 1 - - 25 130 V-DB0XF 145.600 -0.6 High 2 - - - 1 - - 25 131 V-DB0TF 145.675 -0.6 High 2 - - - 1 - - 25 132 V-DM0ULR 145.7875 -0.6 High 2 - - - 1 - 141.3 25 133 V-DB0WV-E 145.625 -0.6 High 6 - - - 1 - - 25 134 V-DB0FHA 145.6625 -0.5 High 2 - - - 1 - - 25 135 V-DB0XG-E 145.775 -0.6 High 6 - - - 1 - - 25 136 V-DB0WN 145.650 -0.6 High 2 - - - 1 - 123.0 25 137 V-DB0FFL-E 145.6125 -0.6 High 6 - - - 1 - - 25 138 V-DB0AND-E 145.7875 -0.6 High 6 - - - 1 - - 25 139 V-DB0LBG-E 145.5875 -0.6 High 6 - - - 1 - - 25 142 70cm_FM_Call 433.500 +0 High 7 - - - 1 - - 25 143 2M_FM_Call 145.500 +0 High 7 - - - 1 - - 25 144 S21_FM 145.525 +0 High 7 - - - 1 - - 25 145 S22_FM 145.550 +0 High 7 - - - 1 - - 25 146 S23_FM 145.575 +0 High 7 - - - 1 - - 25 147 U-DB0MIR 439.300 -7.6 High 16 - - - 1 - - 25 148 U-DB0DM 439.400 -7.6 High 16 - - - 1 - - 25 149 U-DB0FOX-E 439.3625 -7.6 High 6 - - - 1 - - 25 150 U-DB0RTA-E 438.3625 -7.6 High 6 - - - 1 - 123.0 25 151 U-DM0GER 439.5375 -7.6 High 16 - - - 1 - - 25 152 U-DB0UA 438.675 -7.6 High 16 - - - 1 - 88.5 25 153 U-DB0FDB 439.125 -7.6 High 16 - - - 1 - - 25 154 U-DB0MIC 439.525 -7.6 High 16 - - - 1 - - 25 155 U-DB0EEE 439.250 -7.6 High 16 - - - 1 - 136.5 25 156 U-DB0ROL 439.2375 -7.6 High 16 - - - 1 - 141.3 25 157 U-DB0ULR 439.325 -7.6 High 16 - - - 1 - 123.0 25 158 U-DB0VM 438.975 -7.6 High 16 - - - 1 - - 25 159 U-DB0PV 438.525 -7.6 High 16 - - - 1 - - 25 160 U-DB0ZUS-E 438.625 -7.6 High 6 - - - 1 - - 25 161 U-DB0ISW 438.650 -7.6 High 16 - - - 1 - 141.3 25 162 U-DB0ABX 439.1375 -7.6 High 16 - - - 1 - - 25 163 U-DB0OAL 438.9375 -7.6 High 16 - - - 1 - 67.0 25 164 U-DB0NJ 438.775 -7.6 High 16 - - - 1 - - 25 165 U-DB0SVX-E 438.7625 -7.6 High 6 - - - 1 - - 25 166 U-DB0TOL 438.725 -7.6 High 16 - - - 1 - - 25 167 U-DM0QN 438.350 -7.6 High 17 - - - 1 - 123.0 25 168 U-DM0GZ-E 439.225 -7.6 High 6 - - - 1 - - 25 169 U-DB0ZU 438.850 -7.6 High 17 - - - 1 - 123.0 25 170 U-DB0CP-E 439.025 -7.6 High 6 - - - 1 - - 25 171 U-DM0ESS 439.3125 -7.6 High 17 - - - 1 - 123.0 25 172 U-DB0RX 439.4125 -8.9 High 17 - - - 1 - 100.0 25 173 U-DB0PM-E 439.075 -7.6 High 6 - - - 1 - - 25 174 U-DB0ZD-E 439.000 -7.6 High 6 - - - 1 - - 25 # Table of channel zones. # 1) Zone number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of channels: numbers and ranges (N-M) separated by comma # Zone Name Channels 1 BY-OB-1 1-4,21-22,49-50,69-72,75-76,91-92 2 BY-OB-2 19-20,73-74,87-90,93-94,123-124 3 BY-NB 7-8,29-30,81-84,105-106 4 BY-Munich 41-42,61-66 5 70cm_FM_R1 147-148,151-159,161-164,166 6 BY-OPfalz 27-28,37-38,53-54,95-96,99-100,117-118 7 BY-Sch-1 11-12,17-18,35-36,59-60,77-80,85-86,97-98 8 70cm_FM_R2 167,169,171-172 9 BY-OB-3 9-10,113-114 10 BY-Sch-2 115-116 11 BY-OF 51-52,67-68,107-108,121-122 12 BY-MF 5-6,13-14,31-32,37-40,43-44 13 BY-UF 15-16,25-26,55-58,111-112 14 2m_FM_Rptrs 125-139 15 EXAMPLE-ZONE 23 30 Simplex_FM 142-146 32 Echolink 125,133,135,137-139,149-150,160,165,168,170,173-174 # Table of scan lists. # 1) Scan list number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) Priority channel 1 (50% of scans): -, Sel or index # 4) Priority channel 2 (25% of scans): -, Sel or index # 5) Designated transmit channel: Last, Sel or index # 6) List of channels: numbers and ranges (N-M) separated by comma # Scanlist Name PCh1 PCh2 TxCh Channels 1 DMR_Scan_OB1 - - Sel 1-4,21-22,49-50,69-72,75-76,91-92 2 2m_FM_Rptrs - - Sel 126-132,134,136 3 DMR_Scan_OB2 19 20 Sel 19-20,73-74,87-90,93-94,101-104,123-124 4 DMR_Scan_OB3 - - Sel 9-10,113-114 5 EXAMPLE-SCAN - - Sel 23 6 Echolink - - Sel 125,133,135-136,138-139,149-150,160,165,168,170,173-174 7 Simplex_FM - - Sel 142-146 8 DMR_Scan_Muc - - Sel 41-42,61-66 9 DMR_Scan_MFk - - Sel 5-6,31-32,39-40,43-44 10 DMR_Scan_NB - - Sel 29-30,81-84,105-106 11 DMR_Scan_OFk - - Sel 51-52,67-68,107-108,121-122 12 DMR_Scan_OPf - - Sel 27-28,37-38,45-46,53-54,95-96,99-100,117-118 13 DMR_Scan_Sch_1 - - Sel 11-12,17-18,35-36,59-60,77-80,85-86 14 DMR_Scan_Sch_2 - - Sel 115-116 15 DMR_Scan_UFk - - Sel 15-16,25-26,55-58,111-112 16 70cm_FM_R1 - - Sel 147-148,151-159,161-164,166 17 70cm_FM_R2 - - Sel 167,169,171-172 # Table of contacts. # 1) Contact number: 1-256 # 2) Name: up to 16 characters, use '_' instead of space # 3) Call type: Group, Private, All # 4) Call ID: 1...16777215 # 5) Call receive tone: -, + # Contact Name Type ID RxTone 1 D+WW/BMLocal Group 1 + 2 D+EU/BMClust Group 2 + 3 BM/D+Local Group 9 + 4 BM_SOTA Group 973 + 5 D+/BM_Germany Group 262 + 6 Parrot9990 Private 9990 - 7 D+_D.A.CH Group 20 + 8 BM_Reg. Group 8 + 9 D+_DL_WW Group 110 + 10 D+_DL_WW(Res.) Group 120 + 11 BM_WW Group 91 + 12 BM_EUR Group 92 + 13 BM_German_Lang Group 910 + 14 BM_SA/MV Group 2620 + 15 BM_B/BB Group 2621 + 16 BM_HH/SH Group 2622 + 17 BM_NI/BR Group 2623 + 18 BM_NRW Group 2624 + 19 BM_SL/RP Group 2625 + 20 BM_HE Group 2626 + 21 BM_BW Group 2627 + 22 BM_Bavaria Group 2628 + 23 BM_S/TH Group 2629 + 24 DH6LU_-_Uwe Private 2622507 - 25 BM_D.A.CH Group 920 + 26 BM_Austria Group 232 + 27 DD5LP_-_Ed Private 2638415 - 28 BMRef4000_Disc Group 4000 + 29 BMRef4001_DL Group 4001 + 30 BMRef4002_Hambg Group 4002 + 31 BMRef4003_Weser Group 30 + 32 BMRef4004_Hessen Group 4004 + 33 BMRef4005_Rhein Group 4005 + 34 BMRef4006_Ruhr Group 4006 + 35 BMRef4007_NRW Group 4007 + 36 BMRef4008_Wuert. Group 4008 + 37 BMRef4009_Baden Group 4009 + 38 BMRef4010_DLChat Group 4010 + 39 BMRef4011_Heide Group 4011 + 40 BMRef4012_D-Star Group 4012 + 41 BMRef4013_RLP Group 4013 + 42 BMRef4014_Test Group 4014 + 43 BMRef4015_Bayern Group 4015 + 44 BMRef4016_Berlin Group 4016 + 45 BMRef4017NiedOst Group 4017 + 46 BMRef4018NHessen Group 4018 + 47 BMRef4019gerTst Group 4019 + 48 BMRef4020_NiedMi Group 4020 + 49 BMRef4021May-Kob Group 4021 + 50 BMRef4022WhiteSt Group 4022 + 51 BMRef-4023RhNek Group 4023 + 52 BMRef4025BayOst Group 4025 + 53 BMRef4026Franken Group 4026 + 54 BMRef4027Inntal Group 4027 + 55 BMRef4028Thyring Group 4028 + 56 BMRef4029SaxAnh Group 4029 + 57 BMRef4030Harz Group 4030 + 58 BMRef4031NieSued Group 4031 + 59 BMRef4033Gestlnd Group 4033 + 60 BMRef4034Workshp Group 4034 + 61 BMRef4035DV4Mini Group 4035 + 62 BMRef4040OHessen Group 4040 + 63 BMRef4041Me-Vorp Group 4041 + 64 BMRef4044Brandbg Group 4044 + 65 BMRef4045RhWest Group 4045 + 66 BMRef4050OLippe Group 4050 + 67 BMRef5000Status Group 5000 + 68 DG1MBH_Robert Private 2638120 - 69 BM-YSF262 Group 26208 - 70 BM/D+_France Group 208 + 71 BM/D+_Italy Group 222 + 72 BM/D+Luxemburg Group 270 + 73 BM/D+_Sweden Group 240 + 74 BM/D+Switzerland Group 228 + 75 BM/D+_Spain Group 214 + 76 BM/D+TAC310USA Group 310 + 77 BM_BAYNET Group 31075 + 78 DK5WA_-_Klaus Private 2634973 - 79 DH2VH_-_Volker Private 2624888 - 80 DO3WKA_-_Werner Private 2627184 - 81 DL2HG_-_Harald Private 2622507 - 82 DM3KF_-_Horst Private 2620131 - 83 G3CWI-Richard/GW Private 2344756 - 84 KJ6VU_-_George Private 1106504 - 85 KF7IJZ_-_Jeremy Private 3139573 - 86 DL4ASJ_-_Gerhard Private 2629205 - 87 DG9DAB_Klaus Private 2634082 - 88 DD9AO_Hans_Juerg Private 2623570 - 89 DD1JD_Dirk Private 2634455 - 90 DK3KC_Raul Private 2628575 - 91 DO6ED_Dieter Private 2624256 - 92 DO1YKH_KarlHeinz Private 2624690 - 93 DL5OBG_Lutz Private 2623117 - 94 VK2HRX_Compton Private 5052052 - 95 DD8SO_Volker Private 2634922 - 96 DO1SHM_Hartmut Private 2634909 - 97 G4APO_Rowland Private 2345085 - 98 DMR_SIMPLEX Group 99 - 99 DO2STA_Stefan Private 2626275 - 100 DH1GHL_Horst Private 2627087 - 101 DL2KCM_Stefan Private 2634153 - 102 DK8AW_Dirk Private 2623318 - 103 DM6ME_Manfred Private 2620072 - 104 DL3CT_Alper Private 2638413 - 105 Parrot_31000 Group 31000 - 106 Parrot310997 Private 310997 - # Table of group lists. # 1) Group list number: 1-64 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of contacts: numbers and ranges (N-M) separated by comma # Grouplist Name Contacts 1 DMR+_TS1_WW 1-2,5,7,9-10,70-76 2 DMR+_TS2_Local 3 3 BM_TS1_WW 4-5,11-12,26,40-41,69-75,77 4 BM_TS2_Local 3,13-23,25,43 5 BM_Reflectors_1 29-43 6 BM_Reflectors_2 44-58 7 BMReflectors_3 59-67 12 EXAMPTG262_only 5 # Table of text messages. # 1) Message number: 1-32 # 2) Text: up to 144 characters # Message Text 1 DD5LP # Unique DMR ID and name of this radio. ID: 2639999 Name: CALLSIGN # Text displayed when the radio powers up. Intro Line 1: Baofeng RD-5R Intro Line 2: BY CODEPLUGv3 dmrconfig-master/examples/rd5r-empty.conf000066400000000000000000000051601354060760700210260ustar00rootroot00000000000000# # Configuration generated 2018/11/21 by dmrconfig, version 0.9.193 # Radio: Baofeng RD-5R Last Programmed Date: 0000-00-00 00:00 # Table of analog channels. # 1) Channel number: 1-1024 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Low # 6) Scan list: - or index # 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555 # 8) Receive only: -, + # 9) Admit criteria: -, Free, Tone # 10) Squelch level: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 # 11) Guard tone for receive, or '-' to disable # 12) Guard tone for transmit, or '-' to disable # 13) Bandwidth in kHz: 12.5, 20, 25 # Analog Name Receive Transmit Power Scan TOT RO Admit Squelch RxTone TxTone Width 1 Channel1 140.000 +10 High - - - - 5 - - 25 2 Channel2 400.000 +0 High - - - - 5 - - 25 3 Channel3 400.000 +0 High - - - - 5 - - 12.5 # Table of channel zones. # 1) Zone number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of channels: numbers and ranges (N-M) separated by comma # Zone Name Channels 1 Zone1 1-3 2 Zone2 - 3 Zone3 - # Table of scan lists. # 1) Scan list number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) Priority channel 1 (50% of scans): -, Sel or index # 4) Priority channel 2 (25% of scans): -, Sel or index # 5) Designated transmit channel: Last, Sel or index # 6) List of channels: numbers and ranges (N-M) separated by comma # Scanlist Name PCh1 PCh2 TxCh Channels 1 ScanList1 - - Last 1-3 # Table of contacts. # 1) Contact number: 1-256 # 2) Name: up to 16 characters, use '_' instead of space # 3) Call type: Group, Private, All # 4) Call ID: 1...16777215 # 5) Call receive tone: -, + # Contact Name Type ID RxTone 1 Contact1 Group 1 - 2 Contact2 Private 2 - 3 Contact3 All 16777215 - # Table of group lists. # 1) Group list number: 1-64 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of contacts: numbers and ranges (N-M) separated by comma # Grouplist Name Contacts 1 GroupList1 1 # Table of text messages. # 1) Message number: 1-32 # 2) Text: up to 144 characters # Message Text 1 HELLO! # Unique DMR ID and name of this radio. ID: 1 Name: RD-5R # Text displayed when the radio powers up. Intro Line 1: - Intro Line 2: - dmrconfig-master/examples/rd5r-factory.conf000066400000000000000000000102541354060760700213370ustar00rootroot00000000000000# # Configuration generated 2018/11/21 by dmrconfig, version 0.9.193 # Radio: Baofeng RD-5R Last Programmed Date: 2018-04-23 15:10 # Table of digital channels. # 1) Channel number: 1-1024 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Low # 6) Scan list: - or index in Scanlist table # 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555 # 8) Receive only: -, + # 9) Admit criteria: -, Free, Color # 10) Color code: 0, 1, 2, 3... 15 # 11) Time slot: 1 or 2 # 12) Receive group list: - or index in Grouplist table # 13) Contact for transmit: - or index in Contacts table # Digital Name Receive Transmit Power Scan TOT RO Admit Color Slot RxGL TxContact 1 Channel1 440.425 +0 High - - - - 1 1 1 1 # Contact1 2 Channel2 440.425 +0 High - - - - 1 2 1 1 # Contact1 3 Channel3 150.125 +0 High - - - - 1 1 1 1 # Contact1 4 Channel4 150.125 +0 High - - - - 1 2 1 1 # Contact1 13 Channel13 442.575 +0 High - - - - 1 1 1 1 # Contact1 14 Channel14 443.575 +0 High - - - - 1 1 1 1 # Contact1 15 Channel15 445.575 +0 High - - - - 1 1 1 1 # Contact1 # Table of analog channels. # 1) Channel number: 1-1024 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Low # 6) Scan list: - or index # 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555 # 8) Receive only: -, + # 9) Admit criteria: -, Free, Tone # 10) Squelch level: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 # 11) Guard tone for receive, or '-' to disable # 12) Guard tone for transmit, or '-' to disable # 13) Bandwidth in kHz: 12.5, 20, 25 # Analog Name Receive Transmit Power Scan TOT RO Admit Squelch RxTone TxTone Width 5 Channel5 441.425 +0 High - - - - 3 - - 25 6 Channel6 151.125 +0 High - - - - 3 - - 25 7 Channel7 442.425 +0 High - - - - 3 67.0 67.0 25 8 Channel8 443.425 +0 High - - - - 3 254.1 254.1 25 9 Channel9 444.425 +0 High - - - - 3 D017N D017N 25 10 Channel10 445.425 +0 High - - - - 3 D754N D754N 25 11 Channel11 446.425 +0 High - - - - 3 D017I D017I 25 12 Channel12 447.425 +0 High - - - - 3 D754I D754I 25 16 Channel16 430.425 +0 High - - - - 3 - - 25 # Table of channel zones. # 1) Zone number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of channels: numbers and ranges (N-M) separated by comma # Zone Name Channels 1 Zone1 1-16 2 Zone2 1-12 # Table of contacts. # 1) Contact number: 1-256 # 2) Name: up to 16 characters, use '_' instead of space # 3) Call type: Group, Private, All # 4) Call ID: 1...16777215 # 5) Call receive tone: -, + # Contact Name Type ID RxTone 1 Contact1 Group 1 - 2 Contact2 Group 2 - 3 Contact3 Group 3 - 4 one Private 1 + 5 two Private 2 + # Table of group lists. # 1) Group list number: 1-64 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of contacts: numbers and ranges (N-M) separated by comma # Grouplist Name Contacts 1 GroupList1 1-3 2 GroupList2 1-2 # Table of text messages. # 1) Message number: 1-32 # 2) Text: up to 144 characters # Message Text 1 HELLO! # Unique DMR ID and name of this radio. ID: 1 Name: BF-5R # Text displayed when the radio powers up. Intro Line 1: WELCOME Intro Line 2: RD-5R dmrconfig-master/examples/rd5r-s-yorks-codeplug-v3.conf000066400000000000000000000230211354060760700234210ustar00rootroot00000000000000# # Configuration generated 2018/11/21 by dmrconfig, version 0.9.193 # Radio: Baofeng RD-5R Last Programmed Date: 2018-05-16 14:41 # Table of digital channels. # 1) Channel number: 1-1024 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Low # 6) Scan list: - or index in Scanlist table # 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555 # 8) Receive only: -, + # 9) Admit criteria: -, Free, Color # 10) Color code: 0, 1, 2, 3... 15 # 11) Time slot: 1 or 2 # 12) Receive group list: - or index in Grouplist table # 13) Contact for transmit: - or index in Contacts table # Digital Name Receive Transmit Power Scan TOT RO Admit Color Slot RxGL TxContact 1 GB7LE-TS1 439.6625 -9 High 1 - - - 2 1 1 89 # BM/D+ UK 2 GB7LE-TS2 439.6625 -9 High 1 - - - 2 2 2 3 # BM/D+Local 3 GB7SR-BM1 439.6375 -9 High 1 - - - 2 1 3 89 # BM/D+ UK 4 GB7SR-BM2 439.6375 -9 High 1 - - - 2 2 4 3 # BM/D+Local 5 2M_DV_Call 145.375 +0 High - - - - 0 1 3 68 # DV Simplex 6 GB7SR-SOTA 439.6375 -9 High 1 - - - 2 1 3 4 # BM SOTA 7 GB7WI-BM1 439.4125 -9 High 1 - - - 1 1 3 89 # BM/D+ UK 8 GB7WI-BM2 439.4125 -9 High 1 - - - 1 2 4 3 # BM/D+Local 9 GB7WI-SOTA 439.4125 -9 High 1 - - - 1 1 1 4 # BM SOTA 10 GB3IN-BM1 145.6375 -0.6 High 4 120 - - 1 1 3 89 # BM/D+ UK 11 GB3IN-BM2 145.6375 -0.6 High 4 120 - - 1 2 2 3 # BM/D+Local 12 GB7HR-TS1 439.450 -9 High 3 180 - - 3 1 1 89 # BM/D+ UK 13 GB7HR-TS2 439.450 -9 High 3 180 - - 3 1 2 3 # BM/D+Local 14 GB3IN-SOTA 145.6375 -0.6 High 4 180 - - 1 1 3 4 # BM SOTA 15 GB7YR-BM1 439.525 -9 High 1 - - - 2 1 3 89 # BM/D+ UK 16 GB7YR-BM2 439.525 -9 High 1 - - - 2 2 4 3 # BM/D+Local 30 EXAMPL-TS1-7SR 439.6375 -9 High 5 - - - 2 1 6 89 # BM/D+ UK 37 GB7YR-SOTA 439.525 -9 High 1 - - - 2 1 3 4 # BM SOTA 45 GB7HX-TS1 439.575 -9 High 1 - - - 1 1 1 89 # BM/D+ UK 46 GB7HX-TS2 439.575 -9 High 1 - - - 1 2 4 3 # BM/D+Local 49 GB7TD-TS1 439.1625 -9 High 1 - - - 1 1 1 89 # BM/D+ UK 50 GB7TD-TS2 439.1625 -9 High 1 - - - 1 2 2 3 # BM/D+Local 125 V-GB3YW 145.7875 -0.6 High 2 - - - 0 1 - - 141 70cm_DV_Call 433.450 +0 High - - - - 0 1 - 68 # DV Simplex # Table of analog channels. # 1) Channel number: 1-1024 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Low # 6) Scan list: - or index # 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555 # 8) Receive only: -, + # 9) Admit criteria: -, Free, Tone # 10) Squelch level: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 # 11) Guard tone for receive, or '-' to disable # 12) Guard tone for transmit, or '-' to disable # 13) Bandwidth in kHz: 12.5, 20, 25 # Analog Name Receive Transmit Power Scan TOT RO Admit Squelch RxTone TxTone Width 17 S20_FM 145.500 -0.5 High 7 - - - 5 - - 12.5 18 S19_FM 145.475 +0 High 7 - - - 5 - - 12.5 19 S18_FM 145.450 +0 High 7 - - - 5 - - 12.5 20 S17_FM 145.425 +0 High 7 - - - 5 - - 12.5 21 S16_FM 145.400 +0 High 7 - - - 5 - - 12.5 22 S15_FM 145.375 +0 High 7 - - - 5 - - 12.5 23 S14_FM 145.350 +0 High 7 - - - 5 - - 12.5 24 S13_FM 145.325 +0 High 7 - - - 5 - - 12.5 25 S12_FM 145.300 +0 High 7 - - - 5 - - 12.5 26 S11_FM 145.275 +0 High 7 - - - 5 - - 12.5 27 S10_FM 145.250 +0 High 7 - - - 5 - - 12.5 28 S9_FM 145.225 +0 High 7 - - - 5 - - 12.5 29 S8_FM 145.200 +0 High 7 - - - 5 - - 12.5 126 V-GB3NA 145.6125 -0.6 High 2 - - - 1 - 71.9 25 144 S21_FM 145.525 +0 High 7 - - - 1 - - 25 145 S22_FM 145.550 +0 High 7 - - - 1 - - 25 146 S23_FM 145.575 +0 High 7 - - - 1 - - 25 147 U-GB3DV 433.025 +1.6 High 16 - - - 1 - 71.9 25 148 U-GB3AB 433.175 +1.6 High 16 - - - 1 - 82.5 25 149 U-GB3SY 433.150 +1.6 High 16 - - - 1 - 71.9 25 # Table of channel zones. # 1) Zone number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of channels: numbers and ranges (N-M) separated by comma # Zone Name Channels 1 S.YORKS_DV 1-4,6-9,15-16,37,45-46,49-50 2 S.YORKS_2M_DV 10-11,14 3 London_DV 12-13 4 EXAMPLE-ZONE 30 5 70cm_FMrptr 147-149 14 2m_FM_Rptrs 125-126 30 Simplex_2M_FM 17-29,144-146 # Table of scan lists. # 1) Scan list number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) Priority channel 1 (50% of scans): -, Sel or index # 4) Priority channel 2 (25% of scans): -, Sel or index # 5) Designated transmit channel: Last, Sel or index # 6) List of channels: numbers and ranges (N-M) separated by comma # Scanlist Name PCh1 PCh2 TxCh Channels 1 S.YORKS_DV - - Sel 1-4,6-9,15-16,37,45-46,49-50 2 2m_FM_Rptrs - - Sel 125-126 3 London_DV - - Sel 12-13 4 S.YORKS_2M_DV - - Sel 10-11,14 5 EXAMPLE-SCAN - - Sel 30 7 Simplex_2M_FM - - Sel 17-28,144-146 16 70cm_FMrptrs - - Sel 147-149 # Table of contacts. # 1) Contact number: 1-256 # 2) Name: up to 16 characters, use '_' instead of space # 3) Call type: Group, Private, All # 4) Call ID: 1...16777215 # 5) Call receive tone: -, + # Contact Name Type ID RxTone 1 D+WW/BMLocal Group 1 + 2 D+EU/BMClust Group 2 + 3 BM/D+Local Group 9 + 4 BM_SOTA Group 973 + 5 D+/BM_Germany Group 262 + 6 D+/BMEcho Group 9990 + 7 D+_D.A.CH Group 20 + 8 BM_Regional Group 8 + 9 D+_DL_WW Group 110 + 10 D+_DL_WW(Res.) Group 120 + 11 BM_WW Group 91 + 12 BM_EUR Group 92 + 13 G4APO-Rowland Private 2345085 - 14 D+_REG_NE_ENGLND Group 860 + 25 BM_D.A.CH Group 920 + 26 BM_Austria Group 232 + 27 DD5LP_-_Ed Private 2638415 - 28 BMRef4000_Disc Group 4000 + 29 BMRef4001_DL Group 4001 + 40 BMRef4012_D-Star Group 4012 + 41 BMRef4013_RLP Group 4013 + 42 BMRef4014_Test Group 4014 + 47 BMRef4019gerTst Group 4019 + 49 BMRef4021May-Kob Group 4021 + 50 BMRef4022WhiteSt Group 4022 + 60 BMRef4034Workshp Group 4034 + 61 BMRef4035DV4Mini Group 4035 + 67 BMRef5000Status Group 5000 + 68 DV_Simplex Group 99 + 69 BM-YSF262 Group 26208 - 70 BM/D+_France Group 208 + 71 BM/D+_Italy Group 222 + 72 BM/D+Luxemburg Group 270 + 73 BM/D+_Sweden Group 240 + 74 BM/D+Switzerland Group 228 + 75 BM/D+_Spain Group 214 + 76 BM/D+TAC310USA Group 310 + 77 BM_BAYNET Group 31075 + 83 G3CWI_-_Richard Private 2344756 - 89 BM/D+__UK Group 235 - # Table of group lists. # 1) Group list number: 1-64 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of contacts: numbers and ranges (N-M) separated by comma # Grouplist Name Contacts 1 DMR+_TS1_WW 1-2,5-7,9-10,70-76,89 2 DMR+_TS2_Local 3,14 3 BM_TS1_WW 4-5,11-12,69-75,77,89 4 BM_TS2_Local 3,25 5 BM_Reflectors 28-29,40-42,47,49-50,60-61,67 6 ExamplUKTGonly 89 # Table of text messages. # 1) Message number: 1-32 # 2) Text: up to 144 characters # Message Text 1 TEST # Unique DMR ID and name of this radio. ID: 2349999 Name: CALLSIGN # Text displayed when the radio powers up. Intro Line 1: Baofeng RD-5R Intro Line 2: SYorks CP v3 dmrconfig-master/examples/rd5r-south-bay-area.conf000066400000000000000000000664711354060760700225250ustar00rootroot00000000000000# # Generic DMR configuration for South Bay Area. # Radio: Baofeng RD-5R # Table of digital channels. # 1) Channel number: 1-1024 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Low # 6) Scan list: - or index in Scanlist table # 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555 # 8) Receive only: -, + # 9) Admit criteria: -, Free, Color # 10) Color code: 0, 1, 2, 3... 15 # 11) Time slot: 1 or 2 # 12) Receive group list: - or index in Grouplist table # 13) Contact for transmit: - or index in Contacts table # Digital Name Receive Transmit Power Scan TOT RO Admit Color Slot RxGL TxContact # (1) W6TCP, Milpitas, NorCal 1 Mi_RX_All 440.125 +5 Low - 180 + Color 3 1 1 - # Receive only 2 Mi_World 440.125 +5 High - 180 - Color 3 1 11 91 # 91 Worldwide Dynamic 3 Mi_North_America 440.125 +5 High - 180 - Color 3 1 12 93 # 93 North America Dynamic 4 Mi_TAC_310 440.125 +5 High - 180 - Color 3 1 13 10 # 310 TAC 310 Dynamic 5 Mi_TAC_311 440.125 +5 High - 180 - Color 3 1 14 11 # 311 TAC 311 Dynamic 6 Mi_USA_Nation 440.125 +5 High - 180 - Color 3 1 15 100 # 3100 USA Nationwide Dynamic 7 Mi_California 440.125 +5 High - 180 - Color 3 1 16 106 # 3106 California Static 8 Mi_NorCal 440.125 +5 High - 180 - Color 3 2 19 68 # 31068 NorCal Static 9 Mi_Bay-Net 440.125 +5 High - 180 - Color 3 1 20 75 # 31075 Bay-Net Dynamic 10 Mi_Anarchy 440.125 +5 High - 180 - Color 3 2 23 66 # 31666 DMR of Anarchy Static 11 Mi_NC_5150 440.125 +5 High - 180 - Color 3 2 24 95 # 95150 NorCal 5150 Static 12 Mi_Parrot 440.125 +5 High - 180 - Color 3 1 - 90 # 9990 Parrot Private # (2) N6AMG, San Bruno, Baycom 21 Br_RX_All 440.500 +5 Low - 180 + Color 1 1 1 - # Receive only 22 Br_World 440.500 +5 High - 180 - Color 1 1 11 91 # 91 Worldwide Dynamic 23 Br_North_America 440.500 +5 High - 180 - Color 1 1 12 93 # 93 North America Static 24 Br_TAC_310 440.500 +5 High - 180 - Color 1 1 13 10 # 310 TAC 310 Dynamic 25 Br_TAC_311 440.500 +5 High - 180 - Color 1 1 14 11 # 311 TAC 311 Dynamic 26 Br_USA_Nation 440.500 +5 High - 180 - Color 1 1 15 100 # 3100 USA Nationwide Dynamic 27 Br_California 440.500 +5 High - 180 - Color 1 1 16 106 # 3106 California Static 28 Br_NC_AllStr 440.500 +5 High - 180 - Color 1 1 18 65 # 31065 NorCal AllStar Static 29 Br_NorCal 440.500 +5 High - 180 - Color 1 2 19 68 # 31068 NorCal Dynamic 30 Br_Bay-Net 440.500 +5 High - 180 - Color 1 1 20 75 # 31075 Bay-Net Static 31 Br_USA_Area6 440.500 +5 High - 180 - Color 1 1 22 96 # 31096 USA Area 6 Static 32 Br_Anarchy 440.500 +5 High - 180 - Color 1 2 23 66 # 31666 DMR of Anarchy Dynamic 33 Br_NC_5150 440.500 +5 High - 180 - Color 1 2 24 95 # 95150 NorCal 5150 Dynamic 34 Br_Baycom 440.500 +5 High - 180 - Color 1 2 25 97 # 97150 Baycom Static 35 Br_Parrot 440.500 +5 High - 180 - Color 1 1 - 90 # 9990 Parrot Private # (3) WB6ECE, Boulder Creek, Baycom 41 Bo_RX_All 440.5875 +5 Low - 180 + Color 2 1 1 - # Receive only 42 Bo_World 440.5875 +5 High - 180 - Color 2 1 11 91 # 91 Worldwide Dynamic 43 Bo_North_America 440.5875 +5 High - 180 - Color 2 1 12 93 # 93 North America Static 44 Bo_TAC_310 440.5875 +5 High - 180 - Color 2 1 13 10 # 310 TAC 310 Dynamic 45 Bo_TAC_311 440.5875 +5 High - 180 - Color 2 1 14 11 # 311 TAC 311 Dynamic 46 Bo_USA_Nation 440.5875 +5 High - 180 - Color 2 1 15 100 # 3100 USA Nationwide Dynamic 47 Bo_California 440.5875 +5 High - 180 - Color 2 1 16 106 # 3106 California Static 48 Bo_Santa_Clara 440.5875 +5 High - 180 - Color 2 1 17 64 # 31064 Santa Clara County Static 49 Bo_NC_AllStr 440.5875 +5 High - 180 - Color 2 1 18 65 # 31065 NorCal AllStar Static 50 Bo_NorCal 440.5875 +5 High - 180 - Color 2 2 19 68 # 31068 NorCal Dynamic 51 Bo_Bay-Net 440.5875 +5 High - 180 - Color 2 1 20 75 # 31075 Bay-Net Static 52 Bo_USA_Area6 440.5875 +5 High - 180 - Color 2 1 22 96 # 31096 USA Area 6 Static 53 Bo_Anarchy 440.5875 +5 High - 180 - Color 2 2 23 66 # 31666 DMR of Anarchy Dynamic 54 Bo_NC_5150 440.5875 +5 High - 180 - Color 2 2 24 95 # 95150 NorCal 5150 Dynamic 55 Bo_Baycom 440.5875 +5 High - 180 - Color 2 2 25 97 # 97150 Baycom Static 56 Bo_Parrot 440.5875 +5 High - 180 - Color 2 1 - 90 # 9990 Parrot Private # (4) K6OTR, Palo Alto, Baycom 61 PA_RX_All 441.850 +5 Low - 180 + Color 1 1 1 - # Receive only 62 PA_World 441.850 +5 High - 180 - Color 1 1 11 91 # 91 Worldwide Dynamic 63 PA_North_America 441.850 +5 High - 180 - Color 1 1 12 93 # 93 North America Static 64 PA_TAC_310 441.850 +5 High - 180 - Color 1 1 13 10 # 310 TAC 310 Dynamic 65 PA_TAC_311 441.850 +5 High - 180 - Color 1 1 14 11 # 311 TAC 311 Dynamic 66 USA_Nation 441.850 +5 High - 180 - Color 1 1 15 100 # 3100 USA Nationwide Dynamic 67 PA_California 441.850 +5 High - 180 - Color 1 1 16 106 # 3106 California Static 68 PA_NC_AllStr 441.850 +5 High - 180 - Color 1 1 18 65 # 31065 NorCal AllStar Static 69 PA_NorCal 441.850 +5 High - 180 - Color 1 2 19 68 # 31068 NorCal Dynamic 70 PA_Bay-Net 441.850 +5 High - 180 - Color 1 1 20 75 # 31075 Bay-Net Static 71 PA_USA_Area6 441.850 +5 High - 180 - Color 1 1 22 96 # 31096 USA - Area 6 4646 Static 72 PA_Anarchy 441.850 +5 High - 180 - Color 1 2 23 66 # 31666 DMR of Anarchy Dynamic 73 PA_NC_5150 441.850 +5 High - 180 - Color 1 2 24 95 # 95150 NorCal 5150 Dynamic 74 PA_Baycom 441.850 +5 High - 180 - Color 1 2 25 97 # 97150 Baycom Static 75 PA_Parrot 441.850 +5 High - 180 - Color 1 1 - 90 # 9990 Parrot Private # (5) KK6USZ, Saratoga 81 Sa_RX_All 441.950 +5 Low - 180 + Color 1 1 1 - # Receive only 82 Sa_World 441.950 +5 High - 180 - Color 1 1 11 91 # 91 Worldwide Dynamic 83 Sa_North_America 441.950 +5 High - 180 - Color 1 1 12 93 # 93 North America Dynamic 84 Sa_TAC_310 441.950 +5 High - 180 - Color 1 1 13 10 # 310 TAC 310 Dynamic 85 Sa_TAC_311 441.950 +5 High - 180 - Color 1 1 14 11 # 311 TAC 311 Dynamic 86 Sa_USA_Nation 441.950 +5 High - 180 - Color 1 1 15 100 # 3100 USA Nationwide Dynamic 87 Sa_California 441.950 +5 High - 180 - Color 1 1 16 106 # 3106 California Dynamic 88 Sa_Nebraska 441.950 +5 High - 180 - Color 1 1 26 131 # 3131 Nebraska Static 89 Sa_Texas 441.950 +5 High - 180 - Color 1 1 27 148 # 3148 Texas Dynamic 90 Sa_Santa_Clara 441.950 +5 High - 180 - Color 1 2 17 64 # 31064 Santa Clara County Static 91 Sa_NorCal 441.950 +5 High - 180 - Color 1 2 19 68 # 31068 NorCal Static 92 Sa_Bay-Net 441.950 +5 High - 180 - Color 1 2 20 75 # 31075 Bay-Net Static 93 Sa_Anarchy 441.950 +5 High - 180 - Color 1 2 23 66 # 31666 DMR of Anarchy Dynamic 94 Sa_NC_5150 441.950 +5 High - 180 - Color 1 2 24 95 # 95150 NorCal 5150 Dynamic 95 Sa_Baycom 441.950 +5 High - 180 - Color 1 2 25 97 # 97150 Baycom Static 96 Sa_Parrot 441.950 +5 High - 180 - Color 1 1 - 90 # 9990 Parrot Private # (6) WA6YCZ, Mt Umunhum, Baycom 101 Um_RX_All 442.5375 +5 Low - 180 + Color 1 1 1 - # Receive only 102 Um_World 442.5375 +5 High - 180 - Color 1 1 11 91 # 91 Worldwide Dynamic 103 Um_North_America 442.5375 +5 High - 180 - Color 1 1 12 93 # 93 North America Static 104 Um_TAC_310 442.5375 +5 High - 180 - Color 1 1 13 10 # 310 TAC 310 Dynamic 105 Um_TAC_311 442.5375 +5 High - 180 - Color 1 1 14 11 # 311 TAC 311 Dynamic 106 Um_USA_Nation 442.5375 +5 High - 180 - Color 1 1 15 100 # 3100 USA Nationwide Dynamic 107 Um_California 442.5375 +5 High - 180 - Color 1 1 16 106 # 3106 California Static 108 Um_Santa_Clara 442.5375 +5 High - 180 - Color 1 1 17 64 # 31064 Santa Clara County Static 109 Um_NC_AllStr 442.5375 +5 High - 180 - Color 1 1 18 65 # 31065 NorCal AllStar Static 110 Um_NorCal 442.5375 +5 High - 180 - Color 1 2 19 68 # 31068 NorCal Dynamic 111 Um_Bay-Net 442.5375 +5 High - 180 - Color 1 1 20 75 # 31075 Bay-Net Static 112 Um_USA_Area6 442.5375 +5 High - 180 - Color 1 1 22 96 # 31096 USA Area 6 Static 113 Um_Anarchy 442.5375 +5 High - 180 - Color 1 2 23 66 # 31666 DMR of Anarchy Dynamic 114 Um_NC_5150 442.5375 +5 High - 180 - Color 1 2 24 95 # 95150 NorCal 5150 Dynamic 115 Um_Baycom 442.5375 +5 High - 180 - Color 1 2 25 97 # 97150 Baycom Static 116 Um_Parrot 442.5375 +5 High - 180 - Color 1 1 - 90 # 9990 Parrot Private # (7) K6LNK, Berkeley, NorCal, Carla 121 Be_RX_All 443.500 +5 Low - 180 + Color 1 1 1 - # Receive only 122 Be_World 443.500 +5 High - 180 - Color 1 1 11 91 # 91 Worldwide Dynamic 123 Be_North_America 443.500 +5 High - 180 - Color 1 1 12 93 # 93 North America Dynamic 124 Be_TAC_310 443.500 +5 High - 180 - Color 1 1 13 10 # 310 TAC 310 Dynamic 125 Be_TAC_311 443.500 +5 High - 180 - Color 1 1 14 11 # 311 TAC 311 Dynamic 126 Be_USA_Nation 443.500 +5 High - 180 - Color 1 1 15 100 # 3100 USA Nationwide Dynamic 127 Be_California 443.500 +5 High - 180 - Color 1 1 16 106 # 3106 California Static 128 Be_NorCal 443.500 +5 High - 180 - Color 1 2 19 68 # 31068 NorCal Static 129 Be_Bay-Net 443.500 +5 High - 180 - Color 1 1 20 75 # 31075 Bay-Net Dynamic 130 Be_Anarchy 443.500 +5 High - 180 - Color 1 2 23 66 # 31666 DMR of Anarchy Dynamic 131 Be_NC_5150 443.500 +5 High - 180 - Color 1 2 24 95 # 95150 NorCal 5150 Dynamic 132 Be_Parrot 443.500 +5 High - 180 - Color 1 1 - 90 # 9990 Parrot Private # (8) K6HLE, Loma Prieta, NorCal, AREA 141 Lo_RX_All 444.025 +5 Low - 180 + Color 1 1 1 - # Receive only 142 Lo_World 444.025 +5 High - 180 - Color 1 1 11 91 # 91 Worldwide Dynamic 143 Lo_North_America 444.025 +5 High - 180 - Color 1 1 12 93 # 93 North America Static 144 Lo_TAC_310 444.025 +5 High - 180 - Color 1 1 13 10 # 310 TAC 310 Dynamic 145 Lo_TAC_311 444.025 +5 High - 180 - Color 1 1 14 11 # 311 TAC 311 Dynamic 146 Lo_USA_Nation 444.025 +5 High - 180 - Color 1 1 15 100 # 3100 USA Nationwide Dynamic 147 Lo_California 444.025 +5 High - 180 - Color 1 1 16 106 # 3106 California Static 148 Lo_NorCal 444.025 +5 High - 180 - Color 1 2 19 68 # 31068 NorCal Static 149 Lo_Bay-Net 444.025 +5 High - 180 - Color 1 1 20 75 # 31075 Bay-Net Dynamic 150 Lo_USA_Area6 444.025 +5 High - 180 - Color 1 1 22 96 # 31096 USA - Area 6 4646 Static 151 Lo_Anarchy 444.025 +5 High - 180 - Color 1 2 23 66 # 31666 DMR of Anarchy Dynamic 152 Lo_NC_5150 444.025 +5 High - 180 - Color 1 2 24 95 # 95150 NorCal 5150 Dynamic 153 Lo_Parrot 444.025 +5 High - 180 - Color 1 1 - 90 # 9990 Parrot Private # (9) WW6BAY, Palo Alto, Bay-Net 161 Bay_RX_All 444.350 +5 Low - 180 + Color 1 1 1 - # Receive only 162 Bay_World 444.350 +5 High - 180 - Color 1 1 11 91 # 91 Worldwide Dynamic 163 Bay_North_Am 444.350 +5 High - 180 - Color 1 1 12 93 # 93 North America Dynamic 164 Bay_TAC_310 444.350 +5 High - 180 - Color 1 1 13 10 # 310 TAC 310 Dynamic 165 Bay_TAC_311 444.350 +5 High - 180 - Color 1 1 14 11 # 311 TAC 311 Dynamic 166 Bay_USA_Nation 444.350 +5 High - 180 - Color 1 1 15 100 # 3100 USA Nationwide Dynamic 167 Bay_Santa_Clara 444.350 +5 High - 180 - Color 1 1 17 64 # 31064 Santa Clara County Static 168 Bay_NorCal 444.350 +5 High - 180 - Color 1 2 19 68 # 31068 NorCal Dynamic 169 Bay_Bay-Net 444.350 +5 High - 180 - Color 1 2 20 75 # 31075 Bay-Net Static 170 Bay_Anarchy 444.350 +5 High - 180 - Color 1 2 23 66 # 31666 DMR of Anarchy Dynamic 171 Bay_NC_5150 444.350 +5 High - 180 - Color 1 2 24 95 # 95150 NorCal 5150 Dynamic 172 Bay_Parrot 444.350 +5 High - 180 - Color 1 1 - 90 # 9990 Parrot Private # (10) W6OTX, Alum Rock, NorCal, PAARA 181 Al_RX_All 444.475 +5 Low - 180 + Color 1 1 1 - # Receive only 182 Al_World 444.475 +5 High - 180 - Color 1 1 11 91 # 91 Worldwide Dynamic 183 Al_North_Am 444.475 +5 High - 180 - Color 1 1 12 93 # 93 North America Dynamic 184 Al_TAC_310 444.475 +5 High - 180 - Color 1 1 13 10 # 310 TAC 310 Dynamic 185 Al_TAC_311 444.475 +5 High - 180 - Color 1 1 14 11 # 311 TAC 311 Dynamic 186 Al_USA_Nation 444.475 +5 High - 180 - Color 1 1 15 100 # 3100 USA Nationwide Dynamic 187 Al_California 444.475 +5 High - 180 - Color 1 1 16 106 # 3106 California Static 188 Al_NorCal 444.475 +5 High - 180 - Color 1 2 19 68 # 31068 NorCal Static 189 Al_Bay-Net 444.475 +5 High - 180 - Color 1 1 20 75 # 31075 Bay-Net Dynamic 190 Al_Anarchy 444.475 +5 High - 180 - Color 1 2 23 66 # 31666 DMR of Anarchy Dynamic 191 Al_NC_5150 444.475 +5 High - 180 - Color 1 2 24 95 # 95150 NorCal 5150 Dynamic 192 Al_Parrot 444.475 +5 High - 180 - Color 1 1 - 90 # 9990 Parrot Private # (11) DMR simplex 701 441.0 441.000 +0 High 3 555 - - 1 1 9 99 702 446.5 446.500 +0 High 3 555 - - 1 1 9 99 703 446.075 446.075 +0 High 3 555 - - 1 1 9 99 704 433.45 433.450 +0 High 3 555 - - 1 1 9 99 705 145.79 145.790 +0 High 3 555 - - 1 1 9 99 706 145.51 145.510 +0 High 3 555 - - 1 1 9 99 # Table of analog channels. # 1) Channel number: 1-1024 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Low # 6) Scan list: - or index # 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555 # 8) Receive only: -, + # 9) Admit criteria: -, Free, Tone # 10) Squelch level: Normal, Tight # 11) Guard tone for receive, or '-' to disable # 12) Guard tone for transmit, or '-' to disable # 13) Bandwidth in kHz: 12.5, 20, 25 # Analog Name Receive Transmit Power Scan TOT RO Admit Squelch RxTone TxTone Width # (12) VHF Band 144-148 201 Palo_Alto_N6NFI 145.230 -0.6 High 1 180 - Free 1 - 100.0 25 202 Milpitas_W6MLP 145.430 -0.6 High 1 180 - Free 1 - 85.4 25 203 Saratoga_K6SA 146.655 -0.6 High 1 180 - Free 1 - 114.8 25 204 Newark_N6MM 146.670 -0.6 High 1 180 - Free 1 - 110.9 25 205 Mill_Vally_K6GWE 146.700 -0.6 High 1 180 - Free 1 - 179.9 25 206 San_Jose_K6INC 146.820 -0.6 High 1 180 - Free 1 - 123.0 25 207 Orinda_K6LNK 146.850 -0.6 High 1 180 - Free 1 - 103.5 25 208 Pleasanton_W6SRR 147.045 +0.6 High 1 180 - Free 1 - 94.8 25 209 Concord_W6CX 147.060 +0.6 High 1 180 - Free 1 - 100.0 25 210 Napa_W6CO 147.180 +0.6 High 1 180 - Free 1 - 91.5 25 211 Morgan_Hil_K7DAA 147.330 +0.6 High 1 180 - Free 1 - 103.5 25 212 Los_Gatos_AB6LI 147.945 -0.6 High 1 180 - Free 1 - 156.7 25 # (13) UHF Band 440-446 301 San_Jose_W6YOP 440.275 +5 High 1 180 - Free 1 - 127.3 25 302 Woodside_N6ZX 440.450 +5 High 1 180 - Free 1 - 107.2 25 303 Campbell_NO1PC 441.025 +5 High 1 180 - Free 1 - 110.9 25 304 Los_Gatos_K6UB 441.700 +5 High 1 180 - Free 1 - 127.3 25 305 San_Jose_WB6ZVW 442.500 +5 High 1 180 - Free 1 - 100.0 25 306 San_Jose_WR6ABD 442.900 +5 High 1 180 - Free 1 - 162.2 25 307 Morgan_Hil_K7DAA 442.975 +5 High 1 180 - Free 1 - 100.0 25 308 Orinda_N6QOP 443.050 +5 High 1 180 - Free 1 - 114.8 25 309 San_Jose_K6LNK 443.075 +5 High 1 180 - Free 1 - 123.0 25 310 Palo_Alto_WW6BAY 443.225 +5 High 1 180 - Free 1 - 100.0 25 311 San_Jose_KE6STH 443.575 +5 High 1 180 - Free 1 - 110.9 25 312 Oakland_WW6BAY 443.975 +5 High 1 180 - Free 1 - 100.0 25 313 San_Jose_K6GOD 444.725 +5 High 1 180 - Free 1 - 162.2 25 314 Los_Gatos_WB6KHP 444.975 +5 High 1 180 - Free 1 - 127.3 25 # (14) Simplex frequencies 401 S_446.0 446.000 +0 High 2 180 - Free 1 - - 25 402 S_446.5 446.500 +0 High 2 180 - Free 1 - - 25 403 S_441.0 441.000 +0 High 2 180 - Free 1 - - 25 404 S_146.52 146.520 +0 High 2 180 - Free 1 - - 25 405 S_146.46 146.460 +0 High 2 180 - Free 1 - - 25 406 S_147.42 147.420 +0 High 2 180 - Free 1 - - 25 407 WX_1 162.450 +0 Low - 180 + Free 1 - - 25 408 WX_5 162.550 +0 Low - 180 + Free 1 - - 25 # Table of channel zones. # 1) Zone number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of channels: numbers and ranges (N-M) separated by comma # Zone Name Channels 1 Milpitas 1-12 # 440.125 W6TCP 2 San_Bruno 21-35 # 440.500 N6AMG 3 Boulder_Creek 41-56 # 440.5875 WB6ECE 4 Palo_Alto 61-75 # 441.850 K6OTR 5 Saratoga 81-96 # 441.950 KK6USZ 6 Mt_Umunhum 101-116 # 442.5375 WA6YCZ 7 Berkeley 121-132 # 443.500 K6LNK 8 Loma_Prieta 141-153 # 444.025 K6HLE 9 Baynet_Palo_Alto 161-172 # 444.350 WW6BAY 10 Alum_Rock 181-192 # 444.475 W6OTX 11 DMR_Simplex 701-706 # DMR Simplex: UHF, VHF 12 VHF 201-212 # 144-148 VHF Band 13 UHF 301-314 # 440-446 UHF Band 14 FM_Simplex 401-408 # FM Simplex: VHF, UHF # Table of scan lists. # 1) Scan list number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) Priority channel 1 (50% of scans): -, Sel or index # 4) Priority channel 2 (25% of scans): -, Sel or index # 5) Designated transmit channel: Last, Sel or index # 6) List of channels: numbers and ranges (N-M) separated by comma # Scanlist Name PCh1 PCh2 TxCh Channels 1 Analog - - Last 201-212,301-314 2 FM_Simplex - - Last 401-406 3 DMR_Simplex - - Last 701-706 # Table of group lists. # 1) Group list number: 1-64 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of contacts: numbers and ranges (N-M) separated by comma # Grouplist Name Contacts 1 All_Groups 91 # 91 Worldwide 1 All_Groups 93 # 93 North America 1 All_Groups 10 # 310 TAC 310 1 All_Groups 11 # 311 TAC 311 1 All_Groups 100 # 3100 USA Nationwide 1 All_Groups 106 # 3106 California 1 All_Groups 64 # 31064 Santa Clara County 1 All_Groups 65 # 31065 NorCal AllStar 1 All_Groups 68 # 31068 NorCal 1 All_Groups 75 # 31075 Bay-Net 1 All_Groups 78 # 31078 XLX013D PAPA 1 All_Groups 96 # 31096 USA - Area 6 4646 1 All_Groups 66 # 31666 DMR of Anarchy 1 All_Groups 95 # 95150 NorCal 5150 1 All_Groups 97 # 97150 Baycom 9 Simplex 99 # 99 Simplex 11 Worldwide 91 # 91 Worldwide 12 North_America 93 # 93 North America 13 TAC_310 10 # 310 TAC 310 14 TAC_311 11 # 311 TAC 311 15 USA_Nationwide 100 # 3100 USA Nationwide 16 California 106 # 3106 California 17 Santa_Clara_Cnty 64 # 31064 Santa Clara County 18 NorCal_AllStar 65 # 31065 NorCal AllStar 19 NorCal 68 # 31068 NorCal 20 Bay-Net 75 # 31075 Bay-Net 21 XLX013D_PAPA 78 # 31078 XLX013D PAPA 22 USA_Area_6 96 # 31096 USA - Area 6 4646 23 DMR_of_Anarchy 66 # 31666 DMR of Anarchy 24 NorCal_5150 95 # 95150 NorCal 5150 25 Baycom 97 # 97150 Baycom 26 Nebraska 131 # 3131 Nebraska 27 Texas 148 # 3148 Texas # Table of contacts. # 1) Contact number: 1-256 # 2) Name: up to 16 characters, use '_' instead of space # 3) Call type: Group, Private, All # 4) Call ID: 1...16777215 # 5) Call receive tone: -, + # Contact Name Type ID RxTone # From all Bay Area repeaters 91 Worldwide Group 91 - 93 North_America Group 93 - 99 Simplex Group 99 - 10 TAC_310 Group 310 - 11 TAC_311 Group 311 - 100 USA_Nationwide Group 3100 - 106 California Group 3106 - 131 Nebraska Group 3131 - 148 Texas Group 3148 - 64 Santa_Clara_Cnty Group 31064 - 65 NorCal_AllStar Group 31065 - 68 NorCal Group 31068 - 72 KPARN Group 31072 - 75 Bay-Net Group 31075 - 78 XLX013D_PAPA Group 31078 - 96 USA_Area_6 Group 31096 - 28 SNARS Group 31328 - 29 SNARS_2 Group 31329 - 66 DMR_of_Anarchy Group 31666 - 95 NorCal_5150 Group 95150 - 97 Baycom Group 97150 - # Private 90 Parrot Private 9990 - 42 Sergey_KK6ABQ Private 3114542 + # Sergey Vakulenko # Table of text messages. # 1) Message number: 1-32 # 2) Text: up to 144 characters # Message Text 1 Hi there! 2 QSY Norcal 31068, pls 3 QSY California 3106, pls 4 Be Right Back 5 My email is callsign@arrl.net 6 73 . . . dmrconfig-master/examples/rd5r-v21x-Charlotte-NC.conf000066400000000000000000000256021354060760700227140ustar00rootroot00000000000000# # Configuration generated 2018/11/21 by dmrconfig, version 0.9.193 # Radio: Baofeng RD-5R Last Programmed Date: 2018-05-12 23:16 # Table of digital channels. # 1) Channel number: 1-1024 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Low # 6) Scan list: - or index in Scanlist table # 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555 # 8) Receive only: -, + # 9) Admit criteria: -, Free, Color # 10) Color code: 0, 1, 2, 3... 15 # 11) Time slot: 1 or 2 # 12) Receive group list: - or index in Grouplist table # 13) Contact for transmit: - or index in Contacts table # Digital Name Receive Transmit Power Scan TOT RO Admit Color Slot RxGL TxContact 1 aWorldwide 440.5625 +5 High - - - - 1 1 1 1 # Worldwide 2 aLocal_2 440.5625 +5 High - - - - 1 2 2 2 # Local 2 3 aLocal_9 440.5625 +5 High - - - - 1 2 3 3 # Local 9 4 aNorAmerica 440.5625 +5 High - - - - 1 1 4 4 # NorAmerica 5 aTAC_310 440.5625 +5 High - - - - 1 1 5 5 # TAC 310 6 aTAC_311 440.5625 +5 High - - - - 1 1 6 6 # TAC 311 7 aTAC_312 440.5625 +5 High - - - - 1 1 7 7 # TAC 312 8 aTAC_313 440.5625 +5 High - - - - 1 1 8 8 # TAC 313 9 aTAC_314 440.5625 +5 High - - - - 1 1 9 9 # TAC 314 10 aTAC_315 440.5625 +5 High - - - - 1 1 10 10 # TAC 315 11 aTAC_317 440.5625 +5 High - - - - 1 1 11 11 # TAC 317 12 aUSA3100 440.5625 +5 High - - - - 1 1 12 12 # USA3100 13 aNC_State 440.5625 +5 High - - - - 1 1 13 13 # NC State 14 aTriag_NC 440.5625 +5 High - - - - 1 1 14 14 # Triag NC 15 cWorldwide 442.4125 +5 High - - - - 1 1 1 1 # Worldwide 16 cLocal_2 442.4125 +5 High - - - - 1 2 2 2 # Local 2 17 cLocal_9 442.4125 +5 High - - - - 1 2 3 3 # Local 9 18 cNorAmerica 442.4125 +5 High - - - - 1 1 4 4 # NorAmerica 19 cTAC_310 442.4125 +5 High - - - - 1 1 5 5 # TAC 310 20 cTAC_311 442.4125 +5 High - - - - 1 1 6 6 # TAC 311 21 cTAC_312 442.4125 +5 High - - - - 1 1 7 7 # TAC 312 22 cTAC_313 442.4125 +5 High - - - - 1 1 8 8 # TAC 313 23 cTAC_314 442.4125 +5 High - - - - 1 1 9 9 # TAC 314 24 cTAC_315 442.4125 +5 High - - - - 1 1 10 10 # TAC 315 25 cTAC_317 442.4125 +5 High - - - - 1 1 11 11 # TAC 317 26 cUSA3100 442.4125 +5 High - - - - 1 1 12 12 # USA3100 27 cNC_State 442.4125 +5 High - - - - 1 1 13 13 # NC State 28 cTriag_NC 442.4125 +5 High - - - - 1 1 14 14 # Triag NC # Table of analog channels. # 1) Channel number: 1-1024 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Low # 6) Scan list: - or index # 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555 # 8) Receive only: -, + # 9) Admit criteria: -, Free, Tone # 10) Squelch level: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 # 11) Guard tone for receive, or '-' to disable # 12) Guard tone for transmit, or '-' to disable # 13) Bandwidth in kHz: 12.5, 20, 25 # Analog Name Receive Transmit Power Scan TOT RO Admit Squelch RxTone TxTone Width 29 W4BFB_Charlotte 145.290 -0.6 High 1 - - - 3 - 118.8 25 30 W4BFB_Charlotte 146.940 -0.6 High 1 - - - 3 - 118.8 25 31 W4CQ_Charlotte 147.060 -0.6 High 1 - - - 3 - 88.5 25 32 KD4ADL_Charlotte 147.270 +0.6 High 1 - - - 3 - 91.5 25 33 N4UH_China_Grove 145.410 -0.6 High 1 - - - 3 - 136.5 25 34 K4CEB_Concord 146.655 -0.6 High 1 - - - 3 - 88.5 25 35 KD4ADL_Concord 147.210 +0.6 High 1 - - - 3 - 110.9 25 36 WA4AOS_Dallas 145.350 -0.6 High 1 - - - 3 - 82.5 25 37 KT4TF_Fort_Mill 145.110 -0.6 High 1 - - - 3 - 110.9 25 38 KG4LWG_Gastonia 442.775 +5 High 2 - - - 3 - 123.0 25 39 KC4ZTI_Gastonia 443.750 +5 High 2 - - - 3 - 88.5 25 40 AG4EI_Gastonia 444.150 +5 High 2 - - - 3 - 141.3 25 41 WD4LCF_Gastonia 145.450 -0.6 High 2 - - - 3 - 88.5 25 42 K4GNC_Gastonia 146.805 -0.6 High 2 - - - 3 - 100.0 25 43 K4CBA_Gastonia 442.050 +5 High 2 - - - 3 - 88.5 25 44 N4GAS_Gastonia 147.120 +0.6 High 2 - - - 3 - 100.0 25 45 N4GAS_Gastonia 444.550 +5 High 2 - - - 3 - 88.5 25 46 KA4YMY_Gastonia 444.700 +5 High 2 - - - 3 - 88.5 25 47 K4GNC_Gastonia 444.750 +5 High 2 - - - 3 - 162.2 25 48 W8EMX_Huntersvil 443.225 +5 High 1 - - - 3 - 110.9 25 49 N4JEX_Kannapolis 147.300 +0.6 High 1 - - - 3 - 136.5 25 50 N4JEX_Kannapolis 443.350 +5 High 1 - - - 3 - 136.5 25 51 NC4LC_Lincolnton 147.015 +0.6 High 1 - - - 3 - 141.3 25 52 WA4YGD_Lincolnto 442.350 +5 High 1 - - - 3 - 88.5 25 53 KD4ADL_Mint_Hill 444.825 +5 High 1 - - - 3 - 110.9 25 54 NC4UC_Monroe 145.390 -0.6 High 1 - - - 3 - 94.8 25 55 W4ZO_Monroe 444.300 +5 High 1 - - - 3 - 100.0 25 56 NC4UC_Monroe 444.425 +5 High 1 - - - 3 - 94.8 25 57 WG8E_Mooresville 443.825 +5 High 1 - - - 3 - 110.9 25 58 WT4IX_Newell 442.125 +5 High 1 - - - 3 - 156.7 25 59 K4CCR_Newton 147.075 +0.6 High 1 - - - 3 - 88.5 25 60 KE4KIV_Newton 442.625 +5 High 1 - - - 3 - 88.5 25 61 W4BFB_Ranlo 145.230 -0.6 High 1 - - - 3 - 118.8 25 62 K4YTZ_Rock_Hill 147.030 -0.6 High 1 - - - 3 - 88.5 25 63 KD4EOD_Rock_Hill 147.225 +0.6 High 1 - - - 3 - 110.9 25 64 K4WBT_Waxhaw 444.525 +5 High 1 - - - 3 - 94.8 25 65 N4HRS_Wingate 443.950 +5 High 1 - - - 3 - 110.9 25 66 N4HRS_York 147.270 +0.6 High 1 - - - 3 - 110.9 25 67 W4PSC_York 443.375 +5 High 1 - - - 3 - 110.9 25 68 2M_SIM1 146.520 +0 High - - - - 3 - - 25 69 2M_SIM2 146.550 +0 High - - - - 3 - - 25 70 2M_SIM3 146.580 +0 High - - - - 3 - - 25 71 70C_SM1 446.000 +0 High - - - - 3 - - 25 72 70C_SM2 446.125 +0 High - - - - 3 - - 25 # Table of channel zones. # 1) Zone number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of channels: numbers and ranges (N-M) separated by comma # Zone Name Channels 1 K4DVA_Albemarle 1-14 2 NCPRN_Charlotte 15-28 3 Analog_A-F 30,30-37 4 Analog_Gaston 38-41,43,45,45-47,47 5 Analog_H-N 48,50,50-53,55-56,56-60 6 Analog_O-Z 61-67 7 Simplex 68-72 # Table of scan lists. # 1) Scan list number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) Priority channel 1 (50% of scans): -, Sel or index # 4) Priority channel 2 (25% of scans): -, Sel or index # 5) Designated transmit channel: Last, Sel or index # 6) List of channels: numbers and ranges (N-M) separated by comma # Scanlist Name PCh1 PCh2 TxCh Channels 1 no-Gastonia - - Last 30,30-37,48,50,50-53,55-56,56-67 2 Gastonia - - Last 38-41,43,45,45-47,47 # Table of contacts. # 1) Contact number: 1-256 # 2) Name: up to 16 characters, use '_' instead of space # 3) Call type: Group, Private, All # 4) Call ID: 1...16777215 # 5) Call receive tone: -, + # Contact Name Type ID RxTone 1 Worldwide Group 1 + 2 Local_2 Group 2 + 3 Local_9 Group 9 + 4 NorAmerica Group 3 + 5 TAC_310 Group 310 + 6 TAC_311 Group 311 + 7 TAC_312 Group 312 + 8 TAC_313 Group 313 + 9 TAC_314 Group 314 + 10 TAC_315 Group 315 + 11 TAC_317 Group 317 + 12 USA3100 Group 3100 + 13 NC_State Group 3137 + 14 Triag_NC Group 31371 + # Table of group lists. # 1) Group list number: 1-64 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of contacts: numbers and ranges (N-M) separated by comma # Grouplist Name Contacts 1 Worldwide 1 2 Local_2 2 3 Local_9 3 4 NorAmerica 4 5 TAC_310 5 6 TAC_311 6 7 TAC_312 7 8 TAC_313 8 9 TAC_314 9 10 TAC_315 10 11 TAC_317 11 12 USA3100 12 13 NC_State 13 14 Triag_NC 14 # Table of text messages. # 1) Message number: 1-32 # 2) Text: up to 144 characters # Message Text 1 HELLO! # Unique DMR ID and name of this radio. ID: 1234567 Name: Your ID# # Text displayed when the radio powers up. Intro Line 1: Welcome Intro Line 2: RD-5R dmrconfig-master/examples/rd5r-v21x-Ft-Launderdale-FL.conf000066400000000000000000000224401354060760700235540ustar00rootroot00000000000000# # Configuration generated 2018/11/21 by dmrconfig, version 0.9.193 # Radio: Baofeng RD-5R Last Programmed Date: 2018-05-12 23:16 # Table of digital channels. # 1) Channel number: 1-1024 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Low # 6) Scan list: - or index in Scanlist table # 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555 # 8) Receive only: -, + # 9) Admit criteria: -, Free, Color # 10) Color code: 0, 1, 2, 3... 15 # 11) Time slot: 1 or 2 # 12) Receive group list: - or index in Grouplist table # 13) Contact for transmit: - or index in Contacts table # Digital Name Receive Transmit Power Scan TOT RO Admit Color Slot RxGL TxContact 1 dWorldwide 442.000 +5 High - - - - 8 1 1 1 # Worldwide 2 dNorAmerica 442.000 +5 High - - - - 8 1 2 2 # NorAmerica 3 dLocal_9 442.000 +5 High - - - - 8 1 3 3 # Local 9 4 dWWEnglish 442.000 +5 High - - - - 8 1 4 4 # WWEnglish 5 dTAC_310 442.000 +5 High - - - - 8 1 5 5 # TAC 310 6 dTAC_311 442.000 +5 High - - - - 8 1 6 6 # TAC 311 7 dFL_state 442.000 +5 High - - - - 8 1 7 7 # FL state 8 dSE_Region 442.000 +5 High - - - - 8 2 8 8 # SE Region 9 cWorldwide 442.4125 +5 High - - - - 7 1 1 1 # Worldwide 10 cNorAmerica 442.4125 +5 High - - - - 7 1 2 2 # NorAmerica 11 cLocal_9 442.4125 +5 High - - - - 7 1 3 3 # Local 9 12 cWWEnglish 442.4125 +5 High - - - - 7 1 4 4 # WWEnglish 13 cTAC_310 442.4125 +5 High - - - - 7 1 5 5 # TAC 310 14 cTAC_311 442.4125 +5 High - - - - 7 1 6 6 # TAC 311 15 cFL_state 442.4125 +5 High - - - - 7 1 7 7 # FL state 16 cSE_Region 442.4125 +5 High - - - - 7 2 8 8 # SE Region # Table of analog channels. # 1) Channel number: 1-1024 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Low # 6) Scan list: - or index # 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555 # 8) Receive only: -, + # 9) Admit criteria: -, Free, Tone # 10) Squelch level: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 # 11) Guard tone for receive, or '-' to disable # 12) Guard tone for transmit, or '-' to disable # 13) Bandwidth in kHz: 12.5, 20, 25 # Analog Name Receive Transmit Power Scan TOT RO Admit Squelch RxTone TxTone Width 17 K4PAL_Aventura 147.210 +0.6 High 1 - - - 3 - 103.5 25 18 K4PAL_Aventura 442.250 +5 High 1 - - - 3 - 114.8 25 19 K4PAL_Aventura 443.825 +5 High 1 - - - 3 - 114.8 25 20 WB4DT_Aventura 443.150 +5 High 1 - - - 3 - 94.8 25 21 WR4AYC_Coral_Spr 145.270 -0.6 High 1 - - - 3 - 110.9 25 22 N4RQY_Coral_Spri 146.655 -0.6 High 1 - - - 3 - 131.8 25 23 WR4AYC_Coral_Spr 443.850 +5 High 1 - - - 3 - 110.9 25 24 N2DUI_Coral_Spri 444.575 +5 High 1 - - - 3 - 131.8 25 25 W6BXQ_Dania_Beac 146.640 -0.6 High 1 - - - 3 - 103.5 25 26 KG4UGK_Dania_Bea 441.525 +5 High 1 - - - 3 - 77.0 25 27 N4RQY_Davie 443.675 +5 High 1 - - - 3 - 131.8 25 28 N4THW_Fort_Laude 146.730 -0.6 High 1 - - - 3 - 103.5 25 29 W4AB_Ft_Lauderda 146.910 -0.6 High 1 - - - 3 - 110.9 25 30 K4FK_Ft_Lauderda 147.330 +0.6 High 1 - - - 3 - 103.5 25 31 W4BUG_Ft_Lauderd 442.500 +5 High 1 - - - 3 - 110.9 25 32 N4RQY_Ft_Lauderd 442.550 +5 High 1 - - - 3 - 131.8 25 33 K4BRY_Ft_Lauderd 443.050 +5 High 1 - - - 3 - 88.5 25 34 KD4CPG_Ft_Lauder 443.800 +5 High 1 - - - 3 - 131.8 25 35 W4AB_Ft_Lauderda 444.825 +5 High 1 - - - 3 - 110.9 25 36 AC4XQ_Hollywood 145.210 -0.6 High 1 - - - 3 - 107.2 25 37 W4RCC_Hollywood 147.030 +0.6 High 1 - - - 3 - 103.5 25 38 K4ABB_Hollywood 442.900 +5 High 1 - - - 3 - 88.5 25 39 N2VNG_Hollywood 443.250 +5 High 1 - - - 3 - 88.5 25 40 AC4XQ_Hollywood 444.175 +5 High 1 - - - 3 - 107.2 25 41 WF2C_Hollywood 147.180 +0.6 High 1 - - - 3 - 91.5 25 42 WF2C_Hollywood 444.150 +5 High 1 - - - 3 - 88.5 25 43 KA4EPS_Margate 444.025 +5 High 1 - - - 3 - 107.2 25 44 N2YAG_Miramar 444.100 +5 High 1 - - - 3 - 103.5 25 45 KC4MND_North_Mia 147.135 +0.6 High 1 - - - 3 - 127.3 25 46 K4PAL_North_Miam 147.375 +0.6 High 1 - - - 3 - 118.8 25 47 K2HXC_Pembroke_P 441.900 +5 High 2 - - - 3 - 110.9 25 48 KP4BM_Pembroke_P 444.750 +5 High 2 - - - 3 - 88.5 25 49 N4RQY_Plantation 147.210 +0.6 High 2 - - - 3 - 131.8 25 50 N4RQY_Plantation 443.200 +5 High 2 - - - 3 - 88.5 25 51 W4BUG_Pompano_Be 146.610 -0.6 High 2 - - - 3 - 110.9 25 52 W4BUG_Pompano_Be 444.500 +5 High 2 - - - 3 - 151.4 25 53 W4NVU_Princeton 147.000 -0.6 High 2 - - - 3 - 94.8 25 54 N4LJQ_Sunny_Isla 442.950 +5 High 2 - - - 3 - 127.3 25 55 W4RCC_Sunshine_R 442.575 +5 High 2 - - - 3 - 103.5 25 56 2M_SIM1 146.520 +0 High - - - - 3 - - 25 57 2M_SIM2 146.550 +0 High - - - - 3 - - 25 58 2M_SIM3 146.580 +0 High - - - - 3 - - 25 59 70C_SM1 446.000 +0 High - - - - 3 - - 25 60 70C_SM2 446.125 +0 High - - - - 3 - - 25 # Table of channel zones. # 1) Zone number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of channels: numbers and ranges (N-M) separated by comma # Zone Name Channels 1 N4DES_Boca_Raton 1-8 2 WC3C_Boynton_Bea 9-16 3 Analog_A-E 19,19,19-20,22-23,23-27 4 Analog_F-L 28,30-35,35,37-40,40,42,42 5 Analog_M-Z 43-48,50,50,52,52-55 6 Simplex 56-60 # Table of scan lists. # 1) Scan list number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) Priority channel 1 (50% of scans): -, Sel or index # 4) Priority channel 2 (25% of scans): -, Sel or index # 5) Designated transmit channel: Last, Sel or index # 6) List of channels: numbers and ranges (N-M) separated by comma # Scanlist Name PCh1 PCh2 TxCh Channels 1 Scan1 - - Sel 19,19,19-20,22-23,23-28,30-35,35,37-40,40,42,42-46 2 Scan2 - - Sel 47-48,50,50,52,52-55 # Table of contacts. # 1) Contact number: 1-256 # 2) Name: up to 16 characters, use '_' instead of space # 3) Call type: Group, Private, All # 4) Call ID: 1...16777215 # 5) Call receive tone: -, + # Contact Name Type ID RxTone 1 Worldwide Group 1 + 2 NorAmerica Group 3 + 3 Local_9 Group 9 + 4 WWEnglish Group 13 + 5 TAC_310 Group 310 + 6 TAC_311 Group 311 + 7 FL_state Group 3112 + 8 SE_Region Group 3174 + # Table of group lists. # 1) Group list number: 1-64 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of contacts: numbers and ranges (N-M) separated by comma # Grouplist Name Contacts 1 Worldwide 1 2 NorAmerica 2 3 Local_9 3 4 WWEnglish 4 5 TAC_310 5 6 TAC_311 6 7 FL_state 7 8 SE_Region 8 # Table of text messages. # 1) Message number: 1-32 # 2) Text: up to 144 characters # Message Text 1 HELLO! # Unique DMR ID and name of this radio. ID: 1234567 Name: Your ID# # Text displayed when the radio powers up. Intro Line 1: Welcome Intro Line 2: RD-5R dmrconfig-master/examples/rd5r-v21x-Los-Angeles-CA.conf000066400000000000000000000237011354060760700230610ustar00rootroot00000000000000# # Configuration generated 2018/11/21 by dmrconfig, version 0.9.193 # Radio: Baofeng RD-5R Last Programmed Date: 2018-07-05 16:02 # Table of digital channels. # 1) Channel number: 1-1024 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Low # 6) Scan list: - or index in Scanlist table # 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555 # 8) Receive only: -, + # 9) Admit criteria: -, Free, Color # 10) Color code: 0, 1, 2, 3... 15 # 11) Time slot: 1 or 2 # 12) Receive group list: - or index in Grouplist table # 13) Contact for transmit: - or index in Contacts table # Digital Name Receive Transmit Power Scan TOT RO Admit Color Slot RxGL TxContact 1 g_CA_3106 449.380 -5 High 5 - - - 1 1 2 14 # Calif 3106 2 g_Local_2 449.380 -5 High 5 - - - 1 2 1 2 # Local 2 3 g_N.Amer93 449.380 -5 High 5 - - - 1 1 3 6 # N.Amer 93 BM 4 g_TAC_310 449.380 -5 High 5 - - - 1 1 3 9 # TAC 310 5 g_TAC_311 449.380 -5 High 5 - - - 1 1 3 10 # TAC 311 6 g_TAC_312 449.380 -5 High 5 - - - 1 1 3 11 # TAC 312 7 g_TAC_313 449.380 -5 High 5 - - - 1 1 3 12 # TAC 313 8 g31067sCA1 449.380 -5 High 5 - - - 1 2 1 22 # SoCal-1 31067 9 gCA1_31061 449.380 -5 High 5 - - - 1 1 2 17 # Calif-1 31061 10 gNatwd3100 449.360 -5 High 5 - - - 1 1 3 13 # Nationwide 3100 11 gNoCA31065 449.360 -5 High 5 - - - 1 2 2 20 # NoCA31065AllStar 12 gSoCA31066 449.360 -5 High 5 - - - 1 2 1 21 # SoCal 31066 13 gWorldwd91 449.360 -5 High 5 - - - 1 1 3 5 # Worldwide 91 BM 14 j_CA_3106 447.900 -5 High 3 - - - 1 1 2 14 # Calif 3106 15 j_Local_2 447.900 -5 High 3 - - - 1 2 1 2 # Local 2 16 j_SW_3176 447.900 -5 High 3 - - - 1 1 2 15 # SW Region 3176CB 17 j_TAC_310 447.900 -5 High 3 - - - 1 1 3 9 # TAC 310 18 jCA1_31061 447.900 -5 High 3 - - - 1 1 2 17 # Calif-1 31061 19 jNatwd3100 447.900 -5 High 3 - - - 1 1 3 13 # Nationwide 3100 20 jSoCA31066 447.900 -5 High 3 - - - 1 1 1 21 # SoCal 31066 21 jSW1_31761 447.900 -5 High 3 - - - 1 1 2 28 # SW-1 31761 CB 22 jWW_Eng_13 447.900 -5 High 3 - - - 1 1 3 4 # WW Eng 13 CB 23 s_CA_3106 449.360 -5 High 4 - - - 1 1 2 14 # Calif 3106 24 s_Local_2 449.360 -5 High 4 - - - 1 2 1 2 # Local 2 25 s_N.Amer93 449.360 -5 High 4 - - - 1 1 3 6 # N.Amer 93 BM 26 s_TAC_310 449.360 -5 High 4 - - - 1 1 3 9 # TAC 310 27 s_TAC_311 449.360 -5 High 4 - - - 1 1 3 10 # TAC 311 28 s_TAC_312 449.360 -5 High 4 - - - 1 1 3 11 # TAC 312 29 s_TAC_313 449.360 -5 High 4 - - - 1 1 3 12 # TAC 313 30 s31067sCA1 449.360 -5 High 4 - - - 1 2 1 22 # SoCal-1 31067 31 sCA1_31061 449.360 -5 High 4 - - - 1 1 2 17 # Calif-1 31061 32 sNatwd3100 449.360 -5 High 4 - - - 1 1 3 13 # Nationwide 3100 33 sNoCA31065 449.360 -5 High 4 - - - 1 2 2 20 # NoCA31065AllStar 34 sSoCA31066 449.360 -5 High 4 - - - 1 2 1 21 # SoCal 31066 35 sWorldwd91 449.360 -5 High 4 - - - 1 1 3 5 # Worldwide 91 BM # Table of analog channels. # 1) Channel number: 1-1024 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Low # 6) Scan list: - or index # 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555 # 8) Receive only: -, + # 9) Admit criteria: -, Free, Tone # 10) Squelch level: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 # 11) Guard tone for receive, or '-' to disable # 12) Guard tone for transmit, or '-' to disable # 13) Bandwidth in kHz: 12.5, 20, 25 # Analog Name Receive Transmit Power Scan TOT RO Admit Squelch RxTone TxTone Width 36 AA6DP 147.090 +0.6 High 1 - - - 3 - 79.7 25 37 KE6UPA 146.655 -0.6 High 1 - - - 3 - 114.8 25 38 KNOTTS 445.520 -5 High 1 - - - 3 - 85.4 25 39 N6AH 145.200 -0.6 High 1 - - - 3 - 103.5 25 40 N6ME 145.400 -0.6 High 1 - - - 3 - 103.5 25 41 W6FNO 146.820 -0.6 High 1 - - - 3 - 88.5 25 42 W6GNS 146.175 +0.6 High 1 - - - 3 - 156.7 25 43 W6GNS 445.560 -5 High 1 - - - 3 - 100.0 25 44 W6JBT 146.850 -0.6 High 1 - - - 3 - 146.2 25 45 W6MPH 145.180 -0.6 High 1 - - - 3 - 156.7 25 46 W6NVY 449.700 -5 High 1 - - - 3 - 131.8 25 47 W6QFK 147.765 -0.6 High 1 - - - 3 - 131.8 25 48 W6TOI 445.640 -5 High 1 - - - 3 - 156.7 25 49 WA6IGJ 445.300 -5 High 1 - - - 3 - 88.5 25 50 WR6JPL 147.150 +0.6 High 1 - - - 3 - 103.5 25 51 WR6JPL 445.200 -5 High 1 - - - 3 - 103.5 25 52 2M_SIM1 146.520 +0 High 2 - - - 3 - - 25 53 2M_SIM2 146.550 +0 High 2 - - - 3 - - 25 54 2M_SIM3 146.580 +0 High 2 - - - 3 - - 25 55 70C_SM1 446.000 +0 High 2 - - - 3 - - 25 56 70C_SM2 446.125 +0 High 2 - - - 3 - - 25 # Table of channel zones. # 1) Zone number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of channels: numbers and ranges (N-M) separated by comma # Zone Name Channels 1 PAPA_Glendale 1-13 2 PAPA_Sunset 23-35 3 JohnstoneWD6AML 14-22 4 Analog-1 36-41,43,43-49,51,51 5 Simplex 52-56 # Table of scan lists. # 1) Scan list number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) Priority channel 1 (50% of scans): -, Sel or index # 4) Priority channel 2 (25% of scans): -, Sel or index # 5) Designated transmit channel: Last, Sel or index # 6) List of channels: numbers and ranges (N-M) separated by comma # Scanlist Name PCh1 PCh2 TxCh Channels 1 Scan1 - - Last 36-41,43,43-49,51,51 2 Simplex_Wide - - Last 52-56 3 Johnstone_Scan - - Last 14-22 4 Sunset_Scan - - Last 23-30,32-35 5 Glendale_Scan - - Last 1-8,10-13 # Table of contacts. # 1) Contact number: 1-256 # 2) Name: up to 16 characters, use '_' instead of space # 3) Call type: Group, Private, All # 4) Call ID: 1...16777215 # 5) Call receive tone: -, + # Contact Name Type ID RxTone 1 Worldwide_1_CB Group 1 - 2 Local_2 Group 2 - 3 N.Ameri_3_CB Group 3 - 4 WW_Eng_13_CB Group 13 - 5 Worldwide_91_BM Group 91 - 6 N.Amer_93_BM Group 93 - 7 Engl-1_113_CB Group 113 - 8 Engl-2_123_CB Group 123 - 9 TAC_310 Group 310 - 10 TAC_311 Group 311 - 11 TAC_312 Group 312 - 12 TAC_313 Group 313 - 13 Nationwide_3100 Group 3100 - 14 Calif_3106 Group 3106 - 15 SW_Region_3176CB Group 3176 - 16 EMCOM Group 9911 - 17 Calif-1_31061 Group 31061 - 18 Mt_West_31062 Group 31062 - 19 Mt_West1_31063 Group 31063 - 20 NoCA31065AllStar Group 31065 - 21 SoCal_31066 Group 31066 - 22 SoCal-1_31067 Group 31067 - 23 NorCal_31068 Group 31068 - 24 BayNet_31075 Group 31075 - 25 CDM_31076 Group 31076 - 26 PAPA_31077 Group 31077 - 27 Zone_6_31096 Group 31096 - 28 SW-1_31761_CB Group 31761 - # Table of group lists. # 1) Group list number: 1-64 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of contacts: numbers and ranges (N-M) separated by comma # Grouplist Name Contacts 1 SoCal_Local 2,21-22,26 2 SW+Calif 2,14-15,17-28 3 All_English 1,3-9,13-14,16,18-19,27-28 # Table of text messages. # 1) Message number: 1-32 # 2) Text: up to 144 characters # Message Text 1 HELLO! # Unique DMR ID and name of this radio. ID: 1234567 Name: Your ID# # Text displayed when the radio powers up. Intro Line 1: Welcome Intro Line 2: RD-5R dmrconfig-master/examples/rd5r-v21x-Tampa-FL.conf000066400000000000000000000170161354060760700220320ustar00rootroot00000000000000# # Configuration generated 2018/11/21 by dmrconfig, version 0.9.193 # Radio: Baofeng RD-5R Last Programmed Date: 2018-05-12 23:16 # Table of digital channels. # 1) Channel number: 1-1024 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Low # 6) Scan list: - or index in Scanlist table # 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555 # 8) Receive only: -, + # 9) Admit criteria: -, Free, Color # 10) Color code: 0, 1, 2, 3... 15 # 11) Time slot: 1 or 2 # 12) Receive group list: - or index in Grouplist table # 13) Contact for transmit: - or index in Contacts table # Digital Name Receive Transmit Power Scan TOT RO Admit Color Slot RxGL TxContact 1 vFirst_Coast 145.410 -0.6 High - - - - 5 2 1 1 # First Coast 2 vNorAmerica 145.410 -0.6 High - - - - 5 1 2 2 # NorAmerica 3 vLocal_9 145.410 -0.6 High - - - - 5 2 3 3 # Local 9 4 vTAC_310 145.410 -0.6 High - - - - 5 1 4 4 # TAC 310 5 vTAC_311 145.410 -0.6 High - - - - 5 1 5 5 # TAC 311 6 vFL_state 145.410 -0.6 High - - - - 5 2 6 6 # FL state 7 uFirst_Coast 443.775 +5 High - - - - 1 2 1 1 # First Coast 8 uNorAmerica 443.775 +5 High - - - - 1 1 2 2 # NorAmerica 9 uLocal_9 443.775 +5 High - - - - 1 2 3 3 # Local 9 10 uTAC_310 443.775 +5 High - - - - 1 1 4 4 # TAC 310 11 uTAC_311 443.775 +5 High - - - - 1 1 5 5 # TAC 311 12 uFL_state 443.775 +5 High - - - - 1 2 6 6 # FL state 13 aFirst_Coast 443.600 +5 High - - - - 1 2 1 1 # First Coast 14 aNorAmerica 443.600 +5 High - - - - 1 1 2 2 # NorAmerica 15 aLocal_9 443.600 +5 High - - - - 1 2 3 3 # Local 9 16 aTAC_310 443.600 +5 High - - - - 1 1 4 4 # TAC 310 17 aTAC_311 443.600 +5 High - - - - 1 1 5 5 # TAC 311 18 aFL_state 443.600 +5 High - - - - 1 2 6 6 # FL state # Table of analog channels. # 1) Channel number: 1-1024 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Low # 6) Scan list: - or index # 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555 # 8) Receive only: -, + # 9) Admit criteria: -, Free, Tone # 10) Squelch level: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 # 11) Guard tone for receive, or '-' to disable # 12) Guard tone for transmit, or '-' to disable # 13) Bandwidth in kHz: 12.5, 20, 25 # Analog Name Receive Transmit Power Scan TOT RO Admit Squelch RxTone TxTone Width 19 K4TN_Brandon 147.165 +0.6 High 1 - - - 3 - 136.5 25 20 W4HSO_Brandon 146.610 -0.6 High 1 - - - 3 - 141.3 25 21 W4RNT_Brandon 443.675 +5 High 1 - - - 3 - 146.2 25 22 NI4CE_Riverview 442.550 +5 High 1 - - - 3 - 100.0 25 23 NI4CE_Riverview 444.425 +5 High 1 - - - 3 - 88.5 25 24 W4EFK_Tampa 145.490 -0.6 High 1 - - - 3 - 88.5 25 25 KC4LSQ_Tampa 146.835 -0.6 High 1 - - - 3 - 131.8 25 26 W4AQR_Tampa 444.675 +5 High 1 - - - 3 - 103.5 25 27 KD4HVC_Tampa 147.240 +0.6 High 1 - - - 3 - 88.5 25 28 KP4PC_Tampa 443.350 +5 High 1 - - - 3 - 127.3 25 29 W4EFK_Tampa 444.600 +5 High 1 - - - 3 - 88.5 25 30 W3YT_Tampa 146.865 -0.6 High 1 - - - 3 - 123.0 25 31 W4RNT_Tampa 442.725 +5 High 1 - - - 3 - 146.2 25 32 W4RNT_Tampa 444.250 +5 High 1 - - - 3 - 146.2 25 33 W4BCI_Tampa 146.790 -0.6 High 1 - - - 3 - 146.2 25 34 N4TP_Tampa 147.105 +0.6 High 1 - - - 3 - 146.2 25 35 KK4AFB_Tampa 147.345 +0.6 High 1 - - - 3 - 146.2 25 36 N4TP_Tampa 443.025 +5 High 1 - - - 3 - 146.2 25 37 W4BCI_Tampa 444.225 +5 High 1 - - - 3 - 146.2 25 38 KB4ABE_Tampa 444.525 +5 High 1 - - - 3 - 141.3 25 39 2M_SIM1 146.520 +0 High - - - - 3 - - 25 40 2M_SIM2 146.550 +0 High - - - - 3 - - 25 41 2M_SIM3 146.580 +0 High - - - - 3 - - 25 42 70C_SM1 446.000 +0 High - - - - 3 - - 25 43 70C_SM2 446.125 +0 High - - - - 3 - - 25 # Table of channel zones. # 1) Zone number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of channels: numbers and ranges (N-M) separated by comma # Zone Name Channels 1 W4CLL_VHF 1-6 2 W4CLL_UHF 7-12 3 KJ4SHL_Airport 13-18 4 Analog_Tampa 25-29,29-30,32,32,35-36,36-37,37-38 5 Analog_non-Tampa 19-21,23,23 6 Simplex 39-43 # Table of scan lists. # 1) Scan list number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) Priority channel 1 (50% of scans): -, Sel or index # 4) Priority channel 2 (25% of scans): -, Sel or index # 5) Designated transmit channel: Last, Sel or index # 6) List of channels: numbers and ranges (N-M) separated by comma # Scanlist Name PCh1 PCh2 TxCh Channels 1 Scan1 - - Sel 19-21,23,23,25-29,29-30,32,32,35-36,36-37,37-38 # Table of contacts. # 1) Contact number: 1-256 # 2) Name: up to 16 characters, use '_' instead of space # 3) Call type: Group, Private, All # 4) Call ID: 1...16777215 # 5) Call receive tone: -, + # Contact Name Type ID RxTone 1 First_Coast Group 2 + 2 NorAmerica Group 3 + 3 Local_9 Group 9 + 4 TAC_310 Group 310 + 5 TAC_311 Group 311 + 6 FL_state Group 3112 + # Table of group lists. # 1) Group list number: 1-64 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of contacts: numbers and ranges (N-M) separated by comma # Grouplist Name Contacts 1 First_Coast 1 2 NorAmerica 2 3 Local_9 3 4 TAC_310 4 5 TAC_311 5 6 FL_state 6 # Table of text messages. # 1) Message number: 1-32 # 2) Text: up to 144 characters # Message Text 1 HELLO! # Unique DMR ID and name of this radio. ID: 1234567 Name: Your ID# # Text displayed when the radio powers up. Intro Line 1: Welcome Intro Line 2: RD-5R dmrconfig-master/examples/uv380-south-bay-area.conf000066400000000000000000000535721354060760700225340ustar00rootroot00000000000000# # Generic DMR configuration for South Bay Area. # # Schedules (PDT): # Monday 8-10 pm: PAPA DMR Roundtable, California (3106/TS1) # Tuesday 8-9 pm: SNARS DMR Net (31328/TS1) # Wednesday 5:30-6:30 pm: Texas Statewide Net (3148/TS1) # Thursday 7-7:30 pm: NorCal DMR Net (31068/TS2) # Thursday 8-10 pm: PAPA Tech Roundtable, XRF012A, analog&D-STAR (31078/TS1) # Saturday 9-11 am: Worldwide Net (91/TS1) # Radio: TYT MD-UV380 # Table of digital channels. # 1) Channel number: 1-1000 # 2) Name: up to 16 characters, use '_' instead of space # 3) Receive frequency in MHz # 4) Transmit frequency or +/- offset in MHz # 5) Transmit power: High, Low # 6) Scan list: - or index in Scanlist table # 7) Autoscan flag: -, + # 8) Transmit timeout timer in seconds: 0, 15, 30, 45... 555 # 9) Receive only: -, + # 10) Admit criteria: -, Free, Color # 11) Color code: 1, 2, 3... 15 # 12) Time slot: 1 or 2 # 13) In call criteria: -, Admit, TXInt # 14) Receive group list: - or index in Grouplist table # 15) Contact for transmit: - or index in Contacts table # Digital Name Receive Transmit Power Scan TOT RO Admit Color Slot RxGL TxContact # (1) W6TCP, Milpitas, NorCal 101 ts1_Wide 440.125 +5 High 1 180 + Color 3 1 1 - # RX Only timeslot 1 102 California 440.125 +5 High 1 180 - Color 3 1 1 3106 # 3106 California Static 103 TAC_310 440.125 +5 High 1 180 - Color 3 1 1 310 # 310 TAC 310 Dynamic 104 Bay-Net 440.125 +5 High 1 180 - Color 3 1 1 1075 # 31075 Bay-Net Dynamic 105 World 440.125 +5 High 1 180 - Color 3 1 1 91 # 91 Worldwide Dynamic 151 ts2_Local 440.125 +5 High 1 180 + Color 3 2 2 - # RX Only timeslot 2 152 NorCal 440.125 +5 High 1 180 - Color 3 2 2 1068 # 31068 NorCal Static 153 Anarchy 440.125 +5 High 1 180 - Color 3 2 2 1666 # 31666 DMR of Anarchy Static 154 NC_5150 440.125 +5 High 1 180 - Color 3 2 2 5150 # 95150 NorCal 5150 Static 155 Parrot 440.125 +5 High 1 180 - Color 3 2 2 9990 # 9990 Parrot Private # (2) N6AMG, San Bruno, Baycom 201 ts1_Wide 440.500 +5 High 1 180 + Color 1 1 1 - # RX Only timeslot 1 202 North_America 440.500 +5 High 1 180 - Color 1 1 1 93 # 93 North America Static 203 California 440.500 +5 High 1 180 - Color 1 1 1 3106 # 3106 California Static 204 NC_AllStr 440.500 +5 High 1 180 - Color 1 1 1 1065 # 31065 NorCal AllStar Static 205 Bay-Net 440.500 +5 High 1 180 - Color 1 1 1 1075 # 31075 Bay-Net Static 206 USA_Area6 440.500 +5 High 1 180 - Color 1 1 1 1096 # 31096 USA Area 6 Static 207 TAC_310 440.500 +5 High 1 180 - Color 1 1 1 310 # 310 TAC 310 Dynamic 208 World 440.500 +5 High 1 180 - Color 1 1 1 91 # 91 Worldwide Dynamic 251 ts2_Local 440.500 +5 High 1 180 + Color 1 2 2 - # RX Only timeslot 2 252 Baycom 440.500 +5 High 1 180 - Color 1 2 2 7150 # 97150 Baycom Static 253 NorCal 440.500 +5 High 1 180 - Color 1 2 2 1068 # 31068 NorCal Dynamic 254 Anarchy 440.500 +5 High 1 180 - Color 1 2 2 1666 # 31666 DMR of Anarchy Dynamic 255 NC_5150 440.500 +5 High 1 180 - Color 1 2 2 5150 # 95150 NorCal 5150 Dynamic 256 Parrot 440.500 +5 High 1 180 - Color 1 2 2 9990 # 9990 Parrot Private # (3) WB6ECE, Boulder Creek, Baycom 301 ts1_Wide 440.5875 +5 High 1 180 + Color 2 1 1 - # RX Only timeslot 1 302 North_America 440.5875 +5 High 1 180 - Color 2 1 1 93 # 93 North America Static 303 California 440.5875 +5 High 1 180 - Color 2 1 1 3106 # 3106 California Static 304 Santa_Clara 440.5875 +5 High 1 180 - Color 2 1 1 1064 # 31064 Santa Clara County Static 305 NC_AllStr 440.5875 +5 High 1 180 - Color 2 1 1 1065 # 31065 NorCal AllStar Static 306 Bay-Net 440.5875 +5 High 1 180 - Color 2 1 1 1075 # 31075 Bay-Net Static 307 USA_Area6 440.5875 +5 High 1 180 - Color 2 1 1 1096 # 31096 USA Area 6 Static 308 TAC_310 440.5875 +5 High 1 180 - Color 2 1 1 310 # 310 TAC 310 Dynamic 309 World 440.5875 +5 High 1 180 - Color 2 1 1 91 # 91 Worldwide Dynamic 351 ts2_Local 440.5875 +5 High 1 180 + Color 2 2 2 - # RX Only timeslot 2 352 Baycom 440.5875 +5 High 1 180 - Color 2 2 2 7150 # 97150 Baycom Static 353 NorCal 440.5875 +5 High 1 180 - Color 2 2 2 1068 # 31068 NorCal Dynamic 354 Anarchy 440.5875 +5 High 1 180 - Color 2 2 2 1666 # 31666 DMR of Anarchy Dynamic 355 NC_5150 440.5875 +5 High 1 180 - Color 2 2 2 5150 # 95150 NorCal 5150 Dynamic 356 Parrot 440.5875 +5 High 1 180 - Color 2 2 2 9990 # 9990 Parrot Private # (4) K6OTR, Palo Alto, Baycom 401 ts1_Wide 441.850 +5 High 1 180 + Color 1 1 1 - # RX Only timeslot 1 402 North_America 441.850 +5 High 1 180 - Color 1 1 1 93 # 93 North America Static 403 California 441.850 +5 High 1 180 - Color 1 1 1 3106 # 3106 California Static 404 NC_AllStr 441.850 +5 High 1 180 - Color 1 1 1 1065 # 31065 NorCal AllStar Static 405 Bay-Net 441.850 +5 High 1 180 - Color 1 1 1 1075 # 31075 Bay-Net Static 406 USA_Area6 441.850 +5 High 1 180 - Color 1 1 1 1096 # 31096 USA - Area 6 4646 Static 407 TAC_310 441.850 +5 High 1 180 - Color 1 1 1 310 # 310 TAC 310 Dynamic 408 World 441.850 +5 High 1 180 - Color 1 1 1 91 # 91 Worldwide Dynamic 451 ts2_Local 441.850 +5 High 1 180 + Color 1 2 2 - # RX Only timeslot 2 452 Baycom 441.850 +5 High 1 180 - Color 1 2 2 7150 # 97150 Baycom Static 453 NorCal 441.850 +5 High 1 180 - Color 1 2 2 1068 # 31068 NorCal Dynamic 454 Anarchy 441.850 +5 High 1 180 - Color 1 2 2 1666 # 31666 DMR of Anarchy Dynamic 455 NC_5150 441.850 +5 High 1 180 - Color 1 2 2 5150 # 95150 NorCal 5150 Dynamic 456 Parrot 441.850 +5 High 1 180 - Color 1 2 2 9990 # 9990 Parrot Private # (5) KK6USZ, Saratoga 501 ts1_Wide 441.950 +5 High 1 180 + Color 1 1 1 - # RX Only timeslot 1 502 Nebraska 441.950 +5 High 1 180 - Color 1 1 1 3131 # 3131 Nebraska Static 503 World 441.950 +5 High 1 180 - Color 1 1 1 91 # 91 Worldwide Dynamic 504 California 441.950 +5 High 1 180 - Color 1 1 1 3106 # 3106 California Dynamic 505 Texas 441.950 +5 High 1 180 - Color 1 1 1 3148 # 3148 Texas Dynamic 506 PAPA 441.950 +5 High 1 180 - Color 1 1 1 1078 # 31078 XLX013D PAPA Dynamic 507 TAC_310 441.950 +5 High 1 180 - Color 1 1 1 310 # 310 TAC 310 Dynamic 551 ts2_Local 441.950 +5 High 1 180 + Color 1 2 2 - # RX Only timeslot 2 552 Santa_Clara 441.950 +5 High 1 180 - Color 1 2 2 1064 # 31064 Santa Clara County Static 553 NorCal 441.950 +5 High 1 180 - Color 1 2 2 1068 # 31068 NorCal Static 554 Bay-Net 441.950 +5 High 1 180 - Color 1 2 2 1075 # 31075 Bay-Net Static 555 Baycom 441.950 +5 High 1 180 - Color 1 2 2 7150 # 97150 Baycom Static 556 Clst_KK6USZ 441.950 +5 High 1 180 - Color 1 2 2 670 # 110670 Cluster KK6USZ Static 557 Anarchy 441.950 +5 High 1 180 - Color 1 2 2 1666 # 31666 DMR of Anarchy Dynamic 558 NC_5150 441.950 +5 High 1 180 - Color 1 2 2 5150 # 95150 NorCal 5150 Dynamic 559 Parrot 441.950 +5 High 1 180 - Color 1 2 2 9990 # 9990 Parrot Private # (6) WA6YCZ, Mt Umunhum, Baycom 601 ts1_Wide 442.5375 +5 High 1 180 + Color 1 1 1 - # RX Only timeslot 1 602 North_America 442.5375 +5 High 1 180 - Color 1 1 1 93 # 93 North America Static 603 California 442.5375 +5 High 1 180 - Color 1 1 1 3106 # 3106 California Static 604 Santa_Clara 442.5375 +5 High 1 180 - Color 1 1 1 1064 # 31064 Santa Clara County Static 605 NC_AllStr 442.5375 +5 High 1 180 - Color 1 1 1 1065 # 31065 NorCal AllStar Static 606 Bay-Net 442.5375 +5 High 1 180 - Color 1 1 1 1075 # 31075 Bay-Net Static 607 USA_Area6 442.5375 +5 High 1 180 - Color 1 1 1 1096 # 31096 USA Area 6 Static 608 TAC_310 442.5375 +5 High 1 180 - Color 1 1 1 310 # 310 TAC 310 Dynamic 609 World 442.5375 +5 High 1 180 - Color 1 1 1 91 # 91 Worldwide Dynamic 651 ts2_Local 442.5375 +5 High 1 180 + Color 1 2 2 - # RX Only timeslot 2 652 Baycom 442.5375 +5 High 1 180 - Color 1 2 2 7150 # 97150 Baycom Static 653 NorCal 442.5375 +5 High 1 180 - Color 1 2 2 1068 # 31068 NorCal Dynamic 654 Anarchy 442.5375 +5 High 1 180 - Color 1 2 2 1666 # 31666 DMR of Anarchy Dynamic 655 NC_5150 442.5375 +5 High 1 180 - Color 1 2 2 5150 # 95150 NorCal 5150 Dynamic 656 Parrot 442.5375 +5 High 1 180 - Color 1 2 2 9990 # 9990 Parrot Private # (7) K6LNK, Berkeley, NorCal, Carla 701 ts1_Wide 443.500 +5 High 1 180 + Color 1 1 1 - # RX Only timeslot 1 702 California 443.500 +5 High 1 180 - Color 1 1 1 3106 # 3106 California Static 703 KPARN 443.500 +5 High 1 180 - Color 1 1 1 1072 # 31072 KPARN Static 704 SNARS 443.500 +5 High 1 180 - Color 1 1 1 1328 # 31328 SNARS (Reno/Tahoe) Static 705 SNARS_2 443.500 +5 High 1 180 - Color 1 1 1 1329 # 31329 SNARS 2 Static 706 Clst_K6LNK 443.500 +5 High 1 180 - Color 1 1 1 23 # 23 Cluster K6LNK Static 707 TAC_310 443.500 +5 High 1 180 - Color 1 1 1 310 # 310 TAC 310 Dynamic 708 Bay-Net 443.500 +5 High 1 180 - Color 1 1 1 1075 # 31075 Bay-Net Dynamic 709 World 443.500 +5 High 1 180 - Color 1 1 1 91 # 91 Worldwide Dynamic 751 ts2_Local 443.500 +5 High 1 180 + Color 1 2 2 - # RX Only timeslot 2 752 NorCal 443.500 +5 High 1 180 - Color 1 2 2 1068 # 31068 NorCal Static 753 CARLA 443.500 +5 High 1 180 - Color 1 2 2 604 # 310604 CARLA Static 754 Tri-LERT 443.500 +5 High 1 180 - Color 1 2 2 703 # 310703 Tri-LERT Static 755 Clst_CARLA 443.500 +5 High 1 180 - Color 1 2 2 21 # 21 Cluster CARLA Static 756 Anarchy 443.500 +5 High 1 180 - Color 1 2 2 1666 # 31666 DMR of Anarchy Dynamic 757 NC_5150 443.500 +5 High 1 180 - Color 1 2 2 5150 # 95150 NorCal 5150 Dynamic 758 Parrot 443.500 +5 High 1 180 - Color 1 2 2 9990 # 9990 Parrot Private # (8) K6HLE, Loma Prieta, NorCal, AREA 801 ts1_Wide 444.025 +5 High 1 180 + Color 1 1 1 - # RX Only timeslot 1 802 North_America 444.025 +5 High 1 180 - Color 1 1 1 93 # 93 North America Static 803 California 444.025 +5 High 1 180 - Color 1 1 1 3106 # 3106 California Static 804 USA_Area_6 444.025 +5 High 1 180 - Color 1 1 1 1096 # 31096 USA - Area 6 4646 Static 805 TAC_310 444.025 +5 High 1 180 - Color 1 1 1 310 # 310 TAC 310 Dynamic 806 Bay-Net 444.025 +5 High 1 180 - Color 1 1 1 1075 # 31075 Bay-Net Dynamic 807 World 444.025 +5 High 1 180 - Color 1 1 1 91 # 91 Worldwide Dynamic 851 ts2_Local 444.025 +5 High 1 180 + Color 1 2 2 - # RX Only timeslot 2 852 NorCal 444.025 +5 High 1 180 - Color 1 2 2 1068 # 31068 NorCal Static 853 Anarchy 444.025 +5 High 1 180 - Color 1 2 2 1666 # 31666 DMR of Anarchy Dynamic 854 NC_5150 444.025 +5 High 1 180 - Color 1 2 2 5150 # 95150 NorCal 5150 Dynamic 855 Parrot 444.025 +5 High 1 180 - Color 1 2 2 9990 # 9990 Parrot Private # (9) WW6BAY, Palo Alto, Bay-Net 901 ts1_Wide 444.350 +5 High 1 180 + Color 1 1 1 - # RX Only timeslot 1 902 Santa_Clara 444.350 +5 High 1 180 - Color 1 1 1 1064 # 31064 Santa Clara County Static 903 TAC_310 444.350 +5 High 1 180 - Color 1 1 1 310 # 310 TAC 310 Dynamic 904 World 444.350 +5 High 1 180 - Color 1 1 1 91 # 91 Worldwide Dynamic 951 ts2_Local 444.350 +5 High 1 180 + Color 1 2 2 - # RX Only timeslot 2 952 Bay-Net 444.350 +5 High 1 180 - Color 1 2 2 1075 # 31075 Bay-Net Static 953 NorCal 444.350 +5 High 1 180 - Color 1 2 2 1068 # 31068 NorCal Dynamic 954 Anarchy 444.350 +5 High 1 180 - Color 1 2 2 1666 # 31666 DMR of Anarchy Dynamic 955 NC_5150 444.350 +5 High 1 180 - Color 1 2 2 5150 # 95150 NorCal 5150 Dynamic 956 Parrot 444.350 +5 High 1 180 - Color 1 2 2 9990 # 9990 Parrot Private # (10) W6OTX, Alum Rock, NorCal, PAARA 1001 ts1_Wide 444.475 +5 High 1 180 + Color 1 1 1 - # RX Only timeslot 1 1002 California 444.475 +5 High 1 180 - Color 1 1 1 3106 # 3106 California Static 1003 TAC_310 444.475 +5 High 1 180 - Color 1 1 1 310 # 310 TAC 310 Dynamic 1004 Bay-Net 444.475 +5 High 1 180 - Color 1 1 1 1075 # 31075 Bay-Net Dynamic 1005 World 444.475 +5 High 1 180 - Color 1 1 1 91 # 91 Worldwide Dynamic 1051 ts2_Local 444.475 +5 High 1 180 + Color 1 2 2 - # RX Only timeslot 2 1052 NorCal 444.475 +5 High 1 180 - Color 1 2 2 1068 # 31068 NorCal Static 1053 Anarchy 444.475 +5 High 1 180 - Color 1 2 2 1666 # 31666 DMR of Anarchy Dynamic 1054 NC_5150 444.475 +5 High 1 180 - Color 1 2 2 5150 # 95150 NorCal 5150 Dynamic 1055 Parrot 444.475 +5 High 1 180 - Color 1 2 2 9990 # 9990 Parrot Private # # Table of channel zones. # 1) Zone number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of channels: numbers and ranges (N-M) separated by comma # Zone Name Channels 1a Milpitas 101-105 # 440.125 W6TCP 1b - 151-155 2a San_Bruno 201-208 # 440.500 N6AMG 2b - 251-256 3a Boulder_Creek 301-309 # 440.5875 WB6ECE 3b - 351-356 4a Palo_Alto 401-408 # 441.850 K6OTR 4b - 451-456 5a Saratoga 501-507 # 441.950 KK6USZ 5b - 551-559 6a Mt_Umunhum 601-609 # 442.5375 WA6YCZ 6b - 651-656 7a Berkeley 701-709 # 443.500 K6LNK 7b - 751-758 8a Loma_Prieta 801-807 # 444.025 K6HLE 8b - 851-855 9a Baynet_Palo_Alto 901-904 # 444.350 WW6BAY 9b - 951-956 10a Alum_Rock 1001-1005 # 444.475 W6OTX 10b - 1051-1055 # # Table of scan lists. # 1) Scan list number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) Priority channel 1 (50% of scans): -, Sel or index # 4) Priority channel 2 (25% of scans): -, Sel or index # 5) Designated transmit channel: Last, Sel or index # 6) List of channels: numbers and ranges (N-M) separated by comma # Scanlist Name PCh1 PCh2 TxCh Channels 1 Santa_Clara - - Last 101,151,201,251,301,351,401,451,501,551,601,651,701,751,801,851,901,951,1001,1051 # # Table of group lists. # 1) Group list number: 1-250 # 2) Name: up to 16 characters, use '_' instead of space # 3) List of contacts: numbers and ranges (N-M) separated by comma # Grouplist Name Contacts 1 Timeslot_1 23 # 23 Cluster K6LNK 1 Timeslot_1 91 # 91 Worldwide 1 Timeslot_1 93 # 93 North America 1 Timeslot_1 310 # 310 TAC 310 1 Timeslot_1 3106 # 3106 California 1 Timeslot_1 3131 # 3131 Nebraska 1 Timeslot_1 3148 # 3148 Texas 1 Timeslot_1 1064 # 31064 Santa Clara County 1 Timeslot_1 1065 # 31065 NorCal AllStar 1 Timeslot_1 1072 # 31072 KPARN 1 Timeslot_1 1075 # 31075 Bay-Net 1 Timeslot_1 1078 # 31078 XLX013D PAPA 1 Timeslot_1 1096 # 31096 USA - Area 6 4646 1 Timeslot_1 1328 # 31328 SNARS (Reno/Tahoe) 1 Timeslot_1 1329 # 31329 SNARS 2 2 Timeslot_2 21 # 21 Cluster CARLA 2 Timeslot_2 604 # 310604 CARLA 2 Timeslot_2 670 # 110670 Cluster KK6USZ 2 Timeslot_2 703 # 310703 Tri-LERT 2 Timeslot_2 1064 # 31064 Santa Clara County 2 Timeslot_2 1068 # 31068 NorCal 2 Timeslot_2 1075 # 31075 Bay-Net 2 Timeslot_2 1666 # 31666 DMR of Anarchy 2 Timeslot_2 5150 # 95150 NorCal 5150 2 Timeslot_2 7150 # 97150 Baycom # # Table of contacts. # 1) Contact number: 1-10000 # 2) Name: up to 16 characters, use '_' instead of space # 3) Call type: Group, Private, All # 4) Call ID: 1...16777215 # 5) Call receive tone: -, + # Contact Name Type ID RxTone # From all Bay Area repeaters 21 Cluster_CARLA Group 21 - 23 Cluster_K6LNK Group 23 - 91 Worldwide Group 91 - 93 North_America Group 93 - 310 TAC_310 Group 310 - 3106 California Group 3106 - 3131 Nebraska Group 3131 - 3148 Texas Group 3148 - 1064 Santa_Clara_Cnty Group 31064 - 1065 NorCal_AllStar Group 31065 - 1068 NorCal Group 31068 - 1072 KPARN Group 31072 - 1075 Bay-Net Group 31075 - 1078 XLX013D_PAPA Group 31078 - 1096 USA_Area_6 Group 31096 - 1328 SNARS Group 31328 - 1329 SNARS_2 Group 31329 - 1666 DMR_of_Anarchy Group 31666 - 5150 NorCal_5150 Group 95150 - 7150 Baycom Group 97150 - 670 Cluster_KK6USZ Group 110670 - 604 CARLA Group 310604 - 703 Tri-LERT Group 310703 - # Private 9990 Parrot Private 9990 - dmrconfig-master/gd77.c000066400000000000000000001763741354060760700152650ustar00rootroot00000000000000/* * Interface to Radioddity GD-77, firmware version 3.1.1 and later. * * Copyright (C) 2018 Serge Vakulenko, KK6ABQ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include #include #include #include #include "radio.h" #include "util.h" #define NCHAN 1024 #define NCONTACTS 1024 #define NZONES 250 #define NGLISTS 76 #define NSCANL 64 #define NMESSAGES 32 #define MEMSZ 0x20000 #define OFFSET_TIMESTMP 0x00088 #define OFFSET_SETTINGS 0x000e0 #define OFFSET_MSGTAB 0x00128 #define OFFSET_SCANTAB 0x01790 #define OFFSET_BANK_0 0x03780 // Channels 1-128 #define OFFSET_INTRO 0x07540 #define OFFSET_ZONETAB 0x08010 #define OFFSET_BANK_1 0x0b1b0 // Channels 129-1024 #define OFFSET_CONTACTS 0x17620 #define OFFSET_GROUPTAB 0x1d620 #define GET_TIMESTAMP() (&radio_mem[OFFSET_TIMESTMP]) #define GET_SETTINGS() ((general_settings_t*) &radio_mem[OFFSET_SETTINGS]) #define GET_INTRO() ((intro_text_t*) &radio_mem[OFFSET_INTRO]) #define GET_ZONETAB() ((zonetab_t*) &radio_mem[OFFSET_ZONETAB]) #define GET_SCANTAB(i) ((scantab_t*) &radio_mem[OFFSET_SCANTAB]) #define GET_GROUPTAB() ((grouptab_t*) &radio_mem[OFFSET_GROUPTAB]) #define GET_MSGTAB() ((msgtab_t*) &radio_mem[OFFSET_MSGTAB]) #define GET_CONTACT(i) ((contact_t*) &radio_mem[OFFSET_CONTACTS + (i)*24]) #define VALID_TEXT(txt) (*(txt) != 0 && *(txt) != 0xff) #define VALID_CONTACT(ct) ((ct) != 0 && VALID_TEXT((ct)->name)) // // Channel data. // typedef struct { // Bytes 0-15 uint8_t name[16]; // Channel Name // Bytes 16-23 uint32_t rx_frequency; // RX Frequency: 8 digits BCD uint32_t tx_frequency; // TX Frequency: 8 digits BCD // Byte 24 uint8_t channel_mode; // Mode: Analog or Digital #define MODE_ANALOG 0 #define MODE_DIGITAL 1 // Bytes 25-26 uint8_t _unused25[2]; // 0 // Bytes 27-28 uint8_t tot; // TOT x 15sec: 0-Infinite, 1=15s... 33=495s uint8_t tot_rekey_delay; // TOT Rekey Delay: 0s...255s // Byte 29 uint8_t admit_criteria; // Admit Criteria: Always, Channel Free or Color Code #define ADMIT_ALWAYS 0 #define ADMIT_CH_FREE 1 #define ADMIT_COLOR 2 // Bytes 30-31 uint8_t _unused30; // 0x50 uint8_t scan_list_index; // Scan List: None, ScanList1...250 // Bytes 32-35 uint16_t ctcss_dcs_receive; // CTCSS/DCS Dec: 4 digits BCD or 0xffff uint16_t ctcss_dcs_transmit; // CTCSS/DCS Enc: 4 digits BCD // Bytes 36-39 uint8_t _unused36; // 0 uint8_t tx_signaling_syst; // Tx Signaling System: Off, DTMF uint8_t _unused38; // 0 uint8_t rx_signaling_syst; // Rx Signaling System: Off, DTMF // Bytes 40-43 uint8_t _unused40; // 0x16 uint8_t privacy_group; // Privacy Group: 0=None, 1=53474c39 #define PRIVGR_NONE 0 #define PRIVGR_53474C39 1 uint8_t colorcode_tx; // Color Code: 0...15 uint8_t group_list_index; // Group List: None, GroupList1...128 // Bytes 44-47 uint8_t colorcode_rx; // Color Code: 0...15 uint8_t emergency_system_index; // Emergency System: None, System1...32 uint16_t contact_name_index; // Contact Name: Contact1... // Byte 48 uint8_t _unused48 : 6, // 0 emergency_alarm_ack : 1, // Emergency Alarm Ack data_call_conf : 1; // Data Call Confirmed // Byte 49 uint8_t private_call_conf : 1, // Private Call Confirmed _unused49_1 : 3, // 0 privacy : 1, // Privacy: Off or On _unused49_5 : 1, // 0 repeater_slot2 : 1, // Repeater Slot: 0=slot1 or 1=slot2 _unused49_7 : 1; // 0 // Byte 50 uint8_t dcdm : 1, // Dual Capacity Direct Mode _unused50_1 : 4, // 0 non_ste_frequency : 1, // Non STE = Frequency _unused50_6 : 2; // 0 // Byte 51 uint8_t squelch : 1, // Squelch #define SQ_TIGHT 0 #define SQ_NORMAL 1 bandwidth : 1, // Bandwidth: 12.5 or 25 kHz #define BW_12_5_KHZ 0 #define BW_25_KHZ 1 rx_only : 1, // RX Only Enable talkaround : 1, // Allow Talkaround _unused51_4 : 2, // 0 vox : 1, // VOX Enable power : 1; // Power: Low, High #define POWER_HIGH 1 #define POWER_LOW 0 // Bytes 52-55 uint8_t _unused52[4]; // 0 } channel_t; // // Bank of 128 channels. // typedef struct { uint8_t bitmap[16]; // bit set when channel valid channel_t chan[128]; } bank_t; // // Contact data. // typedef struct { // Bytes 0-15 uint8_t name[16]; // Contact Name, ff terminated // Bytes 16-19 uint8_t id[4]; // BCD coded 8 digits #define GET_ID(x) (((x)[0] >> 4) * 10000000 +\ ((x)[0] & 15) * 1000000 +\ ((x)[1] >> 4) * 100000 +\ ((x)[1] & 15) * 10000 +\ ((x)[2] >> 4) * 1000 +\ ((x)[2] & 15) * 100 +\ ((x)[3] >> 4) * 10 +\ ((x)[3] & 15)) #define CONTACT_ID(ct) GET_ID((ct)->id) // Byte 20 uint8_t type; // Call Type: Group Call, Private Call or All Call #define CALL_GROUP 0 #define CALL_PRIVATE 1 #define CALL_ALL 2 // Bytes 21-23 uint8_t receive_tone; // Call Receive Tone: 0=Off, 1=On uint8_t ring_style; // Ring style: 0-10 uint8_t _unused23; // 0xff for used contact, 0 for blank entry } contact_t; // // Zone data. // typedef struct { // Bytes 0-15 uint8_t name[16]; // Zone Name // Bytes 16-47 uint16_t member[16]; // Member: channels 1...16 } zone_t; // // Table of zones. // typedef struct { uint8_t bitmap[32]; // bit set when zone valid zone_t zone[NZONES]; } zonetab_t; // // Group list data. // typedef struct { // Bytes 0-15 uint8_t name[16]; // Group List Name // Bytes 16-79 uint16_t member[32]; // Contacts } grouplist_t; // // Table of group lists. // typedef struct { uint8_t nitems1[128]; // N+1, zero when disabled grouplist_t grouplist[NGLISTS]; } grouptab_t; // // Scan list data. // typedef struct { // Bytes 0-14 uint8_t name[15]; // Scan List Name // Byte 15 uint8_t _unused : 4, // 0 channel_mark : 1, // Channel Mark, default 1 pl_type : 2, // PL Type, default 3 #define PL_NONPRI 0 // Non-Priority Channel #define PL_DISABLE 1 // Disable #define PL_PRI 2 // Priority Channel #define PL_PRI_NONPRI 3 // Priority and Non-Priority Channels talkback : 1; // Talkback, default 1 // Bytes 16-79 uint16_t member[32]; // Channels (+1) #define CHAN_SELECTED 1 // Selected // Bytes 80-85 uint16_t priority_ch1; // Priority Channel 1, chan+1 or 0=None, 1=Selected uint16_t priority_ch2; // Priority Channel 2 uint16_t tx_designated_ch; // Tx Designated Channel, chan+1 or 0=Last Active Channel // Bytes 86-87 uint8_t sign_hold_time; // Signaling Hold Time (x25 = msec) default 40=1000ms uint8_t prio_sample_time; // Priority Sample Time (x250 = msec) default 8=2000ms } scanlist_t; // // Table of scanlists. // typedef struct { uint8_t valid[NSCANL]; // byte=1 when scanlist valid scanlist_t scanlist[NSCANL]; } scantab_t; // // General settings. // typedef struct { // Bytes e0-e7 uint8_t radio_name[8]; // Bytes e8-eb uint8_t radio_id[4]; } general_settings_t; // // Intro messages. // typedef struct { // Bytes 7540-754f uint8_t intro_line1[16]; // Bytes 7550-755f uint8_t intro_line2[16]; } intro_text_t; // // Table of text messages. // typedef struct { uint8_t count; // number of messages uint8_t _unused1[7]; // 0 uint8_t len[NMESSAGES]; // message length uint8_t _unused2[NMESSAGES]; // 0 uint8_t message[NMESSAGES*144]; // messages } msgtab_t; static const char *POWER_NAME[] = { "Low", "High" }; static const char *SQUELCH_NAME[] = { "Tight", "Normal" }; static const char *BANDWIDTH[] = { "12.5", "25" }; static const char *CONTACT_TYPE[] = {"Group", "Private", "All", "???" }; static const char *ADMIT_NAME[] = { "-", "Free", "Color", "???" }; #ifdef PRINT_RARE_PARAMS static const char *PRIVACY_NAME[] = { "-", "On" }; static const char *SIGNALING_SYSTEM[] = { "-", "DTMF" }; #endif // // Print a generic information about the device. // static void gd77_print_version(radio_device_t *radio, FILE *out) { unsigned char *timestamp = GET_TIMESTAMP(); if (*timestamp != 0xff) { fprintf(out, "Last Programmed Date: %d%d%d%d-%d%d-%d%d", timestamp[0] >> 4, timestamp[0] & 15, timestamp[1] >> 4, timestamp[1] & 15, timestamp[2] >> 4, timestamp[2] & 15, timestamp[3] >> 4, timestamp[3] & 15); fprintf(out, " %d%d:%d%d\n", timestamp[4] >> 4, timestamp[4] & 15, timestamp[5] >> 4, timestamp[5] & 15); } } // // Read memory image from the device. // static void download(radio_device_t *radio) { int bno; // Read range 0x80...0x1e29f. for (bno=1; bno<966; bno++) { if (bno >= 248 && bno < 256) { // Skip range 0x7c00...0x8000. continue; } hid_read_block(bno, &radio_mem[bno*128], 128); ++radio_progress; if (radio_progress % 32 == 0) { fprintf(stderr, "#"); fflush(stderr); } } //hid_read_finish(); // Clear header and footer. memset(&radio_mem[0], 0xff, 128); memset(&radio_mem[966*128], 0xff, MEMSZ - 966*128); memset(&radio_mem[248*128], 0xff, 8*128); } // // Radioddity GD-77 new firmware: read memory image. // static void gd77_download(radio_device_t *radio) { download(radio); // Add header. memcpy(&radio_mem[0], "MD-760P", 7); } // // Write memory image to the device. // static void gd77_upload(radio_device_t *radio, int cont_flag) { int bno; // Write range 0x80...0x1e29f. for (bno=1; bno<966; bno++) { if (bno >= 248 && bno < 256) { // Skip range 0x7c00...0x8000. continue; } hid_write_block(bno, &radio_mem[bno*128], 128); ++radio_progress; if (radio_progress % 32 == 0) { fprintf(stderr, "#"); fflush(stderr); } } hid_write_finish(); } // // Check whether the memory image is compatible with this device. // static int gd77_is_compatible(radio_device_t *radio) { return strncmp("MD-760P", (char*)&radio_mem[0], 7) == 0; } // // Set name for a given zone. // static void setup_zone(int index, const char *name) { zonetab_t *zt = GET_ZONETAB(); zone_t *z = &zt->zone[index]; ascii_decode(z->name, name, sizeof(z->name), 0xff); memset(z->member, 0, sizeof(z->member)); // Set valid bit. zt->bitmap[index / 8] |= 1 << (index & 7); } // // Get zone by index. // Return 0 when zone is disabled. // static zone_t *get_zone(int index) { zonetab_t *zt = GET_ZONETAB(); if (zt->bitmap[index / 8] >> (index & 7) & 1) return &zt->zone[index]; else return 0; } // // Add channel to a zone. // Return 0 on failure. // static int zone_append(int index, int cnum) { zonetab_t *zt = GET_ZONETAB(); zone_t *z = &zt->zone[index]; int i; for (i=0; i<16; i++) { if (z->member[i] == cnum) return 1; if (z->member[i] == 0) { z->member[i] = cnum; return 1; } } return 0; } static void erase_zone(int index) { zonetab_t *zt = GET_ZONETAB(); zone_t *z = &zt->zone[index]; memset(z->name, 0, sizeof(z->name)); memset(z->member, 0, sizeof(z->member)); // Clear valid bit. zt->bitmap[index / 8] &= ~(1 << (index & 7)); } // // Set parameters for a given scan list. // static void setup_scanlist(int index, const char *name, int prio1, int prio2, int txchan) { scantab_t *st = GET_SCANTAB(); scanlist_t *sl = &st->scanlist[index]; memset(sl, 0, 88); ascii_decode(sl->name, name, sizeof(sl->name), 0xff); sl->priority_ch1 = prio1; sl->priority_ch2 = prio2; sl->tx_designated_ch = txchan; sl->talkback = 1; sl->channel_mark = 1; sl->pl_type = PL_PRI_NONPRI; sl->sign_hold_time = 1000 / 25; // 1 sec sl->prio_sample_time = 2000 / 250; // 2 sec // Set valid bit. st->valid[index] = 1; } static void erase_scanlist(int index) { scantab_t *st = GET_SCANTAB(); memset(&st->scanlist[index], 0xff, sizeof(scanlist_t)); // Clear valid bit. st->valid[index] = 0; } // // Get scanlist by index. // Return 0 when scanlist is disabled. // static scanlist_t *get_scanlist(int index) { scantab_t *st = GET_SCANTAB(); if (st->valid[index]) return &st->scanlist[index]; else return 0; } // // Add channel to a zone. // Return 0 on failure. // static int scanlist_append(int index, int cnum) { scanlist_t *sl = get_scanlist(index); int i; if (!sl) return 0; // First element is always Selected. if (sl->member[0] == 0) sl->member[0] = CHAN_SELECTED; for (i=0; i<32; i++) { if (sl->member[i] == cnum + 1) return 1; if (sl->member[i] == 0) { sl->member[i] = cnum + 1; return 1; } } return 0; } static void erase_contact(int index) { contact_t *ct = GET_CONTACT(index); memset(ct->name, 0xff, sizeof(ct->name)); memset(ct->id, 0, 8); } static void setup_contact(int index, const char *name, int type, int id, int rxtone) { contact_t *ct = GET_CONTACT(index); ct->id[0] = ((id / 10000000) << 4) | ((id / 1000000) % 10); ct->id[1] = ((id / 100000 % 10) << 4) | ((id / 10000) % 10); ct->id[2] = ((id / 1000 % 10) << 4) | ((id / 100) % 10); ct->id[3] = ((id / 10 % 10) << 4) | (id % 10); ct->type = type; ct->receive_tone = rxtone; ct->ring_style = 0; // TODO ct->_unused23 = (type < CALL_ALL) ? 0 : 0xff; ascii_decode(ct->name, name, 16, 0xff); } // // Get grouplist by index. // Return 0 when grouplist is disabled. // static grouplist_t *get_grouplist(int index) { grouptab_t *gt = GET_GROUPTAB(); if (gt->nitems1[index] > 0) return >->grouplist[index]; else return 0; } static void setup_grouplist(int index, const char *name) { grouptab_t *gt = GET_GROUPTAB(); grouplist_t *gl = >->grouplist[index]; ascii_decode(gl->name, name, sizeof(gl->name), 0xff); // Enable grouplist. gt->nitems1[index] = 1; } // // Add contact to a grouplist. // Return 0 on failure. // static int grouplist_append(int index, int cnum) { grouptab_t *gt = GET_GROUPTAB(); grouplist_t *gl = >->grouplist[index]; int i; for (i=0; i<32; i++) { if (gl->member[i] == cnum) return 1; if (gl->member[i] == 0) { gl->member[i] = cnum; gt->nitems1[index] = i + 2; return 1; } } return 0; } // // Set text for a given message. // static void setup_message(int index, const char *text) { msgtab_t *mt = GET_MSGTAB(); uint8_t *msg = &mt->message[index*144]; int len, i; // Skip spaces and tabs. while (*text == ' ' || *text == '\t') text++; len = strlen(text); mt->len[index] = len + 1; memset(msg, 0xff, 144); memcpy(msg, text, len < 144 ? len : 144); // Count messages. mt->count = 0; for (i=0; ilen); i++) if (mt->len[i] > 0) mt->count++; } // // Check that the radio does support this frequency. // static int is_valid_frequency(int mhz) { if (mhz >= 136 && mhz <= 174) return 1; if (mhz >= 400 && mhz <= 480) return 1; return 0; } // // Get channel bank by index. // static bank_t *get_bank(int i) { if (i == 0) return (bank_t*) &radio_mem[OFFSET_BANK_0]; else return (i - 1) + (bank_t*) &radio_mem[OFFSET_BANK_1]; } // // Get channel by index. // static channel_t *get_channel(int i) { bank_t *b = get_bank(i >> 7); if ((b->bitmap[i % 128 / 8] >> (i & 7)) & 1) return &b->chan[i % 128]; else return 0; } // // Set the parameters for a given memory channel. // static void setup_channel(int i, int mode, char *name, double rx_mhz, double tx_mhz, int power, int scanlist, int squelch, int tot, int rxonly, int admit, int colorcode, int timeslot, int grouplist, int contact, int rxtone, int txtone, int width) { bank_t *b = get_bank(i >> 7); channel_t *ch = &b->chan[i % 128]; ch->channel_mode = mode; ch->bandwidth = width; ch->squelch = squelch; ch->rx_only = rxonly; ch->repeater_slot2 = (timeslot == 2); ch->colorcode_tx = colorcode; ch->colorcode_rx = colorcode; // ch->data_call_conf = 1; // Always ask for SMS acknowledge ch->power = power; ch->admit_criteria = admit; ch->contact_name_index = contact; ch->tot = tot; ch->scan_list_index = scanlist; ch->group_list_index = grouplist; ch->rx_frequency = mhz_to_abcdefgh(rx_mhz); ch->tx_frequency = mhz_to_abcdefgh(tx_mhz); ch->ctcss_dcs_receive = rxtone; ch->ctcss_dcs_transmit = txtone; ascii_decode(ch->name, name, sizeof(ch->name), 0xff); // Set valid bit. b->bitmap[i % 128 / 8] |= 1 << (i & 7); } // // Erase the channel record. // static void erase_channel(int i) { bank_t *b = get_bank(i >> 7); channel_t *ch = &b->chan[i % 128]; // Bytes 0-15 memset(ch->name, 0xff, sizeof(ch->name)); // Bytes 16-23 ch->rx_frequency = 0x40000000; ch->tx_frequency = 0x40000000; // Byte 24 ch->channel_mode = MODE_ANALOG; // Bytes 25-26 ch->_unused25[0] = 0; ch->_unused25[1] = 0; // Bytes 27-28 ch->tot = 0; ch->tot_rekey_delay = 5; // Byte 29 ch->admit_criteria = ADMIT_ALWAYS; // Bytes 30-31 ch->_unused30 = 0x50; ch->scan_list_index = 0; // Bytes 32-35 ch->ctcss_dcs_receive = 0xffff; ch->ctcss_dcs_transmit = 0xffff; // Bytes 36-39 ch->_unused36 = 0; ch->tx_signaling_syst = 0; ch->_unused38 = 0; ch->rx_signaling_syst = 0; // Bytes 40-43 ch->_unused40 = 0x16; ch->privacy_group = PRIVGR_NONE; ch->colorcode_tx = 1; ch->group_list_index = 0; // Bytes 44-47 ch->colorcode_rx = 1; ch->emergency_system_index = 0; ch->contact_name_index = 0; // Byte 48 ch->_unused48 = 0; ch->emergency_alarm_ack = 0; ch->data_call_conf = 0; // Byte 49 ch->private_call_conf = 0; ch->_unused49_1 = 0; ch->privacy = 0; ch->_unused49_5 = 0; ch->repeater_slot2 = 0; ch->_unused49_7 = 0; // Byte 50 ch->dcdm = 0; ch->_unused50_1 = 0; ch->non_ste_frequency = 0; ch->_unused50_6 = 0; // Byte 51 ch->bandwidth = BW_25_KHZ; ch->rx_only = 0; ch->talkaround = 0; ch->_unused51_4 = 0; ch->vox = 0; ch->power = POWER_HIGH; // Bytes 52-55 ch->_unused52[0] = 0; ch->_unused52[1] = 0; ch->_unused52[2] = 0; ch->_unused52[3] = 0; ch->squelch = SQ_NORMAL; // Clear valid bit. b->bitmap[i % 128 / 8] &= ~(1 << (i & 7)); } static void print_chanlist(FILE *out, uint16_t *unsorted, int nchan, int scanlist_flag) { int last = -1; int range = 0; int n; uint16_t data[nchan]; #define CNUM(n) (scanlist_flag ? n-1 : n) // Sort the list before printing. memcpy(data, unsorted, nchan * sizeof(uint16_t)); qsort(data, nchan, sizeof(uint16_t), compare_index); for (n=0; n 0) fprintf(out, ","); fprintf(out, "%d", CNUM(item)); } last = item; } if (range) fprintf(out, "-%d", CNUM(last)); } static void print_id(FILE *out, int verbose) { general_settings_t *gs = GET_SETTINGS(); unsigned id = GET_ID(gs->radio_id); if (verbose) fprintf(out, "\n# Unique DMR ID and name of this radio."); fprintf(out, "\nID: %u\nName: ", id); if (VALID_TEXT(gs->radio_name)) { print_ascii(out, gs->radio_name, 8, 0); } else { fprintf(out, "-"); } fprintf(out, "\n"); } static void print_intro(FILE *out, int verbose) { intro_text_t *it = GET_INTRO(); if (verbose) fprintf(out, "\n# Text displayed when the radio powers up.\n"); fprintf(out, "Intro Line 1: "); if (VALID_TEXT(it->intro_line1)) { print_ascii(out, it->intro_line1, 16, 0); } else { fprintf(out, "-"); } fprintf(out, "\nIntro Line 2: "); if (VALID_TEXT(it->intro_line2)) { print_ascii(out, it->intro_line2, 16, 0); } else { fprintf(out, "-"); } fprintf(out, "\n"); } // // Do we have any channels of given mode? // static int have_channels(int mode) { int i; for (i=0; ichannel_mode == mode) return 1; } return 0; } // // Print base parameters of the channel: // Name // RX Frequency // TX Frequency // Power // Scan List // TOT // RX Only // Admit Criteria // static void print_chan_base(FILE *out, channel_t *ch, int cnum) { fprintf(out, "%5d ", cnum); print_ascii(out, ch->name, 16, 1); fprintf(out, " "); print_freq(out, ch->rx_frequency); fprintf(out, " "); print_offset(out, ch->rx_frequency, ch->tx_frequency); fprintf(out, "%-4s ", POWER_NAME[ch->power]); if (ch->scan_list_index == 0) fprintf(out, "- "); else fprintf(out, "%-4d ", ch->scan_list_index); if (ch->tot == 0) fprintf(out, "- "); else fprintf(out, "%-3d ", ch->tot * 15); fprintf(out, "%c ", "-+"[ch->rx_only]); if (ch->channel_mode == MODE_DIGITAL) fprintf(out, "%-6s ", ADMIT_NAME[ch->admit_criteria & 3]); else fprintf(out, "%-6s ", ADMIT_NAME[ch->admit_criteria != 0]); } #ifdef PRINT_RARE_PARAMS // // Print extended parameters of the channel: // TOT Rekey Delay // VOX // Talkaround // static void print_chan_ext(FILE *out, channel_t *ch) { fprintf(out, "%-3d ", ch->tot_rekey_delay); fprintf(out, "%c ", "-+"[ch->vox]); fprintf(out, "%c ", "-+"[ch->talkaround]); } #endif static void print_digital_channels(FILE *out, int verbose) { int i; if (verbose) { fprintf(out, "# Table of digital channels.\n"); fprintf(out, "# 1) Channel number: 1-%d\n", NCHAN); fprintf(out, "# 2) Name: up to 16 characters, use '_' instead of space\n"); fprintf(out, "# 3) Receive frequency in MHz\n"); fprintf(out, "# 4) Transmit frequency or +/- offset in MHz\n"); fprintf(out, "# 5) Transmit power: High, Low\n"); fprintf(out, "# 6) Scan list: - or index in Scanlist table\n"); fprintf(out, "# 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555\n"); fprintf(out, "# 8) Receive only: -, +\n"); fprintf(out, "# 9) Admit criteria: -, Free, Color\n"); fprintf(out, "# 10) Color code: 0, 1, 2, 3... 15\n"); fprintf(out, "# 11) Time slot: 1 or 2\n"); fprintf(out, "# 12) Receive group list: - or index in Grouplist table\n"); fprintf(out, "# 13) Contact for transmit: - or index in Contacts table\n"); fprintf(out, "#\n"); } fprintf(out, "Digital Name Receive Transmit Power Scan TOT RO Admit Color Slot RxGL TxContact"); #ifdef PRINT_RARE_PARAMS fprintf(out, " Dly VOX TA EmSys Privacy PN PCC EAA DCC"); #endif fprintf(out, "\n"); for (i=0; ichannel_mode != MODE_DIGITAL) { // Select digital channels continue; } print_chan_base(out, ch, i+1); // Print digital parameters of the channel: // Color Code // Repeater Slot // Group List // Contact Name fprintf(out, "%-5d %-3d ", ch->colorcode_tx, ch->repeater_slot2 + 1); if (ch->group_list_index == 0) fprintf(out, "- "); else fprintf(out, "%-4d ", ch->group_list_index); if (ch->contact_name_index == 0) fprintf(out, "-"); else fprintf(out, "%-4d", ch->contact_name_index); #ifdef PRINT_RARE_PARAMS fprintf(out, " "); print_chan_ext(out, ch); // Extended digital parameters of the channel: // Emergency System // Privacy // Privacy Group // Private Call Confirmed // Emergency Alarm Ack // Data Call Confirmed // DCDM switch (inverted) // Leader/MS if (ch->emergency_system_index == 0) fprintf(out, "- "); else fprintf(out, "%-5d ", ch->emergency_system_index); fprintf(out, "%-8s ", PRIVACY_NAME[ch->privacy]); if (ch->privacy == 0) fprintf(out, "- "); else fprintf(out, "%-2d ", ch->privacy_group); fprintf(out, "%c ", "-+"[ch->private_call_conf]); fprintf(out, "%c ", "-+"[ch->emergency_alarm_ack]); fprintf(out, "%c ", "-+"[ch->data_call_conf]); #endif // Print contact name as a comment. if (ch->contact_name_index > 0) { contact_t *ct = GET_CONTACT(ch->contact_name_index - 1); if (VALID_CONTACT(ct)) { fprintf(out, " # "); print_ascii(out, ct->name, 16, 0); } } fprintf(out, "\n"); } } static void print_analog_channels(FILE *out, int verbose) { int i; if (verbose) { fprintf(out, "# Table of analog channels.\n"); fprintf(out, "# 1) Channel number: 1-%d\n", NCHAN); fprintf(out, "# 2) Name: up to 16 characters, use '_' instead of space\n"); fprintf(out, "# 3) Receive frequency in MHz\n"); fprintf(out, "# 4) Transmit frequency or +/- offset in MHz\n"); fprintf(out, "# 5) Transmit power: High, Low\n"); fprintf(out, "# 6) Scan list: - or index\n"); fprintf(out, "# 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555\n"); fprintf(out, "# 8) Receive only: -, +\n"); fprintf(out, "# 9) Admit criteria: -, Free, Tone\n"); fprintf(out, "# 10) Squelch level: Normal, Tight\n"); fprintf(out, "# 11) Guard tone for receive, or '-' to disable\n"); fprintf(out, "# 12) Guard tone for transmit, or '-' to disable\n"); fprintf(out, "# 13) Bandwidth in kHz: 12.5, 20, 25\n"); fprintf(out, "#\n"); } fprintf(out, "Analog Name Receive Transmit Power Scan TOT RO Admit Squelch RxTone TxTone Width"); #ifdef PRINT_RARE_PARAMS fprintf(out, " Dly VOX TA RxSign TxSign"); #endif fprintf(out, "\n"); for (i=0; ichannel_mode != MODE_ANALOG) { // Select analog channels continue; } print_chan_base(out, ch, i+1); // Print analog parameters of the channel: // Squelch // CTCSS/DCS Dec // CTCSS/DCS Enc // Bandwidth fprintf(out, "%-7s ", SQUELCH_NAME[ch->squelch]); print_tone(out, ch->ctcss_dcs_receive); fprintf(out, " "); print_tone(out, ch->ctcss_dcs_transmit); fprintf(out, " %-6s", BANDWIDTH[ch->bandwidth]); #ifdef PRINT_RARE_PARAMS print_chan_ext(out, ch); // Extended analog parameters of the channel: // Rx Signaling System // Tx Signaling System fprintf(out, "%-6s ", SIGNALING_SYSTEM[ch->rx_signaling_syst & 1]); fprintf(out, "%-6s ", SIGNALING_SYSTEM[ch->tx_signaling_syst & 1]); #endif fprintf(out, "\n"); } } static int have_zones() { zonetab_t *zt = GET_ZONETAB(); int i; for (i=0; i<32; i++) { if (zt->bitmap[i]) return 1; } return 0; } static int have_scanlists() { scantab_t *st = GET_SCANTAB(); int i; for (i=0; ivalid[i]) return 1; } return 0; } static int have_contacts() { int i; for (i=0; initems1[i] > 0) return 1; } return 0; } static int have_messages() { msgtab_t *mt = GET_MSGTAB(); return mt->count > 0; } // // Print full information about the device configuration. // static void gd77_print_config(radio_device_t *radio, FILE *out, int verbose) { int i; fprintf(out, "Radio: %s\n", radio->name); if (verbose) gd77_print_version(radio, out); // // Channels. // if (have_channels(MODE_DIGITAL)) { fprintf(out, "\n"); print_digital_channels(out, verbose); } if (have_channels(MODE_ANALOG)) { fprintf(out, "\n"); print_analog_channels(out, verbose); } // // Zones. // if (have_zones()) { fprintf(out, "\n"); if (verbose) { fprintf(out, "# Table of channel zones.\n"); fprintf(out, "# 1) Zone number: 1-%d\n", NZONES); fprintf(out, "# 2) Name: up to 16 characters, use '_' instead of space\n"); fprintf(out, "# 3) List of channels: numbers and ranges (N-M) separated by comma\n"); fprintf(out, "#\n"); } fprintf(out, "Zone Name Channels\n"); for (i=0; iname, 16, 1); fprintf(out, " "); if (z->member[0]) { print_chanlist(out, z->member, 16, 0); } else { fprintf(out, "-"); } fprintf(out, "\n"); } } // // Scan lists. // if (have_scanlists()) { fprintf(out, "\n"); if (verbose) { fprintf(out, "# Table of scan lists.\n"); fprintf(out, "# 1) Scan list number: 1-%d\n", NSCANL); fprintf(out, "# 2) Name: up to 16 characters, use '_' instead of space\n"); fprintf(out, "# 3) Priority channel 1 (50%% of scans): -, Sel or index\n"); fprintf(out, "# 4) Priority channel 2 (25%% of scans): -, Sel or index\n"); fprintf(out, "# 5) Designated transmit channel: Last, Sel or index\n"); fprintf(out, "# 6) List of channels: numbers and ranges (N-M) separated by comma\n"); fprintf(out, "#\n"); } fprintf(out, "Scanlist Name PCh1 PCh2 TxCh "); #ifdef PRINT_RARE_PARAMS fprintf(out, "Hold Smpl "); #endif fprintf(out, "Channels\n"); for (i=0; iname, 15, 1); if (sl->priority_ch1 == 0) { fprintf(out, " - "); } else if (sl->priority_ch1 == 1) { fprintf(out, " Sel "); } else { fprintf(out, " %-4d ", sl->priority_ch1 - 1); } if (sl->priority_ch2 == 0) { fprintf(out, "- "); } else if (sl->priority_ch2 == 1) { fprintf(out, "Sel "); } else { fprintf(out, "%-4d ", sl->priority_ch2 - 1); } if (sl->tx_designated_ch == 0) { fprintf(out, "Last "); } else if (sl->tx_designated_ch == 1) { fprintf(out, "Sel "); } else { fprintf(out, "%-4d ", sl->tx_designated_ch - 1); } #ifdef PRINT_RARE_PARAMS fprintf(out, "%-4d %-4d ", sl->sign_hold_time * 25, sl->prio_sample_time * 250); #endif if (sl->member[1]) { print_chanlist(out, sl->member + 1, 31, 1); } else { fprintf(out, "Sel"); } fprintf(out, "\n"); } } // // Contacts. // if (have_contacts()) { fprintf(out, "\n"); if (verbose) { fprintf(out, "# Table of contacts.\n"); fprintf(out, "# 1) Contact number: 1-%d\n", NCONTACTS); fprintf(out, "# 2) Name: up to 16 characters, use '_' instead of space\n"); fprintf(out, "# 3) Call type: Group, Private, All\n"); fprintf(out, "# 4) Call ID: 1...16777215\n"); fprintf(out, "# 5) Call receive tone: -, +\n"); fprintf(out, "#\n"); } fprintf(out, "Contact Name Type ID RxTone\n"); for (i=0; iname, 16, 1); fprintf(out, " %-7s %-8d %s\n", CONTACT_TYPE[ct->type & 3], CONTACT_ID(ct), ct->receive_tone ? "+" : "-"); } } // // Group lists. // if (have_grouplists()) { fprintf(out, "\n"); if (verbose) { fprintf(out, "# Table of group lists.\n"); fprintf(out, "# 1) Group list number: 1-%d\n", NGLISTS); fprintf(out, "# 2) Name: up to 16 characters, use '_' instead of space\n"); fprintf(out, "# 3) List of contacts: numbers and ranges (N-M) separated by comma\n"); fprintf(out, "#\n"); } fprintf(out, "Grouplist Name Contacts\n"); for (i=0; iname, 16, 1); fprintf(out, " "); if (gl->member[0]) { print_chanlist(out, gl->member, 32, 0); } else { fprintf(out, "-"); } fprintf(out, "\n"); } } // // Text messages. // if (have_messages()) { msgtab_t *mt = GET_MSGTAB(); fprintf(out, "\n"); if (verbose) { fprintf(out, "# Table of text messages.\n"); fprintf(out, "# 1) Message number: 1-%d\n", NMESSAGES); fprintf(out, "# 2) Text: up to 144 characters\n"); fprintf(out, "#\n"); } fprintf(out, "Message Text\n"); for (i=0; ilen[i] == 0) { // Message is disabled continue; } fprintf(out, "%5d ", i+1); print_ascii(out, &mt->message[i*144], 144, 0); fprintf(out, "\n"); } } // General settings. print_id(out, verbose); print_intro(out, verbose); } // // Read memory image from the binary file. // static void gd77_read_image(radio_device_t *radio, FILE *img) { struct stat st; // Guess device type by file size. if (fstat(fileno(img), &st) < 0) { fprintf(stderr, "Cannot get file size.\n"); exit(-1); } switch (st.st_size) { case MEMSZ: // IMG file. if (fread(&radio_mem[0], 1, MEMSZ, img) != MEMSZ) { fprintf(stderr, "Error reading image data.\n"); exit(-1); } break; default: fprintf(stderr, "Unrecognized file size %u bytes.\n", (int) st.st_size); exit(-1); } } // // Save memory image to the binary file. // static void gd77_save_image(radio_device_t *radio, FILE *img) { fwrite(&radio_mem[0], 1, MEMSZ, img); } // // Erase all channels. // static void erase_channels() { int i; for (i=0; iradio_name, value, 8, 0xff); return; } if (strcasecmp ("ID", param) == 0) { uint32_t id = strtoul(value, 0, 0); gs->radio_id[0] = ((id / 10000000) << 4) | ((id / 1000000) % 10); gs->radio_id[1] = ((id / 100000 % 10) << 4) | ((id / 10000) % 10); gs->radio_id[2] = ((id / 1000 % 10) << 4) | ((id / 100) % 10); gs->radio_id[3] = ((id / 10 % 10) << 4) | (id % 10); return; } if (strcasecmp ("Last Programmed Date", param) == 0) { // Ignore. return; } if (strcasecmp ("CPS Software Version", param) == 0) { // Ignore. return; } intro_text_t *it = GET_INTRO(); if (strcasecmp ("Intro Line 1", param) == 0) { ascii_decode(it->intro_line1, value, 16, 0xff); return; } if (strcasecmp ("Intro Line 2", param) == 0) { ascii_decode(it->intro_line2, value, 16, 0xff); return; } fprintf(stderr, "Unknown parameter: %s = %s\n", param, value); exit(-1); } // // Parse one line of Digital channel table. // Start_flag is 1 for the first table row. // Return 0 on failure. // static int parse_digital_channel(radio_device_t *radio, int first_row, char *line) { char num_str[256], name_str[256], rxfreq_str[256], offset_str[256]; char power_str[256], scanlist_str[256]; char tot_str[256], rxonly_str[256], admit_str[256], colorcode_str[256]; char slot_str[256], grouplist_str[256], contact_str[256]; int num, power, scanlist, tot, rxonly, admit; int colorcode, timeslot, grouplist, contact; double rx_mhz, tx_mhz; if (sscanf(line, "%s %s %s %s %s %s %s %s %s %s %s %s %s", num_str, name_str, rxfreq_str, offset_str, power_str, scanlist_str, tot_str, rxonly_str, admit_str, colorcode_str, slot_str, grouplist_str, contact_str) != 13) return 0; num = atoi(num_str); if (num < 1 || num > NCHAN) { fprintf(stderr, "Bad channel number.\n"); return 0; } if (sscanf(rxfreq_str, "%lf", &rx_mhz) != 1 || !is_valid_frequency(rx_mhz)) { fprintf(stderr, "Bad receive frequency.\n"); return 0; } if (sscanf(offset_str, "%lf", &tx_mhz) != 1) { badtx: fprintf(stderr, "Bad transmit frequency.\n"); return 0; } if (offset_str[0] == '-' || offset_str[0] == '+') tx_mhz += rx_mhz; if (! is_valid_frequency(tx_mhz)) goto badtx; if (strcasecmp("High", power_str) == 0) { power = POWER_HIGH; } else if (strcasecmp("Low", power_str) == 0) { power = POWER_LOW; } else { fprintf(stderr, "Bad power level.\n"); return 0; } if (*scanlist_str == '-') { scanlist = 0; } else { scanlist = atoi(scanlist_str); if (scanlist == 0 || scanlist > NSCANL) { fprintf(stderr, "Bad scanlist.\n"); return 0; } } tot = atoi(tot_str); if (tot > 555 || tot % 15 != 0) { fprintf(stderr, "Bad timeout timer.\n"); return 0; } tot /= 15; if (*rxonly_str == '-') { rxonly = 0; } else if (*rxonly_str == '+') { rxonly = 1; } else { fprintf(stderr, "Bad receive only flag.\n"); return 0; } if (*admit_str == '-' || strcasecmp("Always", admit_str) == 0) { admit = ADMIT_ALWAYS; } else if (strcasecmp("Free", admit_str) == 0) { admit = ADMIT_CH_FREE; } else if (strcasecmp("Color", admit_str) == 0) { admit = ADMIT_COLOR; } else { fprintf(stderr, "Bad admit criteria.\n"); return 0; } colorcode = atoi(colorcode_str); if (colorcode < 0 || colorcode > 15) { fprintf(stderr, "Bad color code.\n"); return 0; } timeslot = atoi(slot_str); if (timeslot < 1 || timeslot > 2) { fprintf(stderr, "Bad timeslot.\n"); return 0; } if (*grouplist_str == '-') { grouplist = 0; } else { grouplist = atoi(grouplist_str); if (grouplist == 0 || grouplist > NGLISTS) { fprintf(stderr, "Bad receive grouplist.\n"); return 0; } } if (*contact_str == '-') { contact = 0; } else { contact = atoi(contact_str); if (contact == 0 || contact > NCONTACTS) { fprintf(stderr, "Bad transmit contact.\n"); return 0; } } if (first_row && radio->channel_count == 0) { // On first entry, erase all channels, zones and scanlists. erase_channels(); erase_zones(); erase_scanlists(); } setup_channel(num-1, MODE_DIGITAL, name_str, rx_mhz, tx_mhz, power, scanlist, 5, tot, rxonly, admit, colorcode, timeslot, grouplist, contact, 0xffff, 0xffff, BW_12_5_KHZ); radio->channel_count++; return 1; } // // Parse one line of Analog channel table. // Start_flag is 1 for the first table row. // Return 0 on failure. // static int parse_analog_channel(radio_device_t *radio, int first_row, char *line) { char num_str[256], name_str[256], rxfreq_str[256], offset_str[256]; char power_str[256], scanlist_str[256], squelch_str[256]; char tot_str[256], rxonly_str[256], admit_str[256]; char rxtone_str[256], txtone_str[256], width_str[256]; int num, power, scanlist, squelch, tot, rxonly, admit; int rxtone, txtone, width; double rx_mhz, tx_mhz; if (sscanf(line, "%s %s %s %s %s %s %s %s %s %s %s %s %s", num_str, name_str, rxfreq_str, offset_str, power_str, scanlist_str, tot_str, rxonly_str, admit_str, squelch_str, rxtone_str, txtone_str, width_str) != 13) return 0; num = atoi(num_str); if (num < 1 || num > NCHAN) { fprintf(stderr, "Bad channel number.\n"); return 0; } if (sscanf(rxfreq_str, "%lf", &rx_mhz) != 1 || !is_valid_frequency(rx_mhz)) { fprintf(stderr, "Bad receive frequency.\n"); return 0; } if (sscanf(offset_str, "%lf", &tx_mhz) != 1) { badtx: fprintf(stderr, "Bad transmit frequency.\n"); return 0; } if (offset_str[0] == '-' || offset_str[0] == '+') tx_mhz += rx_mhz; if (! is_valid_frequency(tx_mhz)) goto badtx; if (strcasecmp("High", power_str) == 0) { power = POWER_HIGH; } else if (strcasecmp("Low", power_str) == 0) { power = POWER_LOW; } else { fprintf(stderr, "Bad power level.\n"); return 0; } if (*scanlist_str == '-') { scanlist = 0; } else { scanlist = atoi(scanlist_str); if (scanlist == 0 || scanlist > NSCANL) { fprintf(stderr, "Bad scanlist.\n"); return 0; } } if (strcasecmp ("Normal", squelch_str) == 0) { squelch = SQ_NORMAL; } else if (strcasecmp ("Tight", squelch_str) == 0) { squelch = SQ_TIGHT; } else { fprintf (stderr, "Bad squelch level.\n"); return 0; } tot = atoi(tot_str); if (tot > 555 || tot % 15 != 0) { fprintf(stderr, "Bad timeout timer.\n"); return 0; } tot /= 15; if (*rxonly_str == '-') { rxonly = 0; } else if (*rxonly_str == '+') { rxonly = 1; } else { fprintf(stderr, "Bad receive only flag.\n"); return 0; } if (*admit_str == '-' || strcasecmp("Always", admit_str) == 0) { admit = ADMIT_ALWAYS; } else if (strcasecmp("Free", admit_str) == 0) { admit = ADMIT_CH_FREE; } else { fprintf(stderr, "Bad admit criteria.\n"); return 0; } rxtone = encode_tone(rxtone_str); if (rxtone < 0) { fprintf(stderr, "Bad receive tone.\n"); return 0; } txtone = encode_tone(txtone_str); if (txtone < 0) { fprintf(stderr, "Bad transmit tone.\n"); return 0; } if (strcasecmp ("12.5", width_str) == 0) { width = BW_12_5_KHZ; } else if (strcasecmp ("25", width_str) == 0) { width = BW_25_KHZ; } else { fprintf (stderr, "Bad width.\n"); return 0; } if (first_row && radio->channel_count == 0) { // On first entry, erase all channels, zones and scanlists. erase_channels(); erase_zones(); erase_scanlists(); } setup_channel(num-1, MODE_ANALOG, name_str, rx_mhz, tx_mhz, power, scanlist, squelch, tot, rxonly, admit, 0, 1, 0, 0, rxtone, txtone, width); radio->channel_count++; return 1; } // // Parse one line of Zones table. // Return 0 on failure. // static int parse_zones(int first_row, char *line) { char num_str[256], name_str[256], chan_str[256]; int znum; if (sscanf(line, "%s %s %s", num_str, name_str, chan_str) != 3) return 0; znum = strtoul(num_str, 0, 10); if (znum < 1 || znum > NZONES) { fprintf(stderr, "Bad zone number.\n"); return 0; } if (first_row) { // On first entry, erase the Zones table. erase_zones(); } setup_zone(znum-1, name_str); if (*chan_str != '-') { char *str = chan_str; int nchan = 0; int range = 0; int last = 0; // Parse channel list. for (;;) { char *eptr; int cnum = strtoul(str, &eptr, 10); if (eptr == str) { fprintf(stderr, "Zone %d: wrong channel list '%s'.\n", znum, str); return 0; } if (cnum < 1 || cnum > NCHAN) { fprintf(stderr, "Zone %d: wrong channel number %d.\n", znum, cnum); return 0; } if (range) { // Add range. int c; for (c=last+1; c<=cnum; c++) { if (!zone_append(znum-1, c)) { fprintf(stderr, "Zone %d: too many channels.\n", znum); return 0; } nchan++; } } else { // Add single channel. if (!zone_append(znum-1, cnum)) { fprintf(stderr, "Zone %d: too many channels.\n", znum); return 0; } nchan++; } if (*eptr == 0) break; if (*eptr != ',' && *eptr != '-') { fprintf(stderr, "Zone %d: wrong channel list '%s'.\n", znum, eptr); return 0; } range = (*eptr == '-'); last = cnum; str = eptr + 1; } } return 1; } // // Parse one line of Scanlist table. // Return 0 on failure. // static int parse_scanlist(int first_row, char *line) { char num_str[256], name_str[256], prio1_str[256], prio2_str[256]; char tx_str[256], chan_str[256]; int snum, prio1, prio2, txchan; if (sscanf(line, "%s %s %s %s %s %s", num_str, name_str, prio1_str, prio2_str, tx_str, chan_str) != 6) return 0; snum = atoi(num_str); if (snum < 1 || snum > NSCANL) { fprintf(stderr, "Bad scan list number.\n"); return 0; } if (first_row) { // On first entry, erase the Scanlists table. erase_scanlists(); } if (*prio1_str == '-') { prio1 = 0; } else if (strcasecmp("Sel", prio1_str) == 0) { prio1 = 1; } else { prio1 = atoi(prio1_str); if (prio1 < 1 || prio1 > NCHAN) { fprintf(stderr, "Bad priority channel 1.\n"); return 0; } prio1++; } if (*prio2_str == '-') { prio2 = 0; } else if (strcasecmp("Sel", prio2_str) == 0) { prio2 = 1; } else { prio2 = atoi(prio2_str); if (prio2 < 1 || prio2 > NCHAN) { fprintf(stderr, "Bad priority channel 2.\n"); return 0; } prio2++; } if (strcasecmp("Last", tx_str) == 0) { txchan = 0; } else if (strcasecmp("Sel", tx_str) == 0) { txchan = 1; } else { txchan = atoi(tx_str); if (txchan < 1 || txchan > NCHAN) { fprintf(stderr, "Bad transmit channel.\n"); return 0; } txchan++; } setup_scanlist(snum-1, name_str, prio1, prio2, txchan); if (*chan_str == '-') { // Empty. } else if (strcasecmp("Sel", chan_str) == 0) { // Selected channel only. scanlist_append(snum-1, 0); } else { char *str = chan_str; int nchan = 0; int range = 0; int last = 0; // Parse channel list. for (;;) { char *eptr; int cnum = strtoul(str, &eptr, 10); if (eptr == str) { fprintf(stderr, "Scan list %d: wrong channel list '%s'.\n", snum, str); return 0; } if (cnum < 1 || cnum > NCHAN) { fprintf(stderr, "Scan list %d: wrong channel number %d.\n", snum, cnum); return 0; } if (range) { // Add range. int c; for (c=last+1; c<=cnum; c++) { if (!scanlist_append(snum-1, c)) { fprintf(stderr, "Scan list %d: too many channels.\n", snum); return 0; } nchan++; } } else { // Add single channel. if (!scanlist_append(snum-1, cnum)) { fprintf(stderr, "Scan list %d: too many channels.\n", snum); return 0; } nchan++; } if (*eptr == 0) break; if (*eptr != ',' && *eptr != '-') { fprintf(stderr, "Scan list %d: wrong channel list '%s'.\n", snum, eptr); return 0; } range = (*eptr == '-'); last = cnum; str = eptr + 1; } } return 1; } // // Parse one line of Contacts table. // Return 0 on failure. // static int parse_contact(int first_row, char *line) { char num_str[256], name_str[256], type_str[256], id_str[256], rxtone_str[256]; int cnum, type, id, rxtone; if (sscanf(line, "%s %s %s %s %s", num_str, name_str, type_str, id_str, rxtone_str) != 5) return 0; cnum = atoi(num_str); if (cnum < 1 || cnum > NCONTACTS) { fprintf(stderr, "Bad contact number.\n"); return 0; } if (first_row) { // On first entry, erase the Contacts table. erase_contacts(); } if (strcasecmp("Group", type_str) == 0) { type = CALL_GROUP; } else if (strcasecmp("Private", type_str) == 0) { type = CALL_PRIVATE; } else if (strcasecmp("All", type_str) == 0) { type = CALL_ALL; } else { fprintf(stderr, "Bad call type.\n"); return 0; } id = atoi(id_str); if (id < 1 || id > 0xffffff) { fprintf(stderr, "Bad call ID.\n"); return 0; } if (*rxtone_str == '-' || strcasecmp("No", rxtone_str) == 0) { rxtone = 0; } else if (*rxtone_str == '+' || strcasecmp("Yes", rxtone_str) == 0) { rxtone = 1; } else { fprintf(stderr, "Bad receive tone flag.\n"); return 0; } setup_contact(cnum-1, name_str, type, id, rxtone); return 1; } // // Parse one line of Grouplist table. // Return 0 on failure. // static int parse_grouplist(int first_row, char *line) { char num_str[256], name_str[256], list_str[256]; int glnum; if (sscanf(line, "%s %s %s", num_str, name_str, list_str) != 3) return 0; glnum = strtoul(num_str, 0, 10); if (glnum < 1 || glnum > NGLISTS) { fprintf(stderr, "Bad group list number.\n"); return 0; } if (first_row) { // On first entry, erase the Grouplists table. memset(&radio_mem[OFFSET_GROUPTAB], 0, sizeof(grouptab_t)); } setup_grouplist(glnum-1, name_str); if (*list_str != '-') { char *str = list_str; int range = 0; int last = 0; // Parse contact list. for (;;) { char *eptr; int cnum = strtoul(str, &eptr, 10); if (eptr == str) { fprintf(stderr, "Group list %d: wrong contact list '%s'.\n", glnum, str); return 0; } if (cnum < 1 || cnum > NCONTACTS) { fprintf(stderr, "Group list %d: wrong contact number %d.\n", glnum, cnum); return 0; } if (range) { // Add range. int c; for (c=last+1; c<=cnum; c++) { if (!grouplist_append(glnum-1, c)) { fprintf(stderr, "Group list %d: too many contacts.\n", glnum); return 0; } } } else { // Add single contact. if (!grouplist_append(glnum-1, cnum)) { fprintf(stderr, "Group list %d: too many contacts.\n", glnum); return 0; } } if (*eptr == 0) break; if (*eptr != ',' && *eptr != '-') { fprintf(stderr, "Group list %d: wrong contact list '%s'.\n", glnum, eptr); return 0; } range = (*eptr == '-'); last = cnum; str = eptr + 1; } } return 1; } // // Parse one line of Messages table. // Return 0 on failure. // static int parse_messages(int first_row, char *line) { char *text; int mnum; mnum = strtoul(line, &text, 10); if (text == line || mnum < 1 || mnum > NMESSAGES) { fprintf(stderr, "Bad message number.\n"); return 0; } if (first_row) { // On first entry, erase the Messages table. memset(GET_MSGTAB(), 0, sizeof(msgtab_t)); } setup_message(mnum-1, text); return 1; } // // Parse table header. // Return table id, or 0 in case of error. // static int gd77_parse_header(radio_device_t *radio, char *line) { if (strncasecmp(line, "Digital", 7) == 0) return 'D'; if (strncasecmp(line, "Analog", 6) == 0) return 'A'; if (strncasecmp(line, "Zone", 4) == 0) return 'Z'; if (strncasecmp(line, "Scanlist", 8) == 0) return 'S'; if (strncasecmp(line, "Contact", 7) == 0) return 'C'; if (strncasecmp(line, "Grouplist", 9) == 0) return 'G'; if (strncasecmp(line, "Message", 7) == 0) return 'M'; return 0; } // // Parse one line of table data. // Return 0 on failure. // static int gd77_parse_row(radio_device_t *radio, int table_id, int first_row, char *line) { switch (table_id) { case 'D': return parse_digital_channel(radio, first_row, line); case 'A': return parse_analog_channel(radio, first_row, line); case 'Z': return parse_zones(first_row, line); case 'S': return parse_scanlist(first_row, line); case 'C': return parse_contact(first_row, line); case 'G': return parse_grouplist(first_row, line); case 'M': return parse_messages(first_row, line); } return 0; } // // Update timestamp. // static void gd77_update_timestamp(radio_device_t *radio) { unsigned char *timestamp = GET_TIMESTAMP(); char p[16]; // Last Programmed Date get_timestamp(p); timestamp[0] = ((p[0] & 0xf) << 4) | (p[1] & 0xf); // year upper timestamp[1] = ((p[2] & 0xf) << 4) | (p[3] & 0xf); // year lower timestamp[2] = ((p[4] & 0xf) << 4) | (p[5] & 0xf); // month timestamp[3] = ((p[6] & 0xf) << 4) | (p[7] & 0xf); // day timestamp[4] = ((p[8] & 0xf) << 4) | (p[9] & 0xf); // hour timestamp[5] = ((p[10] & 0xf) << 4) | (p[11] & 0xf); // minute } // // Check that configuration is correct. // Return 0 on error. // static int gd77_verify_config(radio_device_t *radio) { int i, k, nchannels = 0, nzones = 0, nscanlists = 0, ngrouplists = 0; int ncontacts = 0, nerrors = 0; // Channels: check references to scanlists, contacts and grouplists. for (i=0; iscan_list_index != 0) { scanlist_t *sl = get_scanlist(ch->scan_list_index - 1); if (!sl) { fprintf(stderr, "Channel %d '", i+1); print_ascii(stderr, ch->name, 16, 0); fprintf(stderr, "': scanlist %d not found.\n", ch->scan_list_index); nerrors++; } } if (ch->contact_name_index != 0) { contact_t *ct = GET_CONTACT(ch->contact_name_index - 1); if (!VALID_CONTACT(ct)) { fprintf(stderr, "Channel %d '", i+1); print_ascii(stderr, ch->name, 16, 0); fprintf(stderr, "': contact %d not found.\n", ch->contact_name_index); nerrors++; } } if (ch->group_list_index != 0) { grouplist_t *gl = get_grouplist(ch->group_list_index - 1); if (!gl) { fprintf(stderr, "Channel %d '", i+1); print_ascii(stderr, ch->name, 16, 0); fprintf(stderr, "': grouplist %d not found.\n", ch->group_list_index); nerrors++; } } } // Zones: check references to channels. for (i=0; imember[k]; if (cnum != 0 && !get_channel(cnum - 1)) { fprintf(stderr, "Zone %d '", i+1); print_ascii(stderr, z->name, 16, 0); fprintf(stderr, "': channel %d not found.\n", cnum); nerrors++; } } } // Scanlists: check references to channels. for (i=0; imember[k] - 1; if (cnum > 0 && !get_channel(cnum - 1)) { fprintf(stderr, "Scanlist %d '", i+1); print_ascii(stderr, sl->name, 15, 0); fprintf(stderr, "': channel %d not found.\n", cnum); nerrors++; } } } // Grouplists: check references to contacts. for (i=0; imember[k]; if (cnum != 0) { contact_t *ct = GET_CONTACT(cnum - 1); if (!VALID_CONTACT(ct)) { fprintf(stderr, "Grouplist %d '", i+1); print_ascii(stderr, gl->name, 16, 0); fprintf(stderr, "': contact %d not found.\n", cnum); nerrors++; } } } } // Count contacts. for (i=0; i 0) { fprintf(stderr, "Total %d errors.\n", nerrors); return 0; } fprintf(stderr, "Total %d channels, %d zones, %d scanlists, %d contacts, %d grouplists.\n", nchannels, nzones, nscanlists, ncontacts, ngrouplists); return 1; } // // Radioddity GD-77, version 3.1.1 and later // radio_device_t radio_gd77 = { "Radioddity GD-77", gd77_download, gd77_upload, gd77_is_compatible, gd77_read_image, gd77_save_image, gd77_print_version, gd77_print_config, gd77_verify_config, gd77_parse_parameter, gd77_parse_header, gd77_parse_row, gd77_update_timestamp, //TODO: gd77_write_csv, }; dmrconfig-master/hid-libusb.c000066400000000000000000000174721354060760700165300ustar00rootroot00000000000000/* * HID routines for Linux, via libusb-1.0. * * Copyright (C) 2018 Serge Vakulenko, KK6ABQ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include #include #include #include "util.h" static libusb_context *ctx = NULL; // libusb context static libusb_device_handle *dev; // libusb device static struct libusb_transfer *transfer; // async transfer descriptor static unsigned char receive_buf[42]; // receive buffer static volatile int nbytes_received = 0; // receive result #define HID_INTERFACE 0 // interface index #define TIMEOUT_MSEC 500 // receive timeout // // Callback function for asynchronous receive. // Needs to fill the receive_buf and set nbytes_received. // static void read_callback(struct libusb_transfer *t) { switch (t->status) { case LIBUSB_TRANSFER_COMPLETED: //fprintf(stderr, "%s: Transfer complete, %d bytes\n", __func__, t->actual_length); memcpy(receive_buf, t->buffer, t->actual_length); nbytes_received = t->actual_length; break; case LIBUSB_TRANSFER_CANCELLED: //fprintf(stderr, "%s: Transfer cancelled\n", __func__); nbytes_received = LIBUSB_ERROR_INTERRUPTED; return; case LIBUSB_TRANSFER_NO_DEVICE: //fprintf(stderr, "%s: No device\n", __func__); nbytes_received = LIBUSB_ERROR_NO_DEVICE; return; case LIBUSB_TRANSFER_TIMED_OUT: //fprintf(stderr, "%s: Timeout (normal)\n", __func__); nbytes_received = LIBUSB_ERROR_TIMEOUT; break; default: //fprintf(stderr, "%s: Unknown transfer code: %d\n", __func__, t->status); nbytes_received = LIBUSB_ERROR_IO; } } // // Write data to the device and receive reply. // Return negative status on error. // Return received byte count of success. // On timeout, repeat the transaction. // Need to use callback for receive interrupt transfer. // static int write_read(const unsigned char *data, unsigned length, unsigned char *reply, unsigned rlength) { if (! transfer) { // Allocate transfer descriptor on first invocation. transfer = libusb_alloc_transfer(0); } libusb_fill_interrupt_transfer(transfer, dev, LIBUSB_RECIPIENT_INTERFACE|LIBUSB_ENDPOINT_IN, reply, rlength, read_callback, 0, TIMEOUT_MSEC); again: nbytes_received = 0; libusb_submit_transfer(transfer); int result = libusb_control_transfer(dev, LIBUSB_REQUEST_TYPE_CLASS|LIBUSB_RECIPIENT_INTERFACE|LIBUSB_ENDPOINT_OUT, 0x09/*HID Set_Report*/, (2/*HID output*/ << 8) | 0, HID_INTERFACE, (unsigned char*)data, length, TIMEOUT_MSEC); if (result < 0) { fprintf(stderr, "Error %d transmitting data via control transfer: %s\n", result, libusb_strerror(result)); libusb_cancel_transfer(transfer); return -1; } while (nbytes_received == 0) { result = libusb_handle_events(ctx); if (result < 0) { /* Break out of this loop only on fatal error.*/ if (result != LIBUSB_ERROR_BUSY && result != LIBUSB_ERROR_TIMEOUT && result != LIBUSB_ERROR_OVERFLOW && result != LIBUSB_ERROR_INTERRUPTED) { fprintf(stderr, "Error %d receiving data via interrupt transfer: %s\n", result, libusb_strerror(result)); return result; } } } if (nbytes_received == LIBUSB_ERROR_TIMEOUT) { if (trace_flag > 0) { fprintf(stderr, "No response from HID device!\n"); } goto again; } return nbytes_received; } // // Send a request to the device. // Store the reply into the rdata[] array. // Terminate in case of errors. // void hid_send_recv(const unsigned char *data, unsigned nbytes, unsigned char *rdata, unsigned rlength) { unsigned char buf[42]; unsigned char reply[42]; unsigned k; int reply_len; memset(buf, 0, sizeof(buf)); buf[0] = 1; buf[1] = 0; buf[2] = nbytes; buf[3] = nbytes >> 8; if (nbytes > 0) memcpy(buf+4, data, nbytes); nbytes += 4; if (trace_flag > 0) { fprintf(stderr, "---Send"); for (k=0; k 0) { fprintf(stderr, "---Recv"); for (k=0; k #include #include #include #include #include "util.h" static volatile IOHIDDeviceRef dev; // device handle static unsigned char transfer_buf[42]; // device buffer static unsigned char receive_buf[42]; // receive buffer static volatile int nbytes_received = 0; // receive result // // Send a request to the device. // Store the reply into the rdata[] array. // Terminate in case of errors. // void hid_send_recv(const unsigned char *data, unsigned nbytes, unsigned char *rdata, unsigned rlength) { unsigned char buf[42]; unsigned k; IOReturn result; memset(buf, 0, sizeof(buf)); buf[0] = 1; buf[1] = 0; buf[2] = nbytes; buf[3] = nbytes >> 8; if (nbytes > 0) memcpy(buf+4, data, nbytes); nbytes += 4; if (trace_flag > 0) { fprintf(stderr, "---Send"); for (k=0; k= 1000) { if (trace_flag > 0) { fprintf(stderr, "No response from HID device!\n"); } goto again; } } if (nbytes_received != sizeof(receive_buf)) { fprintf(stderr, "Short read: %d bytes instead of %d!\n", nbytes_received, (int)sizeof(receive_buf)); exit(-1); } if (trace_flag > 0) { fprintf(stderr, "---Recv"); for (k=0; k sizeof(receive_buf)) { fprintf(stderr, "Too large HID input: %d bytes!\n", (int)nbytes); exit(-1); } nbytes_received = nbytes; if (nbytes > 0) memcpy(receive_buf, data, nbytes); } // // Callback: device specified in the matching dictionary has been added // static void callback_open(void *context, IOReturn result, void *sender, IOHIDDeviceRef deviceRef) { IOReturn o = IOHIDDeviceOpen(deviceRef, kIOHIDOptionsTypeSeizeDevice); if (o != kIOReturnSuccess) { fprintf(stderr, "Cannot open HID device!\n"); exit(-1); } // Register input callback. IOHIDDeviceRegisterInputReportCallback(deviceRef, transfer_buf, sizeof(transfer_buf), callback_input, 0); dev = deviceRef; } // // Callback: device specified in the matching dictionary has been removed // static void callback_close(void *ontext, IOReturn result, void *sender, IOHIDDeviceRef deviceRef) { // De-register input callback. IOHIDDeviceRegisterInputReportCallback(deviceRef, transfer_buf, sizeof(transfer_buf), NULL, NULL); } // // Launch the IOHIDManager. // int hid_init(int vid, int pid) { // Create the USB HID Manager. IOHIDManagerRef HIDManager = IOHIDManagerCreate(kCFAllocatorDefault, kIOHIDOptionsTypeNone); // Create an empty matching dictionary for filtering USB devices in our HID manager. CFMutableDictionaryRef matchDict = CFDictionaryCreateMutable(kCFAllocatorDefault, 2, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); // Specify the USB device manufacturer and product in our matching dictionary. CFDictionarySetValue(matchDict, CFSTR(kIOHIDVendorIDKey), CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &vid)); CFDictionarySetValue(matchDict, CFSTR(kIOHIDProductIDKey), CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &pid)); // Apply the matching to our HID manager. IOHIDManagerSetDeviceMatching(HIDManager, matchDict); CFRelease(matchDict); // The HID manager will use callbacks when specified USB devices are connected/disconnected. IOHIDManagerRegisterDeviceMatchingCallback(HIDManager, &callback_open, NULL); IOHIDManagerRegisterDeviceRemovalCallback(HIDManager, &callback_close, NULL); // Add the HID manager to the main run loop IOHIDManagerScheduleWithRunLoop(HIDManager, CFRunLoopGetMain(), kCFRunLoopDefaultMode); // Open the HID mangager IOReturn IOReturn = IOHIDManagerOpen(HIDManager, kIOHIDOptionsTypeNone); if (IOReturn != kIOReturnSuccess) { if (trace_flag) { fprintf(stderr, "Cannot find USB device %04x:%04x\n", vid, pid); } return -1; } // Run main application loop until device found. int k; for (k=0; ; k++) { CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0, 0); if (dev) return 0; if (k >= 3) { if (trace_flag) { fprintf(stderr, "Cannot find USB device %04x:%04x\n", vid, pid); } return -1; } usleep(10000); } } // // Close HID device. // void hid_close() { if (!dev) return; IOHIDDeviceClose(dev, kIOHIDOptionsTypeNone); dev = 0; } dmrconfig-master/hid-windows.c000066400000000000000000000145531354060760700167370ustar00rootroot00000000000000/* * HID routines for Windows. * * Copyright (C) 2018 Serge Vakulenko, KK6ABQ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include #include #include #include #include #include #include "util.h" HANDLE dev = INVALID_HANDLE_VALUE; // HID device static unsigned char receive_buf[42]; // receive buffer // // Send a request to the device. // Store the reply into the rdata[] array. // Terminate in case of errors. // void hid_send_recv(const unsigned char *data, unsigned nbytes, unsigned char *rdata, unsigned rlength) { unsigned char buf[42]; unsigned k; DWORD nbytes_received; memset(buf, 0, sizeof(buf)); buf[0] = 1; buf[1] = 0; buf[2] = nbytes; buf[3] = nbytes >> 8; if (nbytes > 0) memcpy(buf+4, data, nbytes); nbytes += 4; if (trace_flag > 0) { fprintf(stderr, "---Send"); for (k=0; k 0) { fprintf(stderr, "---Recv"); for (k=0; kcbSize = sizeof(SP_INTERFACE_DEVICE_DETAIL_DATA); SP_DEVINFO_DATA did = { sizeof(SP_DEVINFO_DATA) }; // Get device information. if (!SetupDiGetDeviceInterfaceDetail(devinfo, &iface, detail, needed, NULL, &did)) { printf("Device %d: cannot get path!\n", index); continue; } //printf("Device %d: path %s\n", index, detail->DevicePath); dev = CreateFile(detail->DevicePath, GENERIC_WRITE | GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL); if (dev == INVALID_HANDLE_VALUE) { continue; } // Get the Vendor ID and Product ID for this device. HIDD_ATTRIBUTES attrib; attrib.Size = sizeof(HIDD_ATTRIBUTES); HidD_GetAttributes(dev, &attrib); //printf("Vendor/Product: %04x %04x\n", attrib.VendorID, attrib.ProductID); // Check the VID/PID. if (attrib.VendorID != vid || attrib.ProductID != pid) { CloseHandle(dev); dev = INVALID_HANDLE_VALUE; continue; } // Required device found. break; } SetupDiDestroyDeviceInfoList(devinfo); if (dev == INVALID_HANDLE_VALUE) { if (trace_flag) { fprintf(stderr, "Cannot find HID device %04x:%04x\n", vid, pid); } return -1; } return 0; } // // Close HID device. // void hid_close() { if (dev != INVALID_HANDLE_VALUE) { CloseHandle(dev); dev = INVALID_HANDLE_VALUE; } } dmrconfig-master/hid.c000066400000000000000000000127641354060760700152510ustar00rootroot00000000000000/* * HID routines, OS independent. * * Copyright (C) 2018 Serge Vakulenko, KK6ABQ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include #include #include "util.h" static const unsigned char CMD_PRG[] = "\2PROGRA"; static const unsigned char CMD_PRG2[] = "M\2"; static const unsigned char CMD_ACK[] = "A"; static const unsigned char CMD_READ[] = "Raan"; static const unsigned char CMD_WRITE[] = "Waan..."; static const unsigned char CMD_ENDR[] = "ENDR"; static const unsigned char CMD_ENDW[] = "ENDW"; static const unsigned char CMD_CWB0[] = "CWB\4\0\0\0\0"; static const unsigned char CMD_CWB1[] = "CWB\4\0\1\0\0"; static unsigned offset = 0; // CWD offset // // Query and return the device identification string. // const char *hid_identify() { static unsigned char reply[38]; unsigned char ack; hid_send_recv(CMD_PRG, 7, &ack, 1); if (ack != CMD_ACK[0]) { fprintf(stderr, "%s: Wrong PRD acknowledge %#x, expected %#x\n", __func__, ack, CMD_ACK[0]); return 0; } hid_send_recv(CMD_PRG2, 2, reply, 16); hid_send_recv(CMD_ACK, 1, &ack, 1); if (ack != CMD_ACK[0]) { fprintf(stderr, "%s: Wrong PRG2 acknowledge %#x, expected %#x\n", __func__, ack, CMD_ACK[0]); return 0; } // Reply: // 42 46 2d 35 52 ff ff ff 56 32 31 30 00 04 80 04 // B F - 5 R V 2 1 0 // Terminate the string. char *p = memchr(reply, 0xff, sizeof(reply)); if (p) *p = 0; return (char*)reply; } void hid_read_block(int bno, unsigned char *data, int nbytes) { unsigned addr = bno * nbytes; unsigned char ack, cmd[4], reply[32+4]; int n; if (addr < 0x10000 && offset != 0) { offset = 0; hid_send_recv(CMD_CWB0, 8, &ack, 1); if (ack != CMD_ACK[0]) { fprintf(stderr, "%s: Wrong acknowledge %#x, expected %#x\n", __func__, ack, CMD_ACK[0]); exit(-1); } } else if (addr >= 0x10000 && offset == 0) { offset = 0x00010000; hid_send_recv(CMD_CWB1, 8, &ack, 1); if (ack != CMD_ACK[0]) { fprintf(stderr, "%s: Wrong acknowledge %#x, expected %#x\n", __func__, ack, CMD_ACK[0]); exit(-1); } } for (n=0; n> 8; cmd[2] = addr + n; cmd[3] = 32; hid_send_recv(cmd, 4, reply, sizeof(reply)); memcpy(data + n, reply + 4, 32); } } void hid_write_block(int bno, unsigned char *data, int nbytes) { unsigned addr = bno * nbytes; unsigned char ack, cmd[4+32]; int n; if (addr < 0x10000 && offset != 0) { offset = 0; hid_send_recv(CMD_CWB0, 8, &ack, 1); if (ack != CMD_ACK[0]) { fprintf(stderr, "%s: Wrong acknowledge %#x, expected %#x\n", __func__, ack, CMD_ACK[0]); exit(-1); } } else if (addr >= 0x10000 && offset == 0) { offset = 0x00010000; hid_send_recv(CMD_CWB1, 8, &ack, 1); if (ack != CMD_ACK[0]) { fprintf(stderr, "%s: Wrong acknowledge %#x, expected %#x\n", __func__, ack, CMD_ACK[0]); exit(-1); } } for (n=0; n> 8; cmd[2] = addr + n; cmd[3] = 32; memcpy(cmd + 4, data + n, 32); hid_send_recv(cmd, 4+32, &ack, 1); if (ack != CMD_ACK[0]) { fprintf(stderr, "%s: Wrong acknowledge %#x, expected %#x\n", __func__, ack, CMD_ACK[0]); exit(-1); } } } void hid_read_finish() { unsigned char ack; hid_send_recv(CMD_ENDR, 4, &ack, 1); if (ack != CMD_ACK[0]) { fprintf(stderr, "%s: Wrong acknowledge %#x, expected %#x\n", __func__, ack, CMD_ACK[0]); } } void hid_write_finish() { unsigned char ack; hid_send_recv(CMD_ENDW, 4, &ack, 1); if (ack != CMD_ACK[0]) { fprintf(stderr, "%s: Wrong acknowledge %#x, expected %#x\n", __func__, ack, CMD_ACK[0]); } } dmrconfig-master/main.c000066400000000000000000000153231354060760700154230ustar00rootroot00000000000000/* * Configuration Utility for DMR radios. * * Copyright (C) 2018 Serge Vakulenko, KK6ABQ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include #include "radio.h" #include "util.h" const char version[] = VERSION; const char *copyright; extern char *optarg; extern int optind; void usage() { fprintf(stderr, "DMR Config, Version %s, %s\n", version, copyright); fprintf(stderr, "Usage:\n"); fprintf(stderr, " dmrconfig -r [-t]\n"); fprintf(stderr, " Read codeplug from the radio to a file 'device.img'.\n"); fprintf(stderr, " Save configuration to a text file 'device.conf'.\n"); fprintf(stderr, " dmrconfig -w [-t] file.img\n"); fprintf(stderr, " Write codeplug to the radio.\n"); fprintf(stderr, " dmrconfig -v [-t] file.conf\n"); fprintf(stderr, " Verify configuration script for the radio.\n"); fprintf(stderr, " dmrconfig -c [-t] file.conf\n"); fprintf(stderr, " Apply configuration script to the radio.\n"); fprintf(stderr, " dmrconfig -c file.img file.conf\n"); fprintf(stderr, " Apply configuration script to the codeplug image.\n"); fprintf(stderr, " Store modified copy to a file 'device.img'.\n"); fprintf(stderr, " dmrconfig file.img\n"); fprintf(stderr, " Display configuration from the codeplug image.\n"); fprintf(stderr, " dmrconfig -u [-t] file.csv\n"); fprintf(stderr, " Update contacts database from CSV file.\n"); fprintf(stderr, "Options:\n"); fprintf(stderr, " -r Read codeplug from the radio.\n"); fprintf(stderr, " -w Write codeplug to the radio.\n"); fprintf(stderr, " -c Configure the radio from a text script.\n"); fprintf(stderr, " -v Verify config file.\n"); fprintf(stderr, " -u Update contacts database.\n"); fprintf(stderr, " -l List all supported radios.\n"); fprintf(stderr, " -t Trace USB protocol.\n"); exit(-1); } int main(int argc, char **argv) { int read_flag = 0, write_flag = 0, config_flag = 0, csv_flag = 0; int list_flag = 0, verify_flag = 0; copyright = "Copyright (C) 2018 Serge Vakulenko KK6ABQ"; trace_flag = 0; for (;;) { switch (getopt(argc, argv, "tcwrulv")) { case 't': ++trace_flag; continue; case 'r': ++read_flag; continue; case 'w': ++write_flag; continue; case 'c': ++config_flag; continue; case 'u': ++csv_flag; continue; case 'l': ++list_flag; continue; case 'v': ++verify_flag; continue; default: usage(); case EOF: break; } break; } argc -= optind; argv += optind; if (list_flag) { radio_list(); exit(0); } if (read_flag + write_flag + config_flag + csv_flag + verify_flag > 1) { fprintf(stderr, "Only one of -r, -w, -c, -v or -u options is allowed.\n"); usage(); } setvbuf(stdout, 0, _IOLBF, 0); setvbuf(stderr, 0, _IOLBF, 0); if (write_flag) { // Restore image file to device. if (argc != 1) usage(); radio_connect(); radio_read_image(argv[0]); radio_print_version(stdout); radio_upload(0); radio_disconnect(); } else if (config_flag) { if (argc != 1 && argc != 2) usage(); if (argc == 2) { // Apply text config to image file. radio_read_image(argv[0]); radio_print_version(stdout); radio_parse_config(argv[1]); radio_verify_config(); radio_save_image("device.img"); } else { // Update device from text config file. radio_connect(); radio_download(); radio_print_version(stdout); radio_save_image("backup.img"); radio_parse_config(argv[0]); radio_verify_config(); radio_upload(1); radio_disconnect(); } } else if (verify_flag) { if (argc != 1) usage(); // Verify text config file. radio_connect(); radio_parse_config(argv[0]); radio_verify_config(); radio_disconnect(); } else if (read_flag) { if (argc != 0) usage(); // Dump device to image file. radio_connect(); radio_download(); radio_print_version(stdout); radio_disconnect(); radio_save_image("device.img"); // Print configuration to file. const char *filename = "device.conf"; printf("Print configuration to file '%s'.\n", filename); FILE *conf = fopen(filename, "w"); if (!conf) { perror(filename); exit(-1); } radio_print_config(conf, 1); fclose(conf); } else if (csv_flag) { // Update contacts database on the device. if (argc != 1) usage(); radio_connect(); radio_write_csv(argv[0]); radio_disconnect(); } else { if (argc != 1) usage(); // Print configuration from image file. radio_read_image(argv[0]); radio_print_config(stdout, !isatty(1)); } return 0; } dmrconfig-master/md380.c000066400000000000000000001766551354060760700153520ustar00rootroot00000000000000/* * Interface to TYT MD-380. * * Copyright (C) 2018 Serge Vakulenko, KK6ABQ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include #include #include #include #include "radio.h" #include "util.h" #define NCHAN 1000 #define NCONTACTS 1000 #define NZONES 250 #define NGLISTS 250 #define NSCANL 250 #define NMESSAGES 50 #define MEMSZ 0x40000 #define OFFSET_TIMESTMP 0x02001 #define OFFSET_SETTINGS 0x02040 #define OFFSET_MSG 0x02180 #define OFFSET_CONTACTS 0x05f80 #define OFFSET_GLISTS 0x0ec20 #define OFFSET_ZONES 0x149e0 #define OFFSET_SCANL 0x18860 #define OFFSET_CHANNELS 0x1ee00 #define GET_TIMESTAMP() (&radio_mem[OFFSET_TIMESTMP]) #define GET_SETTINGS() ((general_settings_t*) &radio_mem[OFFSET_SETTINGS]) #define GET_CHANNEL(i) ((channel_t*) &radio_mem[OFFSET_CHANNELS + (i)*64]) #define GET_ZONE(i) ((zone_t*) &radio_mem[OFFSET_ZONES + (i)*64]) #define GET_ZONEXT(i) ((zone_ext_t*) &radio_mem[OFFSET_ZONEXT + (i)*224]) #define GET_SCANLIST(i) ((scanlist_t*) &radio_mem[OFFSET_SCANL + (i)*104]) #define GET_CONTACT(i) ((contact_t*) &radio_mem[OFFSET_CONTACTS + (i)*36]) #define GET_GROUPLIST(i) ((grouplist_t*) &radio_mem[OFFSET_GLISTS + (i)*96]) #define GET_MESSAGE(i) ((uint16_t*) &radio_mem[OFFSET_MSG + (i)*288]) #define VALID_TEXT(txt) (*(txt) != 0 && *(txt) != 0xffff) #define VALID_CHANNEL(ch) VALID_TEXT((ch)->name) #define VALID_ZONE(z) VALID_TEXT((z)->name) #define VALID_SCANLIST(sl) VALID_TEXT((sl)->name) #define VALID_GROUPLIST(gl) VALID_TEXT((gl)->name) #define VALID_CONTACT(ct) ((ct)->type != 0 && VALID_TEXT((ct)->name)) // // Channel data. // typedef struct { // Byte 0 uint8_t channel_mode : 2, // Mode: Analog or Digital #define MODE_ANALOG 1 #define MODE_DIGITAL 2 bandwidth : 2, // Bandwidth: 12.5 or 20 or 25 kHz #define BW_12_5_KHZ 0 #define BW_20_KHZ 1 #define BW_25_KHZ 2 autoscan : 1, // Autoscan Enable squelch : 1, // Squelch #define SQ_TIGHT 0 #define SQ_NORMAL 1 _unused1 : 1, // 1 lone_worker : 1; // Lone Worker // Byte 1 uint8_t talkaround : 1, // Allow Talkaround rx_only : 1, // RX Only Enable repeater_slot : 2, // Repeater Slot: 1 or 2 colorcode : 4; // Color Code: 0...15 // Byte 2 uint8_t privacy_no : 4, // Privacy No. (+1): 1...16 privacy : 2, // Privacy: None, Basic or Enhanced #define PRIV_NONE 0 #define PRIV_BASIC 1 #define PRIV_ENHANCED 2 private_call_conf : 1, // Private Call Confirmed data_call_conf : 1; // Data Call Confirmed // Byte 3 uint8_t rx_ref_frequency : 2, // RX Ref Frequency: Low, Medium or High #define REF_LOW 0 #define REF_MEDIUM 1 #define REF_HIGH 2 _unused2 : 1, // 0 emergency_alarm_ack : 1, // Emergency Alarm Ack _unused3 : 2, // 0b10 uncompressed_udp : 1, // Compressed UDP Data header (0) Enable, (1) Disable display_pttid_dis : 1; // Display PTT ID (inverted) // Byte 4 uint8_t tx_ref_frequency : 2, // RX Ref Frequency: Low, Medium or High _unused4 : 2, // 0b01 vox : 1, // VOX Enable power : 1, // Power: Low, High #define POWER_HIGH 1 #define POWER_LOW 0 admit_criteria : 2; // Admit Criteria: Always, Channel Free or Correct CTS/DCS #define ADMIT_ALWAYS 0 #define ADMIT_CH_FREE 1 #define ADMIT_TONE 2 #define ADMIT_COLOR 3 // Byte 5 uint8_t _unused5 : 4, // 0 in_call_criteria : 2, // In Call Criteria: Always, Follow Admit Criteria or TX Interrupt #define INCALL_ALWAYS 0 #define INCALL_ADMIT 1 _unused6 : 2; // 0b11 // Bytes 6-7 uint16_t contact_name_index; // Contact Name: Contact1... // Bytes 8-9 uint8_t tot : 6, // TOT x 15sec: 0-Infinite, 1=15s... 37=555s _unused13 : 2; // 0 uint8_t tot_rekey_delay; // TOT Rekey Delay: 0s...255s // Bytes 10-11 uint8_t emergency_system_index; // Emergency System: None, System1...32 uint8_t scan_list_index; // Scan List: None, ScanList1...250 // Bytes 12-13 uint8_t group_list_index; // Group List: None, GroupList1...250 uint8_t _unused7; // 0 // Bytes 14-15 uint8_t _unused8; // 0 uint8_t _unused9; // 0xff // Bytes 16-23 uint32_t rx_frequency; // RX Frequency: 8 digits BCD uint32_t tx_frequency; // TX Frequency: 8 digits BCD // Bytes 24-27 uint16_t ctcss_dcs_receive; // CTCSS/DCS Dec: 4 digits BCD uint16_t ctcss_dcs_transmit; // CTCSS/DCS Enc: 4 digits BCD // Bytes 28-29 uint8_t rx_signaling_syst; // Rx Signaling System: Off, DTMF-1...4 uint8_t tx_signaling_syst; // Tx Signaling System: Off, DTMF-1...4 // Bytes 30-31 uint8_t _unused10; // 0xff uint8_t _unused11; // 0xff // Bytes 32-63 uint16_t name[16]; // Channel Name (Unicode) } channel_t; // // Contact data. // typedef struct { // Bytes 0-2 uint8_t id[3]; // Call ID: 1...16777215 #define CONTACT_ID(ct) ((ct)->id[0] | ((ct)->id[1] << 8) | ((ct)->id[2] << 16)) // Byte 3 uint8_t type : 5, // Call Type: Group Call, Private Call or All Call #define CALL_GROUP 1 #define CALL_PRIVATE 2 #define CALL_ALL 3 receive_tone : 1, // Call Receive Tone: No or yes _unused2 : 2; // 0b11 // Bytes 4-19 uint16_t name[16]; // Contact Name (Unicode) } contact_t; // // Zone data. // typedef struct { // Bytes 0-31 uint16_t name[16]; // Zone Name (Unicode) // Bytes 32-63 uint16_t member[16]; // Member: channels 1...16 } zone_t; // // Group list data. // typedef struct { // Bytes 0-31 uint16_t name[16]; // Group List Name (Unicode) // Bytes 32-95 uint16_t member[32]; // Contacts } grouplist_t; // // Scan list data. // typedef struct { // Bytes 0-31 uint16_t name[16]; // Scan List Name (Unicode) // Bytes 32-37 uint16_t priority_ch1; // Priority Channel 1 or ffff uint16_t priority_ch2; // Priority Channel 2 or ffff uint16_t tx_designated_ch; // Tx Designated Channel or ffff // Bytes 38-41 uint8_t _unused1; // 0xf1 uint8_t sign_hold_time; // Signaling Hold Time (x25 = msec) uint8_t prio_sample_time; // Priority Sample Time (x250 = msec) uint8_t _unused2; // 0xff // Bytes 42-103 uint16_t member[31]; // Channels } scanlist_t; // // General settings. // TODO: verify the general settings with official CPS // typedef struct { // Bytes 0-19 uint16_t intro_line1[10]; // Bytes 20-39 uint16_t intro_line2[10]; // Bytes 40-63 uint8_t _unused40[24]; // Byte 64 uint8_t _unused64_0 : 3, monitor_type : 1, _unused64_4 : 1, disable_all_leds : 1, _unused64_6 : 2; // Byte 65 uint8_t talk_permit_tone : 2, pw_and_lock_enable : 1, ch_free_indication_tone : 1, _unused65_4 : 1, disable_all_tones : 1, save_mode_receive : 1, save_preamble : 1; // Byte 66 uint8_t _unused66_0 : 2, keypad_tones : 1, intro_picture : 1, _unused66_4 : 4; // Byte 67 uint8_t _unused67; // Bytes 68-71 uint8_t radio_id[3]; uint8_t _unused71; // Bytes 72-84 uint8_t tx_preamble_duration; uint8_t group_call_hang_time; uint8_t private_call_hang_time; uint8_t vox_sensitivity; uint8_t _unused76[2]; uint8_t rx_low_battery_interval; uint8_t call_alert_tone_duration; uint8_t lone_worker_response_time; uint8_t lone_worker_reminder_time; uint8_t _unused82; uint8_t scan_digital_hang_time; uint8_t scan_analog_hang_time; // Byte 85 uint8_t _unused85_0 : 6, backlight_time : 2; // Bytes 86-87 uint8_t set_keypad_lock_time; uint8_t mode; // Bytes 88-95 uint32_t power_on_password; uint32_t radio_prog_password; // Bytes 96-103 uint8_t pc_prog_password[8]; // Bytes 104-111 uint8_t _unused104[8]; // Bytes 112-143 uint16_t radio_name[16]; } general_settings_t; static const char *POWER_NAME[] = { "Low", "High" }; static const char *SQUELCH_NAME[] = { "Tight", "Normal" }; static const char *BANDWIDTH[] = { "12.5", "20", "25", "25" }; static const char *CONTACT_TYPE[] = { "-", "Group", "Private", "All" }; static const char *ADMIT_NAME[] = { "-", "Free", "Tone", "Color" }; #ifdef PRINT_RARE_PARAMS static const char *INCALL_NAME[] = { "-", "Admit", "-", "Admit" }; static const char *REF_FREQUENCY[] = { "Low", "Med", "High" }; static const char *PRIVACY_NAME[] = { "-", "Basic", "Enhanced" }; static const char *SIGNALING_SYSTEM[] = { "-", "DTMF-1", "DTMF-2", "DTMF-3", "DTMF-4" }; #endif // // Print a generic information about the device. // static void md380_print_version(radio_device_t *radio, FILE *out) { unsigned char *timestamp = GET_TIMESTAMP(); static const char charmap[16] = "0123456789:;<=>?"; if (*timestamp != 0xff) { fprintf(out, "Last Programmed Date: %d%d%d%d-%d%d-%d%d", timestamp[0] >> 4, timestamp[0] & 15, timestamp[1] >> 4, timestamp[1] & 15, timestamp[2] >> 4, timestamp[2] & 15, timestamp[3] >> 4, timestamp[3] & 15); fprintf(out, " %d%d:%d%d:%d%d\n", timestamp[4] >> 4, timestamp[4] & 15, timestamp[5] >> 4, timestamp[5] & 15, timestamp[6] >> 4, timestamp[6] & 15); fprintf(out, "CPS Software Version: V%c%c.%c%c\n", charmap[timestamp[7] & 15], charmap[timestamp[8] & 15], charmap[timestamp[9] & 15], charmap[timestamp[10] & 15]); } } // // Read memory image from the device. // static void md380_download(radio_device_t *radio) { int bno; for (bno=0; bnoname, name, 16); } // // Add channel to a zone. // Return 0 on failure. // static int zone_append(int index, int cnum) { zone_t *z = GET_ZONE(index); int i; for (i=0; i<16; i++) { if (z->member[i] == cnum) return 1; if (z->member[i] == 0) { z->member[i] = cnum; return 1; } } return 0; } static void erase_zone(int index) { zone_t *z = GET_ZONE(index); memset(z, 0, 64); } // // Set parameters for a given scan list. // static void setup_scanlist(int index, const char *name, int prio1, int prio2, int txchan) { scanlist_t *sl = GET_SCANLIST(index); // Bytes 0-31 utf8_decode(sl->name, name, 16); // Bytes 32-37 sl->priority_ch1 = prio1; sl->priority_ch2 = prio2; sl->tx_designated_ch = txchan; } static void erase_scanlist(int index) { scanlist_t *sl = GET_SCANLIST(index); memset(sl, 0, 104); // Bytes 32-37 sl->priority_ch1 = 0xffff; sl->priority_ch2 = 0xffff; sl->tx_designated_ch = 0xffff; // Bytes 38-41 sl->_unused1 = 0xf1; sl->sign_hold_time = 500 / 25; // 500 msec sl->prio_sample_time = 2000 / 250; // 2 sec sl->_unused2 = 0xff; } // // Add channel to a zone. // Return 0 on failure. // static int scanlist_append(int index, int cnum) { scanlist_t *sl = GET_SCANLIST(index); int i; for (i=0; i<31; i++) { if (sl->member[i] == cnum) return 1; if (sl->member[i] == 0) { sl->member[i] = cnum; return 1; } } return 0; } static void erase_contact(int index) { contact_t *ct = GET_CONTACT(index); memset(ct, 0, 36); *(uint32_t*)ct = 0xffffffff; } static void setup_contact(int index, const char *name, int type, int id, int rxtone) { contact_t *ct = GET_CONTACT(index); ct->id[0] = id; ct->id[1] = id >> 8; ct->id[2] = id >> 16; ct->type = type; ct->receive_tone = rxtone; utf8_decode(ct->name, name, 16); } static void setup_grouplist(int index, const char *name) { grouplist_t *gl = GET_GROUPLIST(index); utf8_decode(gl->name, name, 16); } // // Add contact to a grouplist. // Return 0 on failure. // static int grouplist_append(int index, int cnum) { grouplist_t *gl = GET_GROUPLIST(index); int i; for (i=0; i<32; i++) { if (gl->member[i] == cnum) return 1; if (gl->member[i] == 0) { gl->member[i] = cnum; return 1; } } return 0; } // // Set text for a given message. // static void setup_message(int index, const char *text) { uint16_t *msg = GET_MESSAGE(index); // Skip spaces and tabs. while (*text == ' ' || *text == '\t') text++; utf8_decode(msg, text, 144); } // // Check that the radio does support this frequency. // static int is_valid_frequency(int mhz) { if (mhz >= 136 && mhz <= 174) return 1; if (mhz >= 400 && mhz <= 480) return 1; return 0; } // // Set the parameters for a given memory channel. // static void setup_channel(int i, int mode, char *name, double rx_mhz, double tx_mhz, int power, int scanlist, int squelch, int tot, int rxonly, int admit, int colorcode, int timeslot, int grouplist, int contact, int rxtone, int txtone, int width) { channel_t *ch = GET_CHANNEL(i); ch->channel_mode = mode; ch->bandwidth = width; ch->squelch = squelch; ch->rx_only = rxonly; ch->repeater_slot = timeslot; ch->colorcode = colorcode; ch->power = power; ch->admit_criteria = admit; ch->contact_name_index = contact; ch->tot = tot; ch->scan_list_index = scanlist; ch->group_list_index = grouplist; ch->rx_frequency = mhz_to_abcdefgh(rx_mhz); ch->tx_frequency = mhz_to_abcdefgh(tx_mhz); ch->ctcss_dcs_receive = rxtone; ch->ctcss_dcs_transmit = txtone; utf8_decode(ch->name, name, 16); } // // Erase the channel record. // static void erase_channel(int i) { channel_t *ch = GET_CHANNEL(i); // Byte 0 ch->channel_mode = MODE_ANALOG; ch->bandwidth = BW_12_5_KHZ; ch->autoscan = 0; ch->squelch = SQ_NORMAL; ch->_unused1 = 1; ch->lone_worker = 0; // Byte 1 ch->talkaround = 0; ch->rx_only = 0; ch->repeater_slot = 1; ch->colorcode = 1; // Byte 2 ch->privacy_no = 0; ch->privacy = PRIV_NONE; ch->private_call_conf = 0; ch->data_call_conf = 0; // Byte 3 ch->rx_ref_frequency = REF_LOW; ch->_unused2 = 0; ch->emergency_alarm_ack = 0; ch->_unused3 = 2; ch->uncompressed_udp = 1; ch->display_pttid_dis = 1; // Byte 4 ch->tx_ref_frequency = REF_LOW; ch->_unused4 = 1; ch->vox = 0; ch->power = POWER_HIGH; ch->admit_criteria = ADMIT_ALWAYS; // Byte 5 ch->_unused5 = 0; ch->in_call_criteria = INCALL_ALWAYS; ch->_unused6 = 3; // Bytes 6-7 ch->contact_name_index = 0; // Bytes 8-9 ch->tot = 60/15; ch->_unused13 = 0; ch->tot_rekey_delay = 0; // Bytes 10-11 ch->emergency_system_index = 0; ch->scan_list_index = 0; // Bytes 12-13 ch->group_list_index = 0; ch->_unused7 = 0; // Bytes 14-15 ch->_unused8 = 0; ch->_unused9 = 0xff; // Bytes 16-23 ch->rx_frequency = 0x40000000; ch->tx_frequency = 0x40000000; // Bytes 24-27 ch->ctcss_dcs_receive = 0xffff; ch->ctcss_dcs_transmit = 0xffff; // Bytes 28-29 ch->rx_signaling_syst = 0; ch->tx_signaling_syst = 0; // Bytes 30-31 ch->_unused10 = 0xff; ch->_unused11 = 0xff; // Bytes 32-63 utf8_decode(ch->name, "", 16); } static void print_chanlist(FILE *out, uint16_t *unsorted, int nchan) { int last = -1; int range = 0; int n; uint16_t data[nchan]; // Sort the list before printing. memcpy(data, unsorted, nchan * sizeof(uint16_t)); qsort(data, nchan, sizeof(uint16_t), compare_index); for (n=0; n 0) fprintf(out, ","); fprintf(out, "%d", cnum); } last = cnum; } if (range) fprintf(out, "-%d", last); } static void print_id(FILE *out, int verbose) { general_settings_t *gs = GET_SETTINGS(); unsigned id = gs->radio_id[0] | (gs->radio_id[1] << 8) | (gs->radio_id[2] << 16); if (verbose) fprintf(out, "\n# Unique DMR ID and name of this radio."); fprintf(out, "\nID: %u\nName: ", id); if (VALID_TEXT(gs->radio_name)) { print_unicode(out, gs->radio_name, 16, 0); } else { fprintf(out, "-"); } fprintf(out, "\n"); } static void print_intro(FILE *out, int verbose) { general_settings_t *gs = GET_SETTINGS(); if (verbose) fprintf(out, "\n# Text displayed when the radio powers up.\n"); fprintf(out, "Intro Line 1: "); if (VALID_TEXT(gs->intro_line1)) { print_unicode(out, gs->intro_line1, 10, 0); } else { fprintf(out, "-"); } fprintf(out, "\nIntro Line 2: "); if (VALID_TEXT(gs->intro_line2)) { print_unicode(out, gs->intro_line2, 10, 0); } else { fprintf(out, "-"); } fprintf(out, "\n"); } // // Do we have any channels of given mode? // static int have_channels(int mode) { int i; for (i=0; ichannel_mode == mode) return 1; } return 0; } // // Print base parameters of the channel: // Name // RX Frequency // TX Frequency // Power // Scan List // TOT // RX Only // Admit Criteria // static void print_chan_base(FILE *out, channel_t *ch, int cnum) { fprintf(out, "%5d ", cnum); print_unicode(out, ch->name, 16, 1); fprintf(out, " "); print_freq(out, ch->rx_frequency); fprintf(out, " "); print_offset(out, ch->rx_frequency, ch->tx_frequency); fprintf(out, "%-4s ", POWER_NAME[ch->power]); if (ch->scan_list_index == 0) fprintf(out, "- "); else fprintf(out, "%-4d ", ch->scan_list_index); if (ch->tot == 0) fprintf(out, "- "); else fprintf(out, "%-3d ", ch->tot * 15); fprintf(out, "%c ", "-+"[ch->rx_only]); fprintf(out, "%-6s ", ADMIT_NAME[ch->admit_criteria]); } #ifdef PRINT_RARE_PARAMS // // Print extended parameters of the channel: // Autoscan // TOT Rekey Delay // RX Ref Frequency // RX Ref Frequency // Lone Worker // VOX // static void print_chan_ext(FILE *out, channel_t *ch) { fprintf(out, "%c ", "-+"[ch->autoscan]); fprintf(out, "%-6s ", INCALL_NAME[ch->in_call_criteria]); fprintf(out, "%-3d ", ch->tot_rekey_delay); fprintf(out, "%-5s ", REF_FREQUENCY[ch->rx_ref_frequency]); fprintf(out, "%-5s ", REF_FREQUENCY[ch->tx_ref_frequency]); fprintf(out, "%c ", "-+"[ch->lone_worker]); fprintf(out, "%c ", "-+"[ch->vox]); fprintf(out, "%c ", "-+"[ch->talkaround]); } #endif static void print_digital_channels(FILE *out, int verbose) { int i; if (verbose) { fprintf(out, "# Table of digital channels.\n"); fprintf(out, "# 1) Channel number: 1-%d\n", NCHAN); fprintf(out, "# 2) Name: up to 16 characters, use '_' instead of space\n"); fprintf(out, "# 3) Receive frequency in MHz\n"); fprintf(out, "# 4) Transmit frequency or +/- offset in MHz\n"); fprintf(out, "# 5) Transmit power: High, Low\n"); fprintf(out, "# 6) Scan list: - or index in Scanlist table\n"); fprintf(out, "# 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555\n"); fprintf(out, "# 8) Receive only: -, +\n"); fprintf(out, "# 9) Admit criteria: -, Free, Color\n"); fprintf(out, "# 10) Color code: 0, 1, 2, 3... 15\n"); fprintf(out, "# 11) Time slot: 1 or 2\n"); fprintf(out, "# 12) Receive group list: - or index in Grouplist table\n"); fprintf(out, "# 13) Contact for transmit: - or index in Contacts table\n"); fprintf(out, "#\n"); } fprintf(out, "Digital Name Receive Transmit Power Scan TOT RO Admit Color Slot RxGL TxContact"); #ifdef PRINT_RARE_PARAMS fprintf(out, " AS InCall Dly RxRef TxRef LW VOX TA EmSys Privacy PN PCC EAA DCC CU"); #endif fprintf(out, "\n"); for (i=0; ichannel_mode != MODE_DIGITAL) { // Select digital channels continue; } print_chan_base(out, ch, i+1); // Print digital parameters of the channel: // Color Code // Repeater Slot // Group List // Contact Name fprintf(out, "%-5d %-3d ", ch->colorcode, ch->repeater_slot); if (ch->group_list_index == 0) fprintf(out, "- "); else fprintf(out, "%-4d ", ch->group_list_index); if (ch->contact_name_index == 0) fprintf(out, "-"); else fprintf(out, "%-4d", ch->contact_name_index); #ifdef PRINT_RARE_PARAMS fprintf(out, " "); print_chan_ext(out, ch); // Extended digital parameters of the channel: // In Call Criteria // Emergency System // Privacy // Privacy No. (+1) // Private Call Confirmed // Emergency Alarm Ack // Data Call Confirmed // DCDM switch (inverted) // Leader/MS if (ch->emergency_system_index == 0) fprintf(out, "- "); else fprintf(out, "%-5d ", ch->emergency_system_index); fprintf(out, "%-8s ", PRIVACY_NAME[ch->privacy]); if (ch->privacy == PRIV_NONE) fprintf(out, "- "); else fprintf(out, "%-2d ", ch->privacy_no + 1); fprintf(out, "%c ", "-+"[ch->private_call_conf]); fprintf(out, "%c ", "-+"[ch->emergency_alarm_ack]); fprintf(out, "%c ", "-+"[ch->data_call_conf]); fprintf(out, "%c ", "+-"[ch->uncompressed_udp]); #endif // Print contact name as a comment. if (ch->contact_name_index > 0) { contact_t *ct = GET_CONTACT(ch->contact_name_index - 1); if (VALID_CONTACT(ct)) { fprintf(out, " # "); print_unicode(out, ct->name, 16, 0); } } fprintf(out, "\n"); } } static void print_analog_channels(FILE *out, int verbose) { int i; if (verbose) { fprintf(out, "# Table of analog channels.\n"); fprintf(out, "# 1) Channel number: 1-%d\n", NCHAN); fprintf(out, "# 2) Name: up to 16 characters, use '_' instead of space\n"); fprintf(out, "# 3) Receive frequency in MHz\n"); fprintf(out, "# 4) Transmit frequency or +/- offset in MHz\n"); fprintf(out, "# 5) Transmit power: High, Low\n"); fprintf(out, "# 6) Scan list: - or index\n"); fprintf(out, "# 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555\n"); fprintf(out, "# 8) Receive only: -, +\n"); fprintf(out, "# 9) Admit criteria: -, Free, Tone\n"); fprintf(out, "# 10) Squelch level: Normal, Tight\n"); fprintf(out, "# 11) Guard tone for receive, or '-' to disable\n"); fprintf(out, "# 12) Guard tone for transmit, or '-' to disable\n"); fprintf(out, "# 13) Bandwidth in kHz: 12.5, 20, 25\n"); fprintf(out, "#\n"); } fprintf(out, "Analog Name Receive Transmit Power Scan TOT RO Admit Squelch RxTone TxTone Width"); #ifdef PRINT_RARE_PARAMS fprintf(out, " AS Dly RxRef TxRef LW VOX TA RxSign TxSign ID"); #endif fprintf(out, "\n"); for (i=0; ichannel_mode != MODE_ANALOG) { // Select analog channels continue; } print_chan_base(out, ch, i+1); // Print analog parameters of the channel: // Squelch // CTCSS/DCS Dec // CTCSS/DCS Enc // Bandwidth fprintf(out, "%-7s ", SQUELCH_NAME[ch->squelch]); print_tone(out, ch->ctcss_dcs_receive); fprintf(out, " "); print_tone(out, ch->ctcss_dcs_transmit); fprintf(out, " %s", BANDWIDTH[ch->bandwidth]); #ifdef PRINT_RARE_PARAMS print_chan_ext(out, ch); // Extended analog parameters of the channel: // Rx Signaling System // Tx Signaling System // Display PTT ID (inverted) // Non-QT/DQT Turn-off Freq. fprintf(out, "%-6s ", SIGNALING_SYSTEM[ch->rx_signaling_syst]); fprintf(out, "%-6s ", SIGNALING_SYSTEM[ch->tx_signaling_syst]); fprintf(out, "%c ", "+-"[ch->display_pttid_dis]); #endif fprintf(out, "\n"); } } static int have_zones() { int i; for (i=0; iname); if (verbose) md380_print_version(radio, out); // // Channels. // if (have_channels(MODE_DIGITAL)) { fprintf(out, "\n"); print_digital_channels(out, verbose); } if (have_channels(MODE_ANALOG)) { fprintf(out, "\n"); print_analog_channels(out, verbose); } // // Zones. // if (have_zones()) { fprintf(out, "\n"); if (verbose) { fprintf(out, "# Table of channel zones.\n"); fprintf(out, "# 1) Zone number: 1-%d\n", NZONES); fprintf(out, "# 2) Name: up to 16 characters, use '_' instead of space\n"); fprintf(out, "# 3) List of channels: numbers and ranges (N-M) separated by comma\n"); fprintf(out, "#\n"); } fprintf(out, "Zone Name Channels\n"); for (i=0; iname, 16, 1); fprintf(out, " "); if (z->member[0]) { print_chanlist(out, z->member, 16); } else { fprintf(out, "-"); } fprintf(out, "\n"); } } // // Scan lists. // if (have_scanlists()) { fprintf(out, "\n"); if (verbose) { fprintf(out, "# Table of scan lists.\n"); fprintf(out, "# 1) Scan list number: 1-%d\n", NSCANL); fprintf(out, "# 2) Name: up to 16 characters, use '_' instead of space\n"); fprintf(out, "# 3) Priority channel 1 (50%% of scans): -, Sel or index\n"); fprintf(out, "# 4) Priority channel 2 (25%% of scans): -, Sel or index\n"); fprintf(out, "# 5) Designated transmit channel: Last, Sel or index\n"); fprintf(out, "# 6) List of channels: numbers and ranges (N-M) separated by comma\n"); fprintf(out, "#\n"); } fprintf(out, "Scanlist Name PCh1 PCh2 TxCh "); #ifdef PRINT_RARE_PARAMS fprintf(out, "Hold Smpl "); #endif fprintf(out, "Channels\n"); for (i=0; iname, 16, 1); if (sl->priority_ch1 == 0xffff) { fprintf(out, " - "); } else if (sl->priority_ch1 == 0) { fprintf(out, " Sel "); } else { fprintf(out, " %-4d ", sl->priority_ch1); } if (sl->priority_ch2 == 0xffff) { fprintf(out, "- "); } else if (sl->priority_ch2 == 0) { fprintf(out, "Sel "); } else { fprintf(out, "%-4d ", sl->priority_ch2); } if (sl->tx_designated_ch == 0xffff) { fprintf(out, "Last "); } else if (sl->tx_designated_ch == 0) { fprintf(out, "Sel "); } else { fprintf(out, "%-4d ", sl->tx_designated_ch); } #ifdef PRINT_RARE_PARAMS fprintf(out, "%-4d %-4d ", sl->sign_hold_time * 25, sl->prio_sample_time * 250); #endif if (sl->member[0]) { print_chanlist(out, sl->member, 31); } else { fprintf(out, "-"); } fprintf(out, "\n"); } } // // Contacts. // if (have_contacts()) { fprintf(out, "\n"); if (verbose) { fprintf(out, "# Table of contacts.\n"); fprintf(out, "# 1) Contact number: 1-%d\n", NCONTACTS); fprintf(out, "# 2) Name: up to 16 characters, use '_' instead of space\n"); fprintf(out, "# 3) Call type: Group, Private, All\n"); fprintf(out, "# 4) Call ID: 1...16777215\n"); fprintf(out, "# 5) Call receive tone: -, +\n"); fprintf(out, "#\n"); } fprintf(out, "Contact Name Type ID RxTone\n"); for (i=0; iname, 16, 1); fprintf(out, " %-7s %-8d %s\n", CONTACT_TYPE[ct->type & 3], CONTACT_ID(ct), ct->receive_tone ? "+" : "-"); } } // // Group lists. // if (have_grouplists()) { fprintf(out, "\n"); if (verbose) { fprintf(out, "# Table of group lists.\n"); fprintf(out, "# 1) Group list number: 1-%d\n", NGLISTS); fprintf(out, "# 2) Name: up to 16 characters, use '_' instead of space\n"); fprintf(out, "# 3) List of contacts: numbers and ranges (N-M) separated by comma\n"); fprintf(out, "#\n"); } fprintf(out, "Grouplist Name Contacts\n"); for (i=0; iname, 16, 1); fprintf(out, " "); if (gl->member[0]) { print_chanlist(out, gl->member, 32); } else { fprintf(out, "-"); } fprintf(out, "\n"); } } // // Text messages. // if (have_messages()) { fprintf(out, "\n"); if (verbose) { fprintf(out, "# Table of text messages.\n"); fprintf(out, "# 1) Message number: 1-%d\n", NMESSAGES); fprintf(out, "# 2) Text: up to 144 characters\n"); fprintf(out, "#\n"); } fprintf(out, "Message Text\n"); for (i=0; iradio_name, value, 16); return; } if (strcasecmp ("ID", param) == 0) { uint32_t id = strtoul(value, 0, 0); gs->radio_id[0] = id; gs->radio_id[1] = id >> 8; gs->radio_id[2] = id >> 16; return; } if (strcasecmp ("Last Programmed Date", param) == 0) { // Ignore. return; } if (strcasecmp ("CPS Software Version", param) == 0) { // Ignore. return; } if (strcasecmp ("Intro Line 1", param) == 0) { utf8_decode(gs->intro_line1, value, 10); return; } if (strcasecmp ("Intro Line 2", param) == 0) { utf8_decode(gs->intro_line2, value, 10); return; } fprintf(stderr, "Unknown parameter: %s = %s\n", param, value); exit(-1); } // // Parse one line of Digital channel table. // Start_flag is 1 for the first table row. // Return 0 on failure. // static int parse_digital_channel(radio_device_t *radio, int first_row, char *line) { char num_str[256], name_str[256], rxfreq_str[256], offset_str[256]; char power_str[256], scanlist_str[256]; char tot_str[256], rxonly_str[256], admit_str[256], colorcode_str[256]; char slot_str[256], grouplist_str[256], contact_str[256]; int num, power, scanlist, tot, rxonly, admit; int colorcode, timeslot, grouplist, contact; double rx_mhz, tx_mhz; if (sscanf(line, "%s %s %s %s %s %s %s %s %s %s %s %s %s", num_str, name_str, rxfreq_str, offset_str, power_str, scanlist_str, tot_str, rxonly_str, admit_str, colorcode_str, slot_str, grouplist_str, contact_str) != 13) return 0; num = atoi(num_str); if (num < 1 || num > NCHAN) { fprintf(stderr, "Bad channel number.\n"); return 0; } if (sscanf(rxfreq_str, "%lf", &rx_mhz) != 1 || !is_valid_frequency(rx_mhz)) { fprintf(stderr, "Bad receive frequency.\n"); return 0; } if (sscanf(offset_str, "%lf", &tx_mhz) != 1) { badtx: fprintf(stderr, "Bad transmit frequency.\n"); return 0; } if (offset_str[0] == '-' || offset_str[0] == '+') tx_mhz += rx_mhz; if (! is_valid_frequency(tx_mhz)) goto badtx; if (strcasecmp("High", power_str) == 0) { power = POWER_HIGH; } else if (strcasecmp("Low", power_str) == 0) { power = POWER_LOW; } else { fprintf(stderr, "Bad power level.\n"); return 0; } if (*scanlist_str == '-') { scanlist = 0; } else { scanlist = atoi(scanlist_str); if (scanlist == 0 || scanlist > NSCANL) { fprintf(stderr, "Bad scanlist.\n"); return 0; } } tot = atoi(tot_str); if (tot > 555 || tot % 15 != 0) { fprintf(stderr, "Bad timeout timer.\n"); return 0; } tot /= 15; if (*rxonly_str == '-') { rxonly = 0; } else if (*rxonly_str == '+') { rxonly = 1; } else { fprintf(stderr, "Bad receive only flag.\n"); return 0; } if (*admit_str == '-' || strcasecmp("Always", admit_str) == 0) { admit = ADMIT_ALWAYS; } else if (strcasecmp("Free", admit_str) == 0) { admit = ADMIT_CH_FREE; } else if (strcasecmp("Color", admit_str) == 0) { admit = ADMIT_COLOR; } else { fprintf(stderr, "Bad admit criteria.\n"); return 0; } colorcode = atoi(colorcode_str); if (colorcode < 0 || colorcode > 15) { fprintf(stderr, "Bad color code.\n"); return 0; } timeslot = atoi(slot_str); if (timeslot < 1 || timeslot > 2) { fprintf(stderr, "Bad timeslot.\n"); return 0; } if (*grouplist_str == '-') { grouplist = 0; } else { grouplist = atoi(grouplist_str); if (grouplist == 0 || grouplist > NGLISTS) { fprintf(stderr, "Bad receive grouplist.\n"); return 0; } } if (*contact_str == '-') { contact = 0; } else { contact = atoi(contact_str); if (contact == 0 || contact > NCONTACTS) { fprintf(stderr, "Bad transmit contact.\n"); return 0; } } if (first_row && radio->channel_count == 0) { // On first entry, erase all channels, zones and scanlists. erase_channels(); erase_zones(); erase_scanlists(); } setup_channel(num-1, MODE_DIGITAL, name_str, rx_mhz, tx_mhz, power, scanlist, SQ_NORMAL, tot, rxonly, admit, colorcode, timeslot, grouplist, contact, 0xffff, 0xffff, BW_12_5_KHZ); radio->channel_count++; return 1; } // // Parse one line of Analog channel table. // Start_flag is 1 for the first table row. // Return 0 on failure. // static int parse_analog_channel(radio_device_t *radio, int first_row, char *line) { char num_str[256], name_str[256], rxfreq_str[256], offset_str[256]; char power_str[256], scanlist_str[256], squelch_str[256]; char tot_str[256], rxonly_str[256], admit_str[256]; char rxtone_str[256], txtone_str[256], width_str[256]; int num, power, scanlist, squelch, tot, rxonly, admit; int rxtone, txtone, width; double rx_mhz, tx_mhz; if (sscanf(line, "%s %s %s %s %s %s %s %s %s %s %s %s %s", num_str, name_str, rxfreq_str, offset_str, power_str, scanlist_str, tot_str, rxonly_str, admit_str, squelch_str, rxtone_str, txtone_str, width_str) != 13) return 0; num = atoi(num_str); if (num < 1 || num > NCHAN) { fprintf(stderr, "Bad channel number.\n"); return 0; } if (sscanf(rxfreq_str, "%lf", &rx_mhz) != 1 || !is_valid_frequency(rx_mhz)) { fprintf(stderr, "Bad receive frequency.\n"); return 0; } if (sscanf(offset_str, "%lf", &tx_mhz) != 1) { badtx: fprintf(stderr, "Bad transmit frequency.\n"); return 0; } if (offset_str[0] == '-' || offset_str[0] == '+') tx_mhz += rx_mhz; if (! is_valid_frequency(tx_mhz)) goto badtx; if (strcasecmp("High", power_str) == 0) { power = POWER_HIGH; } else if (strcasecmp("Low", power_str) == 0) { power = POWER_LOW; } else { fprintf(stderr, "Bad power level.\n"); return 0; } if (*scanlist_str == '-') { scanlist = 0; } else { scanlist = atoi(scanlist_str); if (scanlist == 0 || scanlist > NSCANL) { fprintf(stderr, "Bad scanlist.\n"); return 0; } } if (strcasecmp ("Normal", squelch_str) == 0) { squelch = SQ_NORMAL; } else if (strcasecmp ("Tight", squelch_str) == 0) { squelch = SQ_TIGHT; } else { fprintf (stderr, "Bad squelch level.\n"); return 0; } tot = atoi(tot_str); if (tot > 555 || tot % 15 != 0) { fprintf(stderr, "Bad timeout timer.\n"); return 0; } tot /= 15; if (*rxonly_str == '-') { rxonly = 0; } else if (*rxonly_str == '+') { rxonly = 1; } else { fprintf(stderr, "Bad receive only flag.\n"); return 0; } if (*admit_str == '-' || strcasecmp("Always", admit_str) == 0) { admit = ADMIT_ALWAYS; } else if (strcasecmp("Free", admit_str) == 0) { admit = ADMIT_CH_FREE; } else if (strcasecmp("Tone", admit_str) == 0) { admit = ADMIT_TONE; } else { fprintf(stderr, "Bad admit criteria.\n"); return 0; } rxtone = encode_tone(rxtone_str); if (rxtone < 0) { fprintf(stderr, "Bad receive tone.\n"); return 0; } txtone = encode_tone(txtone_str); if (txtone < 0) { fprintf(stderr, "Bad transmit tone.\n"); return 0; } if (strcasecmp ("12.5", width_str) == 0) { width = BW_12_5_KHZ; } else if (strcasecmp ("20", width_str) == 0) { width = BW_20_KHZ; } else if (strcasecmp ("25", width_str) == 0) { width = BW_25_KHZ; } else { fprintf (stderr, "Bad width.\n"); return 0; } if (first_row && radio->channel_count == 0) { // On first entry, erase all channels, zones and scanlists. erase_channels(); } setup_channel(num-1, MODE_ANALOG, name_str, rx_mhz, tx_mhz, power, scanlist, squelch, tot, rxonly, admit, 1, 1, 0, 0, rxtone, txtone, width); radio->channel_count++; return 1; } // // Parse one line of Zones table. // Return 0 on failure. // static int parse_zones(int first_row, char *line) { char num_str[256], name_str[256], chan_str[256]; int znum; if (sscanf(line, "%s %s %s", num_str, name_str, chan_str) != 3) return 0; znum = strtoul(num_str, 0, 10); if (znum < 1 || znum > NZONES) { fprintf(stderr, "Bad zone number.\n"); return 0; } if (first_row) { // On first entry, erase the Zones table. erase_zones(); } setup_zone(znum-1, name_str); if (*chan_str != '-') { char *str = chan_str; int nchan = 0; int range = 0; int last = 0; // Parse channel list. for (;;) { char *eptr; int cnum = strtoul(str, &eptr, 10); if (eptr == str) { fprintf(stderr, "Zone %d: wrong channel list '%s'.\n", znum, str); return 0; } if (cnum < 1 || cnum > NCHAN) { fprintf(stderr, "Zone %d: wrong channel number %d.\n", znum, cnum); return 0; } if (range) { // Add range. int c; for (c=last+1; c<=cnum; c++) { if (!zone_append(znum-1, c)) { fprintf(stderr, "Zone %d: too many channels.\n", znum); return 0; } nchan++; } } else { // Add single channel. if (!zone_append(znum-1, cnum)) { fprintf(stderr, "Zone %d: too many channels.\n", znum); return 0; } nchan++; } if (*eptr == 0) break; if (*eptr != ',' && *eptr != '-') { fprintf(stderr, "Zone %d: wrong channel list '%s'.\n", znum, eptr); return 0; } range = (*eptr == '-'); last = cnum; str = eptr + 1; } } return 1; } // // Parse one line of Scanlist table. // Return 0 on failure. // static int parse_scanlist(int first_row, char *line) { char num_str[256], name_str[256], prio1_str[256], prio2_str[256]; char tx_str[256], chan_str[256]; int snum, prio1, prio2, txchan; if (sscanf(line, "%s %s %s %s %s %s", num_str, name_str, prio1_str, prio2_str, tx_str, chan_str) != 6) return 0; snum = atoi(num_str); if (snum < 1 || snum > NSCANL) { fprintf(stderr, "Bad scan list number.\n"); return 0; } if (first_row) { // On first entry, erase the Scanlists table. erase_scanlists(); } if (*prio1_str == '-') { prio1 = 0xffff; } else if (strcasecmp("Sel", prio1_str) == 0) { prio1 = 0; } else { prio1 = atoi(prio1_str); if (prio1 < 1 || prio1 > NCHAN) { fprintf(stderr, "Bad priority channel 1.\n"); return 0; } } if (*prio2_str == '-') { prio2 = 0xffff; } else if (strcasecmp("Sel", prio2_str) == 0) { prio2 = 0; } else { prio2 = atoi(prio2_str); if (prio2 < 1 || prio2 > NCHAN) { fprintf(stderr, "Bad priority channel 2.\n"); return 0; } } if (strcasecmp("Last", tx_str) == 0) { txchan = 0xffff; } else if (strcasecmp("Sel", tx_str) == 0) { txchan = 0; } else { txchan = atoi(tx_str); if (txchan < 1 || txchan > NCHAN) { fprintf(stderr, "Bad transmit channel.\n"); return 0; } } setup_scanlist(snum-1, name_str, prio1, prio2, txchan); if (*chan_str != '-') { char *str = chan_str; int nchan = 0; int range = 0; int last = 0; // Parse channel list. for (;;) { char *eptr; int cnum = strtoul(str, &eptr, 10); if (eptr == str) { fprintf(stderr, "Scan list %d: wrong channel list '%s'.\n", snum, str); return 0; } if (cnum < 1 || cnum > NCHAN) { fprintf(stderr, "Scan list %d: wrong channel number %d.\n", snum, cnum); return 0; } if (range) { // Add range. int c; for (c=last+1; c<=cnum; c++) { if (!scanlist_append(snum-1, c)) { fprintf(stderr, "Scan list %d: too many channels.\n", snum); return 0; } nchan++; } } else { // Add single channel. if (!scanlist_append(snum-1, cnum)) { fprintf(stderr, "Scan list %d: too many channels.\n", snum); return 0; } nchan++; } if (*eptr == 0) break; if (*eptr != ',' && *eptr != '-') { fprintf(stderr, "Scan list %d: wrong channel list '%s'.\n", snum, eptr); return 0; } range = (*eptr == '-'); last = cnum; str = eptr + 1; } } return 1; } // // Parse one line of Contacts table. // Return 0 on failure. // static int parse_contact(int first_row, char *line) { char num_str[256], name_str[256], type_str[256], id_str[256], rxtone_str[256]; int cnum, type, id, rxtone; if (sscanf(line, "%s %s %s %s %s", num_str, name_str, type_str, id_str, rxtone_str) != 5) return 0; cnum = atoi(num_str); if (cnum < 1 || cnum > NCONTACTS) { fprintf(stderr, "Bad contact number.\n"); return 0; } if (first_row) { // On first entry, erase the Contacts table. erase_contacts(); } if (strcasecmp("Group", type_str) == 0) { type = CALL_GROUP; } else if (strcasecmp("Private", type_str) == 0) { type = CALL_PRIVATE; } else if (strcasecmp("All", type_str) == 0) { type = CALL_ALL; } else { fprintf(stderr, "Bad call type.\n"); return 0; } id = atoi(id_str); if (id < 1 || id > 0xffffff) { fprintf(stderr, "Bad call ID.\n"); return 0; } if (*rxtone_str == '-' || strcasecmp("No", rxtone_str) == 0) { rxtone = 0; } else if (*rxtone_str == '+' || strcasecmp("Yes", rxtone_str) == 0) { rxtone = 1; } else { fprintf(stderr, "Bad receive tone flag.\n"); return 0; } setup_contact(cnum-1, name_str, type, id, rxtone); return 1; } // // Parse one line of Grouplist table. // Return 0 on failure. // static int parse_grouplist(int first_row, char *line) { char num_str[256], name_str[256], list_str[256]; int glnum; if (sscanf(line, "%s %s %s", num_str, name_str, list_str) != 3) return 0; glnum = strtoul(num_str, 0, 10); if (glnum < 1 || glnum > NGLISTS) { fprintf(stderr, "Bad group list number.\n"); return 0; } if (first_row) { // On first entry, erase the Grouplists table. memset(&radio_mem[OFFSET_GLISTS], 0, NGLISTS*96); } setup_grouplist(glnum-1, name_str); if (*list_str != '-') { char *str = list_str; int range = 0; int last = 0; // Parse contact list. for (;;) { char *eptr; int cnum = strtoul(str, &eptr, 10); if (eptr == str) { fprintf(stderr, "Group list %d: wrong contact list '%s'.\n", glnum, str); return 0; } if (cnum < 1 || cnum > NCONTACTS) { fprintf(stderr, "Group list %d: wrong contact number %d.\n", glnum, cnum); return 0; } if (range) { // Add range. int c; for (c=last+1; c<=cnum; c++) { if (!grouplist_append(glnum-1, c)) { fprintf(stderr, "Group list %d: too many contacts.\n", glnum); return 0; } } } else { // Add single contact. if (!grouplist_append(glnum-1, cnum)) { fprintf(stderr, "Group list %d: too many contacts.\n", glnum); return 0; } } if (*eptr == 0) break; if (*eptr != ',' && *eptr != '-') { fprintf(stderr, "Group list %d: wrong contact list '%s'.\n", glnum, eptr); return 0; } range = (*eptr == '-'); last = cnum; str = eptr + 1; } } return 1; } // // Parse one line of Messages table. // Return 0 on failure. // static int parse_messages(int first_row, char *line) { char *text; int mnum; mnum = strtoul(line, &text, 10); if (text == line || mnum < 1 || mnum > NMESSAGES) { fprintf(stderr, "Bad message number.\n"); return 0; } if (first_row) { // On first entry, erase the Messages table. memset(&radio_mem[OFFSET_MSG], 0, NMESSAGES*288); } setup_message(mnum-1, text); return 1; } // // Parse table header. // Return table id, or 0 in case of error. // static int md380_parse_header(radio_device_t *radio, char *line) { if (strncasecmp(line, "Digital", 7) == 0) return 'D'; if (strncasecmp(line, "Analog", 6) == 0) return 'A'; if (strncasecmp(line, "Zone", 4) == 0) return 'Z'; if (strncasecmp(line, "Scanlist", 8) == 0) return 'S'; if (strncasecmp(line, "Contact", 7) == 0) return 'C'; if (strncasecmp(line, "Grouplist", 9) == 0) return 'G'; if (strncasecmp(line, "Message", 7) == 0) return 'M'; return 0; } // // Parse one line of table data. // Return 0 on failure. // static int md380_parse_row(radio_device_t *radio, int table_id, int first_row, char *line) { switch (table_id) { case 'D': return parse_digital_channel(radio, first_row, line); case 'A': return parse_analog_channel(radio, first_row, line); case 'Z': return parse_zones(first_row, line); case 'S': return parse_scanlist(first_row, line); case 'C': return parse_contact(first_row, line); case 'G': return parse_grouplist(first_row, line); case 'M': return parse_messages(first_row, line); } return 0; } // // Update timestamp. // static void md380_update_timestamp(radio_device_t *radio) { unsigned char *timestamp = GET_TIMESTAMP(); char p[16]; // Last Programmed Date get_timestamp(p); timestamp[0] = ((p[0] & 0xf) << 4) | (p[1] & 0xf); // year upper timestamp[1] = ((p[2] & 0xf) << 4) | (p[3] & 0xf); // year lower timestamp[2] = ((p[4] & 0xf) << 4) | (p[5] & 0xf); // month timestamp[3] = ((p[6] & 0xf) << 4) | (p[7] & 0xf); // day timestamp[4] = ((p[8] & 0xf) << 4) | (p[9] & 0xf); // hour timestamp[5] = ((p[10] & 0xf) << 4) | (p[11] & 0xf); // minute timestamp[6] = ((p[12] & 0xf) << 4) | (p[13] & 0xf); // second // CPS Software Version: Vdx.xx const char *dot = strchr(VERSION, '.'); if (dot) { timestamp[7] = 0x0d; // Prints as '=' timestamp[8] = dot[-1] & 0x0f; if (dot[2] == '.') { timestamp[9] = 0; timestamp[10] = dot[1] & 0x0f; } else { timestamp[9] = dot[1] & 0x0f; timestamp[10] = dot[2] & 0x0f; } } } // // Check that configuration is correct. // Return 0 on error. // static int md380_verify_config(radio_device_t *radio) { int i, k, nchannels = 0, nzones = 0, nscanlists = 0, ngrouplists = 0; int ncontacts = 0, nerrors = 0; // Channels: check references to scanlists, contacts and grouplists. for (i=0; iscan_list_index != 0) { scanlist_t *sl = GET_SCANLIST(ch->scan_list_index - 1); if (!VALID_SCANLIST(sl)) { fprintf(stderr, "Channel %d '", i+1); print_unicode(stderr, ch->name, 16, 0); fprintf(stderr, "': scanlist %d not found.\n", ch->scan_list_index); nerrors++; } } if (ch->contact_name_index != 0) { contact_t *ct = GET_CONTACT(ch->contact_name_index - 1); if (!VALID_CONTACT(ct)) { fprintf(stderr, "Channel %d '", i+1); print_unicode(stderr, ch->name, 16, 0); fprintf(stderr, "': contact %d not found.\n", ch->contact_name_index); nerrors++; } } if (ch->group_list_index != 0) { grouplist_t *gl = GET_GROUPLIST(ch->group_list_index - 1); if (!VALID_GROUPLIST(gl)) { fprintf(stderr, "Channel %d '", i+1); print_unicode(stderr, ch->name, 16, 0); fprintf(stderr, "': grouplist %d not found.\n", ch->group_list_index); nerrors++; } } } // Zones: check references to channels. for (i=0; imember[k]; if (cnum != 0) { channel_t *ch = GET_CHANNEL(cnum - 1); if (!VALID_CHANNEL(ch)) { fprintf(stderr, "Zone %d '", i+1); print_unicode(stderr, z->name, 16, 0); fprintf(stderr, "': channel %d not found.\n", cnum); nerrors++; } } } } // Scanlists: check references to channels. for (i=0; imember[k]; if (cnum != 0) { channel_t *ch = GET_CHANNEL(cnum - 1); if (!VALID_CHANNEL(ch)) { fprintf(stderr, "Scanlist %d '", i+1); print_unicode(stderr, sl->name, 16, 0); fprintf(stderr, "': channel %d not found.\n", cnum); nerrors++; } } } } // Grouplists: check references to contacts. for (i=0; imember[k]; if (cnum != 0) { contact_t *ct = GET_CONTACT(cnum - 1); if (!VALID_CONTACT(ct)) { fprintf(stderr, "Grouplist %d '", i+1); print_unicode(stderr, gl->name, 16, 0); fprintf(stderr, "': contact %d not found.\n", cnum); nerrors++; } } } } // Count contacts. for (i=0; i 0) { fprintf(stderr, "Total %d errors.\n", nerrors); return 0; } fprintf(stderr, "Total %d channels, %d zones, %d scanlists, %d contacts, %d grouplists.\n", nchannels, nzones, nscanlists, ncontacts, ngrouplists); return 1; } // // TYT MD-380 // radio_device_t radio_md380 = { "TYT MD-380", md380_download, md380_upload, md380_is_compatible, md380_read_image, md380_save_image, md380_print_version, md380_print_config, md380_verify_config, md380_parse_parameter, md380_parse_header, md380_parse_row, md380_update_timestamp, //TODO: md380_write_csv, }; // // TYT MD-390 // radio_device_t radio_md390 = { "TYT MD-390", md380_download, md380_upload, md380_is_compatible, md380_read_image, md380_save_image, md380_print_version, md380_print_config, md380_verify_config, md380_parse_parameter, md380_parse_header, md380_parse_row, md380_update_timestamp, //TODO: md380_write_csv, }; // // Zastone D900 // radio_device_t radio_d900 = { "Zastone D900", md380_download, md380_upload, md380_is_compatible, md380_read_image, md380_save_image, md380_print_version, md380_print_config, md380_verify_config, md380_parse_parameter, md380_parse_header, md380_parse_row, md380_update_timestamp, }; // // Zastone DP880 // radio_device_t radio_dp880 = { "Zastone DP880", md380_download, md380_upload, md380_is_compatible, md380_read_image, md380_save_image, md380_print_version, md380_print_config, md380_verify_config, md380_parse_parameter, md380_parse_header, md380_parse_row, md380_update_timestamp, }; // // Radtel RT-27D // radio_device_t radio_rt27d = { "Radtel RT-27D", md380_download, md380_upload, md380_is_compatible, md380_read_image, md380_save_image, md380_print_version, md380_print_config, md380_verify_config, md380_parse_parameter, md380_parse_header, md380_parse_row, md380_update_timestamp, }; dmrconfig-master/radio.c000066400000000000000000000264501354060760700156000ustar00rootroot00000000000000/* * Configuration Utility for DMR radios. * * Copyright (C) 2018 Serge Vakulenko, KK6ABQ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include #include #include #include #include #include "radio.h" #include "util.h" static struct { char *ident; radio_device_t *device; } radio_tab[] = { { "DR780", &radio_md380 }, // TYT MD-380, Retevis RT3, RT8 { "MD390", &radio_md390 }, // TYT MD-390 { "MD-UV380", &radio_uv380 }, // TYT MD-UV380 { "MD-UV390", &radio_uv390 }, // TYT MD-UV390, Retevis RT3S { "2017", &radio_md2017 }, // TYT MD-2017, Retevis RT82 { "MD9600", &radio_md9600 }, // TYT MD-9600 { "BF-5R", &radio_rd5r }, // Baofeng RD-5R, TD-5R { "1801", &radio_dm1801 }, // Baofeng DM-1801 { "DM-1701", &radio_rt84 }, // Baofeng DM-1701, Retevis RT84 { "MD-760P", &radio_gd77 }, // Radioddity GD-77, version 3.1.1 and later { "D868UVE", &radio_d868uv }, // Anytone AT-D868UV { "D878UV", &radio_d878uv }, // Anytone AT-D878UV { "D6X2UV", &radio_dmr6x2 }, // BTECH DMR-6x2 { "ZD3688", &radio_d900 }, // Zastone D900 { "TP660", &radio_dp880 }, // Zastone DP880 { "ZN><:", &radio_rt27d }, // Radtel RT-27D { 0, 0 } }; unsigned char radio_mem [1024*1024*2]; // Radio memory contents, up to 2 Mbytes int radio_progress; // Read/write progress counter static radio_device_t *device; // Device-dependent interface // // Close the serial port. // void radio_disconnect() { fprintf(stderr, "Close device.\n"); // Restore the normal radio mode. dfu_reboot(); dfu_close(); hid_close(); serial_close(); } // // Print a generic information about the device. // void radio_print_version(FILE *out) { device->print_version(device, out); } // // Connect to the radio and identify the type of device. // void radio_connect() { const char *ident; int i; // Try TYT MD family. ident = dfu_init(0x0483, 0xdf11); if (! ident) { // Try RD-5R, DM-1801 and GD-77. if (hid_init(0x15a2, 0x0073) >= 0) ident = hid_identify(); } if (! ident) { // Try AT-D868UV. if (serial_init(0x28e9, 0x018a) >= 0) ident = serial_identify(); } if (! ident) { fprintf(stderr, "No radio detected.\n"); fprintf(stderr, "Check your USB cable!\n"); exit(-1); } for (i=0; radio_tab[i].ident; i++) { if (strcasecmp(ident, radio_tab[i].ident) == 0) { device = radio_tab[i].device; break; } } if (! device) { fprintf(stderr, "Unrecognized radio '%s'.\n", ident); exit(-1); } fprintf(stderr, "Connect to %s.\n", device->name); } // // List all supported radios. // void radio_list() { int i; printf("Supported radios:\n"); for (i=0; radio_tab[i].ident; i++) { printf(" %s\n", radio_tab[i].device->name); } } // // Read firmware image from the device. // void radio_download() { radio_progress = 0; if (! trace_flag) { fprintf(stderr, "Read device: "); fflush(stderr); } device->download(device); if (! trace_flag) fprintf(stderr, " done.\n"); } // // Write firmware image to the device. // void radio_upload(int cont_flag) { // Check for compatibility. if (! device->is_compatible(device)) { fprintf(stderr, "Incompatible image - cannot upload.\n"); exit(-1); } radio_progress = 0; if (! trace_flag) { fprintf(stderr, "Write device: "); fflush(stderr); } device->upload(device, cont_flag); if (! trace_flag) fprintf(stderr, " done.\n"); } // // Read firmware image from the binary file. // void radio_read_image(const char *filename) { FILE *img; struct stat st; char ident[8]; fprintf(stderr, "Read codeplug from file '%s'.\n", filename); img = fopen(filename, "rb"); if (! img) { perror(filename); exit(-1); } // Guess device type by file size. if (stat(filename, &st) < 0) { perror(filename); exit(-1); } switch (st.st_size) { case 851968: case 852533: device = &radio_uv380; break; case 262144: case 262709: device = &radio_md380; break; case 1606528: if (fread(ident, 1, 8, img) != 8) { fprintf(stderr, "%s: Cannot read header.\n", filename); exit(-1); } fseek(img, 0, SEEK_SET); if (memcmp(ident, "D868UVE", 7) == 0) { device = &radio_d868uv; } else if (memcmp(ident, "D878UV", 6) == 0) { device = &radio_d878uv; } else if (memcmp(ident, "D6X2UV", 6) == 0) { device = &radio_dmr6x2; } else { fprintf(stderr, "%s: Unrecognized header '%.6s'\n", filename, ident); exit(-1); } break; case 131072: if (fread(ident, 1, 8, img) != 8) { fprintf(stderr, "%s: Cannot read header.\n", filename); exit(-1); } if (memcmp(ident, "BF-5R", 5) == 0) { device = &radio_rd5r; } else if (memcmp(ident, "MD-760P", 7) == 0) { device = &radio_gd77; } else if (memcmp(ident, "1801", 4) == 0) { device = &radio_dm1801; } else if (memcmp(ident, "MD-760", 6) == 0) { fprintf(stderr, "Old Radioddity GD-77 v2.6 image not supported!\n"); exit(-1); } else { fprintf(stderr, "%s: Unrecognized header '%.6s'\n", filename, ident); exit(-1); } fseek(img, 0, SEEK_SET); break; default: fprintf(stderr, "%s: Unrecognized file size %u bytes.\n", filename, (int) st.st_size); exit(-1); } device->read_image(device, img); fclose(img); } // // Save firmware image to the binary file. // void radio_save_image(const char *filename) { FILE *img; fprintf(stderr, "Write codeplug to file '%s'.\n", filename); img = fopen(filename, "wb"); if (! img) { perror(filename); exit(-1); } device->save_image(device, img); fclose(img); } // // Read the configuration from text file, and modify the firmware. // void radio_parse_config(const char *filename) { FILE *conf; char line [256], *p, *v; int table_id = 0, table_dirty = 0; fprintf(stderr, "Read configuration from file '%s'.\n", filename); conf = fopen(filename, "r"); if (! conf) { perror(filename); exit(-1); } device->channel_count = 0; while (fgets(line, sizeof(line), conf)) { line[sizeof(line)-1] = 0; // Strip comments. v = strchr(line, '#'); if (v) *v = 0; // Strip trailing spaces and newline. v = line + strlen(line) - 1; while (v >= line && (*v=='\n' || *v=='\r' || *v==' ' || *v=='\t')) *v-- = 0; // Ignore comments and empty lines. p = line; if (*p == 0) continue; if (*p != ' ') { // Table finished. table_id = 0; // Find the value. v = strchr(p, ':'); if (! v) { // Table header: get table type. table_id = device->parse_header(device, p); if (! table_id) { badline: fprintf(stderr, "Invalid line: '%s'\n", line); exit(-1); } table_dirty = 0; continue; } // Parameter. *v++ = 0; // Skip spaces. while (*v == ' ' || *v == '\t') v++; device->parse_parameter(device, p, v); } else { // Table row or comment. // Skip spaces. // Ignore comments and empty lines. while (*p == ' ' || *p == '\t') p++; if (*p == '#' || *p == 0) continue; if (! table_id) { goto badline; } if (! device->parse_row(device, table_id, ! table_dirty, p)) { goto badline; } table_dirty = 1; } } fclose(conf); device->update_timestamp(device); } // // Print full information about the device configuration. // void radio_print_config(FILE *out, int verbose) { if (verbose) { char buf [40]; time_t t; struct tm *tmp; t = time(NULL); tmp = localtime(&t); if (! tmp || ! strftime(buf, sizeof(buf), "%Y/%m/%d ", tmp)) buf[0] = 0; fprintf(out, "#\n"); fprintf(out, "# Configuration generated %sby dmrconfig, version %s\n", buf, version); fprintf(out, "#\n"); } device->print_config(device, out, verbose); } // // Check the configuration is correct. // void radio_verify_config() { if (!device->verify_config(device)) { // Message should be already printed. exit(-1); } } // // Update contacts database on the device. // void radio_write_csv(const char *filename) { FILE *csv; if (!device->write_csv) { fprintf(stderr, "%s does not support CSV database.\n", device->name); return; } csv = fopen(filename, "r"); if (! csv) { perror(filename); return; } fprintf(stderr, "Read file '%s'.\n", filename); device->write_csv(device, csv); fclose(csv); } // // Check for compatible radio model. // int radio_is_compatible(const char *name) { int i; for (i=0; radio_tab[i].ident; i++) { // Radio is compatible when it has the same parse routine. if (device->parse_parameter == radio_tab[i].device->parse_parameter && strcasecmp(name, radio_tab[i].device->name) == 0) { return 1; } } return 0; } dmrconfig-master/radio.h000066400000000000000000000112611354060760700155770ustar00rootroot00000000000000/* * Configuration Utility for DMR radios. * * Copyright (C) 2018 Serge Vakulenko, KK6ABQ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ // // Connect to the radio via the serial port. // Identify the type of device. // void radio_connect(void); // // Close the serial port. // void radio_disconnect(void); // // Read firmware image from the device. // void radio_download(void); // // Write firmware image to the device. // void radio_upload(int cont_flag); // // Print a generic information about the device. // void radio_print_version(FILE *out); // // Print full information about the device configuration. // void radio_print_config(FILE *out, int verbose); // // Read firmware image from the binary file. // void radio_read_image(const char *filename); // // Save firmware image to the binary file. // void radio_save_image(const char *filename); // // Read the configuration from text file, and modify the firmware. // void radio_parse_config(const char *filename); // // Check the configuration. // void radio_verify_config(void); // // Update CSV contacts database. // void radio_write_csv(const char *filename); // // List all supported radios. // void radio_list(void); // // Check for compatible radio model. // int radio_is_compatible(const char *ident); // // Device-dependent interface to the radio. // typedef struct _radio_device_t radio_device_t; struct _radio_device_t { const char *name; void (*download)(radio_device_t *radio); void (*upload)(radio_device_t *radio, int cont_flag); int (*is_compatible)(radio_device_t *radio); void (*read_image)(radio_device_t *radio, FILE *img); void (*save_image)(radio_device_t *radio, FILE *img); void (*print_version)(radio_device_t *radio, FILE *out); void (*print_config)(radio_device_t *radio, FILE *out, int verbose); int (*verify_config)(radio_device_t *radio); void (*parse_parameter)(radio_device_t *radio, char *param, char *value); int (*parse_header)(radio_device_t *radio, char *line); int (*parse_row)(radio_device_t *radio, int table_id, int first_row, char *line); void (*update_timestamp)(radio_device_t *radio); void (*write_csv)(radio_device_t *radio, FILE *csv); int channel_count; }; extern radio_device_t radio_md380; // TYT MD-380 extern radio_device_t radio_md390; // TYT MD-390 extern radio_device_t radio_md2017; // TYT MD-2017 extern radio_device_t radio_uv380; // TYT MD-UV380 extern radio_device_t radio_uv390; // TYT MD-UV390 extern radio_device_t radio_md9600; // TYT MD-9600 extern radio_device_t radio_d900; // Zastone D900 extern radio_device_t radio_dp880; // Zastone DP880 extern radio_device_t radio_rt27d; // Radtel RT-27D extern radio_device_t radio_rd5r; // Baofeng RD-5R extern radio_device_t radio_gd77; // Radioddity GD-77, version 3.1.1 and later extern radio_device_t radio_dm1801; // Baofeng DM-1801 extern radio_device_t radio_d868uv; // Anytone AT-D868UV extern radio_device_t radio_d878uv; // Anytone AT-D878UV extern radio_device_t radio_dmr6x2; // BTECH DMR-6x2 extern radio_device_t radio_rt84; // Baofeng DM-1701, Retevis RT84 // // Radio: memory contents. // extern unsigned char radio_mem[]; // // File descriptor of serial port with programming cable attached. // int radio_port; // // Read/write progress counter. // int radio_progress; dmrconfig-master/rd5r.c000066400000000000000000001761521354060760700153630ustar00rootroot00000000000000/* * Interface to Baofeng RD-5R, TD-5R. * * Copyright (C) 2018 Serge Vakulenko, KK6ABQ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include #include #include #include #include "radio.h" #include "util.h" #define NCHAN 1024 #define NCONTACTS 256 #define NZONES 250 #define NGLISTS 64 #define NSCANL 250 #define NMESSAGES 32 #define MEMSZ 0x20000 #define OFFSET_TIMESTMP 0x00088 #define OFFSET_SETTINGS 0x000e0 #define OFFSET_MSGTAB 0x00128 #define OFFSET_CONTACTS 0x01788 #define OFFSET_BANK_0 0x03780 // Channels 1-128 #define OFFSET_INTRO 0x07540 #define OFFSET_ZONETAB 0x08010 #define OFFSET_BANK_1 0x0b1b0 // Channels 129-1024 #define OFFSET_SCANTAB 0x17620 #define OFFSET_GROUPTAB 0x1d620 #define GET_TIMESTAMP() (&radio_mem[OFFSET_TIMESTMP]) #define GET_SETTINGS() ((general_settings_t*) &radio_mem[OFFSET_SETTINGS]) #define GET_INTRO() ((intro_text_t*) &radio_mem[OFFSET_INTRO]) #define GET_ZONETAB() ((zonetab_t*) &radio_mem[OFFSET_ZONETAB]) #define GET_SCANTAB(i) ((scantab_t*) &radio_mem[OFFSET_SCANTAB]) #define GET_CONTACT(i) ((contact_t*) &radio_mem[OFFSET_CONTACTS + (i)*24]) #define GET_GROUPTAB() ((grouptab_t*) &radio_mem[OFFSET_GROUPTAB]) #define GET_MSGTAB() ((msgtab_t*) &radio_mem[OFFSET_MSGTAB]) #define VALID_TEXT(txt) (*(txt) != 0 && *(txt) != 0xff) #define VALID_CONTACT(ct) VALID_TEXT((ct)->name) // // Channel data. // typedef struct { // Bytes 0-15 uint8_t name[16]; // Channel Name // Bytes 16-23 uint32_t rx_frequency; // RX Frequency: 8 digits BCD uint32_t tx_frequency; // TX Frequency: 8 digits BCD // Byte 24 uint8_t channel_mode; // Mode: Analog or Digital #define MODE_ANALOG 0 #define MODE_DIGITAL 1 // Bytes 25-26 uint8_t _unused25[2]; // 0 // Bytes 27-28 uint8_t tot; // TOT x 15sec: 0-Infinite, 1=15s... 33=495s uint8_t tot_rekey_delay; // TOT Rekey Delay: 0s...255s // Byte 29 uint8_t admit_criteria; // Admit Criteria: Always, Channel Free or Color Code #define ADMIT_ALWAYS 0 #define ADMIT_CH_FREE 1 #define ADMIT_COLOR 2 // Bytes 30-31 uint8_t _unused30; // 0x50 uint8_t scan_list_index; // Scan List: None, ScanList1...250 // Bytes 32-35 uint16_t ctcss_dcs_receive; // CTCSS/DCS Dec: 4 digits BCD or 0xffff uint16_t ctcss_dcs_transmit; // CTCSS/DCS Enc: 4 digits BCD // Bytes 36-39 uint8_t _unused36; // 0 uint8_t tx_signaling_syst; // Tx Signaling System: Off, DTMF uint8_t _unused38; // 0 uint8_t rx_signaling_syst; // Rx Signaling System: Off, DTMF // Bytes 40-43 uint8_t _unused40; // 0x16 uint8_t privacy_group; // Privacy Group: 0=None, 1=53474c39 #define PRIVGR_NONE 0 #define PRIVGR_53474C39 1 uint8_t colorcode_tx; // Color Code: 0...15 uint8_t group_list_index; // Group List: None, GroupList1...128 // Bytes 44-47 uint8_t colorcode_rx; // Color Code: 0...15 uint8_t emergency_system_index; // Emergency System: None, System1...32 uint16_t contact_name_index; // Contact Name: Contact1... // Byte 48 uint8_t _unused48 : 6, // 0 emergency_alarm_ack : 1, // Emergency Alarm Ack data_call_conf : 1; // Data Call Confirmed // Byte 49 uint8_t private_call_conf : 1, // Private Call Confirmed _unused49_1 : 3, // 0 privacy : 1, // Privacy: Off or On _unused49_5 : 1, // 0 repeater_slot2 : 1, // Repeater Slot: 0=slot1 or 1=slot2 _unused49_7 : 1; // 0 // Byte 50 uint8_t dcdm : 1, // Dual Capacity Direct Mode _unused50_1 : 4, // 0 non_ste_frequency : 1, // Non STE = Frequency _unused50_6 : 2; // 0 // Byte 51 uint8_t _unused51_0 : 1, // 0 bandwidth : 1, // Bandwidth: 12.5 or 25 kHz #define BW_12_5_KHZ 0 #define BW_25_KHZ 1 rx_only : 1, // RX Only Enable talkaround : 1, // Allow Talkaround _unused51_4 : 2, // 0 vox : 1, // VOX Enable power : 1; // Power: Low, High #define POWER_HIGH 1 #define POWER_LOW 0 // Bytes 52-55 uint8_t _unused52[3]; // 0 uint8_t squelch; // Squelch: 0...9 } channel_t; // // Bank of 128 channels. // typedef struct { uint8_t bitmap[16]; // bit set when channel valid channel_t chan[128]; } bank_t; // // Contact data. // typedef struct { // Bytes 0-15 uint8_t name[16]; // Contact Name, ff terminated // Bytes 16-19 uint8_t id[4]; // BCD coded 8 digits #define GET_ID(x) (((x)[0] >> 4) * 10000000 +\ ((x)[0] & 15) * 1000000 +\ ((x)[1] >> 4) * 100000 +\ ((x)[1] & 15) * 10000 +\ ((x)[2] >> 4) * 1000 +\ ((x)[2] & 15) * 100 +\ ((x)[3] >> 4) * 10 +\ ((x)[3] & 15)) #define CONTACT_ID(ct) GET_ID((ct)->id) // Byte 20 uint8_t type; // Call Type: Group Call, Private Call or All Call #define CALL_GROUP 0 #define CALL_PRIVATE 1 #define CALL_ALL 2 // Bytes 21-23 uint8_t receive_tone; // Call Receive Tone: 0=Off, 1=On uint8_t ring_style; // Ring style: 0-10 uint8_t _unused23; // 0xff for used contact, 0 for blank entry } contact_t; // // Zone data. // typedef struct { // Bytes 0-15 uint8_t name[16]; // Zone Name // Bytes 16-47 uint16_t member[16]; // Member: channels 1...16 } zone_t; // // Table of zones. // typedef struct { uint8_t bitmap[32]; // bit set when zone valid zone_t zone[NZONES]; } zonetab_t; // // Group list data. // typedef struct { // Bytes 0-15 uint8_t name[16]; // Group List Name // Bytes 16-47 uint16_t member[16]; // Contacts } grouplist_t; // // Table of group lists. // typedef struct { uint8_t nitems1[128]; // N+1, zero when disabled grouplist_t grouplist[NGLISTS]; } grouptab_t; // // Scan list data. // typedef struct { // Bytes 0-14 uint8_t name[15]; // Scan List Name // Byte 15 uint8_t _unused : 4, // 0 channel_mark : 1, // Channel Mark, default 1 pl_type : 2, // PL Type, default 3 #define PL_NONPRI 0 // Non-Priority Channel #define PL_DISABLE 1 // Disable #define PL_PRI 2 // Priority Channel #define PL_PRI_NONPRI 3 // Priority and Non-Priority Channels talkback : 1; // Talkback, default 1 // Bytes 16-79 uint16_t member[32]; // Channels (+1) #define CHAN_SELECTED 1 // Selected // Bytes 80-85 uint16_t priority_ch1; // Priority Channel 1, chan+1 or 0=None, 1=Selected uint16_t priority_ch2; // Priority Channel 2 uint16_t tx_designated_ch; // Tx Designated Channel, chan+1 or 0=Last Active Channel // Bytes 86-87 uint8_t sign_hold_time; // Signaling Hold Time (x25 = msec) default 40=1000ms uint8_t prio_sample_time; // Priority Sample Time (x250 = msec) default 8=2000ms } scanlist_t; // // Table of scanlists. // typedef struct { uint8_t valid[256]; // byte=1 when scanlist valid scanlist_t scanlist[NSCANL]; } scantab_t; // // General settings. // typedef struct { // Bytes e0-e7 uint8_t radio_name[8]; // Bytes e8-eb uint8_t radio_id[4]; } general_settings_t; // // Intro messages. // typedef struct { // Bytes 7540-754f uint8_t intro_line1[16]; // Bytes 7550-755f uint8_t intro_line2[16]; } intro_text_t; // // Table of text messages. // typedef struct { uint8_t count; // number of messages uint8_t _unused1[7]; // 0 uint8_t len[NMESSAGES]; // message length uint8_t _unused2[NMESSAGES]; // 0 uint8_t message[NMESSAGES*144]; // messages } msgtab_t; static const char *POWER_NAME[] = { "Low", "High" }; static const char *BANDWIDTH[] = { "12.5", "25" }; static const char *CONTACT_TYPE[] = {"Group", "Private", "All", "???" }; static const char *ADMIT_NAME[] = { "-", "Free", "Color", "???" }; #ifdef PRINT_RARE_PARAMS static const char *PRIVACY_NAME[] = { "-", "On" }; static const char *SIGNALING_SYSTEM[] = { "-", "DTMF" }; #endif // // Print a generic information about the device. // static void rd5r_print_version(radio_device_t *radio, FILE *out) { unsigned char *timestamp = GET_TIMESTAMP(); if (*timestamp != 0xff) { fprintf(out, "Last Programmed Date: %d%d%d%d-%d%d-%d%d", timestamp[0] >> 4, timestamp[0] & 15, timestamp[1] >> 4, timestamp[1] & 15, timestamp[2] >> 4, timestamp[2] & 15, timestamp[3] >> 4, timestamp[3] & 15); fprintf(out, " %d%d:%d%d\n", timestamp[4] >> 4, timestamp[4] & 15, timestamp[5] >> 4, timestamp[5] & 15); } } // // Read memory image from the device. // static void download(radio_device_t *radio) { int bno; // Read range 0x80...0x1e29f. for (bno=1; bno<966; bno++) { if (bno >= 248 && bno < 256) { // Skip range 0x7c00...0x8000. continue; } hid_read_block(bno, &radio_mem[bno*128], 128); ++radio_progress; if (radio_progress % 32 == 0) { fprintf(stderr, "#"); fflush(stderr); } } //hid_read_finish(); // Clear header and footer. memset(&radio_mem[0], 0xff, 128); memset(&radio_mem[966*128], 0xff, MEMSZ - 966*128); memset(&radio_mem[248*128], 0xff, 8*128); } // // Read memory image. // static void rd5r_download(radio_device_t *radio) { download(radio); // Add header. memcpy(&radio_mem[0], "BF-5R", 5); } // // Write memory image to the device. // static void rd5r_upload(radio_device_t *radio, int cont_flag) { int bno; // Write range 0x80...0x1e29f. for (bno=1; bno<966; bno++) { if (bno >= 248 && bno < 256) { // Skip range 0x7c00...0x8000. continue; } hid_write_block(bno, &radio_mem[bno*128], 128); ++radio_progress; if (radio_progress % 32 == 0) { fprintf(stderr, "#"); fflush(stderr); } } hid_write_finish(); } // // Check whether the memory image is compatible with this device. // static int rd5r_is_compatible(radio_device_t *radio) { return strncmp("BF-5R", (char*)&radio_mem[0], 5) == 0; } // // Set name for a given zone. // static void setup_zone(int index, const char *name) { zonetab_t *zt = GET_ZONETAB(); zone_t *z = &zt->zone[index]; ascii_decode(z->name, name, sizeof(z->name), 0xff); memset(z->member, 0, sizeof(z->member)); // Set valid bit. zt->bitmap[index / 8] |= 1 << (index & 7); } // // Get zone by index. // Return 0 when zone is disabled. // static zone_t *get_zone(int index) { zonetab_t *zt = GET_ZONETAB(); if (zt->bitmap[index / 8] >> (index & 7) & 1) return &zt->zone[index]; else return 0; } // // Add channel to a zone. // Return 0 on failure. // static int zone_append(int index, int cnum) { zonetab_t *zt = GET_ZONETAB(); zone_t *z = &zt->zone[index]; int i; for (i=0; i<16; i++) { if (z->member[i] == cnum) return 1; if (z->member[i] == 0) { z->member[i] = cnum; return 1; } } return 0; } static void erase_zone(int index) { zonetab_t *zt = GET_ZONETAB(); zone_t *z = &zt->zone[index]; memset(z->name, 0, sizeof(z->name)); memset(z->member, 0, sizeof(z->member)); // Clear valid bit. zt->bitmap[index / 8] &= ~(1 << (index & 7)); } // // Set parameters for a given scan list. // static void setup_scanlist(int index, const char *name, int prio1, int prio2, int txchan) { scantab_t *st = GET_SCANTAB(); scanlist_t *sl = &st->scanlist[index]; memset(sl, 0, 88); ascii_decode(sl->name, name, sizeof(sl->name), 0xff); sl->priority_ch1 = prio1; sl->priority_ch2 = prio2; sl->tx_designated_ch = txchan; sl->talkback = 1; sl->channel_mark = 1; sl->pl_type = PL_PRI_NONPRI; sl->sign_hold_time = 1000 / 25; // 1 sec sl->prio_sample_time = 2000 / 250; // 2 sec // Set valid bit. st->valid[index] = 1; } static void erase_scanlist(int index) { scantab_t *st = GET_SCANTAB(); memset(&st->scanlist[index], 0xff, sizeof(scanlist_t)); // Clear valid bit. st->valid[index] = 0; } // // Get scanlist by index. // Return 0 when scanlist is disabled. // static scanlist_t *get_scanlist(int index) { scantab_t *st = GET_SCANTAB(); if (st->valid[index]) return &st->scanlist[index]; else return 0; } // // Add channel to a zone. // Return 0 on failure. // static int scanlist_append(int index, int cnum) { scanlist_t *sl = get_scanlist(index); int i; if (!sl) return 0; // First element is always Selected. if (sl->member[0] == 0) sl->member[0] = CHAN_SELECTED; for (i=0; i<32; i++) { if (sl->member[i] == cnum + 1) return 1; if (sl->member[i] == 0) { sl->member[i] = cnum + 1; return 1; } } return 0; } static void erase_contact(int index) { contact_t *ct = GET_CONTACT(index); memset(ct->name, 0xff, sizeof(ct->name)); memset(ct->id, 0, 8); } static void setup_contact(int index, const char *name, int type, int id, int rxtone) { contact_t *ct = GET_CONTACT(index); ct->id[0] = ((id / 10000000) << 4) | ((id / 1000000) % 10); ct->id[1] = ((id / 100000 % 10) << 4) | ((id / 10000) % 10); ct->id[2] = ((id / 1000 % 10) << 4) | ((id / 100) % 10); ct->id[3] = ((id / 10 % 10) << 4) | (id % 10); ct->type = type; ct->receive_tone = rxtone; ct->ring_style = 0; // TODO ct->_unused23 = (type < CALL_ALL) ? 0 : 0xff; ascii_decode(ct->name, name, 16, 0xff); } // // Get grouplist by index. // Return 0 when grouplist is disabled. // static grouplist_t *get_grouplist(int index) { grouptab_t *gt = GET_GROUPTAB(); if (gt->nitems1[index] > 0) return >->grouplist[index]; else return 0; } static void setup_grouplist(int index, const char *name) { grouptab_t *gt = GET_GROUPTAB(); grouplist_t *gl = >->grouplist[index]; ascii_decode(gl->name, name, sizeof(gl->name), 0xff); // Enable grouplist. gt->nitems1[index] = 1; } // // Add contact to a grouplist. // Return 0 on failure. // static int grouplist_append(int index, int cnum) { grouptab_t *gt = GET_GROUPTAB(); grouplist_t *gl = >->grouplist[index]; int i; // RD-5R firmware up to v2.1.6 has a bug: // when all 16 entries in RX group list are occupied, // it stops functioning and no audio is received. // As a workaround, we must use only 15 entries here. for (i=0; i<15; i++) { if (gl->member[i] == cnum) return 1; if (gl->member[i] == 0) { gl->member[i] = cnum; gt->nitems1[index] = i + 2; return 1; } } return 0; } // // Set text for a given message. // static void setup_message(int index, const char *text) { msgtab_t *mt = GET_MSGTAB(); uint8_t *msg = &mt->message[index*144]; int len, i; // Skip spaces and tabs. while (*text == ' ' || *text == '\t') text++; len = strlen(text); mt->len[index] = len + 1; memset(msg, 0xff, 144); memcpy(msg, text, len < 144 ? len : 144); // Count messages. mt->count = 0; for (i=0; ilen); i++) if (mt->len[i] > 0) mt->count++; } // // Check that the radio does support this frequency. // static int is_valid_frequency(int mhz) { if (mhz >= 136 && mhz <= 174) return 1; if (mhz >= 400 && mhz <= 480) return 1; return 0; } // // Get channel bank by index. // static bank_t *get_bank(int i) { if (i == 0) return (bank_t*) &radio_mem[OFFSET_BANK_0]; else return (i - 1) + (bank_t*) &radio_mem[OFFSET_BANK_1]; } // // Get channel by index. // static channel_t *get_channel(int i) { bank_t *b = get_bank(i >> 7); if ((b->bitmap[i % 128 / 8] >> (i & 7)) & 1) return &b->chan[i % 128]; else return 0; } // // Set the parameters for a given memory channel. // static void setup_channel(int i, int mode, char *name, double rx_mhz, double tx_mhz, int power, int scanlist, int squelch, int tot, int rxonly, int admit, int colorcode, int timeslot, int grouplist, int contact, int rxtone, int txtone, int width) { bank_t *b = get_bank(i >> 7); channel_t *ch = &b->chan[i % 128]; ch->channel_mode = mode; ch->bandwidth = width; ch->squelch = squelch; ch->rx_only = rxonly; ch->repeater_slot2 = (timeslot == 2); ch->colorcode_tx = colorcode; ch->colorcode_rx = colorcode; // ch->data_call_conf = 1; // Always ask for SMS acknowledge ch->power = power; ch->admit_criteria = admit; ch->contact_name_index = contact; ch->tot = tot; ch->scan_list_index = scanlist; ch->group_list_index = grouplist; ch->rx_frequency = mhz_to_abcdefgh(rx_mhz); ch->tx_frequency = mhz_to_abcdefgh(tx_mhz); ch->ctcss_dcs_receive = rxtone; ch->ctcss_dcs_transmit = txtone; ascii_decode(ch->name, name, sizeof(ch->name), 0xff); // Set valid bit. b->bitmap[i % 128 / 8] |= 1 << (i & 7); } // // Erase the channel record. // static void erase_channel(int i) { bank_t *b = get_bank(i >> 7); channel_t *ch = &b->chan[i % 128]; // Bytes 0-15 memset(ch->name, 0xff, sizeof(ch->name)); // Bytes 16-23 ch->rx_frequency = 0x40000000; ch->tx_frequency = 0x40000000; // Byte 24 ch->channel_mode = MODE_ANALOG; // Bytes 25-26 ch->_unused25[0] = 0; ch->_unused25[1] = 0; // Bytes 27-28 ch->tot = 0; ch->tot_rekey_delay = 5; // Byte 29 ch->admit_criteria = ADMIT_ALWAYS; // Bytes 30-31 ch->_unused30 = 0x50; ch->scan_list_index = 0; // Bytes 32-35 ch->ctcss_dcs_receive = 0xffff; ch->ctcss_dcs_transmit = 0xffff; // Bytes 36-39 ch->_unused36 = 0; ch->tx_signaling_syst = 0; ch->_unused38 = 0; ch->rx_signaling_syst = 0; // Bytes 40-43 ch->_unused40 = 0x16; ch->privacy_group = PRIVGR_NONE; ch->colorcode_tx = 1; ch->group_list_index = 0; // Bytes 44-47 ch->colorcode_rx = 1; ch->emergency_system_index = 0; ch->contact_name_index = 0; // Byte 48 ch->_unused48 = 0; ch->emergency_alarm_ack = 0; ch->data_call_conf = 0; // Byte 49 ch->private_call_conf = 0; ch->_unused49_1 = 0; ch->privacy = 0; ch->_unused49_5 = 0; ch->repeater_slot2 = 0; ch->_unused49_7 = 0; // Byte 50 ch->dcdm = 0; ch->_unused50_1 = 0; ch->non_ste_frequency = 0; ch->_unused50_6 = 0; // Byte 51 ch->_unused51_0 = 0; ch->bandwidth = BW_25_KHZ; ch->rx_only = 0; ch->talkaround = 0; ch->_unused51_4 = 0; ch->vox = 0; ch->power = POWER_HIGH; // Bytes 52-55 ch->_unused52[0] = 0; ch->_unused52[1] = 0; ch->_unused52[2] = 0; ch->squelch = 5; // Clear valid bit. b->bitmap[i % 128 / 8] &= ~(1 << (i & 7)); } static void print_chanlist(FILE *out, uint16_t *unsorted, int nchan, int scanlist_flag) { int last = -1; int range = 0; int n; uint16_t data[nchan]; #define CNUM(n) (scanlist_flag ? n-1 : n) // Sort the list before printing. memcpy(data, unsorted, nchan * sizeof(uint16_t)); qsort(data, nchan, sizeof(uint16_t), compare_index); for (n=0; n 0) fprintf(out, ","); fprintf(out, "%d", CNUM(item)); } last = item; } if (range) fprintf(out, "-%d", CNUM(last)); } static void print_id(FILE *out, int verbose) { general_settings_t *gs = GET_SETTINGS(); unsigned id = GET_ID(gs->radio_id); if (verbose) fprintf(out, "\n# Unique DMR ID and name of this radio."); fprintf(out, "\nID: %u\nName: ", id); if (VALID_TEXT(gs->radio_name)) { print_ascii(out, gs->radio_name, 8, 0); } else { fprintf(out, "-"); } fprintf(out, "\n"); } static void print_intro(FILE *out, int verbose) { intro_text_t *it = GET_INTRO(); if (verbose) fprintf(out, "\n# Text displayed when the radio powers up.\n"); fprintf(out, "Intro Line 1: "); if (VALID_TEXT(it->intro_line1)) { print_ascii(out, it->intro_line1, 16, 0); } else { fprintf(out, "-"); } fprintf(out, "\nIntro Line 2: "); if (VALID_TEXT(it->intro_line2)) { print_ascii(out, it->intro_line2, 16, 0); } else { fprintf(out, "-"); } fprintf(out, "\n"); } // // Do we have any channels of given mode? // static int have_channels(int mode) { int i; for (i=0; ichannel_mode == mode) return 1; } return 0; } // // Print base parameters of the channel: // Name // RX Frequency // TX Frequency // Power // Scan List // TOT // RX Only // Admit Criteria // static void print_chan_base(FILE *out, channel_t *ch, int cnum) { fprintf(out, "%5d ", cnum); print_ascii(out, ch->name, 16, 1); fprintf(out, " "); print_freq(out, ch->rx_frequency); fprintf(out, " "); print_offset(out, ch->rx_frequency, ch->tx_frequency); fprintf(out, "%-4s ", POWER_NAME[ch->power]); if (ch->scan_list_index == 0) fprintf(out, "- "); else fprintf(out, "%-4d ", ch->scan_list_index); if (ch->tot == 0) fprintf(out, "- "); else fprintf(out, "%-3d ", ch->tot * 15); fprintf(out, "%c ", "-+"[ch->rx_only]); if (ch->channel_mode == MODE_DIGITAL) fprintf(out, "%-6s ", ADMIT_NAME[ch->admit_criteria & 3]); else fprintf(out, "%-6s ", ADMIT_NAME[ch->admit_criteria != 0]); } #ifdef PRINT_RARE_PARAMS // // Print extended parameters of the channel: // TOT Rekey Delay // VOX // Talkaround // static void print_chan_ext(FILE *out, channel_t *ch) { fprintf(out, "%-3d ", ch->tot_rekey_delay); fprintf(out, "%c ", "-+"[ch->vox]); fprintf(out, "%c ", "-+"[ch->talkaround]); } #endif static void print_digital_channels(FILE *out, int verbose) { int i; if (verbose) { fprintf(out, "# Table of digital channels.\n"); fprintf(out, "# 1) Channel number: 1-%d\n", NCHAN); fprintf(out, "# 2) Name: up to 16 characters, use '_' instead of space\n"); fprintf(out, "# 3) Receive frequency in MHz\n"); fprintf(out, "# 4) Transmit frequency or +/- offset in MHz\n"); fprintf(out, "# 5) Transmit power: High, Low\n"); fprintf(out, "# 6) Scan list: - or index in Scanlist table\n"); fprintf(out, "# 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555\n"); fprintf(out, "# 8) Receive only: -, +\n"); fprintf(out, "# 9) Admit criteria: -, Free, Color\n"); fprintf(out, "# 10) Color code: 0, 1, 2, 3... 15\n"); fprintf(out, "# 11) Time slot: 1 or 2\n"); fprintf(out, "# 12) Receive group list: - or index in Grouplist table\n"); fprintf(out, "# 13) Contact for transmit: - or index in Contacts table\n"); fprintf(out, "#\n"); } fprintf(out, "Digital Name Receive Transmit Power Scan TOT RO Admit Color Slot RxGL TxContact"); #ifdef PRINT_RARE_PARAMS fprintf(out, " Dly VOX TA EmSys Privacy PN PCC EAA DCC"); #endif fprintf(out, "\n"); for (i=0; ichannel_mode != MODE_DIGITAL) { // Select digital channels continue; } print_chan_base(out, ch, i+1); // Print digital parameters of the channel: // Color Code // Repeater Slot // Group List // Contact Name fprintf(out, "%-5d %-3d ", ch->colorcode_tx, ch->repeater_slot2 + 1); if (ch->group_list_index == 0) fprintf(out, "- "); else fprintf(out, "%-4d ", ch->group_list_index); if (ch->contact_name_index == 0) fprintf(out, "-"); else fprintf(out, "%-4d", ch->contact_name_index); #ifdef PRINT_RARE_PARAMS fprintf(out, " "); print_chan_ext(out, ch); // Extended digital parameters of the channel: // Emergency System // Privacy // Privacy Group // Private Call Confirmed // Emergency Alarm Ack // Data Call Confirmed // DCDM switch (inverted) // Leader/MS if (ch->emergency_system_index == 0) fprintf(out, "- "); else fprintf(out, "%-5d ", ch->emergency_system_index); fprintf(out, "%-8s ", PRIVACY_NAME[ch->privacy]); if (ch->privacy == 0) fprintf(out, "- "); else fprintf(out, "%-2d ", ch->privacy_group); fprintf(out, "%c ", "-+"[ch->private_call_conf]); fprintf(out, "%c ", "-+"[ch->emergency_alarm_ack]); fprintf(out, "%c ", "-+"[ch->data_call_conf]); #endif // Print contact name as a comment. if (ch->contact_name_index > 0) { contact_t *ct = GET_CONTACT(ch->contact_name_index - 1); if (VALID_CONTACT(ct)) { fprintf(out, " # "); print_ascii(out, ct->name, 16, 0); } } fprintf(out, "\n"); } } static void print_analog_channels(FILE *out, int verbose) { int i; if (verbose) { fprintf(out, "# Table of analog channels.\n"); fprintf(out, "# 1) Channel number: 1-%d\n", NCHAN); fprintf(out, "# 2) Name: up to 16 characters, use '_' instead of space\n"); fprintf(out, "# 3) Receive frequency in MHz\n"); fprintf(out, "# 4) Transmit frequency or +/- offset in MHz\n"); fprintf(out, "# 5) Transmit power: High, Low\n"); fprintf(out, "# 6) Scan list: - or index\n"); fprintf(out, "# 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555\n"); fprintf(out, "# 8) Receive only: -, +\n"); fprintf(out, "# 9) Admit criteria: -, Free, Tone\n"); fprintf(out, "# 10) Squelch level: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9\n"); fprintf(out, "# 11) Guard tone for receive, or '-' to disable\n"); fprintf(out, "# 12) Guard tone for transmit, or '-' to disable\n"); fprintf(out, "# 13) Bandwidth in kHz: 12.5, 20, 25\n"); fprintf(out, "#\n"); } fprintf(out, "Analog Name Receive Transmit Power Scan TOT RO Admit Squelch RxTone TxTone Width"); #ifdef PRINT_RARE_PARAMS fprintf(out, " Dly VOX TA RxSign TxSign"); #endif fprintf(out, "\n"); for (i=0; ichannel_mode != MODE_ANALOG) { // Select analog channels continue; } print_chan_base(out, ch, i+1); // Print analog parameters of the channel: // Squelch // CTCSS/DCS Dec // CTCSS/DCS Enc // Bandwidth fprintf(out, "%-7d ", ch->squelch <= 9 ? ch->squelch : 5); print_tone(out, ch->ctcss_dcs_receive); fprintf(out, " "); print_tone(out, ch->ctcss_dcs_transmit); fprintf(out, " %s", BANDWIDTH[ch->bandwidth]); #ifdef PRINT_RARE_PARAMS print_chan_ext(out, ch); // Extended analog parameters of the channel: // Rx Signaling System // Tx Signaling System fprintf(out, "%-6s ", SIGNALING_SYSTEM[ch->rx_signaling_syst & 1]); fprintf(out, "%-6s ", SIGNALING_SYSTEM[ch->tx_signaling_syst & 1]); #endif fprintf(out, "\n"); } } static int have_zones() { zonetab_t *zt = GET_ZONETAB(); int i; for (i=0; i<32; i++) { if (zt->bitmap[i]) return 1; } return 0; } static int have_scanlists() { scantab_t *st = GET_SCANTAB(); int i; for (i=0; ivalid[i]) return 1; } return 0; } static int have_contacts() { int i; for (i=0; initems1[i] > 0) return 1; } return 0; } static int have_messages() { msgtab_t *mt = GET_MSGTAB(); return mt->count > 0; } // // Print full information about the device configuration. // static void rd5r_print_config(radio_device_t *radio, FILE *out, int verbose) { int i; fprintf(out, "Radio: %s\n", radio->name); if (verbose) rd5r_print_version(radio, out); // // Channels. // if (have_channels(MODE_DIGITAL)) { fprintf(out, "\n"); print_digital_channels(out, verbose); } if (have_channels(MODE_ANALOG)) { fprintf(out, "\n"); print_analog_channels(out, verbose); } // // Zones. // if (have_zones()) { fprintf(out, "\n"); if (verbose) { fprintf(out, "# Table of channel zones.\n"); fprintf(out, "# 1) Zone number: 1-%d\n", NZONES); fprintf(out, "# 2) Name: up to 16 characters, use '_' instead of space\n"); fprintf(out, "# 3) List of channels: numbers and ranges (N-M) separated by comma\n"); fprintf(out, "#\n"); } fprintf(out, "Zone Name Channels\n"); for (i=0; iname, 16, 1); fprintf(out, " "); if (z->member[0]) { print_chanlist(out, z->member, 16, 0); } else { fprintf(out, "-"); } fprintf(out, "\n"); } } // // Scan lists. // if (have_scanlists()) { fprintf(out, "\n"); if (verbose) { fprintf(out, "# Table of scan lists.\n"); fprintf(out, "# 1) Scan list number: 1-%d\n", NSCANL); fprintf(out, "# 2) Name: up to 16 characters, use '_' instead of space\n"); fprintf(out, "# 3) Priority channel 1 (50%% of scans): -, Sel or index\n"); fprintf(out, "# 4) Priority channel 2 (25%% of scans): -, Sel or index\n"); fprintf(out, "# 5) Designated transmit channel: Last, Sel or index\n"); fprintf(out, "# 6) List of channels: numbers and ranges (N-M) separated by comma\n"); fprintf(out, "#\n"); } fprintf(out, "Scanlist Name PCh1 PCh2 TxCh "); #ifdef PRINT_RARE_PARAMS fprintf(out, "Hold Smpl "); #endif fprintf(out, "Channels\n"); for (i=0; iname, 15, 1); if (sl->priority_ch1 == 0) { fprintf(out, " - "); } else if (sl->priority_ch1 == 1) { fprintf(out, " Sel "); } else { fprintf(out, " %-4d ", sl->priority_ch1 - 1); } if (sl->priority_ch2 == 0) { fprintf(out, "- "); } else if (sl->priority_ch2 == 1) { fprintf(out, "Sel "); } else { fprintf(out, "%-4d ", sl->priority_ch2 - 1); } if (sl->tx_designated_ch == 0) { fprintf(out, "Last "); } else if (sl->tx_designated_ch == 1) { fprintf(out, "Sel "); } else { fprintf(out, "%-4d ", sl->tx_designated_ch - 1); } #ifdef PRINT_RARE_PARAMS fprintf(out, "%-4d %-4d ", sl->sign_hold_time * 25, sl->prio_sample_time * 250); #endif if (sl->member[1]) { print_chanlist(out, sl->member + 1, 31, 1); } else { fprintf(out, "Sel"); } fprintf(out, "\n"); } } // // Contacts. // if (have_contacts()) { fprintf(out, "\n"); if (verbose) { fprintf(out, "# Table of contacts.\n"); fprintf(out, "# 1) Contact number: 1-%d\n", NCONTACTS); fprintf(out, "# 2) Name: up to 16 characters, use '_' instead of space\n"); fprintf(out, "# 3) Call type: Group, Private, All\n"); fprintf(out, "# 4) Call ID: 1...16777215\n"); fprintf(out, "# 5) Call receive tone: -, +\n"); fprintf(out, "#\n"); } fprintf(out, "Contact Name Type ID RxTone\n"); for (i=0; iname, 16, 1); fprintf(out, " %-7s %-8d %s\n", CONTACT_TYPE[ct->type & 3], CONTACT_ID(ct), ct->receive_tone ? "+" : "-"); } } // // Group lists. // if (have_grouplists()) { fprintf(out, "\n"); if (verbose) { fprintf(out, "# Table of group lists.\n"); fprintf(out, "# 1) Group list number: 1-%d\n", NGLISTS); fprintf(out, "# 2) Name: up to 16 characters, use '_' instead of space\n"); fprintf(out, "# 3) List of contacts: numbers and ranges (N-M) separated by comma\n"); fprintf(out, "#\n"); } fprintf(out, "Grouplist Name Contacts\n"); for (i=0; iname, 16, 1); fprintf(out, " "); if (gl->member[0]) { print_chanlist(out, gl->member, 16, 0); } else { fprintf(out, "-"); } fprintf(out, "\n"); } } // // Text messages. // if (have_messages()) { msgtab_t *mt = GET_MSGTAB(); fprintf(out, "\n"); if (verbose) { fprintf(out, "# Table of text messages.\n"); fprintf(out, "# 1) Message number: 1-%d\n", NMESSAGES); fprintf(out, "# 2) Text: up to 144 characters\n"); fprintf(out, "#\n"); } fprintf(out, "Message Text\n"); for (i=0; ilen[i] == 0) { // Message is disabled continue; } fprintf(out, "%5d ", i+1); print_ascii(out, &mt->message[i*144], 144, 0); fprintf(out, "\n"); } } // General settings. print_id(out, verbose); print_intro(out, verbose); } // // Read memory image from the binary file. // static void rd5r_read_image(radio_device_t *radio, FILE *img) { struct stat st; // Guess device type by file size. if (fstat(fileno(img), &st) < 0) { fprintf(stderr, "Cannot get file size.\n"); exit(-1); } switch (st.st_size) { case MEMSZ: // IMG file. if (fread(&radio_mem[0], 1, MEMSZ, img) != MEMSZ) { fprintf(stderr, "Error reading image data.\n"); exit(-1); } break; default: fprintf(stderr, "Unrecognized file size %u bytes.\n", (int) st.st_size); exit(-1); } } // // Save memory image to the binary file. // static void rd5r_save_image(radio_device_t *radio, FILE *img) { fwrite(&radio_mem[0], 1, MEMSZ, img); } // // Erase all channels. // static void erase_channels() { int i; for (i=0; iradio_name, value, 8, 0xff); return; } if (strcasecmp ("ID", param) == 0) { uint32_t id = strtoul(value, 0, 0); gs->radio_id[0] = ((id / 10000000) << 4) | ((id / 1000000) % 10); gs->radio_id[1] = ((id / 100000 % 10) << 4) | ((id / 10000) % 10); gs->radio_id[2] = ((id / 1000 % 10) << 4) | ((id / 100) % 10); gs->radio_id[3] = ((id / 10 % 10) << 4) | (id % 10); return; } if (strcasecmp ("Last Programmed Date", param) == 0) { // Ignore. return; } if (strcasecmp ("CPS Software Version", param) == 0) { // Ignore. return; } intro_text_t *it = GET_INTRO(); if (strcasecmp ("Intro Line 1", param) == 0) { ascii_decode(it->intro_line1, value, 16, 0xff); return; } if (strcasecmp ("Intro Line 2", param) == 0) { ascii_decode(it->intro_line2, value, 16, 0xff); return; } fprintf(stderr, "Unknown parameter: %s = %s\n", param, value); exit(-1); } // // Parse one line of Digital channel table. // Start_flag is 1 for the first table row. // Return 0 on failure. // static int parse_digital_channel(radio_device_t *radio, int first_row, char *line) { char num_str[256], name_str[256], rxfreq_str[256], offset_str[256]; char power_str[256], scanlist_str[256]; char tot_str[256], rxonly_str[256], admit_str[256], colorcode_str[256]; char slot_str[256], grouplist_str[256], contact_str[256]; int num, power, scanlist, tot, rxonly, admit; int colorcode, timeslot, grouplist, contact; double rx_mhz, tx_mhz; if (sscanf(line, "%s %s %s %s %s %s %s %s %s %s %s %s %s", num_str, name_str, rxfreq_str, offset_str, power_str, scanlist_str, tot_str, rxonly_str, admit_str, colorcode_str, slot_str, grouplist_str, contact_str) != 13) return 0; num = atoi(num_str); if (num < 1 || num > NCHAN) { fprintf(stderr, "Bad channel number.\n"); return 0; } if (sscanf(rxfreq_str, "%lf", &rx_mhz) != 1 || !is_valid_frequency(rx_mhz)) { fprintf(stderr, "Bad receive frequency.\n"); return 0; } if (sscanf(offset_str, "%lf", &tx_mhz) != 1) { badtx: fprintf(stderr, "Bad transmit frequency.\n"); return 0; } if (offset_str[0] == '-' || offset_str[0] == '+') tx_mhz += rx_mhz; if (! is_valid_frequency(tx_mhz)) goto badtx; if (strcasecmp("High", power_str) == 0) { power = POWER_HIGH; } else if (strcasecmp("Low", power_str) == 0) { power = POWER_LOW; } else { fprintf(stderr, "Bad power level.\n"); return 0; } if (*scanlist_str == '-') { scanlist = 0; } else { scanlist = atoi(scanlist_str); if (scanlist == 0 || scanlist > NSCANL) { fprintf(stderr, "Bad scanlist.\n"); return 0; } } tot = atoi(tot_str); if (tot > 555 || tot % 15 != 0) { fprintf(stderr, "Bad timeout timer.\n"); return 0; } tot /= 15; if (*rxonly_str == '-') { rxonly = 0; } else if (*rxonly_str == '+') { rxonly = 1; } else { fprintf(stderr, "Bad receive only flag.\n"); return 0; } if (*admit_str == '-' || strcasecmp("Always", admit_str) == 0) { admit = ADMIT_ALWAYS; } else if (strcasecmp("Free", admit_str) == 0) { admit = ADMIT_CH_FREE; } else if (strcasecmp("Color", admit_str) == 0) { admit = ADMIT_COLOR; } else { fprintf(stderr, "Bad admit criteria.\n"); return 0; } colorcode = atoi(colorcode_str); if (colorcode < 0 || colorcode > 15) { fprintf(stderr, "Bad color code.\n"); return 0; } timeslot = atoi(slot_str); if (timeslot < 1 || timeslot > 2) { fprintf(stderr, "Bad timeslot.\n"); return 0; } if (*grouplist_str == '-') { grouplist = 0; } else { grouplist = atoi(grouplist_str); if (grouplist == 0 || grouplist > NGLISTS) { fprintf(stderr, "Bad receive grouplist.\n"); return 0; } } if (*contact_str == '-') { contact = 0; } else { contact = atoi(contact_str); if (contact == 0 || contact > NCONTACTS) { fprintf(stderr, "Bad transmit contact.\n"); return 0; } } if (first_row && radio->channel_count == 0) { // On first entry, erase all channels, zones and scanlists. erase_channels(); erase_zones(); erase_scanlists(); } setup_channel(num-1, MODE_DIGITAL, name_str, rx_mhz, tx_mhz, power, scanlist, 5, tot, rxonly, admit, colorcode, timeslot, grouplist, contact, 0xffff, 0xffff, BW_12_5_KHZ); radio->channel_count++; return 1; } // // Parse one line of Analog channel table. // Start_flag is 1 for the first table row. // Return 0 on failure. // static int parse_analog_channel(radio_device_t *radio, int first_row, char *line) { char num_str[256], name_str[256], rxfreq_str[256], offset_str[256]; char power_str[256], scanlist_str[256], squelch_str[256]; char tot_str[256], rxonly_str[256], admit_str[256]; char rxtone_str[256], txtone_str[256], width_str[256]; int num, power, scanlist, squelch, tot, rxonly, admit; int rxtone, txtone, width; double rx_mhz, tx_mhz; if (sscanf(line, "%s %s %s %s %s %s %s %s %s %s %s %s %s", num_str, name_str, rxfreq_str, offset_str, power_str, scanlist_str, tot_str, rxonly_str, admit_str, squelch_str, rxtone_str, txtone_str, width_str) != 13) return 0; num = atoi(num_str); if (num < 1 || num > NCHAN) { fprintf(stderr, "Bad channel number.\n"); return 0; } if (sscanf(rxfreq_str, "%lf", &rx_mhz) != 1 || !is_valid_frequency(rx_mhz)) { fprintf(stderr, "Bad receive frequency.\n"); return 0; } if (sscanf(offset_str, "%lf", &tx_mhz) != 1) { badtx: fprintf(stderr, "Bad transmit frequency.\n"); return 0; } if (offset_str[0] == '-' || offset_str[0] == '+') tx_mhz += rx_mhz; if (! is_valid_frequency(tx_mhz)) goto badtx; if (strcasecmp("High", power_str) == 0) { power = POWER_HIGH; } else if (strcasecmp("Low", power_str) == 0) { power = POWER_LOW; } else { fprintf(stderr, "Bad power level.\n"); return 0; } if (*scanlist_str == '-') { scanlist = 0; } else { scanlist = atoi(scanlist_str); if (scanlist == 0 || scanlist > NSCANL) { fprintf(stderr, "Bad scanlist.\n"); return 0; } } squelch = atoi(squelch_str); if (squelch < 0 || squelch > 9) { fprintf(stderr, "Bad squelch level.\n"); return 0; } tot = atoi(tot_str); if (tot > 555 || tot % 15 != 0) { fprintf(stderr, "Bad timeout timer.\n"); return 0; } tot /= 15; if (*rxonly_str == '-') { rxonly = 0; } else if (*rxonly_str == '+') { rxonly = 1; } else { fprintf(stderr, "Bad receive only flag.\n"); return 0; } if (*admit_str == '-' || strcasecmp("Always", admit_str) == 0) { admit = ADMIT_ALWAYS; } else if (strcasecmp("Free", admit_str) == 0) { admit = ADMIT_CH_FREE; } else { fprintf(stderr, "Bad admit criteria.\n"); return 0; } rxtone = encode_tone(rxtone_str); if (rxtone < 0) { fprintf(stderr, "Bad receive tone.\n"); return 0; } txtone = encode_tone(txtone_str); if (txtone < 0) { fprintf(stderr, "Bad transmit tone.\n"); return 0; } if (strcasecmp ("12.5", width_str) == 0) { width = BW_12_5_KHZ; } else if (strcasecmp ("25", width_str) == 0) { width = BW_25_KHZ; } else { fprintf (stderr, "Bad width.\n"); return 0; } if (first_row && radio->channel_count == 0) { // On first entry, erase all channels, zones and scanlists. erase_channels(); erase_zones(); erase_scanlists(); } setup_channel(num-1, MODE_ANALOG, name_str, rx_mhz, tx_mhz, power, scanlist, squelch, tot, rxonly, admit, 0, 1, 0, 0, rxtone, txtone, width); radio->channel_count++; return 1; } // // Parse one line of Zones table. // Return 0 on failure. // static int parse_zones(int first_row, char *line) { char num_str[256], name_str[256], chan_str[256]; int znum; if (sscanf(line, "%s %s %s", num_str, name_str, chan_str) != 3) return 0; znum = strtoul(num_str, 0, 10); if (znum < 1 || znum > NZONES) { fprintf(stderr, "Bad zone number.\n"); return 0; } if (first_row) { // On first entry, erase the Zones table. erase_zones(); } setup_zone(znum-1, name_str); if (*chan_str != '-') { char *str = chan_str; int nchan = 0; int range = 0; int last = 0; // Parse channel list. for (;;) { char *eptr; int cnum = strtoul(str, &eptr, 10); if (eptr == str) { fprintf(stderr, "Zone %d: wrong channel list '%s'.\n", znum, str); return 0; } if (cnum < 1 || cnum > NCHAN) { fprintf(stderr, "Zone %d: wrong channel number %d.\n", znum, cnum); return 0; } if (range) { // Add range. int c; for (c=last+1; c<=cnum; c++) { if (!zone_append(znum-1, c)) { fprintf(stderr, "Zone %d: too many channels.\n", znum); return 0; } nchan++; } } else { // Add single channel. if (!zone_append(znum-1, cnum)) { fprintf(stderr, "Zone %d: too many channels.\n", znum); return 0; } nchan++; } if (*eptr == 0) break; if (*eptr != ',' && *eptr != '-') { fprintf(stderr, "Zone %d: wrong channel list '%s'.\n", znum, eptr); return 0; } range = (*eptr == '-'); last = cnum; str = eptr + 1; } } return 1; } // // Parse one line of Scanlist table. // Return 0 on failure. // static int parse_scanlist(int first_row, char *line) { char num_str[256], name_str[256], prio1_str[256], prio2_str[256]; char tx_str[256], chan_str[256]; int snum, prio1, prio2, txchan; if (sscanf(line, "%s %s %s %s %s %s", num_str, name_str, prio1_str, prio2_str, tx_str, chan_str) != 6) return 0; snum = atoi(num_str); if (snum < 1 || snum > NSCANL) { fprintf(stderr, "Bad scan list number.\n"); return 0; } if (first_row) { // On first entry, erase the Scanlists table. erase_scanlists(); } if (*prio1_str == '-') { prio1 = 0; } else if (strcasecmp("Sel", prio1_str) == 0) { prio1 = 1; } else { prio1 = atoi(prio1_str); if (prio1 < 1 || prio1 > NCHAN) { fprintf(stderr, "Bad priority channel 1.\n"); return 0; } prio1++; } if (*prio2_str == '-') { prio2 = 0; } else if (strcasecmp("Sel", prio2_str) == 0) { prio2 = 1; } else { prio2 = atoi(prio2_str); if (prio2 < 1 || prio2 > NCHAN) { fprintf(stderr, "Bad priority channel 2.\n"); return 0; } prio2++; } if (strcasecmp("Last", tx_str) == 0) { txchan = 0; } else if (strcasecmp("Sel", tx_str) == 0) { txchan = 1; } else { txchan = atoi(tx_str); if (txchan < 1 || txchan > NCHAN) { fprintf(stderr, "Bad transmit channel.\n"); return 0; } txchan++; } setup_scanlist(snum-1, name_str, prio1, prio2, txchan); if (*chan_str == '-') { // Empty. } else if (strcasecmp("Sel", chan_str) == 0) { // Selected channel only. scanlist_append(snum-1, 0); } else { char *str = chan_str; int nchan = 0; int range = 0; int last = 0; // Parse channel list. for (;;) { char *eptr; int cnum = strtoul(str, &eptr, 10); if (eptr == str) { fprintf(stderr, "Scan list %d: wrong channel list '%s'.\n", snum, str); return 0; } if (cnum < 1 || cnum > NCHAN) { fprintf(stderr, "Scan list %d: wrong channel number %d.\n", snum, cnum); return 0; } if (range) { // Add range. int c; for (c=last+1; c<=cnum; c++) { if (!scanlist_append(snum-1, c)) { fprintf(stderr, "Scan list %d: too many channels.\n", snum); return 0; } nchan++; } } else { // Add single channel. if (!scanlist_append(snum-1, cnum)) { fprintf(stderr, "Scan list %d: too many channels.\n", snum); return 0; } nchan++; } if (*eptr == 0) break; if (*eptr != ',' && *eptr != '-') { fprintf(stderr, "Scan list %d: wrong channel list '%s'.\n", snum, eptr); return 0; } range = (*eptr == '-'); last = cnum; str = eptr + 1; } } return 1; } // // Parse one line of Contacts table. // Return 0 on failure. // static int parse_contact(int first_row, char *line) { char num_str[256], name_str[256], type_str[256], id_str[256], rxtone_str[256]; int cnum, type, id, rxtone; if (sscanf(line, "%s %s %s %s %s", num_str, name_str, type_str, id_str, rxtone_str) != 5) return 0; cnum = atoi(num_str); if (cnum < 1 || cnum > NCONTACTS) { fprintf(stderr, "Bad contact number.\n"); return 0; } if (first_row) { // On first entry, erase the Contacts table. erase_contacts(); } if (strcasecmp("Group", type_str) == 0) { type = CALL_GROUP; } else if (strcasecmp("Private", type_str) == 0) { type = CALL_PRIVATE; } else if (strcasecmp("All", type_str) == 0) { type = CALL_ALL; } else { fprintf(stderr, "Bad call type.\n"); return 0; } id = atoi(id_str); if (id < 1 || id > 0xffffff) { fprintf(stderr, "Bad call ID.\n"); return 0; } if (*rxtone_str == '-' || strcasecmp("No", rxtone_str) == 0) { rxtone = 0; } else if (*rxtone_str == '+' || strcasecmp("Yes", rxtone_str) == 0) { rxtone = 1; } else { fprintf(stderr, "Bad receive tone flag.\n"); return 0; } setup_contact(cnum-1, name_str, type, id, rxtone); return 1; } // // Parse one line of Grouplist table. // Return 0 on failure. // static int parse_grouplist(int first_row, char *line) { char num_str[256], name_str[256], list_str[256]; int glnum; if (sscanf(line, "%s %s %s", num_str, name_str, list_str) != 3) return 0; glnum = strtoul(num_str, 0, 10); if (glnum < 1 || glnum > NGLISTS) { fprintf(stderr, "Bad group list number.\n"); return 0; } if (first_row) { // On first entry, erase the Grouplists table. memset(&radio_mem[OFFSET_GROUPTAB], 0, sizeof(grouptab_t)); } setup_grouplist(glnum-1, name_str); if (*list_str != '-') { char *str = list_str; int range = 0; int last = 0; // Parse contact list. for (;;) { char *eptr; int cnum = strtoul(str, &eptr, 10); if (eptr == str) { fprintf(stderr, "Group list %d: wrong contact list '%s'.\n", glnum, str); return 0; } if (cnum < 1 || cnum > NCONTACTS) { fprintf(stderr, "Group list %d: wrong contact number %d.\n", glnum, cnum); return 0; } if (range) { // Add range. int c; for (c=last+1; c<=cnum; c++) { if (!grouplist_append(glnum-1, c)) { fprintf(stderr, "Group list %d: too many contacts.\n", glnum); return 0; } } } else { // Add single contact. if (!grouplist_append(glnum-1, cnum)) { fprintf(stderr, "Group list %d: too many contacts.\n", glnum); return 0; } } if (*eptr == 0) break; if (*eptr != ',' && *eptr != '-') { fprintf(stderr, "Group list %d: wrong contact list '%s'.\n", glnum, eptr); return 0; } range = (*eptr == '-'); last = cnum; str = eptr + 1; } } return 1; } // // Parse one line of Messages table. // Return 0 on failure. // static int parse_messages(int first_row, char *line) { char *text; int mnum; mnum = strtoul(line, &text, 10); if (text == line || mnum < 1 || mnum > NMESSAGES) { fprintf(stderr, "Bad message number.\n"); return 0; } if (first_row) { // On first entry, erase the Messages table. memset(GET_MSGTAB(), 0, sizeof(msgtab_t)); } setup_message(mnum-1, text); return 1; } // // Parse table header. // Return table id, or 0 in case of error. // static int rd5r_parse_header(radio_device_t *radio, char *line) { if (strncasecmp(line, "Digital", 7) == 0) return 'D'; if (strncasecmp(line, "Analog", 6) == 0) return 'A'; if (strncasecmp(line, "Zone", 4) == 0) return 'Z'; if (strncasecmp(line, "Scanlist", 8) == 0) return 'S'; if (strncasecmp(line, "Contact", 7) == 0) return 'C'; if (strncasecmp(line, "Grouplist", 9) == 0) return 'G'; if (strncasecmp(line, "Message", 7) == 0) return 'M'; return 0; } // // Parse one line of table data. // Return 0 on failure. // static int rd5r_parse_row(radio_device_t *radio, int table_id, int first_row, char *line) { switch (table_id) { case 'D': return parse_digital_channel(radio, first_row, line); case 'A': return parse_analog_channel(radio, first_row, line); case 'Z': return parse_zones(first_row, line); case 'S': return parse_scanlist(first_row, line); case 'C': return parse_contact(first_row, line); case 'G': return parse_grouplist(first_row, line); case 'M': return parse_messages(first_row, line); } return 0; } // // Update timestamp. // static void rd5r_update_timestamp(radio_device_t *radio) { unsigned char *timestamp = GET_TIMESTAMP(); char p[16]; // Last Programmed Date get_timestamp(p); timestamp[0] = ((p[0] & 0xf) << 4) | (p[1] & 0xf); // year upper timestamp[1] = ((p[2] & 0xf) << 4) | (p[3] & 0xf); // year lower timestamp[2] = ((p[4] & 0xf) << 4) | (p[5] & 0xf); // month timestamp[3] = ((p[6] & 0xf) << 4) | (p[7] & 0xf); // day timestamp[4] = ((p[8] & 0xf) << 4) | (p[9] & 0xf); // hour timestamp[5] = ((p[10] & 0xf) << 4) | (p[11] & 0xf); // minute } // // Check that configuration is correct. // Return 0 on error. // static int rd5r_verify_config(radio_device_t *radio) { int i, k, nchannels = 0, nzones = 0, nscanlists = 0, ngrouplists = 0; int ncontacts = 0, nerrors = 0; // Channels: check references to scanlists, contacts and grouplists. for (i=0; iscan_list_index != 0) { scanlist_t *sl = get_scanlist(ch->scan_list_index - 1); if (!sl) { fprintf(stderr, "Channel %d '", i+1); print_ascii(stderr, ch->name, 16, 0); fprintf(stderr, "': scanlist %d not found.\n", ch->scan_list_index); nerrors++; } } if (ch->contact_name_index != 0) { contact_t *ct = GET_CONTACT(ch->contact_name_index - 1); if (!VALID_CONTACT(ct)) { fprintf(stderr, "Channel %d '", i+1); print_ascii(stderr, ch->name, 16, 0); fprintf(stderr, "': contact %d not found.\n", ch->contact_name_index); nerrors++; } } if (ch->group_list_index != 0) { grouplist_t *gl = get_grouplist(ch->group_list_index - 1); if (!gl) { fprintf(stderr, "Channel %d '", i+1); print_ascii(stderr, ch->name, 16, 0); fprintf(stderr, "': grouplist %d not found.\n", ch->group_list_index); nerrors++; } } } // Zones: check references to channels. for (i=0; imember[k]; if (cnum != 0 && !get_channel(cnum - 1)) { fprintf(stderr, "Zone %d '", i+1); print_ascii(stderr, z->name, 16, 0); fprintf(stderr, "': channel %d not found.\n", cnum); nerrors++; } } } // Scanlists: check references to channels. for (i=0; imember[k] - 1; if (cnum > 0 && !get_channel(cnum - 1)) { fprintf(stderr, "Scanlist %d '", i+1); print_ascii(stderr, sl->name, 15, 0); fprintf(stderr, "': channel %d not found.\n", cnum); nerrors++; } } } // Grouplists: check references to contacts. for (i=0; imember[k]; if (cnum != 0) { contact_t *ct = GET_CONTACT(cnum - 1); if (!VALID_CONTACT(ct)) { fprintf(stderr, "Grouplist %d '", i+1); print_ascii(stderr, gl->name, 16, 0); fprintf(stderr, "': contact %d not found.\n", cnum); nerrors++; } } } } // Count contacts. for (i=0; i 0) { fprintf(stderr, "Total %d errors.\n", nerrors); return 0; } fprintf(stderr, "Total %d channels, %d zones, %d scanlists, %d contacts, %d grouplists.\n", nchannels, nzones, nscanlists, ncontacts, ngrouplists); return 1; } // // Baofeng RD-5R // radio_device_t radio_rd5r = { "Baofeng RD-5R", rd5r_download, rd5r_upload, rd5r_is_compatible, rd5r_read_image, rd5r_save_image, rd5r_print_version, rd5r_print_config, rd5r_verify_config, rd5r_parse_parameter, rd5r_parse_header, rd5r_parse_row, rd5r_update_timestamp, }; dmrconfig-master/serial.c000066400000000000000000000536131354060760700157620ustar00rootroot00000000000000/* * Interface to virtual serial USB port. * * Copyright (C) 2018 Serge Vakulenko, KK6ABQ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include #include #include #include #include "util.h" #if defined(__WIN32__) || defined(WIN32) #include #include #include static void *fd = INVALID_HANDLE_VALUE; static DCB saved_mode; #else #include static int fd = -1; static struct termios saved_mode; #endif #ifdef __linux__ # include #endif #ifdef __APPLE__ # include # include # include #endif static char *dev_path; static const unsigned char CMD_PRG[] = "PROGRAM"; static const unsigned char CMD_PRG2[] = "\2"; static const unsigned char CMD_QX[] = "QX\6"; static const unsigned char CMD_ACK[] = "\6"; static const unsigned char CMD_READ[] = "Raaaan"; static const unsigned char CMD_WRITE[] = "Waaaan..."; static const unsigned char CMD_END[] = "END"; #if defined(__WIN32__) || defined(WIN32) // No need for this function. #else // // Encode the speed in bits per second into bit value // accepted by cfsetspeed() function. // Return -1 when speed is not supported. // static int baud_encode(int bps) { // Linux: only a limited set of values permitted. switch (bps) { #ifdef B75 case 75: return B75; #endif #ifdef B110 case 110: return B110; #endif #ifdef B134 case 134: return B134; #endif #ifdef B150 case 150: return B150; #endif #ifdef B200 case 200: return B200; #endif #ifdef B300 case 300: return B300; #endif #ifdef B600 case 600: return B600; #endif #ifdef B1200 case 1200: return B1200; #endif #ifdef B1800 case 1800: return B1800; #endif #ifdef B2400 case 2400: return B2400; #endif #ifdef B4800 case 4800: return B4800; #endif #ifdef B9600 case 9600: return B9600; #endif #ifdef B19200 case 19200: return B19200; #endif #ifdef B38400 case 38400: return B38400; #endif #ifdef B57600 case 57600: return B57600; #endif #ifdef B115200 case 115200: return B115200; #endif #ifdef B230400 case 230400: return B230400; #endif #ifdef B460800 case 460800: return B460800; #endif #ifdef B500000 case 500000: return B500000; #endif #ifdef B576000 case 576000: return B576000; #endif #ifdef B921600 case 921600: return B921600; #endif #ifdef B1000000 case 1000000: return B1000000; #endif #ifdef B1152000 case 1152000: return B1152000; #endif #ifdef B1500000 case 1500000: return B1500000; #endif #ifdef B2000000 case 2000000: return B2000000; #endif #ifdef B2500000 case 2500000: return B2500000; #endif #ifdef B3000000 case 3000000: return B3000000; #endif #ifdef B3500000 case 3500000: return B3500000; #endif #ifdef B4000000 case 4000000: return B4000000; #endif } return -1; } #endif /* WIN32 */ // // Send data to device. // Return number of bytes, or -1 on error. // int serial_write(const unsigned char *data, int len) { #if defined(__WIN32__) || defined(WIN32) DWORD written; if (! WriteFile(fd, data, len, &written, 0)) return -1; return written; #else return write(fd, data, len); #endif } // // Receive data from device. // Return number of bytes, or -1 on error. // int serial_read(unsigned char *data, int len, int timeout_msec) { #if defined(__WIN32__) || defined(WIN32) DWORD got; COMMTIMEOUTS ctmo; // Reset the Windows RX timeout to the current timeout_msec // value, as it may have changed since the last read. // memset(&ctmo, 0, sizeof(ctmo)); ctmo.ReadIntervalTimeout = 0; ctmo.ReadTotalTimeoutMultiplier = 0; ctmo.ReadTotalTimeoutConstant = timeout_msec; if (! SetCommTimeouts(fd, &ctmo)) { fprintf(stderr, "Cannot set timeouts in serial_read()\n"); return -1; } if (! ReadFile(fd, data, len, &got, 0)) { fprintf(stderr, "serial_read: read error\n"); exit(-1); } #else struct timeval timeout, to2; long got; fd_set rfds; timeout.tv_sec = timeout_msec / 1000; timeout.tv_usec = timeout_msec % 1000 * 1000; again: to2 = timeout; FD_ZERO(&rfds); FD_SET(fd, &rfds); got = select(fd + 1, &rfds, 0, 0, &to2); if (got < 0) { if (errno == EINTR || errno == EAGAIN) { if (trace_flag > 0) printf("serial_read: retry on select\n"); goto again; } fprintf(stderr, "serial_read: select error: %s\n", strerror(errno)); exit(-1); } #endif if (got == 0) { if (trace_flag > 0) printf("serial_read: no characters to read\n"); return 0; } #if ! defined(__WIN32__) && ! defined(WIN32) got = read(fd, data, (len > 1024) ? 1024 : len); if (got < 0) { fprintf(stderr, "serial_read: read error\n"); exit(-1); } #endif return got; } // // Open the serial port. // Return -1 on error. // int serial_open(const char *devname, int baud_rate) { #if defined(__WIN32__) || defined(WIN32) DCB new_mode; #else struct termios new_mode; #endif #if defined(__WIN32__) || defined(WIN32) // Check for the Windows device syntax and bend a DOS device // into that syntax to allow higher COM numbers than 9 // if (devname[0] != '\\') { // Prepend device prefix: COM23 -> \\.\COM23 char *buf = alloca(5 + strlen(devname)); if (! buf) { fprintf(stderr, "%s: Out of memory\n", devname); return -1; } strcpy(buf, "\\\\.\\"); strcat(buf, devname); devname = buf; } // Open port fd = CreateFile(devname, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0); if (fd == INVALID_HANDLE_VALUE) { fprintf(stderr, "%s: Cannot open\n", devname); return -1; } // Set serial attributes memset(&saved_mode, 0, sizeof(saved_mode)); if (! GetCommState(fd, &saved_mode)) { fprintf(stderr, "%s: Cannot get state\n", devname); return -1; } new_mode = saved_mode; new_mode.fDtrControl = DTR_CONTROL_ENABLE; new_mode.BaudRate = baud_rate; new_mode.ByteSize = 8; new_mode.StopBits = ONESTOPBIT; new_mode.Parity = 0; new_mode.fParity = FALSE; new_mode.fOutX = FALSE; new_mode.fInX = FALSE; new_mode.fOutxCtsFlow = FALSE; new_mode.fOutxDsrFlow = FALSE; new_mode.fRtsControl = RTS_CONTROL_ENABLE; new_mode.fNull = FALSE; new_mode.fAbortOnError = FALSE; new_mode.fBinary = TRUE; if (! SetCommState(fd, &new_mode)) { fprintf(stderr, "%s: Cannot set state\n", devname); return -1; } #else // Encode baud rate. int baud_code = baud_encode(baud_rate); if (baud_code < 0) { fprintf(stderr, "%s: Bad baud rate %d\n", devname, baud_rate); return -1; } // Open port fd = open(devname, O_RDWR | O_NOCTTY | O_NONBLOCK); if (fd < 0) { perror(devname); return -1; } // Set serial attributes memset(&saved_mode, 0, sizeof(saved_mode)); tcgetattr(fd, &saved_mode); // 8n1, ignore parity memset(&new_mode, 0, sizeof(new_mode)); new_mode.c_cflag = CS8 | CLOCAL | CREAD; new_mode.c_iflag = IGNBRK; new_mode.c_oflag = 0; new_mode.c_lflag = 0; new_mode.c_cc[VTIME] = 0; new_mode.c_cc[VMIN] = 1; cfsetispeed(&new_mode, baud_code); cfsetospeed(&new_mode, baud_code); tcflush(fd, TCIFLUSH); tcsetattr(fd, TCSANOW, &new_mode); // Clear O_NONBLOCK flag. int flags = fcntl(fd, F_GETFL, 0); if (flags >= 0) fcntl(fd, F_SETFL, flags & ~O_NONBLOCK); #endif return 0; } // // Find a device path by vid/pid. // static char *find_path(int vid, int pid) { char *result = 0; #if defined(__linux__) // Create the udev object. struct udev *udev = udev_new(); if (! udev) { printf("Can't create udev\n"); return 0; } // Create a list of the devices in the 'tty' subsystem. struct udev_enumerate *enumerate = udev_enumerate_new(udev); udev_enumerate_add_match_subsystem(enumerate, "tty"); udev_enumerate_scan_devices(enumerate); struct udev_list_entry *devices = udev_enumerate_get_list_entry(enumerate); // For each item enumerated, figure out its information. struct udev_list_entry *dev_list_entry; udev_list_entry_foreach(dev_list_entry, devices) { // Get the filename of the /sys entry for the device // and create a udev_device object (dev) representing it. const char *syspath = udev_list_entry_get_name(dev_list_entry); struct udev_device *comport = udev_device_new_from_syspath(udev, syspath); //printf("syspath = %s\n", syspath); // Get the parent device with the subsystem/devtype pair // of "usb"/"usb_device". struct udev_device *parent = udev_device_get_parent_with_subsystem_devtype(comport, "usb", "usb_device"); if (! parent) { //printf("Unable to find parent usb device.\n"); continue; } // Get the path to the device node in /dev. const char *devpath = udev_device_get_devnode(comport); //printf("devpath = %s\n", devpath); //printf("parent = %s\n", udev_device_get_devnode(parent)); const char *idVendor = udev_device_get_sysattr_value(parent, "idVendor"); const char *idProduct = udev_device_get_sysattr_value(parent, "idProduct"); if (! idVendor || ! idProduct) { // No vendor and product ID. continue; } //printf("vid = %s\n", idVendor); //printf("pid = %s\n", idProduct); unsigned vendor_id = strtoul(idVendor, 0, 16); unsigned product_id = strtoul(idProduct, 0, 16); if (vendor_id != vid || product_id != pid) { // Wrong ID. continue; } // Print names of vendor and product. //const char *vendor = udev_device_get_sysattr_value(parent, "manufacturer"); //const char *product = udev_device_get_sysattr_value(parent, "product"); //printf("vendor = %s\n", vendor); //printf("product = %s\n", product); // Return result. udev_device_unref(parent); result = strdup(devpath); break; } // Free the enumerator object udev_enumerate_unref(enumerate); udev_unref(udev); #elif defined(__APPLE__) // Create a list of the devices in the 'IOSerialBSDClient' class. CFMutableDictionaryRef dict = IOServiceMatching(kIOSerialBSDServiceValue); if (! dict) { printf("Cannot create IO Service dictionary.\n"); return 0; } io_iterator_t devices = IO_OBJECT_NULL; kern_return_t ret = IOServiceGetMatchingServices(kIOMasterPortDefault, dict, &devices); if (ret != KERN_SUCCESS) { printf("Cannot find matching IO services.\n"); return 0; } // For each matching device, print out its information. io_object_t device; while ((device = IOIteratorNext(devices)) != MACH_PORT_NULL) { // Get device path. char devname[1024]; CFStringRef ref = (CFStringRef) IORegistryEntrySearchCFProperty(device, kIOServicePlane, CFSTR(kIOCalloutDeviceKey), kCFAllocatorDefault, kIORegistryIterateRecursively); if (! ref || ! CFStringGetCString(ref, devname, sizeof(devname), kCFStringEncodingUTF8)) { // Cannot get device path. continue; } //printf("%s\n", devname); // Get device parent. io_registry_entry_t parent = 0; if (KERN_SUCCESS != IORegistryEntryGetParentEntry(device, kIOServicePlane, &parent)) { //printf("Cannot get device parent.\n"); continue; } // Get device grandparent. io_registry_entry_t grandparent = 0; if (KERN_SUCCESS != IORegistryEntryGetParentEntry(parent, kIOServicePlane, &grandparent)) { //printf("Cannot get device grandparent.\n"); continue; } // Get vendor ID. int vendor_id; ref = IORegistryEntryCreateCFProperty(grandparent, CFSTR(kUSBVendorID), kCFAllocatorDefault, 0); if (! ref || ! CFNumberGetValue((CFNumberRef)ref, kCFNumberIntType, &vendor_id)) { //printf("Cannot get vendor ID.\n"); continue; } // Get product ID. int product_id; ref = IORegistryEntryCreateCFProperty(grandparent, CFSTR(kUSBProductID), kCFAllocatorDefault, 0); if (! ref || ! CFNumberGetValue((CFNumberRef)ref, kCFNumberIntType, &product_id)) { //printf("Cannot get product ID.\n"); continue; } if (vendor_id != vid || product_id != pid) { // Wrong ID. continue; } result = strdup(devname); break; } // Free the iterator object IOObjectRelease(devices); #else // Prepare a pattern for device name matching. char pattern[128]; int pattern_len; sprintf(pattern, "\\\\?\\usb#vid_%04x&pid_%04x", vid, pid); pattern_len = strlen(pattern); // Get access to serial device information. static GUID guid = { 0xa5dcbf10, 0x6530, 0x11d2, { 0x90, 0x1f, 0x00, 0xc0, 0x4f, 0xb9, 0x51, 0xed } }; HDEVINFO devinfo = SetupDiGetClassDevs(&guid, NULL, NULL, DIGCF_PRESENT | DIGCF_INTERFACEDEVICE); if (devinfo == INVALID_HANDLE_VALUE) { printf("Cannot get devinfo!\n"); return 0; } // Loop through available devices with a given GUID. int index; SP_INTERFACE_DEVICE_DATA iface; iface.cbSize = sizeof(iface); for (index=0; SetupDiEnumDeviceInterfaces(devinfo, NULL, &guid, index, &iface); ++index) { // Obtain a required size of device detail structure. DWORD needed; SetupDiGetDeviceInterfaceDetail(devinfo, &iface, NULL, 0, &needed, NULL); // Allocate the device detail structure. PSP_INTERFACE_DEVICE_DETAIL_DATA detail = (PSP_INTERFACE_DEVICE_DETAIL_DATA)alloca(needed); detail->cbSize = sizeof(SP_INTERFACE_DEVICE_DETAIL_DATA); SP_DEVINFO_DATA did = { sizeof(SP_DEVINFO_DATA) }; // Get device information. if (!SetupDiGetDeviceInterfaceDetail(devinfo, &iface, detail, needed, NULL, &did)) { //printf("Device %d: cannot get path!\n", index); continue; } //printf("Device %d: path %s\n", index, detail->DevicePath); // Check vid/pid. if (strncmp(detail->DevicePath, pattern, pattern_len) != 0) { //printf("Wrong vid/pid.\n"); continue; } // Figure out the COM port name. HKEY key = SetupDiOpenDevRegKey(devinfo, &did, DICS_FLAG_GLOBAL, 0, DIREG_DEV, KEY_READ); static char comname[128]; DWORD size = sizeof(comname), type = REG_SZ; if (ERROR_SUCCESS != RegQueryValueEx(key, "PortName", NULL, &type, (LPBYTE)comname, &size)) { //printf("Cannot find 'portname' in registry!\n"); RegCloseKey(key); continue; } RegCloseKey(key); //printf("COM port: %s\n", comname); // Required device found. result = comname; break; } SetupDiDestroyDeviceInfoList(devinfo); #endif return result; } // // Connect to the specified device. // Initiate the programming session. // int serial_init(int vid, int pid) { dev_path = find_path(vid, pid); if (!dev_path) { if (trace_flag) { fprintf(stderr, "Cannot find USB device %04x:%04x\n", vid, pid); } return -1; } // Succeeded. printf("Serial port: %s\n", dev_path); return 0; } // // Send the command sequence and get back a response. // static int send_recv(const unsigned char *cmd, int cmdlen, unsigned char *response, int reply_len) { unsigned char *p; int len, i, got; // // Send command. // if (trace_flag > 0) { fprintf(stderr, "----Send [%d] %02x", cmdlen, cmd[0]); for (i=1; i 0) { fprintf(stderr, "----Recv [%d] %02x", reply_len, response[0]); for (i=1; i= 0) { unsigned char ack[1]; send_recv(CMD_END, 3, ack, 1); tcsetattr(fd, TCSANOW, &saved_mode); close(fd); fd = -1; } #endif } // // Query and return the device identification string. // On error, return NULL. // const char *serial_identify() { static unsigned char reply[16]; unsigned char ack[3]; int retry = 0; if (serial_open(dev_path, 115200) < 0) { return 0; } again: #if defined(__WIN32__) || defined(WIN32) //TODO: flush pending input and output buffers. #else tcflush(fd, TCIOFLUSH); #endif send_recv(CMD_PRG, 7, ack, 3); if (memcmp(ack, CMD_QX, 3) != 0) { if (++retry >= 10) { fprintf(stderr, "%s: Wrong PRG acknowledge %02x-%02x-%02x, expected %02x-%02x-%02x\n", __func__, ack[0], ack[1], ack[2], CMD_QX[0], CMD_QX[1], CMD_QX[2]); return 0; } usleep(500000); goto again; } // Reply: // 49 44 38 36 38 55 56 45 00 56 31 30 32 00 00 06 // I D 8 6 8 U V E V 1 0 2 send_recv(CMD_PRG2, 1, reply, 16); if (reply[0] != 'I' || reply[15] != CMD_ACK[0]) { if (++retry >= 10) { fprintf(stderr, "%s: Wrong PRG2 reply %02x-...-%02x, expected %02x-...-%02x\n", __func__, reply[0], reply[15], 'I', CMD_ACK[0]); return 0; } usleep(500000); goto again; } // Terminate the string. reply[8] = 0; return (char*)&reply[1]; } void serial_read_region(int addr, unsigned char *data, int nbytes) { static const int DATASZ = 64; unsigned char cmd[6], reply[8 + DATASZ]; int n, i, retry = 0; for (n=0; n> 24; cmd[2] = (addr + n) >> 16; cmd[3] = (addr + n) >> 8; cmd[4] = addr + n; cmd[5] = DATASZ; again: send_recv(cmd, 6, reply, sizeof(reply)); if (reply[0] != CMD_WRITE[0] || reply[7+DATASZ] != CMD_ACK[0]) { fprintf(stderr, "%s: Wrong read reply %02x-...-%02x, expected %02x-...-%02x\n", __func__, reply[0], reply[7+DATASZ], CMD_WRITE[0], CMD_ACK[0]); exit(-1); } // Compute checksum. unsigned char sum = reply[1]; for (i=2; i<6+DATASZ; i++) sum += reply[i]; if (reply[6+DATASZ] != sum) { fprintf(stderr, "%s: Wrong read checksum %02x, expected %02x\n", __func__, sum, reply[6+DATASZ]); if (retry++ < 3) goto again; exit(-1); } memcpy(data + n, reply + 6, DATASZ); } } void serial_write_region(int addr, unsigned char *data, int nbytes) { //static const int DATASZ = 64; static const int DATASZ = 16; unsigned char ack, cmd[8 + DATASZ]; int n, i; for (n=0; n> 24; cmd[2] = (addr + n) >> 16; cmd[3] = (addr + n) >> 8; cmd[4] = addr + n; cmd[5] = DATASZ; memcpy(cmd + 6, data + n, DATASZ); // Compute checksum. unsigned char sum = cmd[1]; for (i=2; i<6+DATASZ; i++) sum += cmd[i]; cmd[6 + DATASZ] = sum; cmd[7 + DATASZ] = CMD_ACK[0]; send_recv(cmd, 8 + DATASZ, &ack, 1); if (ack != CMD_ACK[0]) { fprintf(stderr, "%s: Wrong acknowledge %#x, expected %#x\n", __func__, ack, CMD_ACK[0]); exit(-1); } } } dmrconfig-master/util.c000066400000000000000000000515351354060760700154610ustar00rootroot00000000000000/* * Auxiliary functions. * * Copyright (C) 2018 Serge Vakulenko, KK6ABQ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include #include #include #include #include #ifdef MINGW32 # include #else # include #endif #include "util.h" // // CTCSS tones, Hz*10. // #define NCTCSS 50 static const int CTCSS_TONES [NCTCSS] = { 670, 693, 719, 744, 770, 797, 825, 854, 885, 915, 948, 974, 1000, 1035, 1072, 1109, 1148, 1188, 1230, 1273, 1318, 1365, 1413, 1462, 1514, 1567, 1598, 1622, 1655, 1679, 1713, 1738, 1773, 1799, 1835, 1862, 1899, 1928, 1966, 1995, 2035, 2065, 2107, 2181, 2257, 2291, 2336, 2418, 2503, 2541, }; // // DCS codes. // #define NDCS (104+1) static const int DCS_CODES[NDCS] = { 23, 25, 26, 31, 32, 36, 43, 47, 51, 53, 54, 65, 71, 72, 73, 74, 114, 115, 116, 122, 125, 131, 132, 134, 143, 145, 152, 155, 156, 162, 165, 172, 174, 205, 212, 223, 225, 226, 243, 244, 245, 246, 251, 252, 255, 261, 263, 265, 266, 271, 274, 306, 311, 315, 325, 331, 332, 343, 346, 351, 356, 364, 365, 371, 411, 412, 413, 423, 431, 432, 445, 446, 452, 454, 455, 462, 464, 465, 466, 503, 506, 516, 523, 526, 532, 546, 565, 606, 612, 624, 627, 631, 632, 654, 662, 664, 703, 712, 723, 731, 732, 734, 743, 754, 17, // For RD-5R }; // // Check for a regular file. // int is_file(char *filename) { #ifdef MINGW32 // Treat COM* as a device. return strncasecmp(filename, "com", 3) != 0; #else struct stat st; if (stat(filename, &st) < 0) { // File not exist: treat it as a regular file. return 1; } return (st.st_mode & S_IFMT) == S_IFREG; #endif } // // Print data in hex format. // void print_hex(const unsigned char *data, int len) { int i; printf("%02x", (unsigned char) data[0]); for (i=1; i= 16; len -= 16) { printf("%08x: ", addr); print_hex(data, 16); printf("\n"); addr += 16; data += 16; } if (len > 0) { printf("%08x: ", addr); print_hex(data, len); printf("\n"); } } // // Strip trailing spaces and newline. // Shorten the string in place to a specified limit. // char *trim_spaces(char *line, int limit) { // Strip leading spaces. while (*line==' ' || *line=='\t') line++; // Shorten to the limit. unsigned len = strlen(line); if (len > limit) line[limit] = 0; // Strip trailing spaces and newlines. char *e = line + strlen(line) - 1; while (e >= line && (*e=='\n' || *e=='\r' || *e==' ' || *e=='\t')) *e-- = 0; return line; } // // Strip optional quotes around the string. // char *trim_quotes(char *line) { if (*line == '"') { int last = strlen(line) - 1; if (line[last] == '"') { line[last] = 0; return line+1; } } return line; } // // Delay in milliseconds. // void mdelay(unsigned msec) { #ifdef MINGW32 Sleep(msec); #else usleep(msec * 1000); #endif } // // Round double value to integer. // static int iround(double x) { if (x >= 0) return (int)(x + 0.5); return -(int)(-x + 0.5); } // // Get a binary value of the parameter: On/Off, // Ignore case. // For invlid value, print a message and halt. // int on_off(char *param, char *value) { if (strcasecmp("On", value) == 0) return 1; if (strcasecmp("Off", value) == 0) return 0; fprintf(stderr, "Bad value for %s: %s\n", param, value); exit(-1); } // // Get integer value, or "Off" as 0, // Ignore case. // int atoi_off(const char *value) { if (strcasecmp("Off", value) == 0) return 0; return atoi(value); } // // Copy a text string to memory image. // Clear unused part with spaces. // void copy_str(unsigned char *dest, const char *src, int nbytes) { int i; for (i=0; i 0) fprintf(out, ","); fprintf(out, " %s", tab[i]); } fprintf(out, "\n"); } // // Write Unicode symbol to file. // Convert to UTF-8 encoding: // 00000000.0xxxxxxx -> 0xxxxxxx // 00000xxx.xxyyyyyy -> 110xxxxx, 10yyyyyy // xxxxyyyy.yyzzzzzz -> 1110xxxx, 10yyyyyy, 10zzzzzz // void putc_utf8(unsigned short ch, FILE *out) { if (ch < 0x80) { putc (ch, out); } else if (ch < 0x800) { putc (ch >> 6 | 0xc0, out); putc ((ch & 0x3f) | 0x80, out); } else { putc (ch >> 12 | 0xe0, out); putc (((ch >> 6) & 0x3f) | 0x80, out); putc ((ch & 0x3f) | 0x80, out); } } // // Print utf16 text as utf8. // For short texts, replace space with underscore. // void print_unicode(FILE *out, const unsigned short *text, unsigned nchars, int fill_flag) { unsigned i, ch; if ((*text == 0xff || *text == 0) && fill_flag) { // When text is empty, still print something. unsigned short underscore[2] = { '_', 0 }; text = underscore; } for (i=0; i 0; nsym--) { int ch = utf8_to_unicode(&src); if (ch == '_') ch = ' '; *dst++ = ch; if (ch == 0) { // Clear the remaining bytes. while (--nsym > 0) *dst++ = 0; break; } } } // // Copy ASCII string, at most nsym characters. // Replace underscore by space. // Fill the rest with 0xff. // void ascii_decode(unsigned char *dst, const char *src, unsigned nsym, unsigned fill) { if (src[0] == '-' && src[1] == 0) src = ""; for (; nsym > 0; nsym--) { int ch = *src++; if (ch == 0) { // Clear the remaining bytes. while (nsym-- > 0) *dst++ = fill; break; } if (ch == '_') ch = ' '; *dst++ = ch; } } // // Copy ASCII string, at most nsym characters. // Replace underscore by space. // Fill the rest with 0xff. // void ascii_decode_uppercase(unsigned char *dst, const char *src, unsigned nsym, unsigned fill) { if (src[0] == '-' && src[1] == 0) src = ""; for (; nsym > 0; nsym--) { int ch = *src++; if (ch == 0) { // Clear the remaining bytes. while (nsym-- > 0) *dst++ = fill; break; } if (ch == '_') ch = ' '; else if (ch >= 'a' && ch <= 'z') ch += 'A' - 'a'; *dst++ = ch; } } // // Convert tone string to BCD format. // Four possible formats: // nnn.n - CTCSS frequency // DnnnN - DCS normal // DnnnI - DCS inverted // '-' - Disabled // int encode_tone(char *str) { unsigned val, tag, a, b, c, d; if (*str == '-') { // Disabled return 0xffff; } else if (*str == 'D' || *str == 'd') { // // DCS tone // char *e; val = strtoul(++str, &e, 10); // Find a valid index in DCS table. int i; for (i=0; i= NDCS) { return -1; } a = 0; b = val / 100; c = val / 10 % 10; d = val % 10; if (*e == 'N' || *e == 'n') { tag = 2; } else if (*e == 'I' || *e == 'i') { tag = 3; } else { return -1; } } else if (*str >= '0' && *str <= '9') { // // CTCSS tone // float hz; if (sscanf(str, "%f", &hz) != 1) return -1; // Round to integer. val = hz * 10.0 + 0.5; // Find a valid index in CTCSS table. int i; for (i=0; i= NCTCSS) return -1; a = val / 1000; b = val / 100 % 10; c = val / 10 % 10; d = val % 10; tag = 0; } else { return -1; } return (a << 12) | (b << 8) | (c << 4) | d | (tag << 14); } // // Print frequency (BCD value). // void print_freq(FILE *out, unsigned data) { fprintf(out, "%d%d%d.%d%d%d", (data >> 28) & 15, (data >> 24) & 15, (data >> 20) & 15, (data >> 16) & 15, (data >> 12) & 15, (data >> 8) & 15); if ((data & 0xff) == 0) { fputs(" ", out); } else { fprintf(out, "%d", (data >> 4) & 15); if ((data & 0x0f) == 0) { fputs(" ", out); } else { fprintf(out, "%d", data & 15); } } } // // Convert frequency in MHz from floating point to // a binary coded decimal format (8 digits). // Format: abcdefgh // unsigned mhz_to_abcdefgh(double mhz) { unsigned hz = iround(mhz * 1000000.0); unsigned a = (hz / 100000000) % 10; unsigned b = (hz / 10000000) % 10; unsigned c = (hz / 1000000) % 10; unsigned d = (hz / 100000) % 10; unsigned e = (hz / 10000) % 10; unsigned f = (hz / 1000) % 10; unsigned g = (hz / 100) % 10; unsigned h = (hz / 10) % 10; return a << 28 | b << 24 | c << 20 | d << 16 | e << 12 | f << 8 | g << 4 | h; } // // Convert frequency in MHz from floating point to // a binary coded decimal format (8 digits). // Format: ghefcdab // unsigned mhz_to_ghefcdab(double mhz) { unsigned hz = iround(mhz * 1000000.0); unsigned a = (hz / 100000000) % 10; unsigned b = (hz / 10000000) % 10; unsigned c = (hz / 1000000) % 10; unsigned d = (hz / 100000) % 10; unsigned e = (hz / 10000) % 10; unsigned f = (hz / 1000) % 10; unsigned g = (hz / 100) % 10; unsigned h = (hz / 10) % 10; return g << 28 | h << 24 | e << 20 | f << 16 | c << 12 | d << 8 | a << 4 | b; } // // Convert a 4-byte frequency value from binary coded decimal // to integer format (in Hertz). // int freq_to_hz(unsigned bcd) { int a = (bcd >> 28) & 15; int b = (bcd >> 24) & 15; int c = (bcd >> 20) & 15; int d = (bcd >> 16) & 15; int e = (bcd >> 12) & 15; int f = (bcd >> 8) & 15; int g = (bcd >> 4) & 15; int h = bcd & 15; return (((((((a*10 + b) * 10 + c) * 10 + d) * 10 + e) * 10 + f) * 10 + g) * 10 + h) * 10; } // // Print frequency as MHz. // void print_mhz(FILE *out, unsigned hz) { if (hz % 1000000 == 0) fprintf(out, "%-8u", hz / 1000000); else if (hz % 100000 == 0) fprintf(out, "%-8.1f", hz / 1000000.0); else if (hz % 10000 == 0) fprintf(out, "%-8.2f", hz / 1000000.0); else if (hz % 1000 == 0) fprintf(out, "%-8.3f", hz / 1000000.0); else if (hz % 100 == 0) fprintf(out, "%-8.4f", hz / 1000000.0); else fprintf(out, "%-8.5f", hz / 1000000.0); } // // Print the transmit offset or frequency. // void print_offset(FILE *out, unsigned rx_bcd, unsigned tx_bcd) { int rx_hz = freq_to_hz(rx_bcd); int tx_hz = freq_to_hz(tx_bcd); int delta = tx_hz - rx_hz; if (delta == 0) { fprintf(out, "+0 "); } else if (delta > 0 && delta/50000 <= 255) { fprintf(out, "+"); print_mhz(out, delta); } else if (delta < 0 && -delta/50000 <= 255) { fprintf(out, "-"); print_mhz(out, -delta); } else { fprintf(out, " "); print_mhz(out, tx_hz); } } // // Compare channel index for qsort(). // Treat 0 as empty element. // int compare_index(const void *pa, const void *pb) { unsigned short a = *(unsigned short*) pa; unsigned short b = *(unsigned short*) pb; if (a == 0) return (b != 0); if (b == 0) return -1; if (a < b) return -1; if (a > b) return 1; return 0; } // // Compare channel index for qsort(). // Treat 0xffff as empty element. // int compare_index_ffff(const void *pa, const void *pb) { unsigned short a = *(unsigned short*) pa; unsigned short b = *(unsigned short*) pb; if (a == 0xffff) return (b != 0xffff); if (b == 0xffff) return -1; if (a < b) return -1; if (a > b) return 1; return 0; } // // Compare channel index for qsort(). // Treat 0xffffffff as empty element. // int compare_index_ffffffff(const void *pa, const void *pb) { uint32_t a = *(uint32_t*) pa; uint32_t b = *(uint32_t*) pb; if (a == 0xffffffff) return (b != 0xffffffff); if (b == 0xffffffff) return -1; if (a < b) return -1; if (a > b) return 1; return 0; } // // Print CTSS or DCS tone. // void print_tone(FILE *out, unsigned data) { if (data == 0xffff) { fprintf(out, "- "); return; } unsigned tag = data >> 14; unsigned a = (data >> 12) & 3; unsigned b = (data >> 8) & 15; unsigned c = (data >> 4) & 15; unsigned d = data & 15; switch (tag) { default: // CTCSS if (a == 0) fprintf(out, "%d%d.%d ", b, c, d); else fprintf(out, "%d%d%d.%d", a, b, c, d); break; case 2: // DCS-N fprintf(out, "D%d%d%dN", b, c, d); break; case 3: // DCS-I fprintf(out, "D%d%d%dI", b, c, d); break; } } // // Initialize CSV parser. // Check header for correctness. // Return negative on error. // static int csv_skip_field1; static int csv_join_fields34; int csv_init(FILE *csv) { char line[256]; if (!fgets(line, sizeof(line), csv)) return -1; char *field1 = line; char *field2 = strchr(field1, ','); if (! field2) return -1; *field2++ = 0; char *field3 = strchr(field2, ','); if (! field3) return -1; *field3++ = 0; char *field4 = strchr(field3, ','); if (! field4) return -1; *field4++ = 0; field1 = trim_quotes(field1); field2 = trim_quotes(field2); field3 = trim_quotes(field3); //printf("Line: %s,%s,%s\n", field1, field2, field3); if (strcasecmp(field1, "Radio ID") == 0 && strcasecmp(field2, "Callsign") == 0) { // Correct format: // Radio ID,Callsign,Name,City,State,Country,Remarks csv_skip_field1 = 0; csv_join_fields34 = 0; return 0; } if (strcasecmp(field1, "RADIO_ID") == 0 && strcasecmp(field2, "CALLSIGN") == 0 && strcasecmp(field3, "FIRST_NAME") == 0) { // Correct format: // RADIO_ID,CALLSIGN,FIRST_NAME,LAST_NAME,CITY,STATE,COUNTRY,REMARKS csv_skip_field1 = 0; csv_join_fields34 = 1; return 0; } if (strcasecmp(field2, "Radio ID") == 0 && strcasecmp(field3, "Callsign") == 0) { // Correct format: // "No.","Radio ID","Callsign","Name","City","State","Country","Remarks" csv_skip_field1 = 1; csv_join_fields34 = 0; return 0; } fprintf(stderr, "Unexpected CSV file format!\n"); return -1; } // // Parse one line of CSV file. // Return 1 on success, 0 on EOF. // int csv_read(FILE *csv, char **radioid, char **callsign, char **name, char **city, char **state, char **country, char **remarks) { static char line[256]; again: if (!fgets(line, sizeof(line), csv)) return 0; //printf("Line: '%s'\n", line); // Replace non-ASCII characters with '?'. char *p; for (p=line; *p; p++) { if ((uint8_t)*p > '~') *p = '?'; } if (csv_skip_field1) { *radioid = strchr(line, ','); if (! *radioid) return 0; *(*radioid)++ = 0; } else *radioid = line; *callsign = strchr(*radioid, ','); if (! *callsign) return 0; *(*callsign)++ = 0; *name = strchr(*callsign, ','); if (! *name) return 0; *(*name)++ = 0; *city = strchr(*name, ','); if (! *city) return 0; *(*city)++ = 0; *state = strchr(*city, ','); if (! *state) return 0; *(*state)++ = 0; *country = strchr(*state, ','); if (! *country) return 0; *(*country)++ = 0; *remarks = strchr(*country, ','); if (! *remarks) return 0; *(*remarks)++ = 0; if ((p = strchr(*remarks, ',')) != 0) *p++ = 0; if (csv_join_fields34) { char *name2 = *city; *city = *state; *state = *country; *country = *remarks; *remarks = p; if ((p = strchr(*remarks, ',')) != 0) *p = 0; if (*name2) { static char fullname[256]; strcpy(fullname, *name); strcat(fullname, " "); strcat(fullname, name2); *name = fullname; } } *radioid = trim_spaces(trim_quotes(*radioid), 100); *callsign = trim_spaces(trim_quotes(*callsign), 100); *name = trim_spaces(trim_quotes(*name), 100); *city = trim_spaces(trim_quotes(*city), 100); *state = trim_spaces(trim_quotes(*state), 100); *country = trim_spaces(trim_quotes(*country), 100); *remarks = trim_spaces(trim_quotes(*remarks), 100); //printf("%s,%s,%s,%s,%s,%s,%s\n", *radioid, *callsign, *name, *city, *state, *country, *remarks); if (**radioid < '1' || **radioid > '9') goto again; return 1; } dmrconfig-master/util.h000066400000000000000000000140371354060760700154620ustar00rootroot00000000000000/* * Auxiliary functions. * * Copyright (C) 2018 Serge Vakulenko, KK6ABQ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ // // Program version. // extern const char version[]; extern const char *copyright; // // Trace data i/o via the serial port. // int trace_flag; // // Print data in hex format. // void print_hex(const unsigned char *data, int len); void print_hex_addr_data(unsigned addr, const unsigned char *data, int len); // // Strip trailing spaces and newline. // Shorten the string in place to a specified limit. // char *trim_spaces(char *line, int limit); // // Strip optional quotes around the string. // char *trim_quotes(char *line); // // Initialize CSV parser. // Check header for correctness. // Return -1 on error. // int csv_init(FILE *csv); // // Parse one line of CSV file. // Return 1 on success, 0 on EOF. // int csv_read(FILE *csv, char **radioid, char **callsign, char **name, char **city, char **state, char **country, char **remarks); // // DFU functions. // const char *dfu_init(unsigned vid, unsigned pid); void dfu_close(void); void dfu_erase(unsigned start, unsigned finish); void dfu_read_block(int bno, unsigned char *data, int nbytes); void dfu_write_block(int bno, unsigned char *data, int nbytes); void dfu_reboot(void); // // HID functions. // int hid_init(int vid, int pid); const char *hid_identify(void); void hid_close(void); void hid_send_recv(const unsigned char *data, unsigned nbytes, unsigned char *rdata, unsigned rlength); void hid_read_block(int bno, unsigned char *data, int nbytes); void hid_read_finish(void); void hid_write_block(int bno, unsigned char *data, int nbytes); void hid_write_finish(void); // // Serial functions. // int serial_init(int vid, int pid); const char *serial_identify(void); void serial_close(void); void serial_read_region(int addr, unsigned char *data, int nbytes); void serial_write_region(int addr, unsigned char *data, int nbytes); // // Delay in milliseconds. // void mdelay(unsigned msec); // // Check for a regular file. // int is_file(char *filename); // // Convert frequency in MHz from floating point to // a binary coded decimal format (8 digits). // unsigned mhz_to_abcdefgh(double mhz); unsigned mhz_to_ghefcdab(double mhz); // // Get a binary value of the parameter: On/Off, // Ignore case. // int on_off(char *param, char *value); // // Get integer value, or "Off" as 0, // Ignore case. // int atoi_off(const char *value); // // Copy a text string to memory image. // Clear unused space to zero. // void copy_str(unsigned char *dest, const char *src, int nbytes); // // Find a string in a table of size nelem, ignoring case. // Return -1 when not found. // int string_in_table(const char *value, const char *tab[], int nelem); // // Print description of the parameter. // void print_options(FILE *out, const char **tab, int num, const char *info); // // Print list of all squelch tones. // void print_squelch_tones(FILE *out, int normal_only); // // Write Unicode symbol to a file in UTF-8 encoding. // void putc_utf8(unsigned short ch, FILE *out); // // Print utf16 text as utf8. // void print_unicode(FILE *out, const unsigned short *text, unsigned nchars, int fill_flag); void print_ascii(FILE *out, const unsigned char *text, unsigned nchars, int fill_flag); // // Fetch Unicode symbol from UTF-8 string. // Advance string pointer. // int utf8_to_unicode(const char **p); // // Decode UTF-8 string into UCS-2 string, at most nsym characters. // void utf8_decode(unsigned short *dst, const char *src, unsigned nsym); // // Copy ASCII string, at most nsym characters. // Replace underscore by space. // void ascii_decode(unsigned char *dst, const char *src, unsigned nsym, unsigned fill); void ascii_decode_uppercase(unsigned char *dst, const char *src, unsigned nsym, unsigned fill); // // Get local time in format: YYYYMMDDhhmmss // void get_timestamp(char p[16]); // // Convert tone string to BCD format. // Return -1 on error. // Four possible formats: // nnn.n - CTCSS frequency // DnnnN - DCS normal // DnnnI - DCS inverted // '-' - Disabled // int encode_tone(char *str); // // Print frequency (BCD value). // void print_freq(FILE *out, unsigned data); // // Convert a 4-byte frequency value from binary coded decimal // to integer format (in Hertz). // int freq_to_hz(unsigned bcd); // // Print frequency as MHz. // void print_mhz(FILE *out, unsigned hz); // // Print the transmit offset or frequency. // void print_offset(FILE *out, unsigned rx_bcd, unsigned tx_bcd); // // Compare channel index for qsort(). // int compare_index(const void *pa, const void *pb); int compare_index_ffff(const void *pa, const void *pb); int compare_index_ffffffff(const void *pa, const void *pb); // // Print CTSS or DCS tone. // void print_tone(FILE *out, unsigned data); dmrconfig-master/uv380.c000066400000000000000000002173461354060760700153750ustar00rootroot00000000000000/* * Interface to TYT MD-UV380 and MD-2017. * * Copyright (C) 2018 Serge Vakulenko, KK6ABQ * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include #include #include #include #include "radio.h" #include "util.h" //#define PRINT_EXTENDED_PARAMS #define NCHAN 3000 #define NCONTACTS 10000 #define NZONES 250 #define NGLISTS 250 #define NSCANL 250 #define NMESSAGES 50 #define MEMSZ 0xd0000 #define OFFSET_TIMESTMP 0x02001 #define OFFSET_SETTINGS 0x02040 #define OFFSET_MSG 0x02180 #define OFFSET_GLISTS 0x0ec20 #define OFFSET_ZONES 0x149e0 #define OFFSET_SCANL 0x18860 #define OFFSET_ZONEXT 0x31000 #define OFFSET_CHANNELS 0x40000 #define OFFSET_CONTACTS 0x70000 #define CALLSIGN_START 0x00200000 // Start of callsign database #define CALLSIGN_FINISH 0x01000000 // End of callsign database #define CALLSIGN_OFFSET 0x4003 #define GET_TIMESTAMP() (&radio_mem[OFFSET_TIMESTMP]) #define GET_SETTINGS() ((general_settings_t*) &radio_mem[OFFSET_SETTINGS]) #define GET_CHANNEL(i) ((channel_t*) &radio_mem[OFFSET_CHANNELS + (i)*64]) #define GET_ZONE(i) ((zone_t*) &radio_mem[OFFSET_ZONES + (i)*64]) #define GET_ZONEXT(i) ((zone_ext_t*) &radio_mem[OFFSET_ZONEXT + (i)*224]) #define GET_SCANLIST(i) ((scanlist_t*) &radio_mem[OFFSET_SCANL + (i)*104]) #define GET_CONTACT(i) ((contact_t*) &radio_mem[OFFSET_CONTACTS + (i)*36]) #define GET_GROUPLIST(i) ((grouplist_t*) &radio_mem[OFFSET_GLISTS + (i)*96]) #define GET_MESSAGE(i) ((uint16_t*) &radio_mem[OFFSET_MSG + (i)*288]) #define GET_CALLSIGN(m,i) ((callsign_t*) ((m) + CALLSIGN_OFFSET + (i)*120)) #define VALID_TEXT(txt) (*(txt) != 0 && *(txt) != 0xffff) #define VALID_CHANNEL(ch) VALID_TEXT((ch)->name) #define VALID_ZONE(z) VALID_TEXT((z)->name) #define VALID_SCANLIST(sl) VALID_TEXT((sl)->name) #define VALID_GROUPLIST(gl) VALID_TEXT((gl)->name) #define VALID_CONTACT(ct) ((ct)->type != 0 && VALID_TEXT((ct)->name)) // // Channel data. // typedef struct { // Byte 0 uint8_t channel_mode : 2, // Mode: Analog or Digital #define MODE_ANALOG 1 #define MODE_DIGITAL 2 bandwidth : 2, // Bandwidth: 12.5 or 20 or 25 kHz #define BW_12_5_KHZ 0 #define BW_20_KHZ 1 #define BW_25_KHZ 2 autoscan : 1, // Autoscan Enable _unused1 : 2, // 0b11 lone_worker : 1; // Lone Worker // Byte 1 uint8_t _unused2 : 1, // 0 rx_only : 1, // RX Only Enable repeater_slot : 2, // Repeater Slot: 1 or 2 colorcode : 4; // Color Code: 0...15 // Byte 2 uint8_t privacy_no : 4, // Privacy No. (+1): 1...16 privacy : 2, // Privacy: None, Basic or Enhanced #define PRIV_NONE 0 #define PRIV_BASIC 1 #define PRIV_ENHANCED 2 private_call_conf : 1, // Private Call Confirmed data_call_conf : 1; // Data Call Confirmed // Byte 3 uint8_t rx_ref_frequency : 2, // RX Ref Frequency: Low, Medium or High #define REF_LOW 0 #define REF_MEDIUM 1 #define REF_HIGH 2 _unused3 : 1, // 0 emergency_alarm_ack : 1, // Emergency Alarm Ack _unused4 : 3, // 0b110 display_pttid_dis : 1; // Display PTT ID (inverted) // Byte 4 uint8_t tx_ref_frequency : 2, // RX Ref Frequency: Low, Medium or High _unused5 : 2, // 0b01 vox : 1, // VOX Enable _unused6 : 1, // 1 admit_criteria : 2; // Admit Criteria: Always, Channel Free or Correct CTS/DCS #define ADMIT_ALWAYS 0 #define ADMIT_CH_FREE 1 #define ADMIT_TONE 2 #define ADMIT_COLOR 3 // Byte 5 uint8_t _unused7 : 4, // 0 in_call_criteria : 2, // In Call Criteria: Always, Follow Admit Criteria or TX Interrupt #define INCALL_ALWAYS 0 #define INCALL_ADMIT 1 #define INCALL_TXINT 2 turn_off_freq : 2; // Non-QT/DQT Turn-off Freq.: None, 259.2Hz or 55.2Hz #define TURNOFF_NONE 3 #define TURNOFF_259_2HZ 0 #define TURNOFF_55_2HZ 1 // Bytes 6-7 uint16_t contact_name_index; // Contact Name: Contact1... // Bytes 8-9 uint8_t tot : 6, // TOT x 15sec: 0-Infinite, 1=15s... 37=555s _unused13 : 2; // 0 uint8_t tot_rekey_delay; // TOT Rekey Delay: 0s...255s // Bytes 10-11 uint8_t emergency_system_index; // Emergency System: None, System1...32 uint8_t scan_list_index; // Scan List: None, ScanList1...250 // Bytes 12-13 uint8_t group_list_index; // Group List: None, GroupList1...250 uint8_t _unused8; // 0 // Bytes 14-15 uint8_t _unused9; // 0 uint8_t squelch; // Squelch: 0...9 // Bytes 16-23 uint32_t rx_frequency; // RX Frequency: 8 digits BCD uint32_t tx_frequency; // TX Frequency: 8 digits BCD // Bytes 24-27 uint16_t ctcss_dcs_receive; // CTCSS/DCS Dec: 4 digits BCD uint16_t ctcss_dcs_transmit; // CTCSS/DCS Enc: 4 digits BCD // Bytes 28-29 uint8_t rx_signaling_syst; // Rx Signaling System: Off, DTMF-1...4 uint8_t tx_signaling_syst; // Tx Signaling System: Off, DTMF-1...4 // Byte 30 uint8_t power : 2, // Power: Low, Middle, High #define POWER_HIGH 3 #define POWER_LOW 0 #define POWER_MIDDLE 2 _unused10 : 6; // 0b111111 // Byte 31 uint8_t _unused11 : 3, // 0b111 dcdm_switch_dis : 1, // DCDM switch (inverted) leader_ms : 1, // Leader/MS: Leader or MS #define DCDM_LEADER 0 #define DCDM_MS 1 _unused12 : 3; // 0b111 // Bytes 32-63 uint16_t name[16]; // Channel Name (Unicode) } channel_t; // // Contact data. // typedef struct { // Bytes 0-2 uint8_t id[3]; // Call ID: 1...16777215 #define CONTACT_ID(ct) ((ct)->id[0] | ((ct)->id[1] << 8) | ((ct)->id[2] << 16)) // Byte 3 uint8_t type : 5, // Call Type: Group Call, Private Call or All Call #define CALL_GROUP 1 #define CALL_PRIVATE 2 #define CALL_ALL 3 receive_tone : 1, // Call Receive Tone: No or yes _unused2 : 2; // 0b11 // Bytes 4-35 uint16_t name[16]; // Contact Name (Unicode) } contact_t; // // Zone data. // typedef struct { // Bytes 0-31 uint16_t name[16]; // Zone Name (Unicode) // Bytes 32-63 uint16_t member_a[16]; // Member A: channels 1...16 } zone_t; typedef struct { // Bytes 0-95 uint16_t ext_a[48]; // Member A: channels 17...64 // Bytes 96-223 uint16_t member_b[64]; // Member B: channels 1...64 } zone_ext_t; // // Group list data. // typedef struct { // Bytes 0-31 uint16_t name[16]; // Group List Name (Unicode) // Bytes 32-95 uint16_t member[32]; // Contacts } grouplist_t; // // Scan list data. // typedef struct { // Bytes 0-31 uint16_t name[16]; // Scan List Name (Unicode) // Bytes 32-37 uint16_t priority_ch1; // Priority Channel 1 or ffff uint16_t priority_ch2; // Priority Channel 2 or ffff uint16_t tx_designated_ch; // Tx Designated Channel or ffff // Bytes 38-41 uint8_t _unused1; // 0xf1 uint8_t sign_hold_time; // Signaling Hold Time (x25 = msec) uint8_t prio_sample_time; // Priority Sample Time (x250 = msec) uint8_t _unused2; // 0xff // Bytes 42-103 uint16_t member[31]; // Channels } scanlist_t; // // General settings. // TODO: verify the general settings with official CPS // typedef struct { // Bytes 0-19 uint16_t intro_line1[10]; // Bytes 20-39 uint16_t intro_line2[10]; // Bytes 40-63 uint8_t _unused40[24]; // Byte 64 uint8_t _unused64_0 : 3, monitor_type : 1, _unused64_4 : 1, disable_all_leds : 1, _unused64_6 : 2; // Byte 65 uint8_t talk_permit_tone : 2, pw_and_lock_enable : 1, ch_free_indication_tone : 1, _unused65_4 : 1, disable_all_tones : 1, save_mode_receive : 1, save_preamble : 1; // Byte 66 uint8_t _unused66_0 : 2, keypad_tones : 1, intro_picture : 1, _unused66_4 : 4; // Byte 67 uint8_t _unused67; // Bytes 68-71 uint8_t radio_id[3]; uint8_t _unused71; // Bytes 72-84 uint8_t tx_preamble_duration; uint8_t group_call_hang_time; uint8_t private_call_hang_time; uint8_t vox_sensitivity; uint8_t _unused76[2]; uint8_t rx_low_battery_interval; uint8_t call_alert_tone_duration; uint8_t lone_worker_response_time; uint8_t lone_worker_reminder_time; uint8_t _unused82; uint8_t scan_digital_hang_time; uint8_t scan_analog_hang_time; // Byte 85 uint8_t _unused85_0 : 6, backlight_time : 2; // Bytes 86-87 uint8_t set_keypad_lock_time; uint8_t mode; // Bytes 88-95 uint32_t power_on_password; uint32_t radio_prog_password; // Bytes 96-103 uint8_t pc_prog_password[8]; // Bytes 104-111 uint8_t _unused104[8]; // Bytes 112-143 uint16_t radio_name[16]; } general_settings_t; // // Callsign database (CSV). // typedef struct { unsigned dmrid : 24; // DMR id unsigned _unused : 8; // 0xff char callsign[16]; // ascii zero terminated char name[100]; // name, nickname, city, state, country } callsign_t; static const char *POWER_NAME[] = { "Low", "Low", "Mid", "High" }; static const char *BANDWIDTH[] = { "12.5", "20", "25", "25" }; static const char *CONTACT_TYPE[] = { "-", "Group", "Private", "All" }; static const char *ADMIT_NAME[] = { "-", "Free", "Tone", "Color" }; #ifdef PRINT_EXTENDED_PARAMS static const char *INCALL_NAME[] = { "-", "Admit", "TXInt", "Admit" }; static const char *REF_FREQUENCY[] = { "Low", "Med", "High" }; static const char *PRIVACY_NAME[] = { "-", "Basic", "Enhanced" }; static const char *SIGNALING_SYSTEM[] = { "-", "DTMF-1", "DTMF-2", "DTMF-3", "DTMF-4" }; static const char *TURNOFF_FREQ[] = { "259.2", "55.2", "-", "-" }; #endif // // Print a generic information about the device. // static void uv380_print_version(radio_device_t *radio, FILE *out) { unsigned char *timestamp = GET_TIMESTAMP(); static const char charmap[16] = "0123456789:;<=>?"; if (*timestamp != 0xff) { fprintf(out, "Last Programmed Date: %d%d%d%d-%d%d-%d%d", timestamp[0] >> 4, timestamp[0] & 15, timestamp[1] >> 4, timestamp[1] & 15, timestamp[2] >> 4, timestamp[2] & 15, timestamp[3] >> 4, timestamp[3] & 15); fprintf(out, " %d%d:%d%d:%d%d\n", timestamp[4] >> 4, timestamp[4] & 15, timestamp[5] >> 4, timestamp[5] & 15, timestamp[6] >> 4, timestamp[6] & 15); fprintf(out, "CPS Software Version: V%c%c.%c%c\n", charmap[timestamp[7] & 15], charmap[timestamp[8] & 15], charmap[timestamp[9] & 15], charmap[timestamp[10] & 15]); } } // // Read memory image from the device. // static void uv380_download(radio_device_t *radio) { int bno; for (bno=0; bnoname, name, 16); } // // Add channel to a zone. // Return 0 on failure. // static int zone_append(int index, int b_flag, int cnum) { zone_t *z = GET_ZONE(index); zone_ext_t *zext = GET_ZONEXT(index); int i; if (b_flag) { for (i=0; i<64; i++) { if (zext->member_b[i] == cnum) return 1; if (zext->member_b[i] == 0) { zext->member_b[i] = cnum; return 1; } } } else { for (i=0; i<16; i++) { if (z->member_a[i] == cnum) return 1; if (z->member_a[i] == 0) { z->member_a[i] = cnum; return 1; } } for (i=0; i<48; i++) { if (zext->ext_a[i] == cnum) return 1; if (zext->ext_a[i] == 0) { zext->ext_a[i] = cnum; return 1; } } } return 0; } static void erase_zone(int index) { zone_t *z = GET_ZONE(index); zone_ext_t *zext = GET_ZONEXT(index); memset(z, 0, 64); memset(zext, 0, 224); } // // Set parameters for a given scan list. // static void setup_scanlist(int index, const char *name, int prio1, int prio2, int txchan) { scanlist_t *sl = GET_SCANLIST(index); // Bytes 0-31 utf8_decode(sl->name, name, 16); // Bytes 32-37 sl->priority_ch1 = prio1; sl->priority_ch2 = prio2; sl->tx_designated_ch = txchan; } static void erase_scanlist(int index) { scanlist_t *sl = GET_SCANLIST(index); memset(sl, 0, 104); // Bytes 32-37 sl->priority_ch1 = 0xffff; sl->priority_ch2 = 0xffff; sl->tx_designated_ch = 0xffff; // Bytes 38-41 sl->_unused1 = 0xf1; sl->sign_hold_time = 500 / 25; // 500 msec sl->prio_sample_time = 2000 / 250; // 2 sec sl->_unused2 = 0xff; } // // Add channel to a zone. // Return 0 on failure. // static int scanlist_append(int index, int cnum) { scanlist_t *sl = GET_SCANLIST(index); int i; for (i=0; i<31; i++) { if (sl->member[i] == cnum) return 1; if (sl->member[i] == 0) { sl->member[i] = cnum; return 1; } } return 0; } static void erase_contact(int index) { contact_t *ct = GET_CONTACT(index); memset(ct, 0, 36); *(uint32_t*)ct = 0xffffffff; } static void setup_contact(int index, const char *name, int type, int id, int rxtone) { contact_t *ct = GET_CONTACT(index); ct->id[0] = id; ct->id[1] = id >> 8; ct->id[2] = id >> 16; ct->type = type; ct->receive_tone = rxtone; utf8_decode(ct->name, name, 16); } static void setup_grouplist(int index, const char *name) { grouplist_t *gl = GET_GROUPLIST(index); utf8_decode(gl->name, name, 16); } // // Add contact to a grouplist. // Return 0 on failure. // static int grouplist_append(int index, int cnum) { grouplist_t *gl = GET_GROUPLIST(index); int i; for (i=0; i<32; i++) { if (gl->member[i] == cnum) return 1; if (gl->member[i] == 0) { gl->member[i] = cnum; return 1; } } return 0; } // // Set text for a given message. // static void setup_message(int index, const char *text) { uint16_t *msg = GET_MESSAGE(index); // Skip spaces and tabs. while (*text == ' ' || *text == '\t') text++; utf8_decode(msg, text, 144); } // // Check that the radio does support this frequency. // static int is_valid_frequency(int mhz) { if (mhz >= 136 && mhz <= 174) return 1; if (mhz >= 400 && mhz <= 480) return 1; return 0; } // // Set the parameters for a given memory channel. // static void setup_channel(int i, int mode, char *name, double rx_mhz, double tx_mhz, int power, int scanlist, int squelch, int tot, int rxonly, int admit, int colorcode, int timeslot, int grouplist, int contact, int rxtone, int txtone, int width) { channel_t *ch = GET_CHANNEL(i); ch->channel_mode = mode; ch->bandwidth = width; ch->rx_only = rxonly; ch->repeater_slot = timeslot; ch->colorcode = colorcode; ch->admit_criteria = admit; ch->contact_name_index = contact; ch->tot = tot; ch->scan_list_index = scanlist; ch->group_list_index = grouplist; ch->squelch = squelch; ch->rx_frequency = mhz_to_abcdefgh(rx_mhz); ch->tx_frequency = mhz_to_abcdefgh(tx_mhz); ch->ctcss_dcs_receive = rxtone; ch->ctcss_dcs_transmit = txtone; ch->power = power; utf8_decode(ch->name, name, 16); } // // Erase the channel record. // static void erase_channel(int i) { channel_t *ch = GET_CHANNEL(i); // Byte 0 ch->channel_mode = MODE_ANALOG; ch->bandwidth = BW_12_5_KHZ; ch->autoscan = 0; ch->_unused1 = 3; ch->lone_worker = 0; // Byte 1 ch->_unused2 = 0; ch->rx_only = 0; ch->repeater_slot = 1; ch->colorcode = 1; // Byte 2 ch->privacy_no = 0; ch->privacy = PRIV_NONE; ch->private_call_conf = 0; ch->data_call_conf = 0; // Byte 3 ch->rx_ref_frequency = REF_LOW; ch->_unused3 = 0; ch->emergency_alarm_ack = 0; ch->_unused4 = 6; ch->display_pttid_dis = 1; // Byte 4 ch->tx_ref_frequency = REF_LOW; ch->_unused5 = 1; ch->vox = 0; ch->_unused6 = 1; ch->admit_criteria = ADMIT_ALWAYS; // Byte 5 ch->_unused7 = 0; ch->in_call_criteria = INCALL_ALWAYS; ch->turn_off_freq = TURNOFF_NONE; // Bytes 6-7 ch->contact_name_index = 0; // Bytes 8-9 ch->tot = 60/15; ch->_unused13 = 0; ch->tot_rekey_delay = 0; // Bytes 10-11 ch->emergency_system_index = 0; ch->scan_list_index = 0; // Bytes 12-13 ch->group_list_index = 0; ch->_unused8 = 0; // Bytes 14-15 ch->_unused9 = 0; ch->squelch = 1; // Bytes 16-23 ch->rx_frequency = 0x40000000; ch->tx_frequency = 0x40000000; // Bytes 24-27 ch->ctcss_dcs_receive = 0xffff; ch->ctcss_dcs_transmit = 0xffff; // Bytes 28-29 ch->rx_signaling_syst = 0; ch->tx_signaling_syst = 0; // Byte 30 ch->power = POWER_HIGH; ch->_unused10 = 0x3f; // Byte 31 ch->_unused11 = 7; ch->dcdm_switch_dis = 1; ch->leader_ms = DCDM_MS; ch->_unused12 = 7; // Bytes 32-63 utf8_decode(ch->name, "", 16); } static void print_chanlist(FILE *out, uint16_t *unsorted, int nchan) { int last = -1; int range = 0; int n; uint16_t data[nchan]; // Sort the list before printing. memcpy(data, unsorted, nchan * sizeof(uint16_t)); qsort(data, nchan, sizeof(uint16_t), compare_index); for (n=0; n 0) fprintf(out, ","); fprintf(out, "%d", cnum); } last = cnum; } if (range) fprintf(out, "-%d", last); } static void print_id(FILE *out, int verbose) { general_settings_t *gs = GET_SETTINGS(); unsigned id = gs->radio_id[0] | (gs->radio_id[1] << 8) | (gs->radio_id[2] << 16); if (verbose) fprintf(out, "\n# Unique DMR ID and name of this radio."); fprintf(out, "\nID: %u\nName: ", id); if (VALID_TEXT(gs->radio_name)) { print_unicode(out, gs->radio_name, 16, 0); } else { fprintf(out, "-"); } fprintf(out, "\n"); } static void print_intro(FILE *out, int verbose) { general_settings_t *gs = GET_SETTINGS(); if (verbose) fprintf(out, "\n# Text displayed when the radio powers up.\n"); fprintf(out, "Intro Line 1: "); if (VALID_TEXT(gs->intro_line1)) { print_unicode(out, gs->intro_line1, 10, 0); } else { fprintf(out, "-"); } fprintf(out, "\nIntro Line 2: "); if (VALID_TEXT(gs->intro_line2)) { print_unicode(out, gs->intro_line2, 10, 0); } else { fprintf(out, "-"); } fprintf(out, "\n"); } // // Do we have any channels of given mode? // static int have_channels(int mode) { int i; for (i=0; ichannel_mode == mode) return 1; } return 0; } // // Print base parameters of the channel: // Name // RX Frequency // TX Frequency // Power // Scan List // TOT // RX Only // Admit Criteria // static void print_chan_base(FILE *out, channel_t *ch, int cnum) { fprintf(out, "%5d ", cnum); print_unicode(out, ch->name, 16, 1); fprintf(out, " "); print_freq(out, ch->rx_frequency); fprintf(out, " "); print_offset(out, ch->rx_frequency, ch->tx_frequency); fprintf(out, "%-4s ", POWER_NAME[ch->power]); if (ch->scan_list_index == 0) fprintf(out, "- "); else fprintf(out, "%-4d ", ch->scan_list_index); if (ch->tot == 0) fprintf(out, "- "); else fprintf(out, "%-3d ", ch->tot * 15); fprintf(out, "%c ", "-+"[ch->rx_only]); fprintf(out, "%-6s ", ADMIT_NAME[ch->admit_criteria]); } #ifdef PRINT_EXTENDED_PARAMS // // Print extended parameters of the channel: // TOT Rekey Delay // RX Ref Frequency // RX Ref Frequency // Lone Worker // VOX // static void print_chan_ext(FILE *out, channel_t *ch) { fprintf(out, "%-3d ", ch->tot_rekey_delay); fprintf(out, "%-5s ", REF_FREQUENCY[ch->rx_ref_frequency]); fprintf(out, "%-5s ", REF_FREQUENCY[ch->tx_ref_frequency]); fprintf(out, "%c ", "-+"[ch->lone_worker]); fprintf(out, "%c ", "-+"[ch->vox]); } #endif static void print_digital_channels(FILE *out, int verbose) { int i; if (verbose) { fprintf(out, "# Table of digital channels.\n"); fprintf(out, "# 1) Channel number: 1-%d\n", NCHAN); fprintf(out, "# 2) Name: up to 16 characters, use '_' instead of space\n"); fprintf(out, "# 3) Receive frequency in MHz\n"); fprintf(out, "# 4) Transmit frequency or +/- offset in MHz\n"); fprintf(out, "# 5) Transmit power: High, Mid, Low\n"); fprintf(out, "# 6) Scan list: - or index in Scanlist table\n"); fprintf(out, "# 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555\n"); fprintf(out, "# 8) Receive only: -, +\n"); fprintf(out, "# 9) Admit criteria: -, Free, Color\n"); fprintf(out, "# 10) Color code: 0, 1, 2, 3... 15\n"); fprintf(out, "# 11) Time slot: 1 or 2\n"); fprintf(out, "# 12) Receive group list: - or index in Grouplist table\n"); fprintf(out, "# 13) Contact for transmit: - or index in Contacts table\n"); fprintf(out, "#\n"); } fprintf(out, "Digital Name Receive Transmit Power Scan TOT RO Admit Color Slot RxGL TxContact"); #ifdef PRINT_EXTENDED_PARAMS fprintf(out, " AS InCall Sq Dly RxRef TxRef LW VOX EmSys Privacy PN PCC EAA DCC DCDM"); #endif fprintf(out, "\n"); for (i=0; ichannel_mode != MODE_DIGITAL) { // Select digital channels continue; } print_chan_base(out, ch, i+1); // Print digital parameters of the channel: // Color Code // Repeater Slot // Group List // Contact Name fprintf(out, "%-5d %-3d ", ch->colorcode, ch->repeater_slot); if (ch->group_list_index == 0) fprintf(out, "- "); else fprintf(out, "%-4d ", ch->group_list_index); if (ch->contact_name_index == 0) fprintf(out, "-"); else fprintf(out, "%-5d", ch->contact_name_index); #ifdef PRINT_EXTENDED_PARAMS fprintf(out, " "): print_chan_ext(out, ch); // Extended digital parameters of the channel: // Autoscan // In Call Criteria // Squelch // Emergency System // Privacy // Privacy No. (+1) // Private Call Confirmed // Emergency Alarm Ack // Data Call Confirmed // DCDM switch (inverted) // Leader/MS fprintf(out, "%c ", "-+"[ch->autoscan]); fprintf(out, "%-6s ", INCALL_NAME[ch->in_call_criteria]); if (ch->squelch <= 9) fprintf(out, "%1d ", ch->squelch); else fprintf(out, "1 "); if (ch->emergency_system_index == 0) fprintf(out, "- "); else fprintf(out, "%-5d ", ch->emergency_system_index); fprintf(out, "%-8s ", PRIVACY_NAME[ch->privacy]); if (ch->privacy == PRIV_NONE) fprintf(out, "- "); else fprintf(out, "%-2d ", ch->privacy_no + 1); fprintf(out, "%c ", "-+"[ch->private_call_conf]); fprintf(out, "%c ", "-+"[ch->emergency_alarm_ack]); fprintf(out, "%c ", "-+"[ch->data_call_conf]); if (ch->dcdm_switch_dis) fprintf(out, "- "); else fprintf(out, "%-6s", ch->leader_ms ? "MS" : "Leader"); #endif // Print contact name as a comment. if (ch->contact_name_index > 0) { contact_t *ct = GET_CONTACT(ch->contact_name_index - 1); if (VALID_CONTACT(ct)) { fprintf(out, " # "); print_unicode(out, ct->name, 16, 0); } } fprintf(out, "\n"); } } static void print_analog_channels(FILE *out, int verbose) { int i; if (verbose) { fprintf(out, "# Table of analog channels.\n"); fprintf(out, "# 1) Channel number: 1-%d\n", NCHAN); fprintf(out, "# 2) Name: up to 16 characters, use '_' instead of space\n"); fprintf(out, "# 3) Receive frequency in MHz\n"); fprintf(out, "# 4) Transmit frequency or +/- offset in MHz\n"); fprintf(out, "# 5) Transmit power: High, Mid, Low\n"); fprintf(out, "# 6) Scan list: - or index\n"); fprintf(out, "# 7) Transmit timeout timer in seconds: 0, 15, 30, 45... 555\n"); fprintf(out, "# 8) Receive only: -, +\n"); fprintf(out, "# 9) Admit criteria: -, Free, Tone\n"); fprintf(out, "# 10) Squelch level: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9\n"); fprintf(out, "# 11) Guard tone for receive, or '-' to disable\n"); fprintf(out, "# 12) Guard tone for transmit, or '-' to disable\n"); fprintf(out, "# 13) Bandwidth in kHz: 12.5, 20, 25\n"); fprintf(out, "#\n"); } fprintf(out, "Analog Name Receive Transmit Power Scan TOT RO Admit Sq RxTone TxTone Width"); #ifdef PRINT_EXTENDED_PARAMS fprintf(out, " AS Dly RxRef TxRef LW VOX RxSign TxSign ID TOFreq"); #endif fprintf(out, "\n"); for (i=0; ichannel_mode != MODE_ANALOG) { // Select analog channels continue; } print_chan_base(out, ch, i+1); // Print analog parameters of the channel: // Squelch // CTCSS/DCS Dec // CTCSS/DCS Enc // Bandwidth if (ch->squelch <= 9) fprintf(out, "%1d ", ch->squelch); else fprintf(out, "1 "); print_tone(out, ch->ctcss_dcs_receive); fprintf(out, " "); print_tone(out, ch->ctcss_dcs_transmit); fprintf(out, " %s", BANDWIDTH[ch->bandwidth]); #ifdef PRINT_EXTENDED_PARAMS print_chan_ext(out, ch); // Extended analog parameters of the channel: // Rx Signaling System // Tx Signaling System // Display PTT ID (inverted) // Non-QT/DQT Turn-off Freq. fprintf(out, "%-6s ", SIGNALING_SYSTEM[ch->rx_signaling_syst]); fprintf(out, "%-6s ", SIGNALING_SYSTEM[ch->tx_signaling_syst]); fprintf(out, "%c ", "+-"[ch->display_pttid_dis]); fprintf(out, "%s", TURNOFF_FREQ[ch->turn_off_freq]); #endif fprintf(out, "\n"); } } static int have_zones() { int i; for (i=0; iname); if (verbose) uv380_print_version(radio, out); // // Channels. // if (have_channels(MODE_DIGITAL)) { fprintf(out, "\n"); print_digital_channels(out, verbose); } if (have_channels(MODE_ANALOG)) { fprintf(out, "\n"); print_analog_channels(out, verbose); } // // Zones. // if (have_zones()) { fprintf(out, "\n"); if (verbose) { fprintf(out, "# Table of channel zones.\n"); fprintf(out, "# 1) Zone number: 1-%d\n", NZONES); fprintf(out, "# 2) Name: up to 16 characters, use '_' instead of space\n"); fprintf(out, "# 3) List of channels: numbers and ranges (N-M) separated by comma\n"); fprintf(out, "#\n"); } fprintf(out, "Zone Name Channels\n"); for (i=0; iname, 16, 1); fprintf(out, " "); if (z->member_a[0]) { print_chanlist(out, z->member_a, 16); if (zext->ext_a[0]) { fprintf(out, ","); print_chanlist(out, zext->ext_a, 48); } } else { fprintf(out, "-"); } fprintf(out, "\n"); fprintf(out, "%4db - ", i + 1); if (zext->member_b[0]) { print_chanlist(out, zext->member_b, 64); } else { fprintf(out, "-"); } fprintf(out, "\n"); } } // // Scan lists. // if (have_scanlists()) { fprintf(out, "\n"); if (verbose) { fprintf(out, "# Table of scan lists.\n"); fprintf(out, "# 1) Scan list number: 1-%d\n", NSCANL); fprintf(out, "# 2) Name: up to 16 characters, use '_' instead of space\n"); fprintf(out, "# 3) Priority channel 1 (50%% of scans): -, Sel or index\n"); fprintf(out, "# 4) Priority channel 2 (25%% of scans): -, Sel or index\n"); fprintf(out, "# 5) Designated transmit channel: Last, Sel or index\n"); fprintf(out, "# 6) List of channels: numbers and ranges (N-M) separated by comma\n"); fprintf(out, "#\n"); } fprintf(out, "Scanlist Name PCh1 PCh2 TxCh "); #ifdef PRINT_EXTENDED_PARAMS fprintf(out, "Hold Smpl "); #endif fprintf(out, "Channels\n"); for (i=0; iname, 16, 1); if (sl->priority_ch1 == 0xffff) { fprintf(out, " - "); } else if (sl->priority_ch1 == 0) { fprintf(out, " Sel "); } else { fprintf(out, " %-4d ", sl->priority_ch1); } if (sl->priority_ch2 == 0xffff) { fprintf(out, "- "); } else if (sl->priority_ch2 == 0) { fprintf(out, "Sel "); } else { fprintf(out, "%-4d ", sl->priority_ch2); } if (sl->tx_designated_ch == 0xffff) { fprintf(out, "Last "); } else if (sl->tx_designated_ch == 0) { fprintf(out, "Sel "); } else { fprintf(out, "%-4d ", sl->tx_designated_ch); } #ifdef PRINT_EXTENDED_PARAMS fprintf(out, "%-4d %-4d ", sl->sign_hold_time * 25, sl->prio_sample_time * 250); #endif if (sl->member[0]) { print_chanlist(out, sl->member, 31); } else { fprintf(out, "-"); } fprintf(out, "\n"); } } // // Contacts. // if (have_contacts()) { fprintf(out, "\n"); if (verbose) { fprintf(out, "# Table of contacts.\n"); fprintf(out, "# 1) Contact number: 1-%d\n", NCONTACTS); fprintf(out, "# 2) Name: up to 16 characters, use '_' instead of space\n"); fprintf(out, "# 3) Call type: Group, Private, All\n"); fprintf(out, "# 4) Call ID: 1...16777215\n"); fprintf(out, "# 5) Call receive tone: -, +\n"); fprintf(out, "#\n"); } fprintf(out, "Contact Name Type ID RxTone\n"); for (i=0; iname, 16, 1); fprintf(out, " %-7s %-8d %s\n", CONTACT_TYPE[ct->type & 3], CONTACT_ID(ct), ct->receive_tone ? "+" : "-"); } } // // Group lists. // if (have_grouplists()) { fprintf(out, "\n"); if (verbose) { fprintf(out, "# Table of group lists.\n"); fprintf(out, "# 1) Group list number: 1-%d\n", NGLISTS); fprintf(out, "# 2) Name: up to 16 characters, use '_' instead of space\n"); fprintf(out, "# 3) List of contacts: numbers and ranges (N-M) separated by comma\n"); fprintf(out, "#\n"); } fprintf(out, "Grouplist Name Contacts\n"); for (i=0; iname, 16, 1); fprintf(out, " "); if (gl->member[0]) { print_chanlist(out, gl->member, 32); } else { fprintf(out, "-"); } fprintf(out, "\n"); } } // // Text messages. // if (have_messages()) { fprintf(out, "\n"); if (verbose) { fprintf(out, "# Table of text messages.\n"); fprintf(out, "# 1) Message number: 1-%d\n", NMESSAGES); fprintf(out, "# 2) Text: up to 144 characters\n"); fprintf(out, "#\n"); } fprintf(out, "Message Text\n"); for (i=0; iradio_name, value, 16); return; } if (strcasecmp ("ID", param) == 0) { uint32_t id = strtoul(value, 0, 0); gs->radio_id[0] = id; gs->radio_id[1] = id >> 8; gs->radio_id[2] = id >> 16; return; } if (strcasecmp ("Last Programmed Date", param) == 0) { // Ignore. return; } if (strcasecmp ("CPS Software Version", param) == 0) { // Ignore. return; } if (strcasecmp ("Intro Line 1", param) == 0) { utf8_decode(gs->intro_line1, value, 10); return; } if (strcasecmp ("Intro Line 2", param) == 0) { utf8_decode(gs->intro_line2, value, 10); return; } fprintf(stderr, "Unknown parameter: %s = %s\n", param, value); exit(-1); } // // Parse one line of Digital channel table. // Start_flag is 1 for the first table row. // Return 0 on failure. // static int parse_digital_channel(radio_device_t *radio, int first_row, char *line) { char num_str[256], name_str[256], rxfreq_str[256], offset_str[256]; char power_str[256], scanlist_str[256]; char tot_str[256], rxonly_str[256], admit_str[256], colorcode_str[256]; char slot_str[256], grouplist_str[256], contact_str[256]; int num, power, scanlist, tot, rxonly, admit; int colorcode, timeslot, grouplist, contact; double rx_mhz, tx_mhz; if (sscanf(line, "%s %s %s %s %s %s %s %s %s %s %s %s %s", num_str, name_str, rxfreq_str, offset_str, power_str, scanlist_str, tot_str, rxonly_str, admit_str, colorcode_str, slot_str, grouplist_str, contact_str) != 13) return 0; num = atoi(num_str); if (num < 1 || num > NCHAN) { fprintf(stderr, "Bad channel number.\n"); return 0; } if (sscanf(rxfreq_str, "%lf", &rx_mhz) != 1 || !is_valid_frequency(rx_mhz)) { fprintf(stderr, "Bad receive frequency.\n"); return 0; } if (sscanf(offset_str, "%lf", &tx_mhz) != 1) { badtx: fprintf(stderr, "Bad transmit frequency.\n"); return 0; } if (offset_str[0] == '-' || offset_str[0] == '+') tx_mhz += rx_mhz; if (! is_valid_frequency(tx_mhz)) goto badtx; if (strcasecmp("High", power_str) == 0) { power = POWER_HIGH; } else if (strcasecmp("Mid", power_str) == 0) { power = POWER_MIDDLE; } else if (strcasecmp("Low", power_str) == 0) { power = POWER_LOW; } else { fprintf(stderr, "Bad power level.\n"); return 0; } if (*scanlist_str == '-') { scanlist = 0; } else { scanlist = atoi(scanlist_str); if (scanlist == 0 || scanlist > NSCANL) { fprintf(stderr, "Bad scanlist.\n"); return 0; } } tot = atoi(tot_str); if (tot > 555 || tot % 15 != 0) { fprintf(stderr, "Bad timeout timer.\n"); return 0; } tot /= 15; if (*rxonly_str == '-') { rxonly = 0; } else if (*rxonly_str == '+') { rxonly = 1; } else { fprintf(stderr, "Bad receive only flag.\n"); return 0; } if (*admit_str == '-' || strcasecmp("Always", admit_str) == 0) { admit = ADMIT_ALWAYS; } else if (strcasecmp("Free", admit_str) == 0) { admit = ADMIT_CH_FREE; } else if (strcasecmp("Color", admit_str) == 0) { admit = ADMIT_COLOR; } else { fprintf(stderr, "Bad admit criteria.\n"); return 0; } colorcode = atoi(colorcode_str); if (colorcode < 0 || colorcode > 15) { fprintf(stderr, "Bad color code.\n"); return 0; } timeslot = atoi(slot_str); if (timeslot < 1 || timeslot > 2) { fprintf(stderr, "Bad timeslot.\n"); return 0; } if (*grouplist_str == '-') { grouplist = 0; } else { grouplist = atoi(grouplist_str); if (grouplist == 0 || grouplist > NGLISTS) { fprintf(stderr, "Bad receive grouplist.\n"); return 0; } } if (*contact_str == '-') { contact = 0; } else { contact = atoi(contact_str); if (contact == 0 || contact > NCONTACTS) { fprintf(stderr, "Bad transmit contact.\n"); return 0; } } if (first_row && radio->channel_count == 0) { // On first entry, erase all channels, zones and scanlists. erase_channels(); erase_zones(); erase_scanlists(); } setup_channel(num-1, MODE_DIGITAL, name_str, rx_mhz, tx_mhz, power, scanlist, 1, tot, rxonly, admit, colorcode, timeslot, grouplist, contact, 0xffff, 0xffff, BW_12_5_KHZ); radio->channel_count++; return 1; } // // Parse one line of Analog channel table. // Start_flag is 1 for the first table row. // Return 0 on failure. // static int parse_analog_channel(radio_device_t *radio, int first_row, char *line) { char num_str[256], name_str[256], rxfreq_str[256], offset_str[256]; char power_str[256], scanlist_str[256], squelch_str[256]; char tot_str[256], rxonly_str[256], admit_str[256]; char rxtone_str[256], txtone_str[256], width_str[256]; int num, power, scanlist, squelch, tot, rxonly, admit; int rxtone, txtone, width; double rx_mhz, tx_mhz; if (sscanf(line, "%s %s %s %s %s %s %s %s %s %s %s %s %s", num_str, name_str, rxfreq_str, offset_str, power_str, scanlist_str, tot_str, rxonly_str, admit_str, squelch_str, rxtone_str, txtone_str, width_str) != 13) return 0; num = atoi(num_str); if (num < 1 || num > NCHAN) { fprintf(stderr, "Bad channel number.\n"); return 0; } if (sscanf(rxfreq_str, "%lf", &rx_mhz) != 1 || !is_valid_frequency(rx_mhz)) { fprintf(stderr, "Bad receive frequency.\n"); return 0; } if (sscanf(offset_str, "%lf", &tx_mhz) != 1) { badtx: fprintf(stderr, "Bad transmit frequency.\n"); return 0; } if (offset_str[0] == '-' || offset_str[0] == '+') tx_mhz += rx_mhz; if (! is_valid_frequency(tx_mhz)) goto badtx; if (strcasecmp("High", power_str) == 0) { power = POWER_HIGH; } else if (strcasecmp("Mid", power_str) == 0) { power = POWER_MIDDLE; } else if (strcasecmp("Low", power_str) == 0) { power = POWER_LOW; } else { fprintf(stderr, "Bad power level.\n"); return 0; } if (*scanlist_str == '-') { scanlist = 0; } else { scanlist = atoi(scanlist_str); if (scanlist == 0 || scanlist > NSCANL) { fprintf(stderr, "Bad scanlist.\n"); return 0; } } squelch = atoi(squelch_str); if (squelch > 9) { fprintf(stderr, "Bad squelch level.\n"); return 0; } tot = atoi(tot_str); if (tot > 555 || tot % 15 != 0) { fprintf(stderr, "Bad timeout timer.\n"); return 0; } tot /= 15; if (*rxonly_str == '-') { rxonly = 0; } else if (*rxonly_str == '+') { rxonly = 1; } else { fprintf(stderr, "Bad receive only flag.\n"); return 0; } if (*admit_str == '-' || strcasecmp("Always", admit_str) == 0) { admit = ADMIT_ALWAYS; } else if (strcasecmp("Free", admit_str) == 0) { admit = ADMIT_CH_FREE; } else if (strcasecmp("Tone", admit_str) == 0) { admit = ADMIT_TONE; } else { fprintf(stderr, "Bad admit criteria.\n"); return 0; } rxtone = encode_tone(rxtone_str); if (rxtone < 0) { fprintf(stderr, "Bad receive tone.\n"); return 0; } txtone = encode_tone(txtone_str); if (txtone < 0) { fprintf(stderr, "Bad transmit tone.\n"); return 0; } if (strcasecmp ("12.5", width_str) == 0) { width = BW_12_5_KHZ; } else if (strcasecmp ("20", width_str) == 0) { width = BW_20_KHZ; } else if (strcasecmp ("25", width_str) == 0) { width = BW_25_KHZ; } else { fprintf (stderr, "Bad width.\n"); return 0; } if (first_row && radio->channel_count == 0) { // On first entry, erase all channels, zones and scanlists. erase_channels(); } setup_channel(num-1, MODE_ANALOG, name_str, rx_mhz, tx_mhz, power, scanlist, squelch, tot, rxonly, admit, 1, 1, 0, 0, rxtone, txtone, width); radio->channel_count++; return 1; } // // Parse one line of Zones table. // Return 0 on failure. // static int parse_zones(int first_row, char *line) { char num_str[256], name_str[256], chan_str[256], *eptr; int znum, b_flag; if (sscanf(line, "%s %s %s", num_str, name_str, chan_str) != 3) return 0; znum = strtoul(num_str, &eptr, 10); if (znum < 1 || znum > NZONES || strchr("aAbB", *eptr) == 0) { fprintf(stderr, "Bad zone number.\n"); return 0; } b_flag = (*eptr == 'b' || *eptr == 'B'); if (first_row) { // On first entry, erase the Zones table. erase_zones(); } if (b_flag == 0) setup_zone(znum-1, name_str); if (*chan_str != '-') { char *str = chan_str; int nchan = 0; int range = 0; int last = 0; // Parse channel list. for (;;) { char *eptr; int cnum = strtoul(str, &eptr, 10); if (eptr == str) { fprintf(stderr, "Zone %d: wrong channel list '%s'.\n", znum, str); return 0; } if (cnum < 1 || cnum > NCHAN) { fprintf(stderr, "Zone %d: wrong channel number %d.\n", znum, cnum); return 0; } if (range) { // Add range. int c; for (c=last+1; c<=cnum; c++) { if (!zone_append(znum-1, b_flag, c)) { fprintf(stderr, "Zone %d: too many channels.\n", znum); return 0; } nchan++; } } else { // Add single channel. if (!zone_append(znum-1, b_flag, cnum)) { fprintf(stderr, "Zone %d: too many channels.\n", znum); return 0; } nchan++; } if (*eptr == 0) break; if (*eptr != ',' && *eptr != '-') { fprintf(stderr, "Zone %d: wrong channel list '%s'.\n", znum, eptr); return 0; } range = (*eptr == '-'); last = cnum; str = eptr + 1; } } return 1; } // // Parse one line of Scanlist table. // Return 0 on failure. // static int parse_scanlist(int first_row, char *line) { char num_str[256], name_str[256], prio1_str[256], prio2_str[256]; char tx_str[256], chan_str[256]; int snum, prio1, prio2, txchan; if (sscanf(line, "%s %s %s %s %s %s", num_str, name_str, prio1_str, prio2_str, tx_str, chan_str) != 6) return 0; snum = atoi(num_str); if (snum < 1 || snum > NSCANL) { fprintf(stderr, "Bad scan list number.\n"); return 0; } if (first_row) { // On first entry, erase the Scanlists table. erase_scanlists(); } if (*prio1_str == '-') { prio1 = 0xffff; } else if (strcasecmp("Sel", prio1_str) == 0) { prio1 = 0; } else { prio1 = atoi(prio1_str); if (prio1 < 1 || prio1 > NCHAN) { fprintf(stderr, "Bad priority channel 1.\n"); return 0; } } if (*prio2_str == '-') { prio2 = 0xffff; } else if (strcasecmp("Sel", prio2_str) == 0) { prio2 = 0; } else { prio2 = atoi(prio2_str); if (prio2 < 1 || prio2 > NCHAN) { fprintf(stderr, "Bad priority channel 2.\n"); return 0; } } if (strcasecmp("Last", tx_str) == 0) { txchan = 0xffff; } else if (strcasecmp("Sel", tx_str) == 0) { txchan = 0; } else { txchan = atoi(tx_str); if (txchan < 1 || txchan > NCHAN) { fprintf(stderr, "Bad transmit channel.\n"); return 0; } } setup_scanlist(snum-1, name_str, prio1, prio2, txchan); if (*chan_str != '-') { char *str = chan_str; int nchan = 0; int range = 0; int last = 0; // Parse channel list. for (;;) { char *eptr; int cnum = strtoul(str, &eptr, 10); if (eptr == str) { fprintf(stderr, "Scan list %d: wrong channel list '%s'.\n", snum, str); return 0; } if (cnum < 1 || cnum > NCHAN) { fprintf(stderr, "Scan list %d: wrong channel number %d.\n", snum, cnum); return 0; } if (range) { // Add range. int c; for (c=last+1; c<=cnum; c++) { if (!scanlist_append(snum-1, c)) { fprintf(stderr, "Scan list %d: too many channels.\n", snum); return 0; } nchan++; } } else { // Add single channel. if (!scanlist_append(snum-1, cnum)) { fprintf(stderr, "Scan list %d: too many channels.\n", snum); return 0; } nchan++; } if (*eptr == 0) break; if (*eptr != ',' && *eptr != '-') { fprintf(stderr, "Scan list %d: wrong channel list '%s'.\n", snum, eptr); return 0; } range = (*eptr == '-'); last = cnum; str = eptr + 1; } } return 1; } // // Parse one line of Contacts table. // Return 0 on failure. // static int parse_contact(int first_row, char *line) { char num_str[256], name_str[256], type_str[256], id_str[256], rxtone_str[256]; int cnum, type, id, rxtone; if (sscanf(line, "%s %s %s %s %s", num_str, name_str, type_str, id_str, rxtone_str) != 5) return 0; cnum = atoi(num_str); if (cnum < 1 || cnum > NCONTACTS) { fprintf(stderr, "Bad contact number.\n"); return 0; } if (first_row) { // On first entry, erase the Contacts table. erase_contacts(); } if (strcasecmp("Group", type_str) == 0) { type = CALL_GROUP; } else if (strcasecmp("Private", type_str) == 0) { type = CALL_PRIVATE; } else if (strcasecmp("All", type_str) == 0) { type = CALL_ALL; } else { fprintf(stderr, "Bad call type.\n"); return 0; } id = atoi(id_str); if (id < 1 || id > 0xffffff) { fprintf(stderr, "Bad call ID.\n"); return 0; } if (*rxtone_str == '-' || strcasecmp("No", rxtone_str) == 0) { rxtone = 0; } else if (*rxtone_str == '+' || strcasecmp("Yes", rxtone_str) == 0) { rxtone = 1; } else { fprintf(stderr, "Bad receive tone flag.\n"); return 0; } setup_contact(cnum-1, name_str, type, id, rxtone); return 1; } // // Parse one line of Grouplist table. // Return 0 on failure. // static int parse_grouplist(int first_row, char *line) { char num_str[256], name_str[256], list_str[256]; int glnum; if (sscanf(line, "%s %s %s", num_str, name_str, list_str) != 3) return 0; glnum = strtoul(num_str, 0, 10); if (glnum < 1 || glnum > NGLISTS) { fprintf(stderr, "Bad group list number.\n"); return 0; } if (first_row) { // On first entry, erase the Grouplists table. memset(&radio_mem[OFFSET_GLISTS], 0, NGLISTS*96); } setup_grouplist(glnum-1, name_str); if (*list_str != '-') { char *str = list_str; int range = 0; int last = 0; // Parse contact list. for (;;) { char *eptr; int cnum = strtoul(str, &eptr, 10); if (eptr == str) { fprintf(stderr, "Group list %d: wrong contact list '%s'.\n", glnum, str); return 0; } if (cnum < 1 || cnum > NCONTACTS) { fprintf(stderr, "Group list %d: wrong contact number %d.\n", glnum, cnum); return 0; } if (range) { // Add range. int c; for (c=last+1; c<=cnum; c++) { if (!grouplist_append(glnum-1, c)) { fprintf(stderr, "Group list %d: too many contacts.\n", glnum); return 0; } } } else { // Add single contact. if (!grouplist_append(glnum-1, cnum)) { fprintf(stderr, "Group list %d: too many contacts.\n", glnum); return 0; } } if (*eptr == 0) break; if (*eptr != ',' && *eptr != '-') { fprintf(stderr, "Group list %d: wrong contact list '%s'.\n", glnum, eptr); return 0; } range = (*eptr == '-'); last = cnum; str = eptr + 1; } } return 1; } // // Parse one line of Messages table. // Return 0 on failure. // static int parse_messages(int first_row, char *line) { char *text; int mnum; mnum = strtoul(line, &text, 10); if (text == line || mnum < 1 || mnum > NMESSAGES) { fprintf(stderr, "Bad message number.\n"); return 0; } if (first_row) { // On first entry, erase the Messages table. memset(&radio_mem[OFFSET_MSG], 0, NMESSAGES*288); } setup_message(mnum-1, text); return 1; } // // Parse table header. // Return table id, or 0 in case of error. // static int uv380_parse_header(radio_device_t *radio, char *line) { if (strncasecmp(line, "Digital", 7) == 0) return 'D'; if (strncasecmp(line, "Analog", 6) == 0) return 'A'; if (strncasecmp(line, "Zone", 4) == 0) return 'Z'; if (strncasecmp(line, "Scanlist", 8) == 0) return 'S'; if (strncasecmp(line, "Contact", 7) == 0) return 'C'; if (strncasecmp(line, "Grouplist", 9) == 0) return 'G'; if (strncasecmp(line, "Message", 7) == 0) return 'M'; return 0; } // // Parse one line of table data. // Return 0 on failure. // static int uv380_parse_row(radio_device_t *radio, int table_id, int first_row, char *line) { switch (table_id) { case 'D': return parse_digital_channel(radio, first_row, line); case 'A': return parse_analog_channel(radio, first_row, line); case 'Z': return parse_zones(first_row, line); case 'S': return parse_scanlist(first_row, line); case 'C': return parse_contact(first_row, line); case 'G': return parse_grouplist(first_row, line); case 'M': return parse_messages(first_row, line); } return 0; } // // Update timestamp. // static void uv380_update_timestamp(radio_device_t *radio) { unsigned char *timestamp = GET_TIMESTAMP(); char p[16]; // Last Programmed Date get_timestamp(p); timestamp[0] = ((p[0] & 0xf) << 4) | (p[1] & 0xf); // year upper timestamp[1] = ((p[2] & 0xf) << 4) | (p[3] & 0xf); // year lower timestamp[2] = ((p[4] & 0xf) << 4) | (p[5] & 0xf); // month timestamp[3] = ((p[6] & 0xf) << 4) | (p[7] & 0xf); // day timestamp[4] = ((p[8] & 0xf) << 4) | (p[9] & 0xf); // hour timestamp[5] = ((p[10] & 0xf) << 4) | (p[11] & 0xf); // minute timestamp[6] = ((p[12] & 0xf) << 4) | (p[13] & 0xf); // second // CPS Software Version: Vdx.xx const char *dot = strchr(VERSION, '.'); if (dot) { timestamp[7] = 0x0d; // Prints as '=' timestamp[8] = dot[-1] & 0x0f; if (dot[2] == '.') { timestamp[9] = 0; timestamp[10] = dot[1] & 0x0f; } else { timestamp[9] = dot[1] & 0x0f; timestamp[10] = dot[2] & 0x0f; } } } // // Check that configuration is correct. // Return 0 on error. // static int uv380_verify_config(radio_device_t *radio) { int i, k, nchannels = 0, nzones = 0, nscanlists = 0, ngrouplists = 0; int ncontacts = 0, nerrors = 0; // Channels: check references to scanlists, contacts and grouplists. for (i=0; iscan_list_index != 0) { scanlist_t *sl = GET_SCANLIST(ch->scan_list_index - 1); if (!VALID_SCANLIST(sl)) { fprintf(stderr, "Channel %d '", i+1); print_unicode(stderr, ch->name, 16, 0); fprintf(stderr, "': scanlist %d not found.\n", ch->scan_list_index); nerrors++; } } if (ch->contact_name_index != 0) { contact_t *ct = GET_CONTACT(ch->contact_name_index - 1); if (!VALID_CONTACT(ct)) { fprintf(stderr, "Channel %d '", i+1); print_unicode(stderr, ch->name, 16, 0); fprintf(stderr, "': contact %d not found.\n", ch->contact_name_index); nerrors++; } } if (ch->group_list_index != 0) { grouplist_t *gl = GET_GROUPLIST(ch->group_list_index - 1); if (!VALID_GROUPLIST(gl)) { fprintf(stderr, "Channel %d '", i+1); print_unicode(stderr, ch->name, 16, 0); fprintf(stderr, "': grouplist %d not found.\n", ch->group_list_index); nerrors++; } } } // Zones: check references to channels. for (i=0; imember_a[k]; if (cnum != 0) { channel_t *ch = GET_CHANNEL(cnum - 1); if (!VALID_CHANNEL(ch)) { fprintf(stderr, "Zone %da '", i+1); print_unicode(stderr, z->name, 16, 0); fprintf(stderr, "': channel %d not found.\n", cnum); nerrors++; } } } for (k=0; k<48; k++) { int cnum = zext->ext_a[k]; if (cnum != 0) { channel_t *ch = GET_CHANNEL(cnum - 1); if (!VALID_CHANNEL(ch)) { fprintf(stderr, "Zone %da '", i+1); print_unicode(stderr, z->name, 16, 0); fprintf(stderr, "': channel %d not found.\n", cnum); nerrors++; } } } // Zone B for (k=0; k<64; k++) { int cnum = zext->member_b[k]; if (cnum != 0) { channel_t *ch = GET_CHANNEL(cnum - 1); if (!VALID_CHANNEL(ch)) { fprintf(stderr, "Zone %db '", i+1); print_unicode(stderr, z->name, 16, 0); fprintf(stderr, "': channel %d not found.\n", cnum); nerrors++; } } } } // Scanlists: check references to channels. for (i=0; imember[k]; if (cnum != 0) { channel_t *ch = GET_CHANNEL(cnum - 1); if (!VALID_CHANNEL(ch)) { fprintf(stderr, "Scanlist %d '", i+1); print_unicode(stderr, sl->name, 16, 0); fprintf(stderr, "': channel %d not found.\n", cnum); nerrors++; } } } } // Grouplists: check references to contacts. for (i=0; imember[k]; if (cnum != 0) { contact_t *ct = GET_CONTACT(cnum - 1); if (!VALID_CONTACT(ct)) { fprintf(stderr, "Grouplist %d '", i+1); print_unicode(stderr, gl->name, 16, 0); fprintf(stderr, "': contact %d not found.\n", cnum); nerrors++; } } } } // Count contacts. for (i=0; i 0) { fprintf(stderr, "Total %d errors.\n", nerrors); return 0; } fprintf(stderr, "Total %d channels, %d zones, %d scanlists, %d contacts, %d grouplists.\n", nchannels, nzones, nscanlists, ncontacts, ngrouplists); return 1; } // // Build search index of callsign table. // Callsigns are supposed to be sorted by id. // // Region 0x200003-0x204002 of configuration memory contains a search helper // for the ContactsCSV table. The helper is organized as a list // of pairs : // idbase - high bits 23:12 of DMR ID // index - number in ContactsCSV table, starting from 1 (20 bits) // // For example: // id[23:12] // Ncontacts | index[19:0] // vvvvvvvv //\ /||\\. // 200000 00 40 00 5a d0 00 01 5a e0 10 00 5a f0 20 00 5b .@.Z...Z...Z. .[ // 200010 00 30 00 5b 10 40 00 ff ff ff ff ff ff ff ff ff .0.[.@.......... // 200020 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ // * // 204000 ff ff ff // static void build_callsign_index(uint8_t *mem, int nrecords) { uint8_t *p; int index; // Number of contacts. mem[0] = nrecords >> 16; mem[1] = nrecords >> 8; mem[2] = nrecords; // Callsign index starting from 1. index = 1; p = &mem[3]; for (;;) { int id = GET_CALLSIGN(mem, index-1)->dmrid; // Add index item. *p++ = id >> 16; *p++ = ((id >> 8) & 0xf0) | (index >> 16); *p++ = index >> 8; *p++ = index; // Skip callsigns with the same id[23:12]. do { index++; if (index > nrecords) return; } while ((GET_CALLSIGN(mem, index-1)->dmrid >> 12) == (id >> 12)); } } // // Write CSV file to contacts database. // static void uv380_write_csv(radio_device_t *radio, FILE *csv) { uint8_t *mem; char line[256]; char *radioid, *callsign, *name, *city, *state, *country, *remarks; int id, bno, nbytes, nrecords = 0; unsigned finish; callsign_t *cs; // Allocate 14Mbytes of memory. nbytes = CALLSIGN_FINISH - CALLSIGN_START; mem = malloc(nbytes); if (!mem) { fprintf(stderr, "Out of memory!\n"); return; } memset(mem, 0xff, nbytes); // // Parse CSV file. // if (csv_init(csv) < 0) { free(mem); return; } while (csv_read(csv, &radioid, &callsign, &name, &city, &state, &country, &remarks)) { //printf("%s,%s,%s,%s,%s,%s,%s\n", radioid, callsign, name, city, state, country, remarks); id = strtoul(radioid, 0, 10); if (id < 1 || id > 0xffffff) { fprintf(stderr, "Bad id: %d\n", id); fprintf(stderr, "Line: '%s,%s,%s,%s,%s,%s,%s'\n", radioid, callsign, name, city, state, country, remarks); return; } cs = GET_CALLSIGN(mem, nrecords); if ((uint8_t*) (cs + 1) > &mem[nbytes]) { fprintf(stderr, "WARNING: Too many callsigns!\n"); fprintf(stderr, "Skipping the rest.\n"); break; } nrecords++; // Fill callsign structure. cs->dmrid = id; strncpy(cs->callsign, callsign, sizeof(cs->callsign)); snprintf(line, sizeof(line), "%s,%s,%s,%s,%s", name, city, state, country, remarks); strncpy(cs->name, line, sizeof(cs->name)); } fprintf(stderr, "Total %d contacts.\n", nrecords); build_callsign_index(mem, nrecords); #if 0 print_hex(mem, 0x4003); exit(0); #endif // Align to 1kbyte. finish = CALLSIGN_START + (CALLSIGN_OFFSET + nrecords*120 + 1023) / 1024 * 1024; if (finish > CALLSIGN_FINISH) { // Limit is 122197 contacts. fprintf(stderr, "Too many contacts!\n"); return; } // // Erase whole region. // Align finish to 64kbytes. // radio_progress = 0; if (! trace_flag) { fprintf(stderr, "Erase: "); fflush(stderr); } dfu_erase(CALLSIGN_START, (finish + 0xffff) / 0x10000 * 0x10000); if (! trace_flag) { fprintf(stderr, "# done.\n"); fprintf(stderr, "Write: "); fflush(stderr); } // // Write callsigns. // for (bno = CALLSIGN_START/1024; bno < finish/1024; bno++) { dfu_write_block(bno, &mem[bno*1024 - CALLSIGN_START], 1024); ++radio_progress; if (radio_progress % 512 == 0) { fprintf(stderr, "#"); fflush(stderr); } } if (! trace_flag) fprintf(stderr, "# done.\n"); free(mem); } // // TYT MD-UV380 // radio_device_t radio_uv380 = { "TYT MD-UV380", uv380_download, uv380_upload, uv380_is_compatible, uv380_read_image, uv380_save_image, uv380_print_version, uv380_print_config, uv380_verify_config, uv380_parse_parameter, uv380_parse_header, uv380_parse_row, uv380_update_timestamp, uv380_write_csv, }; // // TYT MD-UV390 // radio_device_t radio_uv390 = { "TYT MD-UV390", uv380_download, uv380_upload, uv380_is_compatible, uv380_read_image, uv380_save_image, uv380_print_version, uv380_print_config, uv380_verify_config, uv380_parse_parameter, uv380_parse_header, uv380_parse_row, uv380_update_timestamp, uv380_write_csv, }; // // TYT MD-2017 // radio_device_t radio_md2017 = { "TYT MD-2017", uv380_download, uv380_upload, uv380_is_compatible, uv380_read_image, uv380_save_image, uv380_print_version, uv380_print_config, uv380_verify_config, uv380_parse_parameter, uv380_parse_header, uv380_parse_row, uv380_update_timestamp, uv380_write_csv, }; // // TYT MD-9600 // radio_device_t radio_md9600 = { "TYT MD-9600", uv380_download, uv380_upload, uv380_is_compatible, uv380_read_image, uv380_save_image, uv380_print_version, uv380_print_config, uv380_verify_config, uv380_parse_parameter, uv380_parse_header, uv380_parse_row, uv380_update_timestamp, uv380_write_csv, }; // // Baofeng DM-1701, Retevis RT84 // radio_device_t radio_rt84 = { "Retevis RT84", uv380_download, uv380_upload, uv380_is_compatible, uv380_read_image, uv380_save_image, uv380_print_version, uv380_print_config, uv380_verify_config, uv380_parse_parameter, uv380_parse_header, uv380_parse_row, uv380_update_timestamp, uv380_write_csv, };