[openwrt/openwrt] rockchip: use stable MAC-address for NanoPi R2S

LEDE Commits lede-commits at lists.infradead.org
Mon Jan 18 11:33:22 EST 2021


blocktrron pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/a8a17fd22326f0d1aa7644556eea6010e0779afe

commit a8a17fd22326f0d1aa7644556eea6010e0779afe
Author: David Bauer <mail at david-bauer.net>
AuthorDate: Fri Jan 15 02:15:12 2021 +0100

    rockchip: use stable MAC-address for NanoPi R2S
    
    The NanoPi R2S does not have a board specific MAC address written inside
    e.g. an EEPROM, hence why it is randomly generated on first boot.
    
    The issue with that however is the lack of a driver for the PRNG.
    It often results to the same MAC address used on multiple boards by
    default, as urngd is not active at this early stage resulting in low
    available entropy.
    
    There is however a semi-unique identifier available to us, which is the
    CID of the used SD card. It is unique to each SD card, hence we can use
    it to generate the MAC address used for LAN and WAN.
    
    Signed-off-by: David Bauer <mail at david-bauer.net>
---
 target/linux/rockchip/armv8/base-files/etc/board.d/02_network | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/target/linux/rockchip/armv8/base-files/etc/board.d/02_network b/target/linux/rockchip/armv8/base-files/etc/board.d/02_network
index e129fd6a67..48133c81a1 100755
--- a/target/linux/rockchip/armv8/base-files/etc/board.d/02_network
+++ b/target/linux/rockchip/armv8/base-files/etc/board.d/02_network
@@ -17,6 +17,13 @@ rockchip_setup_interfaces()
 	esac
 }
 
+nanopi_r2s_generate_mac()
+{
+	local sd_hash=$(sha256sum /sys/devices/platform/ff500000.dwmmc/mmc_host/mmc0/mmc0:*/cid)
+	local mac_base=$(macaddr_canonicalize "$(echo "${sd_hash}" | dd bs=1 count=12 2>/dev/null)")
+	echo "$(macaddr_unsetbit_mc "$(macaddr_setbit_la "${mac_base}")")"
+}
+
 rockchip_setup_macs()
 {
 	local board="$1"
@@ -26,7 +33,7 @@ rockchip_setup_macs()
 
 	case "$board" in
 	friendlyarm,nanopi-r2s)
-		wan_mac=$(macaddr_random)
+		wan_mac=$(nanopi_r2s_generate_mac)
 		lan_mac=$(macaddr_add "$wan_mac" +1)
 		;;
 	esac



More information about the lede-commits mailing list