Skip to content

Releases: valleytechsolutions/Flock-Noir

Flock Noir v0.6.0 - XIAO ESP32-S3 Sense

Choose a tag to compare

@github-actions github-actions released this 24 Sep 21:43

Flock Noir 0.6.0 — XIAO ESP32-S3 Sense

Install with the web flasher
using desktop Chrome / Edge and a USB data cable. Leave Erase device unchecked
when updating to preserve settings. The installer writes split parts excluding
NVS. The downloadable merged image writes at 0x0, includes NVS padding and
can reset settings. The adjacent checksum file identifies the exact image.

Changes

  • Four exclusive modes. Choosing ALPR, Scanner, Pig Detector or Wardrive starts
    that scanner and stops the previous one. Camera / Settings preserve the mode.
    Switching clears pending alerts, live rows, optical history and fusion evidence;
    generation-stamped queued observations cannot leak across mode changes.
  • Pig Detector: Axon-only BLE, no optical analysis / WiFi detection / wardrive.
    Requests 90/100 ms BLE receive window with dashboard, 100/100 ms with field
    coverage and WiFi off. Siren repeats every 10 seconds while evidence remains
    fresh, configurable 5–60 seconds. No reminders after 3 seconds without a match.
    Axon vendor evidence is a candidate, not confirmed body-camera identity.
  • ALPR: OPT101 + OV2640 + dedicated Flock-You OUI/probe/BLE rules. Early packet
    filtering reduces irrelevant queue traffic. Existing 34-prefix union retained.
    Camera accounts for frame timing and explicitly flags a 5 Hz observation that
    could be a 10 Hz narrow-pulse alias. The measured frequency stays unchanged and
    alias confidence is reduced. Whole-frame flicker / timing gates are tighter.
  • Separate logs: 31-column ALPR CSV in /alpr/alpr_*.csv, with source methods,
    pulse width / sampling rates, camera timing ambiguity and scan mode. Non-ALPR
    devices stay in radio JSONL, now tagged with scan_mode.
  • Wardrive only: WiFi + BLE WiGLE rows, no device detection alerts or optics.
    Fresh GPS/time/HDOP/altitude required; estimated accuracy is HDOP × 5 m, not a
    fixed invented accuracy. Per-address repeat measurements every 15 seconds,
    bounded security-IE parsing, CSV escaping, write-error / missing-fix counters.
  • Original dark green design, VGA JPEG quality, ATGM336H D7/D6 at 9600 baud,
    passive buzzer D0 and saved tone/sensor settings preserved. Updated BOM,
    wiring, installation guide, flasher and Colonel Panic / OUI Spy credits.

Hardware and operation

Seeed XIAO ESP32-S3 Sense + IR-cut-free OV2640, 8 MB flash / OPI PSRAM.
OPT101: OUT→D1/GPIO2, VCC→3V3, GND→GND. Enable it in ALPR after wiring and
verify its response to light. First-install enable default is off; updates retain
it. GPS remains ATGM336H at 9600 baud. Passive piezo: D0/GPIO1 through ~100 Ω.
ESP32-CAM is not supported by this image. No Raspberry Pi update is included.

Join Flock Noir / flocknoir, open http://192.168.4.1, choose a scan tab.
Field scan turns the hotspot off. Hold BOOT 1.5 seconds to restore it without
changing the scan mode. Boot restores the hotspot with the saved mode.

Validation — September 24, 2026

  • PlatformIO build passed without compiler warnings/errors: pioarduino 55.03.39,
    Arduino ESP32 3.3.9, TinyGPSPlus 1.0.3; no additional runtime dependencies.
  • Portable C++ tests passed for mode filtering, reminders / stale evidence,
    rollover, Axon identifiers and public/random address handling, Flock rules,
    fusion, malformed packets, pulse width/duty/gaps, phase-swept 25 fps aliases,
    WiGLE rows/security/deduplication and JPEG decoding.
  • Desktop/mobile browser checks passed for actual mode requests, failed switch
    behavior, inactive sensor indicators, Pig Detector banner/reminder, coverage,
    settings/tone persistence and VGA preview recovery. Screenshot uses simulated
    evidence, not a field observation.
  • Staging verifies checksums, board/version and flash ranges excluding NVS.
    Browser smoke checks load the real pinned ESP Web Tools 10.4.0 module and test
    unsupported browsers / failed metadata. Browser USB flashing was not exercised.
  • Connected XIAO flashed via PlatformIO, esptool verified each written image.
    All four modes were exercised over USB; optics stopped in General, Pig Detector
    and Wardrive, then resumed in ALPR at approximately 25 fps and 1000 ADC samples/s.
    GPS messages continued, SD stayed ready and tone/sensor settings were preserved.
    Axon field coverage disabled WiFi and reported the 100/100 ms BLE window.
  • A 30-second ALPR hardware check showed 640×480, 25.0–25.1 analysis fps, zero
    camera decode errors, 1000 Hz ADC, valid GPS messages and no new queue
    drops during the steady check. The latest restart showed one GPS checksum
    error; valid NMEA continued. Startup / mode-transition queue drops can occur.

The attached OPT101 ADC input read 4095 (clipped). Sampling was verified;
usable optical pulses / physical sensor wiring were not. Clipped inputs are
rejected. GPS was receiving valid NMEA but had no indoor satellite fix, so no
real WiGLE field upload or geotagged drive was validated. Real Axon / ALPR targets,
field range and false-positive rates still require physical testing.

The 8–12 Hz, 10–30% duty, 8–35 ms optical profile is experimental, not a
manufacturer-confirmed universal ALPR rate. OPT101 measures intensity/timing,
not wavelength. Nearby optical and radio observations can originate separately.

Reproduce

python tools/html2header.py
python -m platformio run -e xiao_esp32s3_sense
python tools/package_firmware.py
python tools/build_flasher.py

Opt-in connected-board checks (leave ALPR / dashboard active):

python tests/mode_hardware_smoke.py --port COM44
python tests/hardware_smoke.py --port COM44 --seconds 30 --require-gps-data --require-sd

Thanks to Colonel Panic,
OUI Spy Unified Blue,
and the contributors credited in ATTRIBUTIONS.md.

Flock Noir v0.5.1 - XIAO ESP32-S3 Sense

Choose a tag to compare

@github-actions github-actions released this 23 Sep 20:01

Flock Noir 0.5.1 - XIAO ESP32-S3 Sense

Open the web flasher
using desktop Chrome or Edge and a USB data cable. On an update leave Erase
device unchecked to retain settings. The installer writes separate parts that
exclude NVS. The downloadable merged image is for flashing at 0x0 and includes
NVS padding; it can reset settings. Its SHA-256 is in the adjacent checksum file.

Strong radio evidence now expires independently of newer weak hints, so a weak
packet cannot hide a recent strong match or keep it alive indefinitely.

This release adds an ALPR focus profile, a dedicated General Scanner tab,
four-source evidence ages and combined IR/camera/BLE/WiFi CSV methods. Focus
enables BLE and priority field channels and suppresses non-ALPR sounds while
retaining all device observations. General alerts restores per-device sounds.
The existing dark/green visual style, VGA camera preview, GPS wiring and custom
tone settings are preserved. Switching tabs alone does not change the profile.

Biscuit recognition uses its documented BLE name and optional advertised
service; the common Arduino example UUID alone never identifies Biscuit.
Pineapple Pager is covered only as a Pineapple-family AP-name candidate;
this does not uniquely identify a Pager or detect silent/renamed devices.
Flock-You's 34-prefix OUI union, probe/BLE rules, Axon, Ring, Meta, Flipper,
Pineapple and drone signatures remain enabled. Each device class has a sound
assignment in Settings, including Biscuit.

Join WiFi Flock Noir, password flocknoir, then open http://192.168.4.1.
Field mode turns off the XIAO hotspot; hold BOOT for 1.5 seconds to return.
Select Focus ALPR in the ALPR tab or Use general alerts in Scanner.
General alerts is the default for compatibility with existing installations.

Hardware: Seeed XIAO ESP32-S3 Sense only, 8 MB flash and OPI PSRAM,
OV2640 without IR-cut filter, Sense SD, ATGM336H GPS on D7/D6 at 9600 baud.
OPT101 module OUT → D1/GPIO2, VCC → 3V3, GND → GND. Enable it after wiring
and check the live response to light. First-install default is off; upgrades
preserve the saved enable setting. ESP32-CAM uses different pins and is not
supported by this image. Raspberry Pi has a separate release.

Validation on September 23, 2026:

  • PlatformIO build passed without compiler warnings/errors; Core 6.1.19,
    pioarduino 55.03.39, Arduino ESP32 3.3.9 and TinyGPSPlus 1.0.3.
  • Host C++ tests passed: optical pulse rules, all 34 OUI roles, malformed
    packets, device classifications, source fusion, expiry and timestamp rollover.
  • 29 Pi tests passed, including both fusion arrival orders, combined CSV,
    profile persistence, sound filtering without stopping logs and Biscuit rules.
  • Browser desktop/mobile checks passed for tabs, ALPR filtering, general
    filters, profile controls, settings/sound persistence and camera preview.
  • Flasher loaded the real pinned ESP Web Tools 10.4.0 module in Edge.
    Unsupported-browser and metadata-failure cases keep installation disabled.
    Staging tests verified image ranges exclude NVS and reject stale/corrupt images.
    USB flashing through the browser chooser has not been exercised.
  • Connected XIAO flashed via PlatformIO; esptool verified the written hash.
    A 30-second hardware check measured 25.0–25.1 camera analysis fps at
    640×480, zero decode errors, ADC at 1000 Hz, SD ready, WiFi/BLE active,
    zero added queue drops, and valid GPS sentences with zero checksum errors.
    Startup radio drops were nonzero; no satellite fix was available indoors.
  • ALPR/General profile switching and the new fusion status were verified via
    USB, restoring the previous General profile. The attached board's saved
    OPT101 enable setting was on and was preserved; wiring is not verified by
    ADC activity. Physical Pi hardware was not attached.

Nearby optical and radio signals can come from different devices. The 3-second
fusion window and 8–12 Hz pulse profile provide supporting evidence, not proof
of camera identity or absence. OPT101 measures intensity/timing, not wavelength.
Known optical sources, field accuracy/range and sustained full-load operation
still need physical validation. A 25 fps camera can miss narrow pulses.

Reproduce:

python tools/html2header.py
python -m platformio run -e xiao_esp32s3_sense
python tools/package_firmware.py
python tools/build_flasher.py

Thanks to Colonel Panic and
OUI Spy Unified Blue.
Full source provenance is in ATTRIBUTIONS.md.

Flock Noir v0.5.0 - XIAO ESP32-S3 Sense

Choose a tag to compare

@github-actions github-actions released this 23 Sep 19:54

Flock Noir 0.5.0 - XIAO ESP32-S3 Sense

Open the web flasher
using desktop Chrome or Edge and a USB data cable. On an update leave Erase
device unchecked to retain settings. The installer writes separate parts that
exclude NVS. The downloadable merged image is for flashing at 0x0 and includes
NVS padding; it can reset settings. Its SHA-256 is in the adjacent checksum file.

This release adds an ALPR focus profile, a dedicated General Scanner tab,
four-source evidence ages and combined IR/camera/BLE/WiFi CSV methods. Focus
enables BLE and priority field channels and suppresses non-ALPR sounds while
retaining all device observations. General alerts restores per-device sounds.
The existing dark/green visual style, VGA camera preview, GPS wiring and custom
tone settings are preserved. Switching tabs alone does not change the profile.

Biscuit recognition uses its documented BLE name and optional advertised
service; the common Arduino example UUID alone never identifies Biscuit.
Pineapple Pager is covered only as a Pineapple-family AP-name candidate;
this does not uniquely identify a Pager or detect silent/renamed devices.
Flock-You's 34-prefix OUI union, probe/BLE rules, Axon, Ring, Meta, Flipper,
Pineapple and drone signatures remain enabled. Each device class has a sound
assignment in Settings, including Biscuit.

Join WiFi Flock Noir, password flocknoir, then open http://192.168.4.1.
Field mode turns off the XIAO hotspot; hold BOOT for 1.5 seconds to return.
Select Focus ALPR in the ALPR tab or Use general alerts in Scanner.
General alerts is the default for compatibility with existing installations.

Hardware: Seeed XIAO ESP32-S3 Sense only, 8 MB flash and OPI PSRAM,
OV2640 without IR-cut filter, Sense SD, ATGM336H GPS on D7/D6 at 9600 baud.
OPT101 module OUT → D1/GPIO2, VCC → 3V3, GND → GND. Enable it after wiring
and check the live response to light. First-install default is off; upgrades
preserve the saved enable setting. ESP32-CAM uses different pins and is not
supported by this image. Raspberry Pi has a separate release.

Validation on September 23, 2026:

  • PlatformIO build passed without compiler warnings/errors; Core 6.1.19,
    pioarduino 55.03.39, Arduino ESP32 3.3.9 and TinyGPSPlus 1.0.3.
  • Host C++ tests passed: optical pulse rules, all 34 OUI roles, malformed
    packets, device classifications, source fusion, expiry and timestamp rollover.
  • 28 Pi tests passed, including both fusion arrival orders, combined CSV,
    profile persistence, sound filtering without stopping logs and Biscuit rules.
  • Browser desktop/mobile checks passed for tabs, ALPR filtering, general
    filters, profile controls, settings/sound persistence and camera preview.
  • Flasher loaded the real pinned ESP Web Tools 10.4.0 module in Edge.
    Unsupported-browser and metadata-failure cases keep installation disabled.
    Staging tests verified image ranges exclude NVS and reject stale/corrupt images.
    USB flashing through the browser chooser has not been exercised.
  • Connected XIAO flashed via PlatformIO; esptool verified the written hash.
    A 30-second hardware check measured 24.9–25.0 camera analysis fps at
    640×480, zero decode errors, ADC at 1000 Hz, SD ready, WiFi/BLE active,
    zero added queue drops, and valid GPS sentences with zero checksum errors.
    Startup radio drops were nonzero; no satellite fix was available indoors.
  • ALPR/General profile switching and the new fusion status were verified via
    USB, restoring the previous General profile. The attached board's saved
    OPT101 enable setting was on and was preserved; wiring is not verified by
    ADC activity. Physical Pi hardware was not attached.

Nearby optical and radio signals can come from different devices. The 3-second
fusion window and 8–12 Hz pulse profile provide supporting evidence, not proof
of camera identity or absence. OPT101 measures intensity/timing, not wavelength.
Known optical sources, field accuracy/range and sustained full-load operation
still need physical validation. A 25 fps camera can miss narrow pulses.

Reproduce:

python tools/html2header.py
python -m platformio run -e xiao_esp32s3_sense
python tools/package_firmware.py
python tools/build_flasher.py

Thanks to Colonel Panic and
OUI Spy Unified Blue.
Full source provenance is in ATTRIBUTIONS.md.

Flock Noir v0.4.4 - XIAO ESP32-S3 Sense

Choose a tag to compare

@github-actions github-actions released this 23 Sep 18:20

Flock Noir 0.4.4 - XIAO ESP32-S3 Sense

Device-specific alert sounds and one detection CSV for OPT101, camera, BLE and
WiFi. Settings assigns a preset, custom RTTTL slot or Silent independently to
each device/evidence category. ALPR candidates use an original retro blaster,
Axon a siren, Ring/Meta questioning tones, and Flipper/Pineapple/drone distinct
sounds. Existing custom tones survive the upgrade. The header byline is gone;
the footer credits Your Pal Kal. The four-tab visual design is preserved.

CSV rows record source, detection_method (including ir+ble), signature
rule, tier, assessment, MAC/RSSI, optical flags and fresh GPS coordinates when
available. The full 34-prefix Flock-You OUI union and WiFi/BLE rules remain.
Field scans now offer priority 1/6/11 or all 1–11, with 350 ms dwell. BLE and
the independent optical paths continue in both modes. Field mode turns off
the hotspot; hold BOOT for 1.5 seconds to restore it.

JPEG brightness decoding is faster without changing VGA image quality.
Invalid ATGM336H dates before lock are rejected instead of logged as UTC.

Join WiFi Flock Noir, password flocknoir, then open http://192.168.4.1.
Factory image: FlockNoir-merged-0x0.bin, flash at 0x0.
SHA-256: see FlockNoir-merged-0x0.bin.sha256.

Built with PlatformIO Core 6.1.19, pioarduino platform 55.03.39,
Arduino ESP32 3.3.9 and TinyGPSPlus 1.0.3. No new dependencies.
Hardware: 8 MB flash, OPI PSRAM, ATGM336H on D7/D6 at 9600 baud,
OPT101 OUT on D1/GPIO2, OV2640 without IR-cut filter, Sense SD on CS GPIO21.

Validation on September 23, 2026:

  • Firmware compiles without compiler warnings/errors.
  • Host C++ pulse/radio tests pass, covering all 34 OUI address roles, valid and
    invalid pulse trains, clipping/gaps, rollover, device classification, alert
    queuing and malformed packets. JPEG fixture/truncation/mutation tests pass.
  • 25 Pi tests pass, including category sounds, settings persistence, custom
    library preservation, mute/preview behavior, correlated CSV and Ring alerts.
  • Browser checks pass at desktop/phone sizes, including sound assignments,
    previews, deletion/remapping of custom slots, save/reload and scan settings.
  • The connected XIAO flash was hash-verified. A 30-second run measured camera
    analysis at 24.9–25.2 fps after decoder optimization (about 18 fps before),
    640x480 frames, no frame errors, ADC at 1000 samples/sec, active WiFi/BLE,
    SD mounted and fresh valid GPS sentences with zero checksum failures.
    No satellite fix was available indoors. No additional radio queue drops
    occurred during the check; cumulative startup drops were nonzero.
  • ALPR, Axon and Meta preview commands were accepted over USB. Physical
    audibility and tone recognition were not measured through USB.

OPT101 detection remains off until the module is wired and enabled. ADC
activity alone does not prove a sensor is attached. The 8–12 Hz timing profile
is a starting point, not a universal ALPR identifier. Known optical sources,
field range/accuracy, sustained SD/HTTP load and physical Pi behavior still
need hardware validation. A 25 fps camera can miss 20 ms flashes; OPT101 provides
finer timing. Nearby light and radio can belong to different devices.

To reproduce and package:

python tools/html2header.py
python -m platformio run -e xiao_esp32s3_sense
python tools/package_firmware.py

To check a connected board (use its actual serial port):

python tests/hardware_smoke.py --port COM44 --require-gps-data --require-sd

The factory image includes bootloader, partition table, boot-app metadata and
application. It does not format SD. Existing tone slots, GPS pins and baud
remain unchanged. Reboot starts Dashboard mode.

Research and inspiration: Colonel Panic and
OUI Spy Unified Blue.

Flock Noir pi-v0.5.1 - Raspberry Pi Zero 2 W

Choose a tag to compare

@github-actions github-actions released this 23 Sep 20:09

Flock Noir 0.5.1 - Raspberry Pi Zero 2 W

Installable Raspberry Pi OS Lite arm64 image with Flock Noir, the shared XIAO/Pi
pulse and radio parsers, unchanged dashboard design, BLE scanning, WiFi candidate
detection, watchlists, Remote ID, evidence logs and capture downloads.

This release adds the ALPR focus profile, a dedicated General Scanner tab,
four-source evidence ages and combined CSV methods such as ir+camera+ble+wifi.
The native C++ assessment is shared with XIAO. ALPR focus enables BLE and priority
field scanning, limiting automatic sounds to camera candidates while retaining
all device observations. General alerts restores per-device sounds; existing
custom RTTTL settings survive. The UI keeps its dark/green design.

Biscuit name/service candidates are supported with an editable sound. Its UUID
alone is shared with an Arduino example and is not a Biscuit identification.
Pineapple Pager remains a recognizable Pineapple-family AP-name candidate,
not a unique Pager-model identification. Existing Flock-You OUI/probe/BLE,
Axon, Ring, Meta, Flipper, Pineapple and drone rules remain.

The browser web flasher is for XIAO only; use the Pi image below for Zero 2 W.

Flash flocknoir-pi.img.xz with Raspberry Pi Imager's Use custom option.
Verify the adjacent SHA-256 checksum. Join Flock Noir, password flocknoir,
and open http://192.168.4.1. SSH login is flock / flocknoir; change it
with passwd after first boot.

The OPT101 detector starts off. Wire OPT101 OUT to MCP3008 CH0, with the module,
ADC VDD and ADC VREF powered from 3.3 V, then enable the detector. Pi has no
built-in analog input. GPS remains at 9600 baud on /dev/serial0.

Onboard WiFi provides surveys and the hotspot. Passive WiFi packet capture
requires a separate monitor-capable USB adapter configured in pi/config.py.
Pi field mode hops that adapter while preserving dashboard access.

Automated parser/API tests also run against the ARM library during image
provisioning. Physical Pi camera/radio/optical testing has not been performed
in this session. Detection evidence does not establish a camera's identity.

See Pi wiring and setup.
Research and feature inspiration: Colonel Panic and
OUI Spy Unified Blue.

Full Changelog: pi-v0.4.4...pi-v0.5.1

Flock Noir pi-v0.4.4 - Raspberry Pi Zero 2 W

Choose a tag to compare

@github-actions github-actions released this 23 Sep 18:29

Flock Noir 0.4.4 - Raspberry Pi Zero 2 W

Installable Raspberry Pi OS Lite arm64 image with Flock Noir, the shared XIAO/Pi
pulse and radio parsers, unchanged dashboard design, BLE scanning, WiFi candidate
detection, watchlists, Remote ID, evidence logs and capture downloads.

This release adds configurable device-specific sounds, a combined optical/radio
CSV with explicit detection methods, audible Ring candidates, and selectable
1/6/11 or 1–11 field scans. The header byline is removed and the footer credits
Your Pal Kal. Existing custom RTTTL tones are preserved. ALPR candidates use a
retro blaster, Axon a siren, and Ring/Meta questioning tones by default; every
category can be changed or silenced in Settings. The 34-prefix Flock-You rules
remain active. Optical timing and radio signatures are evidence, not proof of
camera identity.

Flash flocknoir-pi.img.xz with Raspberry Pi Imager's Use custom option.
Verify the adjacent SHA-256 checksum. Join Flock Noir, password flocknoir,
and open http://192.168.4.1. SSH login is flock / flocknoir; change it
with passwd after first boot.

The OPT101 detector starts off. Wire OPT101 OUT to MCP3008 CH0, with the module,
ADC VDD and ADC VREF powered from 3.3 V, then enable the detector. Pi has no
built-in analog input. GPS remains at 9600 baud on /dev/serial0.

Onboard WiFi provides surveys and the hotspot. Passive WiFi packet capture
requires a separate monitor-capable USB adapter configured in pi/config.py.
Pi field mode hops that adapter while preserving dashboard access.

Automated parser/API tests also run against the ARM library during image
provisioning. Physical Pi camera/radio/optical testing has not been performed
in this session. Detection evidence does not establish a camera's identity.

See Pi wiring and setup.
Research and feature inspiration: Colonel Panic and
OUI Spy Unified Blue.

Full Changelog: pi-v0.4.3...pi-v0.4.4

Flock Noir v0.4.3 - XIAO ESP32-S3 Sense

Choose a tag to compare

@github-actions github-actions released this 22 Sep 22:18

Flock Noir 0.4.3 - XIAO ESP32-S3 Sense

Flock-You's complete 34-prefix OUI set now feeds the main Detector view, with
serial/DFU hints, Axon, Meta glasses, Flipper Zero and WiFi Pineapple candidates.
New encounters play a Mario phrase. Logs distinguish possible cameras, stronger
signatures and nearby optical corroboration, while suppressing duplicate sounds.

The camera now supplies a clean 640x480 JPEG preview with normal browser scaling.
A separate task extracts block-average brightness directly from JPEG for fast
analysis. This avoids enlarging a 160x120 image and avoids raw VGA corruption
under radio load. The original four-tab dashboard design is preserved.

Join WiFi Flock Noir, password flocknoir, then open http://192.168.4.1.

Factory image: FlockNoir-merged-0x0.bin, flash at 0x0.
SHA-256: see FlockNoir-merged-0x0.bin.sha256.

Built with PlatformIO Core 6.1.19, pioarduino platform 55.03.39,
Arduino ESP32 3.3.9 and TinyGPSPlus 1.0.3. Hardware configuration:
8 MB flash, OPI PSRAM, ATGM336H on D7/D6 at 9600 baud, OPT101 OUT on
D1/GPIO2, OV2640 without IR-cut filter, Sense SD on CS GPIO21.

Validation on September 22, 2026:

  • Target firmware compiles successfully without compiler warnings/errors.
  • Host C++ tests cover every Flock OUI address role, added device signatures,
    alert timing, camera compactness/staleness, pulse validation, malformed radio
    packets and Remote ID. JPEG tests compare luminance with independent reference
    fixtures, including subsampling, optimized Huffman tables, restart markers,
    every truncated prefix and a mutation corpus.
  • Twenty Pi parser/API tests cover logging, camera assessments, immediate
    optical upgrades, Mario notification dispatch, mute and duplicate suppression.
  • Browser tests cover desktop/mobile layout, escaped device names,
    settings submission, IR/radio banner and Pi capability fallback.

On the connected XIAO ESP32-S3 Sense, flash hashes verified and a 30-second
hardware check passed with VGA capture around 24-25 fps and actual analysis at
22.9-25.0 fps, zero frame errors, ADC sampling at 1000 Hz, WiFi/BLE scanning
active, no additional dropped radio packets during the check, SD mounted, and
new valid ATGM336H messages with zero checksum failures. GPS had no satellite
fix during the check. OPT101 was not wired, so its detection toggle stayed off;
ADC activity does not establish optical detection or sensor connection.
The cumulative radio drop counter was 743 before the measurement and stayed
unchanged; this is not a claim of lossless reception from startup or in the field.
A USB JPEG snapshot was visually checked for corruption. The Mario test command
was accepted by the board; physical audibility cannot be measured over USB.

Optical range, field identification accuracy, live HTTP/recording load, sustained
SD throughput and known-source pulse validation remain untested on hardware.
The 80x60 block-average analysis can dilute small lights; 25 fps cannot prove a
20 ms pulse. Wire OPT101 for finer timing. Neither timing nor shared radio
signatures establish a camera's identity or prove radio/light share a source.

To reproduce and package:

python tools/html2header.py
python -m platformio run -e xiao_esp32s3_sense
python tools/package_firmware.py

To check a connected board after uploading (close any serial monitor first):

python tests/hardware_smoke.py --port COM44 --require-gps-data --require-sd

Use your board's actual port. Omit either peripheral requirement when absent.
The script reads diagnostics; it does not enable the unwired OPT101 detector.

The factory image includes bootloader, the current partition table, boot-app
metadata and application. It does not format SD.
The OPT101 toggle must be enabled after wiring; radio starts in dashboard mode.

Research and inspiration: Colonel Panic and
OUI Spy Unified Blue.

Flock Noir v0.4.1 - XIAO ESP32-S3 Sense

Choose a tag to compare

@github-actions github-actions released this 22 Sep 20:29

Flock Noir 0.4.1 - XIAO ESP32-S3 Sense

This patch fixes a Bluetooth startup crash by reserving BLE memory before
Arduino initialization. It also initializes the ADC before configuring its
attenuation, enables direct camera DMA into PSRAM, services radio packets
between frames, and buffers GPS input during peripheral startup.

Join WiFi Flock Noir, password flocknoir, then open http://192.168.4.1.

Factory image: FlockNoir-merged-0x0.bin, flash at 0x0.
SHA-256: see FlockNoir-merged-0x0.bin.sha256.

Built with PlatformIO Core 6.1.19, pioarduino platform 55.03.39,
Arduino ESP32 3.3.9 and TinyGPSPlus 1.0.3. Hardware configuration:
8 MB flash, OPI PSRAM, ATGM336H on D7/D6 at 9600 baud, OPT101 OUT on
D1/GPIO2, OV2640 without IR-cut filter, Sense SD on CS GPIO21.

Validation on September 22, 2026:

  • Target firmware compiles successfully without compiler warnings/errors.
  • Host C++ tests cover camera compactness/staleness, pulse validation,
    sampling gaps, timer rollover, BLE signature rules, malformed packets,
    Remote ID message packs, NAN transport and coordinate decoding.
  • Browser tests cover desktop/mobile layout, escaped device names,
    settings submission, IR/radio banner and Pi capability fallback.

On the connected XIAO ESP32-S3 Sense, flash hashes verified and a 30-second
hardware check passed with camera frames at 25.0-25.1 fps, ADC sampling at
1000 Hz, WiFi/BLE scanning active, zero dropped radio packets, SD mounted, and
new valid ATGM336H messages with zero checksum failures. GPS had no satellite
fix during the check. OPT101 was not wired, so its detection toggle stayed off;
ADC activity does not establish optical detection or sensor connection.

Optical range, field accuracy, recording/capture load, sustained SD throughput
and known-source pulse validation remain untested on hardware.

To reproduce and package:

python tools/html2header.py
python -m platformio run -e xiao_esp32s3_sense
python tools/package_firmware.py

To check a connected board after uploading (close any serial monitor first):

python tests/hardware_smoke.py --port COM44 --require-gps-data --require-sd

Use your board's actual port. Omit either peripheral requirement when absent.
The script reads diagnostics; it does not enable the unwired OPT101 detector.

The factory image includes bootloader, partition table, boot-app metadata and
application. It changes the old flash partition layout. It does not format SD.
The OPT101 toggle must be enabled after wiring; radio starts in dashboard mode.

Flock Noir pi-v0.4.3 - Raspberry Pi Zero 2 W

Choose a tag to compare

@github-actions github-actions released this 22 Sep 22:27

Flock Noir 0.4.3 - Raspberry Pi Zero 2 W

Installable Raspberry Pi OS Lite arm64 image with Flock Noir, the shared XIAO/Pi
pulse and radio parsers, unchanged dashboard design, BLE scanning, WiFi candidate
detection, watchlists, Remote ID, evidence logs and capture downloads.

This release adds the omitted Flock-You serial/DFU hints, Flipper BLE and
Pineapple SSID candidates, Detector-tab radio alerts/history, and Mario sounds
for new ALPR/Flock, Axon, Meta and tool-device encounters. Duplicate packets
stay quiet; mute/buzzer controls apply. Weak/shared signatures remain hints.

Flash flocknoir-pi.img.xz with Raspberry Pi Imager's Use custom option.
Verify the adjacent SHA-256 checksum. Join Flock Noir, password flocknoir,
and open http://192.168.4.1. SSH login is flock / flocknoir; change it
with passwd after first boot.

The OPT101 detector starts off. Wire OPT101 OUT to MCP3008 CH0, with the module,
ADC VDD and ADC VREF powered from 3.3 V, then enable the detector. Pi has no
built-in analog input. GPS remains at 9600 baud on /dev/serial0.

Onboard WiFi provides surveys and the hotspot. Passive WiFi packet capture
requires a separate monitor-capable USB adapter configured in pi/config.py.
Pi field mode hops that adapter while preserving dashboard access.

Automated parser/API tests also run against the ARM library during image
provisioning. Physical Pi camera/radio/optical testing has not been performed
in this session. Detection evidence does not establish a camera's identity.

See Pi wiring and setup.
Research and feature inspiration: Colonel Panic and
OUI Spy Unified Blue.

Full Changelog: pi-v0.4.1...pi-v0.4.3

Flock Noir pi-v0.4.1 - Raspberry Pi Zero 2 W

Choose a tag to compare

@github-actions github-actions released this 22 Sep 21:00

Flock Noir 0.4.1 - Raspberry Pi Zero 2 W

Installable Raspberry Pi OS Lite arm64 image with Flock Noir, the shared XIAO/Pi
pulse and radio parsers, unchanged dashboard design, BLE scanning, WiFi candidate
detection, watchlists, Remote ID, evidence logs and capture downloads.

Flash flocknoir-pi.img.xz with Raspberry Pi Imager's Use custom option.
Verify the adjacent SHA-256 checksum. Join Flock Noir, password flocknoir,
and open http://192.168.4.1. SSH login is flock / flocknoir; change it
with passwd after first boot.

The OPT101 detector starts off. Wire OPT101 OUT to MCP3008 CH0, with the module,
ADC VDD and ADC VREF powered from 3.3 V, then enable the detector. Pi has no
built-in analog input. GPS remains at 9600 baud on /dev/serial0.

Onboard WiFi provides surveys and the hotspot. Passive WiFi packet capture
requires a separate monitor-capable USB adapter configured in pi/config.py.
Pi field mode hops that adapter while preserving dashboard access.

Automated parser/API tests also run against the ARM library during image
provisioning. Physical Pi camera/radio/optical testing has not been performed
in this session. Detection evidence does not establish a camera's identity.

See Pi wiring and setup.
Research and feature inspiration: Colonel Panic and
OUI Spy Unified Blue.

Full Changelog: xiao-v0.4.1...pi-v0.4.1