Hi there!
I am facing "<err> download_client: Unexpected HTTP response: 400 bad request" error
whenever I am trying to download full modem update from AWS S3 bucket.
My environment
1. nRF SDK = 1.9.1
2. Device = nRF9160
Prj.confCONFIG_TRUSTED_EXECUTION_NONSECURE=y
CONFIG_REBOOT=y
CONFIG_RING_BUFFER=y
# LOGGNG
CONFIG_LOG=y
CONFIG_LOG_BUFFER_SIZE=2048
CONFIG_LOG2_MODE_DEFERRED=y
CONFIG_CBPRINTF_FP_SUPPORT=y
CONFIG_LOG_DEFAULT_LEVEL=4
# Console
CONFIG_PRINTK=y
CONFIG_UART_CONSOLE=n
CONFIG_SHELL=y
CONFIG_KERNEL_SHELL=y
CONFIG_DEVICE_SHELL=y
CONFIG_POSIX_CLOCK=y
CONFIG_DATE_SHELL=y
CONFIG_SHELL_STACK_SIZE=1024
CONFIG_SHELL_BACKEND_SERIAL=n
CONFIG_SHELL_LOG_BACKEND=y
CONFIG_SHELL_RTT_LOG_LEVEL_DBG=y
CONFIG_SHELL_RTT_INIT_LOG_LEVEL_WRN=y
CONFIG_THREAD_MONITOR=y
CONFIG_INIT_STACKS=y
CONFIG_BOOT_BANNER=n
CONFIG_THREAD_NAME=y
#enable RTT shell
CONFIG_USE_SEGGER_RTT=y
CONFIG_SHELL_BACKEND_RTT=y
CONFIG_SEGGER_RTT_BUFFER_SIZE_DOWN=32
# UART
CONFIG_UART_ASYNC_API=y
# Modem library
CONFIG_NRF_MODEM_LIB=y
#CONFIG_POSIX_MAX_FDS=8
CONFIG_MODEM_INFO=y
CONFIG_MODEM_KEY_MGMT=y
CONFIG_DOWNLOAD_CLIENT=y
CONFIG_NEWLIB_LIBC=y
# LTE link control
CONFIG_LTE_LINK_CONTROL=y
CONFIG_LTE_NETWORK_MODE_LTE_M=y
CONFIG_LTE_AUTO_INIT_AND_CONNECT=n
CONFIG_LTE_LOCK_BANDS=y
CONFIG_LTE_LOCK_BAND_MASK="0000000001000000000000000001"
# Network
CONFIG_NETWORKING=y
CONFIG_NET_NATIVE=n
CONFIG_NET_SOCKETS=y
CONFIG_NET_SOCKETS_OFFLOAD=y
# PDN library
CONFIG_PDN=y
CONFIG_PDN_SYS_INIT=n
CONFIG_PDN_DEFAULTS_OVERRIDE=y
CONFIG_PDN_DEFAULT_APN="apnname"
CONFIG_PDN_DEFAULT_FAM_IPV4=y
CONFIG_PDN_DEFAULT_AUTH_CHAP=y
CONFIG_PDN_DEFAULT_USERNAME="username"
CONFIG_PDN_DEFAULT_PASSWORD="password"
CONFIG_HEAP_MEM_POOL_SIZE=29696
# for debug
CONFIG_DEBUG_OPTIMIZATIONS=y
CONFIG_DEBUG_THREAD_INFO=y
CONFIG_OPENOCD_SUPPORT=y
CONFIG_MAIN_STACK_SIZE=8192
CONFIG_PRIVILEGED_STACK_SIZE=1024
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=4096
# Flash
CONFIG_SPI=y
CONFIG_FLASH=y
# I2C
CONFIG_I2C_NRFX=y
CONFIG_I2C=y
#IMU
CONFIG_SENSOR=y
CONFIG_ICM42605=y
CONFIG_ICM42605_TRIGGER_NONE=y
# json
CONFIG_JSON_LIBRARY=y
# float
CONFIG_NEWLIB_LIBC=y
CONFIG_NEWLIB_LIBC_FLOAT_PRINTF=y
# for Zmod library
CONFIG_FPU=y
CONFIG_FPU_SHARING=y
CONFIG_FP_HARDABI=y
CONFIG_CPU_LOAD=y
CONFIG_CPU_LOAD_LOG_INTERVAL=2000
CONFIG_CPU_LOAD_LOG_PERIODIC=y
CONFIG_DATE_TIME=y
CONFIG_APP_VERSION="v0.0.4"
CONFIG_DEVELOP_MODE=y
CONFIG_STAGING_FLG=n
CONFIG_CJSON_LIB=y
# appication fota update configuration
CONFIG_FOTA_DOWNLOAD=y
CONFIG_FOTA_SOCKET_RETRIES=5
CONFIG_DOWNLOAD_HOST="stg-host.jp"
CONFIG_DOWNLOAD_HOST_PROD="prod-host.jp"
#DFU
CONFIG_DFU_TARGET=y
# MCUBOOT
CONFIG_BOOTLOADER_MCUBOOT=y
CONFIG_MCUBOOT_IMG_MANAGER=y
# Image manager
CONFIG_IMG_MANAGER=y
CONFIG_IMG_ERASE_PROGRESSIVELY=y
CONFIG_DOWNLOAD_CLIENT_STACK_SIZE=4096
CONFIG_DOWNLOAD_CLIENT_BUF_SIZE=2048
CONFIG_DOWNLOAD_CLIENT_HTTP_FRAG_SIZE_1024=y
CONFIG_DOWNLOAD_CLIENT_RANGE_REQUESTS=n
CONFIG_DOWNLOAD_CLIENT_LOG_LEVEL_DBG=y
CONFIG_DOWNLOAD_CLIENT_LOG_HEADERS=y
#modem delta update configuartion
CONFIG_MODEM_DELTA_UPDATE_VERSION="mfw_nrf9160_1.3.2"
CONFIG_MODEM_FULL_UPDATE_VERSION="mfw_nrf9160_1.3.2"
# DFU Target
CONFIG_DFU_TARGET_STREAM=y
CONFIG_DFU_TARGET_FULL_MODEM=y
# Full modem firmware from external flash support
CONFIG_FMFU_FDEV=y
CONFIG_CDDL_GEN=y
#SPI NOR
CONFIG_SPI_NOR=y
#Stream flash
CONFIG_STREAM_FLASH=y
CONFIG_STREAM_FLASH_ERASE=y
#libmodem
CONFIG_NRF_MODEM_LIB_SYS_INIT=n
#Prevalidation is not yet supported by the modem firmware, so skip it for now.
CONFIG_FMFU_FDEV_SKIP_PREVALIDATION=n
CONFIG_NO_OPTIMIZATIONS=y
CONFIG_EXTRA_EXCEPTION_INFO=y
CONFIG_NCS_SAMPLES_DEFAULTS=n
# Crypto
CONFIG_OBERON_BACKEND=y
CONFIG_NORDIC_SECURITY_BACKEND=y
# Disable all non-used crypto
CONFIG_NRF_SECURITY_RNG=n
CONFIG_MBEDTLS_AES_C=n
CONFIG_MBEDTLS_CHACHA20_C=n
CONFIG_MBEDTLS_POLY1305_C=n
CONFIG_MBEDTLS_ECP_C=n
CONFIG_MBEDTLS_RSA_C=n
CONFIG_MBEDTLS_DHM_C=n
CONFIG_MBEDTLS_SHA1_C=n
CONFIG_MBEDTLS_SHA384_C=n
CONFIG_MBEDTLS_SHA512_C=n
CONFIG_MBEDTLS_GCM_C=n
# This is the one we need
CONFIG_MBEDTLS_SHA256_C=y
update_thread.c #define MC_API_BUF_SIZE 3072
static char *mc_api_buf = NULL;
mc_api_buf = k_malloc(MC_API_BUF_SIZE);
if(mc_api_buf == NULL)
{
// 取得失敗
LOG_ERROR("%s", "mc_api_buf k_malloc error");
return;
}
memset(mc_api_buf, 0x00, MC_API_BUF_SIZE);
flash_dev = device_get_binding(EXT_FLASH_DEVICE);
if (flash_dev == NULL) {
LOG_ERROR("Failed to get flash device: %s\n", EXT_FLASH_DEVICE);
}
k_work_init(&fmfu_work, fmfu_work_cb);
const struct dfu_target_full_modem_params params = {
.buf = fmfu_buf,
.len = sizeof(fmfu_buf),
.dev = &(struct dfu_target_fmfu_fdev){ .dev = flash_dev,
.offset = 0x3e8000,
.size = 2048000 }
};
ret = dfu_target_full_modem_cfg(¶ms);
if (ret != 0) {
LOG_ERROR("dfu_target_full_modem_cfg failed: %d\n", ret);
}
ret = modem_info_init();
if (ret != 0) {
LOG_ERROR("modem_info_init failed: %d\n", ret);
}
sprintf(mc_api_buf, "https://%s/product/%s/bin/modem/%s/modem_update_%s.cbor", DOWNLOAD_HOST, PRODUCT, json_latest_modem_version->valuestring, removed_dot_modem_version);
ret = fota_download_start(DOWNLOAD_HOST, mc_api_buf, TLS_MC_API_SEC_TAG, 0, 1024);
if (ret != 0) {
LOG_DBG("fota_download_start() failed: %d", ret);
}
Error log
build log
I feel,
CONFIG_HEAP_MEM_POOL_SIZE=29696
this above config in prj.conf is causing the problem.
Please help me in resolving the issue.
Best Regards
Praveen Deshmane