本帖最后由 flyingbing 于 2015-11-23 18:09 编辑
为了解决复制flash固件,导致多台openwrt设备在同一网络中使用产生MAC冲突
最偷懒的做法是通过串口控制台修改 /etc/config/ 下的网络配置文件 network 和 wireless.
步骤一:用vi编辑器打开/etc/config/network 文件
root@OpenWrt:/# vim /etc/config/network
如果对uci 熟悉的,可以直接用 uci 命令设置
步骤二 增加 macaddr 参数,
- config interface lan
- option ifname eth2
- option status 1
- option proto static
- option ipaddr 192.168.200.1
- option netmask 255.255.255.0
- option macaddr 64:51:7e:80:35:FA
步骤三 重启网络或者重启系统
root@OpenWrt:/# etc/init.d/network restart 重启网络
但是上述方法,如果恢复出厂设置之后,配置文件都会消失。
最标本兼治的方法是,修改FLASH 的factory 分区(art 分区)
步骤一:使用 iwpriv 命令, 在7688开发板输入
root@OpenWrt:/# iwpriv
eth0.1 no private ioctls.
lo no private ioctls.
ra0 Available private ioctls :
set (8BE2) : set 1536 char & get 0
show (8BF1) : set 1024 char & get 0
get_site_survey (8BED) : set 0 & get 1024 char
set_wsc_oob (8BF9) : set 1024 char & get 1024 char
get_mac_table (8BEF) : set 1024 char & get 1024 char
e2p (8BE7) : set 1024 char & get 1024 char
bbp (8BE3) : set 1024 char & get 1024 char
mac (8BE5) : set 1024 char & get 1024 char
rf (8BF3) : set 1024 char & get 1024 char
get_ba_table (8BF6) : set 1024 char & get 1024 char
stat (8BE9) : set 1024 char & get 1024 char
apcli1 Available private ioctls :
set (8BE2) : set 1536 char & get 0
show (8BF1) : set 1024 char & get 0
get_site_survey (8BED) : set 0 & get 1024 char
set_wsc_oob (8BF9) : set 1024 char & get 1024 char
get_mac_table (8BEF) : set 1024 char & get 1024 char
e2p (8BE7) : set 1024 char & get 1024 char
bbp (8BE3) : set 1024 char & get 1024 char
mac (8BE5) : set 1024 char & get 1024 char
rf (8BF3) : set 1024 char & get 1024 char
get_ba_table (8BF6) : set 1024 char & get 1024 char
stat (8BE9) : set 1024 char & get 1024 char
eth0 no private ioctls.
apcli0 Available private ioctls :
set (8BE2) : set 1536 char & get 0
show (8BF1) : set 1024 char & get 0
get_site_survey (8BED) : set 0 & get 1024 char
set_wsc_oob (8BF9) : set 1024 char & get 1024 char
get_mac_table (8BEF) : set 1024 char & get 1024 char
e2p (8BE7) : set 1024 char & get 1024 char
bbp (8BE3) : set 1024 char & get 1024 char
mac (8BE5) : set 1024 char & get 1024 char
rf (8BF3) : set 1024 char & get 1024 char
get_ba_table (8BF6) : set 1024 char & get 1024 char
stat (8BE9) : set 1024 char & get 1024 char
br-lan no private ioctls.
eth0.2 no private ioctls.
步骤二: 再接着输入
root@OpenWrt:/# iwpriv ra0 e2p
- ra0 e2p:
- [0x0000]:7628 [0x0002]:0201 [0x0004]:5164 [0x0006]:807E
- [0x0008]:FA35 [0x000A]:0000 [0x000C]:0000 [0x000E]:0000
- [0x0010]:FFFF [0x0012]:FFFF [0x0014]:FFFF [0x0016]:FFFF
- [0x0018]:FFFF [0x001A]:FFFF [0x001C]:FFFF [0x001E]:FFFF
- [0x0020]:0000 [0x0022]:0000 [0x0024]:0030 [0x0026]:0000
- [0x0028]:0C00 [0x002A]:E143 [0x002C]:2976 [0x002E]:0C00
- [0x0030]:E143 [0x0032]:2A76 [0x0034]:3411 [0x0036]:2000
- [0x0038]:FFFF [0x003A]:0100 [0x003C]:0000 [0x003E]:0000
- [0x0040]:0000 [0x0042]:0022 [0x0044]:0000 [0x0046]:0000
步骤三: 结合 Ralink_QA_Tool_Introduction__20081201.pdf 对寄存器做修改,参考附件
从手册可以看出,ra0 的 mac 是读取 0x0004,0x0006 和 0x0008 三个寄存器。
若果想把 Mac 地址修改为 64:51:7e:80:88:99
输入:
root@OpenWrt:/# iwpriv ra0 e2p 08=9988 (高字节09保存99,低字节08保存88)
步骤四: 删除 wireless 文件,重启网络或者重启 wrtnode2r 板子
root@OpenWrt:/# rm /etc/config/wireless
root@OpenWrt:/# etc/init.d/network restart 重启网络
要转载,请说明出处,谢谢!