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