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 itsframe_idwith the image’s before pairing them. Readings ride the IMU stream, so over USB they needenable_imu.- On an encoded stream a
Matnow carries the frame id and timestamp of the picture it holds, which can be one frame behind the framegrab()latched. Use theMat’s owngetFrameId()/getTimestamp()to pair pixels with data.
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.
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 statusreports the outcome. Nothing passes through the host. (Device::upload_logs,get_logs_upload_status.)
- A command refused because the device has stopped itself after a fault now
says so and says how to recover.
health_checkis allowed in that state. infono longer reports the IMU as available from a calibration flag; it reports what the hardware says.
- The deep sweep takes about 35 s; the SDK’s documented deadlines are unchanged.
mcap_to_video --from-streammuxes 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.
check-updateshows 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.
- The reader handles zstd-compressed Chunk records.
- 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.
- Removed the hardcoded default location.
- 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 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.
- Added
forget-ble-bonds, which clears the device side only.
upload --resumablemarks the URL as a resumable-session URI.upload_recording()takes a matchingresumableargument.
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 addquoting guard, so an SSID containing spaces is handled correctly.- Hidden password prompt when the pre-shared key is omitted.
SDK tooling
- Added
ef-decryptfor reading encrypted recordings.
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.

