#!/bin/bash if ! grep -q "Web-Dashboar-name" "/opt/wdp6" > /dev/null 2>&1; then sudo cat > /opt/wdp6 <<- "EOFX" ############################################## # Select number port, P25Reflector Dashboard # ############################################## Web-Dashboar-name: p25 Web-Dashboar-Port: 80 Web-Dashboar-dns: Web-Dashboar-dir: /var/www/p25 EOFX fi sudo cat > /bin/menu-p25r <<- "EOF" #!/bin/bash while : ; do choix=$(whiptail --title "Raspbian Proyect HP3ICC Menu P25Reflector" --menu "Suba o Baje con las flechas del teclado y seleccione el numero de opcion" 20 50 12 \ 1 " Editar P25FReflector Server " \ 2 " Iniciar Reflector " \ 3 " Detener Reflector " \ 4 " Dashboard on " \ 5 " Dashboard off " \ 6 " Editar Puerto http & dns " \ 7 " enable setup.php " \ 8 " remove setup.php " \ 9 " UPDATE Host & DMRId " \ 10 " P25Bbridge <> XLX/DMR " \ 11 " Menu Principal " 3>&1 1>&2 2>&3) exitstatus=$? if [ $exitstatus = 0 ]; then echo "Your chosen option:" $choix else echo "You chose cancel." break fi case $choix in 1) sudo nano /etc/P25Reflector.ini ;; 2) python3 /opt/data-mmdvm.py && sudo systemctl stop P25Reflector.service && if ! sudo systemctl status P25Reflector.service |grep "service; enabled;" >/dev/null 2>&1 then sudo systemctl enable P25Reflector.service fi if systemctl status P25Reflector.service |grep "Active: active" >/dev/null 2>&1 then sudo systemctl stop P25Reflector.service sudo systemctl start P25Reflector.service else sudo systemctl start P25Reflector.service fi ;; 3) sudo systemctl stop P25Reflector.service && sudo systemctl disable P25Reflector.service ;; 4) wdp=/opt/wdp6 wsn0=$(grep "Web-Dashboar-name:" $wdp | grep -oP 'Web-Dashboar-name:\s*\K.*') if [ -f "/etc/nginx/sites-enabled/$wsn0" ]; then rm /etc/nginx/sites-enabled/$wsn0 fi if [ -f "/etc/nginx/sites-enabled/000" ]; then rm /etc/nginx/sites-enabled/000 fi sudo systemctl restart nginx wd0p=$(grep "Web-Dashboar-Port:" $wdp | grep -oP 'Web-Dashboar-Port:\s*\K.*') if [ -z "$wd0p" ] then wd0p=80 fi wsn0=$(grep "Web-Dashboar-name:" $wdp | grep -oP 'Web-Dashboar-name:\s*\K.*') w0dn0=$(grep "Web-Dashboar-dns:" $wdp | grep -oP 'Web-Dashboar-dns:\s*\K.*') w0d0=$(grep "Web-Dashboar-dir:" $wdp | grep -oP 'Web-Dashboar-dir:\s*\K.*') if [ -z "$w0dn0" ]; then if sudo netstat -tuln | grep -q "0.0.0.0:$wd0p "; then whiptail --title "Check Port" --msgbox "El puerto $wd0p está ocupado. The port $wd0p is busy" 0 50 exit 0 else echo "" fi fi sudo ln -sf /etc/nginx/sites-available/000 /etc/nginx/sites-enabled/$wsn0 if [ ! -z "$w0dn0" ]; then sudo sed -i '3i\ server_name w0dn0;' /etc/nginx/sites-enabled/$wsn0 fi sed -i "s|wsn0|$wsn0|g" /etc/nginx/sites-enabled/$wsn0 sed -i "s|wd0p|$wd0p|g" /etc/nginx/sites-enabled/$wsn0 sed -i "s|w0dn0|$w0dn0|g" /etc/nginx/sites-enabled/$wsn0 sed -i "s|w0d0|$w0d0|g" /etc/nginx/sites-enabled/$wsn0 if [ -f "/etc/nginx/sites-enabled/000" ]; then rm /etc/nginx/sites-enabled/000 fi sudo systemctl restart nginx ;; 5) wdp=/opt/wdp6 wsn0=$(grep "Web-Dashboar-name:" $wdp | grep -oP 'Web-Dashboar-name:\s*\K.*') if [ -f "/etc/nginx/sites-enabled/$wsn0" ]; then rm /etc/nginx/sites-enabled/$wsn0 fi if [ -f "/etc/nginx/sites-enabled/000" ]; then rm /etc/nginx/sites-enabled/000 fi sudo systemctl restart nginx ;; 6) wdp=/opt/wdp6 if [ -f "/tmp/w0dn0.txt" ]; then rm /tmp/w0dn0.txt fi if [ -f "/tmp/wd0p.txt" ]; then rm /tmp/wd0p.txt fi wsn0=$(grep "Web-Dashboar-name:" $wdp | grep -oP 'Web-Dashboar-name:\s*\K.*') if [ -f "/etc/nginx/sites-enabled/$wsn0" ]; then rm /etc/nginx/sites-enabled/$wsn0 fi if [ -f "/etc/nginx/sites-enabled/000" ]; then rm /etc/nginx/sites-enabled/000 fi sudo systemctl restart nginx whiptail --title "Setup Webserver" --inputbox "Select HTTP port:" 10 60 2>/tmp/wd0p.txt exitstatus=$? if [ $exitstatus != 0 ]; then echo "You chose cancel. Exiting..." exit 1 # Salir del script con un código de error fi wd0p=$(cat /tmp/wd0p.txt) whiptail --title "Setup Webserver" --inputbox "DNS name:" 10 60 2>/tmp/w0dn0.txt exitstatus=$? if [ $exitstatus != 0 ]; then echo "You chose cancel. Exiting..." exit 1 # Salir del script con un código de error fi w0dn0=$(cat /tmp/w0dn0.txt) sed -i "s|Web-Dashboar-Port:.*|Web-Dashboar-Port: $wd0p|g" $wdp sed -i "s|Web-Dashboar-dns:.*|Web-Dashboar-dns: $w0dn0|g" $wdp wd0p=$(grep "Web-Dashboar-Port:" $wdp | grep -oP 'Web-Dashboar-Port:\s*\K.*') if [ -z "$wd0p" ] then wd0p=80 fi wsn0=$(grep "Web-Dashboar-name:" $wdp | grep -oP 'Web-Dashboar-name:\s*\K.*') w0dn0=$(grep "Web-Dashboar-dns:" $wdp | grep -oP 'Web-Dashboar-dns:\s*\K.*') w0d0=$(grep "Web-Dashboar-dir:" $wdp | grep -oP 'Web-Dashboar-dir:\s*\K.*') if [ -z "$w0dn0" ]; then if sudo netstat -tuln | grep -q "0.0.0.0:$wd0p "; then whiptail --title "Check Port" --msgbox "El puerto $wd0p está ocupado. The port $wd0p is busy" 0 50 exit 0 else echo "" fi fi sudo ln -sf /etc/nginx/sites-available/000 /etc/nginx/sites-enabled/$wsn0 if [ ! -z "$w0dn0" ]; then sudo sed -i '3i\ server_name w0dn0;' /etc/nginx/sites-enabled/$wsn0 fi sed -i "s|wsn0|$wsn0|g" /etc/nginx/sites-enabled/$wsn0 sed -i "s|wd0p|$wd0p|g" /etc/nginx/sites-enabled/$wsn0 sed -i "s|w0dn0|$w0dn0|g" /etc/nginx/sites-enabled/$wsn0 sed -i "s|w0d0|$w0d0|g" /etc/nginx/sites-enabled/$wsn0 if [ -f "/etc/nginx/sites-enabled/000" ]; then rm /etc/nginx/sites-enabled/000 fi sudo systemctl restart nginx ;; 7) cp /opt/P25Reflector-Dashboard/setup.php /var/www/p25/setup.php && whiptail --title "P25Reflector" --msgbox "setup.php is ready to use, refresh your browser / Setup.php esta lista para usar, actualiza tu navegador" 0 50 ;; 8) if [ -f "/var/www/p25/setup.php" ] then rm /var/www/p25/setup.php whiptail --title "P25Reflector" --msgbox "setup.php has removed / setup.php a sido removido" 0 50 else whiptail --title "P25Reflector" --msgbox "setup.php is not enabled / setup.php no esta habilitado" 0 50 fi ;; 9) clear echo "Update Host files - please wait" /usr/bin/python3 /opt/data-mmdvm.py # Lista de servicios a reiniciar servicios="P25Reflector.service md380-emuP25b.service analog_bridge1.service analog_bridge2.service mmdvm_bridgeP25b.service p25gatewayP25b.service" # Primero, detener todos los servicios for servicio in $servicios; do if systemctl is-enabled "$servicio" &>/dev/null || systemctl is-active "$servicio" &>/dev/null; then echo "Deteniendo $servicio" sudo systemctl stop "$servicio" fi done # Esperar un momento para asegurarse de que todos los servicios se detengan completamente sleep 5 # Luego, iniciar todos los servicios for servicio in $servicios; do echo "Iniciando $servicio" sudo systemctl start "$servicio" sudo systemctl enable "$servicio" &>/dev/null done ;; 10) menu-p25b ;; 11) break ;; esac done exit 0 EOF ############################################################# sudo cat > /bin/menu-p25b <<- "EOF" #!/bin/bash while : ; do choix=$(whiptail --title "Raspbian Proyect HP3ICC Menu P25Bridge" --menu "Suba o Baje con las flechas del teclado y seleccione el numero de opcion" 20 50 11 \ 1 " Easy setup P25Bridge " \ 2 " Iniciar Bridge " \ 3 " Detener Bridge " \ 4 " Config P25Host " \ 5 " Config P25Gateway.ini " \ 6 " Config MMDVM_bridge.ini " \ 7 " Restore Defauld " \ 8 " Menu Principal " 3>&1 1>&2 2>&3) exitstatus=$? if [ $exitstatus = 0 ]; then echo "Your chosen option:" $choix else echo "You chose cancel." break fi case $choix in 1) mcall="" mid="" midg="" p25id="" sbridge="" txtg="" sport="" spass="" sopti="" whiptail --title "Easy setup P25Bridge" --inputbox "Calsign:" 10 60 2>/tmp/mcall.txt exitstatus=$? if [ $exitstatus != 0 ]; then echo "You chose cancel. Exiting..." exit 1 # Salir del script con un código de error fi mcall=$(cat /tmp/mcall.txt) mcall=$(echo "$mcall" | tr '[:lower:]' '[:upper:]') whiptail --title "Easy setup P25Bridge" --inputbox "DMRId:" 10 60 2>/tmp/mid.txt exitstatus=$? if [ $exitstatus != 0 ]; then echo "You chose cancel. Exiting..." exit 1 # Salir del script con un código de error fi mid=$(cat /tmp/mid.txt) whiptail --title "Easy setup P25Bridge" --inputbox "P25 Number ID Reflector:" 10 60 2>/tmp/p25id.txt exitstatus=$? if [ $exitstatus != 0 ]; then echo "You chose cancel. Exiting..." exit 1 # Salir del script con un código de error fi p25id=$(cat /tmp/p25id.txt) network=$(whiptail --title "Easy setup P25Bridge" --menu "Select a network:" 10 60 2 \ "1" "Connect to DMR Network" \ "2" "Connect to XLX Network" 3>&1 1>&2 2>&3) if [ $? != 0 ]; then echo "You chose cancel. Returning to main menu." continue # Regresar al inicio del bucle sin procesar el resto del caso 1 fi case "$network" in "1") whiptail --title "Easy setup P25Bridge" --inputbox "DMR Device id 01-99:" 10 60 2>/tmp/midg.txt exitstatus=$? if [ $exitstatus != 0 ]; then echo "You chose cancel. Exiting..." exit 1 # Salir del script con un código de error fi midg=$(cat /tmp/midg.txt) whiptail --title "Easy setup P25Bridge" --inputbox "IP or dns server DMR:" 10 60 2>/tmp/sbridge.txt exitstatus=$? if [ $exitstatus != 0 ]; then echo "You chose cancel. Exiting..." exit 1 # Salir del script con un código de error fi sbridge=$(cat /tmp/sbridge.txt) whiptail --title "Easy setup P25Bridge" --inputbox "Port server DMR:" 10 60 2>/tmp/sport.txt exitstatus=$? if [ $exitstatus != 0 ]; then echo "You chose cancel. Exiting..." exit 1 # Salir del script con un código de error fi sport=$(cat /tmp/sport.txt) whiptail --title "Easy setup P25Bridge" --inputbox "Password server DMR:" 10 60 2>/tmp/spass.txt exitstatus=$? if [ $exitstatus != 0 ]; then echo "You chose cancel. Exiting..." exit 1 # Salir del script con un código de error fi spass=$(cat /tmp/spass.txt) whiptail --title "Easy setup P25Bridge" --inputbox "TalkGroup / tg sample: 91" 10 60 2>/tmp/txtg.txt exitstatus=$? if [ $exitstatus != 0 ]; then echo "You chose cancel. Exiting..." exit 1 # Salir del script con un código de error fi txtg=$(cat /tmp/txtg.txt) whiptail --title "Easy setup P25Bridge" --inputbox "Line Options / sample: TS2=91; " 10 60 2>/tmp/sopti.txt exitstatus=$? if [ $exitstatus != 0 ]; then echo "You chose cancel. Exiting..." exit 1 # Salir del script con un código de error fi sopti=$(cat /tmp/sopti.txt) # Modify the MMDVM_Bridge.ini file for DMR sudo sed -i "3s/Id=.*/Id=${mid}${midg}/" /opt/p25bridge/MMDVM_Bridge.ini ;; "2") whiptail --title "Easy setup P25Bridge" --inputbox "IP or dns server XLXD:" 10 60 2>/tmp/sbridge.txt exitstatus=$? if [ $exitstatus != 0 ]; then echo "You chose cancel. Exiting..." exit 1 # Salir del script con un código de error fi sbridge=$(cat /tmp/sbridge.txt) whiptail --title "Easy setup P25Bridge" --inputbox "Port server XLXD:" 10 60 2>/tmp/sport.txt exitstatus=$? if [ $exitstatus != 0 ]; then echo "You chose cancel. Exiting..." exit 1 # Salir del script con un código de error fi sport=$(cat /tmp/sport.txt) whiptail --title "Easy setup P25Bridge" --inputbox "Password server XLXD:" 10 60 2>/tmp/spass.txt exitstatus=$? if [ $exitstatus != 0 ]; then echo "You chose cancel. Exiting..." exit 1 # Salir del script con un código de error fi spass=$(cat /tmp/spass.txt) whiptail --title "Easy setup P25Bridge" --inputbox "TalkGroup / tg sample: 91" 10 60 2>/tmp/txtg.txt exitstatus=$? if [ $exitstatus != 0 ]; then echo "You chose cancel. Exiting..." exit 1 # Salir del script con un código de error fi txtg=$(cat /tmp/txtg.txt) whiptail --title "Easy setup P25Bridge" --inputbox "Line Options / sample: XLX:4001 " 10 60 2>/tmp/sopti.txt exitstatus=$? if [ $exitstatus != 0 ]; then echo "You chose cancel. Exiting..." exit 1 # Salir del script con un código de error fi sopti=$(cat /tmp/sopti.txt) # Modify the MMDVM_Bridge.ini file for XLX sudo sed -i "3s/Id=.*/Id=${mid}/" /opt/p25bridge/MMDVM_Bridge.ini ;; *) echo "Invalid selection" ;; esac sudo sed -i "13s/gatewayDmrId =.*/gatewayDmrId = ${mid}25/g" /opt/p25bridge/Analog_Bridge_DMR.ini sudo sed -i "14s/repeaterID =.*/repeaterID = ${mid}26/g" /opt/p25bridge/Analog_Bridge_DMR.ini sudo sed -i "15s/txTg =.*/txTg = ${txtg}/g" /opt/p25bridge/Analog_Bridge_DMR.ini sudo sed -i "13s/gatewayDmrId =.*/gatewayDmrId = ${mid}25/g" /opt/p25bridge/Analog_Bridge_P25.ini sudo sed -i "14s/repeaterID =.*/repeaterID = ${mid}26/g" /opt/p25bridge/Analog_Bridge_P25.ini sudo sed -i "15s/txTg =.*/txTg = ${txtg}/g" /opt/p25bridge/Analog_Bridge_P25.ini sudo sed -i "2s/Callsign=.*/Callsign=$mcall/g" /opt/p25bridge/MMDVM_Bridge.ini #sudo sed -i "3s/Id=.*/Id=$mid$midg/" /opt/p25bridge/MMDVM_Bridge.ini sudo sed -i "70s/Address=.*/Address=$sbridge/" /opt/p25bridge/MMDVM_Bridge.ini sudo sed -i "71s/Port=.*/Port=$sport/" /opt/p25bridge/MMDVM_Bridge.ini sudo sed -i "74s/Password=.*/Password=$spass/" /opt/p25bridge/MMDVM_Bridge.ini sudo sed -i "77s/Options=.*/Options=$sopti/" /opt/p25bridge/MMDVM_Bridge.ini sudo sed -i "2s/Callsign=.*/Callsign=$mcall/g" /opt/p25bridge/P25Gateway.ini sudo sed -i "37s/Static=.*/Static=$p25id/g" /opt/p25bridge/P25Gateway.ini sudo sed -i "38s/Startup=.*/Startup=$p25id/g" /opt/p25bridge/P25Gateway.ini input_file="/opt/data-files/P25Hosts.txt" output_file="/opt/P25Hosts2.txt" grep -w "^$p25id" "$input_file" > "$output_file" rm -f /tmp/mcall.txt /tmp/mid.txt /tmp/p25id.txt /tmp/sbridge.txt /tmp/sport.txt /tmp/sopti.txt /tmp/midg.txt /tmp/spass.txt python3 /opt/data-mmdvm.py # Lista de servicios a reiniciar servicios="md380-emuP25b.service analog_bridge1.service analog_bridge2.service mmdvm_bridgeP25b.service p25gatewayP25b.service" # Primero, detener todos los servicios for servicio in $servicios; do if systemctl is-enabled "$servicio" &>/dev/null || systemctl is-active "$servicio" &>/dev/null; then echo "Deteniendo $servicio" sudo systemctl stop "$servicio" fi done # Esperar un momento para asegurarse de que todos los servicios se detengan completamente sleep 5 # Luego, iniciar todos los servicios for servicio in $servicios; do echo "Iniciando $servicio" sudo systemctl start "$servicio" sudo systemctl enable "$servicio" &>/dev/null done whiptail --title "Easy setup P25Bridge" --msgbox "Configuracion finalizada" 0 50 ;; 2) python3 /opt/data-mmdvm.py # Lista de servicios a reiniciar servicios="md380-emuP25b.service analog_bridge1.service analog_bridge2.service mmdvm_bridgeP25b.service p25gatewayP25b.service" # Primero, detener todos los servicios for servicio in $servicios; do if systemctl is-enabled "$servicio" &>/dev/null || systemctl is-active "$servicio" &>/dev/null; then echo "Deteniendo $servicio" sudo systemctl stop "$servicio" fi done # Esperar un momento para asegurarse de que todos los servicios se detengan completamente sleep 5 # Luego, iniciar todos los servicios for servicio in $servicios; do echo "Iniciando $servicio" sudo systemctl start "$servicio" sudo systemctl enable "$servicio" &>/dev/null done ;; 3) # Lista de servicios a reiniciar servicios="md380-emuP25b.service analog_bridge1.service analog_bridge2.service mmdvm_bridgeP25b.service p25gatewayP25b.service" # Recorre la lista de servicios y verifica si están activos for servicio in $servicios; do if systemctl is-enabled "$servicio" &>/dev/null || systemctl is-active "$servicio" &>/dev/null; then echo "stop $servicio" sudo systemctl disable "$servicio" sudo systemctl stop "$servicio" fi done ;; 4) sudo nano /opt/P25Hosts2.txt ;; 5) sudo nano /opt/p25bridge/P25Gateway.ini ;; 6) sudo nano /opt/p25bridge/MMDVM_Bridge.ini ;; 7) # Lista de servicios a reiniciar servicios="md380-emuP25b.service analog_bridge1.service analog_bridge2.service mmdvm_bridgeP25b.service p25gatewayP25b.service" # Recorre la lista de servicios y verifica si están activos for servicio in $servicios; do if systemctl is-enabled "$servicio" | grep "enabled" >/dev/null 2>&1; then echo "stop $servicio" sudo systemctl disable "$servicio" sudo systemctl stop "$servicio" fi done sudo cat > /opt/p25bridge/Analog_Bridge_DMR.ini <<- "EOFB1" [GENERAL] decoderFallBack = true useEmulator = false subscriberFile = ./user.csv exportMetadata = true [AMBE_AUDIO] server = 127.0.0.1 fromDMRPort = 31800 toDMRPort = 31803 ambeMode = DMR minTxTimeMS = 2000 gatewayDmrId = 714000125 repeaterID = 714000126 txTg = 37500 txTs = 2 colorCode = 1 [USRP] server = 127.0.0.1 toASLPort = 32801 fromASLPort = 34801 aslAudio = AUDIO_UNITY agcGain = -20 dmrAudio = AUDIO_UNITY dmrGain = 0.35 EOFB1 sudo cat > /opt/p25bridge/Analog_Bridge_P25.ini <<- "EOFB2" [GENERAL] decoderFallBack = true useEmulator = false subscriberFile = ./user.csv exportMetadata = true [AMBE_AUDIO] server = 127.0.0.1 fromDMRPort = 34800 toDMRPort = 34803 ambeMode = P25 minTxTimeMS = 2000 gatewayDmrId = 714000125 repeaterID = 714000126 txTg = 37500 txTs = 2 colorCode = 1 [USRP] server = 127.0.0.1 toASLPort = 34801 fromASLPort = 32801 aslAudio = AUDIO_UNITY agcGain = -20 dmrAudio = AUDIO_UNITY dmrGain = 0.35 EOFB2 sudo cat > /opt/p25bridge/MMDVM_Bridge.ini <<- "EOFB3" [General] Callsign=HP3ICC Id=0000000 Timeout=220 Duplex=0 [Info] RXFrequency=0 TXFrequency=0 Power=1 Latitude=41.7333 Longitude=-50.3999 Height=0 Location=P25 < Bridge > DMR Description=MMDVM_Bridge URL=https://groups.io/g/DVSwitch [Log] # Logging levels, 0=No logging, 1=Debug, 2=Message, 3=Info, 4=Warning, 5=Error, 6=Fatal DisplayLevel=0 FileLevel=0 FilePath=/var/log/mmdvm FileRoot=MMDVM_Bridge [DMR Id Lookup] File=/opt/data-files/DMRId.dat Time=24 [NXDN Id Lookup] File=/opt/data-files/NXDN.csv Time=24 [Modem] Port=/dev/null RSSIMappingFile=/dev/null Trace=0 Debug=0 [D-Star] Enable=0 Module=B [DMR] Enable=1 ColorCode=1 EmbeddedLCOnly=1 DumpTAData=0 [System Fusion] Enable=0 [P25] Enable=1 NAC=293 [NXDN] Enable=0 RAN=1 Id=12345 [D-Star Network] Enable=0 GatewayAddress=127.0.0.1 GatewayPort=20010 LocalPort=20011 Debug=0 [DMR Network] Enable=1 Address=127.0.0.1 Port=62030 Jitter=240 Local=62136 Password=passw0rd # for DMR+ see https://github.com/DVSwitch/MMDVM_Bridge/blob/master/DOC/DMRplus_startup_options.md # for XLX the syntax is: Options=XLX:4009 Options=XLX:4001 Slot1=0 Slot2=1 Debug=0 [System Fusion Network] Enable=0 LocalAddress=0 LocalPort=3280 GatewayAddress=127.0.0.1 GatewayPort=4280 Debug=0 [P25 Network] Enable=1 GatewayAddress=127.0.0.1 GatewayPort=42820 LocalPort=32810 Debug=0 [NXDN Network] Enable=0 #LocalAddress=127.0.0.1 Debug=0 LocalPort=14021 GatewayAddress=127.0.0.1 GatewayPort=14020 EOFB3 sudo cat > /opt/p25bridge/P25Gateway.ini <<- "EOFB4" [General] Callsign=HP3ICC RptAddress=127.0.0.1 RptPort=32810 LocalPort=42820 Debug=0 Daemon=0 [Id Lookup] Name=/opt/data-files/DMRId.dat Time=24 [Voice] Enabled=0 #Language=en_GB #Directory=./Audio [Log] # Logging levels, 0=No logging DisplayLevel=0 FileLevel=0 FilePath=/var/log/mmdvm FileRoot=P25Gateway FileRotate=1 [Network] Port=42810 HostsFile1=/opt/P25Hosts2.txt #/opt/data-files/P25Hosts.txt #./P25Hosts.txt ReloadTime=60 ParrotAddress=127.0.0.1 ParrotPort=42811 P252DMRAddress=127.0.0.1 P252DMRPort=42812 # Enter your P25 TG number below: Static=7144 Startup=7144 RFHangTime=120 NetHangTime=0 Debug=0 [Remote Commands] Enable=0 Port=6074 EOFB4 # sudo cat > /opt/p25bridge/DVSwitch.ini <<- "EOFB5" ; MMDVM_Bridge export / import configuration file. ; This file should be placed along side of MMDVM_Bridge or it can be ; supplied as a path on the MMDVM_BRIDGE environment variable. ; Configure the Quantar Repeater Partner ; Note that the TX and RX ports are already reversed for MMDVM_Bridge <--> Quantar_Bridge [QUANTAR] ;logFilePath = /var/log/Quantar_Bridge.log ;Address = 127.0.0.1 ; Address to send AMBE TLV frames to (export) ;TXPort = 34803 ; Port to send AMBE TLV frames to (export) ;RXPort = 34800 ; Port to listen on (import) ;quantarPort = 1994 ; HDLC frames To/From the Quantar repeater ;logLevel = 2 ; Show messages and above 0=No logging, 1=Debug, 2=Message, 3=Info, 4=Warning, 5=Error, 6=Fatal ;debug = 0 ; Debug 0 = off, 1 = on (adds lots of additional messages) ; Configure the DMR Partner ; Audio format is AMBE 72 bit [DMR] Address = 127.0.0.1 ; Address to send AMBE TLV frames to (export) TXPort = 31800 ; Port to send AMBE TLV frames to (export) RXPort = 31803 ; Port to listen on (import) Slot = 2 ; Export slot ; Configure the D-Star Partner ; Audio format is AMBE 48 bit (DSAMBE) [DSTAR] ;Address = 127.0.0.1 ; Address to send AMBE TLV frames to (export) ;TXPort = 32100 ; Port to send AMBE TLV frames to (export) ;RXPort = 32103 ; Port to listen on (import) ;FallbackID = 7140001 ; In case we can not find a valid DMR id in the database, export this one ;ExportTG = 9 ; Which TG to export ;Slot = 2 ; Export slot ; Configure the NXDN Partner ; Audio format is AMBE 72 bit [NXDN] ;Address = 127.0.0.1 ; Address to send AMBE TLV frames to (export) ;TXPort = 33100 ; Port to send AMBE TLV frames to (export) ;RXPort = 33103 ; Port to listen on (import) ;FallbackID = 7140001 ; In case we can not find a valid DMR id in the database, export this one ;NXDNFallbackID = 12345 ; Use this ID when the input DMR ID is not found in the database ;Translate = 1234=4321 ; Translate NXDN TG < -- > DMR TG (bidirectional) ;Slot = 2 ; Export slot ; Configure the P25 Partner ; Audio format is IMBE 88 bit [P25] Address = 127.0.0.1 ; Address to send AMBE TLV frames to (export) TXPort = 34800 ; Port to send AMBE TLV frames to (export) RXPort = 34803 ; Port to listen on (import) Slot = 2 ; Export slot ; Configure the Yaesu Fusion Partner ; Audio format is AMBE 72 bit ; Audio format is IMBE 88 bit [YSF] ;Address = 127.0.0.1 ; Address to send AMBE TLV frames to (export) ;TXPort = 35100 ; Port to send AMBE TLV frames to (export) ;RXPort = 35103 ; Port to listen on (import) ;FallbackID = 7140001 ; In case we can not find a valid DMR id in the database, export this one ;ExportTG = 1234 ; Which TG to export ;Slot = 2 ; Export slot EOFB5 ;; 8) break ;; esac done exit 0 EOF ######### sudo chmod +x /bin/menu-p25r sudo chmod +x /bin/menu-p25b ln -sf /bin/menu-p25r /bin/MENU-P25R ln -sf /bin/menu-p25b /bin/MENU-P25B sudo chmod +x /bin/MENU*