at.py 工具

[English]

at.py 工具用于修改打包好的 2 MB/4 MB AT 量产固件(即 build/factory 目录下的 factory_XXX.bin)中的多种参数配置。这些配置包括 Wi-Fi 配置、证书和密钥配置、UART 配置、GATTS 配置等。当默认的固件无法满足您的需求时,您可以使用 at.py 工具修改固件中的这些参数配置。

详细步骤

请根据下方详细步骤,完成 at.py 工具下载、固件中的配置修改以及固件烧录。推荐您优先选择 Linux 系统开发

第一步:Python 安装

如果您本地已经安装过 Python,则可以跳过此步骤。否则,请根据 Python 官方文档,完成 Python 的下载和安装。推荐您使用 Python 3.8.0 或更高版本

安装完成后,您可以在命令行中输入 python --version,查看 Python 版本。

第二步:at.py 下载

访问 at.py 页面,点击 Download raw file 按钮,将 at.py 文件下载到本地。

下载 at.py 文件

下载 at.py 文件

第三步:at.py 用法说明

当前 at.py 支持修改固件中的参数配置,请在命令行中输入 python at.py modify_bin --help,查看支持的用法以及说明。

第四步:at.py 修改固件中的配置示例

备注

  • 您可以混合修改多种参数配置,例如,您可以同时修改 Wi-Fi 配置和证书和密钥配置。

  • 待修改的参数配置,脚本并不会检查其合法性,请确保您输入的参数配置是合法的。

  • 修改后的参数配置,在当前 mfg_nvs 目录下的 mfg_nvs.csv 中,会有对应的记录。

修改 Wi-Fi 配置

当前可修改的 Wi-Fi 参数配置如下表所示:

参数

功能

说明

--tx_power

Wi-Fi 的最大发射功率

详情见 ESP32 发射功率

--country_code

Wi-Fi 国家代码

详情见 Wi-Fi 国家/地区代码 中的 cc 字段

--start_channel

Wi-Fi 起始信道

详情见 Wi-Fi 国家/地区代码 中的 schan 字段

--channel_number

Wi-Fi 的总信道数

详情见 Wi-Fi 国家/地区代码 中的 nchan 字段

例如,您可以使用以下命令,修改 Wi-Fi 的最大发射功率为 18 dBm,国家代码为 US,起始信道为 1,总信道数为 11:

python at.py modify_bin --tx_power 72 --country_code "US" --start_channel 1 --channel_number 11 --input factory_XXX.bin
  • --tx_power 72:单位是 0.25 dBm,72 表示 18 dBm

  • --input factory_XXX.bin:输入的固件文件

修改证书和密钥配置

当前可修改的证书和密钥配置如下表所示:

参数

功能

原始文件

--server_ca

TLS 服务器的 CA 证书

server_ca.crt

--server_cert

TLS 服务器的证书

server_cert.crt

--server_key

TLS 服务器的密钥

server.key

--client_ca0

第 0 套客户端的 CA 证书

client_ca_00.crt

--client_cert0

第 0 套客户端的证书

client_cert_00.crt

--client_key0

第 0 套客户端的密钥

client_key_00.key

--client_ca1

第 1 套客户端的 CA 证书

client_ca_01.crt

--client_cert1

第 1 套客户端的证书

client_cert_01.crt

--client_key1

第 1 套客户端的密钥

client_key_01.key

--mqtt_ca

MQTT 客户端的 CA 证书

mqtt_ca.crt

--mqtt_cert

MQTT 客户端的证书

mqtt_client.crt

--mqtt_key

MQTT 客户端的密钥

mqtt_client.key

--wpa2_ca

WPA2-Enterprise 客户端的 CA 证书

wpa2_ca.pem

--wpa2_cert

WPA2-Enterprise 客户端的证书

wpa2_client.crt

--wpa2_key

WPA2-Enterprise 客户端的密钥

wpa2_client.key

例如,您可以使用以下命令,修改 MQTT 客户端的 CA 证书、客户端的证书和密钥。

python at.py modify_bin --mqtt_ca mqtt/mqtt_ca.crt --mqtt_cert mqtt/mqtt.crt --mqtt_key mqtt/mqtt.key --input factory_XXX.bin
  • --input factory_XXX.bin:输入的固件文件

修改 UART 配置

可修改的 UART 配置,仅包括 AT 命令端口 的 UART 配置。可修改的参数配置如下表所示:

参数

功能

说明

--uart_num

AT 命令口的 UART 号

仅在 AT 日志口同时用作 AT 命令口时,需要修改此参数。同时需保证下面的 tx_pinrx_pin 要配置与 AT 日志端口 的 tx 和 rx 管脚一致,如果 AT 日志端口 只配置了 rx,则下面 tx_pin 需要配置与下载固件口(可查看 硬件连接)的 UART 的 tx 管脚一致。

--baud

AT 命令口的波特率

原始值:115200

--tx_pin

AT 命令口的 TX 管脚

请保证待修改的管脚不会和其他管脚冲突

--rx_pin

AT 命令口的 RX 管脚

请保证待修改的管脚不会和其他管脚冲突

--cts_pin

AT 命令口的 CTS 管脚

请保证待修改的管脚不会和其他管脚冲突。不用流控时,修改此参数为 -1。

--rts_pin

AT 命令口的 RTS 管脚

请保证待修改的管脚不会和其他管脚冲突。不用流控时,修改此参数为 -1。

例如,您可以使用以下命令,修改 AT 命令口的波特率为 921600,TX 管脚为 17,RX 管脚为 16,禁用流控。

python at.py modify_bin --baud 921600 --tx_pin 17 --rx_pin 16 --cts_pin -1 --rts_pin -1 --input factory_XXX.bin
  • --input factory_XXX.bin:输入的固件文件

修改 GATTS 配置

修改前,请先阅读 如何自定义低功耗蓝牙服务 文档,了解 GATTS 的配置文件 gatts_data.csv 中的各个字段的含义。

当前可修改的 GATTS 配置如下表所示:

参数

功能

--gatts_cfg0

更新 gatts_data.csv 文件中 index 为 0 的一行数据

--gatts_cfg1

更新 gatts_data.csv 文件中 index 为 1 的一行数据

--gatts_cfg2

更新 gatts_data.csv 文件中 index 为 2 的一行数据

--gatts_cfg3

更新 gatts_data.csv 文件中 index 为 3 的一行数据

--gatts_cfg4

更新 gatts_data.csv 文件中 index 为 4 的一行数据

--gatts_cfg5

更新 gatts_data.csv 文件中 index 为 5 的一行数据

--gatts_cfg6

更新 gatts_data.csv 文件中 index 为 6 的一行数据

--gatts_cfg7

更新 gatts_data.csv 文件中 index 为 7 的一行数据

--gatts_cfg8

更新 gatts_data.csv 文件中 index 为 8 的一行数据

--gatts_cfg9

更新 gatts_data.csv 文件中 index 为 9 的一行数据

--gatts_cfg10

更新 gatts_data.csv 文件中 index 为 10 的一行数据

--gatts_cfg11

更新 gatts_data.csv 文件中 index 为 11 的一行数据

--gatts_cfg12

更新 gatts_data.csv 文件中 index 为 12 的一行数据

--gatts_cfg13

更新 gatts_data.csv 文件中 index 为 13 的一行数据

--gatts_cfg14

更新 gatts_data.csv 文件中 index 为 14 的一行数据

--gatts_cfg15

更新 gatts_data.csv 文件中 index 为 15 的一行数据

--gatts_cfg16

更新 gatts_data.csv 文件中 index 为 16 的一行数据

--gatts_cfg17

更新 gatts_data.csv 文件中 index 为 17 的一行数据

--gatts_cfg18

更新 gatts_data.csv 文件中 index 为 18 的一行数据

--gatts_cfg19

更新 gatts_data.csv 文件中 index 为 19 的一行数据

--gatts_cfg20

更新 gatts_data.csv 文件中 index 为 20 的一行数据

--gatts_cfg21

更新 gatts_data.csv 文件中 index 为 21 的一行数据

--gatts_cfg22

更新 gatts_data.csv 文件中 index 为 22 的一行数据

--gatts_cfg23

更新 gatts_data.csv 文件中 index 为 23 的一行数据

--gatts_cfg24

更新 gatts_data.csv 文件中 index 为 24 的一行数据

--gatts_cfg25

更新 gatts_data.csv 文件中 index 为 25 的一行数据

--gatts_cfg26

更新 gatts_data.csv 文件中 index 为 26 的一行数据

--gatts_cfg27

更新 gatts_data.csv 文件中 index 为 27 的一行数据

--gatts_cfg28

更新 gatts_data.csv 文件中 index 为 28 的一行数据

--gatts_cfg29

更新 gatts_data.csv 文件中 index 为 29 的一行数据

--gatts_cfg30

更新 gatts_data.csv 文件中 index 为 30 的一行数据

例如,您可以使用以下命令,修改 index 为 0 行的 perm 权限。

python at.py modify_bin --gatts_cfg0 "0,16,0x2800,0x011,2,2,A002" --input factory_XXX.bin
  • --input factory_XXX.bin:输入的固件文件

第五步:固件烧录

注意

修改后的 AT 固件,需要您根据自己的产品自行测试验证功能。

请保存好修改前和修改后的固件以及下载链接,用于后续可能的问题调试。

请根据 固件烧录指南,完成固件烧录。