From patchwork Mon Nov 6 09:52:50 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [1/2] fff-network: Get MAC from wifi device instead of wifi network From: Fabian Blaese X-Patchwork-Id: 673 Message-Id: <20171106095252.11033-1-fabian@blaese.de> To: franken-dev@freifunk.net Date: Mon, 6 Nov 2017 10:52:50 +0100 Using wifi devices makes it possible to get mac address without having to configure wifi networks. Signed-off-by: Fabian Bläse --- 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)