Docs / Contact / devices/connect

Connecting a Board

Plug the board into USB and click Connect Device. The browser shows its own port picker. Pick your board, and that's the whole handshake. Contact remembers the grant, so on a later reload it reconnects to the same port without asking again.

Connect card with the board detected: platform, machine, USB IDs, free heap, and the recommended tier Connect, and the board identifies itself.

The serial link opens at 115200 baud, 8-N-1, no flow control, which is MicroPython's REPL default. There is nothing to configure.

What gets detected

As soon as the port opens, the tab enters MicroPython's raw REPL and asks the board about itself. Everything below is read from the device, not guessed from the USB descriptor:

Field Where it comes from Used for
Platform sys.platform Matching a board profile (esp32, mimxrt, rp2, …)
Machine sys.implementation._machine The human-readable board string, and OpenMV detection
USB Vendor / Product The WebSerial port descriptor Identifying look-alike boards
Free heap gc.mem_free() after a collect Recommending an install tier
Installed SDK Reading lib/tendrl on the board Showing what's already there instead of what's recommended
Camera sensor sensor.get_id() on camera boards Capping the resolution list to what the sensor can actually do

The tier recommendation

The badge next to the board name is a recommendation based on free heap, not a description of what's installed:

Once the SDK is actually on the board, the badge switches to reporting the real installed state. The recommendation is only ever a starting point for the provisioning form; see Provisioning.

Supported boards

Boards with a profile are recognized by name and get firmware/streaming metadata:

Profile Matches Notes
ESP32 esp32 Recommended for production with PSRAM. Flashable.
ESP32-S2 esp32 / S2 Flashable.
ESP32-S3 esp32 / S3 Newer architecture, more memory. Flashable.
ESP32-C3 esp32 / C3 Flashable.
Raspberry Pi Pico W rp2 WiFi capable, lightweight. Not flashable here (use UF2). No btree or frozen umqtt; see Supported boards.
OpenMV (IMXRT) mimxrt Purpose-built camera boards. Camera, clips, and vision available.

A board without a profile still connects and works. You get the raw platform/machine strings instead of a friendly name, and no firmware download. For the full hardware compatibility picture including memory, see Supported boards.

Reset controls

Two resets, for two different situations:

Disconnecting

Click Disconnect, or just unplug the board; the read loop notices and the tab drops back to the disconnected state cleanly. Anything holding the REPL exclusively (a live camera loop, a running script) is stopped first.

If the board has stopped responding, releasing the port can fail: the browser is waiting on a device that will never answer. When that happens the tab says so explicitly rather than pretending it disconnected. Close the browser tab to free the port. Until you do, nothing else can open it, and other tools will report the port as busy.

Reset device

Reset device pulses the serial control lines to reboot the board. This relies on the ESP32 auto-reset circuit, so it only works on ESP32-family boards; on OpenMV (STM32, Alif, N6) the pins aren't wired that way and the pulse does nothing. The button is disabled with an explanation on boards that can't use it.

Soft re-runs main.py via Ctrl-D. It needs a board that is still answering.

If a board is genuinely frozen (no response to either), press the reset button on the board itself, or unplug and replug it. A frozen board can also take the serial port down with it, in which case close the tab as above.

A crashing `main.py` looks exactly like dead hardware

If main.py hard-faults at boot, the board can drop off USB moments after it appears, so nothing can connect and it looks bricked. Boot it without main.py (OpenMV skips it in safe mode: hold the USER button while powering on), or delete the file from the board's USB drive, then reconnect.

One conflict worth knowing about: only one thing can own the port at a time. If you have mpremote, Thonny, the OpenMV IDE, or a screen session attached to the same board, Connect will fail. Close the other tool first. The same applies in reverse while flashing firmware, which takes the port over entirely.