Persistent capture configuration
The M1 boots with a stored resolution, frame rate, and codec.set_configuration() updates these defaults while the device is IDLE:
InitParameters.
Storage
Query device storage before a long device-local recording:STORAGE_FULL.
Time
open() aligns the device clock to the host automatically. Re-align a
long-running session or read the device clock directly:
sync_time() writes host wall time to the device. get_device_time() performs
a control round-trip and returns the device’s current epoch timestamp. Use
Mat::getTimestamp() and ImuSample::timestamp for capture timestamps.
Location
The device stamps recordings with aLocationFix. Persist a location (until
changed) or read the effective one:
RecordingParameters::has_location and location.
Control password
One password covers both transports (factory default123456). BLE control is
always gated by it; USB is gated once the device is locked. Rekey it:
factory_reset() is the remaining route.
The method retains the name set_ble_password for source compatibility, but it
has applied to both transports since the USB lock was introduced. Locking,
at-rest encryption, key handling and recovery are covered in Access Control and
Encryption.
State and reboot
get_state() never blocks; it returns the last known state. Calls that are
invalid for the current state return INVALID_FUNCTION_CALL without contacting
the device.
Stop capture, recording, upload, health, or update work before rebooting. The
SDK closes the handle when the reboot command is accepted, or when the link
disappears because the reboot began before the reply arrived. Reconnect with
open() after the device returns.

