恩山无线论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 22715|回复: 391

[N1盒子] 【已解决】关于N1刷机后mac地址变化问题的修复

    [复制链接]
发表于 2019-9-23 16:21 | 显示全部楼层 |阅读模式
本帖最后由 无线无极限 于 2021-4-24 15:59 编辑

很多网友刷机选清除flash或者恢复emmc镜像后,机器lan/wifi/蓝牙的mac都会变化。
以前发过一个帖子https://www.right.com.cn/forum/thread-972017-1-1.html
后来接了TTL线,用setenv设置了网卡的mac,但是无线和蓝牙的还是改不回来。

有时间又折腾了一下,修复过程分享下。
~可以直接跳到底下蓝色字部分看解决方法~
我又把盒子刷了小钢炮。在它的ttl输出有这样两段信息:
  1. amlkey_init() enter!
  2. amlkey_init() 71: already init!
  3. [EFUSE_MSG]keynum is 4
  4. [BL31]: tee size: 0
  5. [BL31]: tee size: 0
  6. [BL31]: tee size: 0
  7. [BL31]: tee size: 0
  8. [BL31]: tee size: 0
  9. [KM]Error:f[key_manage_query_size]L507:key[mac] not programed yet
  10. [KM]Error:f[key_manage_query_size]L507:key[deviceid] not programed yet
  11. [KM]Error:f[key_manage_query_size]L507:key[mac_wifi] not programed yet
  12. gpio: pin GPIOAO_2 (gpio 102) value is 1
  13. Hit Enter or space or Ctrl+C key to stop autoboot -- :  0
复制代码
  1. [    4.702213@1] <<GTP-INF>>[gt1x_ts_init:761] GTP driver installing...
  2. [    4.708437@1] <<-GT9XX-INFO->> GTP driver installing....
  3. [    4.713969@1] efusekeynum: 4
  4. [    4.716445@1] efusekeyname:             mac        offset:     0        size:     6
  5. [    4.722777@1] efusekeyname:          mac_bt        offset:     6        size:     6
  6. [    4.729179@1] efusekeyname:        mac_wifi        offset:    12        size:     6
  7. [    4.735541@1] efusekeyname:            usid        offset:    18        size:    16
  8. [    4.742183@1] efuse efuse: probe OK!
  9. [    4.747314@3] ge2d: ge2d_init_module
复制代码
可能这个mac设置在efuse中,再看下uboot中efuse命令的介绍
  1. gxl_p230_v1#efuse
  2. efuse - efuse commands

  3. Usage:
  4. efuse [read/write offset size [data]]
  5.   [read/wirte]  - read or write 'size' data from
  6.                   'offset' from efuse user data ;
  7.   [offset]      - the offset byte from the beginning
  8.                   of efuse user data zone;
  9.   [size]        - data size
  10.   [data]        - the optional argument for 'write',
  11.                   data is treated as characters
  12.   examples: efuse write 0xc 0xd abcdABCD1234
  13. [amlogic_set addr]
复制代码
结合上面的信息读下efuse内容
  1. gxl_p230_v1#efuse read 0x0 0x6
  2. cmd_efuse: offset is 0  size is  6
  3. [BL31]: tee size: 0
  4. [BL31]: tee size: 0
  5. efuse read data
  6. :00:00:00:00:00:00
  7. gxl_p230_v1#efuse read 0x6 0x6
  8. cmd_efuse: offset is 6  size is  6
  9. [BL31]: tee size: 0
  10. [BL31]: tee size: 0
  11. efuse read data
  12. :00:00:00:00:00:00
  13. gxl_p230_v1#efuse read 0xc 0x6
  14. cmd_efuse: offset is 12  size is  6
  15. [BL31]: tee size: 0
  16. [BL31]: tee size: 0
  17. efuse read data
  18. :00:00:00:00:00:00
  19. gxl_p230_v1#efuse read 0x12 0x10
  20. cmd_efuse: offset is 18  size is  16
  21. [BL31]: tee size: 0
  22. [BL31]: tee size: 0
  23. efuse read data
  24. :43:41:51:44:xx:33:xx:35:xx:4b:xx:32:xx:35:39:00
复制代码
可以看到mac和mac_wl部分是空白的,usid倒是对着呢(43:41:51:44:xx:33:xx:35:xx:4b:xx:32:xx:35:39:00各个字节是16进制asicii,就是机器的序列号
后来我用 efuse write 写入了mac和mac_wifi数据,结果没用~~~~~~(efuse只能写入一次,慎用!)

那么mac就是写在emmc某个保留位置(不同于env这些分区,因为我用ddbr恢复了emmc镜像,这些分区是被改写了的,可mac还是没变)
  1. [KM]Error:f[key_manage_query_size]L507:key[mac] not programed yet
复制代码
在N1的uboot中还有个 keyman 命令,这样的:
  1. gxl_p230_v1#keyman
  2. keyman - Unify key ops interfaces based dts cfg

  3. Usage:
  4. keyman     argv:  
  5.     init seedNum <dtbAddr>
  6.     read keyname addr <hex/str>
  7.     write keyname size addr
  8.     write keyname hex/str value
  9.     query exist/secure/size keyname
  10.     exit
复制代码
试一下:
  1. gxl_p230_v1#keyman query exist mac
  2. [KM]Msg:key[mac] is NOT Exist
  3. gxl_p230_v1#keyman query exist mac_wifi
  4. [KM]Msg:key[mac_wifi] is NOT Exist
  5. gxl_p230_v1#keyman query exist usid
  6. [BL31]: tee size: 0
  7. [KM]Msg:key[usid] is  Exist
复制代码
  1. gxl_p230_v1#keyman init 0x1234
  2. amlkey_init() enter!
  3. amlkey_init() 71: already init!
  4. [EFUSE_MSG]keynum is 4
  5. [BL31]: tee size: 0
  6. gxl_p230_v1#keyman query size usid
  7. [BL31]: tee size: 0
  8. [KM]Msg:key[usid] size is 16
  9. gxl_p230_v1#keyman query size mac
  10. [KM]Error:f[key_manage_query_size]L507:key[mac] not programed yet
  11. [KM]Error:f[do_keyman_query]L751:Fail in query key size, err=508
复制代码
接着上面,对照出错提示,用下面的命令就可以修复mac地址了:
  1. ##改写mac
  2. keyman write mac str FC:7C:02:XX:XX:XC

  3. ##改写mac_wifi
  4. keyman write mac_wifi str fc:7c:02:xx:xx:xb

  5. ##改写mac_bt
  6. keyman write mac_bt str fc:7c:02:xx:xx:xa

  7. ##改写deviceid
  8. keyman write deviceid str XXXXXXXXXXXXXXX
复制代码
上面的mac大写,mac_wifi/mac_bt小写。mac_wifi末位比mac少1,mac_bt末位比mac少2。deviceid就是机器的序列号。
通过命令将这4个key写入flash后,TTL不会再有出错信息,mac也固定了。

丢mac的根源就是key被擦除了(刷机选了错误的清除flash选项 / ddbr恢复这些操作),这个资料可以参考下:

Amlogic烧录工具V2使用手册V0.9

资料.jpg




方法2:不想拆机?看2L。

方法3:2L的操作搞不定?看4L.





评分

参与人数 4恩山币 +6 收起 理由
2727*** + 2 感谢你的分享,无论怎样,你都是最无私的人!来,说说,你E盘上还有啥一起给我吧!
ql13*** + 1 感谢你的分享,无论怎样,你都是最无私的人!
小小*** + 1 马上70周年国庆了,在此我祝你国庆节快乐!
wgy*** + 2 马上70周年国庆了,在此我祝你国庆节快乐!

查看全部评分

我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2019-10-3 00:03 | 显示全部楼层
本帖最后由 无线无极限 于 2020-7-17 13:50 编辑
无线无极限 发表于 2019-9-30 21:23
命令换到第6行前试试。你这是安装到emmc了?
我的机器安装了coreelec,不想再动(配置了很多东西),没 ...

抽空验证了下用aml_autoscript脚本改mac(小钢炮/armbian/coreelec启动盘),发现只加命令是不行的原来类似脚本的前面都是有64个字节头信息的,包含了校验码。改文件后校验通不过,脚本没运行,所以不成功。要运行修改后的脚本,需要改动部分header信息,那就用winhex手动改下吧。

1. 把启动U盘里面的aml_autoscript做个备份,原文件做一下修改(由于windows和linux文件的换行规则不同,所以不要用系统记事本,修改后可能会出错,用其他编辑器,如vscode这些),多余的命令去掉,只留改写mac和deviceid部分。如下:
  1. 'V3>芠賛? ?       )ha?                                   ?   keyman write mac str FC:7C:02:AA:BB:CC
  2. keyman write mac_wifi str fc:7c:02:aa:bb:cb
  3. keyman write mac_bt str fc:7c:02:aa:bb:ca
  4. keyman write deviceid str CAQDB3250000000
  5. sleep 1
  6. reboot
复制代码
保存后,用winhex打开。

2. 文件可以分成两段:前面64字节(header)和剩下的部分(data)。header包含了很多信息,需要修改的地方只有有3段:【data区size(数据大小)部分】【data区CRC校验部分】、【header区CRC校验部分】,见下图: 要修改的地方.jpg

3. 改写size部分:
修改size部分.jpg
文件的字节数减去64,结果转换为16进制,写入上图标识位置。第67、68字节是上面的结果再减去8得来的(0xB6=0xBE-0x08),同样做下修改。


4. 改写data区校验部分:选中0x0064到末尾,用winhex计算块的crc32(工具>计算哈希值>crc32)
修改data校验部分.jpg
用计算出来的值替换掉上图中标识部分。

5. 改写header校验部分
修改header校验部分.jpg
修改上图标识部分为00 00 00 00,然后选中0x0000到0x0063部分(开始的64字节),计算修改后这64个字节的crc32哈希值。

将计算结果再写回到标识部分。保存文件,现在就得到了能正常运行的脚本。
完成修改.jpg

使用方法:盒子插上U盘,终端输入命令:reboot update 。重启机器后稍等一会儿,然后断电拔U盘,就OK了。
记着修改完后把U盘上的aml_autoscript脚本换成原来备份的!

修改后的脚本传上来,可以直接用winhex改上图中标识部分,换成自己机器的mac和串号,然后按上面的步骤修改下文件的头信息就能用了。
脚本.zip (329 Bytes, 下载次数: 321)
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2020-2-26 16:23 | 显示全部楼层
lemon91 发表于 2020-2-24 02:07
修复成功,说说经过,用楼主的第二个方法,固件为F大最新的25+的Openwrt。
修改文件如下:
1、aml_autosc ...

2L忘了说下自己操作时的环境:启动盘用的小钢炮,机器上的系统是webpad2.2,最后一步是在adb下执行reboot update命令。
按道理只需要改aml_autoscript这个就行了,可能openwrt的启动流程和前面的几个系统不太一样,没深入研究。
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2021-4-24 14:25 | 显示全部楼层
本帖最后由 无线无极限 于 2021-4-24 14:31 编辑
lfm 发表于 2021-4-20 13:47
有个简便的方法,Linux下可以用mkimage命令直接给脚本加头信息

是的呢,有Linux环境,用mkimage更简单。
以ubuntu为例:
  • vscode新建文件aml_autoscript_tmp,内容如下
  1. keyman write mac str FC:7C:02:AA:BB:CC
  2. keyman write mac_wifi str fc:7c:02:aa:bb:cb
  3. keyman write mac_bt str fc:7c:02:aa:bb:ca
  4. keyman write deviceid str CAQDB3250000000
  5. sleep 1
  6. reboot
复制代码
  • 安装u-boot-tools
  1. apt install u-boot-tools
复制代码
  • 复制aml_autoscript_tmp到当前目录,用mkimage命令为文件添加头信息
  1. mkimage  -A arm -O linux -T script -C none  -d aml_autoscript_tmp aml_autoscript
复制代码
在当前目录下会生成aml_autoscript,这个文件复制到启动U盘,替换掉同名文件就OK了。



我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-9-23 20:58 | 显示全部楼层
支持研究,彻底开源n1
来自微站
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-9-24 11:09 | 显示全部楼层
支持一下,希望楼主能彻底解决这个问题。
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2019-9-24 15:33 | 显示全部楼层
ql1307096 发表于 2019-9-24 11:09
支持一下,希望楼主能彻底解决这个问题。

已经更新了
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-9-24 16:26 | 显示全部楼层
感谢楼主分享!!!
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2019-9-24 18:51 | 显示全部楼层
高杰空间 发表于 2019-9-23 20:58
支持研究,彻底开源n1

这机器的潜力都被论坛大神们榨干了
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-9-25 16:04 来自手机 | 显示全部楼层
看一下,大神牛逼
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-9-26 07:26 | 显示全部楼层
感谢楼主分享!!!!!!!!!!!!!!
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-9-26 08:53 | 显示全部楼层
keyman命令就可以修复mac地址了
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-9-26 09:21 | 显示全部楼层
感谢分享!!
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-9-26 10:04 | 显示全部楼层
谢谢分享!!!!!
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-9-26 11:09 | 显示全部楼层
希望楼主能彻底解决这个问题。
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-9-26 11:22 来自手机 | 显示全部楼层
看看怎么解决
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-9-26 11:47 来自手机 | 显示全部楼层
看看有用没
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-9-26 13:46 | 显示全部楼层

感谢楼主分享!!!
我的恩山、我的无线 The best wifi forum is right here.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )|网站地图

GMT+8, 2021-6-20 00:30

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表