diff --git a/birdnet-pi/CHANGELOG.md b/birdnet-pi/CHANGELOG.md
index 71e629098..922307cf0 100644
--- a/birdnet-pi/CHANGELOG.md
+++ b/birdnet-pi/CHANGELOG.md
@@ -1,7 +1,5 @@
-## 2025.03.24 (21-03-2025)
-- Minor bugs fixed
-## 2025.03.23 (15-03-2025)
-- Minor bugs fixed
+- [DOCKER] Enable pulseaudio if HA is not used
+
## 2025.03.22 (13-03-2025)
- [ALL] Use Nachtzuster universal tflite 2.17.1 runtimes allowing full compatibility with non avx cpu
diff --git a/birdnet-pi/config.json b/birdnet-pi/config.json
index 6775c5b92..6803f7d65 100644
--- a/birdnet-pi/config.json
+++ b/birdnet-pi/config.json
@@ -121,6 +121,6 @@
"udev": true,
"url": "https://github.com/alexbelgium/hassio-addons/tree/master/birdnet-pi",
"usb": true,
- "version": "2025.03.24",
+ "version": "2025.03.25",
"video": true
}
diff --git a/birdnet-pi/rootfs/etc/cont-init.d/31-checks.sh b/birdnet-pi/rootfs/etc/cont-init.d/31-config_checks.sh
old mode 100755
new mode 100644
similarity index 100%
rename from birdnet-pi/rootfs/etc/cont-init.d/31-checks.sh
rename to birdnet-pi/rootfs/etc/cont-init.d/31-config_checks.sh
diff --git a/birdnet-pi/rootfs/etc/cont-init.d/71-newfeatures.sh b/birdnet-pi/rootfs/etc/cont-init.d/71-newfeatures.sh
deleted file mode 100755
index 2523d4c3e..000000000
--- a/birdnet-pi/rootfs/etc/cont-init.d/71-newfeatures.sh
+++ /dev/null
@@ -1,66 +0,0 @@
-#!/command/with-contenv bashio
-# shellcheck shell=bash
-set -e
-
-##################
-# ALLOW RESTARTS #
-##################
-
-if [[ "${BASH_SOURCE[0]}" == /etc/cont-init.d/* ]]; then
- mkdir -p /etc/scripts-init
- sed -i "s|/etc/cont-init.d|/etc/scripts-init|g" /ha_entrypoint.sh
- sed -i "/ rm/d" /ha_entrypoint.sh
- cp "${BASH_SOURCE[0]}" /etc/scripts-init/
-fi
-
-################
-# ADD FEATURES #
-################
-
-bashio::log.info "Adding optional features"
-
-# Enable the Processed folder
-#############################
-
-if bashio::config.true "PROCESSED_FOLDER_ENABLED" && ! grep -q "processed_size" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py; then
- echo "... Enabling the Processed folder : the last 15 wav files will be stored there"
- # Adapt config.php
- sed -i "/GET\[\"info_site\"\]/a\ \$processed_size = \$_GET\[\"processed_size\"\];" "$HOME"/BirdNET-Pi/scripts/config.php
- sed -i "/\$contents = file_get_contents/a\ \$contents = preg_replace\(\"/PROCESSED_SIZE=\.\*/\", \"PROCESSED_SIZE=\$processed_size\", \$contents\);" "$HOME"/BirdNET-Pi/scripts/config.php
- sed -i "/\"success\"/i
" "$HOME"/BirdNET-Pi/scripts/config.php
- sed -i "/\"success\"/i\
" "$HOME"/BirdNET-Pi/scripts/config.php
- # Adapt birdnet_analysis.py - move_to_processed
- sed -i "/log.info('handle_reporting_queue done')/a\ os.remove(files.pop(0))" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
- sed -i "/log.info('handle_reporting_queue done')/a\ while len(files) > processed_size:" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
- sed -i "/log.info('handle_reporting_queue done')/a\ files.sort(key=os.path.getmtime)" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
- sed -i "/log.info('handle_reporting_queue done')/a\ files = glob.glob(os.path.join(processed_dir, '*'))" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
- sed -i "/log.info('handle_reporting_queue done')/a\ os.rename(file_name, os.path.join(processed_dir, os.path.basename(file_name)))" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
- sed -i "/log.info('handle_reporting_queue done')/a\ processed_dir = os.path.join(get_settings()['RECS_DIR'], 'Processed')" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
- sed -i "/log.info('handle_reporting_queue done')/a\def move_to_processed(file_name, processed_size):" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
- sed -i "/log.info('handle_reporting_queue done')/a\ " "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
- # Adapt birdnet_analysis.py - get_processed_size
- sed -i "/log.info('handle_reporting_queue done')/a\ return 0" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
- sed -i "/log.info('handle_reporting_queue done')/a\ except (ValueError, TypeError):" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
- sed -i "/log.info('handle_reporting_queue done')/a\ return processed_size if isinstance(processed_size, int) else 0" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
- sed -i "/log.info('handle_reporting_queue done')/a\ processed_size = get_settings().getint('PROCESSED_SIZE')" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
- sed -i "/log.info('handle_reporting_queue done')/a\ try:" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
- sed -i "/log.info('handle_reporting_queue done')/a\def get_processed_size():" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
- sed -i "/log.info('handle_reporting_queue done')/a\ " "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
- # Modify calls
- sed -i "/from subprocess import CalledProcessError/a\import glob" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
- sed -i "/from subprocess import CalledProcessError/a\import time" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
- # Modify main code
- sed -i "/os.remove(file.file_name)/i\ processed_size = get_processed_size()" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
- sed -i "/os.remove(file.file_name)/i\ if processed_size > 0:" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
- sed -i "/os.remove(file.file_name)/i\ move_to_processed(file.file_name, processed_size)" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
- sed -i "/os.remove(file.file_name)/i\ else:" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
- sed -i "/os.remove(file.file_name)/c\ os.remove(file.file_name)" "$HOME"/BirdNET-Pi/scripts/birdnet_analysis.py
-fi || true
-
diff --git a/birdnet-pi/rootfs/etc/cont-init.d/81-modifications.sh b/birdnet-pi/rootfs/etc/cont-init.d/81-modifications.sh
index 38c03a0d1..157c18f38 100755
--- a/birdnet-pi/rootfs/etc/cont-init.d/81-modifications.sh
+++ b/birdnet-pi/rootfs/etc/cont-init.d/81-modifications.sh
@@ -32,7 +32,7 @@ if bashio::supervisor.ping 2>/dev/null; then
for file in $(grep -srl "pulseaudio --start" $HOME/BirdNET-Pi/scripts); do
sed -i "s|! pulseaudio --check|pulseaudio --check|g" "$file"
done
-
+
# Check if port 80 is correctly configured
if [ -n "$(bashio::addon.port "80")" ] && [ "$(bashio::addon.port "80")" != 80 ]; then
bashio::log.fatal "The port 80 is enabled, but should still be 80 if you want automatic SSL certificates generation to work."
@@ -134,13 +134,24 @@ if [[ -f "$HOME/BirdNET-Pi/scripts/utils/reporting.py" ]]; then
fi
# Correct timedatectl path
-echo "updating timedatectl path"
+echo "... updating timedatectl path"
if [[ -f /helpers/timedatectl ]]; then
mv /helpers/timedatectl /usr/bin/timedatectl
chown pi:pi /usr/bin/timedatectl
chmod a+x /usr/bin/timedatectl
fi
+# Set RECS_DIR
+echo "... setting RECS_DIR to /tmp"
+grep -rl "RECS_DIR" $HOME | while read -r file; do
+ sed -i "s|conf\['RECS_DIR'\]|'/tmp'|g" "$file"
+ sed -i "s|\$RECS_DIR|/tmp|g" "$file"
+ sed -i "s|\${RECS_DIR}|/tmp|g" "$file"
+ sed -i "/^RECS_DIR=/c RECS_DIR=/tmp" "$file"
+ sed -i "/^\$RECS_DIR=/c \$RECS_DIR=/tmp" "$file"
+done
+mkdir -p /tmp
+
# Correct language labels according to birdnet.conf
echo "... adapting labels according to birdnet.conf"
if export "$(grep "^DATABASE_LANG" /config/birdnet.conf)"; then