====== Mesh RPi ====== This article describes the needed modifications for PirateBox RPi image **1.1.3** to get a similar setup like on OpenWrt. Similar setup means a bridged network between AP and Mesh. **Note:** Due to kernel incompatibilities of BATMAN-advanced betweeen OpenWrt and RPi, both Systems can not talk to each other. Requirements: - 2nd wifi card for mesh only - some time ;) All the scripts will be executed on the Pi. The configuration consists of the following steps: - Setup a software bridge - Reconfigure PirateBox to make use use of the bridge interface - Enable IPv6 configuration for PirateBox - Create Mesh setup script & make it bootable - Configure Avahi to announce PirateBox ===== Prereq. ===== Check the internet is working and sudo is active: sudo touch /tmp/sudo_test sudo rm /etc/resolv.conf sudo sh -c 'echo "nameserver 8.8.8.8" > /etc/resolv.conf' dig google.de | grep -q -e 192.168.77.1 && echo "error, Internet is not working!" ===== Software bridge ===== Create the network configuration file for the bridge: cat < piratebox_bridge Description="General bridge interface for PirateBox" Connection=bridge Interface=br-lan BindsToInterfaces=() ForceConnect=yes #Enabling DHCP stuff SkipForwardingDelay=yes IP=static Address=(192.168.77.1/24) EOF sudo mv piratebox_bridge /etc/netctl/ sudo netctl enable piratebox_bridge sudo netctl start piratebox_bridge ===== Reconfigure PirateBox ===== sudo sed -i -e 's|DO_IFCONFIG="yes"|DO_IFCONFIG="no"|' \ -e 's|DO_BRIDGE="no"|DO_BRIDGE="yes"|' \ -e 's|DNSMASQ_INTERFACE="wlan0"|DNSMASQ_INTERFACE="br-lan"|' \ /opt/piratebox/conf/piratebox.conf Edit piratebox.service file for system dependencies sudo nano /etc/systemd/system/piratebox.service The top of the file needs to look like this: [Unit] Description=PirateBox Service PartOf=netctl@piratebox_bridge.service ===== IPv6 Setup ===== Let's start with fixes on PirateBox 1.1.3 sudo sed -i -e 's| radvd|/usr/bin/radvd|g' /opt/piratebox/init.d/piratebox_alt Do the following commands.. PREFIX="fdc0:ffea" FIXED=$(hexdump -n8 -e '/2 ":%03x" ' /dev/random ) V6_GEN_RESULT="$PREFIX:$FIXED" prefix=` ipv6.netctl sudo sh -c 'cat ipv6.netctl >> /etc/netctl/piratebox_bridge' echo " OK. Please note the following infos: Generated node name: $work_hostname Generated IPv6: $V6_GEN_RESULT Prefix: /64 " ===== Mesh config script ===== This step assumes, that you have a working network connection and the wifi adapter for mesh is the 2nd (phy1). sudo sh -c 'echo "br_netfilter" > /etc/modules-load.d/netfilter.conf' sudo modprobe br_netfilter sudo pacman -Sy --noconfirm batctl wget https://github.com/PirateBox-Dev/PirateBox-Mesh/releases/download/1.1.4/piratebox-mesh_1.1.4_all_NON_WRT.sh chmod a+x piratebox-mesh_1.1.4_all_NON_WRT.sh sudo mv piratebox-mesh_1.1.4_all_NON_WRT.sh /bin/piratebox-mesh.sh sudo sed -i -e 's|phy0|phy1|g' \ -e 's|MESH_CHANNEL=0|MESH_CHANNEL=6|' \ -e 's|EXCHANGE_MAC="yes"|EXCHANGE_MAC="no"|' \ /bin/piratebox-mesh.sh Create a start/stop script: cat < ~/mesh.service [Unit] Description=PirateBox Mesh Service PartOf=netctl@piratebox_bridge.service [Service] Type=idle RemainAfterExit=yes ExecStart=/bin/piratebox-mesh.sh start ExecStop=/bin/piratebox-mesh.sh stop [Install] WantedBy=multi-user.target EOF sudo mv ~/mesh.service /etc/systemd/system sudo systemctl daemon-reload sudo systemctl start mesh.service sudo systemctl enable mesh.service ===== AVAHI ===== sudo mv /etc/avahi /etc/avahi.old sudo ln -s /opt/piratebox/conf/avahi/ /etc/avahi sudo systemctl start avahi-daemon sudo systemctl enable avahi-daemon ===== Finalize ===== At the end you should do a reboot sudo reboot