Porting guide

If you have a development board that is not officially supported by Edge Impulse, no problem. This guide contains information on connecting any device to Edge Impulse.

Collecting data

Edge Impulse can handle data from any device, whether it's coming from a new development board or from a device that has been in production for years. Just post your data to the ingestion service and it will automatically show up in the studio. You can either do this directly from your device (if it has an IP connection) or through an intermediate protocol like a phone application. To deal with data that is already collected we have the Uploader tools, which can label and import data.

A quick way of getting data from devices is using the Data forwarder. This lets you forward data collected over a serial interface to the studio. This method only works on sensors with lower sampling frequencies (f.e. no audio), does not allow sensor selection, and does not sign data on device. It's however a really easy way to collect data from existing devices with just a few lines of code.

Running impulses

The Inferencing SDK enables you to run impulses locally and on-device. The SDK contains efficient native implementations of all processing and learning blocks. The SDK was written in portable C++11 with as little dependencies as possible, and the best way of testing out whether it works on your platform is through the Deployment page in the studio. From here you can export a library with all blocks, configuration and the SDK. See the Running your impulse locally tutorials.

If you need to make changes to the SDK to get it to run on your device we welcome contributions. We also welcome contributions which add optimized code paths for your specific hardware. The SDK documentation has more information on where to add these.

Controlling the device from the studio

Devices can be controlled from the studio through the Remote management interface. This is a service where devices connect to, either over a web socket or through a serial connection (with the help of the Serial daemon). The studio lists these devices, and can instruct them to start sampling straight from the UI.

To add full support for your development board you'll need to implement the serial protocol and (if your device has an IP connection) the websocket protocol. Alternatively you can also implement the web socket protocol through an intermediate layer (like a mobile phone app). There are end-to-end integration tests available at edgeimpulse/integration-tests-firmware which validate both the serial and websocket protocols on a development board.

Devices that connect through the data forwarder can be controlled by the studio, but have a limited integration. They don't support sensor or frequency selection.

Full integration in Edge Impulse, and help porting?

Do you want help porting? Or want to get the best integration in Edge Impulse, including full studio support, and want to let users build binaries directly from the UI? Contact us and we'll let you know the possibilities.

Last updated