How to configure BLE Mesh FN and LPN?
frv
Hallo Zephyr Community, Johan,
So far I'm very impressed with the possibilities Zephyr and its BT Mesh framework already offers. I recently played around successfully with the Generic On/Off sample application deployed on multiple nRF boards creating a BLE Mesh network. I modified a little bit the code to have the use case I wanted to implement. As far as I can see in the current Mesh code base v1.13 there is already support for implementing a Lower Power and a Friend node. I'm just wondering how configuration is actually done, I would think a lower power node must say which is his friend node or vice versa? Maybe I missed it but I can't see anything implemented in the meshctl tool for doing this. And beside setting some defines in the code, is there additional coding needed. Any help is very welcome, Thanks in advance, Best regards, Frank
|
||||||||||
|
||||||||||
Invitation: Zephyr Bug Triage @ Thu 6 Dec 2018 10am - 11am (CST) (Kumar Gala)
Kumar Gala
All,
We are going to have our first Bug Triage meeting in hope of working on reducing the bug count for the 1.14/LTS release. Will use both a Zoom call and slack channel #triage. Thanks - kumar
|
||||||||||
|
||||||||||
Re: Duplicate messages when using bt_mesh_model_publish() and groups
Martin <ma@...>
Hi,
toggle quoted messageShow quoted text
thanks guys for your help. I have been using the nRF Mesh app for provisioning. Setting Interval Steps = 0 indeed solves the issue. As I do not need message transmissions, this solution is perfectly fine. I guess I should have cross-checked with meshctl :-( Martin Am Di., 4. Dez. 2018 um 17:35 Uhr schrieb Vikrant More <vikrant8051@...>:
|
||||||||||
|
||||||||||
Re: Is bluetooth sample "peripheral" still working well?
Hi Jun,
On 4 Dec 2018, at 18.13, Li, Jun R <jun.r.li@...> wrote:I know. I assume an random address will be written to the settings after the first booting, right? However, I still see the message "NO ID address" showing up every time when the board reboots. Should I do extra work to generate a random mac and write it to the settings?No. The warning comes before settings_load() to indicate to the app developer that settings_load() will need to be called, i.e. the warning is not supposed to go away. I think everything is working fine with regard to this - you’re just getting distracted with this benign warning message :) I'll try increasing the stack size to see if it is helpful to resolve "HARD FAULT". Specifically, in which thread you want to increase its stack size, settings or Bluetooth?Usually it’s the thread that calls settings_load() that ends up having an increase in stack usage. In the case of the peripheral app it’s the system workqueue (which calls bt_ready which calls settings_load). However, you should analyse the stack usage of all stacks to to decide whether they’re the right size for your application. Are you seeing this fault with an unmodified upstream peripheral app? If so we need to fix this upstream. That said, I didn’t see such an issue when running this app on both nRF52 and nRF51 boards today. Johan
|
||||||||||
|
||||||||||
Re: Duplicate messages when using bt_mesh_model_publish() and groups
vikrant8051 <vikrant8051@...>
Hi, Client could re-transmit message to make sure that it will get receive by Server. All re-transmitted message has same TID. Using it at App level we could ignore previously received duplicate message. This concept is explored in samples/boards/nrf52/mesh/onoff_level_lighting_vnd_app. For details refer device_composition.c in it. If you are using #nRFMesh Android App, then in Publication Setting (in your case it would be Generic OnOff client -> SET PUBLICATION ) set Intervals Steps to 0. Actually there is bug in App's nomenclature....but as of now set Interval Steps = 0. After this client will only send one message to Server & there will be no re-transmission of same message from client side. Regards, vikrant
On Tue, Dec 4, 2018 at 9:20 PM Martin <ma@...> wrote: Hi,
|
||||||||||
|
||||||||||
Re: Is bluetooth sample "peripheral" still working well?
frv
Hi Johan,
Thanks for this useful feedback, clarifying a few things more, much appreciated! Best regards, Frank
|
||||||||||
|
||||||||||
Re: Duplicate messages when using bt_mesh_model_publish() and groups
Hi Martin,
How is the provisioning done? Probably via the meshctl tool. On the client node, only one element bound to a Generic OnOff Server model is subscribed to the group address? Because I'm also running this Mesh onoff applic on 4 nRF52 DKs: 1 board for publishing, 2 boards for subscribing and 1 acting as relay node (for extending BLE coverage). Further I modified the applic code a little bit so that it no longer waits for 1 second to publish when a button is pressed (no need in my use case to reuse the same button for switching on and off). Honestly I didn't noticed a double receive in the logging. As I noticed an intial delay of 1 second I first focussed on getting rid off the logging, but the 1 second delay was caused by how the button press was implemented for supporting switching on/off by a single button. If finding some time I will have a look at my logging when enabled again. Best regards, Frank
|
||||||||||
|
||||||||||
Re: Is bluetooth sample "peripheral" still working well?
Li, Jun R
Hi Johan,
Actually, the function "settings_load" is called in the sample "peripheral" which you can take a look at. I assume an random address will be written to the settings after the first booting, right? However, I still see the message "NO ID address" showing up every time when the board reboots. Should I do extra work to generate a random mac and write it to the settings? I'll try increasing the stack size to see if it is helpful to resolve "HARD FAULT". Specifically, in which thread you want to increase its stack size, settings or Bluetooth? Thank you! Jun On 12/4/18, 01:51, "Hedberg, Johan" <johan.hedberg@...> wrote: Hi Jun, > On 4 Dec 2018, at 0.08, Li, Jun R <jun.r.li@...> wrote: > Thanks for the quick reply! Is there an issue addressing the 9 second delay problem during the booting process? It seems the issue #11780 (https://github.com/zephyrproject-rtos/zephyr/issues/11780) is similar though it is using mesh network stack. Based on bisecting it seems commit 4d94257162b22f37104e9f85238ed7c3486c5a1c is introducing the issue. Reverting it made the delay and log_strdup failure go away for me. It also fixed the timestamps (they shouldn’t be all zero). > And how can I get rid of the warning "No ID address"? It always happens on every booting up process. Why do you want to get rid of it? It’s there to remind app writers that they need to do something extra (i.e. call settings_load) after calling bt_enable(). > Actually, I found another "HARD FAULT" issue if I don't erase all of the flash memory after flashing the firmware built from the latest master. I'll try to identify if the is caused by my app or just a generic one. But basically, this never happened before I rebased the app. This is something I haven’t seen. What do you mean by not erasing all flash memory? Which parts don’t you erase? What was there from before? You might have uncovered some issue with the settings subsystem if there’s some garbage data there. It’s also worth excluding the possibility of stack overflow, since the settings code increases stack usage. So try increasing your stack sizes before anything else. Johan
|
||||||||||
|
||||||||||
Re: Is bluetooth sample "peripheral" still working well?
Hi Frank,
On 4 Dec 2018, at 17.52, frv <F.Vieren@...> wrote:Not quite. An Identity Address can be either a public address or a static random address. In most cases nRF boards only have a static random address but no public address. In this case the warning just means that at that point the stack has neither one of those addresses, and is waiting for settings_load() to read one from flash (if nothing is found in flash then the stack will go ahead and try to use our HCI vendor extensions to read the static random address from the controller). Sometime ago this topic was published:I assume you mean settings_load()? That reads the storage partition in flash, i.e. it’s not related to the FICR or UICR registers. Johan
|
||||||||||
|
||||||||||
Re: Is bluetooth sample "peripheral" still working well?
frv
Hi Johan,
Is it correct to say that no public address is set by Nordic for BT HW? Thus probably it is normal this warning "No ID address" is shown. Sometime ago this topic was published: https://lists.zephyrproject.org/g/devel/topic/28283753#5452 I'm wondering if my proposal is valid regarding how to set a public address in case of NRF HW. I didn't investigate myself further but probably Zephyr's "load_settings" function gets its stored info from UICR in case of Nordic HW. thanks, Best regards, Frank
|
||||||||||
|
||||||||||
Duplicate messages when using bt_mesh_model_publish() and groups
Martin <ma@...>
Hi,
I am running samples\boards\nrf52\mesh\onoff-app on two NRF52 DKs. What I notice is that mesh messages are duplicated, i.e. when pressing a button on the server node (that is publishing to group 0xC00A), one message is sent ("publish to ..."). But on the client node, (which is subscribing to 0XC00A), the callback for incoming mesh messages gen_onoff_set is called twice (2x "gen_onoff_set" output). I would really like to reduce the messages sent to a minimum so am wondering why this is happening and how to solve this.. It seems to me as if messages sent via bt_mesh_model_send only appear once. Could someone help me? Thanks, Martin
|
||||||||||
|
||||||||||
Re: Running rpl border and rpl node on bluetooth
Hi Akash,
I think you better have a look at these links (as well): https://www.zephyrproject.org/zephyr-project-announces-openthread-first-thread-protocol-implementation-integrate-zephyr-rtos/ https://openthread.io/platforms/zephyr Probably you want a hybride setup BLE mesh towards Thread (OpenThread) network..., I think some puzzling between network technologies is required at this moment. Maybe a little bit too soon to come up with the examples you would love to see I'm afraid. Best regards, Frank
|
||||||||||
|
||||||||||
Re: Minimum one second delay in activating board LED in Zephyr Bluetooth Mesh based on OnOff applic
Hi all, Vikrant,
Thanks for your feedback. However the issue if you can call it an issue, is that the BL Mesh OnOff sample applic sets by default a minimum 1 second delay before publishing the state of the button press, this makes it possible to distinguish between a single and a double button press either to switch on or either to switch off (linked to one button only). Best regards, Frank
|
||||||||||
|
||||||||||
Re: Settings subsystem
robert.konc@...
Hi
Thanks for answer, Andrzej. Find that I lock value after first key find in flash. I did not know that FBC scan all keys in flash. The problem is that some keys are writen more times and after long period could this be problem. I will try to implement settings with NFFS. Regards, Robert
|
||||||||||
|
||||||||||
Re: Settings subsystem
Puzdrowski, Andrzej
So while loading settings subsystem loads all available in storage kay-value pairs. Guaranteed are that it will load the most recently values as the last and then h_commit handler will be executed. Settings doesn’t implement any cash for value-pair while loading. For FCB-backend there is a try patch which intended to mitigate inconvenience described above: https://github.com/zephyrproject-rtos/zephyr/pull/11574
So can you check whether what you expected was loaded just in next step?
From: devel@... [mailto:devel@...]
On Behalf Of robert.konc@...
Sent: Tuesday, December 04, 2018 11:57 AM To: devel@... Subject: [Zephyr-devel] Settings subsystem
I'm using settings to save application data. îîÿÀ.ÿ...SENP/SEN/RNG=200000.000000ú.SENP/SEN/SENS=0.003000).SENP/SEN/OFFS=0.000000..SENP/RNG/MIN=-100000.000000ã.SENP/RNG/ZERO=0.000000*.SENP/RNG/MAX=10000.000000}.SENP/FLT/TIME=5000l.SENP/FLT/CUTF=50æ.SENP/SEN/OFFS=-0.000055ü.SENP/SEN/OFFS=-0.000054ûÿÿÿÿÿ EE EE FF C0 01 FF 00 00 1A 53 45 4E 50 2F 53 45 4E 2F 52 4E 47 3D 32 30 30 30 30 30 2E 30 30 30 30 30 30 FA 16 53 45 4E 50 2F 53 45 4E 2F 53 45 4E 53 3D 30 2E 30 30 33 30 30 30 29 16 53 45 4E 50 2F 53 45 4E 2F 4F 46 46 53 3D 30 2E 30 30 30 30 30 30 91 1B 53 45 4E 50 2F 52 4E 47 2F 4D 49 4E 3D 2D 31 30 30 30 30 30 2E 30 30 30 30 30 30 E3 16 53 45 4E 50 2F 52 4E 47 2F 5A 45 52 4F 3D 30 2E 30 30 30 30 30 30 2A 19 53 45 4E 50 2F 52 4E 47 2F 4D 41 58 3D 31 30 30 30 30 2E 30 30 30 30 30 30 7D 12 53 45 4E 50 2F 46 4C 54 2F 54 49 4D 45 3D 35 30 30 30 6C 10 53 45 4E 50 2F 46 4C 54 2F 43 55 54 46 3D 35 30 E6 17 53 45 4E 50 2F 53 45 4E 2F 4F 46 46 53 3D 2D 30 2E 30 30 30 30 35 35 FC 17 53 45 4E 50 2F 53 45 4E 2F 4F 46 46 53 3D 2D 30 2E 30 30 30 30 35 34 FB FF FF FF FF
|
||||||||||
|
||||||||||
Settings subsystem
robert.konc@...
I'm using settings to save application data.
But after one setting was writen more than once and application is restarted I get after call settings_load() first value and not last one. For writing I use settings_save_one(). This is part of flash where settings are stored. îîÿÀ.ÿ...SENP/SEN/RNG=200000.000000ú.SENP/SEN/SENS=0.003000).SENP/SEN/OFFS=0.000000..SENP/RNG/MIN=-100000.000000ã.SENP/RNG/ZERO=0.000000*.SENP/RNG/MAX=10000.000000}.SENP/FLT/TIME=5000l.SENP/FLT/CUTF=50æ.SENP/SEN/OFFS=-0.000055ü.SENP/SEN/OFFS=-0.000054ûÿÿÿÿÿ Settings key "SENP/SEN/OFFS" is writen twice. But when I call settings_load() I get "0.000000" instead "-0.000054". Here is also Hex valuje. EE EE FF C0 01 FF 00 00 1A 53 45 4E 50 2F 53 45
4E 2F 52 4E 47 3D 32 30 30 30 30 30 2E 30 30 30
30 30 30 FA 16 53 45 4E 50 2F 53 45 4E 2F 53 45
4E 53 3D 30 2E 30 30 33 30 30 30 29 16 53 45 4E
50 2F 53 45 4E 2F 4F 46 46 53 3D 30 2E 30 30 30
30 30 30 91 1B 53 45 4E 50 2F 52 4E 47 2F 4D 49
4E 3D 2D 31 30 30 30 30 30 2E 30 30 30 30 30 30
E3 16 53 45 4E 50 2F 52 4E 47 2F 5A 45 52 4F 3D
30 2E 30 30 30 30 30 30 2A 19 53 45 4E 50 2F 52
4E 47 2F 4D 41 58 3D 31 30 30 30 30 2E 30 30 30
30 30 30 7D 12 53 45 4E 50 2F 46 4C 54 2F 54 49
4D 45 3D 35 30 30 30 6C 10 53 45 4E 50 2F 46 4C
54 2F 43 55 54 46 3D 35 30 E6 17 53 45 4E 50 2F
53 45 4E 2F 4F 46 46 53 3D 2D 30 2E 30 30 30 30
35 35 FC 17 53 45 4E 50 2F 53 45 4E 2F 4F 46 46
53 3D 2D 30 2E 30 30 30 30 35 34 FB FF FF FF FF
Regards, Robert
|
||||||||||
|
||||||||||
Re: Is bluetooth sample "peripheral" still working well?
Hi Jun,
On 4 Dec 2018, at 0.08, Li, Jun R <jun.r.li@...> wrote:Based on bisecting it seems commit 4d94257162b22f37104e9f85238ed7c3486c5a1c is introducing the issue. Reverting it made the delay and log_strdup failure go away for me. It also fixed the timestamps (they shouldn’t be all zero). And how can I get rid of the warning "No ID address"? It always happens on every booting up process.Why do you want to get rid of it? It’s there to remind app writers that they need to do something extra (i.e. call settings_load) after calling bt_enable(). Actually, I found another "HARD FAULT" issue if I don't erase all of the flash memory after flashing the firmware built from the latest master. I'll try to identify if the is caused by my app or just a generic one. But basically, this never happened before I rebased the app.This is something I haven’t seen. What do you mean by not erasing all flash memory? Which parts don’t you erase? What was there from before? You might have uncovered some issue with the settings subsystem if there’s some garbage data there. It’s also worth excluding the possibility of stack overflow, since the settings code increases stack usage. So try increasing your stack sizes before anything else. Johan
|
||||||||||
|
||||||||||
Re: Opus codec on nrf52840
nicolas lantz <nicolas.lantz@...>
Thanks you for the reponse.
I took the time to extract the modified opus library code from the Smart Ready project (from the .exe to linux) and compared it to the origin opus lib.
Now i will try to use it in a zephry project
Regards,
Nicolas
Nicolas LANTZ M : +33 (0)6 19 07 43 43 T : +33 (0)9 52 96 81 86 www.ubicore.net Le 29/11/2018 à 12:56, Zięcik, Piotr a
écrit :
|
||||||||||
|
||||||||||
Re: Is bluetooth sample "peripheral" still working well?
Li, Jun R
Hi Johan,
Thanks for the quick reply! Is there an issue addressing the 9 second delay problem during the booting process? It seems the issue #11780 (https://github.com/zephyrproject-rtos/zephyr/issues/11780) is similar though it is using mesh network stack. And how can I get rid of the warning "No ID address"? It always happens on every booting up process. Actually, I found another "HARD FAULT" issue if I don't erase all of the flash memory after flashing the firmware built from the latest master. I'll try to identify if the is caused by my app or just a generic one. But basically, this never happened before I rebased the app. Thank you! Regards, Jun On 12/3/18, 13:16, "Hedberg, Johan" <johan.hedberg@...> wrote: Hi, > On 3 Dec 2018, at 22.03, Li, Jun R <jun.r.li@...> wrote: > [00:00:00.000,000] <inf> bt_hci_core.hci_vs_init: HW Platform: Nordic Semiconductor (0x0002) > [00:00:00.000,000] <inf> bt_hci_core.hci_vs_init: HW Variant: nRF51x (0x0001) > [00:00:00.000,000] <inf> bt_hci_core.hci_vs_init: Firmware: Standard Bluetooth controller (0x00) Version 1.13 Build 99 > [00:00:00.000,000] <wrn> bt_hci_core.bt_init: No ID address. Expecting one to come from storage. This is normal when CONFIG_BT_SETTINGS=y is enabled. In such a case the identity address isn’t initialised until the app calls settings_load(), since the identity may be stored in flash. > [00:00:00.000,000] <inf> bt_hci_core.bt_dev_show_info: Identity: <log_strdup alloc failed> This shows that the identity has been successfully initialised as a consequence of calling settings_load(), however apparently there are too few log buffers available to log the string-format address. > • There are about 9 seconds delay between the first message “Bluetooth initialized” and the second one “Advertising successfully started” every time when the board restarts. Not sure what is blocking the booting process. You’re not the first one to report something like this - it needs to be investigated. > • I got a “No ID address” warning which is highlighted in red above. The problem never happened before. Is it a new feature? And Does any board need to be provisioned with an ID address before being used from now on? As I mentioned earlier this is a non-issue. The identity does get loaded properly but there’s an issue allocating a log buffer for its string representation. In general I have a slight suspicion that all these issues could somehow be related to the new logging subsystem. Johan
|
||||||||||
|
||||||||||
Re: Is bluetooth sample "peripheral" still working well?
Hi,
On 3 Dec 2018, at 22.03, Li, Jun R <jun.r.li@...> wrote:This is normal when CONFIG_BT_SETTINGS=y is enabled. In such a case the identity address isn’t initialised until the app calls settings_load(), since the identity may be stored in flash. [00:00:00.000,000] <inf> bt_hci_core.bt_dev_show_info: Identity: <log_strdup alloc failed>This shows that the identity has been successfully initialised as a consequence of calling settings_load(), however apparently there are too few log buffers available to log the string-format address. • There are about 9 seconds delay between the first message “Bluetooth initialized” and the second one “Advertising successfully started” every time when the board restarts. Not sure what is blocking the booting process.You’re not the first one to report something like this - it needs to be investigated. • I got a “No ID address” warning which is highlighted in red above. The problem never happened before. Is it a new feature? And Does any board need to be provisioned with an ID address before being used from now on?As I mentioned earlier this is a non-issue. The identity does get loaded properly but there’s an issue allocating a log buffer for its string representation. In general I have a slight suspicion that all these issues could somehow be related to the new logging subsystem. Johan
|
||||||||||
|