Skip to main content
Use the automated installer on Ubuntu or another apt-based Linux host.

Before you begin

  • Ubuntu 22.04 or 24.04 is recommended
  • Connect the M1 with a USB-C data cable, preferably to a direct USB 3.x port
  • Your user must be able to run sudo for the first-time --deps install, which adds apt packages and the USB udev rule
See Recommended Specifications for compatible hosts and device requirements.

Install

1

Clone the public repository

2

Build the Linux SDK

--deps installs packages and the M1 USB udev rule, then builds the SDK and tools. This first run uses sudo.
3

Re-plug the M1

The installer creates /etc/udev/rules.d/51-efference.rules. Disconnect and reconnect the device after the first installation so the new permissions take effect.
4

Verify the installation

ef-cli list should discover the connected M1. ef-cli info prints its serial, firmware version, capture modes, camera configuration, IMU parameters, and wireless status.
The binaries are written to sdk/linux/build/: efference-viewer and ef-decrypt are built only when their optional dependencies are present, and the configure output says which were found. The viewer needs OpenCV and FFmpeg, ef-decrypt needs libssl-dev; --deps installs both sets.
After installation, run ./build.sh to rebuild without changing packages or USB permissions. To install only the udev rule, run sdk/linux/build.sh --udev.

Put the tools on your PATH

Invoking the tools by their full path always works. For regular use, choose one of the following:
--install copies ef-cli and ef-decrypt onto your PATH and installs the library, its headers, and the calibration shared objects, so find_package(ef) resolves in your own CMake project. Because it copies rather than links, re-run it after every rebuild. efference-viewer is not installed; run it from sdk/linux/build/. source env.sh puts the build directory itself on PATH, so it is current the moment a build finishes, and it also sets CMAKE_PREFIX_PATH so the tutorials resolve find_package(ef). It works from any directory if you give its full path, and adding that line to ~/.bashrc makes it apply to every new shell.

Next step

Continue with Connection & Lifecycle, or set up wireless operation.