在 OpenWrt Chaos Calmer 15.05.1 中更改 wifi 接口的 MAC 地址

Changing MAC address for wifi interface in OpenWrt Chaos Calmer 15.05.1

我已经配置了一个 OpenWrt(我们称之为 child)从 SD 卡启动,该卡具有来自另一个 OpenWrt(我们称之为制造商)的固件和软件 re-imaged,如下所示:http://labs.mediatek.com/forums/posts/list/3619.page#p7191.

除了 child 和制造商的 wlan 接口显示相同的 MAC 地址(制造商之一)的问题外,一切正常。因此,如果它们都处于 AP 模式,我只能连接到其中一个。

我曾尝试在 'wifi-device'、'wifi-iface' 中提供 'macaddr' 选项,但没有任何效果。我还尝试使用命令设置硬件地址:

ifconfig ra0 hw ether 'XX:XX:XX:XX:XX:XX'

但这给了我错误

ifconfig: SIOCSIFHWADDR: Operation not supported

我可以看到 mac 地址是从

中选取的

/sys/class/net/ra0/address

其中 ra0 是接口名称,但它是一个只读文件并且不在 SD 卡上(至少具有给定路径)

parent 的 mac 地址必须在 sd 卡上,但至少不能使用 grep 找到它。

因此,我将不胜感激,无论是更改 SD 卡上的地址 post 映像还是在系统启动时覆盖它。

谢谢

您可以查看 "art" partition.If 中的校准数据,您的 MAC 地址存储在其中,然后您可以更改它。

root@OpenWrt:/# cat /proc/mtd 
dev:    size   erasesize  name
mtd0: 00030000 00010000 "u-boot"
mtd1: 00fc0000 00010000 "firmware"
mtd2: 00120000 00010000 "kernel"
mtd3: 00ea0000 00010000 "rootfs"
mtd4: 00c60000 00010000 "rootfs_data"
mtd5: 00010000 00010000 "art"

所以我的是 /dev/mtd5 。现在我将检查里面的校准数据

cat /dev/mtd5 > art.img
hexdump art.img

我的wifi MAC地址是04:F0:21:07:7C:EC。运行 hexdump art.img后显示

0001000 0202 04f0 2107 7cec 0020 2020 0030 6530

我需要使用软件应用程序修改 art.img,将“04f0 2107 7cec”更改为新的 MAC 地址

然后最后一步是:将编辑好的art.img复制到/dev/mtd5

 cat art.img > /dev/mtd5

感谢您的帮助。

好像是mediatek linkit 7688,MAC存放在/dev/mtd2。理想情况下,这是一个 ROM 分区,从 SD 卡或原始闪存启动时不应受到影响。

但我发现在启动时它会在 /lib/firmware/mt7628.eeprom 文件下缓存相同的内容,该文件也会在从 linkit 准备 sd 卡时被复制。

所以当我从 SD 卡启动第二个 linkit 时,它认为第一个 linkit 缓存是它自己的 /dev/mtd2 缓存,因此是问题所在。

为了解决这个问题,准备好sd卡镜像后,删除文件/mnt/upper/lib/firmware/mt7628.eeprom,并创建一个符号链接到/overlay-boot/upper/lib/firmware/mt7628.eeprom,其中/mnt 是 sd 卡挂载位置,overlay-boot 是原始闪存挂载位置