使用systemd修正CroeELEC的MAC地址

问题缘由

  • Android版本的固件,可以通过uboot上keyman维护mac/mac_wifi等信息,参考

  • s905_autoscript 可以通过uboot-tools里面的mkimage制作,可以免拆机执行keyman的命令

  • 但是CoreELEC不读取keyman里面的任何配置,所以一般都是直接加在s905_autoscript启动参数里面

  • 但是由于CoreELEC内核处理的原因,wifi的MAC不从这里面读取,而内置的CYW43455芯片没有nvram,他们的做法是上传一个txt模拟nvram到内核,N1使用的是/usr/lib/firmware/brcm/nvram_ap6255.txt 写死了是00:90:4c:c5:12:38 这个dummy mac,所以改s905_autoscript的mac_wifi没有用

  • 同样,蓝牙的MAC也是类似的问题

解决方案

复杂

修改内核个,适配keyman或者动态修改nvram.txt内容,固件间不通用

简单

  • 用户态在网络启动之前读取自己uboot预设的环境变量设置设备MAC,把自己预设的变量保存到uboot也能让刷机后地址不变。

  • 传统的服务管理器无法在网络开启之前正确设置mac地址

实现方式

使用systemd+fw_setenv/fw_printenv

启动单元

GIST

vim /storage/.config/system.d/mac-address-loader@.service

确保fw_printenv能正常读取uboot的内容

然后我们把需要持久保存的的mac写入uboot的env

 

然后启用此服务即可

 

Author Info :
  • From:使用systemd修正CroeELEC的MAC地址
  • URL:https://blog.ihipop.info/2021/05/5315.html
  • Please Reserve This Link,Thanks!
  • 发表评论

    您的电子邮箱地址不会被公开。 必填项已用*标注