I have been running OP25 on a Raspberry 3B+ (Buster) for a while. Audio is available at the AV jack, also on the local LAN via LiquidSoap and Icecast.
Regarding BlueTooth my BT speaker connects just fine and I can shoot a wave file to it and it plays using aplay command with the -D parameter. Previously I was able to play audio from a browser page on the BT speaker. That's not working now.
If I try to "connect" to the BT speaker using the audio icon (upper right corner) I get a message back "Failed to connect to Bluetooth device - Device not found by PulseAudio" (the bluetooth connection from the Pi to the BT speaker happens at boot via the /etc/rc.local).
I have tried various combinations in OP25.liq of commenting/uncommenting the ALSA and PulseAudio lines to get the OP25 audio to the BTspeaker. Is there another line I need to add to OP25.liq?
I wonder if I have some linkage missing in the BlueAlsa & PulseAudio connection.
my OP25.sh
./rx.py --nocrypt --args 'rtl' -N 'LNA:49' -s 1000000 -o 0 -d +200 -x 2 -f 853.9375e6 -T trunk.tsv -q -1 -V -2 -w 2> stderr-stream0.55 -v -10 -l http:0.0.0.0:8080
my OP25.liq
#!/usr/bin/liquidsoap
# Example liquidsoap streaming from op25 to icecast
# (c) 2019-2021 gnorbury@bondcar.com, wllmbecks@gmail.com
#
set("log.stdout", true)
set("log.file", false)
set("log.level", 1)
# Make the native sample rate compatible with op25
set("frame.audio.samplerate", 8000)
input = mksafe(input.external(buffer=0.25, channels=2, samplerate=8000, restart_on_error=false, "./audio.py -x 1.5 -s"))
# 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 = compress(input, attack = 2.0, gain = 0.0, knee = 13.0, ratio = 2.0, release = 12.3, threshold = -18.0, rms_window = 1.0)
# Normalization
input = normalize(input, 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="op25", genre="Public Safety", url="", fallible=false, icy_metadata="false", host="localhost", port=8000, mount="op25", password="*******", mean(input))
Regarding BlueTooth my BT speaker connects just fine and I can shoot a wave file to it and it plays using aplay command with the -D parameter. Previously I was able to play audio from a browser page on the BT speaker. That's not working now.
If I try to "connect" to the BT speaker using the audio icon (upper right corner) I get a message back "Failed to connect to Bluetooth device - Device not found by PulseAudio" (the bluetooth connection from the Pi to the BT speaker happens at boot via the /etc/rc.local).
I have tried various combinations in OP25.liq of commenting/uncommenting the ALSA and PulseAudio lines to get the OP25 audio to the BTspeaker. Is there another line I need to add to OP25.liq?
I wonder if I have some linkage missing in the BlueAlsa & PulseAudio connection.
my OP25.sh
./rx.py --nocrypt --args 'rtl' -N 'LNA:49' -s 1000000 -o 0 -d +200 -x 2 -f 853.9375e6 -T trunk.tsv -q -1 -V -2 -w 2> stderr-stream0.55 -v -10 -l http:0.0.0.0:8080
my OP25.liq
#!/usr/bin/liquidsoap
# Example liquidsoap streaming from op25 to icecast
# (c) 2019-2021 gnorbury@bondcar.com, wllmbecks@gmail.com
#
set("log.stdout", true)
set("log.file", false)
set("log.level", 1)
# Make the native sample rate compatible with op25
set("frame.audio.samplerate", 8000)
input = mksafe(input.external(buffer=0.25, channels=2, samplerate=8000, restart_on_error=false, "./audio.py -x 1.5 -s"))
# 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 = compress(input, attack = 2.0, gain = 0.0, knee = 13.0, ratio = 2.0, release = 12.3, threshold = -18.0, rms_window = 1.0)
# Normalization
input = normalize(input, 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="op25", genre="Public Safety", url="", fallible=false, icy_metadata="false", host="localhost", port=8000, mount="op25", password="*******", mean(input))