diff --git a/ffs-set-segment/Makefile b/ffs-set-segment/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..5a916bf1ec5d38b53b60d447670997715d6d69c4
--- /dev/null
+++ b/ffs-set-segment/Makefile
@@ -0,0 +1,38 @@
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=ffs-set-segment-patches
+PKG_VERSION:=1
+
+PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
+
+include $(GLUONDIR)/include/package.mk
+
+PKG_CONFIG_DEPENDS += $(GLUON_I18N_CONFIG)
+
+
+define Package/ffs-set-segment-patches
+  SECTION:=gluon
+  CATEGORY:=Gluon
+  TITLE:=Patch files for setting correct segment
+endef
+
+define Build/Prepare
+	mkdir -p $(PKG_BUILD_DIR)
+endef
+
+define Build/Configure
+endef
+
+define Build/Compile
+endef
+
+define Package/ffs-set-segment-patches/install
+	$(INSTALL_DIR) $(1)/etc/init.d
+	$(INSTALL_BIN) ./files/etc/init.d/ffs-set-segment $(1)/etc/init.d/ffs-set-segment
+	$(INSTALL_DIR) $(1)/usr/sbin
+	$(INSTALL_BIN) ./files/usr/sbin/ffs-set-segment $(1)/usr/sbin/ffs-set-segment
+	$(INSTALL_DIR) $(1)/usr/lib/micron.d
+	$(INSTALL_BIN) ./files/usr/lib/micron.d/ffs-set-segment $(1)/usr/lib/micron.d/ffs-set-segment
+endef
+
+$(eval $(call BuildPackage,ffs-set-segment-patches))
diff --git a/ffs-set-segment/files/etc/init.d/ffs-set-segment b/ffs-set-segment/files/etc/init.d/ffs-set-segment
new file mode 100644
index 0000000000000000000000000000000000000000..d49e3b624de7770f47e45bb160b0eebfabb9626f
--- /dev/null
+++ b/ffs-set-segment/files/etc/init.d/ffs-set-segment
@@ -0,0 +1,15 @@
+#!/bin/sh /etc/rc.common
+
+START=97
+
+start () {
+    uci set fastd.mesh_vpn.on_connect='/usr/sbin/ffs-set-segment'
+    uci set fastd.mesh_vpn_backbone.auto_segment='1'
+    /usr/sbin/ffs-set-segment
+    /etc/init.d/micrond enable
+    /etc/init.d/micrond restart    
+}
+
+stop() {
+    true
+}
diff --git a/ffs-set-segment/files/usr/lib/micron.d/ffs-set-segment b/ffs-set-segment/files/usr/lib/micron.d/ffs-set-segment
new file mode 100644
index 0000000000000000000000000000000000000000..b18ef124cc452895552d2469bc68d04a9631b26a
--- /dev/null
+++ b/ffs-set-segment/files/usr/lib/micron.d/ffs-set-segment
@@ -0,0 +1 @@
+* * * * * /usr/sbin/ffs-set-segment
diff --git a/ffs-set-segment/files/usr/sbin/ffs-set-segment b/ffs-set-segment/files/usr/sbin/ffs-set-segment
new file mode 100644
index 0000000000000000000000000000000000000000..17b69ac93709e547bfc058bdda7060e183636dd0
--- /dev/null
+++ b/ffs-set-segment/files/usr/sbin/ffs-set-segment
@@ -0,0 +1,48 @@
+#!/bin/sh
+if [  $(ps | grep -c "{$(basename $0)}") -gt 4 ]; then
+    echo started twice
+    exit 1
+fi
+
+if [  $(ps | grep -c "fastd") -lt 2 ]; then
+    echo fastd not running
+    exit 1
+fi
+
+if [ "$(uci get fastd.mesh_vpn_backbone.auto_segment)" = "0" ]; then
+    echo auto_segment disabled
+    exit 1
+fi 
+
+NODEID=`uci get network.bat0.macaddr`
+for i in `seq 1 5`;
+do
+    NODEID=${NODEID/\:/}
+done
+NODEID=ffs-$NODEID
+SEGMENT=`nslookup $NODEID.configserver.selfhosted.de  [::1]:54 |tail -n1 `
+if [[ -z "${SEGMENT// }" ]]; then
+    echo Node not known
+    exit 1
+fi
+SEGMENT=${SEGMENT/Address 1: 2001:2::/}
+let PORT=SEGMENT+10040
+SEGNUM=$(printf "%02d" $SEGMENT)
+
+CHANGED=0
+for i in `seq 1 10`;
+do
+    GW=$(printf "gw%02d" $i)
+    OLDPEER=`uci get fastd.mesh_vpn_backbone_peer_$GW.remote`
+    NEWPEER="\"${GW}s$SEGNUM.freifunk-stuttgart.de\" port $PORT"
+
+    if [ "$NEWPEER" != "$OLDPEER" ]; then
+        uci set fastd.mesh_vpn_backbone_peer_$GW.remote="$NEWPEER"
+        CHANGED=1
+    fi
+done
+
+if [ "$CHANGED" = "1" ]; then
+    /etc/init.d/fastd restart
+    echo Segment set to $SEGNUM
+fi
diff --git a/ffs-set-segment/ipkg/postinst b/ffs-set-segment/ipkg/postinst
new file mode 100644
index 0000000000000000000000000000000000000000..e1b99deb70a89afd525bd96b3fd6d4904bc2d2cb
--- /dev/null
+++ b/ffs-set-segment/ipkg/postinst
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+/etc/init.d/ffs-set-segment enable