Contribute data
Wildlife Network is built from what people's devices hear and see. If you run a bird station, a bat detector or a camera trap, you can add it in a few minutes. If you don't have one yet, this page shows what to get and how to set it up. It is free, and you keep the rights to your data.
Where are you starting from?
Already on BirdWeather? You are done
Wildlife Network reads BirdWeather's public detections (never the recordings). If you have a BirdWeather PUC, or your BirdNET-Pi or BirdNET-Go station uploads to BirdWeather, your detections are on the map and in every measure. Do not install the agent as well: the same detections would arrive twice and be counted twice.
Not sure? Look for your station on app.birdweather.com. If it is there, you are included.
Want more say in how your station appears? Opt it in: choose a name or stay anonymous, pick how precisely it is located, and share its full daily counts in the open data releases under your licence.
I have a device
You install one small program, wdx-agent, on the computer that holds your detections. It is a single open source Python file with no dependencies. It reads what your detector has already found and sends it. It never changes your detector's files, and it catches up by itself after being offline.
BirdNET-Pi
Open a terminal on the Pi (or connect with SSH) and run:
curl -fsSL https://wlnw.org/agent/install.sh | bashThe installer finds BirdNET-Pi's database, registers your station, and starts a background service. It uses the location you set in BirdNET-Pi. That is all.
BirdNET-Go
Run the same command on the machine that runs BirdNET-Go:
curl -fsSL https://wlnw.org/agent/install.sh | bashIf it cannot find the database, tell it where birdnet.db is:
curl -fsSL https://wlnw.org/agent/install.sh | WDX_SOURCE=birdnet-go WDX_PATH=/path/to/birdnet.db bashWorks with both BirdNET-Go database layouts, the current one and the original one. Detections BirdNET-Go marks as unlikely for your location are skipped.
Camera trap
Cameras take pictures; a classifier names the animals. Run SpeciesNet over your images, then point the agent at the folder with its results. A camera has no GPS in the result file, so give its location:
curl -fsSL https://wlnw.org/agent/install.sh | WDX_SOURCE=speciesnet WDX_PATH=/data/camtrap WDX_LAT=11.41 WDX_LON=76.69 bashBlank images, people and vehicles are never sent. One agent serves one location, so use one setup per camera site.
Want a person to check the results first? Use SpeciesNet Studio instead of the agent: it runs SpeciesNet, lets you confirm, correct or flag each image, and sends the reviewed results here from its Export dialog, marked as confirmed by a reviewer. Get its key with:
curl -X POST https://wlnw.org/api/v1/register \
-H 'content-type: application/json' \
-d '{"name":"my-camera-site","source":"speciesnet-studio"}'Use one route per camera: the agent sends unchecked predictions automatically, Studio sends checked ones.
Bat detector
Record with an ultrasonic recorder, classify the recordings with BatDetect2, and point the agent at the results folder:
curl -fsSL https://wlnw.org/agent/install.sh | WDX_SOURCE=batdetect2 WDX_PATH=/data/bats/results WDX_LAT=51.51 WDX_LON=-0.13 bashBatDetect2's default model knows UK species. Elsewhere, use a model trained for your region, or the names will be wrong.
Other software (Kaleidoscope, SonoBat and similar)
If your software can export a table of detections, the agent can read it. You tell it which columns hold the species, the time and the score. The CSV guide has a worked example.
Your own detector or code
Send detections straight to the API in the open WDX format. Get a key, then post events:
curl -X POST https://wlnw.org/api/v1/register \
-H 'content-type: application/json' \
-d '{"name":"my-station","source":"other"}'
curl -X POST https://wlnw.org/api/v1/events \
-H "Authorization: Bearer wn_YOUR_KEY" \
-H "content-type: application/x-ndjson" \
--data-binary @events.wdx.ndjsonI want to set one up
Three kinds of station, from easiest to most involved. Each links to the maker's own guide for the build, then you come back here to connect it.
A bird listening station
The most popular way to start. It sits in a garden or on a balcony and identifies birds by their song, all day, every day.
- 1Get the parts: a Raspberry Pi (4B, 5, 3B+ or Zero 2 W), a microSD card of 32 GB or more, a USB microphone (or a USB sound card with a small lavalier microphone), and a power supply. For outdoors, add a weatherproof box.
- 2Install the listening software: follow the BirdNET-Pi guide, or BirdNET-Go if you prefer. Set your latitude and longitude in its settings.
- 3Let it listen for a day and check that it is identifying birds in its own web page.
- 4Connect it: run the one line install above.
Prefer something ready made? A BirdWeather PUC is a finished device that reports to BirdWeather, and so to Wildlife Network, with nothing to build.
A bat detector
Bats call above the range of human hearing, so you need a recorder that captures ultrasound.
- 1Get a recorder: an AudioMoth is the common low cost choice. Set it to a sample rate of 250 kHz or more and schedule it from dusk to dawn.
- 2Put it out near water, a hedge line or a woodland edge, a few metres up, away from rustling leaves.
- 3Collect the recordings and copy them to a computer.
- 4Classify them with BatDetect2, which writes a result file for each recording.
- 5Connect it: run the bat detector install above, pointing at the results folder.
A camera trap
For mammals and ground birds. A camera takes a picture when something moves in front of it.
- 1Get a trail camera and an SD card. Any model that saves ordinary photos works.
- 2Mount it at about knee height on a game trail or by water, facing north or south to avoid direct sun, with nothing moving in front.
- 3Collect the card every few weeks and copy the images to a computer. Keep the file dates when copying, since the agent uses them as the time of each sighting.
- 4Classify the images with SpeciesNet.
- 5Connect it: run the camera trap install above with the camera's location.
Check that it is working
- Watch the agent:
journalctl -u wdx-agent -f. A healthy line readssent 12 (new 12, updated 0, rejected 0). - See what would be sent, without sending anything:
python3 /opt/wdx-agent/wdx_agent.py --config /etc/wdx-agent.ini --dry-run. - On the map, detections from the last three hours appear as pink "Devices" dots at your rounded location.
- Your detections join the movement measures within about an hour.
What is shared, and your rights
- Your location is blurred on your device. Coordinates are rounded to about 1 km before anything is sent. You can make that coarser (about 11 km) with
round_coords = 1in/etc/wdx-agent.ini. - What is sent: species, time, confidence, the rounded location, the classifier's name, the file name of the clip or photo, and a station id. Not sent: the audio or the photos themselves.
- No account. The installer registers a key for your device. A station name is optional.
- You choose the license. The default is CC BY 4.0, which lets others use your detections with credit.
- Sensitive species. If your station records a threatened species at a known site, use the coarser rounding or leave that station out.
- Stopping and removal. Uninstall at any time with the commands in the agent guide. To have your station's data removed, open an issue with your station id (it is in the first line of the agent's log).
If something goes wrong
| The installer finds no database | Tell it the source and path, as in the BirdNET-Go example above. |
| "no coordinates" in the log | Add latitude and longitude to /etc/wdx-agent.ini. |
| "server rejected the whole batch" | The key was registered for a different source. Register a new one for the right source. |
| Nothing is sent | Run the dry run. If it shows 0 events, everything is below min_confidence or already sent. |
| Something else | The agent guide has a longer list, and you can open an issue. |
Full reference, every setting, and manual install steps: the wdx-agent guide. Problems or questions: open an issue.
How your data is used in the measures: Methods. Made by Arun Rajiah.