转载自:https://blog.csdn.net/wwx0715/article/details/53338948
对于MT7620a,默认的mac地址都是保存在factory分区,具体为:
1.offset 0x04 WIIF MAC
2.offset 0x28 LAN MAC
3.offset 0x2E WAN MAC
factory分区不仅保存这mac,还包括wifi的校准参数。
以dts使用MT7620a.dts为例,openwrt使用15.05版本。
一、wifi mac地址
要是wifi能够起来,首先配置dts使wifi驱动能够找到正确的参数,在MT7620a.dts(target/linux/ramips/dts/)中先添加一下项:
wmac@10180000 {
ralink,mtd-eeprom = <&factory 0>;
};
wifi驱动自动从factory分区的偏移为0开始读取参数。wifi的mac地址自动从0x04偏移获取。
二、LAN/WAN mac地址
默认情况下ethernet也是从0x04获取的eth地址,网络驱动会从该偏移获取的mac地址作为eth的mac地址:
ethernet@10100000 {
status = "okay";
mtd-mac-address = <&factory 0x4>;
并且默认情况下lan mac取eth mac地址,wan mac在lan mac之上加1,从02_network(target/linux/ramips/base-files/etc/board.d)可以看出:
1
ramips_setup_macs()函数中:
*)
lan_mac=$(cat /sys/class/net/eth0/address)
wan_mac=$(macaddr_add "$lan_mac" 1)
;;
要想改变lan/wan的mac地址修改本脚本即可,参考其他model获取mac地址的方式,定义如下mac的获取格式:
lan_mac=$(mtd_get_mac_binary factory 40)
wan_mac=$(mtd_get_mac_binary factory 46)
40和46对应的十六进制数就是lan和wan的偏移量0x28和0x2E。