Skip to main content
The M1 uses WiFi for UDP streams, recording uploads, and firmware downloads. Provision it over a USB or Bluetooth LE (BLE) control session.

Provision a network

The optional ISO country code sets the regulatory domain, and US is what unlocks 5 GHz. Saved networks persist on the device.
The M1 joins WPA2-PSK and WPA3-SAE (Personal) networks. Enterprise networks that authenticate with 802.1X/EAP are not supported, so a corporate SSID generally needs a guest or IoT network instead.

Read the connection state

WiFi status lives in the wireless block of the device information and is cached when open() succeeds. WiFi add/remove/select calls refresh that cached block after the command is accepted:
get_device_information() is cached and non-blocking. Because association is asynchronous, the first snapshot after wifi_add() may still show connecting. The snapshot is captured at open() and updated by the WiFi calls, so a handle held open across a network change continues to report the association captured earlier. Call refresh_device_information() to update it, then read the struct again:
wifi_state is one of connected, connecting, auth_failed, disconnected, or unknown. connecting appears only during a live attempt, and auth_failed means the credentials were rejected. A dropped link reads disconnected while the device reconnects on its own. unknown is set host-side when a refresh could not complete, which is different from an empty value: empty means this firmware did not report the field at all. On firmware newer than v00.09.16, connecting and auth_failed describe a specific connection attempt and expire approximately 90 seconds after it. An expired result reverts to disconnected rather than persisting, so auth_failed always refers to a recent attempt. On v00.09.16 and earlier, an auth_failed result persists until the device reboots and may therefore name a network whose credentials have since been corrected. See Core Types for the full block, including ble_connected, which reports whether a Bluetooth central currently holds the link on firmware newer than v00.09.16.

From the CLI

Saved networks are held at equal priority, so the device connects automatically to the strongest access point in range. wifi select overrides that choice for a specific saved network. Re-adding the currently connected network has no effect and does not drop the active link.
Operations that require connectivity (upload_recording(), update downloads) fail with WIFI_NOT_CONNECTED when the device is not associated. Check wireless.wifi_connected first for a better user experience.

Enable wireless streaming

Once the M1 is associated, open a new BLE session with the Linux receiver’s IP:
The M1 and receiver must be mutually reachable. udp_host is the host address, not the M1’s address.