Changelog
0.4.4 - Device-specific sounds and unified detection CSV
- Remove the web header byline and retain Your Pal Kal as the footer credit.
- Configurable, persistent alert assignments for ALPR by sensor/radio method, combined evidence, Axon, Ring, Meta, Flipper, Pineapple, drone and watchlist. Preserve custom RTTTL slots; preview presets/custom tones; support Silent.
- Queue distinct categories without interrupting melodies on repeated packets. Ring OUI candidates now request alerts. Mute/disable also clears pending audio.
- Add radio rows to the existing detection CSV with source, detection method, rule, tier, assessment, MAC/RSSI and optical corroboration flags. Radio-only rows do not invent optical frequency/duty measurements.
- Offer Unified Blue's 1/6/11 priority sweep or all 1–11 in Field mode, 350 ms dwell, while camera/OPT101 and BLE continue.
- Optimize JPEG brightness decoding without reducing VGA preview quality; reject invalid pre-fix GPS dates in XIAO UTC output.
- Keep Pi Zero 2 W APIs, logging and sound settings aligned with XIAO.
- Add sound persistence/routing, correlated CSV, Ring, channel-plan and browser regression coverage. No new dependencies or changed GPS wiring/baud.
0.4.3 - Device alerts and clearer camera view
- Verify the complete 34-prefix Flock-You OUI set; add serial/DFU hints and Flipper Zero / WiFi Pineapple candidate rules alongside Axon and Meta.
- Surface radio candidates in the original Detector tab; log assessments and new optical corroboration immediately, including when OPT101 is disabled.
- Play the Mario opening phrase for new device encounters with mute, cooldown and duplicate suppression on XIAO and Pi.
- Replace the enlarged low-resolution camera preview with sensor JPEG capture and smooth scaling; keep optical analysis and radio processing separate.
- Update releases, diagnostics, provenance and regression coverage for both targets.
0.4.1 - XIAO startup and Pi integration
- Fix XIAO BLE startup memory, ADC initialization and camera/radio coexistence.
- Preserve the ATGM336H wiring and baud rate; leave unwired OPT101 detection off.
- Port the shared pulse/radio parsers to Pi Zero 2 W and publish a Pi image.
0.4 - OPT101 and unified radio integration
- XIAO-specific passive WiFi/BLE candidates, watchlists, target RSSI, Remote ID and SD captures.
- Dashboard/field channel modes with BOOT recovery; IR continues while wardriving.
- Pulse width/duty/regularity validation, latched events, noise and sampling diagnostics.
- Independent IR logging, corrected camera frame size, stale GPS rejection and unique log names.
- Original UI design preserved; radio controls live in Wardrive.
- PlatformIO build, merged image/checksum, host regression tests and updated wiring/credits.
- Hardware accuracy/coexistence validation remains required; Pi radio integration is not included.
All notable changes to the Flock Noir. This project is experimental; version numbers are milestones, not stability guarantees.
v0.3
- Raspberry Pi hardware target (
pi/): a Python port for any Pi with Wi-Fi and a CSI camera (reference: Pi Zero 2 W + Camera Module NoIR v2, which has no IR-cut filter and runs up to 90 fps). Same web UI and API, same log formats; picamera2 capture with fixed exposure, hardware H.264 recording, gpiozero RTTTL buzzer, serial NMEA GPS,iw-based wardriving, optional MCP3008 IR photodiode path, systemd service, and an nmcli hotspot with captive portal. One-shotpi/install.sh. - Ready-to-flash Raspberry Pi image: a GitHub Actions workflow builds the official
Raspberry Pi OS Lite (64-bit) with Flock Noir pre-installed, the hotspot pre-configured,
SSH on, and SPI/UART enabled, and attaches
flocknoir-pi.img.xzto each tagged release (or run it manually from the Actions tab). - Shared web UI:
web/index.htmlis now the single source of truth; the XIAO headerweb_ui.his generated from it bytools/html2header.py. - Detector noise fix (both targets): the loosened "approximate" mode could fire on pure
sensor noise. Simulation across 37-90 fps showed two metrics that separate a real strobe
from noise at every frame rate: duty (strobe ~0.2, noise ~0.5) and interval
jitter (strobe <= 0.09, noise >= 0.19). The decision now gates on
DUTY_MAXand a newJITTER_MAX, withPERIOD_SCORE_MINkept loose because a 20 ms pulse can fall between frames at ~40 fps. Verified: 147/147 synthetic cases classified correctly. - Live camera view in the web UI (grayscale NIR) via on-demand JPEG frames, with the brand logo as a corner watermark.
- Recording to SD: MJPEG AVI video, optional onboard-mic WAV sidecar (PDM mic over I2S). Record controls + recordings list/download in the UI.
- Wi-Fi wardriver (WiGLE-format CSV, kept in a separate log from IR detections), modeled on Piglet. Scanning auto-pauses while a device is connected to the UI so the page stays responsive; wardriving is off by default.
- Captive portal (DNS + catch-all redirect) so phones - especially iPhone - open the UI automatically on connect.
- microSD fixed to the Sense's SPI wiring (
SD.begin(21)) instead of SD_MMC. - Boot jingle set to the Super Mario Bros. theme; separate configurable alert tone.
- Branded, dark, four-tab web UI (Detector / Camera / Wardrive / Settings) with the embedded, unaltered logo.
- Approximate ("high sensitivity") detection: loosened thresholds and raised fixed exposure/gain so a weak IR signal (for example through a stock IR-cut lens) still triggers. False positives are expected; the confidence and duty are logged so you can filter and verify. A light regularity gate keeps random noise from beeping non-stop.
- GPS wiring profiles in
config.h: select the Seeed L76K "GNSS for XIAO" sandwich board or a discrete external module (for example an ATGM336H, or an LC29H at 115200). - Default "Power Rangers" alert tone is now a Mighty Morphin communicator RTTTL; built-in tone defaults re-seed automatically when their version changes.
v0.2
- Branded web UI,
@valleytechsolutionsidentity. - Passive-buzzer RTTTL engine with an NVS-persisted tone library + Settings tab.
- Embedded logo pipeline (
logo2header.py).
v0.1
- Initial time-domain IR camera-flash detector (period + duty + compactness scoring).
- GPS tagging (NMEA/UART), CSV logging to SD, SoftAP web alert UI.
Unreleased / planned
- 850 nm photodiode front-end for exact-timing confirmation + sensor fusion.
- Rolling-shutter band analysis.
- GPX/KML export; BLE/OUI detection.