對於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)可以看出:
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。