Skip to main content
The host SDK and ef-cli are published at github.com/EfferenceAI/efference. See Installation to get the current version.
SDK versions track the firmware they pair with. Where an SDK release carries no firmware change, that is called out in the entry.
v00.09.22
Pairs with M1 firmware v00.09.22.Exposure telemetry
  • Device::retrieve_ae() returns the exposure the device applied to a frame: integration time in seconds, analog and digital gain as linear multiples, ISO, an estimated scene colour temperature in kelvin (0 when unavailable), and the frame id and timestamp it belongs to. One reading arrives per streamed frame; compare its frame_id with the image’s before pairing them. Readings ride the IMU stream, so over USB they need enable_imu.
  • On an encoded stream a Mat now carries the frame id and timestamp of the picture it holds, which can be one frame behind the frame grab() latched. Use the Mat’s own getFrameId() / getTimestamp() to pair pixels with data.
Viewer
  • s (or the Save button on Qt builds) writes the current frame as a full-resolution PNG into --save-dir, with a JSON sidecar carrying the frame id, device timestamp, firmware version, requested flip mode and the newest exposure reading. The console status line now shows the exposure reading beside the IMU values.
Support
  • ef-cli logs upload [--boots <n>] asks the device to collect its diagnostic bundle and send it to Efference support over its own Wi-Fi; ef-cli logs status reports the outcome. Nothing passes through the host. (Device::upload_logs, get_logs_upload_status.)
Device information
  • A command refused because the device has stopped itself after a fault now says so and says how to recover. health_check is allowed in that state.
  • info no longer reports the IMU as available from a calibration flag; it reports what the hardware says.
Health
  • The deep sweep takes about 35 s; the SDK’s documented deadlines are unchanged.
Tools
  • mcap_to_video --from-stream muxes an already-extracted elementary stream, and the mux settings (colour description, index placement) are now tested.
v00.09.21
Pairs with M1 firmware v00.09.21.Recording head delay
  • ef-cli config ae-settle <on|off> controls whether a recording waits for auto-exposure to converge before keeping the first frame. Device information reports the policy in force, and reports it as absent — rather than as a default — on firmware that predates the feature.
Updates
  • check-update shows the release notes published with an update, broken out into security, added and changed, so you can read what an update contains before applying it.
MCAP
  • The reader handles zstd-compressed Chunk records.
Requirements
  • The compiler and optional-dependency requirements are stated in the SDK README.
v00.09.20
Pairs with M1 firmware v00.09.20.Downloads
  • A long pull reports progress on a line that redraws in place, showing the percentage, the bytes transferred and the rate the link is achieving.
    The line is erased when the transfer ends, leaving saved <path> as the result. Nothing is printed when output is redirected, so a script still reads exactly one line.
  • Re-running the same command resumes an interrupted pull, and the progress it reports opens at the fraction already on disk. The file an unfinished pull leaves behind is a partial rather than a readable .mcap, so finish the pull before handing it to a reader.
  • A recording name is a session name rather than a path. A name carrying a path separator is refused with INVALID_FUNCTION_CALL, whether or not you give a destination.
v00.09.19
Pairs with M1 firmware v00.09.19.Recordings drive
  • Device information now reports the recordings drive, so a caller can tell whether the device is presenting its recordings as a USB volume.
Location
  • Removed the hardcoded default location.
Wi-Fi
  • Link usability is reported separately from association, so a network that associated but does not actually carry traffic is no longer reported as working.
Uploads and streaming
  • Uploads report why they failed and show live progress. A refused upload URL is no longer reported as a device password error.
  • Frame accounting compares what the device sent against what the host received, behind --stats.
Bluetooth
  • Added forget-ble-bonds, which clears the device side only.
Uploads
  • upload --resumable marks the URL as a resumable-session URI. upload_recording() takes a matching resumable argument.
v00.09.18
Pairs with M1 firmware v00.09.18.
  • Wi-Fi band selection.
  • Scoped admin grants.
  • Reworked the MCAP to MP4 tool.
v00.09.17
Pairs with M1 firmware v00.09.17.
v00.09.16
Pairs with M1 firmware v00.09.16.
  • wifi add quoting guard, so an SSID containing spaces is handled correctly.
  • Hidden password prompt when the pre-shared key is omitted.
SDK tooling
  • Added ef-decrypt for reading encrypted recordings.
No firmware change; devices stay on 00.09.15.
v00.09.15
Pairs with M1 firmware v00.09.15.
  • Video encryption support.
  • Device locking.
  • Bug fixes.
v0.9.14
  • Bug fixes for Bluetooth LE and over-the-air updates.
v0.9.10
Released alongside M1 firmware v00.09.10.
v0.9.2
  • Internal source reorganization and comment cleanup.
v0.9.1
First public release of the Efference SDK.