The file 'The GI’V Box WiFi Sharing Community 3D Printer Model' is (scad,stl) file type, size is 27.5KB.
...a world of free internet, a mesh network built from a small amount bandwidth, shared by people like you and me, in every street, in every town, all around the world. That is GI'Ving!
(BTW, any contributions you can make to creating a better version of this project, even if not really a build or remix, is welcome. If you spot typos and tell me, I thank you in advance and will also thank you profusely at the time I fix them. I also welcome technical advice or corrections, suggestions of parallel hardware or software which might offer faster performance, or better code. Treat builds and remixes as if they were like forks on github. I want this to become a big, optimistic, generous, community minded thing!)
GI'V stands for General Internet 'Vailability, as in "availability" but slurred at the start, so that the A is dropped. It's the idea that every home owner with fast, modern, broadband connection shares a few percent of their speed, freely with their street. It would be hived off and shaped to the amount a household can spare, so that kids and passers by can have basic internet while on the move, without needing 4G or 5G* contracts. If enough neighbours GI'V, their street becomes a basic, public hotspot. If enough streets GI'V, their town or suburb becomes ubiquitously networked. We all benefit!
And GI'V is not a business, nor is it a not-for-profit corporation, it's a grassroots movement. Nobody sponsors it, but you, and only if you want to. Nobody pays for it with anything but a small piece of standard hardware, a WiFi extender, the GI'V box. Anybody who wants to GI'V can simply set up a guest network on their home WiFi WiFi, limit its bandwith and GI'V.
I love the idea of GI'V being a community of generous souls sharing a little of their bandwidth out to their local street. I like even more that we might grow a community of GI'Vers, willing to make their streets part of a ubiquitous mesh network. Built a GI'V box for yourself, then convince your neighbours to do the same by building them one each for just the cost of parts and a little of your time to help them set it up. Imagine local streets where you can walk to your local shops, never using cell data, yet never being out of range of friends, family, your kids or mum and dad. Imagine a city-wide GI'V network, where you can make VOIP calls instead of having a mobile contract. If one has too much traffic.
So, here is the GI'V Box, a free, open source device that brings together some simple hardware, a free firmware, some command line instructions and a simple, 3D printed housing.
The GI'V Box is a WiFi Range Extender which GI'Vs away a fraction of your internet, while protecting the rest for you. It's relatively basic project if you can follow a technical "recipe" for command line computing, as this is what is required to instal the firmware on the microcontroller, then configure it. However, if you don't handle fixing a WiFi outage very well, this may not be the project for you, it gets quite technical at the start, but you probably know somebody who can GI'V their time to build a GI'V box for you and for themselves. Inspire others if you don't understand the setup, included later in this Thing.
First, the printing details are at the end of this article in the usual fields, and the thing files are where they're supposed to be, too. The real meat of this project is the firmware. It will tax your brain like a 1950s Labor government, it will make you go "ooooh!", "aaah!" and "naw." You peeps are 3D printers, CNC machinists and makers, you've got the cabinetwork sorted. You've got some serious new challenges ahead, though, some of you. Enjoy!
So! Enter Martin Ger's ESP WiFi Repeater firmware and the D1 mini pro, a popular variant of the ESP8266 "mini mcu" that can have a long range external antenna fitted.
Of course, this all needs to be wrapped up in a nice little case, which might be an off-the-shelf project case from an electronics hobbies retailer, or the included STL and OpenSCAD file for those who can 3D print a case. Prototype 1 of GI'V is happily running in a quiet suburban street, in Melbourne, Australia, in the included housing design, that I printed, just out of view in my front window. The total cost of a single GI'V Box can be as little as AU$8 for the microcontroller and a few cents worth of PETG filament through a 3D printer. The firmware is made available for free on Martin Ger's github repository, as linked at the beginning of this section.
You will most definitely need a lot of command line skills to upload the prebuilt firmware binaries. If you're a more general Arduino hobbyist, you may find it simpler to work up a variant from the WiFi NAT example provided in the Arduino IDE but, if you're eager to get started with this version, you'll need to know how to upload .hex files directly to your D1 using a tool like PuTTY, esptool.py or avrdude, depending on your computer OS and command line preferences.
The D1, despite being capable of 802.11n speeds, theoretically, is actually a natural speed limiter. My D1 clone gives me between 2mbps and 4mbps download and upload speed, enough for messaging, basic web surfing and VOIP calling. However, if enough people in a street install enough GI'V Boxes, the available bandwidth on such a mesh network becomes shared over a number of different access points. If you pay for a finite amount of data per month, you can also set it up to limit that to a finite daily amount, too, so you aren't left with an end-of-month bill shock. There are also Arduino based range extender firmwares, some of which come with captive portals, but I prefer keeping the SSIDs visible, but without drawing attention to themselves by nagging people to sign on. We don't want people to abuse this GI'ft and we don't want the GI'ft to be annoying.
I use Mac OS, so esptool.py in terminal is how I installed the firmware files. This should also work for linux or PC (with PuTTY?) with some tweaking. You could also use AVRDude, but the syntax will have some differences. Download Martin Ger's complete, precompiled firmware binaries, then flash them with the following command, modified for your environment...
# ~/Library/Python/3.7/bin/esptool.py --port /dev/[your ESP's port] write_flash -fs 4MB -ff 80m -fm dio 0x00000 ~/path/to/firmware/0x00000.bin 0x02000 ~/path/to/firmware/0x02000.bin
You may strike trouble with older computer systems using Python 2, instead of 3. I had to install Python 3 using Homebrew on my old Mac and my command, above, includes the path to the Python 3 installation, because my older Mac OS still requires Python 2.7 as well.
If you are already lost, get help from a friend who understands this stuff. GI'Ving works better when we inspire others to GI'Ve, too.
Generally, the port can be found by connecting the board, opening Arduino IDE, PuTTY, CoolTerm or similar and checking what port is available as a serial. menu, where the board will be "/dev/something" or variants as per other OSes.
The esp_wifi_repeater starts with the following default configuration:
ap_ssid: MyAP, ap_password: none, ap_on: 1, ap_open: 1
network: 192.168.4.0/24
After first boot (or factory reset) it will offer a WiFi network with an open AP and the ssid "MyAP". It does not yet try to automatically re-connect to an uplink AP (as it does not know a valid ssid or password).
Point your browser to http://192.168.4.1.
First enter the appropriate values for your home WiFi network in "STA Settings".
YOUR HOME NETWORK SETTINGS SSID: YourSSID Password: SSIDpassword Automesh: off
Don't check the "Automesh" box it will only range extend your private wifi, including password protection, we want to GI'V! Next we'll enter your GI'V public access settings in "AP Settings."
GI'V BOX SETTINGS SSID: GIV (This is the WiFi network the public will see.) Password: none ("none" or leave blank) Security: Open (This is a menu, by default it expects WPA2, choose "Open".) Subnet: 10.24.1.0 (This sets the numbering scheme for your GI'V network)
Click "Connect". The ESP reboots and will connect to your WiFi router. The status LED should be blinking after some seconds.
Connect your WiFi to the GIV network and point your browser at http://10.24.1.1:80 (the ":80" port number is optional) All of your settings should appear in the admin panel as you set them.
NB: When we enter an apostrophe in the SSID field, it gets included correctly in the database on saving it, it's just the web form returned in the respones that struggles with it, and that is why we use "GIV" instead of "GI'V" at this point. There are no trademarks here, this is a movement and the branding is a slogan and our values, not a legal entity. I can't afford the massive expense of a trademark process, so we just call it what we want to in the end, if some too wealthy mongrel squats on it.
If you need to speed or data manage the connection, fire up your terminal (Mac/Linux) or PuTTY (Windows), it's time to get up to our elbows in advanced config. Check that your wifi network is your GI'V (or GIV) network then, in your terminal, type...
# telnet 10.24.1.1 7777
Here, we're connecting to the GI'V Box's command line. You can also do this via a terminal emulator, like CoolTerm or PuTTY, by directly connecting the ESP board to your USB port. The commands will be the same, but there may be more complicated connection settings to make. When you type the above, you'll get the response...
Trying 10.24.1.1... Connected to 10.24.1.1. Escape character is '^]'. CMD>
Where it says "CMD>" is your command prompt, type "show" here and hit the return key. All of the configuration we've done so far will be listed like...
Version V2.2.13 (build: Sun Sep 1 11:20:03 2019) STA: SSID:[not showing you this] PW:[or this] BSSID: 34:e8:94:67:6b:d9 AP: SSID:GI'V PW:[or this] [open] IP:10.24.1.0/24 [NAT] STA MAC: dc:4f:22:60:b3:dc AP MAC: 24:24:01:da:45:c9 STA hostname: ESP_60b3dc Network console access on port 7777 (mode 3) Clock speed: 80 MQTT: disabled CMD>
The first thing we will change here is the STA hostname, from "ESP_60b3dc" to "GI'Vbox". This brands the box with the community's ID. Type...
set sta_hostname GI'Vbox CMD>
The GI'V Box will reply, "STA hostname set", so type...
save
and enter.
By branding every GI'V box with the same hostname and same SSID, we create a uniform network across a wider area as more GI'V Boxes come online adjacent to each other. If one is full, the next nearest will just automatically pick up a new client in range. When your phone, tablet or laptop connects to one GI'V Box, it will remember them all. Hence all GI'V Boxes should be created with the public SSID of "GIV" and the hostname, "GI'Vbox". It's all part of the GI'Ving.
Next, for a little bit of security and flexibility, we're going to randomise the MAC address, so that every time a GI'V Box restarts, it has a different MAC address. The MAC, or Media Access Code, is how a network assigns and verifies IP numbers. Randomising the MAC of a box particularly makes tracing back to your home internet a little harder. So, type...
set sta_mac random
Most GI'Vers would, I hope, share 10% or even a little more of their speed to the local public GI'V network, but you may only have a slower connection. So now we're going to put a speed limit on the GI'V Box. This step is optional but, depending on whether you have a genuine Wemos D1 mini pro, or a clone, you might need to lock the connection speed down. Your mileage may vary, so start slow at first, maybe 4mbps if your have a 50mbps plan. We'll do this twice, once for download speed, once for upload speed. Type...
set downstream_kbps 4000
This assumes your plan is nominally 50mbps download & delivers 44mbps average. Hit return, then type...
set upstream_kbps 2000
Upload is nominally half the download speed in Australia, other countries have symetrical speeds and much tighter deliver requirements. However based on an Australian NBN 50/25 plan, this will leave you with 90% of your internet speed for Netflix.
If your plan is not an unlimited one, it's also recommended to limit data usage and the GI'V Box can do this, too, as a daily amount, reset at midnight. We'll assume a monthly limit on your plan of 500MB, divided by 30 days, to calculate the limit, this gives us 16Mb/day. Lets asume 10%, that's a download limit of 1600kb, plenty for the odd facey message, but you might be generous, it's your call. To do this, type...
set daily_limit 1600
Even if your plan has unlimited data, it's probably a safer idea to have some sort of reasonable limit. We can safely assume 10000kb (10M) per day is fair, especially as you'll be encouraging your neighbours to be generous, too. If you imagine nearly every house in the street sharing 10 or 20 Mb a day, that's a lot of text and a lot of short VOIP calls, but very little impost to you.
Finally, we need to secure the box. What we will do now will make the box's configuation settings inaccessible by telnet, leaving it only accessible by plugging it into your computer and using a terminal session to access the console, so be sure you've got everything right before you do this, but MAKE SURE YOU DO THIS, otherwise you'll leave yourself open for a hack. These changes shouldn't activate until you save and restart so, when you're ready to lock the gate and make your box pretty much hackproof, type the following
set config_access 0 (then hit return) save (then return again) restart (and return again)
After each command and return key, the console will echo "Config access set", "Config saved" for the first two and nothing for the reset. After it resets, the configuration is unaccessible, except by plugging the GI'V Box into your computer and connecting to it via a terminal emulator. In other words, physically connecting to it. You GI'V box is built.
Detailed instructions for how to configure a this WiFi Nat router as a general extender are at https://github.com/martin-ger/esp_wifi_repeater I particularly want to thank Martin for his elegant coding and vision to perceive such a great device.
Has anybody ever developed a more wonderful and versatile piece of open commerce than the ESP8266 module than Wemos? https://www.wemos.cc/en/latest/d1/d1_mini_pro.html I also have to tank Espressif for designing the wonderful ESP chipsets. Development boards capable of production duty in short run systems and super affordable, be they clones, value added modules or genuine.
I'd also like to thank those who encourage and tolerate my eccentricities, those who think, those who imagine and those who create. You wonderful people here on thingiverse.
Finally, thanks to MakerBot for giving us this space!
WiFiExtender.scad | 2.4KB | |
WiFiExtender.stl | 369.4KB |