<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Thingy91x ADXL367 Motion Detection Only Triggers Once After Reboot</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/126611/thingy91x-adxl367-motion-detection-only-triggers-once-after-reboot</link><description>Environment Hardware: Thingy:91 X (nRF9151) SDK: nRF Connect SDK v2.8.0 Zephyr: v4.2.99 Driver: ADXL367 with interrupt-based activity detection Configuration: CONFIG_ADXL367_TRIGGER_GLOBAL_THREAD=y 
 Problem Description 
 Motion detection triggers successfully</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Mon, 09 Mar 2026 18:21:45 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/126611/thingy91x-adxl367-motion-detection-only-triggers-once-after-reboot" /><item><title>RE: Thingy91x ADXL367 Motion Detection Only Triggers Once After Reboot</title><link>https://devzone.nordicsemi.com/thread/562857?ContentTypeID=1</link><pubDate>Mon, 09 Mar 2026 18:21:45 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:364a39ba-8ad2-4cd3-a94c-9e7c5756ac74</guid><dc:creator>0sleep</dc:creator><description>&lt;p&gt;Hi! I also want to use this accelerometer, here is what works for me (based on the accel_trig sample in zephyr, running on a thingy91x&amp;#39; ADXL367)&lt;/p&gt;
&lt;p&gt;# boards/thingy91x_nrf9151_ns.conf&lt;/p&gt;
&lt;p&gt;```c&lt;br /&gt;CONFIG_ADXL367_ACTIVITY_DETECTION_MODE=y&lt;br /&gt;CONFIG_ADXL367_INACTIVITY_DETECTION_MODE=n&lt;br /&gt;CONFIG_ADXL367_ACTIVITY_THRESHOLD=50&lt;br /&gt;CONFIG_ADXL367_ACTIVITY_TIME=10&lt;br /&gt;CONFIG_ADXL367_TRIGGER_GLOBAL_THREAD=y&lt;br /&gt;```&lt;/p&gt;
&lt;p&gt;# boards/thingy91x_nrf9151_ns.overlay&lt;/p&gt;
&lt;p&gt;```c&lt;/p&gt;
&lt;p&gt;/ {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; aliases {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; accel0 = &amp;amp;accel;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;&amp;amp;accel {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; status=&amp;quot;okay&amp;quot;;&lt;br /&gt;};&lt;/p&gt;
&lt;p&gt;```&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;# src/main.c&lt;/p&gt;
&lt;p&gt;```c&lt;/p&gt;
&lt;p&gt;/*&lt;br /&gt;&amp;nbsp;* Copyright 2024 NXP&lt;br /&gt;&amp;nbsp;* Copyright (c) 2018 Phytec Messtechnik GmbH&lt;br /&gt;&amp;nbsp;*&lt;br /&gt;&amp;nbsp;* SPDX-License-Identifier: Apache-2.0&lt;br /&gt;&amp;nbsp;*/&lt;br /&gt;&lt;br /&gt;#include &amp;lt;zephyr/kernel.h&amp;gt;&lt;br /&gt;#include &amp;lt;zephyr/drivers/sensor.h&amp;gt;&lt;br /&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;&lt;br /&gt;K_SEM_DEFINE(sem, 0, 1); /* starts off &amp;quot;not available&amp;quot; */&lt;br /&gt;&lt;br /&gt;static void tap_trigger_handler(const struct device *dev, const struct sensor_trigger *trigger)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ARG_UNUSED(trigger);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf(&amp;quot;TAP detected==========================================================\n\n\n\n\n&amp;quot;);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (sensor_sample_fetch_chan(dev, SENSOR_CHAN_ACCEL_XYZ) &amp;lt; 0) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf(&amp;quot;ERROR: SENSOR_CHAN_ACCEL_XYZ fetch failed\n&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; k_sem_give(&amp;amp;sem);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int main(void)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; struct sensor_value data[3];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; const struct device *const dev = DEVICE_DT_GET(DT_ALIAS(accel0));&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; struct sensor_trigger trig = {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .type = SENSOR_TRIG_DATA_READY,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .chan = SENSOR_CHAN_ACCEL_XYZ,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!device_is_ready(dev)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf(&amp;quot;Device %s is not ready\n&amp;quot;, dev-&amp;gt;name);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; trig.type = SENSOR_TRIG_THRESHOLD;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; trig.chan = SENSOR_CHAN_ACCEL_XYZ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (sensor_trigger_set(dev, &amp;amp;trig, tap_trigger_handler) &amp;lt; 0) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf(&amp;quot;Could not set tap trigger\n&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (1) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; k_sem_take(&amp;amp;sem, K_FOREVER);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sensor_channel_get(dev, SENSOR_CHAN_ACCEL_XYZ, data);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Print accel x,y,z data */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf(&amp;quot;%16s [m/s^2]:&amp;nbsp;&amp;nbsp;&amp;nbsp; (%12.6f, %12.6f, %12.6f)\n&amp;quot;, dev-&amp;gt;name,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sensor_value_to_double(&amp;amp;data[0]), sensor_value_to_double(&amp;amp;data[1]),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sensor_value_to_double(&amp;amp;data[2]));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;```&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;The sensitivity is just about right to not trigger while the thingy91x is sitting on my desk while I&amp;#39;m typing, but as soon as I pick up the device it triggers a few times.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Thingy91x ADXL367 Motion Detection Only Triggers Once After Reboot</title><link>https://devzone.nordicsemi.com/thread/559526?ContentTypeID=1</link><pubDate>Mon, 26 Jan 2026 07:39:07 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:2547251b-013b-48c7-9db2-b2f7b84b9fe3</guid><dc:creator>Tasos</dc:creator><description>&lt;p&gt;Additionally, the AI insists that the &lt;strong data-start="89" data-end="120"&gt;Threshold Activity Register&lt;/strong&gt; and &lt;strong data-start="125" data-end="158"&gt;Threshold Inactivity Register&lt;/strong&gt; use a scale factor of &lt;strong data-start="181" data-end="195"&gt;7.8 mg/LSB (&lt;/strong&gt;for the +-2g range&lt;strong data-start="181" data-end="195"&gt;)&amp;nbsp;&lt;/strong&gt;but I could not find any reference to this value in the datasheet.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Thingy91x ADXL367 Motion Detection Only Triggers Once After Reboot</title><link>https://devzone.nordicsemi.com/thread/559524?ContentTypeID=1</link><pubDate>Mon, 26 Jan 2026 07:04:33 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e41aef0f-7a5f-4e0a-a4ba-592480b390c3</guid><dc:creator>Tasos</dc:creator><description>&lt;p data-start="120" data-end="304"&gt;It is suspicious that there is no connection between P0.11 of the nRF9151 and INT1 of the ADXL367 in the Thingy:91X devicetree overlay. I modified the overlay to add this connection.&lt;/p&gt;
&lt;p data-start="311" data-end="593"&gt;On the actual board, INT1 is not only connected to the nRF9151 but also to the nRF5340. I believe the corresponding nRF5340 pin is left floating. Unfortunately, this cannot be verified with a logic analyzer because there is no test point and the trace is routed on the inner layers.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Thingy91x ADXL367 Motion Detection Only Triggers Once After Reboot</title><link>https://devzone.nordicsemi.com/thread/559523?ContentTypeID=1</link><pubDate>Mon, 26 Jan 2026 06:44:51 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:aeba191c-c9e9-4d0f-b7e1-8c57822750f2</guid><dc:creator>fbosc</dc:creator><description>&lt;p&gt;There&amp;#39;s basically no way to make it work properly. I&amp;#39;m expecting a solution, this should be a high priority issue. It&amp;#39;s clearly not working and it&amp;#39;s most definitely not a skill or effort issue. It&amp;#39;s DOA with non proper support in the sdk&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Thingy91x ADXL367 Motion Detection Only Triggers Once After Reboot</title><link>https://devzone.nordicsemi.com/thread/559522?ContentTypeID=1</link><pubDate>Mon, 26 Jan 2026 06:42:50 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a06431ac-e131-416a-8ef1-05dcd55b2af3</guid><dc:creator>fbosc</dc:creator><description>&lt;p&gt;I tried all that with no success. Please fix this, it&amp;#39;s clearly an issue on your side.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Thingy91x ADXL367 Motion Detection Only Triggers Once After Reboot</title><link>https://devzone.nordicsemi.com/thread/559512?ContentTypeID=1</link><pubDate>Sun, 25 Jan 2026 22:36:34 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d415ec8c-b415-49b6-9ec5-8107593326b1</guid><dc:creator>Tasos</dc:creator><description>&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;I struggle with the same issue.&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Thingy91x ADXL367 Motion Detection Only Triggers Once After Reboot</title><link>https://devzone.nordicsemi.com/thread/559167?ContentTypeID=1</link><pubDate>Tue, 20 Jan 2026 13:47:12 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:297f2fc3-855a-402d-a35f-7603838cfd74</guid><dc:creator>Kenneth</dc:creator><description>&lt;p&gt;I don&amp;#39;t have any experience with this accelerometer no, but asking AI I can find some discussions around this topic:&lt;/p&gt;
&lt;p&gt;Try with a significant higher&amp;nbsp;CONFIG_ADXL367_ACTIVITY_THRESHOLD value, if the range isn&amp;#39;t changed in the driver, then a value of 50 could correspond to a very low value, potentially triggering continuously active.&lt;/p&gt;
&lt;p&gt;Try to enable an inactivity with with a short timeout, so that after&amp;nbsp;first motion the sensor will self-clear its awake state.&lt;/p&gt;
&lt;p&gt;Try with&amp;nbsp;ADXL367_REFERENCED_ACTIVITY_DETECTION_MODE=n.&lt;/p&gt;
&lt;p&gt;Initially try with a very high threshold (low sensitivity) and gradually reduce the threshold runtime to see if that works.&lt;/p&gt;
&lt;p&gt;Kenneth&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Thingy91x ADXL367 Motion Detection Only Triggers Once After Reboot</title><link>https://devzone.nordicsemi.com/thread/559154?ContentTypeID=1</link><pubDate>Tue, 20 Jan 2026 12:22:38 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e6989b2e-0201-4826-b355-64000b135de2</guid><dc:creator>fbosc</dc:creator><description>&lt;div&gt;
&lt;div&gt;&lt;span&gt;Hi Kenneth,&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span&gt;Thanks for getting back to me. I don&amp;#39;t have a logic analyzer, but I&amp;#39;ve already tried quite a bit of debugging.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span&gt;Regarding your suggestion to try both activity and inactivity detection - I did that. Same issue - works once, then stops.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span&gt;I&amp;#39;ve actually been through several iterations:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; Tried LINKED mode with both activity + inactivity enabled - still locks up&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; Created a custom driver using DEFAULT mode instead of LINKED - still locks up&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; Fixed the interrupt re-enable path to ensure it always runs even on errors - still locks up&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span&gt;The pattern is always the same: first motion event works perfectly, then nothing. Power cycle and it works once again.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span&gt;I&amp;#39;ve modified the Zephyr driver&amp;#39;s trigger handler to guarantee the GPIO interrupt gets re-enabled, and I&amp;#39;ve confirmed the STATUS register read succeeds. But after that first trigger, it&amp;#39;s like the INT1 pin never asserts again.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span&gt;What&amp;#39;s puzzling is that the GPIO interrupt re-enable call succeeds, and the first callback worked fine. Makes me wonder if there&amp;#39;s something about how the ADXL367 re-arms its interrupt that isn&amp;#39;t documented.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span&gt;Has anyone at Nordic actually tested continuous motion detection with this sensor? Or are there any known quirks with the ADXL367&amp;#39;s interrupt behavior that might not be obvious from the datasheet?&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span&gt;I can provide logs or register dumps if that would help.&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span&gt;Thanks&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Thingy91x ADXL367 Motion Detection Only Triggers Once After Reboot</title><link>https://devzone.nordicsemi.com/thread/559152?ContentTypeID=1</link><pubDate>Tue, 20 Jan 2026 12:02:29 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:6ae54826-5289-425f-a831-9fd767152565</guid><dc:creator>Kenneth</dc:creator><description>&lt;p&gt;Hello,&lt;/p&gt;
&lt;p&gt;I am not entirely sure what help we may provide here, it may seem as something that analog devices may need to help you with.&lt;/p&gt;
&lt;p&gt;I guess the first question from me is whether you have measured on a logic analyzer the state of the INT1 pin? Does it indeed indicate an interrupt, or is the problem entirely on the configuration of the adxl side?&amp;nbsp;If it&amp;#39;s entirely on the adxl side, then maybe&amp;nbsp;try at generating interrupts on both activity and inactivity detection.&lt;/p&gt;
&lt;p&gt;Kenneth&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>