Difference between revisions of "Mesh/WalkThrough"

From Sudo Room
Jump to navigation Jump to search
(changed order of configuration)
Line 75: Line 75:
  
 
<code>cp settings.js.example settings.js</code>
 
<code>cp settings.js.example settings.js</code>
 +
 +
The default settings in `settings.js` should suffice in most cases, but if you need to make changes, do them in 'settings.js'.
  
 
<code>./makenode.js</code>
 
<code>./makenode.js</code>
Line 87: Line 89:
  
  
Now the configuration wizard will ask you a number of questions, here are what they mean:<br>
+
Now the configuration wizard will ask you a number of questions:<br>
*"enter valid hostname" - this is the host name when you SSH into the node
+
*"enter valid hostname" - this is the host name when you SSH into the node - For info on what constitutes a valid hostname, see: [http://stackoverflow.com/questions/3523028/valid-characters-of-a-hostname valid characters of a hostname]
*"max share upstream bandwidth" - how much of your home network upstream bandwidth you wish to share with the mesh network - eg. 256 kbits
+
*"max share upstream bandwidth" - how much of your home network upstream bandwidth you wish to share with the mesh network, measured in kbps (kilobits per second). So if you'd like to share 10mbps (megabits per second) enter "10000" or if you want to share 256kbps (kilobytes per second) enter "256". You may want to run a [http://www.dslreports.com/speedtest speed test] to find out how much bandwidth you have and determine how much you want to share.
*"max share downstream bandwidth" - how much of your home network upstream bandwidth you wish to share with the mesh network - eg. 512 kbits
+
*"max share downstream bandwidth" - how much of your home network upstream bandwidth you wish to share with the mesh network - eg. "512" would share 512 kbps
 
*"admin user password" - this is the password for for changing wifi settings on the node
 
*"admin user password" - this is the password for for changing wifi settings on the node
*"root user password" - this is the root password for the router
+
*"root user password" - this is the root password for the router - Make sure that your root password is strong! If you don't enter a root password, a strong one will be generated and will be logged to screen. It's generally preferable to not use the root password at all and instead add an ssh key to the device - see details below.
 
*"wifi transmit power" - set this to 23 dBm (which is equivalent to 200 milliwatts)
 
*"wifi transmit power" - set this to 23 dBm (which is equivalent to 200 milliwatts)
 
*"operator name" - this is the name that the network admins can associate with the node - so use a unique name like your first name or location name
 
*"operator name" - this is the name that the network admins can associate with the node - so use a unique name like your first name or location name
 
*"private wifi SSID" - this is the wireless SSID name for the private wireless network that will run on this router
 
*"private wifi SSID" - this is the wireless SSID name for the private wireless network that will run on this router
*"private wifi password" - this is the password for the private wireless network that will run on this router
+
*"private wifi password" - this is the password for the private wireless network that will run on this router - it must be at least 8 characters long
  
  
Line 110: Line 112:
 
It will ask you for a password, which is "meshtheplanet"
 
It will ask you for a password, which is "meshtheplanet"
  
 +
If you'd like to add your ssh key to the router (instead of using a root password), add it to the `configs/authorized_keys` file. You'll see that there are 3 other keys there for our developers. You can remove them if you'd like, but they're currently the only way we can provide remote support. During the alpha test phase we ask that you consider whether you are able to do diagnostics/debugging yourself before you remove them.
  
 
 
 
 
Then you need to install nodejs/npm packages:
 
 
 
The default settings in `settings.js` should suffice in most cases, but if you need to make changes, do them there.
 
 
If you'd like to add your ssh key to the router, add it to the `configs/authorized_keys` file. You'll see that there are 3 other keys there for our developers. You can remove them if you'd like, but they're currently the only way we can provide remote support. During the alpha test phase we ask that you consider whether you are able to do diagnostics/debugging yourself before you remove them.
 
 
==Running==
 
You should now be able to run makenode:
 
<code>$ ./makenode.js</code>
 
 
Makenode will detect the hardware on the router and ask you to input some data about the node. Some notes:
 
* Set the "txpower" to 20. This should be set in the code, but hasn't been just yet.
 
* The password for the private ssid should be at least 8 characters or you will not be able to connect
 
* For info on what constitutes a valid hostname, see: [http://stackoverflow.com/questions/3523028/valid-characters-of-a-hostname valid characters of a hostname]
 
* The max downstream and upstream bandwidth are the maximum amount of bandwidth you want to share on the "peoplesopen.net" network. They are measured in kbps (kilobits per second), so if you'd like to share 10mbps (megabits per second), enter 10000. You may want to run a [http://www.dslreports.com/speedtest speed test] to find out how much bandwidth you have and determine how much you want to share.
 
* Make sure that your root password is strong! If you don't enter a root password, a strong one will be generated and will be logged to screen. It's generally preferable to not use the root password at all and instead add an ssh key to the device.
 
  
 
==What now?==
 
==What now?==

Revision as of 19:52, 21 March 2016

This a walkthrough for flashing a node with the sudomesh firmware and then configuring it with makenode. At the end of the walkthrough, you'll be able to plug in your router and join the mesh. The walkthrough assumes you're using a linux-ish (OSX should mostly work) OS and that you have basic knowledge of the terminal. The basic idea of getting a node (router) on the mesh consists of flashing (copying files to flash memory) an operating system to the node and then using a software configurator finish setup .

To build an OpenWRT image from scratch, visit this How To: Mesh/Build An OpenWRT Image

Preparing Your Laptop

The directions that follow assume you are runing a linux-ish distro (OSX should work). Many of the quoted commands listed below may need `sudo` prepended to them. For the moment, Windows users will have to figure out some of these steps on their own. Sorry :/

If you are working with a fresh installation of Ubuntu linux, you will need to install a few pieces of software. Do install them, open your terminal and type the following:

sudo apt-get install nodejs

sudo apt-get install git

sudo apt-get install npm

sudo apt-get install dropbear


Install OpenWRT on your Router

Download the Sudomesh OpenWRT Image File For a Supported Router

Sudomesh firmware images can be found here: https://builds.sudomesh.org/builds/chaos_calmer/ar71xx/

At the moment, we are supporting the following routers for home nodes:

Download the image file for your supported router.

Flash your Router with OpenWRT

There are different techniques for flashing each of the routers. Use the links above to the openwrt wiki and follow the instructions there to flash the router with the firmware you've downloaded.

For example, if you have a Western Digital MyNet N600, follow these instructions:
With the router plugged in and off, push a pin into the reset hole and hold it.
With the pin held down, turn on the router power button.
Watch the front blue light - they will flash on and off a few times.
Once the front blue is flashing, you can let go of the pin.
Plug one end of the Ethernet cable into your laptop.
Plug the other end of the Ethernet cable into one of the normal ports on the router (not the Internet/WAN port).

On your laptop (instructions for ubuntu) edit your network settings by doing the following:
Click on the network icon on the top right of the toolbar.
Click "Edit connections..."
Click on Ethernet connection "Wired connection 1" and click Edit
Click on the "IPv4 Settings" tab
Change method to "Manual"
Click Add
Under "Address" type "192.168.1.10"
Under "Netmask" type "255.255.255.0"
Under "Gateway" type "0.0.0.0"
Click Save
Click Close

In your Linux web browser:
Go to "192.168.1.1"
Click Browse and select the firmware you downloaded
Click Install


Configuring Your OpenWRT Router to Work on the Sudomesh Network

These are the steps for configuring your newly flashed router. It will retrieve hardware information about the node, prompt you for a few config settings, and then query the meshnode database to get an available IP address and subnet.

Open your terminal in Linux and type:

git clone https://github.com/sudomesh/makenode.git

cd makenode

npm install

cp settings.js.example settings.js

The default settings in `settings.js` should suffice in most cases, but if you need to make changes, do them in 'settings.js'.

./makenode.js


if you get the error "no such file or directory":
open a new terminal
sudo ln -s nodejs node (this will point node to nodejs)
npm install
./makenode.js


Now the configuration wizard will ask you a number of questions:

  • "enter valid hostname" - this is the host name when you SSH into the node - For info on what constitutes a valid hostname, see: valid characters of a hostname
  • "max share upstream bandwidth" - how much of your home network upstream bandwidth you wish to share with the mesh network, measured in kbps (kilobits per second). So if you'd like to share 10mbps (megabits per second) enter "10000" or if you want to share 256kbps (kilobytes per second) enter "256". You may want to run a speed test to find out how much bandwidth you have and determine how much you want to share.
  • "max share downstream bandwidth" - how much of your home network upstream bandwidth you wish to share with the mesh network - eg. "512" would share 512 kbps
  • "admin user password" - this is the password for for changing wifi settings on the node
  • "root user password" - this is the root password for the router - Make sure that your root password is strong! If you don't enter a root password, a strong one will be generated and will be logged to screen. It's generally preferable to not use the root password at all and instead add an ssh key to the device - see details below.
  • "wifi transmit power" - set this to 23 dBm (which is equivalent to 200 milliwatts)
  • "operator name" - this is the name that the network admins can associate with the node - so use a unique name like your first name or location name
  • "private wifi SSID" - this is the wireless SSID name for the private wireless network that will run on this router
  • "private wifi password" - this is the password for the private wireless network that will run on this router - it must be at least 8 characters long


In a separate terminal you will log into the node using these directions:
To find the name of your ethernet port, type:
ifconfig
In the example below, the wired Ethernet port was "eth0"
In the terminal type the following, replacing "eth0" with the name of your Ethernet port:
sudo ip addr add 172.22.0.9/24 dev eth0

Then type:
ssh root@172.22.0.1
It will ask you for a password, which is "meshtheplanet"

If you'd like to add your ssh key to the router (instead of using a root password), add it to the `configs/authorized_keys` file. You'll see that there are 3 other keys there for our developers. You can remove them if you'd like, but they're currently the only way we can provide remote support. During the alpha test phase we ask that you consider whether you are able to do diagnostics/debugging yourself before you remove them.


What now?

If configuration proceeded correctly, you should see the 'peoplesopen.net' and 'pplsopen.net-node2node' wifi interfaces when running `sudo iwlist wlan0 scan` or when looking at available wifi networks.

It's recommended that you read the Home node info to find out more about the way that your new mesh node works.