diff --git a/src/packages/fff/fff-config/files/etc/uci-defaults/10-setup-fff b/src/packages/fff/fff-config/files/etc/uci-defaults/10-setup-fff
index 3014f50d..a63ff6a9 100644
--- a/src/packages/fff/fff-config/files/etc/uci-defaults/10-setup-fff
+++ b/src/packages/fff/fff-config/files/etc/uci-defaults/10-setup-fff
@@ -11,4 +11,7 @@ if ! uci -q get fff.system > /dev/null ; then
 	uci set "fff.system.hostname=FFF"
 fi
 
+uci set fff.ui=fff
+uci -q get fff.ui.portsetup > /dev/null || uci set "fff.ui.portsetup=default"
+
 uci commit fff
diff --git a/src/packages/fff/fff-network/files/etc/uci-defaults/22b-config-ports b/src/packages/fff/fff-network/files/etc/uci-defaults/22b-config-ports
index b8eaceab..e2887228 100644
--- a/src/packages/fff/fff-network/files/etc/uci-defaults/22b-config-ports
+++ b/src/packages/fff/fff-network/files/etc/uci-defaults/22b-config-ports
@@ -21,11 +21,13 @@ case "$BOARD" in
 		# Default: LAN0: WAN, LAN1: CLIENT
 		setupSwitch "eth0" "0t 4" "0t" "0t 5"
 		setupWan "eth0.2"
+		uci set "fff.ui.portsetup=cpev1"
 		;;
 	gl-ar150)
 		# Default: CLIENT
 		setupSwitch "eth1" "0t 1" "0t"
 		setupWan "eth0"
+		uci set "fff.ui.portsetup=2ndport"
 		;;
 	tl-wdr3500-v1|\
 	tl-wr741nd-v2|\
@@ -85,5 +87,6 @@ case "$BOARD" in
 	ubnt-unifiac-lite|\
 	ubnt-unifiac-mesh)
 		setupOnePort "eth0" "CLIENT"
+		uci set "fff.ui.portsetup=oneport"
 		;;
 esac
diff --git a/src/packages/fff/fff-network/files/usr/sbin/set2ndport b/src/packages/fff/fff-network/files/usr/sbin/set2ndport
new file mode 100755
index 00000000..13a7d1a6
--- /dev/null
+++ b/src/packages/fff/fff-network/files/usr/sbin/set2ndport
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+# This sets the port mode on second port without switch
+
+if ! [ "$(uci -q get fff.ui.portsetup)" = "2ndport" ] ; then
+	echo "Wrong device. This is for two-port devices without switch only!"
+	exit 1
+fi
+
+LAN0MODE=$1
+
+CLIENT_PORTS="0t"
+BATMAN_PORTS="0t"
+
+if [ "$LAN0MODE" = "CLIENT" ] ; then
+	CLIENT_PORTS="$CLIENT_PORTS 1"
+elif [ "$LAN0MODE" = "BATMAN" ] ; then
+	BATMAN_PORTS="$BATMAN_PORTS 1"
+else
+	echo "Wrong port mode. Choose one of: CLIENT, BATMAN"
+	exit 1
+fi
+
+uci set "network.eth1_1.ports=$CLIENT_PORTS"
+uci set "network.eth1_3.ports=$BATMAN_PORTS"
+uci commit network
+
+/etc/init.d/network restart
+
+echo "Port updated successfully."
diff --git a/src/packages/fff/fff-network/files/usr/sbin/setcpev1 b/src/packages/fff/fff-network/files/usr/sbin/setcpev1
new file mode 100755
index 00000000..c1498441
--- /dev/null
+++ b/src/packages/fff/fff-network/files/usr/sbin/setcpev1
@@ -0,0 +1,46 @@
+#!/bin/sh
+
+# This sets the port mode on CPE210 v1 and CPE510 v1
+
+if ! [ "$(uci -q get fff.ui.portsetup)" = "cpev1" ] ; then
+	echo "Wrong device. This is for CPE210 v1 or CPE510 v1 only!"
+	exit 1
+fi
+
+LAN0MODE=$1
+LAN1MODE=$2
+
+CLIENT_PORTS="0t"
+WAN_PORTS="0t"
+BATMAN_PORTS="0t"
+
+if [ "$LAN0MODE" = "WAN" ] ; then
+	WAN_PORTS="$WAN_PORTS 5"
+elif [ "$LAN0MODE" = "CLIENT" ] ; then
+	CLIENT_PORTS="$CLIENT_PORTS 5"
+elif [ "$LAN0MODE" = "BATMAN" ] ; then
+	BATMAN_PORTS="$BATMAN_PORTS 5"
+else
+	echo "Wrong port mode for 1st port. Choose one of: WAN, CLIENT, BATMAN"
+	exit 1
+fi
+
+if [ "$LAN1MODE" = "WAN" ] ; then
+	WAN_PORTS="$WAN_PORTS 4"
+elif [ "$LAN1MODE" = "CLIENT" ] ; then
+	CLIENT_PORTS="$CLIENT_PORTS 4"
+elif [ "$LAN1MODE" = "BATMAN" ] ; then
+	BATMAN_PORTS="$BATMAN_PORTS 4"
+else
+	echo "Wrong port mode for 2nd port. Choose one of: WAN, CLIENT, BATMAN"
+	exit 1
+fi
+
+uci set "network.eth0_1.ports=$CLIENT_PORTS"
+uci set "network.eth0_2.ports=$WAN_PORTS"
+uci set "network.eth0_3.ports=$BATMAN_PORTS"
+uci commit network
+
+/etc/init.d/network restart
+
+echo "Ports updated successfully."
diff --git a/src/packages/fff/fff-network/files/usr/sbin/setoneport b/src/packages/fff/fff-network/files/usr/sbin/setoneport
new file mode 100755
index 00000000..6812bf17
--- /dev/null
+++ b/src/packages/fff/fff-network/files/usr/sbin/setoneport
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+# This sets the port mode on one-port devices
+
+if ! [ "$(uci -q get fff.ui.portsetup)" = "oneport" ] ; then
+	echo "Wrong device. This is for one-port devices only!"
+	exit 1
+fi
+
+. /lib/functions/fff/networksetup
+
+ETHMODE=$1
+
+if [ "$ETHMODE" = "WAN" ] || [ "$ETHMODE" = "CLIENT" ] || [ "$ETHMODE" = "BATMAN" ]; then
+	setupOnePort "eth0" "$ETHMODE"
+	/etc/init.d/network restart
+	echo "Port updated successfully."
+else
+	echo "Wrong port mode. Choose one of: WAN, CLIENT, BATMAN"
+	exit 1
+fi
diff --git a/src/packages/fff/fff-support/Makefile b/src/packages/fff/fff-support/Makefile
index 56e35740..2fc74b0c 100644
--- a/src/packages/fff/fff-support/Makefile
+++ b/src/packages/fff/fff-support/Makefile
@@ -1,7 +1,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=fff-support
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
 
diff --git a/src/packages/fff/fff-support/files/etc/uci-defaults/90-firstbootfff b/src/packages/fff/fff-support/files/etc/uci-defaults/90-firstbootfff
new file mode 100644
index 00000000..30c5ab12
--- /dev/null
+++ b/src/packages/fff/fff-support/files/etc/uci-defaults/90-firstbootfff
@@ -0,0 +1,13 @@
+#!/bin/sh
+# Copyright 2019 Adrian Schmutzler
+# License GPLv3
+
+LOCALUPGRADESCRIPT="/etc/firstbootfff"
+
+#add LOCALUPGRADESCRIPT to sysupgrade
+grep -q ^"${LOCALUPGRADESCRIPT}"$ /etc/sysupgrade.conf || echo "$LOCALUPGRADESCRIPT" >> /etc/sysupgrade.conf
+
+# process user commands
+[ -s "$LOCALCONFIGSCRIPT" ] && {
+	sh /etc/firstbootfff
+}
diff --git a/src/packages/fff/fff-support/files/usr/sbin/show_info b/src/packages/fff/fff-support/files/usr/sbin/show_info
index d7ec8247..fb7f7d25 100755
--- a/src/packages/fff/fff-support/files/usr/sbin/show_info
+++ b/src/packages/fff/fff-support/files/usr/sbin/show_info
@@ -3,6 +3,7 @@
 . /etc/firmware_release
 . /lib/functions/fff/evalhoodinfo
 . /lib/functions/fff/evalbytes
+. /lib/functions/fff/portorder
 . /lib/functions.sh # required for config_load and config_foreach
 
 board_name=$(uci -q get board.model.name)
@@ -187,13 +188,9 @@ fi
 echo "Download-Limit: $(uci -q get 'simple-tc.example.limit_ingress') kBit/s"
 echo "Upload-Limit: $(uci -q get 'simple-tc.example.limit_egress') kBit/s"
 
-if grep -q 'PORTORDER=' /etc/network.$board_name ; then
-	portorder=$(awk -F= '/PORTORDER=/ { print $2 }' /etc/network.$board_name | sed "s/\"//g")
-fi
-
 echo ""
 if swconfig list | grep -q switch0 ; then
-	if [ -n "$portorder" ] ; then
+	if [ -n "$PORTORDER" ] ; then
 		echo "-> SWITCH (tatsaechliche Portreihenfolge)"
 	else
 		echo "-> SWITCH (interne logische Portreihenfolge)"
@@ -218,7 +215,7 @@ if swconfig list | grep -q switch0 ; then
 		printf '%-10s%-5s%-13s%s\n' "WAN-Port: " "${link} " "- WAN " "@ $speed"
 	fi
 
-	for internalport in $portorder
+	for internalport in $PORTORDER
 	do
 		line=$(swconfig dev switch0 port "$internalport" show | tr -d '\n' | tr -d '\t')
 		port=$(echo "$line" | sed 's/.* port:\([^ ]*\) .*/\1/')
@@ -230,9 +227,7 @@ if swconfig list | grep -q switch0 ; then
 	swconfig dev switch0 show | grep "\t*link:" | while read line ; do
 		line=$(echo "$line" | tr -d '\n' | tr -d '\t')
 		port=$(echo "$line" | sed 's/.* port:\([^ ]*\) .*/\1/')
-		if echo "$portorder" | grep -q "$port" ; then
-			continue
-		fi
+		echo "$PORTORDER" | grep -q "$port" && continue
 		printf '%-10s' "Port #${port}: "
 		format_port "${line}"
 	done
diff --git a/src/packages/fff/fff-sysupgrade/Makefile b/src/packages/fff/fff-sysupgrade/Makefile
index 0e6c08ec..0f2e6a1e 100644
--- a/src/packages/fff/fff-sysupgrade/Makefile
+++ b/src/packages/fff/fff-sysupgrade/Makefile
@@ -1,7 +1,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=fff-sysupgrade
-PKG_RELEASE:=10
+PKG_RELEASE:=11
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
 
diff --git a/src/packages/fff/fff-sysupgrade/files/etc/uci-defaults/99-fff-sysupgrade b/src/packages/fff/fff-sysupgrade/files/etc/uci-defaults/99-fff-sysupgrade
index f5783687..07f991e0 100644
--- a/src/packages/fff/fff-sysupgrade/files/etc/uci-defaults/99-fff-sysupgrade
+++ b/src/packages/fff/fff-sysupgrade/files/etc/uci-defaults/99-fff-sysupgrade
@@ -2,7 +2,7 @@
 # Copyright 2017 Tim Niemeyer
 # License GPLv3
 
-cat > /etc/sysupgrade.conf <<-__EOF__
+cat >> /etc/sysupgrade.conf <<-__EOF__
 /etc/shadow
 /etc/dropbear/dropbear_dss_host_key
 /etc/dropbear/dropbear_rsa_host_key
diff --git a/src/packages/fff/fff-web/Makefile b/src/packages/fff/fff-web/Makefile
index 9bb10f71..819644a5 100644
--- a/src/packages/fff/fff-web/Makefile
+++ b/src/packages/fff/fff-web/Makefile
@@ -1,7 +1,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=fff-web
-PKG_RELEASE:=7
+PKG_RELEASE:=8
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
 
diff --git a/src/packages/fff/fff-web/files/www/ssl/cgi-bin/ports.html b/src/packages/fff/fff-web/files/www/ssl/cgi-bin/ports.html
index 01506fce..f990d4e4 100755
--- a/src/packages/fff/fff-web/files/www/ssl/cgi-bin/ports.html
+++ b/src/packages/fff/fff-web/files/www/ssl/cgi-bin/ports.html
@@ -2,22 +2,27 @@
 
 <%
 board_name=$(uci -q get board.model.name)
+LOCALUPGRADESCRIPT="/etc/firstbootfff"
+
 # write
 if [ "$REQUEST_METHOD" = "POST" ] ; then
 	if [ "$POST_change_mode" != "" ] ; then
-		sed -i '/^.*# set via WebUI/d' /etc/network.config
-		echo "ETHMODE=\"${POST_mode}\" # set via WebUI" >> /etc/network.config
-		sed -i '/^FORCEPARSE/d' /etc/network.config
-		echo "FORCEPARSE='2'" >> /etc/network.config
+		if [ "$(uci -q get fff.ui.portsetup)" = "oneport" ]; then
+			setoneport "${POST_mode}"
+			sed -i '/^setoneport.*/d' $LOCALUPGRADESCRIPT
+			echo "setoneport \"${POST_mode}\" # set via WebUI" >> $LOCALUPGRADESCRIPT
+		elif [ "$(uci -q get fff.ui.portsetup)" = "2ndport" ]; then
+			set2ndport "${POST_mode}"
+			sed -i '/^set2ndport.*/d' $LOCALUPGRADESCRIPT
+			echo "set2ndport \"${POST_mode}\" # set via WebUI" >> $LOCALUPGRADESCRIPT
+		fi
 		do_reboot=1
 		MSG='<span class="green">Port Modus ge&auml;ndert! Router startet neu...</span>'
 	fi
 	if [ "$POST_change_twoport" != "" ] ; then
-		sed -i '/^.*# set via WebUI/d' /etc/network.config
-		echo "LAN0MODE=\"${POST_mode0}\" # set via WebUI" >> /etc/network.config
-		echo "LAN1MODE=\"${POST_mode1}\" # set via WebUI" >> /etc/network.config
-		sed -i '/^FORCEPARSE/d' /etc/network.config
-		echo "FORCEPARSE='2'" >> /etc/network.config
+		setcpev1 "${POST_mode0}" "${POST_mode1}"
+		sed -i '/^setcpev1.*/d' $LOCALUPGRADESCRIPT
+		echo "setcpev1 \"${POST_mode0}\" \"${POST_mode1}\" # set via WebUI" >> $LOCALUPGRADESCRIPT
 		do_reboot=1
 		MSG='<span class="green">Port Modus ge&auml;ndert! Router startet neu...</span>'
 	fi
@@ -108,11 +113,8 @@ format_port() {
 					echo "</td>"
 				fi
 				
-				if grep -q 'PORTORDER=' /etc/network.$board_name ; then
-					portorder=$(awk -F= '/PORTORDER=/ { print $2 }' /etc/network.$board_name | sed "s/\"//g")
-				fi
-				for internalport in $portorder
-				do
+				. /lib/functions/fff/portorder
+				for internalport in $PORTORDER ; do
 					line=$(swconfig dev switch0 port "$internalport" show | tr -d '\n' | tr -d '\t')
 					port=$(echo "$line" | sed 's/.* port:\([^ ]*\) .*/\1/')
 					echo "<td class=\"swport\">"
@@ -120,16 +122,12 @@ format_port() {
 					format_port "${line}"
 					echo "</td>"
 				done
-				if [ -n "$portorder" ] ; then
-					echo "<td class=\"swport\" style=\"width:4em\"></td>"
-				fi
+				[ -n "$PORTORDER" ] && echo "<td class=\"swport\" style=\"width:4em\"></td>"
 				
 				swconfig dev switch0 show | grep "\t*link:" | while read line ; do
 					line=$(echo "$line" | tr -d '\n' | tr -d '\t')
 					port=$(echo "$line" | sed 's/.* port:\([^ ]*\) .*/\1/')
-					if echo "$portorder" | grep -q "$port" ; then
-						continue
-					fi
+					echo "$PORTORDER" | grep -q "$port" && continue
 					echo "<td class=\"swport\">"
 					echo "<span class=\"port\">Port #${port}</span><br />"
 					format_port "${line}"
@@ -141,7 +139,7 @@ format_port() {
 		<table>
 			<tr><td></td></tr>
 			<tr><td>
-				<% if [ -n "$portorder" ] ; then %>
+				<% if [ -n "$PORTORDER" ] ; then %>
 				Dies zeigt die tats&auml;chliche Zuordnung der Ports, wobei der WAN Port auf der linken Seite liegt. Die Nummerierung entspricht der internen Zuordnung!<br />
 				<% else %>
 				Die Nummerierung und Reihenfolge der Ports entspricht nicht notwendigerweise der der Netzwerkanschl&uuml;sse am Router!<br />
@@ -152,12 +150,7 @@ format_port() {
 	</fieldset>
 	</td></tr>
 <% fi %>
-<% if grep -q "ONE_PORT" "/etc/network.$board_name" || grep -q "ETHPORT" "/etc/network.$board_name" ; then %>
-	<%
-		# Device has a port set by $ETHMODE
-		. /etc/network.mode
-		. /etc/network.config
-	%>
+<% if [ "$(uci -q get fff.ui.portsetup)" = "oneport" ] || [ "$(uci -q get fff.ui.portsetup)" = "2ndport" ] ; then %>
 	<tr><td>
 	<fieldset>
 		<legend>Ethernet Anschluss</legend>
@@ -166,10 +159,10 @@ format_port() {
 				<th style="width: 1em;">Anschluss&nbsp;Modus:</th>
 				<td>
 					<select name="mode">
-						<option value="BATMAN" <% [ "$ETHMODE" = "BATMAN" ] && echo -n 'selected="selected" ' %>>BATMAN</option>
-						<option value="CLIENT" <% [ "$ETHMODE" = "CLIENT" ] && echo -n 'selected="selected" ' %>>CLIENT</option>
-						<% if grep -q "ONE_PORT" "/etc/network.$board_name" ; then %>
-						<option value="WAN" <% [ "$ETHMODE" = "WAN" ] && echo -n 'selected="selected" ' %>>WAN</option>
+						<option value="BATMAN">BATMAN</option>
+						<option value="CLIENT">CLIENT</option>
+						<% if [ "$(uci -q get fff.ui.portsetup)" = "oneport" ] ; then %>
+						<option value="WAN">WAN</option>
 						<% fi %>
 					</select>
 				</td>
@@ -178,7 +171,7 @@ format_port() {
 			<tr><td colspan="2"></td></tr>
 			<tr><td colspan="2">
 				WAN: Knoten stellt &uuml;ber Ethernet Anschluss Verbindung zum Internet her.<br />
-				Client: Normale Clients stellen &uuml;ber Ethernet Anschluss des Knotens Verbindung zum Freifunk Netz her.<br />
+				CLIENT: Normale Clients stellen &uuml;ber Ethernet Anschluss des Knotens Verbindung zum Freifunk Netz her.<br />
 				BATMAN: Knoten stellt &uuml;ber Ethernet Anschluss Verbindung zu anderen MESH Knoten her.<br /><br />
 
 				Wenn diese Einstellung ver&auml;ndert wird, wird eine evtl. vorhandene manuelle Netzwerkkonfiguration in der
@@ -189,12 +182,7 @@ format_port() {
 	</fieldset>
 	</td></tr>
 <% fi %>
-<% if grep -q "LAN0PORT" "/etc/network.$board_name" || grep -q "LAN1PORT" "/etc/network.$board_name" ; then %>
-	<%
-		# Device has two ports
-		. /etc/network.mode
-		. /etc/network.config
-	%>
+<% if [ "$(uci -q get fff.ui.portsetup)" = "cpev1" ] ; then %>
 	<tr><td>
 	<fieldset>
 		<legend>Ethernet Anschl&uuml;sse</legend>
@@ -207,16 +195,16 @@ format_port() {
 			<tr>
 				<td>
 					<select name="mode0">
-						<option value="BATMAN" <% [ "$LAN0MODE" = "BATMAN" ] && echo -n 'selected="selected" ' %>>BATMAN</option>
-						<option value="CLIENT" <% [ "$LAN0MODE" = "CLIENT" ] && echo -n 'selected="selected" ' %>>CLIENT</option>
-						<option value="WAN" <% [ "$LAN0MODE" = "WAN" ] && echo -n 'selected="selected" ' %>>WAN</option>
+						<option value="BATMAN">BATMAN</option>
+						<option value="CLIENT">CLIENT</option>
+						<option value="WAN">WAN</option>
 					</select>
 				</td>
 				<td>
 					<select name="mode1">
-						<option value="BATMAN" <% [ "$LAN1MODE" = "BATMAN" ] && echo -n 'selected="selected" ' %>>BATMAN</option>
-						<option value="CLIENT" <% [ "$LAN1MODE" = "CLIENT" ] && echo -n 'selected="selected" ' %>>CLIENT</option>
-						<option value="WAN" <% [ "$LAN1MODE" = "WAN" ] && echo -n 'selected="selected" ' %>>WAN</option>
+						<option value="BATMAN">BATMAN</option>
+						<option value="CLIENT">CLIENT</option>
+						<option value="WAN">WAN</option>
 					</select>
 				</td>
 				<td><input type="submit" name="change_twoport" /></td>
@@ -224,7 +212,7 @@ format_port() {
 			<tr><td colspan="3"></td></tr>
 			<tr><td colspan="3">
 				WAN: Knoten stellt &uuml;ber Ethernet Anschluss Verbindung zum Internet her.<br />
-				Client: Normale Clients stellen &uuml;ber Ethernet Anschluss des Knotens Verbindung zum Freifunk Netz her.<br />
+				CLIENT: Normale Clients stellen &uuml;ber Ethernet Anschluss des Knotens Verbindung zum Freifunk Netz her.<br />
 				BATMAN: Knoten stellt &uuml;ber Ethernet Anschluss Verbindung zu anderen MESH Knoten her.<br /><br />
 
 				Wenn diese Einstellung ver&auml;ndert wird, wird eine evtl. vorhandene manuelle Netzwerkkonfiguration in der
