cancel
Showing results for 
Search instead for 
Did you mean: 

LSM6DSOX: How to configure MLC / UNICO to wake MCU using INT1 on only ONE specific gesture (ignore all others)?

mminhaj23
Visitor

Hello ST community,

I am working with LSM6DSOX and using the Machine Learning Core (MLC) configured through UNICO GUI. My goal is to use the sensor as a low-power wake-up source for my system.

System overview:

  • MCU: nRF52840 (goes to deep sleep / system OFF)

  • Sensor: LSM6DSOX

  • Interface: I²C

  • Interrupt: INT1 used as hardware wake-up source

  • MCU is sleeping, so no software filtering is possible before wake-up


What I want to achieve

I want the MCU to wake up ONLY when one specific gesture occurs (for example a “wave” gesture).

  • INT1 should assert only for this one gesture

  • INT1 should NOT trigger for:

    • static state

    • random shake

    • other trained gestures

    • noise or motion not matching the target gesture


What I have already done

  • I successfully trained multiple gestures in UNICO GUI using MLC.

  • I can export and load the UCF correctly.

  • INT1 triggers when any gesture is detected.

  • I can read MLC status (Get_MLC_Status) after MCU wakes, but this does not help because:

    • The MCU must already be awake to do software filtering.

    • I need hardware-level filtering, since INT1 is the wake source.


Problems / limitations

  1. Training only one gesture

    • Training with a single gesture often produces false positives.

    • In practice, accuracy improves when training with two or more gestures, but then:

      • INT1 triggers for all detected classes.

  2. Interrupt behavior

    • INT1 appears to trigger on any MLC state change, not on a specific class.

    • I want INT1 to be asserted only for one Meta Classifier output (e.g., class 0).

  3. UNICO configuration uncertainty

    • It is unclear how to:

      • Properly define “everything else” as negative class

      • Tune features / windows to avoid false wakeups

      • Map only one MLC class to INT1 at hardware level


My questions

  1. Training question (UNICO / MLC)

    • What is the recommended way to train one wake-up gesture while ignoring all other motions?

    • Is it better to:

      • Train one gesture + “no motion”?

      • Train multiple gestures but only use one as wake-up?

    • Which UNICO features are recommended to minimize false positives for wake-up use cases?

  2. Interrupt routing question

    • Is it possible to configure LSM6DSOX so that:

      • INT1 is asserted only for one specific MLC class (Meta Classifier index)?

      • Other classes do not toggle INT1 at all?

    • If yes:

      • Which register(s) should be used?

      • Should MLC_INT1 be programmed manually?

      • Is this configurable directly from UNICO with offline mode?

  3. Best-practice question

    • What is the recommended ST approach for using LSM6DSOX MLC as a gesture-based wake-up source when the MCU is fully asleep?

0 REPLIES 0