====== 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, ...