> ## Documentation Index
> Fetch the complete documentation index at: https://docs.efference.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# SDK Changelog

> Release history for the Efference host SDK and command-line tools

The host SDK and `ef-cli` are published at
[github.com/EfferenceAI/efference](https://github.com/EfferenceAI/efference).
See [Installation](/get-started/installation) to get the current version.

<Note>
  SDK versions track the firmware they pair with. Where an SDK release carries no
  firmware change, that is called out in the entry.
</Note>

<Update label="2026-08-13" description="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.

    ```
    [download   ]  42%  69.3/164.6 MB  16.0 MB/s
    ```

    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.
</Update>

<Update label="2026-08-12" description="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.
</Update>

<Update label="2026-08-06" description="v00.09.18">
  Pairs with M1 firmware v00.09.18.

  * Wi-Fi band selection.
  * Scoped admin grants.
  * Reworked the MCAP to MP4 tool.
</Update>

<Update label="2026-08-02" description="v00.09.17">
  Pairs with M1 firmware v00.09.17.
</Update>

<Update label="2026-07-29" description="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.
</Update>

<Update label="2026-07-27" description="SDK tooling">
  * Added `ef-decrypt` for reading encrypted recordings.

  No firmware change; devices stay on 00.09.15.
</Update>

<Update label="2026-07-27" description="v00.09.15">
  Pairs with M1 firmware v00.09.15.

  * Video encryption support.
  * Device locking.
  * Bug fixes.
</Update>

<Update label="2026-07-25" description="v0.9.14">
  * Bug fixes for Bluetooth LE and over-the-air updates.
</Update>

<Update label="2026-07-24" description="v0.9.10">
  Released alongside M1 firmware v00.09.10.
</Update>

<Update label="2026-07-21" description="v0.9.2">
  * Internal source reorganization and comment cleanup.
</Update>

<Update label="2026-07-21" description="v0.9.1">
  First public release of the Efference SDK.
</Update>
