v0.13.0 (Bringup Script Removed)

View this release on GitHub → Release Date: June 16, 2026

The external bringup script is gone — background-noise calibration is now built into the client, alongside in-client peak dumps and a new observer-only client mode.

Interface contract: carbon-interface v1.3.3 (required — earlier versions lack signed register/RAM access). Firmware compatibility: v5.1.X.

New Features

Background-noise calibration is now built into the client (Python + C++) — the external bringup script is gone. Two blocking operations configure the sensor’s background-noise mask, with the box identified automatically from its heartbeat:

  • Apply the compiled-in default mask for the connected box (fast, a few seconds; leaves the sensor untouched).
  • Refine the mask from a covered-window capture (cover the window first; the client cycles the sensor and returns it to Idle, ~10–20 s).
  • Helpers drive the sensor to Idle and wait for the first heartbeat, which both operations require. The compiled default masks are baked in at build time.

Peak dumps directly from the client (Python + C++) — dump the raw peak stream to a CSV file while the point cloud keeps streaming. The writer runs on its own thread, so starting a dump returns immediately; it can be bounded by a frame or peak count, or run until stopped, and always ends on a whole frame. This replaces the old multicast peak-mirroring mechanism.

Observer-only client mode — a new config toggle makes a client passively receive the point stream without sending anything to the sensor (no SDL, time-sync, or comms-health). This lets several clients share one sensor’s multicast stream; exactly one primary (non-observer) client owns the FPGA.

Behavior Changes

Default multicast group address changed from 224.0.0.0 to 239.255.48.84 (the Carbon push group). It must match the FPGA’s network.push_dest_ip; the primary client now points the sensor at its join group by writing push_dest_ip on connect. Update any pinned group_addr in saved configs.

Time synchronization is now always on for primary clients — the time_sync_enabled config key has been removed. A primary keeps the FPGA clock host-aligned, so observer-only clients can safely trust FPGA timestamps (use_msg_timestamp). Enabling use_msg_timestamp on an observer with no primary present is now flagged at config validation.

Removed config keys (configs are validated strictly, so loading a file containing these will now error):

  • mirror / mirror_peaks / mirror_group_addr / mirror_bind_addr — superseded by client peak dumps.
  • time_sync_enabled — time-sync is unconditional for primaries (see above).
  • carbon_alpha_bringup_dir — superseded by built-in background-noise calibration.

Other Changes

  • FPGA comms socket consolidation — time-sync, comms-health, SDL, and the new calibration paths now share a single register-I/O socket through one serializing actor, eliminating a response-routing race when multiple consumers talked to the FPGA at once. This is the plumbing that unlocked in-client background-noise calibration.
  • Visualizer sensor-config and health panels updated for the new client surface.

Documentation

For comprehensive documentation, examples, and installation instructions, visit our documentation site.

Feedback

We value your feedback! If you encounter issues or have suggestions for improvements, please see our troubleshooting guide for the best options for getting in touch with us.

← Next release
v0.13.1
Previous release →
v0.12.2

Copyright © Voyant Photonics, Inc.

This site uses Just the Docs, a documentation theme for Jekyll.