<?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>LSM6DSL Driver Limitations - advice to expand functionality.</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/111447/lsm6dsl-driver-limitations---advice-to-expand-functionality</link><description>Hi folks! 
 As always, I&amp;#39;ll start with relevant environment details 
 ===== Environment ===== 
 nRF Connect SDK v2.5.0 (though not opposed to upgrading to one of the 2.6.X releases if helpful) 
 Designing for nRF52840 
 - Prototyping on nRF52840DK with</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Fri, 14 Jun 2024 15:01:16 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/111447/lsm6dsl-driver-limitations---advice-to-expand-functionality" /><item><title>RE: LSM6DSL Driver Limitations - advice to expand functionality.</title><link>https://devzone.nordicsemi.com/thread/488905?ContentTypeID=1</link><pubDate>Fri, 14 Jun 2024 15:01:16 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:14cb9bdf-e988-4c03-8a32-d350b9f14ca7</guid><dc:creator>AHaug</dc:creator><description>&lt;p&gt;Hi Finn,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Apologies for the long response time.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I have unfortunately not been able to find any concrete solutions as of now. Initially I thought it could be due to a thread/heap sizes not beeing sufficiently large, but seeing htat none of the faults you check with addr_2_line comes from a stack overflow I doubt this is the issue. You could however try to increase the stack size anyways.&lt;/p&gt;
&lt;p&gt;Another thought is that the i2c device is already initialized or that the custom device is slightly different defined w.r.t what the api expects (thus the usage error, just speculation from my part here..)&lt;/p&gt;
&lt;p&gt;I will continue looking into this on Monday, apologies for not beeing of more help any sooner&lt;/p&gt;
&lt;p&gt;Kind regards,&lt;br /&gt;Andreas&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: LSM6DSL Driver Limitations - advice to expand functionality.</title><link>https://devzone.nordicsemi.com/thread/488762?ContentTypeID=1</link><pubDate>Thu, 13 Jun 2024 23:32:28 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:6bfeb970-94bc-4e6e-9e82-08467638b594</guid><dc:creator>FinnBiggs</dc:creator><description>&lt;p&gt;Hi Andreas,&lt;/p&gt;
&lt;p&gt;I&amp;#39;m still struggling in a couple places (posts below) - any updates or advice?&lt;/p&gt;
&lt;p&gt;Thank you&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Finn&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: LSM6DSL Driver Limitations - advice to expand functionality.</title><link>https://devzone.nordicsemi.com/thread/487389?ContentTypeID=1</link><pubDate>Tue, 04 Jun 2024 22:37:01 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9de83da1-a6f5-4f67-910e-8084261c60bd</guid><dc:creator>FinnBiggs</dc:creator><description>&lt;p&gt;So, following up.&lt;/p&gt;
&lt;p&gt;It is as you suggest; I would like to directly grab my lsm6ds3tr_c via its node label, and then set up an i2c device instance to read and write from it.&lt;/p&gt;
&lt;p&gt;Following the instructions you linked from DevAcademy has caused a problem I&amp;#39;ve run into a few times now that I&amp;#39;m hoping you may have insight on.&lt;/p&gt;
&lt;p&gt;Here is my code and configuration (and I&amp;#39;ve trimmed it down to be nearly minimal).&lt;/p&gt;
&lt;p&gt;==========&lt;/p&gt;
&lt;p&gt;Module Code (lsm6dsl.c)&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;#include &amp;lt;zephyr/kernel.h&amp;gt;

/* IMU imports */
#include &amp;lt;zephyr/device.h&amp;gt;
#include &amp;lt;zephyr/sys/util.h&amp;gt;
#include &amp;lt;zephyr/drivers/sensor.h&amp;gt;
#include &amp;lt;stdio.h&amp;gt;


/* AEM imports */
#include &amp;quot;imu_event.h&amp;quot;
#include &amp;lt;caf/events/module_state_event.h&amp;gt;

#include &amp;lt;zephyr/logging/log.h&amp;gt;

#include &amp;lt;zephyr/drivers/i2c.h&amp;gt;

#define MODULE lsm6dsl 
LOG_MODULE_REGISTER(MODULE);

/* Acquire I2C binding */
#define LSM_I2C_NODE DT_NODELABEL(lsm6ds3tr_c)

static const struct i2c_dt_spec lsm_i2c = I2C_DT_SPEC_GET(LSM_I2C_NODE);

int setup_i2c() {
    int ret;
    ret = device_is_ready( lsm_i2c.bus );
    if( !ret ) {
        LOG_ERR(&amp;quot;I2C Bus not ready: %s \n&amp;quot;, lsm_i2c.bus);
        return -1;
    }

    uint8_t read_buf = 0x00;
    i2c_read(&amp;amp;lsm_i2c, &amp;amp;read_buf, 1, 0x0f); // Datasheet specifies &amp;quot;WHO_AM_I&amp;quot; as (0Fh), expect 0x6a
    
    LOG_INF(&amp;quot;Setup I2C: WHOAMI=0x%x&amp;quot;, read_buf);
    
    return ret;
}

static bool app_event_handler(const struct app_event_header *aeh)
{
    if(is_module_state_event(aeh)){
        struct module_state_event *ev = cast_module_state_event(aeh);
        if(check_state(ev, MODULE_ID(main), MODULE_STATE_READY)) {
            int ret = setup_i2c();
            if (ret != 0) {
                printk(&amp;quot;Error condn %d in imu setup&amp;quot;, ret);
            }
            return false;
        }
    }
    return false;
}

APP_EVENT_LISTENER(MODULE, app_event_handler);
APP_EVENT_SUBSCRIBE(MODULE, module_state_event);&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;==========&lt;/p&gt;
&lt;p&gt;prj.conf&lt;/p&gt;
&lt;p&gt;Note: I have a custom KConfig option in here &amp;quot;CONFIG_ENABLE_IMU_LOG&amp;quot; that just configures whether IMU events are printed. (ifdef statements in the log definitions of imu_event) (not relevant to this question)&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;#
# Copyright (c) 2019 Nordic Semiconductor ASA
#
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
#
# Enabling assert
CONFIG_ASSERT=y

# Logger configuration
CONFIG_LOG=y
# CONFIG_LOG_BACKEND_UART=y
CONFIG_USE_SEGGER_RTT=y
CONFIG_LOG_BACKEND_RTT=y

# Configuration required by Application Event Manager
CONFIG_APP_EVENT_MANAGER=y
CONFIG_CAF=y
CONFIG_HEAP_MEM_POOL_SIZE=2048
CONFIG_REBOOT=y

# IMU Configuration
CONFIG_STDOUT_CONSOLE=y

CONFIG_I2C=y
CONFIG_ENABLE_IMU_LOG=n
CONFIG_SPI=n

CONFIG_SENSOR=y
CONFIG_LSM6DSL=y
CONFIG_LSM6DSL_TRIGGER_GLOBAL_THREAD=y

CONFIG_CBPRINTF_FP_SUPPORT=y&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;==========&lt;/p&gt;
&lt;p&gt;nrf52840dk_nrf52840.overlay&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;i2c0: &amp;amp;i2c0 {
    lsm6ds3tr_c: lsm6ds3tr-c@6a {
		compatible = &amp;quot;i2c-device&amp;quot;;
		reg = &amp;lt; 0x6a &amp;gt;;
		irq-gpios = &amp;lt;&amp;amp;gpio1 9 GPIO_ACTIVE_HIGH&amp;gt;;
		status = &amp;quot;okay&amp;quot;;
		label = &amp;quot;myLSM&amp;quot;;
	};
};&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;==========&lt;/p&gt;
&lt;p&gt;main.c&lt;/p&gt;
&lt;p&gt;(Paraphrasing)&lt;/p&gt;
&lt;p&gt;app_event_manager_init --&amp;gt; Success --&amp;gt; module_set_state(MODULE_STATE_READY)&lt;/p&gt;
&lt;p&gt;==========&lt;/p&gt;
&lt;p&gt;annotated error output (serial terminal)&lt;/p&gt;
&lt;p&gt;I get &amp;quot;booting&amp;quot; / &amp;quot;main is ready&amp;quot; / &amp;quot;USAGE ERROR&amp;quot;&lt;/p&gt;
&lt;p&gt;I took the serial output of one reboot loop, and ran addr2line on each command address in the error trace.The specific (bash) command is below:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;addr2line -f -e project-directory/build_dk/zephyr/zephyr.elf &amp;lt;hex command address&amp;gt;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;That information is nested below each line, and organized by hex address of calling command.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;*** Booting nRF Connect SDK v2.5.0 ***
[00:00:01.750,854] &amp;lt;inf&amp;gt; app_event_manager: e:module_state_event module:main state:READY
[00:00:01.941,955] &amp;lt;err&amp;gt; os: ***** USAGE FAULT *****
[00:00:01.941,986] &amp;lt;err&amp;gt; os:   Attempt to execute undefined instruction
[00:00:01.941,986] &amp;lt;err&amp;gt; os: r0/a1:  0x00000001  r1/a2:  0x20000850  r2/a3:  0x0000fbec

    0x00000001
        i2c_dump_msgs_rw
        C:/ncs/v2.5.0/zephyr/drivers/i2c/i2c_common.c:52

    0x20000850
        $d
        C:/ncs/v2.5.0/zephyr/kernel/system_work_q.c:20

    0x0000fbec
        $d
        C:/ncs/v2.5.0/nrf/include/caf/events/module_state_event.h:300


[00:00:01.942,016] &amp;lt;err&amp;gt; os: r3/a4:  0x0000bf5b r12/ip:  0x00000000 r14/lr:  0x000009e1
    
    0x0000bf5b
        z_arm_nmi
        C:/ncs/v2.5.0/zephyr/arch/arm/core/aarch32/nmi.c:57

    0x00000000
        i2c_dump_msgs_rw
        C:/ncs/v2.5.0/zephyr/drivers/i2c/i2c_common.c:52

    0x000009e1
        setup_i2c
        C:\Users\finnb\Documents\auli\zephyr_experiments\drivers_lsm\build_dk/../src/modules/lsm6dsl.c:103
            if( !ret ) { report error on device logging }

[00:00:01.942,016] &amp;lt;err&amp;gt; os:  xpsr:  0x61000000

    0x61000000
        ??
        ??:0

[00:00:01.942,047] &amp;lt;err&amp;gt; os: Faulting instruction address (r15/pc): 0x000009e8

    0x000009e8
        z_impl_i2c_transfer
        C:/ncs/v2.5.0/zephyr/include/zephyr/drivers/i2c.h:770

[00:00:01.942,077] &amp;lt;err&amp;gt; os: &amp;gt;&amp;gt;&amp;gt; ZEPHYR FATAL ERROR 36: Unknown error on CPU 0
[00:00:01.942,108] &amp;lt;err&amp;gt; os: Current thread: 0x20000850 (unknown)

0x20000850
    $d
    C:/ncs/v2.5.0/zephyr/kernel/system_work_q.c:20

[00:00:03.076,751] &amp;lt;err&amp;gt; fatal_error: Resetting system&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;==========&lt;/p&gt;
&lt;p&gt;How might I correct this?&lt;/p&gt;
&lt;p&gt;Note that I did get i2c reading and writing working by referencing the i2c0 node directly, and using i2c burst read/write while specifying the lsm&amp;#39;s address in the command e.g.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;    i2c_burst_read(i2c_dev, 0x6a, 0x0E, &amp;amp;buf, 1);
    printk(&amp;quot;Addr: 0x%02x, Buf: 0x%02x \n&amp;quot;, 0x0E, buf);

    uint8_t write_buf = 0x04;
    i2c_burst_write(i2c_dev, 0x6a, 0x0E, &amp;amp;write_buf, 1);

    i2c_burst_read(i2c_dev, 0x6a, 0x0E, &amp;amp;buf, 1);
    printk(&amp;quot;Addr: 0x%02x, Buf: 0x%02x \n&amp;quot;, 0x0E, buf);&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;works as expected (where i2c_dev is set up as below, then treated the same as in above module, substituting this device for the lsm_i2c device in my module)&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;#define I2C_NODE DT_NODELABEL(i2c0)
static struct device const *i2c_dev = DEVICE_DT_GET(I2C_NODE);

&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;==========&lt;/p&gt;
&lt;p&gt;Apologies for the long post, I&amp;#39;m trying to learn about the best practice here. As always, I&amp;#39;m grateful for your advice and time.&lt;/p&gt;
&lt;p&gt;Best,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Finn&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: LSM6DSL Driver Limitations - advice to expand functionality.</title><link>https://devzone.nordicsemi.com/thread/487385?ContentTypeID=1</link><pubDate>Tue, 04 Jun 2024 20:24:39 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a264de18-f882-4bc7-af74-7a521ea150d8</guid><dc:creator>FinnBiggs</dc:creator><description>&lt;p&gt;Hi Andreas,&lt;/p&gt;
&lt;p&gt;Thank you for your follow-up. Yes, I understand that to modify drivers I either need to make my own (in or out of tree). When writing my first post, I thought that to get the functionality I needed, I would have to add generic control functions to the driver for functions like Tap Detection, Free Fall, Significant Motion, or Pedometer.&lt;/p&gt;
&lt;p&gt;However, those functions are not typical for the sensor driver, so I started looking at direct i2c controls.&lt;/p&gt;
&lt;p&gt;Down that path, I discovered that ST has provided a very thorough driver for the sensor -- they provide a name and bit ID for every register, as well as a getter and setter method for each register.&lt;/p&gt;
&lt;p&gt;To use those drivers, I need to implement a platform read and write method that allows the ST drivers to communicate with the sensor on this (zephyr) platform.&lt;/p&gt;
&lt;p&gt;What I&amp;#39;m trying to implement is a system where the behavior of the IMU is modifiable during run time. Specifically, I&amp;#39;d like to be able to use a data ready trigger to take data at 104Hz, then be able to have the device go to sleep, put the IMU in low-power mode, and configure it to wake up my application via either a tap, significant motion, or pedometer steps.&lt;/p&gt;
&lt;p&gt;Ideally, I don&amp;#39;t have to poll, and I can use the interrupt pin to signal data is ready for normal operation, and then configure the interrupt settings as a pre power-down action, so that waking is configured by the interrupt pin and significant motion.&lt;/p&gt;
&lt;p&gt;The binding is a good pointer, and I&amp;#39;ll continue from there. My current code uses i2c_burst_(read/write) targeting i2c0 and my specific device&amp;#39;s address as the content of ST&amp;#39;s required platform_read/write methods, and seems to be working for now.&lt;/p&gt;
&lt;p&gt;I&amp;#39;ll keep updating this as I come to a good solution so that others might find and use this info themselves.&lt;/p&gt;
&lt;p&gt;Best,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Finn&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: LSM6DSL Driver Limitations - advice to expand functionality.</title><link>https://devzone.nordicsemi.com/thread/487223?ContentTypeID=1</link><pubDate>Tue, 04 Jun 2024 07:45:45 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:371e754c-8f3c-4723-87b2-a2d1d853a92f</guid><dc:creator>AHaug</dc:creator><description>&lt;p&gt;Hi Finn,&lt;/p&gt;
&lt;p&gt;I see now that I might have been too quick when reading your initial post and only focused on the part regarding &amp;quot;contributing to Zephyr&amp;quot;. You are right that if you want to modify the existing driver you must either change the existing one or create your own custom version of the driver either in-tree or out-of-tree that includes what you need.&amp;nbsp;From my understanding of your comments it looks like you may already be aware of this part, but I&amp;#39;ll write it out anyways:&lt;/p&gt;
&lt;p&gt;This device needs to have a binding similar to the lsm6ds3tr has in this binding&amp;nbsp;&lt;a href="https://github.com/nrfconnect/sdk-zephyr/blob/main/dts/bindings/sensor/st%2Clsm6dsl-i2c.yaml"&gt;github.com/.../st,lsm6dsl-i2c.yaml&lt;/a&gt;. If you have a for instance a binding named&amp;nbsp;&lt;em&gt;&amp;quot;my_lsm6dsl-i2c.yaml&amp;quot;&lt;/em&gt; located in your &lt;em&gt;project_folder/bindings/dts. &lt;/em&gt;As an example that showcases the project-specific device, you can have a look at this &lt;a href="https://github.com/NordicDeveloperAcademy/ncs-inter/tree/main/lesson4/inter_less4_exer2_solution/dts/bindings"&gt;repository &lt;/a&gt;where I&amp;#39;ve created a custom pwm device binding.&lt;/p&gt;
&lt;p&gt;From there on you include compatible in your overlay.&lt;/p&gt;
[quote user="FinnBiggs"]To use the ST drivers, one must implement a &amp;quot;platform read&amp;quot; and &amp;quot;platform write&amp;quot; method.[/quote]
&lt;p&gt;If I understand this correct, what you want is to implement an API that allows you to actively read data from the sensor over I2C and to send data to the sensor (commands to for instance change sampling rate or to poll the sensor) over I2C. Is this correct? If so I would instead recommend that you investigate the &lt;a href="https://docs.nordicsemi.com/bundle/ncs-latest/page/zephyr/hardware/peripherals/i2c.html"&gt;I2C API&lt;/a&gt; where you will find functions to read and write as well as this I2C course which showcases how to do read and write over I2C from your controller to the I2C device:&amp;nbsp;&lt;a href="https://academy.nordicsemi.com/courses/nrf-connect-sdk-fundamentals/lessons/lesson-6-serial-com-i2c/"&gt;https://academy.nordicsemi.com/courses/nrf-connect-sdk-fundamentals/lessons/lesson-6-serial-com-i2c/&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Let me know if this clarifies things for you and please expand if there is anything you believe I have misunderstood&lt;/p&gt;
&lt;p&gt;Kind regards,&lt;br /&gt;Andreas&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: LSM6DSL Driver Limitations - advice to expand functionality.</title><link>https://devzone.nordicsemi.com/thread/487174?ContentTypeID=1</link><pubDate>Mon, 03 Jun 2024 21:00:26 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:2870b8d3-8843-4c95-83f7-a3e9a07b4325</guid><dc:creator>FinnBiggs</dc:creator><description>&lt;p&gt;So I&amp;#39;ve spent some time working on this now, and I&amp;#39;ve concluded that what I need isn&amp;#39;t an expansion to the existing device drivers, but a set of tools that controls the device configuration directly during runtime.&lt;br /&gt;&lt;br /&gt;A lot like in this post (&lt;a href="https://devzone.nordicsemi.com/f/nordic-q-a/99612/migrating-lsm6dsl-custom-fifo-and-interrupts-implementation-from-nrf-to-zephyr-sdk-seeking-guidance"&gt;Migrating LSM6DSL Custom FIFO and Interrupts Implementation from nRF to Zephyr SDK: Seeking Guidance&lt;/a&gt;), I&amp;#39;ve folded in the ST drivers to my project&amp;#39;s /lib directory -- but this segues to a new challenge.&lt;/p&gt;
&lt;p&gt;To use the ST drivers, one must implement a &amp;quot;platform read&amp;quot; and &amp;quot;platform write&amp;quot; method.&lt;/p&gt;
&lt;p&gt;Could I please get advice on implementing these functions:&lt;/p&gt;
&lt;p&gt;I&amp;#39;d like to use my device tree entry to populate my i2c instance&lt;/p&gt;
&lt;p&gt;My devicetree (overlay) is as follows:&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;&amp;amp;i2c0 {
    lsm6ds3tr_c: lsm6ds3tr-c@6a {
		compatible = &amp;quot;st,lsm6dsl&amp;quot;;
		reg = &amp;lt;0x6a&amp;gt;;
		irq-gpios = &amp;lt;&amp;amp;gpio1 9 GPIO_ACTIVE_HIGH&amp;gt;;
		status = &amp;quot;okay&amp;quot;;
	};
};&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;I&amp;#39;d like to use my lsm6ds3tr_c node label to establish an i2c device, and then I&amp;#39;d like to use Zephyr&amp;#39;s i2c functions to implement a platform-read and -write that will enable the ST drivers.&lt;/p&gt;
&lt;p&gt;I think this approach will be better than augmenting Zephyr with a new driver because what I need differs from the typical format of sensor drivers.&lt;/p&gt;
&lt;p&gt;Thank you for any guidance you can provide,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Finn&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: LSM6DSL Driver Limitations - advice to expand functionality.</title><link>https://devzone.nordicsemi.com/thread/485611?ContentTypeID=1</link><pubDate>Thu, 23 May 2024 11:15:13 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:95850250-c3fa-473c-90bd-d8bc2c6a6881</guid><dc:creator>AHaug</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;In general w.r.t contributing to NCS and Zephyr we recommend that you comply with the tips and guidelines mentioned in&amp;nbsp;&lt;a href="https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/dev_model_and_contributions/contributions.html"&gt;https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/dev_model_and_contributions/contributions.html&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="https://docs.nordicsemi.com/bundle/ncs-latest/page/zephyr/contribute/index.html"&gt;https://docs.nordicsemi.com/bundle/ncs-latest/page/zephyr/contribute/index.html&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Other than this I would like to recommend you to also reach out on the zephyr discord forums to discuss contribution to the SDKs there as well.&lt;/p&gt;
&lt;p&gt;I will leave this case open here for now in case other users would like to chime in with their own experience&lt;/p&gt;
&lt;p&gt;Kind regards,&lt;br /&gt;Andreas&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>