[1/2] fff-network: Get MAC from wifi device instead of wifi network

Submitted by Fabian Blaese on Nov. 6, 2017, 9:52 a.m.

Details

Message ID 20171106095252.11033-1-fabian@blaese.de
State Superseded
Headers show

Commit Message

Fabian Blaese Nov. 6, 2017, 9:52 a.m.
Using wifi devices makes it possible to get mac address
without having to configure wifi networks.

Signed-off-by: Fabian Bläse <fabian@blaese.de>
---
This patch should be tested extensively.

It's important, that
 - br-mesh has the mac address printed on the device
 - w2mesh, w5mesh and ethmesh have unique mac addresses

The changes for the following devices have been verified:
 - tl-wa850re-v1: Christian Dresel
 - tl-wa901nd-v2: Fabian Bläse
 - tl-wdr3500-v1: Tim Niemeyer
 - tl-wdr3600-v1: Adrian Schmutzler
 - tl-wdr4300-v1: Christian Dresel
 - tl-wdr4900-v1: Fabian Bläse
 - ubnt-bullet-m: Christian Dresel
 - ubnt-nano-m: Christian Dresel


Everything from here hasn't been verified on a real device.

The following devices only have one phy, so phy0 should have the same address as wXmesh:
 - tl-wa860re-v1
 - tl-wr740n-v4
 - tl-wr741nd-v2
 - tl-wr741nd-v4
 - ubnt-loco-m-xw
 - ubnt-unifi

The following devices have multiple phy, so it has been systematically guessed, which phy is the correct one:
 - tl-wdr4310-v1

The following devices used wXap before, which should have the mac address of phyX with it's locally administered bit flipped:
 - tl-wr1043nd-v1
 - cpe210
 - cpe510
 
 src/packages/fff/fff-network/ar71xx/network.cpe210         | 5 ++++-
 src/packages/fff/fff-network/ar71xx/network.cpe510         | 5 ++++-
 src/packages/fff/fff-network/ar71xx/network.tl-wa850re-v1  | 2 +-
 src/packages/fff/fff-network/ar71xx/network.tl-wa860re-v1  | 2 +-
 src/packages/fff/fff-network/ar71xx/network.tl-wa901nd-v2  | 2 +-
 src/packages/fff/fff-network/ar71xx/network.tl-wdr3500-v1  | 2 +-
 src/packages/fff/fff-network/ar71xx/network.tl-wdr3600-v1  | 2 +-
 src/packages/fff/fff-network/ar71xx/network.tl-wdr4300-v1  | 2 +-
 src/packages/fff/fff-network/ar71xx/network.tl-wdr4310-v1  | 2 +-
 src/packages/fff/fff-network/ar71xx/network.tl-wr1043nd-v1 | 5 ++++-
 src/packages/fff/fff-network/ar71xx/network.tl-wr740n-v4   | 2 +-
 src/packages/fff/fff-network/ar71xx/network.tl-wr741nd-v2  | 2 +-
 src/packages/fff/fff-network/ar71xx/network.tl-wr741nd-v4  | 2 +-
 src/packages/fff/fff-network/ar71xx/network.ubnt-bullet-m  | 2 +-
 src/packages/fff/fff-network/ar71xx/network.ubnt-loco-m-xw | 2 +-
 src/packages/fff/fff-network/ar71xx/network.ubnt-nano-m    | 2 +-
 src/packages/fff/fff-network/ar71xx/network.ubnt-unifi     | 2 +-
 src/packages/fff/fff-network/mpc85xx/network.tl-wdr4900-v1 | 5 ++++-
 18 files changed, 30 insertions(+), 18 deletions(-)

Patch hide | download patch | download mbox

diff --git a/src/packages/fff/fff-network/ar71xx/network.cpe210 b/src/packages/fff/fff-network/ar71xx/network.cpe210
index a7a91bc..4723d9a 100644
--- a/src/packages/fff/fff-network/ar71xx/network.cpe210
+++ b/src/packages/fff/fff-network/ar71xx/network.cpe210
@@ -6,8 +6,11 @@  CLIENT_PORTS="0t"
 WAN_PORTS="0t"
 BATMAN_PORTS="0t"
 
+# use mac address from phy0 with 'locally administered' bit set to '1'
+# only possible, because wXmesh is created first and therefore gets the 'universally administered address'
+
+ETHMESHMAC=$(printf "%x\n" $(( 0x$(cat /sys/class/ieee80211/phy0/macaddress | cut -d: -f1) | 0x2 ))):$(cat /sys/class/ieee80211/phy0/macaddress | cut -d: -f2-6)
 ROUTERMAC=$(cat /sys/class/net/eth0/address)
-ETHMESHMAC=$(cat /sys/class/net/w2ap/address)
 
 . /etc/network.mode
 
diff --git a/src/packages/fff/fff-network/ar71xx/network.cpe510 b/src/packages/fff/fff-network/ar71xx/network.cpe510
index d5f946f..736e313 100644
--- a/src/packages/fff/fff-network/ar71xx/network.cpe510
+++ b/src/packages/fff/fff-network/ar71xx/network.cpe510
@@ -6,7 +6,10 @@  CLIENT_PORTS="0t"
 WAN_PORTS="0t"
 BATMAN_PORTS="0t"
 
-ETHMESHMAC=$(cat /sys/class/net/w2ap/address)
+# use mac address from phy0 with 'locally administered' bit set to '1'
+# only possible, because wXmesh is created first and therefore gets the 'universally administered address'
+
+ETHMESHMAC=$(printf "%x\n" $(( 0x$(cat /sys/class/ieee80211/phy0/macaddress | cut -d: -f1) | 0x2 ))):$(cat /sys/class/ieee80211/phy0/macaddress | cut -d: -f2-6)
 
 . /etc/network.mode
 
diff --git a/src/packages/fff/fff-network/ar71xx/network.tl-wa850re-v1 b/src/packages/fff/fff-network/ar71xx/network.tl-wa850re-v1
index 7c342a6..372750c 100644
--- a/src/packages/fff/fff-network/ar71xx/network.tl-wa850re-v1
+++ b/src/packages/fff/fff-network/ar71xx/network.tl-wa850re-v1
@@ -7,4 +7,4 @@  ONE_PORT="YES"
 
 . /etc/network.mode
 
-ROUTERMAC=$(cat /sys/class/net/w2mesh/address)
+ROUTERMAC=$(cat /sys/class/ieee80211/phy0/macaddress)
diff --git a/src/packages/fff/fff-network/ar71xx/network.tl-wa860re-v1 b/src/packages/fff/fff-network/ar71xx/network.tl-wa860re-v1
index 7c342a6..372750c 100644
--- a/src/packages/fff/fff-network/ar71xx/network.tl-wa860re-v1
+++ b/src/packages/fff/fff-network/ar71xx/network.tl-wa860re-v1
@@ -7,4 +7,4 @@  ONE_PORT="YES"
 
 . /etc/network.mode
 
-ROUTERMAC=$(cat /sys/class/net/w2mesh/address)
+ROUTERMAC=$(cat /sys/class/ieee80211/phy0/macaddress)
diff --git a/src/packages/fff/fff-network/ar71xx/network.tl-wa901nd-v2 b/src/packages/fff/fff-network/ar71xx/network.tl-wa901nd-v2
index 7c342a6..372750c 100644
--- a/src/packages/fff/fff-network/ar71xx/network.tl-wa901nd-v2
+++ b/src/packages/fff/fff-network/ar71xx/network.tl-wa901nd-v2
@@ -7,4 +7,4 @@  ONE_PORT="YES"
 
 . /etc/network.mode
 
-ROUTERMAC=$(cat /sys/class/net/w2mesh/address)
+ROUTERMAC=$(cat /sys/class/ieee80211/phy0/macaddress)
diff --git a/src/packages/fff/fff-network/ar71xx/network.tl-wdr3500-v1 b/src/packages/fff/fff-network/ar71xx/network.tl-wdr3500-v1
index e859a9b..59b96df 100644
--- a/src/packages/fff/fff-network/ar71xx/network.tl-wdr3500-v1
+++ b/src/packages/fff/fff-network/ar71xx/network.tl-wdr3500-v1
@@ -4,4 +4,4 @@  CLIENT_PORTS="0t 1 2"
 WAN_PORTS=
 BATMAN_PORTS="0t 3 4"
 
-ROUTERMAC=$(cat /sys/class/net/w2mesh/address)
+ROUTERMAC=$(cat /sys/class/ieee80211/phy0/macaddress)
diff --git a/src/packages/fff/fff-network/ar71xx/network.tl-wdr3600-v1 b/src/packages/fff/fff-network/ar71xx/network.tl-wdr3600-v1
index 1ba9c24..73e7703 100644
--- a/src/packages/fff/fff-network/ar71xx/network.tl-wdr3600-v1
+++ b/src/packages/fff/fff-network/ar71xx/network.tl-wdr3600-v1
@@ -4,4 +4,4 @@  CLIENT_PORTS="0t 4 5"
 WAN_PORTS="0t 1"
 BATMAN_PORTS="0t 2 3"
 
-ROUTERMAC=$(cat /sys/class/net/w5mesh/address)
+ROUTERMAC=$(cat /sys/class/ieee80211/phy1/macaddress)
diff --git a/src/packages/fff/fff-network/ar71xx/network.tl-wdr4300-v1 b/src/packages/fff/fff-network/ar71xx/network.tl-wdr4300-v1
index 1ba9c24..73e7703 100644
--- a/src/packages/fff/fff-network/ar71xx/network.tl-wdr4300-v1
+++ b/src/packages/fff/fff-network/ar71xx/network.tl-wdr4300-v1
@@ -4,4 +4,4 @@  CLIENT_PORTS="0t 4 5"
 WAN_PORTS="0t 1"
 BATMAN_PORTS="0t 2 3"
 
-ROUTERMAC=$(cat /sys/class/net/w5mesh/address)
+ROUTERMAC=$(cat /sys/class/ieee80211/phy1/macaddress)
diff --git a/src/packages/fff/fff-network/ar71xx/network.tl-wdr4310-v1 b/src/packages/fff/fff-network/ar71xx/network.tl-wdr4310-v1
index 1ba9c24..73e7703 100644
--- a/src/packages/fff/fff-network/ar71xx/network.tl-wdr4310-v1
+++ b/src/packages/fff/fff-network/ar71xx/network.tl-wdr4310-v1
@@ -4,4 +4,4 @@  CLIENT_PORTS="0t 4 5"
 WAN_PORTS="0t 1"
 BATMAN_PORTS="0t 2 3"
 
-ROUTERMAC=$(cat /sys/class/net/w5mesh/address)
+ROUTERMAC=$(cat /sys/class/ieee80211/phy1/macaddress)
diff --git a/src/packages/fff/fff-network/ar71xx/network.tl-wr1043nd-v1 b/src/packages/fff/fff-network/ar71xx/network.tl-wr1043nd-v1
index 12f49e2..97190bd 100644
--- a/src/packages/fff/fff-network/ar71xx/network.tl-wr1043nd-v1
+++ b/src/packages/fff/fff-network/ar71xx/network.tl-wr1043nd-v1
@@ -4,5 +4,8 @@  CLIENT_PORTS="3 4 5t"
 WAN_PORTS="0 5t"
 BATMAN_PORTS="1 2 5t"
 
-ETHMESHMAC=$(cat /sys/class/net/w2ap/address)
+# use mac address from phy0 with 'locally administered' bit set to '1'
+# only possible, because wXmesh is created first and therefore gets the 'universally administered address'
+
+ETHMESHMAC=$(printf "%x\n" $(( 0x$(cat /sys/class/ieee80211/phy0/macaddress | cut -d: -f1) | 0x2 ))):$(cat /sys/class/ieee80211/phy0/macaddress | cut -d: -f2-6)
 ROUTERMAC=$(cat /sys/class/net/eth0/address)
diff --git a/src/packages/fff/fff-network/ar71xx/network.tl-wr740n-v4 b/src/packages/fff/fff-network/ar71xx/network.tl-wr740n-v4
index 114ba49..334e498 100644
--- a/src/packages/fff/fff-network/ar71xx/network.tl-wr740n-v4
+++ b/src/packages/fff/fff-network/ar71xx/network.tl-wr740n-v4
@@ -6,4 +6,4 @@  WAN_PORTS=
 BATMAN_PORTS="2 3 0t"
 
 ETHMESHMAC=$(cat /sys/class/net/eth1/address)
-ROUTERMAC=$(cat /sys/class/net/w2mesh/address)
+ROUTERMAC=$(cat /sys/class/ieee80211/phy0/macaddress)
diff --git a/src/packages/fff/fff-network/ar71xx/network.tl-wr741nd-v2 b/src/packages/fff/fff-network/ar71xx/network.tl-wr741nd-v2
index 5f2300d..c8ddd0f 100644
--- a/src/packages/fff/fff-network/ar71xx/network.tl-wr741nd-v2
+++ b/src/packages/fff/fff-network/ar71xx/network.tl-wr741nd-v2
@@ -6,4 +6,4 @@  WAN_PORTS=
 BATMAN_PORTS="3 4 0t"
 
 ETHMESHMAC=$(cat /sys/class/net/eth1/address)
-ROUTERMAC=$(cat /sys/class/net/w2mesh/address)
+ROUTERMAC=$(cat /sys/class/ieee80211/phy0/macaddress)
diff --git a/src/packages/fff/fff-network/ar71xx/network.tl-wr741nd-v4 b/src/packages/fff/fff-network/ar71xx/network.tl-wr741nd-v4
index 114ba49..334e498 100644
--- a/src/packages/fff/fff-network/ar71xx/network.tl-wr741nd-v4
+++ b/src/packages/fff/fff-network/ar71xx/network.tl-wr741nd-v4
@@ -6,4 +6,4 @@  WAN_PORTS=
 BATMAN_PORTS="2 3 0t"
 
 ETHMESHMAC=$(cat /sys/class/net/eth1/address)
-ROUTERMAC=$(cat /sys/class/net/w2mesh/address)
+ROUTERMAC=$(cat /sys/class/ieee80211/phy0/macaddress)
diff --git a/src/packages/fff/fff-network/ar71xx/network.ubnt-bullet-m b/src/packages/fff/fff-network/ar71xx/network.ubnt-bullet-m
index 7c342a6..372750c 100644
--- a/src/packages/fff/fff-network/ar71xx/network.ubnt-bullet-m
+++ b/src/packages/fff/fff-network/ar71xx/network.ubnt-bullet-m
@@ -7,4 +7,4 @@  ONE_PORT="YES"
 
 . /etc/network.mode
 
-ROUTERMAC=$(cat /sys/class/net/w2mesh/address)
+ROUTERMAC=$(cat /sys/class/ieee80211/phy0/macaddress)
diff --git a/src/packages/fff/fff-network/ar71xx/network.ubnt-loco-m-xw b/src/packages/fff/fff-network/ar71xx/network.ubnt-loco-m-xw
index 7c342a6..372750c 100644
--- a/src/packages/fff/fff-network/ar71xx/network.ubnt-loco-m-xw
+++ b/src/packages/fff/fff-network/ar71xx/network.ubnt-loco-m-xw
@@ -7,4 +7,4 @@  ONE_PORT="YES"
 
 . /etc/network.mode
 
-ROUTERMAC=$(cat /sys/class/net/w2mesh/address)
+ROUTERMAC=$(cat /sys/class/ieee80211/phy0/macaddress)
diff --git a/src/packages/fff/fff-network/ar71xx/network.ubnt-nano-m b/src/packages/fff/fff-network/ar71xx/network.ubnt-nano-m
index 7c342a6..372750c 100644
--- a/src/packages/fff/fff-network/ar71xx/network.ubnt-nano-m
+++ b/src/packages/fff/fff-network/ar71xx/network.ubnt-nano-m
@@ -7,4 +7,4 @@  ONE_PORT="YES"
 
 . /etc/network.mode
 
-ROUTERMAC=$(cat /sys/class/net/w2mesh/address)
+ROUTERMAC=$(cat /sys/class/ieee80211/phy0/macaddress)
diff --git a/src/packages/fff/fff-network/ar71xx/network.ubnt-unifi b/src/packages/fff/fff-network/ar71xx/network.ubnt-unifi
index 7c342a6..372750c 100644
--- a/src/packages/fff/fff-network/ar71xx/network.ubnt-unifi
+++ b/src/packages/fff/fff-network/ar71xx/network.ubnt-unifi
@@ -7,4 +7,4 @@  ONE_PORT="YES"
 
 . /etc/network.mode
 
-ROUTERMAC=$(cat /sys/class/net/w2mesh/address)
+ROUTERMAC=$(cat /sys/class/ieee80211/phy0/macaddress)
diff --git a/src/packages/fff/fff-network/mpc85xx/network.tl-wdr4900-v1 b/src/packages/fff/fff-network/mpc85xx/network.tl-wdr4900-v1
index d293f06..452a2f0 100644
--- a/src/packages/fff/fff-network/mpc85xx/network.tl-wdr4900-v1
+++ b/src/packages/fff/fff-network/mpc85xx/network.tl-wdr4900-v1
@@ -4,5 +4,8 @@  CLIENT_PORTS="0t 4 5"
 WAN_PORTS="0t 1"
 BATMAN_PORTS="0t 2 3"
 
-ETHMESHMAC=$(cat /sys/class/net/w2ap/address)
+# use mac address from phy1 with 'locally administered' bit set to '1'
+# only possible, because wXmesh is created first and therefore gets the 'universally administered address'
+
+ETHMESHMAC=$(printf "%x\n" $(( 0x$(cat /sys/class/ieee80211/phy1/macaddress | cut -d: -f1) | 0x2 ))):$(cat /sys/class/ieee80211/phy1/macaddress | cut -d: -f2-6)
 ROUTERMAC=$(cat /sys/class/net/eth0/address)

Comments

Adrian Schmutzler Nov. 6, 2017, 10:11 a.m.
Moin.

Ich kann noch beim wa860re und cpe210 Testen, die sind ja zu meiner
Überraschung als nicht verified markiert.

Der Code für die w2ap-Geräte ist so lang, dass da in meinen Augen eine
externe Funktion Sinn macht, auch wenn es im Moment nur vier Mal verwendet
wird. Ist ja eigtl eine allgemeine Funktionalität, die auch an anderer
Stelle relevant sein könnte.

Ggf. auch mal hier kucken:
https://github.com/FreifunkFranken/firmware/blob/master/src/packages/fff/fff
-network/files/lib/functions/fff/network

Unter ipEUIsuffix: Der awk macht fast das gleiche, ist aber für mein Auge
geschmeidiger. Ich würde eine Funktion da mit reinbauen:

macShiftBit() { 
 	# Returns a MAC address with shifted bit (a8:bb:cc:dd:ee:ff) 
 	# based on the mac address (aa:bb:cc:bb:ee:ff) of a specified device
 	# 
 	# Argument: name of device (e.g. phy0) 
 
 	[ $# -ne "1" ] && return 1 
 
  	local dev=$1 
 
  	awk -F: '{ printf("%02x:%s:%s:%s:%s:%s\n", xor(("0x"$1),2), $2, $3,
$4, $5, $6) }' "sys/class/ieee80211/${dev}/macaddress" 
 	return 0 
 }

Beste Grüße

Adrian

> -----Original Message-----
> From: franken-dev [mailto:franken-dev-bounces@freifunk.net] On Behalf
> Of Fabian Bläse
> Sent: Montag, 6. November 2017 10:53
> To: franken-dev@freifunk.net
> Subject: [PATCH 1/2] fff-network: Get MAC from wifi device instead of wifi
> network
> 
> Using wifi devices makes it possible to get mac address without having to
> configure wifi networks.
> 
> Signed-off-by: Fabian Bläse <fabian@blaese.de>
> ---
> This patch should be tested extensively.
> 
> It's important, that
>  - br-mesh has the mac address printed on the device
>  - w2mesh, w5mesh and ethmesh have unique mac addresses
> 
> The changes for the following devices have been verified:
>  - tl-wa850re-v1: Christian Dresel
>  - tl-wa901nd-v2: Fabian Bläse
>  - tl-wdr3500-v1: Tim Niemeyer
>  - tl-wdr3600-v1: Adrian Schmutzler
>  - tl-wdr4300-v1: Christian Dresel
>  - tl-wdr4900-v1: Fabian Bläse
>  - ubnt-bullet-m: Christian Dresel
>  - ubnt-nano-m: Christian Dresel
> 
> 
> Everything from here hasn't been verified on a real device.
> 
> The following devices only have one phy, so phy0 should have the same
> address as wXmesh:
>  - tl-wa860re-v1
>  - tl-wr740n-v4
>  - tl-wr741nd-v2
>  - tl-wr741nd-v4
>  - ubnt-loco-m-xw
>  - ubnt-unifi
> 
> The following devices have multiple phy, so it has been systematically
> guessed, which phy is the correct one:
>  - tl-wdr4310-v1
> 
> The following devices used wXap before, which should have the mac address
> of phyX with it's locally administered bit flipped:
>  - tl-wr1043nd-v1
>  - cpe210
>  - cpe510
> 
>  src/packages/fff/fff-network/ar71xx/network.cpe210         | 5 ++++-
>  src/packages/fff/fff-network/ar71xx/network.cpe510         | 5 ++++-
>  src/packages/fff/fff-network/ar71xx/network.tl-wa850re-v1  | 2 +-
>  src/packages/fff/fff-network/ar71xx/network.tl-wa860re-v1  | 2 +-
>  src/packages/fff/fff-network/ar71xx/network.tl-wa901nd-v2  | 2 +-
>  src/packages/fff/fff-network/ar71xx/network.tl-wdr3500-v1  | 2 +-
>  src/packages/fff/fff-network/ar71xx/network.tl-wdr3600-v1  | 2 +-
>  src/packages/fff/fff-network/ar71xx/network.tl-wdr4300-v1  | 2 +-
>  src/packages/fff/fff-network/ar71xx/network.tl-wdr4310-v1  | 2 +-
>  src/packages/fff/fff-network/ar71xx/network.tl-wr1043nd-v1 | 5 ++++-
>  src/packages/fff/fff-network/ar71xx/network.tl-wr740n-v4   | 2 +-
>  src/packages/fff/fff-network/ar71xx/network.tl-wr741nd-v2  | 2 +-
>  src/packages/fff/fff-network/ar71xx/network.tl-wr741nd-v4  | 2 +-
> src/packages/fff/fff-network/ar71xx/network.ubnt-bullet-m  | 2 +-
> src/packages/fff/fff-network/ar71xx/network.ubnt-loco-m-xw | 2 +-
>  src/packages/fff/fff-network/ar71xx/network.ubnt-nano-m    | 2 +-
>  src/packages/fff/fff-network/ar71xx/network.ubnt-unifi     | 2 +-
>  src/packages/fff/fff-network/mpc85xx/network.tl-wdr4900-v1 | 5 ++++-
>  18 files changed, 30 insertions(+), 18 deletions(-)
> 
> diff --git a/src/packages/fff/fff-network/ar71xx/network.cpe210
> b/src/packages/fff/fff-network/ar71xx/network.cpe210
> index a7a91bc..4723d9a 100644
> --- a/src/packages/fff/fff-network/ar71xx/network.cpe210
> +++ b/src/packages/fff/fff-network/ar71xx/network.cpe210
> @@ -6,8 +6,11 @@ CLIENT_PORTS="0t"
>  WAN_PORTS="0t"
>  BATMAN_PORTS="0t"
> 
> +# use mac address from phy0 with 'locally administered' bit set to '1'
> +# only possible, because wXmesh is created first and therefore gets the
> 'universally administered address'
> +
> +ETHMESHMAC=$(printf "%x\n" $(( 0x$(cat
> +/sys/class/ieee80211/phy0/macaddress | cut -d: -f1) | 0x2 ))):$(cat
> +/sys/class/ieee80211/phy0/macaddress | cut -d: -f2-6)
>  ROUTERMAC=$(cat /sys/class/net/eth0/address) -ETHMESHMAC=$(cat
> /sys/class/net/w2ap/address)
> 
>  . /etc/network.mode
> 
> diff --git a/src/packages/fff/fff-network/ar71xx/network.cpe510
> b/src/packages/fff/fff-network/ar71xx/network.cpe510
> index d5f946f..736e313 100644
> --- a/src/packages/fff/fff-network/ar71xx/network.cpe510
> +++ b/src/packages/fff/fff-network/ar71xx/network.cpe510
> @@ -6,7 +6,10 @@ CLIENT_PORTS="0t"
>  WAN_PORTS="0t"
>  BATMAN_PORTS="0t"
> 
> -ETHMESHMAC=$(cat /sys/class/net/w2ap/address)
> +# use mac address from phy0 with 'locally administered' bit set to '1'
> +# only possible, because wXmesh is created first and therefore gets the
> 'universally administered address'
> +
> +ETHMESHMAC=$(printf "%x\n" $(( 0x$(cat
> +/sys/class/ieee80211/phy0/macaddress | cut -d: -f1) | 0x2 ))):$(cat
> +/sys/class/ieee80211/phy0/macaddress | cut -d: -f2-6)
> 
>  . /etc/network.mode
> 
> diff --git a/src/packages/fff/fff-network/ar71xx/network.tl-wa850re-v1
> b/src/packages/fff/fff-network/ar71xx/network.tl-wa850re-v1
> index 7c342a6..372750c 100644
> --- a/src/packages/fff/fff-network/ar71xx/network.tl-wa850re-v1
> +++ b/src/packages/fff/fff-network/ar71xx/network.tl-wa850re-v1
> @@ -7,4 +7,4 @@ ONE_PORT="YES"
> 
>  . /etc/network.mode
> 
> -ROUTERMAC=$(cat /sys/class/net/w2mesh/address)
> +ROUTERMAC=$(cat /sys/class/ieee80211/phy0/macaddress)
> diff --git a/src/packages/fff/fff-network/ar71xx/network.tl-wa860re-v1
> b/src/packages/fff/fff-network/ar71xx/network.tl-wa860re-v1
> index 7c342a6..372750c 100644
> --- a/src/packages/fff/fff-network/ar71xx/network.tl-wa860re-v1
> +++ b/src/packages/fff/fff-network/ar71xx/network.tl-wa860re-v1
> @@ -7,4 +7,4 @@ ONE_PORT="YES"
> 
>  . /etc/network.mode
> 
> -ROUTERMAC=$(cat /sys/class/net/w2mesh/address)
> +ROUTERMAC=$(cat /sys/class/ieee80211/phy0/macaddress)
> diff --git a/src/packages/fff/fff-network/ar71xx/network.tl-wa901nd-v2
> b/src/packages/fff/fff-network/ar71xx/network.tl-wa901nd-v2
> index 7c342a6..372750c 100644
> --- a/src/packages/fff/fff-network/ar71xx/network.tl-wa901nd-v2
> +++ b/src/packages/fff/fff-network/ar71xx/network.tl-wa901nd-v2
> @@ -7,4 +7,4 @@ ONE_PORT="YES"
> 
>  . /etc/network.mode
> 
> -ROUTERMAC=$(cat /sys/class/net/w2mesh/address)
> +ROUTERMAC=$(cat /sys/class/ieee80211/phy0/macaddress)
> diff --git a/src/packages/fff/fff-network/ar71xx/network.tl-wdr3500-v1
> b/src/packages/fff/fff-network/ar71xx/network.tl-wdr3500-v1
> index e859a9b..59b96df 100644
> --- a/src/packages/fff/fff-network/ar71xx/network.tl-wdr3500-v1
> +++ b/src/packages/fff/fff-network/ar71xx/network.tl-wdr3500-v1
> @@ -4,4 +4,4 @@ CLIENT_PORTS="0t 1 2"
>  WAN_PORTS=
>  BATMAN_PORTS="0t 3 4"
> 
> -ROUTERMAC=$(cat /sys/class/net/w2mesh/address)
> +ROUTERMAC=$(cat /sys/class/ieee80211/phy0/macaddress)
> diff --git a/src/packages/fff/fff-network/ar71xx/network.tl-wdr3600-v1
> b/src/packages/fff/fff-network/ar71xx/network.tl-wdr3600-v1
> index 1ba9c24..73e7703 100644
> --- a/src/packages/fff/fff-network/ar71xx/network.tl-wdr3600-v1
> +++ b/src/packages/fff/fff-network/ar71xx/network.tl-wdr3600-v1
> @@ -4,4 +4,4 @@ CLIENT_PORTS="0t 4 5"
>  WAN_PORTS="0t 1"
>  BATMAN_PORTS="0t 2 3"
> 
> -ROUTERMAC=$(cat /sys/class/net/w5mesh/address)
> +ROUTERMAC=$(cat /sys/class/ieee80211/phy1/macaddress)
> diff --git a/src/packages/fff/fff-network/ar71xx/network.tl-wdr4300-v1
> b/src/packages/fff/fff-network/ar71xx/network.tl-wdr4300-v1
> index 1ba9c24..73e7703 100644
> --- a/src/packages/fff/fff-network/ar71xx/network.tl-wdr4300-v1
> +++ b/src/packages/fff/fff-network/ar71xx/network.tl-wdr4300-v1
> @@ -4,4 +4,4 @@ CLIENT_PORTS="0t 4 5"
>  WAN_PORTS="0t 1"
>  BATMAN_PORTS="0t 2 3"
> 
> -ROUTERMAC=$(cat /sys/class/net/w5mesh/address)
> +ROUTERMAC=$(cat /sys/class/ieee80211/phy1/macaddress)
> diff --git a/src/packages/fff/fff-network/ar71xx/network.tl-wdr4310-v1
> b/src/packages/fff/fff-network/ar71xx/network.tl-wdr4310-v1
> index 1ba9c24..73e7703 100644
> --- a/src/packages/fff/fff-network/ar71xx/network.tl-wdr4310-v1
> +++ b/src/packages/fff/fff-network/ar71xx/network.tl-wdr4310-v1
> @@ -4,4 +4,4 @@ CLIENT_PORTS="0t 4 5"
>  WAN_PORTS="0t 1"
>  BATMAN_PORTS="0t 2 3"
> 
> -ROUTERMAC=$(cat /sys/class/net/w5mesh/address)
> +ROUTERMAC=$(cat /sys/class/ieee80211/phy1/macaddress)
> diff --git a/src/packages/fff/fff-network/ar71xx/network.tl-wr1043nd-v1
> b/src/packages/fff/fff-network/ar71xx/network.tl-wr1043nd-v1
> index 12f49e2..97190bd 100644
> --- a/src/packages/fff/fff-network/ar71xx/network.tl-wr1043nd-v1
> +++ b/src/packages/fff/fff-network/ar71xx/network.tl-wr1043nd-v1
> @@ -4,5 +4,8 @@ CLIENT_PORTS="3 4 5t"
>  WAN_PORTS="0 5t"
>  BATMAN_PORTS="1 2 5t"
> 
> -ETHMESHMAC=$(cat /sys/class/net/w2ap/address)
> +# use mac address from phy0 with 'locally administered' bit set to '1'
> +# only possible, because wXmesh is created first and therefore gets the
> 'universally administered address'
> +
> +ETHMESHMAC=$(printf "%x\n" $(( 0x$(cat
> +/sys/class/ieee80211/phy0/macaddress | cut -d: -f1) | 0x2 ))):$(cat
> +/sys/class/ieee80211/phy0/macaddress | cut -d: -f2-6)
>  ROUTERMAC=$(cat /sys/class/net/eth0/address) diff --git
> a/src/packages/fff/fff-network/ar71xx/network.tl-wr740n-v4
> b/src/packages/fff/fff-network/ar71xx/network.tl-wr740n-v4
> index 114ba49..334e498 100644
> --- a/src/packages/fff/fff-network/ar71xx/network.tl-wr740n-v4
> +++ b/src/packages/fff/fff-network/ar71xx/network.tl-wr740n-v4
> @@ -6,4 +6,4 @@ WAN_PORTS=
>  BATMAN_PORTS="2 3 0t"
> 
>  ETHMESHMAC=$(cat /sys/class/net/eth1/address) -ROUTERMAC=$(cat
> /sys/class/net/w2mesh/address)
> +ROUTERMAC=$(cat /sys/class/ieee80211/phy0/macaddress)
> diff --git a/src/packages/fff/fff-network/ar71xx/network.tl-wr741nd-v2
> b/src/packages/fff/fff-network/ar71xx/network.tl-wr741nd-v2
> index 5f2300d..c8ddd0f 100644
> --- a/src/packages/fff/fff-network/ar71xx/network.tl-wr741nd-v2
> +++ b/src/packages/fff/fff-network/ar71xx/network.tl-wr741nd-v2
> @@ -6,4 +6,4 @@ WAN_PORTS=
>  BATMAN_PORTS="3 4 0t"
> 
>  ETHMESHMAC=$(cat /sys/class/net/eth1/address) -ROUTERMAC=$(cat
> /sys/class/net/w2mesh/address)
> +ROUTERMAC=$(cat /sys/class/ieee80211/phy0/macaddress)
> diff --git a/src/packages/fff/fff-network/ar71xx/network.tl-wr741nd-v4
> b/src/packages/fff/fff-network/ar71xx/network.tl-wr741nd-v4
> index 114ba49..334e498 100644
> --- a/src/packages/fff/fff-network/ar71xx/network.tl-wr741nd-v4
> +++ b/src/packages/fff/fff-network/ar71xx/network.tl-wr741nd-v4
> @@ -6,4 +6,4 @@ WAN_PORTS=
>  BATMAN_PORTS="2 3 0t"
> 
>  ETHMESHMAC=$(cat /sys/class/net/eth1/address) -ROUTERMAC=$(cat
> /sys/class/net/w2mesh/address)
> +ROUTERMAC=$(cat /sys/class/ieee80211/phy0/macaddress)
> diff --git a/src/packages/fff/fff-network/ar71xx/network.ubnt-bullet-m
> b/src/packages/fff/fff-network/ar71xx/network.ubnt-bullet-m
> index 7c342a6..372750c 100644
> --- a/src/packages/fff/fff-network/ar71xx/network.ubnt-bullet-m
> +++ b/src/packages/fff/fff-network/ar71xx/network.ubnt-bullet-m
> @@ -7,4 +7,4 @@ ONE_PORT="YES"
> 
>  . /etc/network.mode
> 
> -ROUTERMAC=$(cat /sys/class/net/w2mesh/address)
> +ROUTERMAC=$(cat /sys/class/ieee80211/phy0/macaddress)
> diff --git a/src/packages/fff/fff-network/ar71xx/network.ubnt-loco-m-xw
> b/src/packages/fff/fff-network/ar71xx/network.ubnt-loco-m-xw
> index 7c342a6..372750c 100644
> --- a/src/packages/fff/fff-network/ar71xx/network.ubnt-loco-m-xw
> +++ b/src/packages/fff/fff-network/ar71xx/network.ubnt-loco-m-xw
> @@ -7,4 +7,4 @@ ONE_PORT="YES"
> 
>  . /etc/network.mode
> 
> -ROUTERMAC=$(cat /sys/class/net/w2mesh/address)
> +ROUTERMAC=$(cat /sys/class/ieee80211/phy0/macaddress)
> diff --git a/src/packages/fff/fff-network/ar71xx/network.ubnt-nano-m
> b/src/packages/fff/fff-network/ar71xx/network.ubnt-nano-m
> index 7c342a6..372750c 100644
> --- a/src/packages/fff/fff-network/ar71xx/network.ubnt-nano-m
> +++ b/src/packages/fff/fff-network/ar71xx/network.ubnt-nano-m
> @@ -7,4 +7,4 @@ ONE_PORT="YES"
> 
>  . /etc/network.mode
> 
> -ROUTERMAC=$(cat /sys/class/net/w2mesh/address)
> +ROUTERMAC=$(cat /sys/class/ieee80211/phy0/macaddress)
> diff --git a/src/packages/fff/fff-network/ar71xx/network.ubnt-unifi
> b/src/packages/fff/fff-network/ar71xx/network.ubnt-unifi
> index 7c342a6..372750c 100644
> --- a/src/packages/fff/fff-network/ar71xx/network.ubnt-unifi
> +++ b/src/packages/fff/fff-network/ar71xx/network.ubnt-unifi
> @@ -7,4 +7,4 @@ ONE_PORT="YES"
> 
>  . /etc/network.mode
> 
> -ROUTERMAC=$(cat /sys/class/net/w2mesh/address)
> +ROUTERMAC=$(cat /sys/class/ieee80211/phy0/macaddress)
> diff --git a/src/packages/fff/fff-network/mpc85xx/network.tl-wdr4900-v1
> b/src/packages/fff/fff-network/mpc85xx/network.tl-wdr4900-v1
> index d293f06..452a2f0 100644
> --- a/src/packages/fff/fff-network/mpc85xx/network.tl-wdr4900-v1
> +++ b/src/packages/fff/fff-network/mpc85xx/network.tl-wdr4900-v1
> @@ -4,5 +4,8 @@ CLIENT_PORTS="0t 4 5"
>  WAN_PORTS="0t 1"
>  BATMAN_PORTS="0t 2 3"
> 
> -ETHMESHMAC=$(cat /sys/class/net/w2ap/address)
> +# use mac address from phy1 with 'locally administered' bit set to '1'
> +# only possible, because wXmesh is created first and therefore gets the
> 'universally administered address'
> +
> +ETHMESHMAC=$(printf "%x\n" $(( 0x$(cat
> +/sys/class/ieee80211/phy1/macaddress | cut -d: -f1) | 0x2 ))):$(cat
> +/sys/class/ieee80211/phy1/macaddress | cut -d: -f2-6)
>  ROUTERMAC=$(cat /sys/class/net/eth0/address)
> --
> 2.14.2
> 
> --
> franken-dev mailing list
> franken-dev@freifunk.net
> http://lists.freifunk.net/mailman/listinfo/franken-dev-freifunk.net
Fabian Blaese Nov. 6, 2017, 11:18 a.m.
Hallo Adrian,

> On 6. Nov 2017, at 11:11, Adrian Schmutzler <mail@adrianschmutzler.de> wrote:
> 
> Ich kann noch beim wa860re und cpe210 Testen, die sind ja zu meiner
> Überraschung als nicht verified markiert.

Zum wa860re stand nirgends, wäre cool, wenn du das machen könntest.
Bei der cpe210 würde ich warten, bis $jemand den codeschnipsel wirklich auf dem Gerät getestet hat.


> Der Code für die w2ap-Geräte ist so lang, dass da in meinen Augen eine
> externe Funktion Sinn macht, auch wenn es im Moment nur vier Mal verwendet
> wird. Ist ja eigtl eine allgemeine Funktionalität, die auch an anderer
> Stelle relevant sein könnte.

Absolut, pack ich heute Abend in eine v2.

Fabian