Motor intent decoding is the core technical challenge in any closed-loop motor BMI. Everything else in the pipeline, acquisition, preprocessing, stimulation, is relatively well-understood engineering. Decoding is where the algorithm needs to bridge between messy, variable neural population activity and a structured command that means something to a downstream system. Getting this right for rehabilitation applications, where the goal is augmenting residual voluntary control rather than replacing it entirely, requires thinking carefully about what signal features you are using, what decoder architecture you are deploying, and how those choices interact with the update rate requirements of a real-time closed-loop system.
This post covers the signal features used in motor BMI decoders, the major decoder architectures and their tradeoffs, and the update rate decisions that constrain how all of these work together in a rehabilitation device context.
What Neural Signals Carry Motor Intent Information
Motor intent information is distributed across multiple signal features in the cortical signal. Understanding which features are available depends on your recording modality.
For spiking activity from penetrating microelectrode arrays, the primary feature is multi-unit or sorted single-unit firing rates. Firing rates in primary motor cortex encode movement direction and movement velocity for a large proportion of neurons, following a tuning function first described by Georgopoulos in the 1980s. The population vector sum across a tuned population gives a reliable readout of the intended movement direction. For rehabilitation applications, where you typically do not need a full 3D trajectory but rather a discrete movement class (grasp, release, extend, flex), a firing rate feature with a linear or low-complexity nonlinear decoder is often sufficient and has favorable computational properties.
For ECoG or high-density scalp EEG, spiking activity is not directly observable. The primary features are power in specific frequency bands. The high-gamma band (70 to 150 Hz) shows sustained power elevation during voluntary movement preparation and execution and is the most reliable broadband feature for ECoG-based motor intent decoding. Beta-band power (13 to 30 Hz) shows desynchronization during movement preparation and re-synchronization after movement, making it a useful complementary feature particularly for detecting movement onset and offset. Alpha-band changes are less consistent across subjects and electrode locations but are sometimes useful for distinguishing rest from active motor states.
Extracting these features requires different windowing and computation strategies. High-gamma power estimation needs a window of at least 50 to 100 ms to get a reliable estimate, but high-gamma power changes within 50 ms of movement onset, so longer windows trade latency for stability. Beta desynchronization develops over 200 to 400 ms and is better suited for detecting the slower preparatory phase than for real-time command generation.
Linear Decoders: The Justified Default
For most motor BMI applications, a linear decoder is the right starting point and often the final choice. The population vector average is the simplest form: assign each neuron a preferred direction vector based on its tuning function, compute the weighted sum over the population, normalize. For more general decoding, a Wiener filter (ordinary least squares regression from neural features to movement variables) gives the minimum mean-squared error decoder under the assumption of linear tuning and Gaussian noise.
The practical advantages of linear decoders in rehabilitation contexts are significant. They are computationally trivial on any embedded processor, taking under a millisecond for populations of 100 to 200 neurons on a Cortex-M4. They are interpretable: you can examine the decoder weights and understand which channels are contributing most to which output dimensions. They are stable under prolonged operation without retraining, provided the underlying neural tuning is stable, which for ECoG is generally true over days to weeks without recalibration.
The limitation of linear decoders is that they cannot capture nonlinear relationships between neural features and movement variables. For discrete classification tasks (is the subject intending to grasp?), linear classifiers such as LDA or logistic regression work well. For continuous trajectory decoding, linear models assume that firing rates scale linearly with kinematics, which is a reasonable approximation for many neurons but not universally true.
Recurrent and Adaptive Decoders
Kalman filter-based decoders extend the linear framework by modeling movement dynamics explicitly. The Velocity Kalman Filter treats the decoded velocity as a state variable with a first-order dynamic model, smoothing the output trajectory across decode cycles. This tends to produce smoother cursor trajectories than a memoryless linear decoder, but it introduces temporal dependencies that need to be carefully designed for low-latency applications, as described in our latency budget post.
Recurrent neural networks as motor decoders have received significant research attention. The argument for recurrence is that motor cortex activity during movement is not independently determined at each moment by the movement kinematics. It has dynamics that unfold across hundreds of milliseconds, and recurrent networks can better represent those dynamics than memoryless linear models. In controlled research settings, RNN decoders have shown improvements over linear decoders particularly for complex multi-joint trajectories.
We are cautious about recommending RNN decoders for rehabilitation device firmware at this stage, for two reasons. First, the training requirements are substantial: RNN decoders need considerably more calibration data than linear decoders to converge, which is a practical challenge in rehabilitation contexts where session time is limited and subject fatigue is a real factor. Second, the computational requirements on embedded hardware are an order of magnitude higher than for linear decoders. A two-layer LSTM over a 100-channel population with a hidden size of 64 requires roughly 2 to 5 ms of compute per decode cycle on a Cortex-M4 with a floating-point unit. That is not prohibitive, but it is a meaningful fraction of the total latency budget.
Decoder Update Rate and Its Interaction with Feature Selection
The decoder update rate determines how frequently the stimulation command can change in response to decoded intent. Higher update rates enable smoother, more responsive stimulation but require shorter processing windows, which generally means noisier feature estimates.
The key relationship to understand is between the feature's natural time constant and the update rate. High-gamma power has a natural time constant of roughly 50 to 100 ms. Running the decoder at 100 Hz (10 ms update interval) with a 50 ms window means the decoder is running on overlapping windows that share 80 percent of their data. The outputs are highly correlated across consecutive cycles. This is not necessarily bad, it produces smooth output, but it means you are not getting 100 independent observations per second. The effective information rate is closer to 10 to 20 Hz for high-gamma-based ECoG decoding.
For spike-rate-based decoders, the situation is different. Spike rates can change meaningfully within 50 ms bins, and using overlapping windows with 10 ms hops gives you genuine new information at each update. The computational cost is higher because the spike sorting needs to run on the full overlap window each cycle, but the latency and information rate tradeoff is more favorable for high-update-rate applications.
In the Ruten decoder layer, window size and hop size are configurable independently of the decoder algorithm type. This lets you explore the update rate versus stability tradeoff for a specific hardware and signal combination without rebuilding the pipeline. The decoder API accepts a feature extraction function and a decode function as separately configurable components, so switching from a 100 ms window at 10 Hz to a 50 ms window at 50 Hz is a configuration change, not a firmware rewrite.
Calibration and Decoder Persistence
One practical aspect of motor intent decoding that does not get enough attention in the research literature is calibration stability over time. Decoders calibrated from a short initial session will drift in performance as neural signal characteristics change due to electrode impedance changes, tissue responses to implanted electrodes, or natural day-to-day variability in neural activity patterns. For rehabilitation applications where the device needs to work reliably across many sessions without expert recalibration, this is a real operational constraint.
The approaches that have shown the best practical stability over time are: (1) feature normalization that tracks and compensates for slow drift in baseline signal statistics, (2) lightweight online adaptation that adjusts decoder weights based on recent error signals without requiring explicit supervised retraining, and (3) designing the decoder around signal features that are intrinsically more consistent across sessions, such as broadband ECoG power rather than narrow spectral features that are more sensitive to impedance changes.
We are working on characterizing the session-to-session stability of different decoder configurations when used through the Ruten middleware, particularly on the ECoG-adapted hardware variants. The goal is to give device engineering teams specific guidance on which decoder configurations provide the best stability-performance balance for extended rehabilitation use, rather than abstract algorithm comparisons that do not account for the operational realities of the devices they are building.