1
Plug in and discover
device_id and serial:2
Device information
open(). Note the firmware_version line — the next step changes it.3
Update the firmware
A device fresh out of the box is usually behind. Update it before anything
else, so everything after this runs on current firmware.The bundle is pushed over USB, so this path needs no network at all. Each
phase completes in order and the tool prints the running version at the end:The device reboots partway through and the tool waits for it to come back.
Allow a couple of minutes end to end. Saved WiFi networks, recordings, and
the device serial all survive the update.
With the device on a network you can skip the file:
ef-cli check-update
asks the update service what is available, and ef-cli update fetches and
applies it. See Firmware updates.4
Health check
PASS / FAIL with detail, ending in an overall=
line. The quick sweep covers 22 checks; --deep adds nine more —
eMMC throughput, a multi-core coherency burn, thermals under load, camera
frame statistics, and IMU streaming.Two lines surprise people, and both are correct:usb: … speed=high-speedis expected. The control plane and this quickstart work at high speed.cpu: … load1=can read high on an otherwise idle device. The media threads sit in uninterruptible sleep, which counts toward load average without consuming CPU.
5
Live video
Q or Esc quits.The same thing in C++
open() claims and configures the device. The first grab() starts the live
USB data plane and waits for a frame; there is no separate start-streaming
call.Next steps
Capture video
The grab / retrieve loop, pixel formats, and compression modes.
Read the IMU
Accelerometer and gyroscope samples, timestamps, motion state.

