ESP32 快速入门(八):通过 espefuse.py 工具自定义客户 MAC 地址

拥有回忆 提交于 2020-01-26 00:55:30

一. 文章目的

实践:通过 esp-idf 自带的 espefuse.py 工具自定义 efuse 里的客户 MAC 地址。

注: efuse 里的修改是不可逆的(efuse 里的位变成 1 后不能再次变成 0,所以在同一块 ESP32 上我们基本上只有一次自定义客户 MAC 地址的机会)


二. 操作环境

为了保证测试结果的一致性,采用以下测试环境:

  • esp-idf
    编写本文时,使用的 esp-idf release 版本对应的 commit 为 2befd5c。可通过以下命令确认:

    git log --oneline -1
    

    结果为:

    2befd5c Merge branch 'feature/wifi_prov_ext_httpd_v3.3' into 'release/v3.3'
    

三. 实践过程

  1. 打开终端,进入到 esp-idf 自带的 espefuse.py 对应目录下,以下是参考指令:

    cd esp/esp-idf/components/esptool_py/esptool
    

    在这里,我们可以使用 python espefuse.py --port /dev/ttyUSB0 summary 指令来查询 efuse 当前的状态,在对应的输出中我们主要看 BLK3 的开头部分:

    BLK3                   Variable Block 3                                  
    = 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 R/W 
    

    第一组数据 00 代表 CRC 校验,第二到七组 00 00 00 00 00 00 代表客户 MAC 地址。这样说明 BLK3 还处在最初的干净状态。

  2. 使用 espefuse.py 自定义客户 MAC 地址,指令如下:

    python espefuse.py --port /dev/ttyUSB0 burn_custom_mac 11:22:33:44:55:66
    

    然后我们会在终端里看到以下信息:

    espefuse.py v2.8
    Connecting.....
    Burning efuse for custom MAC address 00:00:00:00:00:00 (version 0, CRC 0x0) -> 11:22:33:44:55:66 (version 1, CRC 0x48). This is an irreversible operation.
    Type 'BURN' (all capitals) to continue.
    

    此时在终端里输入 BURN,注意字母要全部大写,输入完成后按下回车即可。

  3. 确认 客户 MAC 地址是否已经被正确的自定义,在终端里再次使用查询 efuse 当前的状态指令:

    python espefuse.py --port /dev/ttyUSB0 summary
    

    在对应的输出中我们主要看 BLK3 的开头部分如下:

    BLK3                   Variable Block 3                                  
    = 48 11 22 33 44 55 66 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 R/W 
    

    第一组数据 48 代表 CRC 校验,第二到七组 11 22 33 44 55 66 代表客户 MAC 地址,可以看到我们已经成功进行自定义客户 MAC 地址。这部分对应的软件 API 指南请查看 eFuse Manager 官方文档

    注:如果需要查看对应的指令帮助,可以在指令最后加上 -h,如需要查看招录客户 MAC 地址的指令细节,可以输入 python espefuse.py --port /dev/ttyUSB0 burn_custom_mac -h,这样就能迅速的获得对应的帮助。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!