NRF7002 can scan and see 5GHz network, but can't connect to it

Hi, 

so, If I take the WiFi scan sample from the nrf/samples/wifi/scan folder, and flash it to my board, I can reliably see my created hotspots, no matter if they're 2.4GHz or 5GHz.... and I can connect to both instances of the hotspot with the nrf/samples/wifi/sta sample. So, I would say hardware is ok. But, my code in my project can reliably scan and "see" 5GHz network, but, I can only connect to the 2.4GHz instance of the hotspot.... 5GHz can see the network, and, when I try to connect, it say's the that the access point isn't found. 


[00:01:03.225,708] <inf> scan: 1    | test_hotspot                     12    | 11   | -21  | WPA2-PSK | 3E:6E:2D:12:E7:CC

[00:13:40.635,681] <inf> scan: 8    | test_hotspot                     12    | 161  | -51  | WPA2-PSK | E2:29:7A:21:D0:68



These are the logs from my app: 

[00:00:08.982,788] <inf> wifi_module: Wi‑Fi connection initiated to 'test_hotspot'
[00:00:15.006,744] <inf> wifi_module: Net event: 3512074243
[00:00:15.007,080] <err> wifi_module: Wi-Fi connection failed: access point not found.
[00:00:15.007,507] <inf> wifi_module: Attempting to send another WiFi connect request, retry number 1
[00:00:18.713,867] <inf> wifi_module: Wi‑Fi connection initiated to 'test_hotspot'
[00:00:24.737,396] <inf> wifi_module: Net event: 3512074243
[00:00:24.737,731] <err> wifi_module: Wi-Fi connection failed: access point not found.
[00:00:24.738,189] <inf> wifi_module: Attempting to send another WiFi connect request, retry number 2
[00:00:28.451,416] <inf> wifi_module: Wi‑Fi connection initiated to 'test_hotspot'
[00:00:34.475,372] <inf> wifi_module: Net event: 3512074243
[00:00:34.475,708] <err> wifi_module: Wi-Fi connection failed: access point not found.
[00:00:34.476,135] <wrn> wifi_module: Unsucessful connecting to the WiFi, failed 3 requests.


This is my prj.conf, can you please check and see if there' something that's not ok? I also embedded my code for connecting to the Wi-Fi....

#
# General config
#
CONFIG_REBOOT=y

# Logs - use RTT instead of UART...
CONFIG_LOG=y
#CONFIG_UART_CONSOLE=y
#CONFIG_LOG_BACKEND_UART=y
#CONFIG_UART_ASYNC_API=y
CONFIG_LOG_BACKEND_RTT_BUFFER_SIZE=16384
CONFIG_LOG_BACKEND_RTT=y
CONFIG_LOG_MODE_IMMEDIATE=y
CONFIG_USE_SEGGER_RTT=y
CONFIG_SEGGER_RTT_BUFFER_SIZE_UP=4096
CONFIG_SEGGER_RTT_BUFFER_SIZE_DOWN=4096
CONFIG_SEGGER_RTT_PRINTF_BUFFER_SIZE=1024

# device ID library
CONFIG_HW_ID_LIBRARY=y
CONFIG_HW_ID_LIBRARY_SOURCE_DEVICE_ID=y

# Re-enable this if shell is needed...
#CONFIG_SHELL=y
#CONFIG_SHELL_STACK_SIZE=6144

# Thread data - useful for stack overflows, etc...
CONFIG_THREAD_NAME=y
#CONFIG_THREAD_ANALYZER=y
#CONFIG_THREAD_ANALYZER_AUTO=y
#CONFIG_THREAD_ANALYZER_RUN_UNLOCKED=y

# Stack sizes
CONFIG_MAIN_STACK_SIZE=4096
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=16384

CONFIG_HEAP_MEM_POOL_SIZE=44240
CONFIG_HEAP_MEM_POOL_IGNORE_MIN=y
CONFIG_NRF_WIFI_DATA_HEAP_SIZE=40000

# this creates a lot of warnings, but better than patching the Zephyr source? 
CONFIG_COMPILER_OPT="-DMBEDTLS_ALLOW_PRIVATE_ACCESS"

# NVS and settings
CONFIG_NVS=y
CONFIG_SETTINGS=y
CONFIG_SETTINGS_NVS=y

# Link time optimisation - less flash needed
CONFIG_LTO=y
CONFIG_ISR_TABLES_LOCAL_DECLARATION=y
CONFIG_SIZE_OPTIMIZATIONS_AGGRESSIVE=y

# Kernel options
CONFIG_ENTROPY_GENERATOR=y

# SoC flash
CONFIG_MPU_ALLOW_FLASH_WRITE=y
CONFIG_FLASH=y
CONFIG_FLASH_MAP=y
CONFIG_FLASH_PAGE_LAYOUT=y
CONFIG_STREAM_FLASH=y
CONFIG_SOC_FLASH_NRF_RADIO_SYNC_NONE=y

# MCUBoot configs
CONFIG_IMG_MANAGER=y
CONFIG_MCUBOOT_IMG_MANAGER=y
CONFIG_MCUBOOT_UPDATE_FOOTER_SIZE=0x0

# Keys
CONFIG_HW_UNIQUE_KEY=y
CONFIG_IDENTITY_KEY=y

# CBOR support
CONFIG_ZCBOR=y

#Finite state machine
CONFIG_SMF=y

# Nanopb library
CONFIG_NANOPB=y

# cJSON
CONFIG_CJSON_LIB=y

#
# Bluetooth settings
#
CONFIG_BT=y
CONFIG_BT_SMP=n
CONFIG_BT_PERIPHERAL=y
CONFIG_BT_MAX_CONN=1

CONFIG_BT_BUF_ACL_RX_SIZE=514
CONFIG_BT_L2CAP_TX_MTU=517
CONFIG_BT_BUF_ACL_TX_SIZE=514

CONFIG_BT_RX_STACK_SIZE=4096
CONFIG_BT_HCI_TX_STACK_SIZE=1536
CONFIG_BT_BONDABLE=n
CONFIG_BT_DEVICE_NAME_DYNAMIC=y

CONFIG_BT_PERIPHERAL_PREF_TIMEOUT=75

#Added to fix BLE crash in coex enable cases.
CONFIG_NRF_RPC=n
CONFIG_NRF_RPC_CBOR=n

# BLE optimisations
CONFIG_BT_DEBUG_NONE=y
CONFIG_BT_ASSERT=n
CONFIG_BT_DATA_LEN_UPDATE=n
CONFIG_BT_PHY_UPDATE=n
CONFIG_BT_GATT_CACHING=n
CONFIG_BT_GATT_SERVICE_CHANGED=n
CONFIG_BT_GAP_PERIPHERAL_PREF_PARAMS=n

# Disable Bluetooth controller features not needed
CONFIG_BT_CTLR_PRIVACY=n
CONFIG_BT_CTLR_PHY_2M=n

# Reduce Bluetooth buffers
CONFIG_BT_BUF_EVT_DISCARDABLE_COUNT=1
CONFIG_BT_BUF_EVT_DISCARDABLE_SIZE=43
CONFIG_BT_BUF_EVT_RX_COUNT=2

CONFIG_BT_L2CAP_TX_BUF_COUNT=8
CONFIG_BT_ATT_TX_COUNT=8
CONFIG_BT_BUF_ACL_TX_COUNT=8
CONFIG_BT_CONN_TX_MAX=8

#
# Secure storage and encryption settings
#
CONFIG_NRF_SECURITY=y
CONFIG_NORDIC_SECURITY_BACKEND=y

# Use hardware crypto accelerator
CONFIG_CC3XX_BACKEND=n
CONFIG_OBERON_BACKEND=y
CONFIG_PSA_CRYPTO_DRIVER_OBERON=y
CONFIG_PSA_CRYPTO_DRIVER_CC3XX=n

# Trusted storage settings
CONFIG_TRUSTED_STORAGE=y
CONFIG_TRUSTED_STORAGE_BACKEND_AEAD=y
CONFIG_TRUSTED_STORAGE_BACKEND_AEAD_KEY_DERIVE_FROM_HUK=y
CONFIG_PSA_PROTECTED_STORAGE=y
CONFIG_PSA_INTERNAL_TRUSTED_STORAGE=y
CONFIG_TRUSTED_STORAGE_STORAGE_BACKEND_SETTINGS=y
CONFIG_TRUSTED_STORAGE_BACKEND_AEAD_MAX_DATA_SIZE=2048

# MbedTLS settings
CONFIG_MBEDTLS=y
CONFIG_MBEDTLS_PSA_CRYPTO_C=y
CONFIG_MBEDTLS_THREADING_C=y
CONFIG_MBEDTLS_PSA_CRYPTO_STORAGE_C=y
CONFIG_MBEDTLS_SHA256_C=y
CONFIG_MBEDTLS_BUILTIN=y
CONFIG_PSA_WANT_ALG_SHA_256=y
CONFIG_MBEDTLS_RSA_C=y
CONFIG_MBEDTLS_MPI_MAX_SIZE=512

# TFM and crypto settings
CONFIG_PSA_WANT_KEY_TYPE_AES=y
CONFIG_PSA_WANT_ALG_CTR=y
CONFIG_PSA_WANT_GENERATE_RANDOM=y
CONFIG_PSA_WANT_ALG_GCM=y

#
# WiFi support
#

# Optimize WiFi stack to save some memory
CONFIG_WIFI=y
CONFIG_WIFI_NRF70=y

# WiFi credentials library, and WiFi safe backend PSA storage. Maximum nr. of entries is one
CONFIG_NET_CONFIG_SETTINGS=y
CONFIG_WIFI_CREDENTIALS=y
CONFIG_WIFI_CREDENTIALS_MAX_ENTRIES=1

# More stack settings
CONFIG_NET_TX_STACK_SIZE=1200
CONFIG_NET_RX_STACK_SIZE=1500

#
# Net settings
#
CONFIG_NETWORKING=y
CONFIG_NET_SOCKETS=y
CONFIG_NET_NATIVE=y
CONFIG_NET_LOG=y
CONFIG_NET_IPV4=y
CONFIG_NET_UDP=y
CONFIG_NET_TCP=y
CONFIG_NET_DHCPV4=y
CONFIG_DNS_RESOLVER=y
CONFIG_NET_SOCKETS_DNS_TIMEOUT=30000
CONFIG_NET_TC_TX_COUNT=1
CONFIG_NET_IF_UNICAST_IPV4_ADDR_COUNT=1
CONFIG_NET_MAX_CONTEXTS=6
CONFIG_NET_MAX_CONN=6
CONFIG_NET_CONTEXT_SYNC_RECV=y
CONFIG_INIT_STACKS=y
CONFIG_NET_L2_ETHERNET=y
CONFIG_NET_CONFIG_INIT_TIMEOUT=0
CONFIG_NET_L2_WIFI_MGMT=y
CONFIG_L2_WIFI_CONNECTIVITY=y
CONFIG_L2_WIFI_CONNECTIVITY_AUTO_CONNECT=n
CONFIG_L2_WIFI_CONNECTIVITY_AUTO_DOWN=n
CONFIG_NET_SOCKETS_OFFLOAD=n
CONFIG_NET_CONTEXT_SNDTIMEO=y
CONFIG_NET_CONTEXT_RCVTIMEO=y
CONFIG_NET_MGMT=y
CONFIG_NET_MGMT_EVENT=y
CONFIG_NET_MGMT_EVENT_INFO=y
CONFIG_NET_MGMT_EVENT_QUEUE_TIMEOUT=5000
CONFIG_NET_CONNECTION_MANAGER=y
CONFIG_NET_CONNECTION_MANAGER_MONITOR_STACK_SIZE=5200
CONFIG_NET_OFFLOAD=y

# Some network optimisations 
CONFIG_NRF70_AP_MODE=n
CONFIG_NRF70_P2P_MODE=n
CONFIG_NET_PKT_RX_COUNT=16
CONFIG_NET_PKT_TX_COUNT=16
CONFIG_NRF70_RX_NUM_BUFS=16
CONFIG_NET_BUF_RX_COUNT=16
CONFIG_NET_BUF_TX_COUNT=32
CONFIG_NRF70_UTIL=n
CONFIG_NRF70_MAX_TX_AGGREGATION=1
CONFIG_NRF70_MAX_TX_TOKENS=5
CONFIG_ZVFS_OPEN_MAX=20
CONFIG_NET_SOCKETS_POLL_MAX=20
CONFIG_NET_PKT_BUF_TX_DATA_POOL_SIZE=4096
CONFIG_NET_PKT_BUF_RX_DATA_POOL_SIZE=4096
CONFIG_MBEDTLS_ENABLE_HEAP=y
CONFIG_MBEDTLS_HEAP_SIZE=65535

# WPA supplicant
CONFIG_WIFI_NM_WPA_SUPPLICANT=y

# Coexistence 
CONFIG_NRF70_SR_COEX=y
CONFIG_NRF70_SR_COEX_RF_SWITCH=n

# TLS networking
CONFIG_NET_SOCKETS_SOCKOPT_TLS=y
CONFIG_NET_SOCKETS_ENABLE_DTLS=n
CONFIG_NET_SOCKETS_TLS_MAX_CONTEXTS=10
CONFIG_TLS_CREDENTIALS_BACKEND_PROTECTED_STORAGE=n
CONFIG_TLS_CREDENTIALS=y
CONFIG_TLS_MAX_CREDENTIALS_NUMBER=15
CONFIG_MBEDTLS_PEM_PARSE_C=y
CONFIG_NET_MGMT_EVENT_STACK_SIZE=8192
CONFIG_MBEDTLS_X509_CRT_PARSE_C=y
CONFIG_MBEDTLS_PK_PARSE_C=y
CONFIG_MBEDTLS=y
CONFIG_MBEDTLS_DTLS=n
CONFIG_MBEDTLS_TLS_VERSION_1_2=y
CONFIG_MBEDTLS_TLS_VERSION_1_3=n
CONFIG_MBEDTLS_RSA_C=y
CONFIG_MBEDTLS_ECP_C=y
CONFIG_PSA_WANT_RSA_KEY_SIZE_4096=y
CONFIG_PSA_WANT_RSA_KEY_SIZE_2048=y
CONFIG_MBEDTLS_HAVE_TIME_DATE=n
CONFIG_MBEDTLS_SSL_SERVER_NAME_INDICATION=y
CONFIG_MBEDTLS_SSL_IN_CONTENT_LEN=16384
CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=16384
CONFIG_MBEDTLS_MPI_MAX_SIZE=512
CONFIG_NET_SOCKETS_TLS_SET_MAX_FRAGMENT_LENGTH=n
CONFIG_MBEDTLS_SSL_RENEGOTIATION=y
CONFIG_NET_SOCKETS_TLS_MAX_CONTEXTS=3
CONFIG_NET_SOCKETS_SOCKOPT_TLS=y
CONFIG_TLS_CREDENTIALS=y
CONFIG_TLS_MAX_CREDENTIALS_NUMBER=10
CONFIG_NET_SOCKETS_TLS_MAX_CREDENTIALS=10
CONFIG_MBEDTLS_PEM_PARSE_C=y
CONFIG_MBEDTLS_X509_CRT_PARSE_C=y
CONFIG_POSIX_API=y
CONFIG_NET_IPV4=y
CONFIG_NET_IPV6=y
CONFIG_NET_CONNECTION_MANAGER=y
CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y
CONFIG_MBEDTLS_TLS_VERSION_1_2=y
CONFIG_MBEDTLS_HAVE_TIME_DATE=n
CONFIG_NET_MAX_CONN=12
CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y
CONFIG_PSA_WANT_RSA_KEY_SIZE_1024=y
CONFIG_MBEDTLS_RSA_C=y
CONFIG_MBEDTLS_TLS_LIBRARY=y
CONFIG_MBEDTLS_X509_LIBRARY=y
CONFIG_MBEDTLS_ECDSA_C=y
CONFIG_MBEDTLS_LIBRARY_NRF_SECURITY=y

CONFIG_WIFI_RANDOM_MAC_ADDRESS=y

# This moves the nRF70 patches and code to external flash, and allows it to 
# be patched with MCUBoot
CONFIG_NRF_WIFI_PATCHES_EXT_FLASH_STORE=y
CONFIG_NRF_WIFI_FW_FLASH_CHUNK_SIZE=2048
CONFIG_NRF_WIFI_FW_PATCH_DFU=y
CONFIG_DFU_MULTI_IMAGE_MAX_IMAGE_COUNT=2

# SNTP support
CONFIG_SNTP=y
CONFIG_NET_CONFIG_NEED_IPV4=y
CONFIG_NET_HOSTNAME_ENABLE=y

# Low power
CONFIG_PM_DEVICE=y
CONFIG_PM_DEVICE_RUNTIME=y

CONFIG_FSM_TICK_TIMER_ENABLED=n
CONFIG_RESET_ON_FATAL_ERROR=y


    /* Hardcoded SSID and password */
    const char *ssid = "test_hotspot";
    const char *psk = ************ (removed here);

    struct wifi_connect_req_params conn_params;
    memset(&conn_params, 0, sizeof(conn_params));

    conn_params.ssid = (const uint8_t *)ssid;
    conn_params.ssid_length = strlen(ssid);
    conn_params.psk = (const uint8_t *)psk;
    conn_params.psk_length = strlen(psk);

    conn_params.channel = WIFI_CHANNEL_ANY;
    conn_params.mfp = WIFI_MFP_OPTIONAL;
    conn_params.timeout = CONFIG_WIFI_CONNECT_TIMEOUT_S;
    conn_params.security = WIFI_SECURITY_TYPE_PSK;

    /* Get the default network interface */
    struct net_if *p_iface = net_if_get_first_wifi();
    if (!p_iface) {
        LOG_ERR("No default network interface available");
        return;
    }

    LOG_DBG("Connecting to SSID='%s' (len %u), PSK='%s' (len %u)", ssid, (unsigned)conn_params.ssid_length,
            psk, (unsigned)conn_params.psk_length);

    /* Issue the connection request */
    int err = net_mgmt(NET_REQUEST_WIFI_CONNECT, p_iface, &conn_params, sizeof(conn_params));
    if (err) {
        LOG_ERR("Wi‑Fi connect attempt failed: %d", err);
        return;
    }

    LOG_INF("Wi‑Fi connection initiated to '%s'", ssid);
}

Parents
  • Hi

    What device have you made the 2.4GHz and 5GHz hotspots with? Are you certain the access points support 5GHz connections? Additionally, what SDK version are you using for development here? Are you using the nRF7002 DK for development or a custom board? And what environment are you testing in here, what's the range between the nRF7002 and hotspot, since range will generally be better on a 2.4GHz connection compared to 5 GHz connections.

    Best regards,

    Simon

Reply
  • Hi

    What device have you made the 2.4GHz and 5GHz hotspots with? Are you certain the access points support 5GHz connections? Additionally, what SDK version are you using for development here? Are you using the nRF7002 DK for development or a custom board? And what environment are you testing in here, what's the range between the nRF7002 and hotspot, since range will generally be better on a 2.4GHz connection compared to 5 GHz connections.

    Best regards,

    Simon

Children
  • The hotspots are made with a cellphone. 

    The access point definitely supports the 5GHz connections, since I can connect with the SDK sample... 

    It's a custom board, and range between the device and cellphone is ~20cm - both things on my desk. I can scan the hotspot from both the sample and my code, but, sample can connect to the network, my code cannot. And I cannot see why? 

    SDK version is 3.0.2

Related