P25 to DMR troubles. error at MMDVM_Bridge - Cannot bind UDP address, err: 98 -and- Cannot open listener port 34103


Todd, KB7RQQ
 

I have a P25 reflector running and it works great.  Decided to bridge to our DMR talk group. so I have P25Reflector --> P25Gateway --> Analog_Bridge_DMR --> Analog_Bridge_P25 --> MMDVM_Bridge.  Reflector is working fine, checked both AB's for port accuracy.  When I fire them up in that order, I get an error on MMDVM_Bridge.

This is cut down to the end....

M: 2021-09-16 01:32:00.439 P25, Opening INI file: DVSwitch.ini
M: 2021-09-16 01:32:00.440 P25, Setting [P25] address -> 127.0.0.1
M: 2021-09-16 01:32:00.440 P25, Setting [P25] txPort -> 34100
M: 2021-09-16 01:32:00.440 P25, Setting [P25] rxPort -> 34103
M: 2021-09-16 01:32:00.440 P25, Setting [P25] slot -> 2
M: 2021-09-16 01:32:00.440 P25, Setting [P25] RemotePort -> 6074
E: 2021-09-16 01:32:00.440 Cannot bind the UDP address, err: 98
F: 2021-09-16 01:32:00.440 P25, Can not open listener port 34103

34103 would be the rxPort of P25 side of Analog_Bridge_P25.ini    Not sure what configs would be helpful so I'll start with P25Bridge/AB_DMR/ABP25

Anyone see anything that stands out as whacky?

--P25Bridge.ini
[General]
Callsign=KB7RQQ
RptAddress=127.0.0.1
RptPort=32010
LocalPort=42020
Daemon=0
 
[Id Lookup]
Name=/var/lib/mmdvm/DMRIds.dat
Time=24
 
[Voice]
Enabled=1
Language=en_US
Directory=./Audio
 
[Log]
# Logging levels, 0=No logging, 1=Debug, 2=Message, 3=Info, 4=Warning, 5=Error, 6=Fatal
DisplayLevel=1
FileLevel=2
FilePath=/var/log/mmdvm
FileRoot=P25Gateway
 
[Network]
Port=42010
HostsFile1=/etc/P25Hosts.txt
HostsFile2=./private/P25Hosts.txt
ReloadTime=60
ParrotAddress=127.0.0.1
ParrotPort=42011
Startup=31655
InactivityTimeout=10
Debug=0
 
[Remote Commands]
Enable=0
Port=6074



--Analog_Bridge_DMR.ini

; Analog_Bridge configuration file.
;   This file should be placed in either /etc or it can be
;   supplied as a path on the Analog_Bridge command line.
 
; The best way to think of this file is that there are two main sections, the USRP (analog audio) and
; AMBE_AUDIO (compressed audio).  Analog_Bridge will take everything sent to the USRP port and
; encode it for transmission on the AMBE_AUDIO port.  The encoder will use the format defined in ambeMode.
; As you might expect, the reverse direction is defined too.
 
; Analog_Bridge supports include files. More on this later...
include = dvsm.macro
; include = asl.macro
 
; General Section describes settings for Analog_Bridge itself.
[GENERAL]
logLevel = 2                            ; Show messages and above 0=No logging, 1=Debug, 2=Message, 3=Info, 4=Warning, 5=Error, 6=Fatal
 
; Metadata management
exportMetadata = true                   ; Export metadata to USRP partner (transcode setups require this)
transferRootDir = /tmp ; Export database files to USRP partner
subscriberFile = /var/lib/dvswitch/subscriber_ids.csv   ; DMR ID to callsign lookup data
 
; General vocoder setup information
decoderFallBack = true                  ; Allow software AMBE decoding if a hardware decoder is not found
useEmulator = false                     ; Use the MD380 AMBE emulator for AMBE72 (DMR/YSFN/NXDN)
emulatorAddress = 127.0.0.1:2470        ; IP address and port of the md380 server
 
pcmPort = 2222                          ; UDP port to send to the WebProxy
 
; Information for xx_Bridge (Where xx is MMDVM, Quantar, HB, IPSC)
[AMBE_AUDIO]
address = 127.0.0.1                     ; IP address of xx_Bridge
txPort = 31100                          ; Transmit TLV frames to partner on this port
rxPort = 31103                          ; Listen for TLV frames from partner on this port
ambeMode = DMR                          ; DMR, DMR_IPSC, DSTAR, NXDN, P25, YSFN, YSFW (encode PCM to this format)
minTxTimeMS = 2000                      ; Analog -> Digital Minimum time in MS for hang delay (0-10000)
 
; The metadata below is used when ASL is the source since it does not have any concept of digital modes
gatewayDmrId = 3153376                  ; ID to use when transmitting from Analog_Bridge 7 digit ID
repeaterID = 315337613                  ; ID of source repeater 7 digit ID plus 2 digit SSID 
txTg = 31655                                ; TG to use for all frames sent from Analog_Bridge -> xx_Bridge
txTs = 1                                ; Slot to use for frames sent from Analog_Bridge -> xx_Bridge
colorCode = 1                           ; Color Code to assign DMR frames
 
; Information for USRP channel driver.  This interface uses PCM to transfer audio information
; There are two typical configurations, ASL and Transcode.  ASL (AllstarLink) is for analog clients connected
; to a digital network.  Transcode is when Analog_Bridge actually points its PCM interfaces back at itself, 
; causing a TLV <-- (pcm <--> pcm) --> TLV type of architecture.
;   When using ASL, this matches the rpt.conf ASL file with a setting like:
;   rxchannel = usrp/127.0.0.1:34001:32001
;   When Transcoding, make two ini files and set txPort equal to the other instance rxPort (crossover).  Launch
;   each instance with its own ini file.
[USRP]
address = 127.0.0.1                     ; IP address of USRP partner (Analog_Reflector, Allstar/Asterisk or another Analog_Bridge)
txPort = 32001                          ; Transmit USRP frames on this port
rxPort = 34001                          ; Listen for USRP frames on this port
usrpAudio = AUDIO_UNITY                 ; Digital -> Analog (AUDIO_UNITY, AUDIO_USE_GAIN, AUDIO_USE_AGC)
usrpGain = 1.10                         ; Gain factor when usrpAudio = AUDIO_USE_GAIN (0.0 to 5.0) (1.0 = AUDIO_UNITY)
usrpAGC = -20,10,100                    ; Set the agc threshold (db), slope (db) and decay (ms)
tlvAudio = AUDIO_UNITY                  ; Analog -> Digital (AUDIO_UNITY, AUDIO_USE_GAIN, AUDIO_BPF)
tlvGain = 0.35                          ; Gain factor when tlvAudio = AUDIO_USE_GAIN (0.0 to 5.0) (1.0 = AUDIO_UNITY)
 
[MACROS]
 
; Where the macros are
; xxxx=yyyy
; xxxx is the dial string to match
; yyyy is the command line to execute
 
; xxxx must be preceded by a *
; xxxx can be any string (alphanumeric)
; yyyy is the command to execute
; yyyy will replace xxxx in the dial string
; arguments follow the macro name with a # delimiter
 
; For example using macro "5678" above would look like:
; *5678#9876
 
; Which would invoke:
; echo 9876
 
; Information for DV3000 hardware decoder
;   There are two configuration modes: IP (AMBEServer) and serial (direct connect hardware)
;   Use top server and port if using AMBEServer
;   Use bottom server/port and serial = true if using the DV3000u (thumbdv)
;   Did you run AMBETest4.py before using this?
[DV3000]
address = 127.0.0.1                   ; IP address of AMBEServer
rxPort = 2460                         ; Port of AMBEServer
; address = /dev/ttyUSB0              ; Device of DV3000U on this machine
; baud = 460800                       ; Baud rate of the dongle (230400 or 460800)
; serial = true                       ; Use serial=true for direct connect or serial=false for AMBEServer




--Analog_Bridge_P25

; Analog_Bridge configuration file.
;   This file should be placed in either /etc or it can be
;   supplied as a path on the Analog_Bridge command line.
 
; The best way to think of this file is that there are two main sections, the USRP (analog audio) and
; AMBE_AUDIO (compressed audio).  Analog_Bridge will take everything sent to the USRP port and
; encode it for transmission on the AMBE_AUDIO port.  The encoder will use the format defined in ambeMode.
; As you might expect, the reverse direction is defined too.
 
; Analog_Bridge supports include files. More on this later...
include = dvsm.macro
; include = asl.macro
 
; General Section describes settings for Analog_Bridge itself.
[GENERAL]
logLevel = 2                            ; Show messages and above 0=No logging, 1=Debug, 2=Message, 3=Info, 4=Warning, 5=Error, 6=Fatal
 
; Metadata management
exportMetadata = true                   ; Export metadata to USRP partner (transcode setups require this)
transferRootDir = /tmp ; Export database files to USRP partner
subscriberFile = /var/lib/dvswitch/subscriber_ids.csv   ; DMR ID to callsign lookup data
 
; General vocoder setup information
decoderFallBack = true                  ; Allow software AMBE decoding if a hardware decoder is not found
useEmulator = false                     ; Use the MD380 AMBE emulator for AMBE72 (DMR/YSFN/NXDN)
emulatorAddress = 127.0.0.1:2470        ; IP address and port of the md380 server
 
pcmPort = 2222                          ; UDP port to send to the WebProxy
 
; Information for xx_Bridge (Where xx is MMDVM, Quantar, HB, IPSC)
[AMBE_AUDIO]
address = 127.0.0.1                     ; IP address of xx_Bridge
txPort = 34100                          ; Transmit TLV frames to partner on this port
rxPort = 34103                          ; Listen for TLV frames from partner on this port
ambeMode = P25                          ; DMR, DMR_IPSC, DSTAR, NXDN, P25, YSFN, YSFW (encode PCM to this format)
minTxTimeMS = 2000                      ; Analog -> Digital Minimum time in MS for hang delay (0-10000)
 
; The metadata below is used when ASL is the source since it does not have any concept of digital modes
gatewayDmrId = 3153376                  ; ID to use when transmitting from Analog_Bridge 7 digit ID
repeaterID = 315337613                  ; ID of source repeater 7 digit ID plus 2 digit SSID 
txTg = 31655                            ; TG to use for all frames sent from Analog_Bridge -> xx_Bridge
txTs = 1                                ; Slot to use for frames sent from Analog_Bridge -> xx_Bridge
colorCode = 1                           ; Color Code to assign DMR frames
 
; Information for USRP channel driver.  This interface uses PCM to transfer audio information
; There are two typical configurations, ASL and Transcode.  ASL (AllstarLink) is for analog clients connected
; to a digital network.  Transcode is when Analog_Bridge actually points its PCM interfaces back at itself, 
; causing a TLV <-- (pcm <--> pcm) --> TLV type of architecture.
;   When using ASL, this matches the rpt.conf ASL file with a setting like:
;   rxchannel = usrp/127.0.0.1:34001:32001
;   When Transcoding, make two ini files and set txPort equal to the other instance rxPort (crossover).  Launch
;   each instance with its own ini file.
[USRP]
address = 127.0.0.1                     ; IP address of USRP partner (Analog_Reflector, Allstar/Asterisk or another Analog_Bridge)
txPort = 34001                          ; Transmit USRP frames on this port
rxPort = 32001                          ; Listen for USRP frames on this port
usrpAudio = AUDIO_UNITY                 ; Digital -> Analog (AUDIO_UNITY, AUDIO_USE_GAIN, AUDIO_USE_AGC)
usrpGain = 1.10                         ; Gain factor when usrpAudio = AUDIO_USE_GAIN (0.0 to 5.0) (1.0 = AUDIO_UNITY)
usrpAGC = -20,10,100                    ; Set the agc threshold (db), slope (db) and decay (ms)
tlvAudio = AUDIO_UNITY                  ; Analog -> Digital (AUDIO_UNITY, AUDIO_USE_GAIN, AUDIO_BPF)
tlvGain = 0.35                          ; Gain factor when tlvAudio = AUDIO_USE_GAIN (0.0 to 5.0) (1.0 = AUDIO_UNITY)
 
[MACROS]
 
; Where the macros are
; xxxx=yyyy
; xxxx is the dial string to match
; yyyy is the command line to execute
 
; xxxx must be preceded by a *
; xxxx can be any string (alphanumeric)
; yyyy is the command to execute
; yyyy will replace xxxx in the dial string
; arguments follow the macro name with a # delimiter
 
; For example using macro "5678" above would look like:
; *5678#9876
 
; Which would invoke:
; echo 9876
 
; Information for DV3000 hardware decoder
;   There are two configuration modes: IP (AMBEServer) and serial (direct connect hardware)
;   Use top server and port if using AMBEServer
;   Use bottom server/port and serial = true if using the DV3000u (thumbdv)
;   Did you run AMBETest4.py before using this?
[DV3000]
address = 127.0.0.1                   ; IP address of AMBEServer
rxPort = 2460                         ; Port of AMBEServer
; address = /dev/ttyUSB0              ; Device of DV3000U on this machine
; baud = 460800                       ; Baud rate of the dongle (230400 or 460800)
; serial = true                       ; Use serial=true for direct connect or serial=false for AMBEServer
 
 

Join main@DVSwitch.groups.io to automatically receive all group messages.