UDP client does not start to send in AP mode

GvTardy
Posts: 12
Joined: Tue Jan 01, 2019 3:26 pm

UDP client does not start to send in AP mode

Postby GvTardy » Wed Mar 13, 2019 8:21 pm

Hi to everybody,

I have a problem with a UDP client setup:

I start a DHCP server, then
WIFI in AP mode.
Once this is done I start a UDP client in a task.

This works all without problems, I can connect to it with my computer, receive an address and start sending UDP messages.
The bad thing is: I do not receive any of these messages until I send at message from the UDP server on my computer to the ESP32. This message from my terminal program (YAT) seems to wake up a part of the ESP, as after this, I get the messages.

Here's the code:
Initialisation of the tcpip adapter and ESP32 as softAP:
  1. EventGroupHandle_t wifi_event_group;
  2. const int AP_STARTED_BIT = BIT0;
  3. const int STA_CONNECTED_BIT = BIT1;
  4. const int STA_DISCONNECTED_BIT = BIT2;
  5. const int UDP_SOCKED_BINDING = BIT3;
  6.  
  7. static esp_err_t event_handler(void *ctx, system_event_t *event)
  8. {
  9.     switch(event->event_id) {
  10.     case SYSTEM_EVENT_AP_START:
  11.         ESP_LOGI("WIFI_AP","ESP32 is started in AP mode");
  12.         xEventGroupSetBits(wifi_event_group, AP_STARTED_BIT);
  13.         break;
  14.        
  15.     case SYSTEM_EVENT_AP_STACONNECTED:
  16.         ESP_LOGI("WIFI_AP", "station:"MACSTR" join, AID=%d",
  17.                  MAC2STR(event->event_info.sta_connected.mac),
  18.                  event->event_info.sta_connected.aid);
  19.         xEventGroupSetBits(wifi_event_group, STA_CONNECTED_BIT);
  20.         esp_wifi_set_ps(WIFI_PS_NONE);
  21.         break;
  22.  
  23.     case SYSTEM_EVENT_AP_STADISCONNECTED:
  24.         ESP_LOGI("WIFI_AP", "station:"MACSTR"leave, AID=%d",
  25.                  MAC2STR(event->event_info.sta_disconnected.mac),
  26.                  event->event_info.sta_disconnected.aid);
  27.         xEventGroupSetBits(wifi_event_group, STA_DISCONNECTED_BIT);
  28.         break;     
  29.     default:
  30.         break;
  31.     }
  32.     return ESP_OK;
  33. }
  34.  
  35. void DHCP_server_init(){
  36.    
  37.     // initialize the tcp stack
  38.     tcpip_adapter_init();
  39.     // stop DHCP server
  40.     ESP_ERROR_CHECK(tcpip_adapter_dhcps_stop(TCPIP_ADAPTER_IF_AP));
  41.     // assign a static IP to the network interface
  42.     tcpip_adapter_ip_info_t info;
  43.     memset(&info, 0, sizeof(info));    
  44.     info.ip.addr = inet_addr(WIFI_IP_ADDR);
  45.     info.gw.addr = inet_addr(WIFI_IP_ADDR);
  46.     //IP4_ADDR(&info.ip, 192, 168, 1, 1);
  47.     //IP4_ADDR(&info.gw, 192, 168, 1, 1);//ESP acts as router, so gw addr will be its own addr
  48.     IP4_ADDR(&info.netmask, 255, 255, 255, 0);
  49.     ESP_ERROR_CHECK(tcpip_adapter_set_ip_info(TCPIP_ADAPTER_IF_AP, &info));
  50.     // start the DHCP server  
  51.     ESP_ERROR_CHECK(tcpip_adapter_dhcps_start(TCPIP_ADAPTER_IF_AP));
  52.     printf("DHCP server started \n");
  53. }
  54.  
  55. void WIFI_AP_init(void)
  56. {
  57.  
  58.     ESP_ERROR_CHECK( esp_event_loop_init(event_handler, NULL) );
  59.     wifi_event_group = xEventGroupCreate();
  60.     DHCP_server_init();
  61.    
  62.     //xTaskCreate(&tcp_server,"tcp_server",4096,NULL,5,NULL);
  63.     esp_log_level_set("wifi", ESP_LOG_NONE); // disable wifi driver logging
  64.     wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
  65.     ESP_ERROR_CHECK( esp_wifi_init(&cfg) );
  66.     ESP_ERROR_CHECK( esp_wifi_set_storage(WIFI_STORAGE_RAM));
  67.     ESP_ERROR_CHECK( esp_wifi_set_mode(WIFI_MODE_AP) );
  68.  
  69.     // configure the wifi connection and start the interface
  70.     wifi_config_t ap_config = {
  71.         .ap = {
  72.             .ssid = AP_SSID,
  73.             .password = AP_PASSPHARSE,
  74.             .ssid_len = strlen(AP_SSID),
  75.             .channel = 0,
  76.             .authmode = AP_AUTHMODE,
  77.             .ssid_hidden = AP_SSID_HIDDEN,
  78.             .max_connection = AP_MAX_CONNECTIONS,
  79.             .beacon_interval = AP_BEACON_INTERVAL,         
  80.         },
  81.     };
  82.  
  83.     if (strlen(WIFI_PSWD)==0)
  84.         ap_config.ap.authmode = WIFI_AUTH_OPEN;
  85.  
  86.     ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_AP, &ap_config));
  87.     ESP_ERROR_CHECK( esp_wifi_start() );
  88.     printf("ESP WiFi started in AP mode \n");
  89.  
  90.     xTaskCreate(&task_UDP_client, "UDP", 4096, NULL, 5, NULL);
  91. }
  92.  
  93.  
and here my UDP_client task:
  1. int udp_socket_tx;
  2. int udp_socket_rx;
  3. struct sockaddr_in udp_sender;
  4. struct sockaddr_in udp_receiver;
  5.  
  6. void task_UDP_client(void *pvParameters)
  7. {
  8.     uint16_t cnt = 0;
  9.     char rx_buffer[128];
  10.     char addr_str[128];
  11.     int addr_family;
  12.     int ip_protocol;
  13.  
  14.     while (1) {
  15.  
  16.         ESP_LOGI("WIFI","Waiting for Station");
  17.  
  18.         EventBits_t staBits = xEventGroupWaitBits(wifi_event_group, STA_CONNECTED_BIT, pdTRUE, pdFALSE, portMAX_DELAY);
  19.  
  20.         if((staBits & STA_CONNECTED_BIT) != 0)
  21.             ESP_LOGI("UDP","Connected, starting UDP_Client\n");
  22.         else {
  23.             ESP_LOGI("UDP", "timeout waiting for connection...");
  24.             break;
  25.         };
  26.  
  27.         udp_socket_tx = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP);
  28.  
  29.         if (udp_socket_tx < 0) {
  30.             ESP_LOGE("UDP", "Unable to create socket: errno %d", errno);
  31.             xEventGroupClearBits(wifi_event_group, UDP_SOCKED_BINDING);
  32.             break;
  33.         }
  34.         else{
  35.             ESP_LOGI("UDP", "Socket created");
  36.             xEventGroupSetBits(wifi_event_group, UDP_SOCKED_BINDING);
  37.         };
  38.  
  39.  
  40.         udp_sender.sin_family = AF_INET;
  41.         udp_sender.sin_len = sizeof(udp_sender);
  42.         udp_sender.sin_addr.s_addr = inet_addr(UDP_SENDER_ADDR);
  43.         udp_sender.sin_port = htons(UDP_SENDER_PORT);
  44.  
  45.         if(bind(udp_socket_tx, (struct sockaddr *)&udp_sender, sizeof(struct sockaddr_in)) == -1) {
  46.             ESP_LOGE("UDP", "bind failed");
  47.             close (udp_socket_tx);
  48.             exit(1);
  49.         }
  50.         else
  51.             ESP_LOGI("UDP", "bind created");
  52.  
  53.         udp_receiver.sin_family = AF_INET;
  54.         udp_receiver.sin_len = sizeof(udp_receiver);
  55.         udp_receiver.sin_addr.s_addr = htonl(UDP_RECEIVER_ADDR);
  56.         udp_receiver.sin_port = htons(UDP_RECEIVER_PORT);
  57.  
  58.         while (1) {
  59.  
  60.             static const char *msg = "test UDP send \n";
  61.  
  62.             vTaskDelay(2000 / portTICK_PERIOD_MS);
  63.  
  64.             cnt++;
  65.  
  66.             char text[128];
  67.             sprintf(&text[0],"UDP message %d", cnt++);
  68.             int err = sendto(udp_socket_tx, text, strlen(text), 0, (struct sockaddr *)&udp_receiver, sizeof(udp_sender));  
  69.             //int err = UDP_send("UDP: msg no %d", cnt);
  70.  
  71.             //int err = sendto(udp_socket_tx, msg, strlen(msg), 0, (struct sockaddr *)&udp_receiver, sizeof(udp_sender));
  72.             if (err < 0) {
  73.                 ESP_LOGE("UDP", "Error occured during sending: errno %d", errno);
  74.                 break;
  75.             }
  76.             else
  77.                 ESP_LOGI("UDP","send to %s ",  ip4addr_ntoa(&(udp_sender.sin_addr)));
  78.  
  79.            
  80.  
  81.             ESP_LOGI("UDP", "Message %d sent", cnt);
  82.  
  83.             #ifdef UDP_WAIT_FOR_REPLY
  84.             /*  //struct sockaddr_in sourceAddr; // Large enough for both IPv4 or IPv6
  85.             socklen_t socklen = sizeof(udp_receiver_addr);
  86.             int len = recvfrom(udp_socket_rx, rx_buffer, sizeof(rx_buffer) - 1, 0, (struct sockaddr *)&udp_receiver_addr, &socklen);
  87.             //int len = recv(udp_socket, rx_buffer, sizeof(rx_buffer) - 1, 0);
  88.  
  89.             ESP_LOGI("UDP", "past recvfrom");
  90.  
  91.  
  92.             // Error occured during receiving
  93.             if (len < 0) {
  94.                 ESP_LOGE("UDP", "recvfrom failed: errno %d", errno);
  95.                 break;
  96.             }
  97.             // Data received
  98.             else {
  99.                 rx_buffer[len] = 0; // Null-terminate whatever we received and treat like a string
  100.                 ESP_LOGI("UDP", "Received %d bytes from %s:", len, addr_str);
  101.                 ESP_LOGI("UDP", "%s", rx_buffer);
  102.             }*/
  103.             #endif
  104.            
  105.         }
  106.  
  107.         if (udp_socket_tx != -1) {
  108.             ESP_LOGI("UDP", "Shutting down socket and restarting...");
  109.             shutdown(udp_socket_tx, 0);
  110.             close(udp_socket_tx);
  111.         }
  112.     }
  113.     ESP_LOGE("UDP", "leaving task");
  114.     vTaskDelay(200 / portTICK_PERIOD_MS);
  115.     vTaskDelete(NULL);
  116. };
  117.  
As global defines I have

#define WIFI_IP_ADDR "192.168.1.1"
#define UDP_SENDER_ADDR WIFI_IP_ADDR
#define UDP_RECEIVER_ADDR INADDR_BROADCAST

#define UDP_SENDER_PORT 3001
#define UDP_RECEIVER_PORT 3000

I have other tasks running in parallel, everything on one core.

Does anyone have an idea why I do not receive any UDP messages on my computer before I send a single message to the ESP32?

Am I missing out on starting something, is something not configured or needs to be woken up?

I searched the internet for hours, updated ESP IDP, the terminal program, alas, no success.
I appreciate you taking the time to read this, check the code and hopefully come back with an solution.

The code is based on various examples. As I do not read and messages from the connected station (computer), I do not use the receive section. It is not checked or cleaned in any way.

Kind regards
Greetings from Germany
Georg

GvTardy
Posts: 12
Joined: Tue Jan 01, 2019 3:26 pm

Re: UDP client does not start to send in AP mode

Postby GvTardy » Wed Mar 13, 2019 10:23 pm

Hi to everybody reading,

I fiddled more with my code and got is solved tonight, but I do not understand why.

I will post the complete code tomorrow with comments. It is getting late tonight, so my apologies for not doing so right away.

Very kind regards
Georg

GvTardy
Posts: 12
Joined: Tue Jan 01, 2019 3:26 pm

Re: UDP client does not start to send in AP mode

Postby GvTardy » Thu Mar 14, 2019 9:03 pm

Dear all,

unfortunately I have to revise my last nights reply.

If I give the ESP32 a full power cycle (not just make monitor), the connection to the terminal will not work prior to sending a message (e.q "1") to the ESP.

I corrected/cleaned the code a bit and post it again here.

Does anyone have a clue why is behaves like this:
- start the ESP -> it initializes the TCPIP connection with the ESP in softAP mode
- it waits for a computer/station to connect
- my connecting computer has the UDP terminal already started and setup upon connecting to the AP
- in the serial monitor I get messages that the UDP client has sent a UDP message, but nothing arrives in my terminal
- after sending any message (1 character) I receive the UDP messages from the ESP

I would like to receive the messages without sending a something from the UDP server (my laptop) first.

Kind regards
Georg

P.S. attached the code, I omitted the routine calling WIFI_AP_init(). This is the entry point.
  1.  
  2. #include "freertos/FreeRTOS.h"
  3. #include "freertos/event_groups.h"
  4. #include "freertos/task.h"
  5. #include "freertos/semphr.h"
  6.  
  7. #include "esp_system.h"
  8. #include "esp_wifi.h"
  9. #include "esp_event_loop.h"
  10. #include "esp_err.h"
  11. #include "esp_log.h"
  12.  
  13. #include "tcpip_adapter.h"
  14.  
  15. #include "lwip/err.h"
  16. #include "lwip/sockets.h"
  17. #include "lwip/sys.h"
  18. #include "lwip/netdb.h"
  19.  
  20. #include "wifi_ap.h"
  21. #include "udp_client.h"
  22. #include "parameters.h"
  23.  
  24. #define AP_SSID WIFI_SSID
  25. #define AP_PASSPHARSE WIFI_PSWD
  26. #define AP_SSID_HIDDEN 0
  27. #define AP_MAX_CONNECTIONS 1
  28. #define AP_AUTHMODE WIFI_AUTH_WPA2_PSK // the passpharese should be atleast 8 chars long
  29. #define AP_BEACON_INTERVAL 100 // in milli seconds
  30. #define LISTENQ 2
  31.  
  32. #define WIFI_CONFIG_IPV4
  33. #define WIFI_SSID "eBOARD"
  34. #define WIFI_PSWD ""
  35. #define WIFI_IP_ADDR "192.168.1.1"  // own address
  36. #define WIFI_AP_MAX_STA_CONN 2
  37.  
  38. //#define UDP_SEND_WAIT_FOR_REPLY
  39. #define UDP_SENDER_ADDR WIFI_IP_ADDR
  40. #define UDP_SENDER_PORT 3001
  41. #define UDP_RECEIVER_ADDR "192.168.1.2"  
  42. #define UDP_RECEIVER_PORT 3000
  43.  
  44. //**********************************************************************************
  45.  
  46. int udp_socket_tx;
  47. int udp_socket_rx;
  48. struct sockaddr_in udp_sender;
  49. struct sockaddr_in udp_receiver;
  50.  
  51. EventGroupHandle_t wifi_event_group;
  52. const int AP_STARTED_BIT = BIT0;
  53. const int STA_CONNECTED_BIT = BIT1;
  54. const int STA_DISCONNECTED_BIT = BIT2;
  55. const int UDP_SOCKED_BINDING = BIT3;
  56.  
  57. static esp_err_t event_handler(void *ctx, system_event_t *event)
  58. {
  59.     switch(event->event_id) {
  60.     case SYSTEM_EVENT_AP_START:
  61.         ESP_LOGI("WIFI_AP","ESP32 is started in AP mode");
  62.         xEventGroupSetBits(wifi_event_group, AP_STARTED_BIT);
  63.         break;
  64.        
  65.     case SYSTEM_EVENT_AP_STACONNECTED:
  66.         ESP_LOGI("WIFI_AP", "station:"MACSTR" join, AID=%d",
  67.                  MAC2STR(event->event_info.sta_connected.mac),
  68.                  event->event_info.sta_connected.aid);
  69.         xEventGroupSetBits(wifi_event_group, STA_CONNECTED_BIT);
  70.         esp_wifi_set_ps(WIFI_PS_NONE);
  71.         break;
  72.  
  73.     case SYSTEM_EVENT_AP_STADISCONNECTED:
  74.         ESP_LOGI("WIFI_AP", "station:"MACSTR"leave, AID=%d",
  75.                  MAC2STR(event->event_info.sta_disconnected.mac),
  76.                  event->event_info.sta_disconnected.aid);
  77.         xEventGroupSetBits(wifi_event_group, STA_DISCONNECTED_BIT);
  78.         break;     
  79.     default:
  80.         break;
  81.     }
  82.     return ESP_OK;
  83. }
  84.  
  85. void DHCP_server_init(){
  86.    
  87.     // initialize the tcp stack
  88.     tcpip_adapter_init();
  89.     // stop DHCP server
  90.     ESP_ERROR_CHECK(tcpip_adapter_dhcps_stop(TCPIP_ADAPTER_IF_AP));
  91.     // assign a static IP to the network interface
  92.     tcpip_adapter_ip_info_t info;
  93.     memset(&info, 0, sizeof(info));    
  94.     info.ip.addr = inet_addr(WIFI_IP_ADDR);
  95.     info.gw.addr = inet_addr(WIFI_IP_ADDR);
  96.  
  97.     IP4_ADDR(&info.netmask, 255, 255, 255, 0);
  98.     ESP_ERROR_CHECK(tcpip_adapter_set_ip_info(TCPIP_ADAPTER_IF_AP, &info));
  99.     // start the DHCP server  
  100.     ESP_ERROR_CHECK(tcpip_adapter_dhcps_start(TCPIP_ADAPTER_IF_AP));
  101.     printf("DHCP server started \n");
  102. }
  103.  
  104. void WIFI_AP_init(void)
  105. {
  106.  
  107.     ESP_ERROR_CHECK( esp_event_loop_init(event_handler, NULL) );
  108.     wifi_event_group = xEventGroupCreate();
  109.     DHCP_server_init();
  110.    
  111.     //xTaskCreate(&tcp_server,"tcp_server",4096,NULL,5,NULL);
  112.     esp_log_level_set("wifi", ESP_LOG_NONE); // disable wifi driver logging
  113.     wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
  114.     ESP_ERROR_CHECK( esp_wifi_init(&cfg) );
  115.     ESP_ERROR_CHECK( esp_wifi_set_storage(WIFI_STORAGE_RAM));
  116.     ESP_ERROR_CHECK( esp_wifi_set_mode(WIFI_MODE_AP) );
  117.  
  118.     // configure the wifi connection and start the interface
  119.     wifi_config_t ap_config = {
  120.         .ap = {
  121.             .ssid = AP_SSID,
  122.             .password = AP_PASSPHARSE,
  123.             .ssid_len = strlen(AP_SSID),
  124.             .channel = 0,
  125.             .authmode = AP_AUTHMODE,
  126.             .ssid_hidden = AP_SSID_HIDDEN,
  127.             .max_connection = AP_MAX_CONNECTIONS,
  128.             .beacon_interval = AP_BEACON_INTERVAL,         
  129.         },
  130.     };
  131.  
  132.     if (strlen(WIFI_PSWD)==0)
  133.         ap_config.ap.authmode = WIFI_AUTH_OPEN;
  134.  
  135.     ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_AP, &ap_config));
  136.     ESP_ERROR_CHECK( esp_wifi_start() );
  137.     printf("ESP WiFi started in AP mode \n");
  138.  
  139.     xTaskCreate(&task_UDP_client, "UDP", 4096, NULL, 5, NULL);
  140. }
  141.  
  142. //**********************************************************************************
  143. //***  UDP socket ******************************************************************
  144. //**********************************************************************************
  145.  
  146. void task_UDP_client(void *pvParameters)
  147. {
  148.     uint16_t cnt = 0;
  149.     char rx_buffer[128];
  150.     char addr_str[128];
  151.     int addr_family;
  152.     int ip_protocol;
  153.  
  154.     while (1) {
  155.  
  156.         ESP_LOGI("WIFI","Waiting for Station");
  157.  
  158.         EventBits_t staBits = xEventGroupWaitBits(wifi_event_group, STA_CONNECTED_BIT, pdTRUE, pdFALSE, portMAX_DELAY);
  159.  
  160.         if((staBits & STA_CONNECTED_BIT) != 0)
  161.             ESP_LOGI("UDP","Connected, starting UDP_Client\n");
  162.         else {
  163.             ESP_LOGI("UDP", "timeout waiting for connection...");
  164.             break;
  165.         };
  166.  
  167.         udp_socket_tx = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP);
  168.  
  169.         if (udp_socket_tx < 0) {
  170.             ESP_LOGE("UDP", "Unable to create socket: errno %d", errno);
  171.             xEventGroupClearBits(wifi_event_group, UDP_SOCKED_BINDING);
  172.             break;
  173.         }
  174.         else{
  175.             ESP_LOGI("UDP", "Socket created");
  176.             xEventGroupSetBits(wifi_event_group, UDP_SOCKED_BINDING);
  177.         };
  178.  
  179.  
  180.         udp_sender.sin_family = AF_INET;
  181.         udp_sender.sin_addr.s_addr = inet_addr(UDP_SENDER_ADDR);
  182.         udp_sender.sin_port = htons(UDP_SENDER_PORT);
  183.  
  184.         if(bind(udp_socket_tx, (struct sockaddr *)&udp_sender, sizeof(struct sockaddr_in)) == -1) {
  185.             ESP_LOGE("UDP", "bind failed");
  186.             close (udp_socket_tx);
  187.             exit(1);
  188.         }
  189.         else
  190.             ESP_LOGI("UDP", "bind created");
  191.  
  192.         udp_receiver.sin_family = AF_INET;
  193.         udp_receiver.sin_addr.s_addr = inet_addr(UDP_RECEIVER_ADDR);
  194.         udp_receiver.sin_port = htons(UDP_RECEIVER_PORT);
  195.  
  196.         while (1) {
  197.  
  198.             static const char *msg = "test UDP send \n";
  199.  
  200.             vTaskDelay(2000 / portTICK_PERIOD_MS);
  201.  
  202.             cnt++;
  203.  
  204.             int err = UDP_send("UDP: msg no %d", cnt);
  205.  
  206.             if (err < 0) {
  207.                 ESP_LOGE("UDP", "Error occured during sending: errno %d", errno);
  208.                 break;
  209.             }
  210.             else
  211.                 ESP_LOGI("UDP","send to %s ",  ip4addr_ntoa(&(udp_receiver.sin_addr)));
  212.  
  213.         }
  214.  
  215.         if (udp_socket_tx != -1) {
  216.             ESP_LOGI("UDP", "Shutting down socket and restarting...");
  217.             shutdown(udp_socket_tx, 0);
  218.             close(udp_socket_tx);
  219.         }
  220.     }
  221.     ESP_LOGE("UDP", "leaving task");
  222.     vTaskDelay(200 / portTICK_PERIOD_MS);
  223.     vTaskDelete(NULL);
  224. };
  225.  
  226. esp_err_t UDP_send(const char *fmt, ...){
  227.     char text[128];
  228.     esp_err_t err = ESP_OK;
  229.  
  230.     va_list arg_ptr;
  231.     va_start(arg_ptr, fmt);
  232.         vsnprintf(&text[0],sizeof(text), fmt, arg_ptr);
  233.     va_end(arg_ptr);
  234.  
  235.     EventBits_t staBits = xEventGroupGetBits(wifi_event_group);
  236.    
  237.     if((staBits & UDP_SOCKED_BINDING) != 0) {           // socket is bound
  238.         err = sendto(udp_socket_tx, text, strlen(text), 0, (struct sockaddr *)&udp_receiver, sizeof(udp_receiver));
  239.     };
  240.  
  241.     return err;
  242.  
  243. };

GvTardy
Posts: 12
Joined: Tue Jan 01, 2019 3:26 pm

Re: UDP client does not start to send in AP mode

Postby GvTardy » Sat Mar 16, 2019 12:22 pm

Hello everyone,

I installed Wireshark to monitor the UDP traffic. Interesting finding:

The ESP32 does start sending messages as soon as the station (my Laptop) has connected.

BUT: non of my terminal programs starts displaying these messages before I send a line to the ESP32
(Hercules, YAT, script commander)

I have no clue why the terminal programs start displaying messages after sending a line. Is this related to the terminals, is this a driver issue (windows 10)? Related to the Firewall...

I have not found a practical workaround yet.

So, the issue has not been solved but it is not on the side of the ESP32.

I would be very if anybody had an idea how I can log the UDP messages by just opening a logger.

Kind regards
Georg

GvTardy
Posts: 12
Joined: Tue Jan 01, 2019 3:26 pm

Re: UDP client does not start to send in AP mode

Postby GvTardy » Sat Mar 16, 2019 1:40 pm

Firewall !!!

I missed a specific setting for public, non protected networks...

Alas, a stupid way to burn so much time, but at least it's working now.

Greetings
Georg

Who is online

Users browsing this forum: Google [Bot] and 10 guests