My friend and I are doing a project and we're stuck on a problem. We tried looking stuff up but it looks like no one documented something similar before.

Basically, what we want to do is have one Arduino (we thought a MKR NB 1500) in a remote location without any available WiFi (or Ethernet) connection be able to host its own Wifi Network. We thought that giving it a SIM card would allow it to communicate to our webserver (API) and to our surprise, it does (yay)! However, we also want people near the Arduino to be able to access the internet. However, that's where we're stuck...

I know that hosting an access point on an Arduino with WiFi is possible. But is it possible for that access point to link the user to the real internet, itself provided by the SIM card?

P.S. : We are open to having two different Arduinos linked together (or more) in order to make this work. We just need to be able to transfer the SIM network to an access point (hotspot basically).

P.P.S : We are also open to using different technologies like ESP controllers... We're just not using a cellular hotspot because of the cost of these things and we want to make it with Arduino or different controllers.

  • A sim card gives access to mobile data. Do you really want to use mobile data for your internet? Commented Sep 7, 2023 at 3:11
  • This might be useful : iot-bots.com/products/… and if you want to extend the range of your Wi-Fi network cheap, you can use this lib, it is very well documented :github.com/martin-ger/esp_wifi_repeater
    – T R Y
    Commented Sep 7, 2023 at 6:43
  • @RohitGupta I understand it's not ideal but I didn't think of anything else that could work. If I got something like a 1-2gb/month plan for cheap then limited bandwith it could've worked. Do you suggest something else?
    – loom
    Commented Sep 7, 2023 at 11:48
  • 1
    @MAK thanks a lot that seems to be what I am looking for. I'll continue to do some research and see if maybe that shield can talk with the MKR and take its connection...
    – loom
    Commented Sep 7, 2023 at 11:48

1 Answer 1


Bridging of two networks at TCP/IP level is done in the TCP/IP stack. It translates addresses from one network interface to other network interface, but both interfaces are handled by the same TCP/IP stack.

An example on an MCU would be translating between esp8266 SoftAP and STA network interface. They are two network interfaces handled by the same TCP/IP stack. And now esp8266 Arduino can handle some Ethernet modules as additional network interfaces of that TCP/IP stack too.

With MKR NB 1500 or any other (mobile) network module attached to Arduino you can't do bridging because the TCP/IP stack is in the firmware of the module and the WiFi or Ethernet shield you would attach to the MKR would have its own TCP/IP stack in the firmware too.

If you are on esp8266, esp32 or other MCU where the TCP/IP stack runs in the MCU, you still can't make it work together with the TCP/IP stack in the external module. Those Ethernet modules esp8266 can use as netwok interaces with its TCP/IP stack are interfaced on the software layer closer to hardware, but the mobile network modules use AT commands without exposing access to lower layers.

What you can do is to proxy some network services as I write in this answer.

  • This is wrong Bridging of two networks at TCP/IP level is done with IP Network Address Translation (NAT) Protocol.. NAT is a routing solution not bridging.
    – MatsK
    Commented Oct 7, 2023 at 9:24
  • @MatsK isn't 'bridging' routing?
    – Juraj
    Commented Oct 7, 2023 at 12:07
  • No, bridging is on layer 2 and routing on layer 3.
    – MatsK
    Commented Oct 7, 2023 at 18:04
  • 1
    @MatsK, ok. I removed mentions of NAT
    – Juraj
    Commented Oct 8, 2023 at 5:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.