AllocateTensors() failed when running Keyword Spotting model on Himax WE2

Question/Issue:
I am trying to deploy a Keyword Spotting model created using the Edge Impulse tutorial on a Himax WE2 (WE-I Plus) device. The original tutorial is intended for the Arduino Nano 33 BLE Sense board, but I adapted the workflow for Himax WE2.

The model builds successfully and firmware flashes correctly onto the device. However, when running inference using the command: ‘AT+RUNIMPULSE’ the inference fails repeatedly with the following error:
AllocateTensors() failed
Failed to run impulse (-3)
AllocateTensors() failed
Failed to run impulse (-3)
AllocateTensors() failed
Failed to run impulse (-3)

This appears to be related to TensorFlow Lite Micro tensor allocation / memory allocation failure during model initialization.

I would like to understand:

  • Whether additional configuration is required specifically for Himax WE2
  • Whether the tensor arena size needs to be increased manually
  • Whether the generated model exceeds available RAM on the device
  • Whether there are known limitations for Keyword Spotting models on Himax WE2

Project ID:
1004839

Context/Use case:
I am experimenting with on-device audio inference / keyword spotting on the Himax WE2 platform using Edge Impulse.

The use case is:

  • Real-time keyword spotting
  • TinyML audio inference on MCU
  • Deployment on Himax WE2 instead of Arduino Nano BLE Sense

I followed the official Edge Impulse Keyword Spotting tutorial: Keyword spotting - Edge Impulse Documentation

The tutorial works with Arduino Nano BLE Sense, but I am attempting to use the Himax WE2 board.

Steps Taken:

  1. Created a Keyword Spotting project in Edge Impulse Studio
  2. Followed the official Keyword Spotting tutorial workflow
  3. Collected/trained audio samples
  4. Configured MFCC processing block
  5. Trained neural network classifier
  6. Enabled quantized model option
  7. Deployed firmware for Himax WE-I Plus / WE2 target
  8. Flashed firmware successfully onto Himax WE2 board
  9. Opened serial terminal
  10. Executed: AT+RUNIMPULSE
  11. Observed repeated inference failure with tensor allocation errors

Expected Outcome:
The model should initialize successfully and run real-time keyword spotting inference on the Himax WE2 board.

Expected behavior:

  • Successful TensorFlow Lite tensor allocation
  • Model inference starts correctly
  • Audio predictions displayed on serial console

Actual Outcome:
Inference initialization fails immediately with:

AllocateTensors() failed
Failed to run impulse (-3)

The error repeats continuously whenever AT+RUNIMPULSE is executed.

No inference results are produced.

Reproducibility:

  • [x] Always
  • [ ] Sometimes
  • [ ] Rarely

Environment:

  • Platform: Himax WE2
  • Build Environment Details:
  • OS Version: Ubuntu 22.04
  • Edge Impulse Version (Firmware):

AT+INFO


  • Edge Impulse firmware *

Firmware build date : May 22 2026
Firmware build time : 09:44:27
ML model author : devjonathan
ML model name : Tutorial: Responding to your voice
ML model ID : 1004839
Model deploy version : 116
Edge Impulse version : v1.93.3
Used sensor : microphone

  • Custom Blocks / Impulse Configuration: MFCC
    Logs/Attachments:
    AT+RUNIMPULSE

AllocateTensors() failed
Failed to run impulse (-3)
AllocateTensors() failed
Failed to run impulse (-3)
AllocateTensors() failed
Failed to run impulse (-3)

Additional Information:
Things I have not yet tried:

  • Increasing EI_CLASSIFIER_TFLITE_ARENA_SIZE
  • Reducing MFCC coefficients
  • Reducing NN layer size
  • Enabling EON Compiler
  • Re-training smaller quantized model

Would appreciate guidance on:

  • Recommended memory settings for Keyword Spotting on Himax WE2
  • Known working configurations
  • Recommended tensor arena size
  • Whether this model type is officially supported on Himax WE2

Hi @devjonathan - I have forwarded your post to our embedded team. They have created an issue and are debugging. We recently upgraded our version of TensorFlow and it may be related. Stay tuned.

Hi @devjonathan - there is another forum thread on this same topic that I just updated. The Embedded team is still looking into a proper fix. In the meantime, there is a workaround. See this comment on the other thread.