ef::Device. Choose a control transport,
fill InitParameters, and call open() before using a device feature.
Discover devices
USB discovery is always available:device_id and serial. Bluetooth LE (BLE) results
provide ble_address and ble_name.
From the command line:
Open over USB
USB is the default transport:Open over Bluetooth LE
BLE provides the control plane:udp_host empty creates a control-only session.
An incorrect password does not cause open() to fail. The device continues
to answer info, state and storage unauthenticated, and these are required
to diagnose a device whose password has been lost, so failing here would place
them behind the credential being recovered. The gated verbs report
INVALID_PASSWORD individually. Check in advance with
device.is_authenticated(), which is meaningful on any BLE link and on a USB
link the device reports as locked. See Access Control and
Encryption.
Add wireless live data
Provision the M1 on WiFi first, then set the receiving Linux host’s reachable IP address:Session behavior
open() claims the control transport, validates capture settings, aligns the
device clock, and caches device information. It normally leaves the handle in
IDLE, though pre-existing device activity may report STREAMING.
The first grab() starts the USB or WiFi/UDP data plane, so control-only work
does not start a live stream unnecessarily.
MCAP replay is the exception: open() creates the reader and reports
STREAMING.
Inspect identity and capabilities
get_device_information() returns the snapshot cached by open():
open() and updated by the WiFi calls, so a handle held open across
a network change continues to report the values captured earlier. Request an
update explicitly when current values are required:
Close the session
open() on an already open handle returns
INVALID_FUNCTION_CALL. Close it before opening a different transport or
device.
Common connection errors
USB control permits one client per cable. While an SDK application or
ef-cli
holds the device open, a second USB open() is refused with DEVICE_BUSY. BLE
remains available in parallel, so a long-running USB application does not prevent
operator access to the device.
INVALID_PASSWORD is deliberately absent from this table: authentication failure
is not reported by open(), only by the gated verb called subsequently.
