A realtime acoustic bat & bird classification system for the Raspberry Pi 4/5 built on BattyBirdNET-Analyzer.
117
stars
2,841
commits
PHP
primary language
Sep 3, 2026
updated
Extended and enhanced fork of BirdNET-Pi for bats, birds or your own fine-tuned classifier (insects, mammals, amphibians, ...). Use with Raspberry Pi 4 or 5 and an Audiomoth or Echo Meter Touch 2 basic or Pro. Other hardware options may work (aarch64 and amd64). Has been ported to work on home assistant or docker. 'Easy' - no Linux skill required - installation option available.
Ever wondered which bat is flying in your yard and when? BattyBirdNET-Pi is readily assembled and will help you getting to know the night and day life around you. Can also be placed remotely with a power source and set to detect birds.
You can listen to and learn to identify bats & birds in your yard or any other place with this setup! Or make your own fine-tuned version for enjoyment or for monitoring of an endangered species.
Keywords: bat detection, automated bat identification, deep learning, machine learning at the edge, raspberry pi, transfer learning, citizen science, acoustic biomonitoring, audiomoth, BirdNET-Pi for bats, BatNET, Fledermaus, Fledermausdetektor, Ortungsrufe, Fledermausrufaufnahmen, Fledermausrufe, Rufanalyse
There are several installations in the US, Germany and the UK that I am aware of. People may take them on and of the network, but here in general:
Germany
Munich, BY BatNet Pi 5: Currently used to track Lesser Horseshoe bats (LBV Banzerhaus) in a roost - not yet available publicly!
Sweden
USA
France
[Toulouse, Occitanie] (https://bird.thibautrey.fr)
Why not add yours, too?
Enjoy! Feel free to use BattyBirdNET-Pi for your acoustic analyses and research. If you do, please cite as:
@misc{Zinck2023,
author = {Zinck, R.D.},
title = {BattyBirdNET-Pi: Automated real-time bat detector},
year = {2023},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/rdz-oss/BattyBirdNET-Pi }}
}
Be aware there is a limitation: you cannot use it to build a commercial system.
LICENSE: http://creativecommons.org/licenses/by-nc-sa/4.0/
Also consider the references at the end of the page.
Overview page
Including stats and spectrograms to 128 kHz
Some hints:
It is easily assembled
You can run the station continuously if you like, e.g. at your home. However, note that the DC/AC power converter of the RasPi (the 'plug') produces a lot of ultrasound noise that triggers the classifier. As there are many versions out there the classifier cannot be trained on the noise of all to avoid that. Also, you will have the noise in the recordings. So use as long a cable to get away from the power source as far as you can. Shield it if you have a way to do that e.g. by a wall. Until another solution is found it is recommended to run the system with a power bank.. This way, you will only have some noise from the RasPi which is not as bad and consistent among setups.
You can plug the RasPi into a power bank, put the entire thing in your backpack and take a walk. Use a 1.2m usb cable for this and point the microphone to where you want. Also, you can connect the RasPi to the WIFI hotspot on your phone. To do that, rename your phone WIFI hotspot to the name and password expected by the RasPi ( the one you configured during installation). You got yourself a nice bat detector for your adventures on foot. Live spectrogram included.
That depends on your purpose. Use your judgement, no guarantees or liability. I would not currently use it for fully automated biomonitoring. That said, in test runs in Munich (October) the error rate was approximately (rough estimate, no science):
In order to get the most out of the system it helps to be aware of a few things. Unfortunately you cannot just assume that a detection is always due to a bat. Essentially, a classification is a suggestion that it is one of these similar groups. Often right - but also expect mismatches in the below categories.
You can use local knowledge to find the most likely species together with the classifier suggestion. Also, you can consult handbooks on bat call identification.
This can be reduced by not entirely avoided. Look at the spectrogram visualization and decide if this is a noise trigger. This is very likely the case during daytime, and it does happen at night. Expect that this happens. There are many sources of such noise:
There are several bat species which make very similar sound which can be hard for experts to manually tell apart. This is also hard for the classifier. Expect that the classifier identifies both species the call might have originated from. The more likely one will be identified more often, but you need to check with an expert or consult expert materials yourself. Bats in Europe which have similar calls include, but are not limited to:
so expect that there is a certain degree of overlap between the species or two or more present in a sample.
A quick overview for a first orientation. Bats shift up or downwards depending also on each others presence and the environment. Highest energy is the lightest color in the spectrogram. More detailed information in German, but many illustrations and tables that are understandable:
| Echolocation frequency (max energy) | Common name | Species |
|---|---|---|
| 20-25 kHz | Noctule | Nyctalus noctula |
| 25 kHz | Leislers | Nyctalus leisleri |
| 27 kHz | Serotine | Eptisecus serotinus |
| 28 kHz | Vespertilio murinus | Part-coloured bat |
| 32 kHz | Eptisecus nilssoni | Northern bat |
| 32 kHz | Barbastelle | Barbastella barbastellus |
| 35kHz | Mouse eared bat | Myotis myotis |
| 39 kHz | Nathusius pipistrelle | Pipistrellus nathusii |
| 36-40 kHz | Kuhls pipistrelle | Pioistrellus kuhlii |
| 43-46 kHz | Alcathoe | Myotis alcathoe |
| 45 kHz | Common pipistrelle | Pipistrellus pipistrellus |
| 45 kHz | Whiskered | Myotis mystacinus |
| 45 kHz | Brandts | Myotis brandtii |
| 45 kHz | Daubentons | Myotis daubentonii |
| 45-50 kHz | Brown long-eared | Plecotus auritus |
| 45-50 kHz | Grey long-eared | Plecotus austriacus |
| 50 kHz | Natterers | Myotis natteri |
| 50 kHz | Bechsteins | Myotis bechsteinii |
| 55 kHz | Soprano pipistrelle | Pipistrellus pygmaeus |
| 80 kHz | Greater Horseshoe | Rhinolophus ferrumequinum |
| 108 kHz | Lesser Horseshoe | Rhinolophus hipposideros |
More information: Eastern US
| Echolocation frequency (max energy) | Common name | Species |
|---|---|---|
| 21 kHz | Hoary bat | Lasiurus cinereus |
| 28 kHz | Free–tailed bat | Tadarida brasiliensis |
| 29 kHz | Northern yellow bat | Lasiurus intermedius |
| 29 kHz | Silver–haired bat | Lasionycteris noctivagans |
| 32 kHz | Big brown bat | Eptesicus fuscus |
| 31 kHz | Townsend’s big–eared bat | Corynorhinus townsendii |
| 33 kHz | Rafinesque’s big–eared bat | Cornorhinus rafinesquii |
| 40 kHz | Evening bat | Nycticeius humeralis |
| 43 kHz | Seminole bat | Lasiurus seminolus |
| 44 kHz | Little brown bat | Myotis lucifugus |
| 44 kHz | Tri-colored bat | Perimyotis subflavus |
| 44 kHz | EasternRed Bat | Lasiurus borealis |
| 44 kHz | Indiana bat | Myotis sodalis |
| 46 kHz | South-eastern myotis | Myotis austroriparius |
| 48 kHz | Gray bat | Myotis grisescens |
| 49 kHz | Eastern small–footed myotis | Myotis leibii |
| 51 kHz | Northern long-eared myotis | Myotis septentrionalis |
More information: Western US
| Echolocation frequency (max energy) | Common name | Species |
|---|---|---|
| 12.5 kHz | Spotted bat | Euderma maculatum |
| 13 kHz | Mastiff bat | Eumops perotis |
| 22 kHz | Hoary bat | Lasiurus cinereus |
| 25 kHz | Big freetailed / pocketed bats | Nyctinomops spp. |
| 28 kHz | free–tailed bat | Tadarida brasiliensis |
| 29 kHz | Silver–haired bat | Lasionycteris noctivagans |
| 30 kHz | Fringed myotis | Myotis thysanodes |
| 31 kHz | Townsend’s big–eared bat | Corynorhinus townsendii |
| 32 kHz | Pallid bat | Antrozous pallidus |
| 32 kHz | Big brown bat | Eptesicus fuscus |
| 37 kHz | Western yellow bat | Lasiurus xanthinus |
| 39 kHz | Long–eared myotis | Myotis evotis |
| 42 kHz | Western red bat | Lasiurus blossevillii |
| 44 kHz | Little brown bat | Myotis lucifugus |
| 48 kHz | Hairy–winged myotis | Myotis volans |
| 48 kHz | Canyon bat (western pip.) | Parastrellus hesperus |
| 49 kHz | Small–footed myotis | Myotis ciliolabrum |
| 53 kHz | California myotis | Myotis californicus |
| 55 kHz | Yuma myotis | Myotis yumanensis |
An 'easy' install method is described here ( no Linux know-how required): Installation.md. You will need to download an image with pre-installed BattyBirdNET-Pi: Latest image
If you like you can alternatively use the 'regular' method:
curl -s https://raw.githubusercontent.com/rdz-oss/BattyBirdNET-Pi/main/newinstaller.sh | bash
The operating system is now updated, two repositories are pulled from github, files are copied for the automation of services, the webserver setup etc. Might take a few minutes. When done, it will reboot. If you see a bat flying in the middle of the WbUI - you have installed BattyBirdNET-Pi.
You can connect to the WebUI via your browser if you are in the same WIFI network. It should show up under http://name-you-gave-it.local . This sometimes does not work depending on your router configuration. You can look up the ip address given to the BattyBirdNET-Pi in your router and call that directly from the browser, e.g. http://192.168.178.XX . Alternatively, tools like Ning (https://f-droid.org/packages/de.csicar.ning/) on your smartphone will list all the devices in your network. The BattyBirdNET-Pi should show up.
Via UI: "Tools" > "System Controls" > "Update". On commandline
/usr/local/bin/update_birdnet.sh
/usr/local/bin/uninstall.sh && cd ~ && rm -drf BirdNET-Pi
Should you want to change the branch you are on (default is 'main') you can use
git fetch
git pull origin 'branchname'
There are two systems installed BattyBirdNET-Pi and BattyBirdNET-Analyzer. You can set a preferred branch for each individually.
You can set several options under 'Tools - Settings - Advanced Settings' (default user is 'birdnet', password also 'birdnet') including
sudo passwd
sudo apt-get install ufw
sudo ufw allow ssh
sudo ufw allow https
sudo ufw enable
sudo apt-get update && sudo apt-get upgrade -y
If you are not comfortable on the command line you can use the Webinterface (Tools- File Manager) and navigate to the folders
### Save the detections database and extracted calls
/home/bat/BirdNET-Pi/scripts/birds.db
/home/bat/BirdSongs/Extracted/By_Date/
If you are comfortable with using the command line you can setup rsync to either push data from the Pi to a NAS or cloud storage ( e.g. S3) or to remotely log into the Pi and pull the data to a computer or NAS. For example, pulling the data from the Pi onto your computer (you can change the ssh port number as needed)
### Save the detections database
sshpass -p your_passwd rsync -a -P -e "ssh -p 22" bat_user@byour_pis_ip_or_url:/home/bat/BirdNET-Pi/scripts/birds.db /your/local/storage/path
### Save the extracted calls data
sshpass -p your_passwd rsync -a -P -e "ssh -p 22" at_user@byour_pis_ip_or_url:/home/bat/BirdSongs/Extracted/By_Date/ /your/local/storage/path/recordings
The simplest way to automate this procedure is via cron. Make your backup script executable and add a line to the crontab
#! /bin/bash
### Save the detections database
sshpass -p your_passwd rsync -a -P -e "ssh -p 22" bat_user@byour_pis_ip_or_url:/home/bat/BirdNET-Pi/scripts/birds.db /your/local/storage/path
### Save the extracted calls data
sshpass -p your_passwd rsync -a -P -e "ssh -p 22" at_user@byour_pis_ip_or_url:/home/bat/BirdSongs/Extracted/By_Date/ /your/local/storage/path/recordings
If you are not comfortable with cleartext passwords, you can write it in a file (set it to chmod 0400 pass_file) and use 'sshpass -f pass_file ...'' . For automation, 'chmod +x your_backup_script.sh' and use 'crontab -e' to add your job. For example, if it should back up at 2:30am every day, that line (add with crontab -e) would be
30 2 * * * /path/to/your_backup_script.sh
You can also copy your data to an S3 object store bucket in the public cloud, i.e. your Pi pushes the data at regular intervals to cloud storage. BattyBirdNET-Pi now includes an automated S3 backup feature using rclone.
This feature automatically backs up your detections database to an S3-compatible provider (e.g., OVH, IONOS) on a daily schedule. It also includes a "watchdog" service that checks for internet connectivity; if your Pi was offline for a while, it will trigger a backup as soon as it reconnects.
1. One-time setup (SSH):
First, install rclone and configure your cloud provider.
sudo apt-get install rclone
rclone config
Follow the prompts to add your S3 provider (e.g., OVH or IONOS). Note the Remote Name you use during this setup (e.g., OVHBucket).
2. Configure in Web UI:
db/).02:00).The system will automatically set up the necessary systemd timers. You can test the backup without uploading by running:
sudo ~/BirdNET-Pi/scripts/backup_detections.sh --dry-run
Note: If you change the backup time or watchdog interval in the UI, the system will automatically update the schedule.
After saving the data (see above), you can delete folders form the past e.g. via the 'Tools - File Manager'.
### Extreacted calls by date are here
/home/bat/BirdSongs/Extracted/By_Date/
This will make some 'Best recordings' unavailable. The system can be set to automatically delete old data when the disk runs full (Tools-Settings), yet I have found that to be buggy.
The system consists of several systemd services that use/call each other, python scripts as well as an squlite database and a web UI (php/java script). Some useful commands to check if services are up and their status.
# Get the logs from some systemd services
journalctl -eu birdnet_analysis -u birdnet_server -u batnet_server | sudo tee -a /var/log/syslog
cat /var/log/syslog | grep error
# Are the APIs up?
ss -nltp
# A script with comprehensive information
/usr/local/bin/print_diagnostic_info.sh
Audio
cat /proc/asound/cards
Check if settings are correct in /etc/asound.conf with above info and change defaults.pcm.card defaults.ctl.card to the correct values if necessary:
sudo nano /etc/asound.conf
add the defaults (replace '1' by the number you found for your card):
defaults.pcm.card 1
defaults.ctl.card 1
FROMMOLT, KARL-HEINZ. "The archive of animal sounds at the Humboldt-University of Berlin." Bioacoustics 6.4 (1996): 293-296.
Görföl, Tamás, et al. "ChiroVox: a public library of bat calls." PeerJ 10 (2022): e12445.
Gotthold, B., Khalighifar, A., Straw, B.R., and Reichert, B.E., 2022, Training dataset for NABat Machine Learning V1.0: U.S. Geological Survey data release, https://doi.org/10.5066/P969TX8F.
Kahl, Stefan, et al. "BirdNET: A deep learning solution for avian diversity monitoring." Ecological Informatics 61 (2021): 101236.
https://www.museumfuernaturkunde.berlin/en/science/animal-sound-archive
https://www.sciencebase.gov/catalog/item/627ed4b2d34e3bef0c9a2f30
https://github.com/kahst/BirdNET-Analyzer
https://github.com/mcguirepr89/BirdNET-Pi
https://github.com/cloudedbats/cloudedbats_wurb_2024
https://github.com/Taslim-M/Bat2Web
https://www.bto.org/our-science/products-and-technologies/bto-acoustic-pipeline
https://www.wsl.ch/de/services-produkte/batscope/
(top 30 of 42)
PHP
53.2%
JavaScript
30.9%
Shell
8.2%
Python
5.6%
HTML
1.2%
A realtime acoustic bat & bird classification system for the Raspberry Pi 4/5 built on BattyBirdNET-Analyzer.
117
stars
2,841
commits
PHP
primary language
Sep 3, 2026
updated
Extended and enhanced fork of BirdNET-Pi for bats, birds or your own fine-tuned classifier (insects, mammals, amphibians, ...). Use with Raspberry Pi 4 or 5 and an Audiomoth or Echo Meter Touch 2 basic or Pro. Other hardware options may work (aarch64 and amd64). Has been ported to work on home assistant or docker. 'Easy' - no Linux skill required - installation option available.
Ever wondered which bat is flying in your yard and when? BattyBirdNET-Pi is readily assembled and will help you getting to know the night and day life around you. Can also be placed remotely with a power source and set to detect birds.
You can listen to and learn to identify bats & birds in your yard or any other place with this setup! Or make your own fine-tuned version for enjoyment or for monitoring of an endangered species.
Keywords: bat detection, automated bat identification, deep learning, machine learning at the edge, raspberry pi, transfer learning, citizen science, acoustic biomonitoring, audiomoth, BirdNET-Pi for bats, BatNET, Fledermaus, Fledermausdetektor, Ortungsrufe, Fledermausrufaufnahmen, Fledermausrufe, Rufanalyse
There are several installations in the US, Germany and the UK that I am aware of. People may take them on and of the network, but here in general:
Germany
Munich, BY BatNet Pi 5: Currently used to track Lesser Horseshoe bats (LBV Banzerhaus) in a roost - not yet available publicly!
Sweden
USA
France
[Toulouse, Occitanie] (https://bird.thibautrey.fr)
Why not add yours, too?
Enjoy! Feel free to use BattyBirdNET-Pi for your acoustic analyses and research. If you do, please cite as:
@misc{Zinck2023,
author = {Zinck, R.D.},
title = {BattyBirdNET-Pi: Automated real-time bat detector},
year = {2023},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/rdz-oss/BattyBirdNET-Pi }}
}
Be aware there is a limitation: you cannot use it to build a commercial system.
LICENSE: http://creativecommons.org/licenses/by-nc-sa/4.0/
Also consider the references at the end of the page.
Overview page
Including stats and spectrograms to 128 kHz
Some hints:
It is easily assembled
You can run the station continuously if you like, e.g. at your home. However, note that the DC/AC power converter of the RasPi (the 'plug') produces a lot of ultrasound noise that triggers the classifier. As there are many versions out there the classifier cannot be trained on the noise of all to avoid that. Also, you will have the noise in the recordings. So use as long a cable to get away from the power source as far as you can. Shield it if you have a way to do that e.g. by a wall. Until another solution is found it is recommended to run the system with a power bank.. This way, you will only have some noise from the RasPi which is not as bad and consistent among setups.
You can plug the RasPi into a power bank, put the entire thing in your backpack and take a walk. Use a 1.2m usb cable for this and point the microphone to where you want. Also, you can connect the RasPi to the WIFI hotspot on your phone. To do that, rename your phone WIFI hotspot to the name and password expected by the RasPi ( the one you configured during installation). You got yourself a nice bat detector for your adventures on foot. Live spectrogram included.
That depends on your purpose. Use your judgement, no guarantees or liability. I would not currently use it for fully automated biomonitoring. That said, in test runs in Munich (October) the error rate was approximately (rough estimate, no science):
In order to get the most out of the system it helps to be aware of a few things. Unfortunately you cannot just assume that a detection is always due to a bat. Essentially, a classification is a suggestion that it is one of these similar groups. Often right - but also expect mismatches in the below categories.
You can use local knowledge to find the most likely species together with the classifier suggestion. Also, you can consult handbooks on bat call identification.
This can be reduced by not entirely avoided. Look at the spectrogram visualization and decide if this is a noise trigger. This is very likely the case during daytime, and it does happen at night. Expect that this happens. There are many sources of such noise:
There are several bat species which make very similar sound which can be hard for experts to manually tell apart. This is also hard for the classifier. Expect that the classifier identifies both species the call might have originated from. The more likely one will be identified more often, but you need to check with an expert or consult expert materials yourself. Bats in Europe which have similar calls include, but are not limited to:
so expect that there is a certain degree of overlap between the species or two or more present in a sample.
A quick overview for a first orientation. Bats shift up or downwards depending also on each others presence and the environment. Highest energy is the lightest color in the spectrogram. More detailed information in German, but many illustrations and tables that are understandable:
| Echolocation frequency (max energy) | Common name | Species |
|---|---|---|
| 20-25 kHz | Noctule | Nyctalus noctula |
| 25 kHz | Leislers | Nyctalus leisleri |
| 27 kHz | Serotine | Eptisecus serotinus |
| 28 kHz | Vespertilio murinus | Part-coloured bat |
| 32 kHz | Eptisecus nilssoni | Northern bat |
| 32 kHz | Barbastelle | Barbastella barbastellus |
| 35kHz | Mouse eared bat | Myotis myotis |
| 39 kHz | Nathusius pipistrelle | Pipistrellus nathusii |
| 36-40 kHz | Kuhls pipistrelle | Pioistrellus kuhlii |
| 43-46 kHz | Alcathoe | Myotis alcathoe |
| 45 kHz | Common pipistrelle | Pipistrellus pipistrellus |
| 45 kHz | Whiskered | Myotis mystacinus |
| 45 kHz | Brandts | Myotis brandtii |
| 45 kHz | Daubentons | Myotis daubentonii |
| 45-50 kHz | Brown long-eared | Plecotus auritus |
| 45-50 kHz | Grey long-eared | Plecotus austriacus |
| 50 kHz | Natterers | Myotis natteri |
| 50 kHz | Bechsteins | Myotis bechsteinii |
| 55 kHz | Soprano pipistrelle | Pipistrellus pygmaeus |
| 80 kHz | Greater Horseshoe | Rhinolophus ferrumequinum |
| 108 kHz | Lesser Horseshoe | Rhinolophus hipposideros |
More information: Eastern US
| Echolocation frequency (max energy) | Common name | Species |
|---|---|---|
| 21 kHz | Hoary bat | Lasiurus cinereus |
| 28 kHz | Free–tailed bat | Tadarida brasiliensis |
| 29 kHz | Northern yellow bat | Lasiurus intermedius |
| 29 kHz | Silver–haired bat | Lasionycteris noctivagans |
| 32 kHz | Big brown bat | Eptesicus fuscus |
| 31 kHz | Townsend’s big–eared bat | Corynorhinus townsendii |
| 33 kHz | Rafinesque’s big–eared bat | Cornorhinus rafinesquii |
| 40 kHz | Evening bat | Nycticeius humeralis |
| 43 kHz | Seminole bat | Lasiurus seminolus |
| 44 kHz | Little brown bat | Myotis lucifugus |
| 44 kHz | Tri-colored bat | Perimyotis subflavus |
| 44 kHz | EasternRed Bat | Lasiurus borealis |
| 44 kHz | Indiana bat | Myotis sodalis |
| 46 kHz | South-eastern myotis | Myotis austroriparius |
| 48 kHz | Gray bat | Myotis grisescens |
| 49 kHz | Eastern small–footed myotis | Myotis leibii |
| 51 kHz | Northern long-eared myotis | Myotis septentrionalis |
More information: Western US
| Echolocation frequency (max energy) | Common name | Species |
|---|---|---|
| 12.5 kHz | Spotted bat | Euderma maculatum |
| 13 kHz | Mastiff bat | Eumops perotis |
| 22 kHz | Hoary bat | Lasiurus cinereus |
| 25 kHz | Big freetailed / pocketed bats | Nyctinomops spp. |
| 28 kHz | free–tailed bat | Tadarida brasiliensis |
| 29 kHz | Silver–haired bat | Lasionycteris noctivagans |
| 30 kHz | Fringed myotis | Myotis thysanodes |
| 31 kHz | Townsend’s big–eared bat | Corynorhinus townsendii |
| 32 kHz | Pallid bat | Antrozous pallidus |
| 32 kHz | Big brown bat | Eptesicus fuscus |
| 37 kHz | Western yellow bat | Lasiurus xanthinus |
| 39 kHz | Long–eared myotis | Myotis evotis |
| 42 kHz | Western red bat | Lasiurus blossevillii |
| 44 kHz | Little brown bat | Myotis lucifugus |
| 48 kHz | Hairy–winged myotis | Myotis volans |
| 48 kHz | Canyon bat (western pip.) | Parastrellus hesperus |
| 49 kHz | Small–footed myotis | Myotis ciliolabrum |
| 53 kHz | California myotis | Myotis californicus |
| 55 kHz | Yuma myotis | Myotis yumanensis |
An 'easy' install method is described here ( no Linux know-how required): Installation.md. You will need to download an image with pre-installed BattyBirdNET-Pi: Latest image
If you like you can alternatively use the 'regular' method:
curl -s https://raw.githubusercontent.com/rdz-oss/BattyBirdNET-Pi/main/newinstaller.sh | bash
The operating system is now updated, two repositories are pulled from github, files are copied for the automation of services, the webserver setup etc. Might take a few minutes. When done, it will reboot. If you see a bat flying in the middle of the WbUI - you have installed BattyBirdNET-Pi.
You can connect to the WebUI via your browser if you are in the same WIFI network. It should show up under http://name-you-gave-it.local . This sometimes does not work depending on your router configuration. You can look up the ip address given to the BattyBirdNET-Pi in your router and call that directly from the browser, e.g. http://192.168.178.XX . Alternatively, tools like Ning (https://f-droid.org/packages/de.csicar.ning/) on your smartphone will list all the devices in your network. The BattyBirdNET-Pi should show up.
Via UI: "Tools" > "System Controls" > "Update". On commandline
/usr/local/bin/update_birdnet.sh
/usr/local/bin/uninstall.sh && cd ~ && rm -drf BirdNET-Pi
Should you want to change the branch you are on (default is 'main') you can use
git fetch
git pull origin 'branchname'
There are two systems installed BattyBirdNET-Pi and BattyBirdNET-Analyzer. You can set a preferred branch for each individually.
You can set several options under 'Tools - Settings - Advanced Settings' (default user is 'birdnet', password also 'birdnet') including
sudo passwd
sudo apt-get install ufw
sudo ufw allow ssh
sudo ufw allow https
sudo ufw enable
sudo apt-get update && sudo apt-get upgrade -y
If you are not comfortable on the command line you can use the Webinterface (Tools- File Manager) and navigate to the folders
### Save the detections database and extracted calls
/home/bat/BirdNET-Pi/scripts/birds.db
/home/bat/BirdSongs/Extracted/By_Date/
If you are comfortable with using the command line you can setup rsync to either push data from the Pi to a NAS or cloud storage ( e.g. S3) or to remotely log into the Pi and pull the data to a computer or NAS. For example, pulling the data from the Pi onto your computer (you can change the ssh port number as needed)
### Save the detections database
sshpass -p your_passwd rsync -a -P -e "ssh -p 22" bat_user@byour_pis_ip_or_url:/home/bat/BirdNET-Pi/scripts/birds.db /your/local/storage/path
### Save the extracted calls data
sshpass -p your_passwd rsync -a -P -e "ssh -p 22" at_user@byour_pis_ip_or_url:/home/bat/BirdSongs/Extracted/By_Date/ /your/local/storage/path/recordings
The simplest way to automate this procedure is via cron. Make your backup script executable and add a line to the crontab
#! /bin/bash
### Save the detections database
sshpass -p your_passwd rsync -a -P -e "ssh -p 22" bat_user@byour_pis_ip_or_url:/home/bat/BirdNET-Pi/scripts/birds.db /your/local/storage/path
### Save the extracted calls data
sshpass -p your_passwd rsync -a -P -e "ssh -p 22" at_user@byour_pis_ip_or_url:/home/bat/BirdSongs/Extracted/By_Date/ /your/local/storage/path/recordings
If you are not comfortable with cleartext passwords, you can write it in a file (set it to chmod 0400 pass_file) and use 'sshpass -f pass_file ...'' . For automation, 'chmod +x your_backup_script.sh' and use 'crontab -e' to add your job. For example, if it should back up at 2:30am every day, that line (add with crontab -e) would be
30 2 * * * /path/to/your_backup_script.sh
You can also copy your data to an S3 object store bucket in the public cloud, i.e. your Pi pushes the data at regular intervals to cloud storage. BattyBirdNET-Pi now includes an automated S3 backup feature using rclone.
This feature automatically backs up your detections database to an S3-compatible provider (e.g., OVH, IONOS) on a daily schedule. It also includes a "watchdog" service that checks for internet connectivity; if your Pi was offline for a while, it will trigger a backup as soon as it reconnects.
1. One-time setup (SSH):
First, install rclone and configure your cloud provider.
sudo apt-get install rclone
rclone config
Follow the prompts to add your S3 provider (e.g., OVH or IONOS). Note the Remote Name you use during this setup (e.g., OVHBucket).
2. Configure in Web UI:
db/).02:00).The system will automatically set up the necessary systemd timers. You can test the backup without uploading by running:
sudo ~/BirdNET-Pi/scripts/backup_detections.sh --dry-run
Note: If you change the backup time or watchdog interval in the UI, the system will automatically update the schedule.
After saving the data (see above), you can delete folders form the past e.g. via the 'Tools - File Manager'.
### Extreacted calls by date are here
/home/bat/BirdSongs/Extracted/By_Date/
This will make some 'Best recordings' unavailable. The system can be set to automatically delete old data when the disk runs full (Tools-Settings), yet I have found that to be buggy.
The system consists of several systemd services that use/call each other, python scripts as well as an squlite database and a web UI (php/java script). Some useful commands to check if services are up and their status.
# Get the logs from some systemd services
journalctl -eu birdnet_analysis -u birdnet_server -u batnet_server | sudo tee -a /var/log/syslog
cat /var/log/syslog | grep error
# Are the APIs up?
ss -nltp
# A script with comprehensive information
/usr/local/bin/print_diagnostic_info.sh
Audio
cat /proc/asound/cards
Check if settings are correct in /etc/asound.conf with above info and change defaults.pcm.card defaults.ctl.card to the correct values if necessary:
sudo nano /etc/asound.conf
add the defaults (replace '1' by the number you found for your card):
defaults.pcm.card 1
defaults.ctl.card 1
FROMMOLT, KARL-HEINZ. "The archive of animal sounds at the Humboldt-University of Berlin." Bioacoustics 6.4 (1996): 293-296.
Görföl, Tamás, et al. "ChiroVox: a public library of bat calls." PeerJ 10 (2022): e12445.
Gotthold, B., Khalighifar, A., Straw, B.R., and Reichert, B.E., 2022, Training dataset for NABat Machine Learning V1.0: U.S. Geological Survey data release, https://doi.org/10.5066/P969TX8F.
Kahl, Stefan, et al. "BirdNET: A deep learning solution for avian diversity monitoring." Ecological Informatics 61 (2021): 101236.
https://www.museumfuernaturkunde.berlin/en/science/animal-sound-archive
https://www.sciencebase.gov/catalog/item/627ed4b2d34e3bef0c9a2f30
https://github.com/kahst/BirdNET-Analyzer
https://github.com/mcguirepr89/BirdNET-Pi
https://github.com/cloudedbats/cloudedbats_wurb_2024
https://github.com/Taslim-M/Bat2Web
https://www.bto.org/our-science/products-and-technologies/bto-acoustic-pipeline
https://www.wsl.ch/de/services-produkte/batscope/
(top 30 of 42)
PHP
53.2%
JavaScript
30.9%
Shell
8.2%
Python
5.6%
HTML
1.2%