[RFC,v2] fff-support: Update PoE passthrough code for CPE 210

Submitted by Adrian Schmutzler on July 10, 2017, 1:12 p.m.

Details

Message ID 1499692364-64024-1-git-send-email-freifunk@adrianschmutzler.de
State Superseded
Headers show

Commit Message

Adrian Schmutzler July 10, 2017, 1:12 p.m.
This implements Tim's suggestions for a persistent PoE script
(as far as I understood them). Please comment and inprove!

Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
---
 .../ar71xx/etc/uci-defaults/50-config-poe-migration          |  7 +++++++
 .../ar71xx/etc/uci-defaults/98-fff-sysupgrade-poe            |  7 +++++++
 .../usr/lib/fff-support/cpe210_activate_poe_passthrough.sh   | 12 +++++++++---
 .../usr/lib/fff-support/cpe210_permanent_poe_passthrough.sh  | 12 ++++++++++++
 4 files changed, 35 insertions(+), 3 deletions(-)
 create mode 100644 src/packages/fff/fff-support/ar71xx/etc/uci-defaults/50-config-poe-migration
 create mode 100644 src/packages/fff/fff-support/ar71xx/etc/uci-defaults/98-fff-sysupgrade-poe
 mode change 100644 => 100755 src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/cpe210_activate_poe_passthrough.sh
 create mode 100755 src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/cpe210_permanent_poe_passthrough.sh

Patch hide | download patch | download mbox

diff --git a/src/packages/fff/fff-support/ar71xx/etc/uci-defaults/50-config-poe-migration b/src/packages/fff/fff-support/ar71xx/etc/uci-defaults/50-config-poe-migration
new file mode 100644
index 0000000..7abff58
--- /dev/null
+++ b/src/packages/fff/fff-support/ar71xx/etc/uci-defaults/50-config-poe-migration
@@ -0,0 +1,7 @@ 
+#!/bin/sh
+
+UPGRADE_poe=$(uci -q get "fff-gpio.poe_passthrough.active")
+
+if test -n "$UPGRADE_poe" && [ "$UPGRADE_poe" -eq "1" ] ; then
+    . /usr/lib/fff-support/cpe210_activate_poe_passthrough.sh
+fi
diff --git a/src/packages/fff/fff-support/ar71xx/etc/uci-defaults/98-fff-sysupgrade-poe b/src/packages/fff/fff-support/ar71xx/etc/uci-defaults/98-fff-sysupgrade-poe
new file mode 100644
index 0000000..2d1cc8d
--- /dev/null
+++ b/src/packages/fff/fff-support/ar71xx/etc/uci-defaults/98-fff-sysupgrade-poe
@@ -0,0 +1,7 @@ 
+#!/bin/sh
+# Copyright 2017 Adrian Schmutzler
+# License GPLv3
+
+cat > /etc/sysupgrade.conf <<-__EOF__
+/etc/config/fff-gpio
+__EOF__
diff --git a/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/cpe210_activate_poe_passthrough.sh b/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/cpe210_activate_poe_passthrough.sh
old mode 100644
new mode 100755
index cb3508f..dc3ccd0
--- a/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/cpe210_activate_poe_passthrough.sh
+++ b/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/cpe210_activate_poe_passthrough.sh
@@ -1,5 +1,11 @@ 
+#!/bin/sh
+# This enables PoE passthrough and is not reset after reboot,
+# but after firmware upgrade
+
 if [ "$(cat /var/sysinfo/model)" = "TP-Link CPE210 v1.1" ] ; then
-  echo 20 > /sys/class/gpio/export
-  echo out > /sys/class/gpio/gpio20/direction
-  echo 1 > /sys/class/gpio/gpio20/value
+	uci set system.poe_passthrough=gpio_switch
+    uci set system.poe_passthrough.name='PoE Passthrough'
+    uci set system.poe_passthrough.gpio_pin='20'
+    uci set system.poe_passthrough.value='1'
+    uci commit system
 fi
diff --git a/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/cpe210_permanent_poe_passthrough.sh b/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/cpe210_permanent_poe_passthrough.sh
new file mode 100755
index 0000000..34698f6
--- /dev/null
+++ b/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/cpe210_permanent_poe_passthrough.sh
@@ -0,0 +1,12 @@ 
+#!/bin/sh
+# This enables PoE passthrough permanently, so it is persistent
+# after firmware upgrades
+
+if [ "$(cat /var/sysinfo/model)" = "TP-Link CPE210 v1.1" ] ; then
+    touch /etc/config/fff-gpio
+	uci set fff-gpio.poe_passthrough=poe
+	uci set fff-gpio.poe_passthrough.active=1
+	uci commit fff-gpio
+	
+	. /usr/lib/fff-support/cpe210_activate_poe_passthrough.sh
+fi

Comments

Christian Dresel July 11, 2017, 1:40 p.m.
hi

um die Diskussion mal noch weiter zu "verkomplizieren" (und ich hab sie
nur überflogen und nicht richtig mit verfolgt, also verzeiht wenn ich
was Vorschlage was eh nicht tut). Meine Nanostation M2 hat ebenfalls 2
Ethernetanschlüsse. Dort ist der GPIO8 für PoE Passthrough. Ich hab mir
dazu dieses Script Snippet welches auch unter LEDE tut:

echo 8 > /sys/class/gpio/export (bringt zwar einen Fehler scheint aber
ansonsten problemlos zu laufen, evtl. ist das schon Standartmäßig
gesetzt und deshalb der Fehler, hab da nicht genauer geguckt)
echo out > /sys/class/gpio/gpio8/direction
echo 1 > /sys/class/gpio/gpio8/value

Jetzt hab ich eben mal in die /etc/config/system geguckt und
festgestellt ich könnte es wohl dort auch aktivieren:

...
config gpio_switch 'poe_passthrough'
        option name 'PoE Passthrough'
        option gpio_pin '8'
        option value '0'
...

Einfacher und meines erachtens schöner ist es aber einfach den GPIO zu
setzen und gut. Kann man das bei der CPE nicht auch "einfach so" machen?

mfg

Christian

On 10.07.2017 15:12, Adrian Schmutzler wrote:
> This implements Tim's suggestions for a persistent PoE script
> (as far as I understood them). Please comment and inprove!
> 
> Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
> ---
>  .../ar71xx/etc/uci-defaults/50-config-poe-migration          |  7 +++++++
>  .../ar71xx/etc/uci-defaults/98-fff-sysupgrade-poe            |  7 +++++++
>  .../usr/lib/fff-support/cpe210_activate_poe_passthrough.sh   | 12 +++++++++---
>  .../usr/lib/fff-support/cpe210_permanent_poe_passthrough.sh  | 12 ++++++++++++
>  4 files changed, 35 insertions(+), 3 deletions(-)
>  create mode 100644 src/packages/fff/fff-support/ar71xx/etc/uci-defaults/50-config-poe-migration
>  create mode 100644 src/packages/fff/fff-support/ar71xx/etc/uci-defaults/98-fff-sysupgrade-poe
>  mode change 100644 => 100755 src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/cpe210_activate_poe_passthrough.sh
>  create mode 100755 src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/cpe210_permanent_poe_passthrough.sh
> 
> diff --git a/src/packages/fff/fff-support/ar71xx/etc/uci-defaults/50-config-poe-migration b/src/packages/fff/fff-support/ar71xx/etc/uci-defaults/50-config-poe-migration
> new file mode 100644
> index 0000000..7abff58
> --- /dev/null
> +++ b/src/packages/fff/fff-support/ar71xx/etc/uci-defaults/50-config-poe-migration
> @@ -0,0 +1,7 @@
> +#!/bin/sh
> +
> +UPGRADE_poe=$(uci -q get "fff-gpio.poe_passthrough.active")
> +
> +if test -n "$UPGRADE_poe" && [ "$UPGRADE_poe" -eq "1" ] ; then
> +    . /usr/lib/fff-support/cpe210_activate_poe_passthrough.sh
> +fi
> diff --git a/src/packages/fff/fff-support/ar71xx/etc/uci-defaults/98-fff-sysupgrade-poe b/src/packages/fff/fff-support/ar71xx/etc/uci-defaults/98-fff-sysupgrade-poe
> new file mode 100644
> index 0000000..2d1cc8d
> --- /dev/null
> +++ b/src/packages/fff/fff-support/ar71xx/etc/uci-defaults/98-fff-sysupgrade-poe
> @@ -0,0 +1,7 @@
> +#!/bin/sh
> +# Copyright 2017 Adrian Schmutzler
> +# License GPLv3
> +
> +cat > /etc/sysupgrade.conf <<-__EOF__
> +/etc/config/fff-gpio
> +__EOF__
> diff --git a/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/cpe210_activate_poe_passthrough.sh b/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/cpe210_activate_poe_passthrough.sh
> old mode 100644
> new mode 100755
> index cb3508f..dc3ccd0
> --- a/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/cpe210_activate_poe_passthrough.sh
> +++ b/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/cpe210_activate_poe_passthrough.sh
> @@ -1,5 +1,11 @@
> +#!/bin/sh
> +# This enables PoE passthrough and is not reset after reboot,
> +# but after firmware upgrade
> +
>  if [ "$(cat /var/sysinfo/model)" = "TP-Link CPE210 v1.1" ] ; then
> -  echo 20 > /sys/class/gpio/export
> -  echo out > /sys/class/gpio/gpio20/direction
> -  echo 1 > /sys/class/gpio/gpio20/value
> +	uci set system.poe_passthrough=gpio_switch
> +    uci set system.poe_passthrough.name='PoE Passthrough'
> +    uci set system.poe_passthrough.gpio_pin='20'
> +    uci set system.poe_passthrough.value='1'
> +    uci commit system
>  fi
> diff --git a/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/cpe210_permanent_poe_passthrough.sh b/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/cpe210_permanent_poe_passthrough.sh
> new file mode 100755
> index 0000000..34698f6
> --- /dev/null
> +++ b/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/cpe210_permanent_poe_passthrough.sh
> @@ -0,0 +1,12 @@
> +#!/bin/sh
> +# This enables PoE passthrough permanently, so it is persistent
> +# after firmware upgrades
> +
> +if [ "$(cat /var/sysinfo/model)" = "TP-Link CPE210 v1.1" ] ; then
> +    touch /etc/config/fff-gpio
> +	uci set fff-gpio.poe_passthrough=poe
> +	uci set fff-gpio.poe_passthrough.active=1
> +	uci commit fff-gpio
> +	
> +	. /usr/lib/fff-support/cpe210_activate_poe_passthrough.sh
> +fi
>
Adrian Schmutzler July 11, 2017, 5:40 p.m.
Hallo Christian,

LEDE setzt den ganzen Spaß selbst mit folgendem Skript:

https://github.com/lede-project/source/blob/4f272dd0323151a1390a8675bafebead
0e2a69ad/package/base-files/files/etc/init.d/gpio_switch

Du musst also tatsächlich nur option value auf '1' setzen, wie von dir
vermutet.

Bei mir war es so, dass ich die files in /sys/class/gpio... nicht manuell
ändern konnte. Weder echo > noch vi ließ ein speichern/schreiben zu. Das war
der einzige Grund, warum ich damals nach einer alternativen Lösung gesucht
habe.

Mit der /etc/config/system funktioniert das auch wunderbar, ist halt nur
nicht updatesicher. Ich bin allerdings gerade am Basteln für einen RFC
patch, um die relevanten Freifunk Settings in eine eigene Datei auszulagern,
sodass dann nur die beim Upgrade gesichert werden muss. Die
Bitratenbeschränkung wird ja z.B. z.Zt. auch nicht übertragen.

Grüße und entschuldige die Abschweifung

Adrian

-----Original Message-----
From: franken-dev [mailto:franken-dev-bounces@freifunk.net] On Behalf Of
Christian Dresel
Sent: Dienstag, 11. Juli 2017 15:41
To: Adrian Schmutzler <freifunk@adrianschmutzler.de>;
franken-dev@freifunk.net
Subject: Re: [RFC PATCH v2] fff-support: Update PoE passthrough code for CPE
210

hi

um die Diskussion mal noch weiter zu "verkomplizieren" (und ich hab sie nur
überflogen und nicht richtig mit verfolgt, also verzeiht wenn ich was
Vorschlage was eh nicht tut). Meine Nanostation M2 hat ebenfalls 2
Ethernetanschlüsse. Dort ist der GPIO8 für PoE Passthrough. Ich hab mir dazu
dieses Script Snippet welches auch unter LEDE tut:

echo 8 > /sys/class/gpio/export (bringt zwar einen Fehler scheint aber
ansonsten problemlos zu laufen, evtl. ist das schon Standartmäßig gesetzt
und deshalb der Fehler, hab da nicht genauer geguckt) echo out >
/sys/class/gpio/gpio8/direction echo 1 > /sys/class/gpio/gpio8/value

Jetzt hab ich eben mal in die /etc/config/system geguckt und festgestellt
ich könnte es wohl dort auch aktivieren:

...
config gpio_switch 'poe_passthrough'
        option name 'PoE Passthrough'
        option gpio_pin '8'
        option value '0'
...

Einfacher und meines erachtens schöner ist es aber einfach den GPIO zu
setzen und gut. Kann man das bei der CPE nicht auch "einfach so" machen?

mfg

Christian

On 10.07.2017 15:12, Adrian Schmutzler wrote:
> This implements Tim's suggestions for a persistent PoE script (as far 
> as I understood them). Please comment and inprove!
> 
> Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
> ---
>  .../ar71xx/etc/uci-defaults/50-config-poe-migration          |  7 +++++++
>  .../ar71xx/etc/uci-defaults/98-fff-sysupgrade-poe            |  7 +++++++
>  .../usr/lib/fff-support/cpe210_activate_poe_passthrough.sh   | 12
+++++++++---
>  .../usr/lib/fff-support/cpe210_permanent_poe_passthrough.sh  | 12 
> ++++++++++++
>  4 files changed, 35 insertions(+), 3 deletions(-)  create mode 100644 
> src/packages/fff/fff-support/ar71xx/etc/uci-defaults/50-config-poe-mig
> ration  create mode 100644 
> src/packages/fff/fff-support/ar71xx/etc/uci-defaults/98-fff-sysupgrade
> -poe  mode change 100644 => 100755 
> src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/cpe210_activat
> e_poe_passthrough.sh  create mode 100755 
> src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/cpe210_permane
> nt_poe_passthrough.sh
> 
> diff --git 
> a/src/packages/fff/fff-support/ar71xx/etc/uci-defaults/50-config-poe-m
> igration 
> b/src/packages/fff/fff-support/ar71xx/etc/uci-defaults/50-config-poe-m
> igration
> new file mode 100644
> index 0000000..7abff58
> --- /dev/null
> +++ b/src/packages/fff/fff-support/ar71xx/etc/uci-defaults/50-config-p
> +++ oe-migration
> @@ -0,0 +1,7 @@
> +#!/bin/sh
> +
> +UPGRADE_poe=$(uci -q get "fff-gpio.poe_passthrough.active")
> +
> +if test -n "$UPGRADE_poe" && [ "$UPGRADE_poe" -eq "1" ] ; then
> +    . /usr/lib/fff-support/cpe210_activate_poe_passthrough.sh
> +fi
> diff --git 
> a/src/packages/fff/fff-support/ar71xx/etc/uci-defaults/98-fff-sysupgra
> de-poe 
> b/src/packages/fff/fff-support/ar71xx/etc/uci-defaults/98-fff-sysupgra
> de-poe
> new file mode 100644
> index 0000000..2d1cc8d
> --- /dev/null
> +++ b/src/packages/fff/fff-support/ar71xx/etc/uci-defaults/98-fff-sysu
> +++ pgrade-poe
> @@ -0,0 +1,7 @@
> +#!/bin/sh
> +# Copyright 2017 Adrian Schmutzler
> +# License GPLv3
> +
> +cat > /etc/sysupgrade.conf <<-__EOF__ /etc/config/fff-gpio __EOF__
> diff --git 
> a/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/cpe210_activ
> ate_poe_passthrough.sh 
> b/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/cpe210_activ
> ate_poe_passthrough.sh
> old mode 100644
> new mode 100755
> index cb3508f..dc3ccd0
> --- 
> a/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/cpe210_activ
> ate_poe_passthrough.sh
> +++ b/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/cpe210_a
> +++ ctivate_poe_passthrough.sh
> @@ -1,5 +1,11 @@
> +#!/bin/sh
> +# This enables PoE passthrough and is not reset after reboot, # but 
> +after firmware upgrade
> +
>  if [ "$(cat /var/sysinfo/model)" = "TP-Link CPE210 v1.1" ] ; then
> -  echo 20 > /sys/class/gpio/export
> -  echo out > /sys/class/gpio/gpio20/direction
> -  echo 1 > /sys/class/gpio/gpio20/value
> +	uci set system.poe_passthrough=gpio_switch
> +    uci set system.poe_passthrough.name='PoE Passthrough'
> +    uci set system.poe_passthrough.gpio_pin='20'
> +    uci set system.poe_passthrough.value='1'
> +    uci commit system
>  fi
> diff --git 
> a/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/cpe210_perma
> nent_poe_passthrough.sh 
> b/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/cpe210_perma
> nent_poe_passthrough.sh
> new file mode 100755
> index 0000000..34698f6
> --- /dev/null
> +++ b/src/packages/fff/fff-support/ar71xx/usr/lib/fff-support/cpe210_p
> +++ ermanent_poe_passthrough.sh
> @@ -0,0 +1,12 @@
> +#!/bin/sh
> +# This enables PoE passthrough permanently, so it is persistent # 
> +after firmware upgrades
> +
> +if [ "$(cat /var/sysinfo/model)" = "TP-Link CPE210 v1.1" ] ; then
> +    touch /etc/config/fff-gpio
> +	uci set fff-gpio.poe_passthrough=poe
> +	uci set fff-gpio.poe_passthrough.active=1
> +	uci commit fff-gpio
> +	
> +	. /usr/lib/fff-support/cpe210_activate_poe_passthrough.sh
> +fi
>