TCP server (using net_context) running on nrf7002-DK in STA mode stopping receiving data

Hello everybody,

                         I have very bad problem for me. I am developing application on nrf7002-DK based on STA (station) example. I add own AT command analyzer and SCAN, so I am able to see webs that are available near my nrf7002-DK. With special AT command, i am able to connect to any web that my DK see.

I create AT command that allows me create a TCP server on nrf7002-DK.

static void create_tcp_server1(int port_number)
{
  //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
	//                                          Vytvoření TCP serveru
	//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    int rc = net_context_get(AF_INET, SOCK_STREAM, IPPROTO_TCP, &server1.tcp_server);
    if (rc < 0) 
	{
		if(loggovani==true)
		{
           printk("net_context_get selhal: %d\n", rc);
		}
        
    } 
	else 
	{
	    if(loggovani==true)
		{
           printk("Podařilo se definovat parametry TCP serveru\n");
		}
    }
    //+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
	//                        Definice portu, na kterém poběží server
	//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    struct sockaddr_in addr;
    int ret;
    addr.sin_family = AF_INET;
    addr.sin_port = htons(port_number);
    addr.sin_addr.s_addr = INADDR_ANY;
    //+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
	//                              Svázání serveru s portem
	//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    ret = net_context_bind(server1.tcp_server, (struct sockaddr *)&addr, sizeof(addr));
    if (ret < 0) 
	{
		if(loggovani==true)
		{
           printk("Spojení serveru s portem selhalo: %d\n", ret);
		}

    }
	else 
	{
		if(loggovani==true)
		{
		   printk("Uspesne bindnuto\n");
		}
	}
	//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
	//                          Zahájení poslouchání na portu
	//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

    ret = net_context_listen(server1.tcp_server, 5);
    if (ret < 0) 
	{
		if(loggovani==true)
		{
           printk("Poslouchání na portu selhalo: %d\n", ret);
		}

    }
	else
	{
		if(loggovani==true)
		{
           printk("Server posloucha na portu\n");
		}
	}
	//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
	//                    Nastavení callbacku pro akceptování klienta
	//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    ret = net_context_accept(server1.tcp_server, obsazovani_slotu_server1, K_NO_WAIT, NULL);
    if (ret < 0) {
		if(loggovani==true)
		{
          printk("Pristup selhal: %d\n", ret);
		}
        
    }
	else
	{
		if(loggovani==true)
		{
          printk("Callback pro prihlaseni klienta pridan \n");
		}
	}
	printk("\n+TCPSERVER 1: RUNNING\n");
	server1.is_running=true;
}

I am working with net_context architecture. I try to use sockets, but it doesn't work.

I can show callabck, that I am using for receiving data:

static void prijimac_server1_klient1(struct net_context *context, struct net_pkt *pkt, union net_ip_header *ip_hdr, union net_proto_header *proto_hdr, int status, void *user_data)
{
    //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
	//                 Testování toho, jestli nepřišel prázdný packet
	//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
	if (!pkt)//pokud přišel prázdný packet. znamená to, že se klient odpojil
	{
        printk("\n+TCPSERVER 1, CLIENT 1 DISCONNECTED\n");
		printk("\nOK\n");
		server1.pripojen1=false;
		server1.transparetni_rezim1=false;
		server1.ip_client1=NULL;
		int ret = net_context_accept(server1.tcp_server, obsazovani_slotu_server1, K_NO_WAIT, NULL);
        if (ret < 0) 
		{
			if(loggovani==true)
			{
              printk("Callback pro prihlaseni se podarilo nastavit: %d\n", ret);
			}
        }
	    else
	    {
			if(loggovani==true)
			{
				printk("Callback pro prihlaseni klienta pridan \n");
			} 
	    }
	 }
	 else
	 {
		 if(server1.transparetni_rezim1==false)
		 {
            printk("+TCPSERVER 1, DATA CLIENT 1: ");
		 }
         size_t len = net_pkt_remaining_data(pkt);
		 data_prisla_1_1=true;
         //+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
		 //   Kontrola toho, jestli se data vejdou do bufferu
		 //+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
         if (len > sizeof(server1.buffer)) 
		 {
           len = sizeof(server1.buffer); //snížení velikosti přijímaných dat
         }
         //+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
		 //                 Samotné přijetí dat
		 //+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
         int ret = net_pkt_read(pkt, server1.buffer, len);
		 bool nalezeni= prohledej_buffer_serveru_1("JEDE, JEDE, MASINKA, KOURI SE JI Z KOMINKA");
		 net_pkt_unref(pkt);
         if (pkt) 
         {
	printk("SE nepovedlo\n");
	pkt = NULL;
}
else
{
	printk("POVEDLO se\n");
}  
net_context_recv(context, prijimac_server1_klient1,  K_NO_WAIT, NULL);
         //context->fifo_reserved;
          
		  //printk("%d\n",pocet);
		 //net_context_unref(context);
		 //net_context_ref(context);
		 //net_context_put(context);
		 if(nalezeni==true)
		 {
            printk("\nDATA NALEZENA\n");
			kontrola_nezkresleni_1_1=true;
		 }
		 else
		 {
            printk("\nNENASEL JSEM TO\n");
		 }
         if (ret == 0) 
		 {
           //for(int ukazovatko=0;ukazovatko<len;ukazovatko++)
		   //{
              //printk("%c",server1.buffer[ukazovatko]);
		   //}
		   //printk("\n");
         }
		 else
		 {
			if(loggovani==true)
			{
			   printk("Data se nepodarila nacist\n");   
		    }
	     }
	  }

}

I do net_pkt_unref().

If I connect to network, create and run TCP server, i can connect TCP client into TCP server. I am able to send data from client to server. But after maybe a 20 message.

I can show you log of communication:

> AT#TCPSERVER=1,1,6523

+TCPSERVER 1: RUNNING
OK
+TCPSERVER 1, CLIENT 1 CONNECTED
OK
+TCPSERVER 1, DATA CLIENT 1: SE nepovedlo

DATA NALEZENA
+TCPSERVER 1, DATA CLIENT 1: SE nepovedlo

DATA NALEZENA
+TCPSERVER 1, DATA CLIENT 1: SE nepovedlo

DATA NALEZENA
+TCPSERVER 1, DATA CLIENT 1: SE nepovedlo

DATA NALEZENA
+TCPSERVER 1, DATA CLIENT 1: SE nepovedlo

DATA NALEZENA
+TCPSERVER 1, DATA CLIENT 1: SE nepovedlo

DATA NALEZENA
+TCPSERVER 1, DATA CLIENT 1: SE nepovedlo

DATA NALEZENA
+TCPSERVER 1, DATA CLIENT 1: SE nepovedlo

DATA NALEZENA
+TCPSERVER 1, DATA CLIENT 1: SE nepovedlo

DATA NALEZENA
+TCPSERVER 1, DATA CLIENT 1: SE nepovedlo

DATA NALEZENA
+TCPSERVER 1, DATA CLIENT 1: SE nepovedlo

DATA NALEZENA
+TCPSERVER 1, DATA CLIENT 1: SE nepovedlo

DATA NALEZENA
+TCPSERVER 1, DATA CLIENT 1: SE nepovedlo

DATA NALEZENA
+TCPSERVER 1, DATA CLIENT 1: SE nepovedlo

DATA NALEZENA
+TCPSERVER 1, DATA CLIENT 1: SE nepovedlo

NENASEL JSEM TO
+TCPSERVER 1, DATA CLIENT 1: SE nepovedlo

NENASEL JSEM TO
+TCPSERVER 1, DATA CLIENT 1: SE nepovedlo

NENASEL JSEM TO
+TCPSERVER 1, DATA CLIENT 1: SE nepovedlo

DATA NALEZENA
+TCPSERVER 1, DATA CLIENT 1: SE nepovedlo

DATA NALEZENA
+TCPSERVER 1, DATA CLIENT 1: SE nepovedlo

DATA NALEZENA
+TCPSERVER 1, DATA CLIENT 1: SE nepovedlo

NENASEL JSEM TO
+TCPSERVER 1, DATA CLIENT 1: SE nepovedlo

NENASEL JSEM TO
+TCPSERVER 1, DATA CLIENT 1: SE nepovedlo

NENASEL JSEM TO
+TCPSERVER 1, DATA CLIENT 1: SE nepovedlo

NENASEL JSEM TO
+TCPSERVER 1, DATA CLIENT 1: SE nepovedlo

NENASEL JSEM TO
+TCPSERVER 1, DATA CLIENT 1: SE nepovedlo

NENASEL JSEM TO
+TCPSERVER 1, DATA CLIENT 1: SE nepovedlo

NENASEL JSEM TO
+TCPSERVER 1, DATA CLIENT 1: SE nepovedlo

NENASEL JSEM TO
+TCPSERVER 1, DATA CLIENT 1: SE nepovedlo

NENASEL JSEM TO
+TCPSERVER 1, DATA CLIENT 1: SE nepovedlo

NENASEL JSEM TO

+TCPSERVER 1, CLIENT 1 DISCONNECTED

CONNECTION DATA FLOW TIME EXPIRED

DATA DISTORTION

OK

this log shows: if message +TCPSERVER 1: DATA CLIENT 1: means, that data will be read by server (now without plot into console)

I added function, that will disconnect client, that didn't send message for some time (maybe 30 seconds). If I do disconnection of client and I do new connection, data start flow (only maybe 20 messages). If you do net_context unref and put.

void disconnect_server_1_client_1()
{
	    int navratova=0;
		//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
		//             První fáze odpojování klienta
		//+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
	    navratova=net_context_unref(server1.client1);
		if(navratova==0)
		{
			if(loggovani==true)
		    {
              printk("Klient 1 server 1 se odpojuje, krok 1\n");
			}
		}
		else
		{
			if(loggovani==true)
		    {
              printk("Odpojeni klienta 1 server 1 se nezdarilo\n");
			}
		}
	    navratova=net_context_put(server1.client1); 
		if(navratova==0)
		{
			if(loggovani==true)
		    {
              printk("Klient 1 server 1 se odpojuje, krok 2\n");
			}
		}
		else
		{
			if(loggovani==true)
		    {
              printk("Odpojeni klienta 1 server 1 se nezdarilo\n");
			}
		}
		server1.pripojen1=false;
		printk("\n+TCPSERVER 1, CLIENT 1 DISCONNECTED\n");
		//printk("\nOK\n");
};

My prj. conf looks like this:

#
# Copyright (c) 2022 Nordic Semiconductor ASA
#
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
#
CONFIG_WIFI=y
CONFIG_WIFI_NRF70=y

CONFIG_SERIAL=y
CONFIG_NRFX_UART0=y
CONFIG_UART_ASYNC_API=y
# WPA supplicant
CONFIG_WIFI_NRF70_LOG_LEVEL_INF=n
CONFIG_WIFI_NRF70_LOG_LEVEL_DBG=n
CONFIG_WIFI_NRF70_LOG_LEVEL_DEFAULT=n
CONFIG_WIFI_NRF70_LOG_LEVEL_WRN=n
CONFIG_WIFI_NRF70_LOG_LEVEL_OFF=n
CONFIG_WIFI_NRF70_LOG_LEVEL_ERR=n

CONFIG_WIFI_READY_LIB=y
CONFIG_WIFI_NM_WPA_SUPPLICANT=y
CONFIG_WIFI_NM_WPA_SUPPLICANT_LOG_LEVEL_DBG=n
CONFIG_WIFI_NM_WPA_SUPPLICANT_LOG_LEVEL_INF=n
CONFIG_WIFI_NM_WPA_SUPPLICANT_LOG_LEVEL_DEFAULT=n
CONFIG_WIFI_NM_WPA_SUPPLICANT_LOG_LEVEL_ERR=n
CONFIG_WIFI_NM_WPA_SUPPLICANT_LOG_LEVEL_OFF=n
CONFIG_WIFI_NM_WPA_SUPPLICANT_LOG_LEVEL_WRN=n
CONFIG_NRF_WIFI_RPU_RECOVERY=y

CONFIG_WIFI_CREDENTIALS=y
CONFIG_WIFI_CREDENTIALS_STATIC=y
CONFIG_WIFI_CREDENTIALS_STATIC_SSID="yyyyyyyyyy"
CONFIG_WIFI_CREDENTIALS_STATIC_PASSWORD="xxxxxxxxxx"

# Networking
CONFIG_NETWORKING=y
CONFIG_NET_SOCKETS=y
CONFIG_NET_LOG=n
CONFIG_NET_IPV4=y
CONFIG_NET_UDP=y
CONFIG_NET_TCP=y
CONFIG_NET_DHCPV4=y

CONFIG_NET_MGMT_EVENT_LOG_LEVEL_DBG=n
CONFIG_NET_MGMT_EVENT_LOG_LEVEL_DEFAULT=n
CONFIG_NET_MGMT_EVENT_LOG_LEVEL_INF=n
CONFIG_NET_MGMT_EVENT_LOG_LEVEL_ERR=n
CONFIG_NET_MGMT_EVENT_LOG_LEVEL_WRN=n
CONFIG_NET_MGMT_EVENT_LOG_LEVEL_OFF=n



CONFIG_NET_PKT_RX_COUNT=32
CONFIG_NET_PKT_TX_COUNT=32
CONFIG_NRF70_RX_NUM_BUFS=16

# Below section is the primary contributor to SRAM and is currently
# tuned for performance, but this will be revisited in the future.
CONFIG_NET_BUF_RX_COUNT=64
CONFIG_NET_BUF_TX_COUNT=64
CONFIG_HEAP_MEM_POOL_SIZE=47000
CONFIG_HEAP_MEM_POOL_IGNORE_MIN=y
CONFIG_NRF_WIFI_CTRL_HEAP_SIZE=20000
CONFIG_NRF_WIFI_DATA_HEAP_SIZE=60000
CONFIG_NET_TC_TX_COUNT=1

CONFIG_NET_IF_UNICAST_IPV4_ADDR_COUNT=1
CONFIG_NET_MAX_CONTEXTS=50
CONFIG_NET_CONTEXT_SYNC_RECV=y

CONFIG_INIT_STACKS=y

CONFIG_NET_L2_ETHERNET=y
CONFIG_NET_L2_WIFI_MGMT=y
CONFIG_NET_L2_WIFI_MGMT_LOG_LEVEL_DBG=n
CONFIG_NET_L2_WIFI_MGMT_LOG_LEVEL_INF=n
CONFIG_NET_L2_WIFI_MGMT_LOG_LEVEL_WRN=n
CONFIG_NET_L2_WIFI_MGMT_LOG_LEVEL_ERR=n
CONFIG_NET_L2_WIFI_MGMT_LOG_LEVEL_DEFAULT=n
CONFIG_NET_L2_WIFI_MGMT_LOG_LEVEL_OFF=n

CONFIG_WIFI_MGMT_SCAN_SSID_FILT_MAX=4

CONFIG_NET_CONFIG_SETTINGS=y
CONFIG_NET_CONFIG_INIT_TIMEOUT=0

CONFIG_NET_SOCKETS_POLL_MAX=15

# Memories
CONFIG_MAIN_STACK_SIZE=60400
CONFIG_NET_TX_STACK_SIZE=16384
CONFIG_NET_RX_STACK_SIZE=16384
CONFIG_STA_SAMPLE_START_WIFI_THREAD_STACK_SIZE=60400

# Debugging
CONFIG_STACK_SENTINEL=y
CONFIG_DEBUG_COREDUMP=y
CONFIG_DEBUG_COREDUMP_BACKEND_LOGGING=y
CONFIG_DEBUG_COREDUMP_MEMORY_DUMP_MIN=y
CONFIG_SHELL_CMDS_RESIZE=n


# Kernel options
CONFIG_ENTROPY_GENERATOR=y

# Logging
CONFIG_LOG_BUFFER_SIZE=16384
CONFIG_POSIX_CLOCK=y

CONFIG_NET_CONFIG_MY_IPV4_ADDR="192.168.1.99"
CONFIG_NET_CONFIG_MY_IPV4_NETMASK="255.255.255.0"
CONFIG_NET_CONFIG_MY_IPV4_GW="192.168.1.1"

# printing of scan results puts pressure on queues in new locking
# design in net_mgmt. So, use a higher timeout for a crowded
# environment.
CONFIG_NET_MGMT_EVENT_QUEUE_TIMEOUT=50

CONFIG_WIFI_MGMT_RAW_SCAN_RESULTS=n
CONFIG_WIFI_MGMT_RAW_SCAN_RESULTS_ONLY=n

CONFIG_WIFI_SCAN_DWELL_TIME_ACTIVE=50
CONFIG_WIFI_SCAN_DWELL_TIME_PASSIVE=130

CONFIG_WIFI_LOG_LEVEL_OFF=n
CONFIG_WIFI_LOG_LEVEL_INF=n

CONFIG_LOG_BACKEND_NET_AUTOSTART=n
CONFIG_LOG=n
CONFIG_LOG_DEFAULT_LEVEL=3

CONFIG_TIMER=y
CONFIG_COUNTER=y
CONFIG_CLOCK_CONTROL=y
CONFIG_CLOCK_CONTROL_NRF=y
CONFIG_NRFX_CLOCK=y
CONFIG_RTC_ALARM=y
CONFIG_RTC_UPDATE=y
CONFIG_NET_ICMPV4_ACCEPT_BROADCAST=y

#CONFIG_NET_BUF_DATA_SIZE=8192
CONFIG_NET_BUF_POOL_USAGE=y

CONFIG_NET_RX_DEFAULT_PRIORITY=7

Could you please help me solve this problem, I want to be able read any count of messages.

Kind regards

Jaroslav Havel 

  • Hi Mathias,

    thanks for reply.

    I am trying to use sockets, but if i open TCP server, after some little time, a get error.

    [00:01:52.010,681] <err> os: ***** MPU FAULT *****
    [00:01:52.010,711] <err> os:   Data Access Violation
    [00:01:52.010,711] <err> os:   MMFAR Address: 0x8
    [00:01:52.010,742] <err> os: r0/a1:  0x0005737d  r1/a2:  0xe000ed00  r2/a3:  0x0005737c
    [00:01:52.010,742] <err> os: r3/a4:  0x00000008 r12/ip:  0x200061d8 r14/lr:  0x00003ba5
    [00:01:52.010,772] <err> os:  xpsr:  0x29000000
    [00:01:52.010,772] <err> os: Faulting instruction address (r15/pc): 0x0005999a
    [00:01:52.010,803] <err> os: >>> ZEPHYR FATAL ERROR 19: Unknown error on CPU 0
    [00:01:52.010,864] <err> os: Current thread: 0x20006618 (unknown)
    [00:01:52.072,235] <err> coredump: #CD:BEGIN#
    [00:01:52.077,301] <err> coredump: #CD:5a4502000300050013000000
    [00:01:52.083,862] <err> coredump: #CD:4102004400
    [00:01:52.089,233] <err> coredump: #CD:7d73050000ed00e07c73050008000000d8610020a53b00009a99050000000029
    [00:01:52.099,273] <err> coredump: #CD:5819052000000000000000000000000000000000000000000000000000000000
    [00:01:52.109,313] <err> coredump: #CD:00000000
    [00:01:52.114,501] <err> coredump: #CD:4d010018660020b0660020
    [00:01:52.120,910] <err> coredump: #CD:c8640020a8e90020000000000180000000000000000000000000000000000000
    [00:01:52.130,950] <err> coredump: #CD:21f8050000000000d966020000000000000000009819052044fc002098190520
    [00:01:52.141,021] <err> coredump: #CD:0100565143fc0020ffffffffffffffff40190520000000007066002070660020
    [00:01:52.151,062] <err> coredump: #CD:00010000b82f042060ea000010000000840e0020081a05200000000000000000
    [00:01:52.161,102] <err> coredump: #CD:2b0d0520fc03000018660020000000000000000000000000
    [00:01:52.169,769] <err> coredump: #CD:4d0100b82f0420181a0520
    [00:01:52.176,177] <err> coredump: #CD:f0f0f0f0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    [00:01:52.186,248] <err> coredump: #CD:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

    My prj.conf looks like this:

    #
    # Copyright (c) 2022 Nordic Semiconductor ASA
    #
    # SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
    #
    CONFIG_WIFI=y
    CONFIG_WIFI_NRF70=y
    
    CONFIG_SERIAL=y
    CONFIG_NRFX_UART0=y
    CONFIG_UART_ASYNC_API=y
    # WPA supplicant
    CONFIG_WIFI_NRF70_LOG_LEVEL_INF=n
    CONFIG_WIFI_NRF70_LOG_LEVEL_DBG=n
    CONFIG_WIFI_NRF70_LOG_LEVEL_DEFAULT=n
    CONFIG_WIFI_NRF70_LOG_LEVEL_WRN=n
    CONFIG_WIFI_NRF70_LOG_LEVEL_OFF=n
    CONFIG_WIFI_NRF70_LOG_LEVEL_ERR=n
    
    CONFIG_WIFI_READY_LIB=y
    CONFIG_WIFI_NM_WPA_SUPPLICANT=y
    CONFIG_WIFI_NM_WPA_SUPPLICANT_LOG_LEVEL_DBG=n
    CONFIG_WIFI_NM_WPA_SUPPLICANT_LOG_LEVEL_INF=n
    CONFIG_WIFI_NM_WPA_SUPPLICANT_LOG_LEVEL_DEFAULT=n
    CONFIG_WIFI_NM_WPA_SUPPLICANT_LOG_LEVEL_ERR=n
    CONFIG_WIFI_NM_WPA_SUPPLICANT_LOG_LEVEL_OFF=n
    CONFIG_WIFI_NM_WPA_SUPPLICANT_LOG_LEVEL_WRN=n
    CONFIG_NRF_WIFI_RPU_RECOVERY=y
    
    CONFIG_WIFI_CREDENTIALS=y
    CONFIG_WIFI_CREDENTIALS_STATIC=y
    CONFIG_WIFI_CREDENTIALS_STATIC_SSID="xxxxxxxxx"
    CONFIG_WIFI_CREDENTIALS_STATIC_PASSWORD="yyyyyyyyyy"
    
    # Networking
    CONFIG_NETWORKING=y
    CONFIG_NET_SOCKETS=y
    CONFIG_NET_LOG=n
    CONFIG_NET_IPV4=y
    CONFIG_NET_UDP=y
    CONFIG_NET_TCP=y
    CONFIG_NET_DHCPV4=y
    
    CONFIG_NET_MGMT_EVENT_LOG_LEVEL_DBG=n
    CONFIG_NET_MGMT_EVENT_LOG_LEVEL_DEFAULT=n
    CONFIG_NET_MGMT_EVENT_LOG_LEVEL_INF=n
    CONFIG_NET_MGMT_EVENT_LOG_LEVEL_ERR=n
    CONFIG_NET_MGMT_EVENT_LOG_LEVEL_WRN=n
    CONFIG_NET_MGMT_EVENT_LOG_LEVEL_OFF=n
    
    
    
    CONFIG_NET_PKT_RX_COUNT=32
    CONFIG_NET_PKT_TX_COUNT=32
    CONFIG_NRF70_RX_NUM_BUFS=16
    
    # Below section is the primary contributor to SRAM and is currently
    # tuned for performance, but this will be revisited in the future.
    CONFIG_NET_BUF_RX_COUNT=64
    CONFIG_NET_BUF_TX_COUNT=64
    CONFIG_HEAP_MEM_POOL_SIZE=47000
    CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=32768
    CONFIG_HEAP_MEM_POOL_IGNORE_MIN=y
    CONFIG_NRF_WIFI_CTRL_HEAP_SIZE=20000
    CONFIG_NRF_WIFI_DATA_HEAP_SIZE=40000
    CONFIG_NET_TC_TX_COUNT=1
    
    CONFIG_NET_IF_UNICAST_IPV4_ADDR_COUNT=1
    CONFIG_NET_MAX_CONTEXTS=50
    CONFIG_NET_CONTEXT_SYNC_RECV=y
    
    CONFIG_INIT_STACKS=y
    
    CONFIG_NET_L2_ETHERNET=y
    CONFIG_NET_L2_WIFI_MGMT=y
    CONFIG_NET_L2_WIFI_MGMT_LOG_LEVEL_DBG=n
    CONFIG_NET_L2_WIFI_MGMT_LOG_LEVEL_INF=n
    CONFIG_NET_L2_WIFI_MGMT_LOG_LEVEL_WRN=n
    CONFIG_NET_L2_WIFI_MGMT_LOG_LEVEL_ERR=n
    CONFIG_NET_L2_WIFI_MGMT_LOG_LEVEL_DEFAULT=n
    CONFIG_NET_L2_WIFI_MGMT_LOG_LEVEL_OFF=n
    
    CONFIG_WIFI_MGMT_SCAN_SSID_FILT_MAX=4
    
    CONFIG_NET_CONFIG_SETTINGS=y
    CONFIG_NET_CONFIG_INIT_TIMEOUT=0
    
    CONFIG_NET_SOCKETS_POLL_MAX=15
    
    # Memories
    CONFIG_MAIN_STACK_SIZE=60000
    CONFIG_NET_TX_STACK_SIZE=4096
    CONFIG_NET_RX_STACK_SIZE=4096
    CONFIG_STA_SAMPLE_START_WIFI_THREAD_STACK_SIZE=65400
    
    # Debugging
    CONFIG_STACK_SENTINEL=y
    CONFIG_DEBUG_COREDUMP=y
    CONFIG_DEBUG_COREDUMP_BACKEND_LOGGING=y
    CONFIG_DEBUG_COREDUMP_MEMORY_DUMP_MIN=y
    CONFIG_SHELL_CMDS_RESIZE=n
    
    
    # Kernel options
    CONFIG_ENTROPY_GENERATOR=y
    
    # Logging
    CONFIG_LOG_BUFFER_SIZE=16384
    CONFIG_POSIX_CLOCK=y
    
    CONFIG_NET_CONFIG_MY_IPV4_ADDR="192.168.1.99"
    CONFIG_NET_CONFIG_MY_IPV4_NETMASK="255.255.255.0"
    CONFIG_NET_CONFIG_MY_IPV4_GW="192.168.1.1"
    
    # printing of scan results puts pressure on queues in new locking
    # design in net_mgmt. So, use a higher timeout for a crowded
    # environment.
    CONFIG_NET_MGMT_EVENT_QUEUE_TIMEOUT=5000
    
    CONFIG_WIFI_MGMT_RAW_SCAN_RESULTS=n
    CONFIG_WIFI_MGMT_RAW_SCAN_RESULTS_ONLY=n
    
    CONFIG_WIFI_SCAN_DWELL_TIME_ACTIVE=50
    CONFIG_WIFI_SCAN_DWELL_TIME_PASSIVE=130
    
    CONFIG_WIFI_LOG_LEVEL_OFF=n
    CONFIG_WIFI_LOG_LEVEL_INF=n
    
    CONFIG_LOG_BACKEND_NET_AUTOSTART=n
    CONFIG_LOG=n
    CONFIG_LOG_DEFAULT_LEVEL=3
    
    CONFIG_TIMER=y
    CONFIG_COUNTER=y
    CONFIG_CLOCK_CONTROL=y
    CONFIG_CLOCK_CONTROL_NRF=y
    CONFIG_NRFX_CLOCK=y
    CONFIG_RTC_ALARM=y
    CONFIG_RTC_UPDATE=y
    CONFIG_NET_ICMPV4_ACCEPT_BROADCAST=y
    
    #CONFIG_NET_BUF_DATA_SIZE=8192
    CONFIG_NET_BUF_POOL_USAGE=y
    
    CONFIG_NET_RX_DEFAULT_PRIORITY=7
    CONFIG_MULTITHREADING=y

    Any idea how to fix it?

    Kind regards

    Jaroslav

  • Hello Mathias,

    thank you for help. I already fixed trouble with socket, cause I had some syntax error inside code. Compilator didn't find it. Now, everything is ok, socket is working (TCP server runs on own thread).

    Kind Regards

    Jaroslav

  • That's great, Jaroslav!

    I'm happy to hear you figured it out.

    If there are no further questions, please close the ticket.

Related