# DVDMR Configuration Guide ######################################################################################## # # Refer to: # hblink3 commented reference configuration for detailed documentation # https://github.com/HBLink-org/hblink3/blob/master/hblink-SAMPLE.cfg # # FreeDMR Fork reference commented configuration for FreeDMR changes # https://github.com/ea5gvk/hacknix-FreeDMR/blob/async-dns/FreeDMR-SAMPLE-commented.cfg # # This configuration for information on Digital Voice DMR Master # Configuration Comments ####################################################################################### # Under each section the items that are essential to change are at the top followed by # all the ones that should be left as the values provided. [GLOBAL] ############################################################## # UPDATE!!! ############################################################## # Update to your assigned server ID # If you do not have an assigned server ID use your RadioID SERVER_ID: 0000 # Defaults ############################################################## # Sensible defaults for all connections for ping frequency and timeouts PING_TIME: 10 MAX_MISSED: 3 # We by default apply ACLs everywhere but currently our ACLs are super liberal. # This may change by consensus in the future. USE_ACL: True REG_ACL: PERMIT:ALL SUB_ACL: DENY:1 # Again as liberal as we can be with all our ACLs while in development TGID_TS1_ACL: PERMIT:ALL TGID_TS2_ACL: PERMIT:ALL # Generate Static Bridges # Note the FreeDMR Fork master bridge no longer supports rules.py # This option is required for correct operation. GEN_STAT_BRIDGES: True # If forks cant manage passw0rd and it's blank; we'll be okay with that. ALLOW_NULL_PASSPHRASE: True # Announcements are horible; we turn them off everywhere but a default is # still required ANNOUNCEMENT_LANGUAGES: en_GB # We're not currently a data gateway; we will be going here soon. DATA_GATEWAY: False # Digital Voice will soon enable this option VALIDATE_SERVER_IDS: False # Leave reporting as is, it does not need to be exposed unless you're # running the python outside of a container; docker networking is used # for monitor.py to connect here. [REPORTS] REPORT: True REPORT_INTERVAL: 10 REPORT_PORT: 4321 REPORT_CLIENTS: * # We log to the /log/ volume. # This does not need to be changed [LOGGER] LOG_FILE: /log/master.log LOG_NAME: dmrMaster LOG_HANDLERS: console-timed LOG_LEVEL: INFO [ALIASES] # All of this block is sensible defaults # We download to the /data volume; # # We can now download the data files again. The latest DVDMR # version no longer downloads the subscriber file rather than # not reading it after download to increase startup time. TRY_DOWNLOAD: True PATH: /data/ # We update our files daily! STALE_DAYS: 1 # These are the only three that matter, and they don't really # right now. CHECKSUM_URL: https://dvdmr.org/checksums.json TGID_URL: https://dvdmr.org/downloads/talkgroup_ids.json SERVER_ID_URL: https://dvdmr.org/downloads/server_ids.tsv # Repeaters and Users only really mater later when we move to # checking radio IDs PEER_URL: https://dvdmr.org/downloads/rptrs.json SUBSCRIBER_URL: https://dvdmr.org/users.json # If data is shared between other instances make sure the submap file # is different. SUB_MAP_FILE: submap_master.pkl # Local file names dont need to be changed. PEER_FILE: rptrs.json TGID_FILE: talkgroup_ids.json SERVER_ID_FILE: server_ids.tsv SUBSCRIBER_FILE: users.json CHECKSUM_FILE: checksums.json LOCAL_SUBSCRIBER_FILE: local_subscriber_ids.json # Frontend Hotspot Proxy (see hotspot_proxy_v2.py) # This block is configured as required by the container [PROXY] Master=127.0.0.1 ListenPort=62031 ListenIP= DestportStart=54000 DestPortEnd=54100 Timeout=30 Stats=True Debug=False ClientInfo=True BlackList=[1234567] IPBlackList={} # Allstar Information for integration with dial-a-node # More documentation on setting up this feature coming soon. # # The block is required. [ALLSTAR] # Sensible Default for the SYSTEM entity created fo each of the # 100 hotspot/repeater able to be hosted by this system. # # Template for Hotspot Masters. By defining 100 "masters" each # participant (hotspot) may have different talk groups, which is # how a hotspot master differs from a repeater with shared timeslots. # # Masters may act like repeaters if MAX_PEERS is increased. [SYSTEM] MODE: MASTER ENABLED: True REPEAT: True MAX_PEERS: 1 EXPORT_AMBE: False IP: 127.0.0.1 # The genertor automatically incraeses this port number for each # master. The proxy on 63010 pushes to an available master. PORT: 54000 PASSPHRASE: passw0rd GROUP_HANGTIME: 5 USE_ACL: True REG_ACL: DENY:1 SUB_ACL: DENY:1 TGID_TS1_ACL: PERMIT:ALL TGID_TS2_ACL: PERMIT:ALL # If fronted by hotspot_proxy_v2.py this should be true) GENERATOR: 100 # We cannot currently verify radioIds due to an upstream bug ALLOW_UNREG_ID: True PROXY_CONTROL: True OVERRIDE_IDENT_TG: # Allow multiple talkgroups # These DEFAULT_UA_TIMER: 60 SINGLE_MODE: False VOICE_IDENT: False TS1_STATIC: TS2_STATIC: DEFAULT_REFLECTOR: 0 ANNOUNCEMENT_LANGUAGE: en_GB # This parrot service; as connected to by loro.cfg. # This is sensible defaults and does not need to be modified # # Peer connections are outbound connections to another master # in this case the master that looks after echo/parrot [ECHO] MODE: PEER ENABLED: True LOOSE: False EXPORT_AMBE: False MASTER_IP: 127.0.0.1 MASTER_PORT: 54915 # Local IP and Port IP: 127.0.0.1 PORT: 54916 PASSPHRASE: passw0rd CALLSIGN: ECHO RADIO_ID: 1000001 RX_FREQ: 0 TX_FREQ: 0 TX_POWER: 0 COLORCODE: 1 SLOTS: 1 LATITUDE: 00.0000 LONGITUDE: 000.0000 HEIGHT: 0 LOCATION: DigitalVoice DESCRIPTION: ECHO URL: SOFTWARE_ID: 20230506 PACKAGE_ID: MMDVM GROUP_HANGTIME: 5 OPTIONS: USE_ACL: True SUB_ACL: DENY:1 TGID_TS1_ACL: PERMIT:ALL TGID_TS2_ACL: PERMIT:ALL ANNOUNCEMENT_LANGUAGE: en_GB # Open Bridges # Repeat this block for each bridge. # # You will require a hostname, port from the other operator. # You will need to give the other operator your hostname and port. # # [OBP-NETOPS] MODE: OPENBRIDGE ENABLED: True # Leave local IP blank for listen on all interfaces (needed # inside container). IP: # Update the port as required; this is the local port # for the bridge; by default the container is configured for 6000-6099 # make sure it's unqiue for each bridge. PORT: 6000 # The Target to connect to TARGET_IP: ****UPDATE**** TARGET_PORT: ***UPDATE*** ## You need to agree on a passphrase PASSPHRASE: ****UPDATE**** # The targets network ID NETWORK_ID: ****UPDATE**** # By default all bridges should carry all the usual traffic. USE_ACL: True SUB_ACL: DENY:1 TGID_ACL: PERMIT:ALL # For bridges within digital voice these should be left as # defaults for now # OpenBridge v5 (FreeBridge) Connection # Reduce PROTO_VER or ENHANCED_OBP to enable # HomeBrew or OpenBridge (classic) support ENHANCED_OBP: True PROTO_VER: 5 # We may tighten checks soon RELAX_CHECKS: True