Hi Zhe Weng,

Welcome to NuttX mailing list!

What a great first message here! It worked perfectly:

In the ESP32:

nsh> ?
help usage:  help [-v] [<cmd>]

    .           cd          exec        kill        pwd         true
    [           cp          exit        ls          reboot      truncate
    ?           cmp         false       mkdir       rm          uname
    addroute    dirname     fdinfo      mkrd        rmdir       umount
    alias       dd          free        mount       route       unset
    unalias     delroute    help        mv          set         uptime
    arp         df          hexdump     nslookup    sleep       usleep
    basename    dmesg       ifconfig    pidof       source      xd
    break       echo        ifdown      printf      test
    cat         env         ifup        ps          time

Builtin Apps:
    dhcpd          dhcpd_stop     nsh            renew          telnetd
    dhcpd_start    iptables       ping           sh             wapi
nsh> ifconfig
wlan0   Link encap:Ethernet HWaddr bc:dd:c2:d4:a9:ec at RUNNING mtu 1504
        inet addr:192.168.0.7 DRaddr:192.168.0.1 Mask:255.255.255.0

wlan1   Link encap:Ethernet HWaddr bc:dd:c2:d4:a9:ed at DOWN mtu 1504
        inet addr:0.0.0.0 DRaddr:0.0.0.0 Mask:0.0.0.0

nsh> dhcpd_start wlan1
nsh> wapi psk wlan1 mypasswd 3
nsh> wapi essid wlan1 nuttxap 1
nsh> route
SEQ   TARGET          NETMASK         ROUTER
   1. 0.0.0.0         0.0.0.0         10.0.0.1
nsh> delroute 0.0.0.0 0.0.0.0
nsh> addroute 0.0.0.0 0.0.0.0 192.168.0.1
nsh> route
SEQ   TARGET          NETMASK         ROUTER
   1. 0.0.0.0         0.0.0.0         192.168.0.1
nsh> iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
nsh>

In the computer connected to ESP32 board with NuttX SoftAP:

$ ifconfig
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 5666  bytes 547514 (547.5 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 5666  bytes 547514 (547.5 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlp0s20f3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.4  netmask 255.255.255.0  broadcast 10.0.0.255
        inet6 fe80::162b:ec2:fe98:87  prefixlen 64  scopeid 0x20<link>
        ether ec:63:d7:0b:ef:af  txqueuelen 1000  (Ethernet)
        RX packets 127217  bytes 146539379 (146.5 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 37079  bytes 23604536 (23.6 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

alan@dev:~$ ping 10.0.0.1
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=3.28 ms
64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=9.72 ms
64 bytes from 10.0.0.1: icmp_seq=3 ttl=64 time=2.63 ms
64 bytes from 10.0.0.1: icmp_seq=4 ttl=64 time=18.9 ms
64 bytes from 10.0.0.1: icmp_seq=5 ttl=64 time=4.82 ms
64 bytes from 10.0.0.1: icmp_seq=6 ttl=64 time=4.45 ms
64 bytes from 10.0.0.1: icmp_seq=7 ttl=64 time=3.57 ms
64 bytes from 10.0.0.1: icmp_seq=8 ttl=64 time=3.87 ms
64 bytes from 10.0.0.1: icmp_seq=9 ttl=64 time=2.20 ms
64 bytes from 10.0.0.1: icmp_seq=10 ttl=64 time=4.74 ms
64 bytes from 10.0.0.1: icmp_seq=11 ttl=64 time=8.60 ms
64 bytes from 10.0.0.1: icmp_seq=12 ttl=64 time=11.5 ms
^C
--- 10.0.0.1 ping statistics ---
12 packets transmitted, 12 received, 0% packet loss, time 11018ms
rtt min/avg/max/mdev = 2.201/6.527/18.917/4.688 ms

alan@dev:~$ ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=63 time=19.1 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=63 time=21.7 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=63 time=94.5 ms
64 bytes from 192.168.0.1: icmp_seq=4 ttl=63 time=23.8 ms
^C
--- 192.168.0.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 19.125/39.788/94.484/31.622 ms

alan@dev:~$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=111 time=63.0 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=111 time=51.4 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=111 time=55.0 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=111 time=64.3 ms
64 bytes from 8.8.8.8: icmp_seq=5 ttl=111 time=52.8 ms
^C
--- 8.8.8.8 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 51.428/57.314/64.327/5.322 ms

I will create a wifishare board config and a Documentation/ explaining
how to do it.

Thank you very much!

BR,

Alan

On 10/17/23, 翁喆 <weng...@xiaomi.com> wrote:
> Hi Robert & Alan,
>
> Although I don't have an ESP32 board yet, you may need NAT applied on wlan0,
> I guess.
>
> Under Alan's configuration, there are two subnets: the 192.168.0.0/24 and
> 10.0.0.0/24. With only routing and ipforward, the ping from 10.0.0.x (take
> 10.0.0.2 as an example) normally can reach the router (192.168.0.1), but the
> router doesn't know where 10.0.0.2 is, and it may just reply via its default
> route (packet may be sent to the internet, or dropped by the router's
> firewall).
>
>  The router's default route (normally the Internet)
>     ↑ reply: 192.168.0.1 -> 10.0.0.2
>  ----------
>  | Router |
>  ----------
>     ↑ ping: 10.0.0.2 -> 192.168.0.1
>  ----------
>  | ESP32  | <- Just forward
>  ----------
>     ↑ ping: 10.0.0.2 -> 192.168.0.1
>  ----------
>  | Device |
>  ----------
>
> You may try NAT with CONFIG_NET_NAT and CONFIG_SYSTEM_IPTABLES enabled,
> using the command 'iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE' to
> apply NAT to all outbound traffic on wlan0, then you may get:
>
>  ----------
>  | Router |
>  ----------
>     ↑ ping:  192.168.0.7 -> 192.168.0.1
>     ↓ reply: 192.168.0.1 -> 192.168.0.7
>  ----------
>  | ESP32  | <- Doing NAT, mapping 10.0.0.2 to 192.168.0.7
>  ----------
>     ↑ ping:  10.0.0.2 -> 192.168.0.1
>     ↓ reply: 192.168.0.1 -> 10.0.0.2
>  ----------
>  | Device |
>  ----------
>
> Hope this may help.
>
> BTW, It's my first time replying to this mailing list, I'm not sure if I'm
> doing it correctly.
>
> Best regards,
> Zhe Weng
> #/******本邮件及其附件含有小米公司的保密信息,仅限于发送给上面地址中列出的个人或群组。禁止任何其他人以任何形式使用(包括但不限于全部或部分地泄露、复制、或散发)本邮件中的信息。如果您错收了本邮件,请您立即电话或邮件通知发件人并删除本邮件!
> This e-mail and its attachments contain confidential information from
> XIAOMI, which is intended only for the person or entity whose address is
> listed above. Any use of the information contained herein in any way
> (including, but not limited to, total or partial disclosure, reproduction,
> or dissemination) by persons other than the intended recipient(s) is
> prohibited. If you receive this e-mail in error, please notify the sender by
> phone or email immediately and delete it!******/#
>

Reply via email to