Git Product home page Git Product logo

esp-idf-nat-example's Introduction

ESP-IDF example with WIFI and NAT setup

An example firmware to use the ESP32 as WiFi repeater.

Requires this lwIP library with NAT support to be used as ESP-IDF lwIP component: https://github.com/martin-ger/esp-lwip

Based on: https://github.com/espressif/esp-idf/blob/release/v3.3/examples/wifi/getting_started/softAP/

NAT-Setup (4) Example network setup using ESP32 as WiFi repeater. The diagram was created with Draw.io.

Get started

The following are the steps required to run this project on the ESP32 and turn it into a WiFi repeater. The example is for version 4.0 of ESP-IDF. If you want to use ESP-IDF v3.3 use the esp-idf-v3.3 branch.

Step 1 - Setup ESP-IDF

Download and setup the ESP-IDF.

Step 2 - Get the lwIP library with NAT

Download the repository of the NAT lwIP library using the follwing command:

git clone https://github.com/martin-ger/esp-lwip.git

Note: It is important to clone the repository. If it is only downloaded it will be replaced by the orginal lwIP library during the build.

Step 3 - Replace original ESP-IDF lwIP library with NAT lwIP library

  1. Go to the folder where the ESP-IDF is installed.
  2. Rename or delete the esp-idf/component/lwip/lwip directory.
  3. Move the lwIP library with NAT repository folder from Step 2 to esp-idf/component/lwip/
  4. Rename the lwIP library with NAT repository folder from esp-lwip to lwip.

Step 4 - Build and flash the esp-idf-nat-example project

  1. Configure and set the option "Enable copy between Layer2 and Layer3 packets" in the ESP-IDF project configuration.
    1. In the project directory run make menuconfig (or idf.py menuconfig for cmake).
    2. Go to Component config -> LWIP and set "Enable copy between Layer2 and Layer3 packets" option.
    3. Go to Example configuration and set SSID and Password of both, the uplink STA interface and the SoftAP.
  2. Build the project and flash it to the ESP32.

A detailed instruction on how to build, configure and flash a ESP-IDF project can also be found the official ESP-IDF guide.

DNS

By Default the DNS-Server which is offerd to clients connecting to the ESP32 AP is set to 8.8.8.8. Replace the value of the MY_DNS_IP_ADDR with your desired DNS-Server IP address (in hex) if you want to use a different one.

esp-idf-nat-example's People

Contributors

jonask1337 avatar martin-ger avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

esp-idf-nat-example's Issues

post a binary?

hi, i've had trouble installing the idf. would you post a binary? that would be most helpful. thanks.

Errors on esp_wifi_init()

I was able to get this project to compile with the changes to the lwip component and using ESP-IDF release/v3.3 branch, and changing the setting regarding layer2 and layer3 copying, but when I flash code to an ESP32-WROOM, it is failing at esp_wifi_init() and rebooting with the following COM port output:

Rebooting...
ets Jun  8 2016 00:22:57

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:6376
load:0x40078000,len:11308
load:0x40080400,len:6700
entry 0x40080764
I (29) boot: ESP-IDF v3.3-beta3-34-g8c57aa024-dirty 2nd stage bootloader
I (29) boot: compile time 11:23:19
I (30) boot: Enabling RNG early entropy source...
I (36) boot: SPI Speed      : 40MHz
I (40) boot: SPI Mode       : DIO
I (44) boot: SPI Flash Size : 4MB
I (48) boot: Partition Table:
I (51) boot: ## Label            Usage          Type ST Offset   Length
I (59) boot:  0 nvs              WiFi data        01 02 00009000 00006000
I (66) boot:  1 phy_init         RF data          01 01 0000f000 00001000
I (74) boot:  2 factory          factory app      00 00 00010000 00100000
I (81) boot: End of partition table
I (85) esp_image: segment 0: paddr=0x00010020 vaddr=0x3f400020 size=0x18220 ( 98                           848) map
I (129) esp_image: segment 1: paddr=0x00028248 vaddr=0x3ffb0000 size=0x02e0c ( 1                           1788) load
I (134) esp_image: segment 2: paddr=0x0002b05c vaddr=0x40080000 size=0x00400 (                             1024) load
I (136) esp_image: segment 3: paddr=0x0002b464 vaddr=0x40080400 size=0x04bac ( 1                           9372) load
I (153) esp_image: segment 4: paddr=0x00030018 vaddr=0x400d0018 size=0x68cf4 (42                           9300) map
I (304) esp_image: segment 5: paddr=0x00098d14 vaddr=0x40084fac size=0x0bdd4 ( 4                           8596) load
I (334) boot: Loaded app from partition at offset 0x10000
I (334) boot: Disabling RNG early entropy source...
I (335) cpu_start: Pro cpu up.
I (338) cpu_start: Application information:
I (343) cpu_start: Project name:     esp-idf-nat-example
I (349) cpu_start: App version:      1
I (354) cpu_start: Compile time:     Jun 11 2019 11:23:05
I (360) cpu_start: ELF file SHA256:  9c8e5442de069042...
I (366) cpu_start: ESP-IDF:          v3.3-beta3-34-g8c57aa024-dirty
I (373) cpu_start: Starting app cpu, entry point is 0x40081070
I (365) cpu_start: App cpu up.
I (383) heap_init: Initializing. RAM available for dynamic allocation:
I (390) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM
I (396) heap_init: At 3FFB8DF8 len 00027208 (156 KiB): DRAM
I (402) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
I (409) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (415) heap_init: At 40090D80 len 0000F280 (60 KiB): IRAM
I (421) cpu_start: Pro cpu start user code
I (104) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.
I (167) net80211: OS adapter function version error! Version 1 is expected, but                            it is 2
ESP_ERROR_CHECK failed: esp_err_t 0x102 (ESP_ERR_INVALID_ARG) at 0x4008be70
file: "C:/msys32/home/dcambron/esp/esp-idf-nat-example-master/main/main.c" line                            90
func: wifi_init_sta
expression: esp_wifi_init(&cfg)

ELF file SHA256: 9c8e5442de0690429a3484feb97d07e463d850faa7873ac4a017bc79e31fd22                           a

Backtrace: 0x4008ba08:0x3ffba9a0 0x4008be73:0x3ffba9c0 0x400d2a95:0x3ffba9e0 0x4                           00d2c78:0x3ffbabd0 0x400d0ea2:0x3ffbabf0 0x4008eeb1:0x3ffbac10

Rebooting...

sending data

Hell,o jonask1337

I want to use your code for esp32 sim800l t-call, to use it as a modem and connect another esp8266, I am new to this, could you guide me?

Thanks for your response.

Source / Update for CMake

Hi jonask1337,
We have a project where we wish to create a WiFi Extender using ESP32s. Our environment is created with CMake, and we don't require many of the features available in your work.

Are you aware if anyone has created a CMake version of this "ESP-IDF lwIP library with NAT" project and, if not, would you be interested in doing so [as a commercial venture], on our behalf?
Peter

How to increase speed?

The NAT speed is not very fast.When download,it can run at 700KB/s for a very short time.
most of the time is 200KB/s,even 90KB/s.So I want to increase speed.

What should I do? Change the lwip settings?

Thanks.

eth --<nat>-- AP

When I close sta and use eth to access the Internet, the device connected to ap cannot access the Internet, but can ping the sta ip and the gateway, and other hosts in the LAN where eth is located cannot ping. Is this because eth is not currently supported?

What's the dns and dhcp calls for?

Sorry to ask a stupid networking question which is probably not really specific to this project, but why are the following lines needed?

    ip_addr_t dnsserver;
    dhcps_offer_t dhcps_dns_value = OFFER_DNS;
    dhcps_set_option_info(DOMAIN_NAME_SERVER, &dhcps_dns_value, sizeof(dhcps_dns_value));

    // Set custom dns server address for dhcp server
    dnsserver.u_addr.ip4.addr = esp_ip4addr_aton("8.8.8.8");
    dnsserver.type = IPADDR_TYPE_V4;
    dhcps_dns_setserver(&dnsserver);

These aren't necessary in the Espressif Wifi AP example, but obviously they are here otherwise it doesn't work. Is it because DHCP is only enabled for the default connection (in this case wifi STA) normally?

Run Time Error:

hi I'm new to esp-idf. i just followed your commands. build and flash successfully but while monitoring its show like this

Rebooting...
ets Jul 29 2019 12:21:46

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:6840
load:0x40078000,len:14076
load:0x40080400,len:4304
entry 0x400806e8
I (72) boot: Chip Revision: 3
I (72) boot_comm: chip revision: 3, min. bootloader chip revision: 0
I (39) boot: ESP-IDF v4.0-dirty 2nd stage bootloader
I (40) boot: compile time 22:18:54
I (40) boot: Enabling RNG early entropy source...
I (45) boot: SPI Speed : 40MHz
I (49) boot: SPI Mode : DIO
I (53) boot: SPI Flash Size : 2MB
I (57) boot: Partition Table:
I (61) boot: ## Label Usage Type ST Offset Length
I (68) boot: 0 nvs WiFi data 01 02 00009000 00006000
I (75) boot: 1 phy_init RF data 01 01 0000f000 00001000
I (83) boot: 2 factory factory app 00 00 00010000 00100000
I (90) boot: End of partition table
I (94) boot_comm: chip revision: 3, min. application chip revision: 0
I (101) esp_image: segment 0: paddr=0x00010020 vaddr=0x3f400020 size=0x14b7c ( 84860) map
I (141) esp_image: segment 1: paddr=0x00024ba4 vaddr=0x3ffb0000 size=0x03280 ( 12928) load
I (146) esp_image: segment 2: paddr=0x00027e2c vaddr=0x40080000 size=0x00400 ( 1024) load
0x40080000: _WindowOverflow4 at /root/esp/esp-idf/components/freertos/xtensa_vectors.S:1778

I (148) esp_image: segment 3: paddr=0x00028234 vaddr=0x40080400 size=0x07ddc ( 32220) load
I (170) esp_image: segment 4: paddr=0x00030018 vaddr=0x400d0018 size=0x663e8 (418792) map
0x400d0018: _stext at ??:?

I (320) esp_image: segment 5: paddr=0x00096408 vaddr=0x400881dc size=0x0cef0 ( 52976) load
0x400881dc: reconfigureAllWdts at /root/esp/esp-idf/components/esp32/panic.c:406

I (356) boot: Loaded app from partition at offset 0x10000
I (356) boot: Disabling RNG early entropy source...
I (356) cpu_start: Pro cpu up.
I (360) cpu_start: Application information:
I (365) cpu_start: Project name: esp-idf-nat-example
I (371) cpu_start: App version: 1
I (375) cpu_start: Compile time: Jul 5 2021 22:45:00
I (381) cpu_start: ELF file SHA256: 7846af27b0df8486...
I (387) cpu_start: ESP-IDF: v4.0-dirty
I (392) cpu_start: Starting app cpu, entry point is 0x40081260
0x40081260: call_start_cpu1 at /root/esp/esp-idf/components/esp32/cpu_start.c:272

I (379) cpu_start: App cpu up.
I (403) heap_init: Initializing. RAM available for dynamic allocation:
I (410) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM
I (416) heap_init: At 3FFB91C8 len 00026E38 (155 KiB): DRAM
I (422) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
I (428) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (435) heap_init: At 400950CC len 0000AF34 (43 KiB): IRAM
I (441) cpu_start: Pro cpu start user code
I (459) spi_flash: detected chip: gd
I (460) spi_flash: flash io: dio
W (4ets Jul 29 2019 12:21:46

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:6840
load:0x40078000,len:14076
load:0x40080400,len:4304
entry 0x400806e8
I (72) boot: Chip Revision: 3
I (72) boot_comm: chip revision: 3, min. bootloader chip revision: 0
I (40) boot: ESP-IDF v4.0-dirty 2nd stage bootloader
I (40) boot: compile time 22:18:54
I (40) boot: Enabling RNG early entropy source...
I (45) boot: SPI Speed : 40MHz
I (49) boot: SPI Mode : DIO
I (53) boot: SPI Flash Size : 2MB
I (57) boot: Partition Table:
I (61) boot: ## Label Usage Type ST Offset Length
I (68) boot: 0 nvs WiFi data 01 02 00009000 00006000
I (75) boot: 1 phy_init RF data 01 01 0000f000 00001000
I (83) boot: 2 factory factory app 00 00 00010000 00100000
I (90) boot: End of partition table
I (95) boot_comm: chip revision: 3, min. application chip revision: 0
I (102) esp_image: segment 0: paddr=0x00010020 vaddr=0x3f400020 size=0x14b7c ( 84860) map
I (141) esp_image: segment 1: paddr=0x00024ba4 vaddr=0x3ffb0000 size=0x03280 ( 12928) load
I (146) esp_image: segment 2: paddr=0x00027e2c vaddr=0x40080000 size=0x00400 ( 1024) load
0x40080000: _WindowOverflow4 at /root/esp/esp-idf/components/freertos/xtensa_vectors.S:1778

I (148) esp_image: segment 3: paddr=0x00028234 vaddr=0x40080400 size=0x07ddc ( 32220) load
I (170) esp_image: segment 4: paddr=0x00030018 vaddr=0x400d0018 size=0x663e8 (418792) map
0x400d0018: _stext at ??:?

I (320) esp_image: segment 5: paddr=0x00096408 vaddr=0x400881dc size=0x0cef0 ( 52976) load
0x400881dc: reconfigureAllWdts at /root/esp/esp-idf/components/esp32/panic.c:406

I (356) boot: Loaded app from partition at offset 0x10000
I (356) boot: Disabling RNG early entropy source...
I (356) cpu_start: Pro cpu up.
I (360) cpu_start: Application information:
I (365) cpu_start: Project name: esp-idf-nat-example
I (371) cpu_start: App version: 1
I (375) cpu_start: Compile time: Jul 5 2021 22:45:00
I (381) cpu_start: ELF file SHA256: 7846af27b0df8486...
I (387) cpu_start: ESP-IDF: v4.0-dirty
I (392) cpu_start: Starting app cpu, entry point is 0x40081260
0x40081260: call_start_cpu1 at /root/esp/esp-idf/components/esp32/cpu_start.c:272

I (0) cpu_start: App cpu up.
I (403) heap_init: Initializing. RAM available for dynamic allocation:
I (410) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM
I (416) heap_init: At 3FFB91C8 len 00026E38 (155 KiB): DRAM
I (422) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
I (428) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (435) heap_init: At 400950CC len 0000AF34 (43 KiB): IRAM
I (441) cpu_start: Pro cpu start user code
I (459) spi_flash: detected chip: gd
I (460) spi_flash: flash io: dio
W (460) spi_flash: Detected size(8192k) larger than the size in the binary image header(2048k). Using the size in the binary image header.
I (470) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.
I (595) wifi: wifi driver task: 3ffc3e10, prio:23, stack:3584, core=0
I (595) system_api: Base MAC address is not set, read default base MAC address from BLK0 of EFUSE
I (595) system_api: Base MAC address is not set, read default base MAC address from BLK0 of EFUSE
I (625) wifi: wifi firmware version: 581f422
I (625) wifi: config NVS flash: enabled
I (625) wifi: config nano formating: disabled
I (625) wifi: Init dynamic tx buffer num: 32
I (625) wifi: Init data frame dynamic rx buffer num: 32
I (635) wifi: Init management frame dynamic rx buffer num: 32
I (635) wifi: Init management short buffer num: 32
I (645) wifi: Init static rx buffer size: 1600
I (645) wifi: Init static rx buffer num: 10
I (655) wifi: Init dynamic rx buffer num: 32
W (655) wifi: password less than 8

ESP_ERROR_CHECK failed: esp_err_t 0xb (ERROR) at 0x40088820
0x40088820: _esp_error_check_failed at /root/esp/esp-idf/components/esp32/panic.c:726

file: "../main/main.c" line 113
func: wifi_init_sta
expression: esp_wifi_set_config(ESP_IF_WIFI_AP, &ap_config)

ELF file SHA256: 7846af27b0df848622394dd17b94d4ad9acb7d6165289aa58e9a1c6d129a994e

Backtrace: 0x4008828d:0x3ffbadc0 0x40088823:0x3ffbade0 0x400d52ab:0x3ffbae00 0x400d5365:0x3ffbafd0 0x400d1cfa:0x3ffbaff0 0x4008ca45:0x3ffbb010
0x4008828d: invoke_abort at /root/esp/esp-idf/components/esp32/panic.c:155

0x40088823: _esp_error_check_failed at /root/esp/esp-idf/components/esp32/panic.c:727

0x400d52ab: wifi_init_sta at /root/Desktop/esp-idf-nat-example-master/build/../main/main.c:113 (discriminator 1)

0x400d5365: app_main at /root/Desktop/esp-idf-nat-example-master/build/../main/main.c:145

0x400d1cfa: main_task at /root/esp/esp-idf/components/esp32/cpu_start.c:554

0x4008ca45: vPortTaskWrapper at /root/esp/esp-idf/components/freertos/port.c:143

Compile and elf generation errors

Hi

This is what i did.

I used this example as you provided. As per instructions I changed STA and AP SSID and password accordingly. Then i deleted the contents in the old lwip folder and replaced with the contents of your lwip. After that i changed serial flash config for adjust COM port and enabled "Enable copy between Layer2 and Layer3 packets" in make menuconfig.

Heres my problem.

Doing this will compile and build the program correctly, esp32 connects to my router and also has AP mode, however NAT functionality is not working. Then i noticed that i have to define "#define IP_NAPT 1" in order to include the library file and also the code.

so i added #define IP_NAPT 1 and #define IP_FORWARD 1 in the main.c. However i get an error during build process, more specifically when building the elf file " undefined reference to `ip_napt_enable'"

esp-idf v4.1-beta2 esp_netif support

Now that the LWIP patches have been merged in v4.1-beta2 it is possible to run this compile this example without modifications, however it does not appear to work with the new esp_netif system which has replaced tcpip_adapter, and unusually the new esp_event system also seems to be preventing it from working. Has anyone had any success enabling NAT with the latest WiFi sample code? https://github.com/espressif/esp-idf/blob/master/examples/wifi/getting_started/station/main/station_example_main.c

esp-idf-v3.3 dns server(192.168.4.1)

Hi,

I have merged this branch to mongoose os, the final problem is the DNS server as 192.16.4.1, if the device needs access the internet, need manually set the DNS server(8.8.8.8). How to fix it? Pls, help!

wifi sta(192.168.0.1) -> nat -> wifi ap(192.168.4.1), the right dns server should be 192.168.0.1, but the device connected to esp32 get dns server as 192.168.4.1

Building and Flashing

Hi, Can you provide a step by step procedure in building this project?
I mean what's next? I don't even know what to do with the files inside you resp-idf-nat-example folder
I already:

  • changed what's need to be changed in main.c file.

  • installed idf and copied your lwip to \components\lwip\lwip

I hope you can create a more newbie friendly step by step procedure in building a wifi repeater/NAT out of ESP32. The community would appreciate screenshots/video tutorial in building this project.

Thank you and more power to your work!

Compilation errors

Hey,

This is what I did:
I am using esp-idf on branch release/v3.3.
I changed the lwip library with [https://github.com/martin-ger/esp-lwip] (what branch should it be ?)
I changed the example branch to v3.3 and run it.

I get a lot of error with asio component, attached some examples of the errors.

img

Maybe you know what is happening ?

Thanks.

No Internet connection on ESP8266

I compiled this example for ESP8266 using FREERTOS SDK which is idf style, and after successful compilation and flashing it on NodeMCU, the ESP connects to the AP and also clients can connect to the esp, but there is no internet connection on clients. i.e. clients cannot communicate with the original AP.

P.S. I needed to remove ret == ESP_ERR_NVS_NEW_VERSION_FOUND from https://github.com/jonask1337/esp-idf-nat-example/blob/master/main/main.c#L138 to get it compiled with the SDK.

Here is the console output:

I (109) boot: compile time 21:07:51
I (109) qio_mode: Enabling default flash chip QIO
I (117) boot: SPI Speed      : 40MHz
I (124) boot: SPI Mode       : QIO
I (130) boot: SPI Flash Size : 4MB
I (136) boot: Partition Table:
I (142) boot: ## Label            Usage          Type ST Offset   Length
I (153) boot:  0 nvs              WiFi data        01 02 00009000 00006000
I (165) boot:  1 phy_init         RF data          01 01 0000f000 00001000
I (177) boot:  2 factory          factory app      00 00 00010000 000f0000
I (188) boot: End of partition table
I (195) esp_image: segment 0: paddr=0x00010010 vaddr=0x40210010 size=0x4e448 (320584) map
I (296) esp_image: segment 1: paddr=0x0005e460 vaddr=0x4025e458 size=0x0e1ac ( 57772) map
I (312) esp_image: segment 2: paddr=0x0006c614 vaddr=0x3ffe8000 size=0x005f4 (  1524) load
I (313) esp_image: segment 3: paddr=0x0006cc10 vaddr=0x40100000 size=0x00080 (   128) load
I (323) esp_image: segment 4: paddr=0x0006cc98 vaddr=0x40100080 size=0x05464 ( 21604) load
I (342) boot: Loaded app from partition at offset 0x10000
I (368) system_api: Base MAC address is not set, read default base MAC address from EFUSE
I (372) system_api: Base MAC address is not set, read default base MAC address from EFUSE
phy_version: 1163.0, 665d56c, Jun 24 2020, 10:00:08, RTOS new
I (439) phy_init: phy ver: 1163_0
I (472) wifi apsta: wifi_init_apsta finished.
I (475) wifi apsta: connect to ap SSID: MyAP
I (592) wifi:state: 0 -> 2 (b0)
I (597) wifi:state: 2 -> 3 (0)
I (600) wifi:state: 3 -> 5 (10)
I (617) wifi:connected with MyAP, aid = 3, channel 11, HT20, bssid = ...
I (1375) tcpip_adapter: sta ip: 192.168.1.246, mask: 255.255.255.0, gw: 192.168.1.1
I (1379) wifi apsta: got ip:192.168.1.246
I (5011) wifi apsta: station connected
I (5120) tcpip_adapter: softAP assign IP to station,IP is: 192.168.4.2

Update: I added ping code to check if the module can communicate with both sides (clients and AP), and it could ping all of them.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.