Greetings......
I'm attempting to add a 3rd stream on my local network. It functions fine with 2streams , but when I add a 3rd stream I get an error. I'm using op25 with Icecast and liquidsoap. The hardware is a NUC with an i5-8259u, quad core, 2.30ghz, 16 gb ram. All of the syntax appears correct and permissions seem correct. I'm stumped. Suggestions ?
Here is my op25.liq script:
Here is the pertinent part of the error message from op25.liq
And here's my executable start-up script
I'm attempting to add a 3rd stream on my local network. It functions fine with 2streams , but when I add a 3rd stream I get an error. I'm using op25 with Icecast and liquidsoap. The hardware is a NUC with an i5-8259u, quad core, 2.30ghz, 16 gb ram. All of the syntax appears correct and permissions seem correct. I'm stumped. Suggestions ?
Here is my op25.liq script:
Code:
#!/usr/bin/liquidsoap
set("log.stdout", true)
set("log.file", false)
set("log.level", 3)
# Make the native sample rate compatible with op25
set("frame.audio.samplerate", 8000)
input_a = mksafe(input.external(buffer=0.25, channels=2, samplerate=8000, restart_on_error=false, "./audio.py -x 1.5 -s -u 23456"))
input_b = mksafe(input.external(buffer=0.25, channels=2, samplerate=8000, restart_on_error=false, "./audio.py -x 1.5 -s -u 23466"))
input_c = mksafe(input.external(buffer=0.25, channels=2, samplerate=8000, restart_on_error=false, "./audio.py -x 1.5 -s -u 23476"))
# Consider increasing the buffer value on slow systems such as RPi3. e.g. buffer=0.25
# Longer buffer results in less choppy audio but at the expense of increased latency.
# OPTIONAL AUDIO SIGNAL PROCESSING BLOCKS
# Uncomment to enable
#
# High pass filter
#input = filter.iir.butterworth.high(frequency = 200.0, order = 4, input)
# Low pass filter
#input = filter.iir.butterworth.low(frequency = 3250.0, order = 4, input)
# Compression
input_a = compress(input_a, attack = 2.0, gain = 0.0, knee = 13.0, ratio = 2.0, release = 12.3, threshold = -18.0, rms_window = 1.0)
input_b = compress(input_b, attack = 2.0, gain = 0.0, knee = 13.0, ratio = 2.0, release = 12.3, threshold = -18.0, rms_window = 1.0)
input_c = compress(input_c, attack = 2.0, gain = 0.0, knee = 13.0, ratio = 2.0, release = 12.3, threshold = -18.0, rms_window = 1.0)
# Normalization
input_a = normalize(input_a, gain_max = 6.0, gain_min = -6.0, target = -16.0, threshold = -65.0)
input_b = normalize(input_b, gain_max = 6.0, gain_min = -6.0, target = -16.0, threshold = -65.0)
input_c = normalize(input_c, gain_max = 6.0, gain_min = -6.0, target = -16.0, threshold = -65.0)
# LOCAL AUDIO OUTPUT
# Uncomment the appropriate line below to enable local sound
#
# Default audio subsystem
#out (input)
#
# PulseAudio
#output.pulseaudio(input)
#
# ALSA
#output.alsa(input)
# ICECAST STREAMING
# Uncomment to enable output to an icecast server
# Change the "host", "password", and "mount" strings appropriately first!
# For metadata to work properly, the host address given here MUST MATCH the address in op25's meta.json file
#
output.icecast(%mp3(bitrate=16, samplerate=22050, stereo=false), description="psrs", genre="Public Safety", url="", fallible=false, icy_metadata="false", host="localhost", port=8000, mount="psrs", password="hackme", mean(input_a))
output.icecast(%mp3(bitrate=16, samplerate=22050, stereo=false), description="fire", genre="Public Safety", url="", fallible=false, icy_metadata="false", host="localhost", port=8000, mount="fire", password="hackme", mean(input_b))
output.icecast(%mp3(bitrate=16, samplerate=22050, stereo=false), description="wsp", genre="Public Safety", url="", fallible=false, icy_metadata="false", host="localhost", port=8000, mount="wsp", password="hackme", mean(input_c))
Here is the pertinent part of the error message from op25.liq
Code:
2021/03/15 15:56:10 [threads:3] Created thread "generic queue #1".
2021/03/15 15:56:10 [threads:3] Created thread "generic queue #2".
2021/03/15 15:56:10 [input.external_4978:2] Starting process.
2021/03/15 15:56:10 [input.external_4974:2] Starting process.
2021/03/15 15:56:10 [input.external_4970:2] Starting process.
Using Python /usr/bin/python2
Using Python /usr/bin/python2
Using Python /usr/bin/python2
2021/03/15 15:56:10 [wsp:3] Connecting mount wsp for source@localhost...
2021/03/15 15:56:10 [wsp:3] Connection setup was successful.
2021/03/15 15:56:10 [fire:3] Connecting mount fire for source@localhost...
2021/03/15 15:56:10 [fire:3] Connection setup was successful.
2021/03/15 15:56:10 [psrs:3] Connecting mount psrs for source@localhost...
2021/03/15 15:56:10 [psrs:2] Connection failed: could not write data to host: Connection refused in write()
2021/03/15 15:56:10 [psrs:3] Will try again in 3.00 sec.
And here's my executable start-up script
Code:
#! /bin/sh
gnome-terminal -- /bin/bash -c 'cd /home/ron/op25/op25/gr-op25_repeater/apps; ./rx.py --crypt-behavior 2 --args "rtl=1" --gains 'LNA:49' -S 960000 -u 23456 -q 0 -X -v 1 -2 -w -V -T psrs_trunk.tsv 2> stderr_1.2'
gnome-terminal -- /bin/bash -c 'cd /home/ron/op25/op25/gr-op25_repeater/apps; ./rx.py --crypt-behavior 2 --args "rtl=2" --gains 'LNA:49' -S 960000 -u 23466 -q 0 -X -v 1 -2 -w -V -T ss911_trunk.tsv 2> stderr_2.2'
gnome-terminal -- /bin/bash -c 'cd /home/ron/op25/op25/gr-op25_repeater/apps; ./rx.py --crypt-behavior 2 --args "rtl=0" --gains 'LNA:49' -S 960000 -u 23476 -q 0 -X -v 1 -2 -w -V -T wsp_trunk.tsv 2> stderr_3.2'
gnome-terminal -- /bin/bash -c 'cd /home/ron/op25/op25/gr-op25_repeater/apps; ./op25.liq'