eNI — Neural Interface Platform
Configurable Channels · Hardware-Defined Sample Rates · Neural Research
An in-development neural signal acquisition and processing platform for EEG, EMG, ECoG, LFP, and spike-train research. Channel count and sample rate depend on the acquisition hardware and configuration; performance limits remain research targets until measured on a named setup.
For a shorter introduction to eNI, see the eNI overview. This page is the engineering detail.
How It Works
Step-by-step flow — from initialization to output.
Configure the Acquisition Pipeline
Select the signal modality (EEG, EMG, ECoG, LFP, spikes) and configure the channel map, sample rate, and hardware filter parameters. eNI supports mixed-modality acquisition — EEG and EMG simultaneously on different channel groups.
eni_config_t cfg = {
.modality = ENI_MOD_EEG | ENI_MOD_EMG,
.eeg_channels = BOARD_EEG_CHANNELS,
.emg_channels = BOARD_EMG_CHANNELS,
.eeg_fs = BOARD_EEG_SAMPLE_RATE,
.emg_fs = BOARD_EMG_SAMPLE_RATE,
.ref = ENI_REF_AVERAGE,
};
eni_t eni = eni_open(&cfg);Apply Hardware Filters
eNI's FPGA/DSP pipeline applies notch filters (50/60 Hz), bandpass filters, and common-average referencing in hardware — before the data reaches the CPU. This removes the most expensive processing from the software stack.
// Configure hardware filter chain eni_filter_notch(eni, ENI_NOTCH_60HZ); eni_filter_bandpass(eni, 0.5f, 300.0f); // 0.5–300 Hz for EEG eni_filter_car(eni, ENI_CAR_GLOBAL); // Common-average reference
Run Spike Sorting
For extracellular recordings, eNI's hardware spike sorter detects action potentials, extracts waveform features, and clusters them into single-unit activity — all in real time, without CPU involvement.
// Enable hardware spike sorter
eni_spike_config_t sc = {
.threshold_uv = -50.0f, // -50 µV threshold
.window_ms = 1.5f, // 1.5 ms waveform window
.n_clusters = 4, // Up to 4 units per channel
};
eni_spike_enable(eni, &sc);Stream Data to eAI via EIPC
eNI packages filtered signals and spike events into EIPC messages and sends them to the eAI inference task. The design uses HMAC-SHA256 integrity and AES-256 encryption; medical use would require system-level validation and regulatory approval.
// eNI streams to eAI via EIPC
void eni_stream_task(void *arg) {
for (;;) {
eni_frame_t frame;
eni_read(eni, &frame, ENI_WAIT_FOREVER);
eipc_send(eai_port, &frame, sizeof(frame));
}
}Decode Intent with eAI
eAI receives the neural data frame, runs the BCI decoder model, and outputs the decoded motor intent or gesture class. The result is sent via EIPC to the actuator (robotic arm, cursor, stimulator).
// eAI BCI decoder (receives from eNI via EIPC)
void eai_bci_task(void *arg) {
for (;;) {
eni_frame_t frame;
eipc_recv(eni_port, &frame, EOS_WAIT_FOREVER);
eai_tensor_t out = eai_infer_sync(bci_model, frame.eeg);
int intent = eai_argmax(out);
eipc_send(arm_port, &intent, sizeof(intent));
}
}Usage Examples
Real-world scenarios showing eNI in action.
Illustrative research configuration for evaluating ECoG motor-intent decoding with an assistive controller.
// Illustrative research pipeline: ECoG → eNI → EIPC → eAI
#include <eni/eni.h>
#include <eai/model.h>
#include <eipc/eipc.h>
void bci_pipeline_init(void) {
eni_config_t cfg = {
.modality = ENI_MOD_ECOG,
.eeg_channels = BOARD_ECOG_CHANNELS,
.eeg_fs = BOARD_ECOG_SAMPLE_RATE,
};
eni_t eni = eni_open(&cfg);
eni_filter_bandpass(eni, 70.0f, 200.0f);
eai_model_t decoder = eai_model_load("research_decoder.eai",
EAI_BACKEND_NPU);
eni_stream_to_eai(eni, decoder, research_output_port);
}Features
The shape of eNI at a glance.
Configurable Channel Maps
Configure EEG, EMG, ECoG, LFP, and spike-train inputs within the limits of the attached acquisition hardware.
Hardware Spike Sorter
FPGA-based spike detection, waveform extraction, and clustering — no CPU cycles consumed.
Mixed-Modality Acquisition
EEG and EMG simultaneously on different channel groups with independent sample rates.
Hardware Filter Chain
Notch (50/60 Hz), bandpass, and common-average referencing applied in hardware before CPU.
Hardware-Pipelined Signal Path
Filtering and spike sorting run in the FPGA/DSP pipeline ahead of the CPU, so the electrode-to-EIPC path carries no software filtering overhead.
Isolation Design Target
The hardware design targets IEC 60601-1 patient-isolation requirements; certification and physical validation are pending.
Impedance Measurement
Built-in electrode impedance measurement for signal quality monitoring.
Configurable Reference
Global common-average, local bipolar, or custom reference montage.
Role in the EoS Ecosystem
Why eNI matters — and what breaks without it. See how the pieces fit together in the EmbeddedOS ecosystem overview.
eNI is the sensory nervous system of the EoS ecosystem. It bridges the biological world — neurons, muscles, brains — with the digital world of EoS. Without eNI, EoS cannot acquire the high-density biosignals needed for BCI prosthetics, seizure detection, cognitive load monitoring, or neural-controlled interfaces. eNI is the only component in the EoS stack that operates at the boundary between biology and silicon, making it indispensable for the entire eHealth365 and BCI product line.
Depends On
Enables / Powers
Open source on GitHub
MIT licensed and developed in the open. Issues, discussions, and pull requests welcome.
Every EmbeddedOS repository, with install commands, is listed on the downloads page.
In the EoS stack
eNI is highlighted in the layer below.
Pairs well with
Sibling components that eNI commonly works alongside.
Technical Specifications
| Channels and Sample Rate | Configuration-specific; limited by the acquisition front end |
| ADC Resolution | Acquisition-front-end dependent |
| Input Noise | Hardware benchmark pending |
| CMRR | Hardware benchmark pending |
| Processing Path | Hardware DSP/FPGA pipeline (filtering + spike sorting) ahead of the EIPC handoff |
| Safety | Design target: IEC 60601-1 patient isolation; validation pending |
| Interface | SPI / LVDS to host processor; EIPC to eAI |
| License | MIT (software); hardware schematics under CERN-OHL-S |
