====== Wireless Mesh Network with Small and Low Cost Devices ======
===== -- Project Goal =====
The goal of this project is to implement a wireless mesh network that provides connectivity and multimedia services in a geographic area such as a small campus.
===== -- Hardware Requirements =====
Mesh networking performance is directly related to the number of available radio channels. Particularly, a mesh node with one wireless LAN chipset is able to transmit and receive on a single channel. As a result, a wireless mesh network rarely can fully exploit the aggregate bandwidth available in the radio spectrum provisioned by the standards. For a scientific explanation of this problem, please refer to this [[http://www.ecsl.cs.sunysb.edu/multichannel/ | research team page]].
In order to overcome this problem, we implement in this project low cost multi-channel mesh devices consisting of a wireless router with an additional WLAN adapter. A typical equipment list that can be used for implementing the project is presented in the following:
* TP-Link [[http://www.tp-link.com/en/products/details/?model=TL-MR3020#spec | MR3020]] wireless router.
* USB WLAN adapter based on the [[http://www.amazon.com/niceEshop-Wireless-802-11-Adapter-Antenna/dp/B008IZQCGK/ref=pd_bxgy_pc_img_y | Ralink RT5370]] chipset.
* Raspberry Pi [[http://www.element14.com/community/community/raspberry-pi | Model B]].
===== -- Installing the Wireless Nodes =====
Make sure you have the [[http://downloads.openwrt.org/attitude_adjustment/12.09/ar71xx/generic/openwrt-ar71xx-generic-tl-mr3020-v1-squashfs-factory.bin | attitude adjustment]] release of OpenWRT on your TP-LINK MR3020. For more information on how to flash the firmware on your router and take basic control, please refer to [[makerfaire | this article]].
Start by updating the package list and installing the necessary packages for the USB WLAN adapter.
root@MeshNode:~# opkg update
root@MeshNode:~# opkg install kmod-rt2800-lib kmod-rt2800-usb kmod-rt2x00-lib kmod-rt2x00-usb
[{{ :mr3020-wifi-adapter.jpg?nolink&300 | Figure 1. MR3020 with WLAN adapter }}]
Plug the WLAN adapter on the USB port of your routeur and verify that is detected:
root@MeshNode:~# wifi detect
config wifi-device radio2
option type mac80211
option channel 11
option macaddr 00:e0:4c:81:88:8a
option hwmode 11ng
option htmode HT20
list ht_capab GF
list ht_capab SHORT-GI-20
list ht_capab SHORT-GI-40
list ht_capab RX-STBC1
# REMOVE THIS LINE TO ENABLE WIFI:
option disabled 1
config wifi-iface
option device radio2
option network lan
option mode ap
option ssid OpenWrt
option encryption none
Now, copy the detected WiFi modules into the wireless configuration of your MR3020.
root@MeshNode:~# wifi detect > /etc/config/wireless
Your wireless configuration file should be similar to the following:
config wifi-device radio0
option type mac80211
option channel 11
option macaddr f8:d1:11:bd:62:ce
option hwmode 11ng
option htmode HT20
list ht_capab SHORT-GI-20
list ht_capab SHORT-GI-40
list ht_capab RX-STBC1
list ht_capab DSSS_CCK-40
config wifi-iface
option device radio0
option network lan
option mode ap
option ssid OpenWrt1
option encryption none
config wifi-device radio1
option type mac80211
option channel 11
option macaddr 00:e0:4c:81:88:8a
option hwmode 11ng
option htmode HT20
list ht_capab GF
list ht_capab SHORT-GI-20
list ht_capab SHORT-GI-40
list ht_capab RX-STBC1
config wifi-iface
option device radio1
option network lan
option mode ap
option ssid OpenWrt2
option encryption none
Check that both antennas are working:
root@MeshNode:~# wifi up
Configuration file: /var/run/hostapd-phy0.conf
Using interface wlan0 with hwaddr f8:d1:11:bd:62:ce and ssid "OpenWrt1"
Configuration file: /var/run/hostapd-phy1.conf
Using interface wlan1 with hwaddr 00:e0:4c:81:88:8a and ssid "OpenWrt2"
The USB WLAN adapter does not seem to be supported in the latest Barrier Breaker relaease of OpenWRT. Additional packages are installed correctly but the adapter is not detected as a WLAN module.
===== -- Configuring the Wireless Nodes with B.A.T.M.A.N=====
Start by installing the B.A.T.M.A.N package on your router:
root@MeshNode:~# opkg install kmod-batman-adv
Modify your wireless configuration to activate a mesh interface in ad-hoc mode on radio0, an interface in AP mode on radio1, as in the following:
config wifi-device 'radio0'
option type 'mac80211'
option macaddr 'f8:d1:11:bd:62:ce'
option hwmode '11ng'
option htmode 'HT20'
list ht_capab 'SHORT-GI-20'
list ht_capab 'SHORT-GI-40'
list ht_capab 'RX-STBC1'
list ht_capab 'DSSS_CCK-40'
option txpower '27'
option country 'US'
option channel '9'
config wifi-iface 'wmesh'
option device 'radio0'
option mode 'adhoc'
option ssid 'mesh'
option encryption 'none'
option network 'mesh'
option ifname 'adhoc0'
option bssid 'f8:d1:11:bd:62:ce'
config wifi-device 'radio1'
option type 'mac80211'
option channel '5'
option macaddr '00:e0:4c:81:88:8a'
option hwmode '11ng'
option htmode 'HT20'
list ht_capab 'GF'
list ht_capab 'SHORT-GI-20'
list ht_capab 'SHORT-GI-40'
list ht_capab 'RX-STBC1'
config wifi-iface
option device 'radio1'
option mode 'ap'
option ssid 'tinode1'
option encryption 'none'
option network 'tinet'
Due to the compatibility problems of the USB WLAN adapters, it is preferable to configure the corresponding radio interface in AP mode and leave the internal chipset of the MR3020 router in ad-hoc mode.
Use the following network configuration:
config interface 'loopback'
option ifname 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'
config interface 'lan'
option type 'bridge'
option proto 'static'
option ipaddr '192.168.1.66'
option netmask '255.255.255.0'
option gateway '192.168.1.1'
list dns '192.168.1.1'
list dns '8.8.8.8'
option _orig_ifname 'eth0 wlan0 wlan1'
option _orig_bridge 'true'
option ifname 'eth0'
config interface 'mesh'
option ifname 'adhoc0'
option mtu '1528'
option proto 'batadv'
option mesh 'bat0'
config interface tinet
option ifname bat0
option type bridge
option proto static
option ipaddr 11.11.11.1
option netmask 255.255.255.0
Make sure that ''bat0'' interface is declared in ''/etc/config/batman-adv'' as in the following:
config 'mesh' 'bat0'
option 'interfaces' 'mesh'
option 'aggregated_ogms'
option 'ap_isolation'
option 'bonding'
option 'fragmentation'
option 'gw_bandwidth'
option 'gw_mode'
option 'gw_sel_class'
option 'log_level'
option 'orig_interval'
option 'vis_mode'
option 'bridge_loop_avoidance'
Activate the DHCP server on you acces point interface ''tinet'':
config dhcp
option start '100'
option leasetime '12h'
option limit '150'
option interface 'tinet'
Reboot your router, ...