analog to digital time stretching


Patrick Perdue
 

I just experienced something odd.

Running Analog_Reflector connected to Asterisk USRP sending to Analog_Bridge, transmitted audio from analog to DMR was time stretched to, far as I can tell, 50% of original speed. This sounded like time expansion rather than a sampling rate mismatch. Very strange. For now, I have reverted back to just using Analog_Bridge directly. No web clients were connected at the time. I captured raw audio from the PCM port, and it wasn't compromised. Audio was passing normally until some unknown event that I didn't witness. I tried restarting A_B, A_F and M_B, also got the latest A_F binary from github.

I'm not sure what to look for here.

For reference, this is my Analog_Bridge.ini:


[GENERAL]
logLevel = 2                            ; Show messages and above 0=No logging, 1=Debug, 2=Message, 3=Info, 4=Warning, 5=Error, 6=Fatal

; Metadata management
subscriberFile = /var/lib/dvswitch/subscriber_ids.csv   ; DMR ID to callsign lookup data
exportMetadata = true                   ; Export metadata to USRP partner (transcode setups require this)
transferRootDir = /tmp            ; Export database files to USRP partner

; General vocoder setup information
decoderFallBack = true                  ; Allow software AMBE decoding if a hardware decoder is not found
useEmulator = true                     ; Use the MD380 AMBE emulator for AMBE72 (DMR/YSFN/NXDN)
emulatorAddress = 127.0.0.1:2470        ; IP address and port of the md380 server

; Information for xx_Bridge (Where xx is MMDVM, Quantar, HB, IPSC)
[AMBE_AUDIO]
address = 127.0.0.1                     ; IP address of xx_Bridge
txPort = 31103                          ; Transmit TLV frames to partner on this port
rxPort = 31100                          ; 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 = 3000                      ; 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 = 3138495                        ; ID to use when transmitting from Analog_Bridge
repeaterID = 313849537                          ; ID of source repeater
txTg = 4001                                ; TG to use for all frames sent from Analog_Bridge -> xx_Bridge
txTs = 2                                ; Slot to use for frames sent from Analog_Bridge -> xx_Bridge
colorCode = 1                           ; Color Code to assign DMR frames

[USRP]
address = 127.0.0.1                     ; IP address of USRP partner (Allstar/Asterisk or another Analog_Bridge)
txPort = 52103                          ; Transmit USRP frames on this port
rxPort = 54103                          ; Listen for USRP frames on this port
usrpAudio = AUDIO_USE_AGC                 ; Digital -> Analog (AUDIO_UNITY, AUDIO_USE_GAIN, AUDIO_USE_AGC)
usrpGain = 1.00                         ; Gain factor when usrpAudio = AUDIO_USE_GAIN (0.0 to 5.0) (1.0 = AUDIO_UNITY)
usrpAgc = -16,10,1500                    ; Set the agc threshold (db), slope (db) and decay (ms)
tlvAudio = AUDIO_USE_GAIN                  ; Analog -> Digital (AUDIO_UNITY, AUDIO_USE_GAIN, AUDIO_BPF)
tlvGain = 0.34                          ; 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

[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

And this is Analog_Reflector.json:

{
  "nodeName":"DVSwitch",
  "dmrID":"3138495",
  "abAddress": "127.0.0.1",
  "usrpTxPort": "54103",
  "usrpRxPort": "52103",
  "mobilePort": "13579",
  "wsPort": "443",
  "keyDir": "./ssl/",
  "siteroot": "./arRoot",
  "logFileName": "/var/log/dvswitch/Analog_Reflector.log",
  "logLevel": "2",
  "disallowUnknownClients": false,
  "brokerURL": "mqtt://localhost:1883",
  "rightsMask": "4",
  "autoMute": false,
  "clientModes": ["DMR", "STFU", "DSTAR|D-Star", "NXDN", "P25", "YSF", "ASL|AllStar", "Intercom"],
  "bridges": {
    "asl": [
      {"node" : "50631", "address" : "127.0.0.1", "rxPort" : "34001", "txPort" : "32001", "rights" : 3, "amiUserName" : "admin", "amiSecret" : "HahahahahaYeahSure"}
    ],
    "ab" : [
      {"name" : "DMR",    "address" : "127.0.0.1", "rxPort" : "51100", "txPort" : "51103", "rights" : 1},
      {"name" : "D-Star", "address" : "127.0.0.1", "rxPort" : "52100", "txPort" : "52103", "rights" : 1},
      {"name" : "NXDN",   "address" : "127.0.0.1", "rxPort" : "53100", "txPort" : "53103", "rights" : 1},
      {"name" : "P25",    "address" : "127.0.0.1", "rxPort" : "54100", "txPort" : "54103", "rights" : 1},
      {"name" : "YSF",    "address" : "127.0.0.1", "rxPort" : "55100", "txPort" : "55103", "rights" : 1}
    ]
  }
}


Patrick Perdue
 

A_F=A_R. Waking up is hard to do.


Steve N4IRS
 

I have not seen this happen (yet) I have heard something like it from a web client connected to AR. Disconnecting the client from AR and reconnecting resolved it. If you go back to using AR, I suggest you bounce AR so we can try to determine where the issue is.

Steve N4IRS

On 3/7/21 1:12 PM, Patrick Perdue wrote:
I just experienced something odd.

Running Analog_Reflector connected to Asterisk USRP sending to Analog_Bridge, transmitted audio from analog to DMR was time stretched to, far as I can tell, 50% of original speed. This sounded like time expansion rather than a sampling rate mismatch. Very strange. For now, I have reverted back to just using Analog_Bridge directly. No web clients were connected at the time. I captured raw audio from the PCM port, and it wasn't compromised. Audio was passing normally until some unknown event that I didn't witness. I tried restarting A_B, A_F and M_B, also got the latest A_F binary from github.

I'm not sure what to look for here.

For reference, this is my Analog_Bridge.ini:


[GENERAL]
logLevel = 2                            ; Show messages and above 0=No logging, 1=Debug, 2=Message, 3=Info, 4=Warning, 5=Error, 6=Fatal

; Metadata management
subscriberFile = /var/lib/dvswitch/subscriber_ids.csv   ; DMR ID to callsign lookup data
exportMetadata = true                   ; Export metadata to USRP partner (transcode setups require this)
transferRootDir = /tmp            ; Export database files to USRP partner

; General vocoder setup information
decoderFallBack = true                  ; Allow software AMBE decoding if a hardware decoder is not found
useEmulator = true                     ; Use the MD380 AMBE emulator for AMBE72 (DMR/YSFN/NXDN)
emulatorAddress = 127.0.0.1:2470        ; IP address and port of the md380 server

; Information for xx_Bridge (Where xx is MMDVM, Quantar, HB, IPSC)
[AMBE_AUDIO]
address = 127.0.0.1                     ; IP address of xx_Bridge
txPort = 31103                          ; Transmit TLV frames to partner on this port
rxPort = 31100                          ; 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 = 3000                      ; 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 = 3138495                        ; ID to use when transmitting from Analog_Bridge
repeaterID = 313849537                          ; ID of source repeater
txTg = 4001                                ; TG to use for all frames sent from Analog_Bridge -> xx_Bridge
txTs = 2                                ; Slot to use for frames sent from Analog_Bridge -> xx_Bridge
colorCode = 1                           ; Color Code to assign DMR frames

[USRP]
address = 127.0.0.1                     ; IP address of USRP partner (Allstar/Asterisk or another Analog_Bridge)
txPort = 52103                          ; Transmit USRP frames on this port
rxPort = 54103                          ; Listen for USRP frames on this port
usrpAudio = AUDIO_USE_AGC                 ; Digital -> Analog (AUDIO_UNITY, AUDIO_USE_GAIN, AUDIO_USE_AGC)
usrpGain = 1.00                         ; Gain factor when usrpAudio = AUDIO_USE_GAIN (0.0 to 5.0) (1.0 = AUDIO_UNITY)
usrpAgc = -16,10,1500                    ; Set the agc threshold (db), slope (db) and decay (ms)
tlvAudio = AUDIO_USE_GAIN                  ; Analog -> Digital (AUDIO_UNITY, AUDIO_USE_GAIN, AUDIO_BPF)
tlvGain = 0.34                          ; 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

[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

And this is Analog_Reflector.json:

{
  "nodeName":"DVSwitch",
  "dmrID":"3138495",
  "abAddress": "127.0.0.1",
  "usrpTxPort": "54103",
  "usrpRxPort": "52103",
  "mobilePort": "13579",
  "wsPort": "443",
  "keyDir": "./ssl/",
  "siteroot": "./arRoot",
  "logFileName": "/var/log/dvswitch/Analog_Reflector.log",
  "logLevel": "2",
  "disallowUnknownClients": false,
  "brokerURL": "mqtt://localhost:1883",
  "rightsMask": "4",
  "autoMute": false,
  "clientModes": ["DMR", "STFU", "DSTAR|D-Star", "NXDN", "P25", "YSF", "ASL|AllStar", "Intercom"],
  "bridges": {
    "asl": [
      {"node" : "50631", "address" : "127.0.0.1", "rxPort" : "34001", "txPort" : "32001", "rights" : 3, "amiUserName" : "admin", "amiSecret" : "HahahahahaYeahSure"}
    ],
    "ab" : [
      {"name" : "DMR",    "address" : "127.0.0.1", "rxPort" : "51100", "txPort" : "51103", "rights" : 1},
      {"name" : "D-Star", "address" : "127.0.0.1", "rxPort" : "52100", "txPort" : "52103", "rights" : 1},
      {"name" : "NXDN",   "address" : "127.0.0.1", "rxPort" : "53100", "txPort" : "53103", "rights" : 1},
      {"name" : "P25",    "address" : "127.0.0.1", "rxPort" : "54100", "txPort" : "54103", "rights" : 1},
      {"name" : "YSF",    "address" : "127.0.0.1", "rxPort" : "55100", "txPort" : "55103", "rights" : 1}
    ]
  }
}








Mike Zingman - N4IRR
 

This sounds like the pcm to ambe encode having issues. Is this hardware or software vocoder?  Not an AR issue at all. 


On Sun, Mar 7, 2021, 1:12 PM Patrick Perdue <borrisinabox@...> wrote:
I just experienced something odd.

Running Analog_Reflector connected to Asterisk USRP sending to
Analog_Bridge, transmitted audio from analog to DMR was time stretched
to, far as I can tell, 50% of original speed. This sounded like time
expansion rather than a sampling rate mismatch. Very strange. For now, I
have reverted back to just using Analog_Bridge directly. No web clients
were connected at the time. I captured raw audio from the PCM port, and
it wasn't compromised. Audio was passing normally until some unknown
event that I didn't witness. I tried restarting A_B, A_F and M_B, also
got the latest A_F binary from github.

I'm not sure what to look for here.

For reference, this is my Analog_Bridge.ini:


[GENERAL]
logLevel = 2                            ; Show messages and above 0=No
logging, 1=Debug, 2=Message, 3=Info, 4=Warning, 5=Error, 6=Fatal

; Metadata management
subscriberFile = /var/lib/dvswitch/subscriber_ids.csv   ; DMR ID to
callsign lookup data
exportMetadata = true                   ; Export metadata to USRP
partner (transcode setups require this)
transferRootDir = /tmp            ; Export database files to USRP partner

; General vocoder setup information
decoderFallBack = true                  ; Allow software AMBE decoding
if a hardware decoder is not found
useEmulator = true                     ; Use the MD380 AMBE emulator for
AMBE72 (DMR/YSFN/NXDN)
emulatorAddress = 127.0.0.1:2470        ; IP address and port of the
md380 server

; Information for xx_Bridge (Where xx is MMDVM, Quantar, HB, IPSC)
[AMBE_AUDIO]
address = 127.0.0.1                     ; IP address of xx_Bridge
txPort = 31103                          ; Transmit TLV frames to partner
on this port
rxPort = 31100                          ; 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 = 3000                      ; 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 = 3138495                        ; ID to use when
transmitting from Analog_Bridge
repeaterID = 313849537                          ; ID of source repeater
txTg = 4001                                ; TG to use for all frames
sent from Analog_Bridge -> xx_Bridge
txTs = 2                                ; Slot to use for frames sent
from Analog_Bridge -> xx_Bridge
colorCode = 1                           ; Color Code to assign DMR frames

[USRP]
address = 127.0.0.1                     ; IP address of USRP partner
(Allstar/Asterisk or another Analog_Bridge)
txPort = 52103                          ; Transmit USRP frames on this port
rxPort = 54103                          ; Listen for USRP frames on this
port
usrpAudio = AUDIO_USE_AGC                 ; Digital -> Analog
(AUDIO_UNITY, AUDIO_USE_GAIN, AUDIO_USE_AGC)
usrpGain = 1.00                         ; Gain factor when usrpAudio =
AUDIO_USE_GAIN (0.0 to 5.0) (1.0 = AUDIO_UNITY)
usrpAgc = -16,10,1500                    ; Set the agc threshold (db),
slope (db) and decay (ms)
tlvAudio = AUDIO_USE_GAIN                  ; Analog -> Digital
(AUDIO_UNITY, AUDIO_USE_GAIN, AUDIO_BPF)
tlvGain = 0.34                          ; 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

[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

And this is Analog_Reflector.json:

{
   "nodeName":"DVSwitch",
   "dmrID":"3138495",
   "abAddress": "127.0.0.1",
   "usrpTxPort": "54103",
   "usrpRxPort": "52103",
   "mobilePort": "13579",
   "wsPort": "443",
   "keyDir": "./ssl/",
   "siteroot": "./arRoot",
   "logFileName": "/var/log/dvswitch/Analog_Reflector.log",
   "logLevel": "2",
   "disallowUnknownClients": false,
   "brokerURL": "mqtt://localhost:1883",
   "rightsMask": "4",
   "autoMute": false,
   "clientModes": ["DMR", "STFU", "DSTAR|D-Star", "NXDN", "P25", "YSF",
"ASL|AllStar", "Intercom"],
   "bridges": {
     "asl": [
       {"node" : "50631", "address" : "127.0.0.1", "rxPort" : "34001",
"txPort" : "32001", "rights" : 3, "amiUserName" : "admin", "amiSecret" :
"HahahahahaYeahSure"}
     ],
     "ab" : [
       {"name" : "DMR",    "address" : "127.0.0.1", "rxPort" : "51100",
"txPort" : "51103", "rights" : 1},
       {"name" : "D-Star", "address" : "127.0.0.1", "rxPort" : "52100",
"txPort" : "52103", "rights" : 1},
       {"name" : "NXDN",   "address" : "127.0.0.1", "rxPort" : "53100",
"txPort" : "53103", "rights" : 1},
       {"name" : "P25",    "address" : "127.0.0.1", "rxPort" : "54100",
"txPort" : "54103", "rights" : 1},
       {"name" : "YSF",    "address" : "127.0.0.1", "rxPort" : "55100",
"txPort" : "55103", "rights" : 1}
     ]
   }
}










Patrick Perdue
 

Software, but the problem went away when I took AR out of the chain, after restarting the entire stack a few times, including the vocoder.

Sent from my zippo


On Mar 7, 2021, at 17:14, Mike Zingman - N4IRR <mike.zingman@...> wrote:


This sounds like the pcm to ambe encode having issues. Is this hardware or software vocoder?  Not an AR issue at all. 

On Sun, Mar 7, 2021, 1:12 PM Patrick Perdue <borrisinabox@...> wrote:
I just experienced something odd.

Running Analog_Reflector connected to Asterisk USRP sending to
Analog_Bridge, transmitted audio from analog to DMR was time stretched
to, far as I can tell, 50% of original speed. This sounded like time
expansion rather than a sampling rate mismatch. Very strange. For now, I
have reverted back to just using Analog_Bridge directly. No web clients
were connected at the time. I captured raw audio from the PCM port, and
it wasn't compromised. Audio was passing normally until some unknown
event that I didn't witness. I tried restarting A_B, A_F and M_B, also
got the latest A_F binary from github.

I'm not sure what to look for here.

For reference, this is my Analog_Bridge.ini:


[GENERAL]
logLevel = 2                            ; Show messages and above 0=No
logging, 1=Debug, 2=Message, 3=Info, 4=Warning, 5=Error, 6=Fatal

; Metadata management
subscriberFile = /var/lib/dvswitch/subscriber_ids.csv   ; DMR ID to
callsign lookup data
exportMetadata = true                   ; Export metadata to USRP
partner (transcode setups require this)
transferRootDir = /tmp            ; Export database files to USRP partner

; General vocoder setup information
decoderFallBack = true                  ; Allow software AMBE decoding
if a hardware decoder is not found
useEmulator = true                     ; Use the MD380 AMBE emulator for
AMBE72 (DMR/YSFN/NXDN)
emulatorAddress = 127.0.0.1:2470        ; IP address and port of the
md380 server

; Information for xx_Bridge (Where xx is MMDVM, Quantar, HB, IPSC)
[AMBE_AUDIO]
address = 127.0.0.1                     ; IP address of xx_Bridge
txPort = 31103                          ; Transmit TLV frames to partner
on this port
rxPort = 31100                          ; 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 = 3000                      ; 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 = 3138495                        ; ID to use when
transmitting from Analog_Bridge
repeaterID = 313849537                          ; ID of source repeater
txTg = 4001                                ; TG to use for all frames
sent from Analog_Bridge -> xx_Bridge
txTs = 2                                ; Slot to use for frames sent
from Analog_Bridge -> xx_Bridge
colorCode = 1                           ; Color Code to assign DMR frames

[USRP]
address = 127.0.0.1                     ; IP address of USRP partner
(Allstar/Asterisk or another Analog_Bridge)
txPort = 52103                          ; Transmit USRP frames on this port
rxPort = 54103                          ; Listen for USRP frames on this
port
usrpAudio = AUDIO_USE_AGC                 ; Digital -> Analog
(AUDIO_UNITY, AUDIO_USE_GAIN, AUDIO_USE_AGC)
usrpGain = 1.00                         ; Gain factor when usrpAudio =
AUDIO_USE_GAIN (0.0 to 5.0) (1.0 = AUDIO_UNITY)
usrpAgc = -16,10,1500                    ; Set the agc threshold (db),
slope (db) and decay (ms)
tlvAudio = AUDIO_USE_GAIN                  ; Analog -> Digital
(AUDIO_UNITY, AUDIO_USE_GAIN, AUDIO_BPF)
tlvGain = 0.34                          ; 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

[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

And this is Analog_Reflector.json:

{
   "nodeName":"DVSwitch",
   "dmrID":"3138495",
   "abAddress": "127.0.0.1",
   "usrpTxPort": "54103",
   "usrpRxPort": "52103",
   "mobilePort": "13579",
   "wsPort": "443",
   "keyDir": "./ssl/",
   "siteroot": "./arRoot",
   "logFileName": "/var/log/dvswitch/Analog_Reflector.log",
   "logLevel": "2",
   "disallowUnknownClients": false,
   "brokerURL": "mqtt://localhost:1883",
   "rightsMask": "4",
   "autoMute": false,
   "clientModes": ["DMR", "STFU", "DSTAR|D-Star", "NXDN", "P25", "YSF",
"ASL|AllStar", "Intercom"],
   "bridges": {
     "asl": [
       {"node" : "50631", "address" : "127.0.0.1", "rxPort" : "34001",
"txPort" : "32001", "rights" : 3, "amiUserName" : "admin", "amiSecret" :
"HahahahahaYeahSure"}
     ],
     "ab" : [
       {"name" : "DMR",    "address" : "127.0.0.1", "rxPort" : "51100",
"txPort" : "51103", "rights" : 1},
       {"name" : "D-Star", "address" : "127.0.0.1", "rxPort" : "52100",
"txPort" : "52103", "rights" : 1},
       {"name" : "NXDN",   "address" : "127.0.0.1", "rxPort" : "53100",
"txPort" : "53103", "rights" : 1},
       {"name" : "P25",    "address" : "127.0.0.1", "rxPort" : "54100",
"txPort" : "54103", "rights" : 1},
       {"name" : "YSF",    "address" : "127.0.0.1", "rxPort" : "55100",
"txPort" : "55103", "rights" : 1}
     ]
   }
}