Skip to content

Life node v1 golden image (2026-10-07)

Choose a tag to compare

@svenjense svenjense released this 08 Oct 15:54
· 110 commits to main since this release
5cb3d1d

The golden image for Life node v1: Raspberry Pi OS Lite 64-bit with BirdNET-Go and Perch v2 (audio clip saving off), the node agents, the Witty Pi 4 daemon and the schedules. Read-only root, writable /data partition that grows to the card at the first boot. Nothing per-node is inside: put life-node.env on the boot partition after flashing (the example is there), or get an image made for your box at https://life.oncra.org/box.

This replaces the image of 29 September, which did not boot on a Raspberry Pi. Tested on node 1 on 8 October 2026: the first boot comes up on the right time, the microphone is heard and detections reach the oracle, and a shutdown ends with the Witty Pi cutting power (0.0 W on the meter).

Fixed since the first image:

  • It boots: the card keeps the disk identifier that cmdline.txt and fstab name.
  • WiFi comes up from WIFI_SSID and WIFI_PSK in the env file; trailing comments in the env file no longer end up in the values.
  • BirdNET-Go listens to the I2S microphone (:0,0), and life-push reads the current BirdNET-Go database, so detections and the heartbeat reach the oracle.
  • Witty Pi 4: UART0 on GPIO-14 and wiringPi for its daemon, so the board sees the Pi shut down and cuts power; the board is set to switch the Pi on as soon as power arrives; the daemon and the schedule run only when the board sits in the supply path.
  • The clock is synced and written to the Witty Pi before any schedule is computed; with no trustworthy clock the node stays on and tries again.
  • The summer schedule follows the sun at the place of the node (8 h from civil dawn, 2 h from sunset).

Use:

  • Flash: xz -dc life-node-v1.img.xz | sudo dd of=/dev/<card> bs=4M status=progress conv=fsync (Linux) or ... of=/dev/rdiskN bs=4m (macOS). 9 GiB written, any card of 16 GB or more.
  • Login on the bench: user life, password lifebox, at ssh life@<NODE_HOSTNAME>.local. Set NODE_PASSWORD or NODE_SSH_KEY in life-node.env before the node leaves the desk; a key has spaces, so it goes in single quotes. Both are applied at every boot.
  • Verify: sha256sum -c life-node-v1.img.xz.sha256.
  • How it was built: node/image/build.sh at this commit. The step-by-step is https://life.oncra.org/lifebox.