JAR4x4
Posts: 4
Joined: Fri Oct 28, 2016 6:27 pm

Raspberry GoPro bridge / repeater

Tue Jun 27, 2017 6:24 pm

Hello,

I'm trying to setup my Rpi2 as an repeater for my GoPro camera. The camera works as an AP and has IP 10.5.5.9, connected clients gets IP 10.5.5.1xx via the GoPro's DHCP server. I have setup my Rpi so that it connects to the GoPro via wlan1 and wlan0 acts as new AP so that i can connect clients. I have got this working by using this script:

Code: Select all

#!/bin/bash -e


#Reference:
#http://www.maketecheasier.com/set-up-raspberry-pi-as-wireless-access-point/
#http://www.daveconroy.com/turn-your-raspberry-pi-into-a-wifi-hotspot-with-edimax-nano-usb-ew-7811un-rtl8188cus-chipset/

#Install raspbian and boot pi with ethernet and two rtl8188cus wifi cards

#REMOVE JUNK AND UPDATE

#sudo apt-get purge wolfram-engine
#sudo apt-get update
#sudo apt-get upgrade
#sudo apt-get dist-upgrade
#sudo raspi-config
#echo Set the timezone and GPU memory to 16.
#sudo rpi-update
#sudo reboot

#ADD EDUROAM (REQUIRES VALID LOGIN)

sudo mv /etc/wpa_supplicant/wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant.conf.bak
cat <<EOF | sudo tee /etc/wpa_supplicant/wpa_supplicant.conf > /dev/null
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
  ssid="JAR-GOPRO"
  psk="xxxxx"
  key_mgmt=WPA-PSK
}
EOF
sudo chmod 600 /etc/wpa_supplicant/wpa_supplicant.conf

#ADD EDUROAM CERTIFICATE



#CONFIGURE THE TWO WIFI NETWORKS (LEAVING WIRED FOR DEBUGGING)

sudo mv /etc/network/interfaces /etc/network/interfaces.bak
cat <<EOF | sudo tee /etc/network/interfaces > /dev/null
auto lo
iface lo inet loopback

auto eth0
allow-hotplug eth0
iface eth0 inet manual

#auto wlan0
allow-hotplug wlan0
#iface wlan0 inet manual
#wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
iface wlan0 inet static
address 192.168.42.1
netmask 255.255.255.0

auto wlan1
allow-hotplug wlan1
iface wlan1 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

pre-up iptables-restore < /etc/iptables.ipv4.nat

EOF

#INSTALL THE DHCP SERVER AND CONFIGURE IT

sudo apt-get install isc-dhcp-server || true

sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak
sudo sed -i: 's/^option domain-name/#option domain-name/g' /etc/dhcp/dhcpd.conf
sudo sed -i: 's/^#authoritative;/authoritative;/g' /etc/dhcp/dhcpd.conf

cat <<EOF | sudo tee -a /etc/dhcp/dhcpd.conf > /dev/null
subnet 192.168.42.0 netmask 255.255.255.0 {
range 192.168.42.10 192.168.42.50;
option broadcast-address 192.168.42.255;
option routers 192.168.42.1;
default-lease-time 600;
max-lease-time 7200;
option domain-name "local";
option domain-name-servers 8.8.8.8, 8.8.4.4;
}
EOF

sudo sed -i: 's/^INTERFACES=""/INTERFACES="wlan0"/g' /etc/default/isc-dhcp-server

#INSTALL HOSTAPD AND REPLACE WITH ALTERNATIVE FOR rtl8188cus

sudo apt-get install hostapd



cat <<EOF | sudo tee -a /etc/hostapd/hostapd.conf > /dev/null
interface=wlan0
driver=nl80211
#driver=rtl871xdrv
ssid=GoProRepeater
hw_mode=g
channel=6
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=1
wpa_passphrase=xxxxx
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP CCMP
rsn_pairwise=TKIP CCMP
wpa_ptk_rekey=600
#ieee80211n=0
ieee8021x=0
eap_server=0
EOF

sudo sed -i: 's|^#DAEMON_CONF=""|DAEMON_CONF="/etc/hostapd/hostapd.conf"|g' /etc/default/hostapd

#ENABLE FORWARDING AND CONFIGURE IPTABLES

sudo sed -i: 's/^#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
sudo iptables -t nat -A POSTROUTING -o wlan1 -j MASQUERADE
sudo iptables -A FORWARD -i wlan1 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o wlan1 -j ACCEPT
sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

echo Power off, unplug ethernet cable, cross your fingers, power on.
When using this setup I'm able to ping the GoPro at 10.5.5.9 from client connected to the Rpi's wlan0. My problem is udp and tcp ports. I need to be able to communicate on UDP port 8554 and use TCP port 9 to power the camera via a magic packet and WoL.

I assume I have to use iptables? But I have no idea on how.

Best regards
Alex

Return to “Networking and servers”