From ecd8f7e294a73d56906f7edcd8206ac6e304875c Mon Sep 17 00:00:00 2001 From: Mikhail Zhilkin Date: Sat, 9 Jul 2022 17:09:57 +0000 Subject: =?UTF-8?q?ramips:=20get=20MAC=20addr=20from=20the=20encrypted=20p?= =?UTF-8?q?artition=20(WG4=D1=85=D1=85223)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This commit resolves #10062. Adds decryption of the Arcadyan WG4xx223 configuration partition (board_data)to get base MAC address from it. As a result, after this change the hack with saving MAC addressees to u-boot-env before installation of OpenWrt is no longer necessary. This is necessary for the following devices: - Beeline Smartbox Flash (Arcadyan WG443223) - MTS WG430223 (Arcadyan WG430223) Example: +----------------+-------------------+------------------------+ | | MTS WG430223 | Beeline Smartbox Flash | +----------------+-------------------+------------------------+ | base mac (mtd) | A4:xx:xx:51:xx:F4 | 30:xx:xx:51:xx:06 | | label | A4:xx:xx:51:xx:F4 | 30:xx:xx:51:xx:09 | | LAN | A4:xx:xx:51:xx:F6 | 30:xx:xx:51:xx:09 | | WAN | A4:xx:xx:51:xx:F4 | 30:xx:xx:51:xx:06 | | WLAN_2g | A4:xx:xx:51:xx:F5 | 30:xx:xx:51:xx:07 | | WLAN_5g | A6:xx:xx:21:xx:F5 | 32:xx:xx:41:xx:07 | +----------------+-------------------+------------------------+ Collected statistic shows that the 2-4th bits of the 7th byte of the WLAN_5g MAC are the constant (see #10062 for more details): - Beeline Smartbox Flash - 100 - MTS WG430223 - 010 Signed-off-by: Mikhail Zhilkin (cherry picked from commit a6b0d0806055a53a2538df83f8322c38ee9f3441) --- .../ramips/mt7621/base-files/etc/board.d/02_network | 14 +++++++++----- .../etc/hotplug.d/ieee80211/10_fix_wifi_mac | 21 +++++++++++++++------ 2 files changed, 24 insertions(+), 11 deletions(-) (limited to 'target/linux/ramips/mt7621/base-files/etc') diff --git a/target/linux/ramips/mt7621/base-files/etc/board.d/02_network b/target/linux/ramips/mt7621/base-files/etc/board.d/02_network index ae8ee89d7f..2d119cb55e 100644 --- a/target/linux/ramips/mt7621/base-files/etc/board.d/02_network +++ b/target/linux/ramips/mt7621/base-files/etc/board.d/02_network @@ -129,11 +129,10 @@ ramips_setup_macs() wan_mac=$(mtd_get_mac_ascii u-boot-env et1macaddr) label_mac=$(mtd_get_mac_binary factory 0x4) ;; - beeline,smartbox-flash|\ - mts,wg430223) - lan_mac=$(mtd_get_mac_ascii u-boot-env eth2macaddr) - wan_mac=$(mtd_get_mac_ascii u-boot-env eth3macaddr) - label_mac=$lan_mac + beeline,smartbox-flash) + wan_mac=$(mtd_get_mac_encrypted_arcadyan "board_data") + label_mac=$(macaddr_add "$wan_mac" 3) + lan_mac=$label_mac ;; buffalo,wsr-1166dhp) local index="$(find_mtd_index "board_data")" @@ -196,6 +195,11 @@ ramips_setup_macs() wan_mac=$label_mac lan_mac=$(macaddr_add $label_mac 1) ;; + mts,wg430223) + wan_mac=$(mtd_get_mac_encrypted_arcadyan "board_data") + label_mac=$wan_mac + lan_mac=$(macaddr_add "$wan_mac" 2) + ;; netgear,wax202) lan_mac=$(mtd_get_mac_ascii Config mac) wan_mac=$(macaddr_add "$lan_mac" 1) diff --git a/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac b/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac index 265cd2eb28..0e08fb6df3 100644 --- a/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac +++ b/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac @@ -10,12 +10,13 @@ PHYNBR=${DEVPATH##*/phy} board=$(board_name) case "$board" in - beeline,smartbox-flash|\ - mts,wg430223) - hw_mac_addr_ra0="$(mtd_get_mac_ascii u-boot-env ra0macaddr)" - hw_mac_addr_rax0="$(mtd_get_mac_ascii u-boot-env rax0macaddr)" - [ "$PHYNBR" = "0" ] && echo -n $hw_mac_addr_ra0 > /sys${DEVPATH}/macaddress - [ "$PHYNBR" = "1" ] && echo -n $hw_mac_addr_rax0 > /sys${DEVPATH}/macaddress + beeline,smartbox-flash) + hw_mac_addr=$(macaddr_add $(mtd_get_mac_encrypted_arcadyan "board_data") 1) + [ "$PHYNBR" = "0" ] && echo -n "$hw_mac_addr" > /sys${DEVPATH}/macaddress + hw_mac_addr=$(macaddr_setbit $hw_mac_addr 26) + hw_mac_addr=$(macaddr_unsetbit $hw_mac_addr 27) + hw_mac_addr=$(macaddr_unsetbit $hw_mac_addr 28) + [ "$PHYNBR" = "1" ] && macaddr_setbit_la $hw_mac_addr > /sys${DEVPATH}/macaddress ;; cudy,x6) hw_mac_addr="$(mtd_get_mac_binary factory 0x4)" @@ -74,6 +75,14 @@ case "$board" in [ "$PHYNBR" = "0" ] && macaddr_add $hw_mac_addr 2 > /sys${DEVPATH}/macaddress [ "$PHYNBR" = "1" ] && macaddr_add $hw_mac_addr 3 > /sys${DEVPATH}/macaddress ;; + mts,wg430223) + hw_mac_addr=$(macaddr_add $(mtd_get_mac_encrypted_arcadyan "board_data") 1) + [ "$PHYNBR" = "0" ] && echo -n "$hw_mac_addr" > /sys${DEVPATH}/macaddress + hw_mac_addr=$(macaddr_unsetbit $hw_mac_addr 26) + hw_mac_addr=$(macaddr_setbit $hw_mac_addr 27) + hw_mac_addr=$(macaddr_unsetbit $hw_mac_addr 28) + [ "$PHYNBR" = "1" ] && macaddr_setbit_la $hw_mac_addr > /sys${DEVPATH}/macaddress + ;; oraybox,x3a) if [ "$PHYNBR" = "1" ]; then hw_mac_addr="$(mtd_get_mac_binary factory 0x4)" -- cgit v1.2.3