OpenThread and Builtin mbedtls

I am using:
nRF52840
nRF Connect 1.9.1
VS Code
W5500 for ethernet 
Azure IoT Hub

I have the above (mostly) working.  My code is based on the Azure IoT Hub sample for the 9160, but using the W5500 zephyr driver for the ethernet connection.  The ethernet side requires TCP for the Azure connection.  The mbedtls from Nordic does not support TCP, so I have enabled MBEDTLS_BUILTIN.

Now I need to add OpenThread, but I seem to have a conflict over DTLS.

When I add               CONFIG_NET_L2_OPENTHREAD=y        to  prj.conf:

CONFIG_GPIO=y

#CONFIG_CORTEX_M_SYSTICK=y

# Networking config
CONFIG_NETWORKING=y
CONFIG_NET_TCP=y
CONFIG_NET_ARP=y
CONFIG_NET_UDP=y
CONFIG_NET_IPV4=y
CONFIG_NET_DEFAULT_IF_ETHERNET=y
CONFIG_DNS_RESOLVER=y
CONFIG_NET_CONTEXT_CHECK=n

# MBED TLS
CONFIG_ENTROPY_GENERATOR=y
CONFIG_MBEDTLS=y
#ONFIG_MBEDTLS_INSTALL_PATH="D:/TLS/mbedtls"
#CONFIG_CUSTOM_MBEDTLS_CFG_FILE=y
#CONFIG_MBEDTLS_CFG_FILE="D:/TLS/mbedtls/config.h"
#CONFIG_MBEDTLS_LIBRARY=y
#CONFIG_MBEDTLS_TLS_VERSION_1_2=y
# Use Zephyr mbedtls because it supports TCP (Nordic security does not)
CONFIG_MBEDTLS_BUILTIN=y
CONFIG_MBEDTLS_PEM_CERTIFICATE_FORMAT=y
CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN=16384
# Add time() function, get current time from SNTP
CONFIG_MBEDTLS_HAVE_TIME_DATE=y
#CONFIG_MBEDTLS_DEBUG=y
#CONFIG_MBEDTLS_DEBUG_LEVEL=4

#CONFIG_PSA_WANT_ALG_TLS12_PRF=y
#CONFIG_PSA_WANT_ALG_TLS12_PSK_TO_MS=y

#CONFIG_MBEDTLS_ENABLE_HEAP=y
# SSL inbuf/outbuf are 16K each
#CONFIG_MBEDTLS_HEAP_SIZE=60000
#CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN=2048

# build\modules\nrfxlib\nrf_security\include
#CONFIG_MBEDTLS_PK_C=y
#CONFIG_MBEDTLS_PK_WRITE_C=y
#CONFIG_MBEDTLS_CFG_FILE="../../../../mbedtls_config.h"

#because of NRF Security
#CONFIG_MBEDTLS_DEBUG_C=y
#CONFIG_MBEDTLS_SSL_DEBUG_ALL=y
#CONFIG_MBEDTLS_RSA_C=y
#CONFIG_MBEDTLS_AES_C=y
#CONFIG_NET_SOCKETS_LOG_LEVEL_DBG=y


#CONFIG_NRF_SECURITY=y
#CONFIG_NORDIC_SECURITY_BACKEND=y
#CONFIG_NRF_SECURITY_ADVANCED=y
#CONFIG_MBEDTLS_TLS_LIBRARY=y

CONFIG_NET_SOCKETS_SOCKOPT_TLS=y
CONFIG_NET_SOCKETS_TLS_MAX_CONTEXTS=4
CONFIG_NET_SOCKETS_ENABLE_DTLS=y
CONFIG_POSIX_MAX_FDS=8
#CONFIG_MBEDTLS_KEY_EXCHANGE_PSK_ENABLED=y
#CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED=y
#CONFIG_MBEDTLS_ENTROPY_ENABLED=y
#CONFIG_MBEDTLS_TLS_VERSION_1_2=y
#CONFIG_MBEDTLS_DTLS=y
##CONFIG_MBEDTLS_PEM_CERTIFICATE_FORMAT=y
##CONFIG_MBEDTLS_AES_ROM_TABLES=y
#CONFIG_MBEDTLS_KEY_EXCHANGE_RSA_ENABLED=y
#CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y
##CONFIG_MBEDTLS_ECP_NIST_OPTIM=y
##CONFIG_MBEDTLS_CIPHER_AES_ENABLED=y
##CONFIG_MBEDTLS_CIPHER_DES_ENABLED=y
##CONFIG_MBEDTLS_CIPHER_CCM_ENABLED=y
##CONFIG_MBEDTLS_MAC_MD5_ENABLED=y
##CONFIG_MBEDTLS_MAC_SHA1_ENABLED=y
#CONFIG_MBEDTLS_MAC_SHA256_ENABLED=y
#CONFIG_MBEDTLS_CTR_DRBG_ENABLED=y
#CONFIG_MBEDTLS_HMAC_DRBG_ENABLED=y
#CONFIG_MBEDTLS_GENPRIME_ENABLED=y



# w5500 driver config
CONFIG_SPI=y
CONFIG_NET_L2_ETHERNET=y
CONFIG_ETH_W5500=y
CONFIG_NET_DHCPV4=y


# Network address config
CONFIG_NET_CONFIG_SETTINGS=y
CONFIG_NET_CONFIG_NEED_IPV4=y
CONFIG_NET_CONFIG_MY_IPV4_ADDR="192.168.1.200"
CONFIG_NET_CONFIG_PEER_IPV4_ADDR="192.168.1.6"

# SNTP
CONFIG_SNTP=y

# Network management
CONFIG_NET_MGMT=y
CONFIG_NET_MGMT_EVENT=y

# choose RTT console
#CONFIG_UART_CONSOLE=n
#CONFIG_USE_SEGGER_RTT=y
#CONFIG_RTT_CONSOLE=y

# General config
CONFIG_LOG=y
CONFIG_LOG_DEFAULT_LEVEL=3
CONFIG_NET_LOG=y

#////////////////////////////////
#// Azure IoT Hub
#////////////////////////////////

# NEWLIB C
CONFIG_NEWLIB_LIBC=y

# Azure IoT Hub library
CONFIG_AZURE_IOT_HUB=y
#CONFIG_AZURE_IOT_HUB_DEVICE_ID="FL-F4CE36C59708"
CONFIG_AZURE_IOT_HUB_DEVICE_ID="mydevice"
# Host name must be configured if DPS is not used
CONFIG_AZURE_IOT_HUB_HOSTNAME="Frantec-FloLogic-Test.azure-devices.net"
#CONFIG_AZURE_IOT_HUB_HOSTNAME="20.49.110.136"
# Change the security tag to the tag where Azure IoT Hub certificates
# are provisioned
CONFIG_AZURE_IOT_HUB_SEC_TAG=10

# Uncomment and configure the options below to use DPS for device provisioning
# CONFIG_AZURE_IOT_HUB_DPS=y
# CONFIG_AZURE_IOT_HUB_DPS_ID_SCOPE=""

# Uncomment to get more verbose logging when debugging
CONFIG_AZURE_IOT_HUB_LOG_LEVEL_DBG=y

# MQTT - Maximum MQTT keepalive timeout specified by Azure IoT Hub
CONFIG_MQTT_KEEPALIVE=1767 

# LED control
CONFIG_DK_LIBRARY=y
CONFIG_DK_LIBRARY_INVERT_LEDS=n

# Heap and stacks
CONFIG_HEAP_MEM_POOL_SIZE=4096
#CONFIG_MAIN_STACK_SIZE=2048
CONFIG_MAIN_STACK_SIZE=4096


# cJSON
CONFIG_CJSON_LIB=y

# Settings, needed for Azure Device Provisioning Service
CONFIG_FLASH=y
CONFIG_FLASH_MAP=y
CONFIG_FCB=y
CONFIG_SETTINGS=y
CONFIG_SETTINGS_FCB=y
CONFIG_MPU_ALLOW_FLASH_WRITE=y


#//////////////////////
# Open Thread
#//////////////////////
CONFIG_OPENTHREAD_MBEDTLS_CHOICE=y

# Enable OpenThread CoAP support API
#CONFIG_OPENTHREAD_COAP=y

# Configure sample logging setting
#CONFIG_COAP_SERVER_LOG_LEVEL_DBG=y
#CONFIG_OT_COAP_UTILS_LOG_LEVEL_DBG=y
#CONFIG_OPENTHREAD_LOG_LEVEL_NOTE=y
#CONFIG_OPENTHREAD_DEBUG=y

# Adjust log strdup settings
#CONFIG_LOG_STRDUP_MAX_STRING=128

# Network shell
#CONFIG_SHELL=y
#CONFIG_OPENTHREAD_SHELL=y
#CONFIG_SHELL_ARGC_MAX=26
#CONFIG_SHELL_CMD_BUFF_SIZE=416

# Network sockets
##CONFIG_NET_SOCKETS=y
##CONFIG_NET_SOCKETS_POSIX_NAMES=y
##CONFIG_NET_SOCKETS_POLL_MAX=4

# Same network Master Key for client and server
CONFIG_OPENTHREAD_NETWORKKEY="00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff"

# L2 OpenThread enabling
CONFIG_NET_L2_OPENTHREAD=y
#CONFIG_OPENTHREAD_THREAD_VERSION_1_2=y

# Commissioner
#CONFIG_OPENTHREAD_COMMISSIONER=y

# Joiner
#CONFIG_OPENTHREAD_JOINER=y
#CONFIG_OPENTHREAD_JOINER_AUTOSTART=y

#CONFIG_ASSERT=y
#CONFIG_ASSERT_NO_COND_INFO=y
#CONFIG_MBEDTLS_SHA1_C=n
#CONFIG_FPU=y

I get this error on the Build:

warning: MBEDTLS_DTLS (defined at D:\NordicSemi\v1.9.1\zephyr\modules\mbedtls\Kconfig.tls-generic:34, D:\NordicSemi\v1.9.1\zephyr\modules\mbedtls\Kconfig.tls-generic:34, D:\NordicSemi\v1.9.1\nrfxlib\nrf_security\Kconfig:128, d:\FloLogic\VS_Code_Projects\Nordic_Wiznet\wiznet_2\build\modules\mbedtls\Kconfig.tls-generic:34) has direct dependencies ((MBEDTLS_TLS_VERSION_1_1 || MBEDTLS_TLS_VERSION_1_2) && !(NRF_SECURITY || NORDIC_SECURITY_BACKEND) && MBEDTLS_BUILTIN && MBEDTLS_CFG_FILE = "config-tls-generic.h" && MBEDTLS) || ((MBEDTLS_TLS_VERSION_1_1 || MBEDTLS_TLS_VERSION_1_2) && !(NRF_SECURITY || NORDIC_SECURITY_BACKEND) && MBEDTLS_BUILTIN && MBEDTLS_CFG_FILE = "config-tls-generic.h" && MBEDTLS) || ((MBEDTLS_TLS_VERSION_1_2 || MBEDTLS_SSL_PROTO_TLS1_2) && !MBEDTLS_BUILTIN) || ((MBEDTLS_TLS_VERSION_1_1 || MBEDTLS_TLS_VERSION_1_2) && !(NRF_SECURITY || NORDIC_SECURITY_BACKEND) && MBEDTLS_BUILTIN && MBEDTLS_CFG_FILE = "config-tls-generic.h" && MBEDTLS && 0) with value n, but is currently being y-selected by the following symbols:
 - NET_SOCKETS_ENABLE_DTLS (defined at d:\FloLogic\VS_Code_Projects\Nordic_Wiznet\wiznet_2\build\subsys\net\lib\sockets\Kconfig:99), with value y, direct dependencies NET_SOCKETS_SOCKOPT_TLS && NET_SOCKETS && NETWORKING (value: y), and select condition NET_NATIVE && NET_SOCKETS_SOCKOPT_TLS && NET_SOCKETS && NETWORKING (value: y)

error: Aborting due to Kconfig warnings

CMake Error at D:\NordicSemi\v1.9.1\zephyr\cmake\kconfig.cmake:272 (message):
  command failed with return code: 1
Call Stack (most recent call first):
  D:\NordicSemi\v1.9.1\zephyr\cmake\app\boilerplate.cmake:544 (include)
  D:\NordicSemi\v1.9.1\zephyr\share\zephyr-package\cmake\ZephyrConfig.cmake:24 (include)
  D:\NordicSemi\v1.9.1\zephyr\share\zephyr-package\cmake\ZephyrConfig.cmake:40 (include_boilerplate)
  d:\FloLogic\VS_Code_Projects\Nordic_Wiznet\wiznet_2\build\CMakeLists.txt:4 (find_package)

How can I make these elements work together?

Mary

Related