OP25 op25 icecast liquidsoap local stream error

Status
Not open for further replies.

rlmurray56

Member
Feed Provider
Joined
Oct 10, 2019
Messages
76
Location
Puyallup, WA
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:
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'
 

wgbecks

Active Member
Joined
Jan 17, 2005
Messages
919
Location
NE Wisconsin
The Icecast default configuration only allows two sources (mountpoints). Edit icecast.xml sudo nano /etc/icecast2/icecast.xml, navigate
down to <limits> and change <sources>2</sources> to <sources>3</sources>, save and exit.

Restart Icecast sudo service icecast2 restart then execute your op25.liq script and you should be good to go.


<icecast>
<!-- location and admin are two arbitrary strings that are e.g. visible
on the server info page of the icecast web interface
(server_version.xsl). -->
<location>Earth</location>
<admin>icemaster@localhost</admin>

<!-- IMPORTANT!
Especially for inexperienced users:
Start out by ONLY changing all passwords and restarting Icecast.
For detailed setup instructions please refer to the documentation.
It's also available here: Documentation and Information — Icecast
-->

<limits>
<clients>100</clients>
<sources>2</sources>
<queue-size>524288</queue-size>
<client-timeout>30</client-timeout>
<header-timeout>15</header-timeout>
<source-timeout>10</source-timeout>
<!-- If enabled, this will provide a burst of data when a client
first connects, thereby significantly reducing the startup
time for listeners that do substantial buffering. However,
it also significantly increases latency between the source
client and listening client. For low-latency setups, you
might want to disable this. -->

Bill
 

rlmurray56

Member
Feed Provider
Joined
Oct 10, 2019
Messages
76
Location
Puyallup, WA
The Icecast default configuration only allows two sources (mountpoints). Edit icecast.xml sudo nano /etc/icecast2/icecast.xml, navigate
down to <limits> and change <sources>2</sources> to <sources>3</sources>, save and exit.

Restart Icecast sudo service icecast2 restart then execute your op25.liq script and you should be good to go.


<icecast>
<!-- location and admin are two arbitrary strings that are e.g. visible
on the server info page of the icecast web interface
(server_version.xsl). -->
<location>Earth</location>
<admin>icemaster@localhost</admin>

<!-- IMPORTANT!
Especially for inexperienced users:
Start out by ONLY changing all passwords and restarting Icecast.
For detailed setup instructions please refer to the documentation.
It's also available here: Documentation and Information — Icecast
-->

<limits>
<clients>100</clients>
<sources>2</sources>
<queue-size>524288</queue-size>
<client-timeout>30</client-timeout>
<header-timeout>15</header-timeout>
<source-timeout>10</source-timeout>
<!-- If enabled, this will provide a burst of data when a client
first connects, thereby significantly reducing the startup
time for listeners that do substantial buffering. However,
it also significantly increases latency between the source
client and listening client. For low-latency setups, you
might want to disable this. -->

Bill

Thank you Bill, that did the trick !!!!
 
Status
Not open for further replies.
Top