I have a BLE application (Bluetooth peripheral app) using Zephyr with nRF Connect SDK v1.5.1 and Segger Embedded Studio. I was successful in adding/configuring the MCU Boot boot loader, and the boot loader is booting my application just fine. (All the signing figured out.)
Now I’m trying to configure SMP Server support into this application so that I can download new firmware. (DFU)
I started by building MCU Boot and the SMP Server sample app using the command line (not Embedded Studio) and I was successful in having SMP Server respond to the “Echo” command in the Device Manager mobile app.
Next I configured my application in Embedded Studio using these settings: (menuconfig settings. Figured these out using the SMP sample app.)
Set "General Kernel Options / Work Queue Options / System workqueue stack size" to 2048 (Some command handlers require a large stack.)
Enabled "Sub Systems and OS Services / Device Management / mcumgr Support"
Enabled "Sub Systems and OS Services / Device Management / mcumgr Support / Bluetooth mcumgr SMP transport"
Disabled "Sub Systems and OS Services / Device Management / mcumgr Support / Authenticated requirement for Bluetooth mcumgr SMP transport"
Enabled "Sub Systems and OS Services / Device Management / mcumgr Support / Command Handlers / Enable mcumgr handlers for image management"
Enabled "Sub Systems and OS Services / Device Management / mcumgr Support / Command Handlers / Enable mcumgr handlers for OS management"
Set "Sub Systems and OS Services / Bluetooth / Maximum supported HCI RX buffer length" to 260
Set "Sub Systems and OS Services / Bluetooth / L2CAP Options / Maximum supported L2CAP MTU for incoming data" to 252
Set "Sub Systems and OS Services / Bluetooth / L2CAP Options / Maximum supported L2CAP MTU for L2CAP TX buffers" to 252
I also added the call to “smp_bt_register()” into my application after Bluetooth initialization. (I setup the initialization just like the sample SMP server app.)
The application builds, loads, boots, and runs just fine providing our custom service. The SMP Service also shows up with its single SMP Characteristic. (As seen from nRF Connect mobile.)
BUT, when I run Device Manager and send the Echo command the Bluetooth connection is made and the response is “Mcu Mgr Error: NOT_SUPPORTED (8)”.
I’m trying to figure out if I missed anything? (Like important configuration settings) Anyone know how the SMP service code layer interacts with MCU Boot? The documentation seems to be lacking in this area. Any help / ideas would be greatly appreciated.
Thanks a lot.