{"id":26746800,"url":"https://github.com/umr-ds/birdedge-os","last_synced_at":"2025-10-17T10:32:16.061Z","repository":{"id":99779117,"uuid":"457739533","full_name":"umr-ds/BirdEdge-OS","owner":"umr-ds","description":"open-source software solution for bird song recognition at the network edge","archived":false,"fork":false,"pushed_at":"2022-10-20T19:25:28.000Z","size":224,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":5,"default_branch":"main","last_synced_at":"2024-01-27T17:34:42.469Z","etag":null,"topics":["birdsong","deepstream","jetson-nano","recognition"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/umr-ds.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2022-02-10T10:49:07.000Z","updated_at":"2023-05-06T16:36:42.000Z","dependencies_parsed_at":"2023-03-12T10:01:48.041Z","dependency_job_id":null,"html_url":"https://github.com/umr-ds/BirdEdge-OS","commit_stats":{"total_commits":16,"total_committers":1,"mean_commits":16.0,"dds":0.0,"last_synced_commit":"0aec83aa63e4a7aed8f46373f2828443b35c71c8"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/umr-ds%2FBirdEdge-OS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/umr-ds%2FBirdEdge-OS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/umr-ds%2FBirdEdge-OS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/umr-ds%2FBirdEdge-OS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/umr-ds","download_url":"https://codeload.github.com/umr-ds/BirdEdge-OS/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245999618,"owners_count":20707572,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["birdsong","deepstream","jetson-nano","recognition"],"created_at":"2025-03-28T09:15:34.102Z","updated_at":"2025-10-17T10:32:11.040Z","avatar_url":"https://github.com/umr-ds.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Bird@Edge OS\n\nBird@Edge OS is the operating system running on Bird@Edge Stations which is based on NVIDIA Jetson Nano board. This repository holds configuration files and recipes for creating the Bird@Edge OS image.\n\n## Bird Song Recognition at the Edge\n\nBird@Edge is an Edge AI system for recognizing bird species in audio recordings to support real-time biodiversity monitoring. Bird@Edge is based on embedded edge devices operating in a distributed system to enable efficient, continuous evaluation of soundscapes recorded in forests. If you are interested in our research, [read our paper](https://jonashoechst.de/assets/papers/hoechst2022birdedge.pdf) or watch the talk recorded for [Springer NETYS 2022 conference](https://www.youtube.com/watch?v=reAm4HSyQl8). \n\nSeparate repositories exist for the [machine learning approach](https://github.com/umr-ds/BirdEdge) and for the code running on [Bird@Edge Mic](https://github.com/umr-ds/BirdEdge-Mic).\n\n## Hardware\n\nOur hardware consists of an NVIDIA Jetson Nano device (both the regular and 2 GB variant), a power supply and network connectivity through WiFi and LTE.\n\n![Bird@Edge Hardware components.](misc/birdedge_hardware.png)\n\n## Building Bird@Edge OS\n\nBird@Edge OS is built using [pimod](https://github.com/Nature40/pimod), a tool reconfiguring Single Board Computer System images with an easy, Docker-like configuration file.\n\n### Prerequisites\n\n- Install [docker](https://docs.docker.com/get-docker/) and [docker-compose](https://docs.docker.com/compose/install/). \n- Checkout this repository, as well as its submodules\n\n```\ngit clone git@github.com:umr-ds/BirdAtEdge-OS.git\ncd BirdAtEdge-OS\ngit submodule update --init\n```\n\n### Build Bird@Edge OS Image\n\nTo build your Bird@Edge OS image, follow these steps: \n\n\u003e Note: Jetson Nano and Jetson Nano 2GB are different and require different base images. **In this example the Jetson Nano is used.** \n\n- Run the Base Pifile. It will download the standard image from NVIDIAs server and install deepstream:\n\n```\ndocker-compose run --rm pimod pimod.sh --host-resolv Base-Nano.Pifile\n```\n\n- Run the BirdAtEdge Pifile. It will compile and install the custom software, services and configuration files. \n\n```bash\ndocker-compose run --rm pimod pimod.sh --host-resolv BirdAtEdge-Nano.Pifile\n```\n\n### Flash your image \u0026 Setup Jetson Nano\n\nThe resulting operating system image now needs to be written to an SD card just as it would be done with any other OS image. You may [refer to NVIDIAs manual](https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit#write).\n\nTo setup your Bird@Edge Station the regular [Setup and First Boot](https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit#setup) procedure is required. Please use the headless mode, as the graphical interface is disabled in order to save power. \n\n### Running Bird@Edge OS\n\nThe service running Bird@Edge can be controlled using systemd, i.e. restarting:\n\n```bash\n$ systemctl restart birdedge\n```\n\nLogs can be investigated using `journalctl`:\n\n```bash\n$ journalctl -fu birdedge\nMär 11 15:29:45 pollux systemd[1]: Started BirdEdge.\nMär 11 15:29:49 pollux bash[32515]: INFO:root:Starting BirdEdge Daemon\nMär 11 15:29:49 pollux bash[32515]: DEBUG:asyncio:Using selector: EpollSelector\nMär 11 15:29:49 pollux bash[32515]: DEBUG:root:Discovered ServiceInfo(type='_birdedge._tcp.local.', name='birdclient-f880._birdedge._tcp.local.', addresses=[b'\\n*\\x00\\xb7'], port=80, weight=0, priority=0, server='birdclient-f880.local.', properties={}, interface_index=None)\nMär 11 15:29:49 pollux bash[32515]: DEBUG:root:Discovered ServiceInfo(type='_birdedge._tcp.local.', name='birdclient-4c60._birdedge._tcp.local.', addresses=[b'\\n*\\x00\\xf8'], port=80, weight=0, priority=0, server='birdclient-4c60.local.', properties={}, interface_index=None)\nMär 11 15:29:49 pollux bash[32515]: DEBUG:root:Discovered ServiceInfo(type='_birdedge._tcp.local.', name='birdclient-7885._birdedge._tcp.local.', addresses=[b'\\n*\\x00\\xf0'], port=80, weight=0, priority=0, server='birdclient-7885.local.', properties={}, interface_index=None)\nMär 11 15:29:50 pollux bash[32515]: DEBUG:root:Discovered ServiceInfo(type='_birdedge._tcp.local.', name='birdclient-14f1._birdedge._tcp.local.', addresses=[b'\\n*\\x00\\xf4'], port=80, weight=0, priority=0, server='birdclient-14f1.local.', properties={}, interface_index=None)\nMär 11 15:29:50 pollux bash[32515]: DEBUG:root:Discovered ServiceInfo(type='_birdedge._tcp.local.', name='birdclient-f4b6._birdedge._tcp.local.', addresses=[b'\\n*\\x00\\xf5'], port=80, weight=0, priority=0, server='birdclient-f4b6.local.', properties={}, interface_index=None)\nMär 11 15:29:54 pollux bash[32515]: DEBUG:root:Writing config and running classification process.\nMär 11 15:29:54 pollux bash[32515]: DEBUG:root:Writing config to configs/dynamic.conf\nMär 11 15:30:07 pollux bash[32515]: INFO:root:max_fps_dur 8.33333e+06 min_fps_dur 2e+08\nMär 11 15:30:07 pollux bash[32515]: INFO:root:[Implicit Engine Info]: layers num: 2\nMär 11 15:30:07 pollux bash[32515]: INFO:root:0   INPUT  kFLOAT input_1:0       1x456x128\nMär 11 15:30:07 pollux bash[32515]: INFO:root:1   OUTPUT kFLOAT activation      83\nMär 11 15:30:07 pollux bash[32515]: INFO:root:** INFO: \u003cbus_callback:137\u003e: Pipeline ready\nMär 11 15:30:08 pollux bash[32515]: INFO:root:** INFO: \u003cbus_callback:123\u003e: Pipeline running\nMär 11 15:30:08 pollux bash[32515]: INFO:root:max_fps_dur 8.33333e+06 min_fps_dur 2e+08\nMär 11 15:30:21 pollux bash[32515]: DEBUG:root:Publishing {'measurement': 'birdedge', 'tags': {'station': 'birdclient-f4b6.local.', 'label': 'Waldohreule'}, 'fields': {'confidence': 0.895448}, 'time': 1647009013132714000}\n```\n\n## Scientific Usage \u0026 Citation\n\nIf you are using Bird@Edge in academia, we'd appreciate if you cited our [scientific research paper](https://jonashoechst.de/assets/papers/hoechst2022birdedge.pdf). Please cite as \"Höchst \u0026 Bellafkir et al.\"\n\n\u003e J. Höchst, H. Bellafkir, P. Lampe, M. Vogelbacher, M. Mühling, D. Schneider, K. Lindner, S. Rösner, D. G. Schabo, N. Farwig, and B. Freisleben, \"Bird@Edge: Bird Species Recognition at the Edge,\" in *International Conference on Networked Systems (NETYS)*, 2022. DOI: [10.1007/978-3-031-17436-0_6](https://dx.doi.org/10.1007/978-3-031-17436-0_6)\n\n```bibtex\n@inproceedings{hoechst2022birdedge,\n  title = {{Bird@Edge: Bird Species Recognition at the Edge}},\n  author = {H{\\\"o}chst, Jonas and Bellafkir, Hicham and Lampe, Patrick and Vogelbacher, Markus and M{\\\"u}hling, Markus and Schneider, Daniel and Lindner, Kim and R{\\\"o}sner, Sascha and Schabo, Dana G. and Farwig, Nina and Freisleben, Bernd},\n  booktitle = {International Conference on Networked Systems (NETYS)},\n  year = {2022},\n  month = may,\n  organization = {Springer},\n  keywords = {Bird Species Recognition, Edge Computing, Passive Acoustic Monitoring, Biodiversity},\n  doi = {10.1007/978-3-031-17436-0_6},\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fumr-ds%2Fbirdedge-os","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fumr-ds%2Fbirdedge-os","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fumr-ds%2Fbirdedge-os/lists"}