OpenEarable is the world's first fully open-source AI platform for ear-based sensing applications with true wireless audio. Packed with an unprecedented array of high-precision sensors, OpenEarable redefines what's possible in wearable tech. Designed for both development and research applications, OpenEarable is modular, reconfigurable, and built for the future.

-
Install Visual Studio Code (VS Code)
- Download and install from https://code.visualstudio.com
-
Install the J‑Link Software and Documentation Package
- Download and install from https://www.segger.com/downloads/jlink/
-
Install nRF-Util
- Download from nRF Util – Nordic Semiconductor
- Add
nrfutilto your system'sPATHenvironment variable
-
Install the nRF Connect for VS Code Extension
- Open VS Code
- Go to the Extensions tab and install "nRF Connect for VS Code"
- Install all required dependencies when prompted
-
Install the Toolchain via nRF Connect
- Open the nRF Connect tab in VS Code
- Click "Install Toolchain"
- Select and install version 3.0.1
-
Install the nRF Connect SDK
- In the nRF Connect tab, select "Manage SDK"
- Install SDK version 3.0.1
-
Open the Firmware Folder in VS Code
- Use
File > Open Folderor drag-and-drop the firmware directory into VS Code - OR in the APPLICATIONS section of the nRF Connect tab:
- Select
Open Exisiting Application - Select the
open-earable-2directory
- Select
- Use
-
Configure the Application Build
- If not already open, navigate to the nrfConnect extension tab in VSCode
- In the APPLICATIONS section of the nRF Connect extension tab:
- Select the
open-earable-2application - Click "+ Add build configuration" to set up a new build
- Select the SDK version 3.0.1, toolchain version 3.0.1, and
open-earable-2/nrf5340/cpuappas board target - To build with FOTA (firmware over-the-air update functionality):
- Leave the
Base configuration files (Kconfig fragments)dropdown empty - as
Extra CMAKE argumentsset-DFILE_SUFFIX="fota" - as
Build directoryname setbuild_fota
- Leave the
- To build without FOTA:
- Select
prj.confas theBase configuration files (Kconfig fragments) - Do not set any of the FOTA flags described above
- Select
- Select the
-
J-Link Setup
- Build and Flash
- Click on
Generate and Buildand wait for the application to build (this will take some time) - Open a new terminal in VS Code and run the following command from the root of the
open-earable-v2directory to flash the FOTA build. Make sure to set the serial number of your J-Link (right click your J-Link in theCONNECTED DEVICEStab of the nRF connect extension and copy the serial number)../tools/flash/flash_fota.sh --snr 123456789 --left # --right for the right ear device, or no flag to retain left/right bonding - or without FOTA
./tools/flash/flash.sh --snr 123456789 --left # --right for the right ear device, or no flag to retain left/right bonding
Battery states will overwrite LED connection states. All LED states can be manually overwritten via BLE service.
| LED State | Description |
|---|---|
| 🟥 Red - Solid | Battery fault or deep discharge*, charging current = 0 |
| 🔴 Red - Pulsing | Pre-charge phase or system-down voltage not yet cleared |
| 🟧 Orange - Solid | Power connected, but charging current is not verified or not at desired level |
| 🟠 Orange - Pulsing | At least 80% of the target charging current is reached |
| 🟢 Green - Pulsing | Trickle charge; final voltage (constant voltage) reached. Can be disabled via config |
| 🟩 Green - Solid | Fully charged |
*If your OpenEarable goes into deep discharge (solid red) after pre-charge (red pulse), you can unplug the OpenEarable and plug it in again. This should recover the device.
| LED State | Description |
|---|---|
| 🟠 Orange - Blinking | Battery low (7% remaining or EDV2 reached). Disabled by default, enable via config |
| 🔴 Red - Blinking | Battery critical (3% remaining or EDV1 reached) |
Battery states will overwrite LED connection states. All LED states can be manually overwritten via BLE service.
| LED State | Description |
|---|---|
| 🔵 Blue – Blinking Very Fast | Configured as left device, searching for right device |
| 🔴 Red – Blinking Very Fast | Configured as right device, searching for left device |
| 🔵 Blue – Blinking Fast | Paired with left/right, ready for device bonding |
| 🔵 Blue – Blinking Slow | Bonded, waiting for connection |
| 🟢 Green – Blinking Slow | Connected |
| 🟣 Purple – Blinking Slow | SD card recording |
Because ZephyrOS does not allow remounting of SD cards, it is very important that the device is turned of before inserting or removing the SD card. As long as a recording to the SD card is active, the LED light will blink purple.
Files recorded to the local microSD card in the binary *.oe format can be parsed using this Python notebook.
If you are using OpenEarable, please cite is as follows:
@article{roddiger2025openearable,
title = {OpenEarable 2.0: Open-Source Earphone Platform for Physiological Ear Sensing},
author = {Röddiger, Tobias and Küttner, Michael and Lepold, Philipp and King, Tobias and Moschina, Dennis and Bagge, Oliver and Paradiso, Joseph A. and Clarke, Christopher and Beigl, Michael},
year = 2025,
journal = {Proceedings of the ACM on Interactive, Mobile, Wearable and Ubiquitous Technologies},
volume = {9},
number = {1},
pages = {1--33},
publisher={ACM New York, NY, USA}
}
