Establishing a Mesh Portal

From OLPC
Revision as of 12:07, 13 April 2007 by 18.85.46.120 (talk) (A few updates)
Jump to: navigation, search

It's not entirely automatic quite yet; we'll get a more automatic solution in place soon.

Requirements

What to do

  • Plug the USB ethernet adapter into the XO
  • Un-gzip and un-tar that somewhere on your mesh portal machine
  • in masquerade.sh from the mpp-utils, change EXTIF to your USB wired interface. If the USB ethernet adapter is plugged in at at boot, this will usually be "eth0".
  • In masquerade.sh, make the following changes (shown here in patch-style form):
    # This line results in iptables: Unknown error 4294967295
-    #$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT
+    $IPTABLES -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT
    $IPTABLES -A FORWARD -i $EXTIF -o $INTIF  -j ACCEPT
    $IPTABLES -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT
-    $IPTABLES -A FORWARD -j LOG
+    #$IPTABLES -A FORWARD -j LOG
  • Stop NetworkManager and the 'network' scripts
chkconfig --level 2345 NetworkManager stop
chkconfig --level 2345 network stop
chkconfig --level 2345 dhcdbd stop
  • Set your init level to '3'; stopping Sugar and X from starting again.
nano /etc/inittab

find the line with:

id:5:initdefault:

and change the '5' to a '3' so it looks like this instead:

id:3:initdefault:
  • reboot
  • Create an ifcfg file for your USB wired interface. For example, if your wired interface is eth0, create /etc/sysconfig/network-scripts/ifcfg-eth0, which should contain:
DEVICE=eth0
ONBOOT=no
BOOTPROTO=dhcp

This file will already exist for 'eth0', but if your USB wired interface is _not_ 'eth0', you need to create this file for whatever interface name your wired USB device is.

  • Start the wired interface
ifup eth0
  • Install the DHCP daemon
yum -y install dhcp

You may have to try this command twice; yum sometimes runs out of memory doing dependency solving, and terminates before actually installing the RPM.

  • Configure DHCP to serve on the mesh interface. Edit /etc/sysconfig/dhcpd so it looks like this:
# Command line options here
DHCPDARGS=msh0
  • Set up DHCP to provide leases on the mesh interface. Edit /etc/dhcpd.conf to look like the following. For the "option domain-name-servers", use the domain name servers that your USB Ethernet device returned via DHCP, which should be found in /etc/resolv.conf. Don't leave "option domain-name-servers with the "x.x.x.x" values. If you only have one DNS server, omit the second value from at line.
subnet 10.0.0.0 netmask 255.255.255.0 {
  range 10.0.0.5 10.0.0.254;
  default-lease-time 3600;
  max-lease-time 7200;
  option subnet-mask 255.255.255.0;
  option broadcast-address 10.0.0.255;
  option routers 10.0.0.1;
  option domain-name-servers x.x.x.x, x.x.x.x;
}
  • Set DHCP to run on startup
chkconfig --level 345 dhcpd on
  • Configure the mesh interface
iwconfig msh0 mode ad-hoc channel 11 essid "olpc-mesh"
  • Assign the address to the mesh interface
ifconfig msh0 10.0.0.1 up
  • run the mpp.py script
python mpp.py

and it should all work

Further Reading

More information is available on these topics: