Quick links :
Home - Part 1 - Part 2 - Part 3 - Resources
Part 2 - WiFi Gateway - WiFi Bridge
This section of the workshop will enable your gateway to connect to your home/office network via WiFi and route mesh traffic over the WiFi connection instead of using an Ethernet connection, which was setup in part 1.
You need to have a supported USB WiFi dongle to add a second WiFi interface to the Raspberry Pi. Some USB WiFi dongles need additional drivers to be installed before working with a Raspberry Pi - check the manufacturer website or other community support sites if you need help.
The configuration presented will use wlan0 as the mesh WiFi interface and wlan1 as the home/office WiFi interface.
When you connect a WiFi dongle it is often assigned wlan0, then the internal WiFi becomes wlan1. If you need the USB WiFi dongle to be the interface to connect to the home/office network then you should replace wlan0 with wlan 1 in all the previous configuration completed in part 1 and switch wlan0 and wlan1 in the following configuration.
To connect to a WiFi network the raspberry pi uses a configuration file /etc/wpa_supplicant/wpa_supplicant.conf.
-
Edit /etc/wpa_supplicant/wpa_supplicant.conf as root user and change the content to be similar to the following, noting the comments below:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 country=GB network={ ssid="network name" scan_ssid=1 psk="password" }
- leave the country code as you set with the raspi-config (which should be the country you are located in). If you need to lookup the correct country code, the a list of the ISO 3166 country codes are here - select the Alpha-2 column for valid codes.
- set the network name to be the name of the network you want to join
- set the password to the network password you want to join
The rules in file start-batman-adv.sh need to be updated to route traffic to the wlan1 interface rather than the eth0 interface.
-
Edit file ~/start-batman-adv.sh and set the content to:
#!/bin/bash # batman-adv interface to use sudo batctl if add wlan0 sudo ifconfig bat0 mtu 1468 # Tell batman-adv this is an internet gateway sudo batctl gw_mode server # Enable port forwarding between eth0 and bat0 sudo sysctl -w net.ipv4.ip_forward=1 sudo iptables -t nat -A POSTROUTING -o wlan1 -j MASQUERADE sudo iptables -A FORWARD -i wlan1 -o bat0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -i bat0 -o wlan1 -j ACCEPT # Activates the interfaces for batman-adv sudo ifconfig wlan0 up sudo ifconfig bat0 up # bat0 is created via the first command sudo ifconfig bat0 192.168.199.1/24
-
Shutdown the gateway raspberry pi with command
sudo shutdown -h now
. Wait for the pi to shutdown then remove the power cable -
Inset the WiFi USB dongle
-
Reconnect the power to the Raspberry Pi and wait for it to boot.
-
Connect to the pi via ssh
-
Run command
ifconfig
and check you can see both wlan0 and wlan1 interfaces. -
Run command
iwconfig
and check you see something similar to:wlan0 IEEE 802.11 ESSID:"bi-raspi-mesh" Mode:Ad-Hoc Frequency:2.462 GHz Cell: B2:7A:83:D4:C2:B9 Tx-Power=31 dBm Retry short limit:7 RTS thr:off Fragment thr:off Power Management:on lo no wireless extensions. wlan1 IEEE 802.11 ESSID:"INNES" Mode:Managed Frequency:2.437 GHz Access Point: 00:23:6C:BF:51:47 Bit Rate=39 Mb/s Tx-Power=31 dBm Retry short limit:7 RTS thr:off Fragment thr:off Power Management:on Link Quality=44/70 Signal level=-66 dBm Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:149 Invalid misc:0 Missed beacon:0 bat0 no wireless extensions. eth0 no wireless extensions.
noticing:
- wlan0 is in Ad-Hoc mode and has the mesh network ESSID
- wlan1 is in Managed mode and is connected to your home/office network ESSID (which you entered in wpa_supplicant)
-
Check the mesh configuration is still OK, as you did in part 1 with commands
sudo batctl if
andsudo batctl n
-
From your gateway raspberry pi, ssh to another node on the mesh (or connect your laptop to the bridged node) and on a command line on the mesh node enter command
ping www.ibm.com -c 5
to verify that routing to the internet and back is working correctly.
You now have your gateway working using a WiFi connection to your home/office network. Proceed to the next section if you want to enable an access point to allow devices to connect to the mesh network via WiFi. If you don't need to WiFi enable a bridge node then you can move to part 3
Quick links :
Part 2 - WiFi Gateway - WiFi Bridge
Home - Part 1 - Part 2 - Part 3 - Resources**