| # Copyright Runtime.io 2018. All rights reserved. |
| # Copyright Nordic Semiconductor ASA 2020. All rights reserved. |
| # SPDX-License-Identifier: Apache-2.0 |
| |
| menuconfig MCUMGR |
| bool "mcumgr Support" |
| select NET_BUF |
| select TINYCBOR |
| help |
| This option enables the mcumgr management library. |
| |
| if MCUMGR |
| |
| module = MCUMGR |
| module-str = mcumgr |
| source "subsys/logging/Kconfig.template.log_config" |
| |
| |
| config APP_LINK_WITH_MCUMGR |
| bool "Link 'app' with MCUMGR" |
| default y |
| help |
| Add MCUMGR header files to the 'app' include path. It may be |
| disabled if the include paths for MCUMGR are causing aliasing |
| issues for 'app'. |
| |
| config MGMT_CBORATTR_MAX_SIZE |
| int "The maximum size of a CBOR attribute during decoding" |
| default 512 |
| help |
| The maximum size of a CBOR attribute during decoding |
| |
| menu "Command Handlers" |
| menuconfig MCUMGR_CMD_FS_MGMT |
| bool "Enable mcumgr handlers for file management (insecure)" |
| depends on FILE_SYSTEM |
| help |
| Enables mcumgr handlers for file management |
| |
| This option allows mcumgr clients to access anything in the |
| file system, including application-stored secrets like |
| private keys. Use of this feature in production is strongly |
| discouraged. |
| |
| if MCUMGR_CMD_FS_MGMT |
| |
| choice FS_MGMT_MAX_FILE_SIZE |
| prompt "Maximum file size that could be uploaded/downloaded" |
| default FS_MGMT_MAX_FILE_SIZE_64KB |
| help |
| Maximum file size that will be allowed to be downloaded from |
| device. |
| This option decides on number of bytes that are reserved in |
| CBOR frame for storage of offset/size of file downloaded. |
| |
| config FS_MGMT_MAX_FILE_SIZE_64KB |
| bool "<= 64KB" |
| help |
| Files that have size up to 64KB require 1 to 3 bytes to encode |
| size/offset within CBOR frame with file chunk. |
| |
| config FS_MGMT_MAX_FILE_SIZE_4GB |
| bool "<= 4GB" |
| help |
| Files that have size up to 4GB require 1 to 5 bytes to encode |
| size/offset within CBOR frame with file chunk. |
| |
| endchoice |
| |
| config FS_MGMT_MAX_OFFSET_LEN |
| int |
| default 3 if FS_MGMT_MAX_FILE_SIZE_64KB |
| default 5 if FS_MGMT_MAX_FILE_SIZE_4GB |
| help |
| Maximal byte length of encoded offset/size, within transferred |
| CBOR frame containing chunk of downloaded file. |
| This value affects how much of data will fit into download buffer, |
| as it selects sizes of fields within headers. |
| NOTE: This option is hidden intentionally as it is intended |
| to be assigned from limited set of allowed values, depending on |
| the selection made in FS_MGMT_MAX_FILE_SIZE menu. |
| |
| config FS_MGMT_UL_CHUNK_SIZE |
| int "Maximum chunk size for file uploads" |
| default 512 |
| help |
| Limits the maximum chunk size for file uploads, in bytes. A buffer of |
| this size gets allocated on the stack during handling of a file upload command. |
| |
| config FS_MGMT_DL_CHUNK_SIZE_LIMIT |
| bool "Enable setting custom size of download file chunk" |
| help |
| By default file chunk, that will be read off storage and fit into |
| mcumgr frame, is automatically calculated to fit into buffer |
| of size MCUGMR_BUF_SIZE with all headers. |
| Enabling this option allows to set MAXIMUM value that will be |
| allowed for such chunk. |
| Look inside fs_mgmt_config.h for details. |
| |
| if FS_MGMT_DL_CHUNK_SIZE_LIMIT |
| |
| config FS_MGMT_DL_CHUNK_SIZE |
| int "Maximum chunk size for file downloads" |
| range 65 MCUMGR_BUF_SIZE |
| default MCUMGR_BUF_SIZE |
| help |
| Sets the MAXIMUM size of chunk which will be rounded down to |
| number of bytes that, with all the required headers, will fit |
| into MCUMGR_BUF_SIZE. This means that actual value might be lower |
| then selected, in which case compiler warning will be issued. |
| Look inside fs_mgmt_config.h for details. |
| Note that header sizes are affected by FS_MGMT_MAX_OFFSET_LEN. |
| |
| endif |
| |
| |
| config FS_MGMT_PATH_SIZE |
| int "Maximum file path length" |
| default 64 |
| help |
| Limits the maximum path length for file operations, in bytes. A buffer |
| of this size gets allocated on the stack during handling of file upload |
| and download commands. |
| endif |
| |
| config MCUMGR_CMD_SHELL_MGMT |
| bool "Enable mcumgr handlers for shell management" |
| depends on SHELL |
| select SHELL_BACKEND_DUMMY |
| help |
| Enables mcumgr handlers for shell management. The handler will utilize |
| the dummy backend to execute shell commands and capture the output to |
| an internal memory buffer. This way, there is no interaction with |
| physical interfaces outside of the scope of the user. |
| It is possible to use additional shell backends in coordination |
| with this handler and they will not interfere. |
| The SHELL_BACKEND_DUMMY_BUF_SIZE will affect how many characters |
| will be returned from command output, if your output gets cut, then |
| increase the value. Remember to set MCUMGR_BUF_SIZE accordingly. |
| |
| menuconfig MCUMGR_CMD_IMG_MGMT |
| bool "Enable mcumgr handlers for image management" |
| select FLASH |
| select MPU_ALLOW_FLASH_WRITE if ARM_MPU |
| select IMG_MANAGER |
| help |
| Enables mcumgr handlers for image management |
| |
| if MCUMGR_CMD_IMG_MGMT |
| config IMG_MGMT_UL_CHUNK_SIZE |
| int "Maximum chunk size for image uploads" |
| default 512 |
| depends on MCUMGR_CMD_IMG_MGMT |
| help |
| Limits the maximum chunk size for image uploads, in bytes. A buffer of |
| this size gets allocated on the stack during handling of a image upload |
| command. |
| |
| |
| config IMG_MGMT_VERBOSE_ERR |
| bool "Verbose logging when uploading a new image" |
| help |
| Enable verbose logging during a firmware upgrade. |
| |
| config IMG_MGMT_DUMMY_HDR |
| bool "Return dummy image header data for imgr functions" |
| help |
| Returns dummy image header data for imgr functions, |
| useful when there are no images present, Eg: unit tests. |
| |
| config IMG_MGMT_DIRECT_IMAGE_UPLOAD |
| bool "Allow direct image upload" |
| help |
| Enables directly uploading image to selected image partition. |
| This changes how "image" is understood by mcumgr: normally the mcumgr allows to upload |
| to first slot of the only image it knows, where image is understood as two slots |
| (two DTS images for Zephyr); this allows to treat every DTS defined image as direct |
| target for upload, and more than two may be used (4 at this time). |
| NOTE: When direct upload is used the image numbers are shifted by + 1, and the default |
| behaviour is, when image is not selected, to upload to image that represents secndary |
| slot in normal operation. |
| |
| config IMG_MGMT_REJECT_DIRECT_XIP_MISMATCHED_SLOT |
| bool "Reject Direct-XIP applications with mismatched address" |
| help |
| When enabled, the mcumgr will compare base address of application, |
| encoded into .bin file header with use of imgtool, on upload and will |
| reject binaries that would not be able to start from available |
| Direct-XIP address. |
| The base address can be set, to an image binary header, with imgtool, |
| using the --rom-fixed command line option. |
| |
| endif |
| |
| |
| menuconfig MCUMGR_CMD_OS_MGMT |
| bool "Enable mcumgr handlers for OS management" |
| select REBOOT |
| help |
| Enables mcumgr handlers for OS management |
| |
| if MCUMGR_CMD_OS_MGMT |
| config OS_MGMT_RESET_MS |
| int "Delay before executing reset command (ms)" |
| default 250 |
| help |
| When a reset command is received, the system waits this many milliseconds |
| before performing the reset. This delay allows time for the mcumgr |
| response to be delivered. |
| |
| config OS_MGMT_TASKSTAT |
| bool "Support for taskstat command" |
| default y |
| |
| config OS_MGMT_ECHO |
| bool "Support for echo command" |
| default y |
| endif |
| |
| |
| menuconfig MCUMGR_CMD_STAT_MGMT |
| bool "Enable mcumgr handlers for statistics management" |
| depends on STATS |
| help |
| Enables mcumgr handlers for statistics management. |
| |
| config STAT_MGMT_MAX_NAME_LEN |
| int "Maximum stat group name length" |
| default 32 |
| depends on MCUMGR_CMD_STAT_MGMT |
| help |
| Limits the maximum stat group name length in mcumgr requests, in bytes. |
| A buffer of this size gets allocated on the stack during handling of all |
| stat read commands. If a stat group's name exceeds this limit, it will |
| be impossible to retrieve its values with a stat show command. |
| |
| |
| menuconfig MCUMGR_GRP_ZEPHYR_BASIC |
| bool "Enable Zephyr specific basic group of commands" |
| help |
| Enables mcumgr to processing of Zephyr specific groups. |
| |
| if MCUMGR_GRP_ZEPHYR_BASIC |
| config MCUMGR_GRP_BASIC_CMD_STORAGE_ERASE |
| bool "Enables storage erase command" |
| help |
| Enables command that allows to erase storage partition. |
| |
| module=MGMT_SETTINGS |
| module-dep=LOG |
| module-str=SETTINGS |
| source "${ZEPHYR_BASE}/subsys/logging/Kconfig.template.log_config" |
| |
| endif |
| |
| endmenu |
| |
| config MCUMGR_SMP_BT |
| bool "Bluetooth mcumgr SMP transport" |
| select BT |
| select BT_PERIPHERAL |
| select BT_GATT_DYNAMIC_DB |
| help |
| Enables handling of SMP commands received over Bluetooth. |
| |
| config MCUMGR_SMP_BT_AUTHEN |
| bool "Authenticated requirement for Bluetooth mcumgr SMP transport" |
| depends on MCUMGR_SMP_BT |
| select BT_SMP |
| default y |
| help |
| Enables encrypted and authenticated connection requirement to |
| Bluetooth SMP transport. |
| |
| |
| config MCUMGR_SMP_SHELL |
| bool "Shell mcumgr SMP transport" |
| select SHELL |
| select SHELL_BACKEND_SERIAL |
| select BASE64 |
| help |
| Enables handling of SMP commands received over shell. This allows |
| the shell to be use for both mcumgr commands and shell commands. |
| |
| if MCUMGR_SMP_SHELL |
| |
| config MCUMGR_SMP_SHELL_MTU |
| int "Shell SMP MTU" |
| default 256 |
| help |
| Maximum size of SMP frames sent and received over shell. This value |
| must satisfy the following relation: |
| MCUMGR_SMP_SHELL_MTU <= MCUMGR_BUF_SIZE + 2 |
| |
| config MCUMGR_SMP_SHELL_RX_BUF_COUNT |
| int "Shell SMP RX buffer count" |
| default 2 |
| help |
| Number of buffers used for receiving SMP fragments over shell. |
| |
| endif # MCUMGR_SMP_SHELL |
| |
| config MCUMGR_SMP_UART |
| bool "UART mcumgr SMP transport" |
| select UART_MCUMGR |
| select BASE64 |
| help |
| Enables handling of SMP commands received over UART. This is a |
| lightweight alternative to MCUMGR_SMP_SHELL. It allows mcumgr |
| commands to be received over UART without requiring an additional |
| thread. |
| |
| if UART_ASYNC_API && MCUMGR_SMP_UART |
| |
| menuconfig MCUMGR_SMP_UART_ASYNC |
| bool "Use async UART API when available" |
| help |
| The option enables use of UART async API when available for selected mcumgr uart port. |
| |
| if MCUMGR_SMP_UART_ASYNC |
| config MCUMGR_SMP_UART_ASYNC_BUFS |
| int "Number of async RX UART buffers" |
| range 2 8 |
| default 2 |
| help |
| The asynchronous UART API requires registering RX buffers for received data; when the RX |
| reaches the end of a buffer, it will send event requesting next buffer, to be able to |
| receive data without stopping due to running out of buffer space. At least two buffers |
| area required for smooth RX operation. |
| |
| config MCUMGR_SMP_UART_ASYNC_BUF_SIZE |
| int "Size of single async RX UART buffer" |
| default 64 |
| help |
| The size of single buffer for asynchronous RX. |
| |
| endif # MCUMGR_SMP_UART_ASYNC |
| endif # UART_ASYNC_API |
| |
| config MCUMGR_SMP_UART_MTU |
| int "UART SMP MTU" |
| default 256 |
| depends on MCUMGR_SMP_UART |
| help |
| Maximum size of SMP frames sent and received over UART, in bytes. |
| This value must satisfy the following relation: |
| MCUMGR_SMP_UART_MTU <= MCUMGR_BUF_SIZE + 2 |
| |
| |
| config MCUMGR_SMP_UDP |
| bool "UDP mcumgr SMP transport" |
| select NETWORKING |
| select NET_UDP |
| select NET_SOCKETS |
| select NET_SOCKETS_POSIX_NAMES |
| help |
| Enables handling of SMP commands received over UDP. |
| Will start a thread for listening on the configured UDP port. |
| |
| if MCUMGR_SMP_UDP |
| config MCUMGR_SMP_UDP_IPV4 |
| bool "UDP SMP using IPv4" |
| depends on NET_IPV4 |
| default y |
| help |
| Enable SMP UDP using IPv4 addressing. |
| Can be enabled alongside IPv6 addressing. |
| |
| config MCUMGR_SMP_UDP_IPV6 |
| bool "UDP SMP using IPv6" |
| depends on NET_IPV6 |
| help |
| Enable SMP UDP using IPv6 addressing. |
| Can be enabled alongside IPv4 addressing. |
| |
| config MCUMGR_SMP_UDP_PORT |
| int "UDP SMP port" |
| default 1337 |
| help |
| UDP port that SMP server will listen for SMP commands on. |
| |
| config MCUMGR_SMP_UDP_STACK_SIZE |
| int "UDP SMP stack size" |
| default 512 |
| help |
| Stack size of the SMP UDP listening thread |
| |
| config MCUMGR_SMP_UDP_THREAD_PRIO |
| int "UDP SMP thread priority" |
| default 0 |
| help |
| Scheduling priority of the SMP UDP listening thread. |
| |
| config MCUMGR_SMP_UDP_MTU |
| int "UDP SMP MTU" |
| default 1500 |
| help |
| Maximum size of SMP frames sent and received over UDP, in bytes. |
| This value must satisfy the following relation: |
| MCUMGR_SMP_UDP_MTU <= MCUMGR_BUF_SIZE + SMP msg overhead - address size |
| where address size is determined by IPv4/IPv6 selection. |
| |
| endif # MCUMGR_SMP_UDP |
| |
| config MCUMGR_BUF_COUNT |
| int "Number of mcumgr buffers" |
| default 2 if MCUMGR_SMP_UDP |
| default 4 |
| help |
| The number of net_bufs to allocate for mcumgr. These buffers are |
| used for both requests and responses. |
| |
| config MCUMGR_BUF_SIZE |
| int "Size of each mcumgr buffer" |
| default 2048 if MCUMGR_SMP_UDP |
| default 384 |
| help |
| The size, in bytes, of each mcumgr buffer. This value must satisfy |
| the following relation: |
| MCUMGR_BUF_SIZE >= transport-specific-MTU + transport-overhead |
| In case when MCUMGR_SMP_SHELL is enabled this value should be set to |
| at least SHELL_BACKEND_DUMMY_BUF_SIZE + 32. |
| |
| config MCUMGR_BUF_USER_DATA_SIZE |
| int "Size of mcumgr buffer user data" |
| default 24 if MCUMGR_SMP_UDP && MCUMGR_SMP_UDP_IPV6 |
| default 8 if MCUMGR_SMP_UDP && MCUMGR_SMP_UDP_IPV4 |
| default 4 |
| help |
| The size, in bytes, of user data to allocate for each mcumgr buffer. |
| |
| Different mcumgr transports impose different requirements for this |
| setting. A value of 4 is sufficient for UART, shell, and bluetooth. |
| For UDP, the userdata must be large enough to hold a IPv4/IPv6 address. |
| |
| Note that CONFIG_NET_BUF_USER_DATA_SIZE must be at least as big as |
| MCUMGR_BUF_USER_DATA_SIZE. |
| endif # MCUMGR |