软件

默认组件库支持 ESP32ESP32C3ESP32H2ESP32S3 系列产品的测试。

硬件


用于 BLE OTA 测试的手机 APP


1. 首先,准备一个 hello-world.bin ,用于 OTA 固件测试

idf.py set-target esp32c3

idf.py build

2. hello-world.bin 导入到手机中,为后续 OTA 固件做准备

  • 安卓手机中,将 hello-world.bin 放到 Android/data/com.espressif.bleota.android/files/BLE-OTA/ 路径下

在这里插入图片描述

  • IOS 手机中,将 hello-world.bin 放到 手机 --> esp-ble-ota --> 文件 --> 拖入要升级的文件 路径下

3. 下载 esp-iot-solution\examples\bluetooth\ble_ota 例程

  • 在安卓手机上,如果使用的是 Bluedroid 协议栈进行 BLE-OTA 测试,需要进行如下设置:

    • → Component config → Bluetooth → Bluetooth → Host
      在这里插入图片描述
    • → Component config → Bluetooth → Bluedroid Options
      在这里插入图片描述
  • 然后编译、下载

    idf.py build 
    
    idf.py -p COM* flash monitor
    

4. 打开 APP 进行 OTA 测试


5. 检查固件运行日志

在这里插入图片描述

在这里插入图片描述


6、如果要适配更多产品,例如 ESP32-C2 ,需要基于 esp-idf v5.0 及以上版本的 SDK ,并在 ble_ota 组件库中增加要适配的产品型号,例如:

在这里插入图片描述
在这里插入图片描述


BLE OTA 安全应用拓展测试

BLE OTA 测试例程默认使用未加密的 OTA 进程,若希望 OTA 进程中的 app.bin 数据流被加密,可增加 BLE 安全加密的应用以保证在 BLE OTA 进程中的 app.bin 数据流安全。

1 - 当使用 Bluedroid 时,可增加如下代码进行测试:

  /* start security connect with peer device when receive the connect event sent by the master */
        esp_ble_set_encryption(param->connect.remote_bda, ESP_BLE_SEC_ENCRYPT_MITM);

在这里插入图片描述

    • 在 软件配置下,选择 Bluedroid - Dual-mode 模式
      → Component config → Bluetooth → Bluetooth → Host → (X) Bluedroid - Dual-mode
      在这里插入图片描述
  • 注意:BLE OTA 测试 APP 不支持 BLE5.0 , 当使用 ESP32-C 、 ESP32-S3 系列的产品时,请关闭 BLE5.0 特性来测试:

→ Component config → Bluetooth → Bluedroid Options → [ ] Enable BLE 5.0 features

在这里插入图片描述

  • 测试结果如下:

    • 当 BLE 加密未设置时,在 BLE OTA 进程中通过蓝牙抓包可以看到明文数据流

在这里插入图片描述

    • 当 BLE 加密设置时,在 BLE OTA 进程中通过蓝牙抓包可以看到数据流被加密

在这里插入图片描述

2 - 当使用 nimble 时,可增加如下代码进行测试:

rc = ble_gap_security_initiate(event->connect.conn_handle);
   if (rc != 0) {
       MODLOG_DFLT(INFO, "Security could not be initiated, rc = %d\n", rc);
       return ble_gap_terminate(event->connect.conn_handle,
                                   BLE_ERR_REM_USER_CONN_TERM);
   } else {
       MODLOG_DFLT(INFO, "Connection secured\n");

在这里插入图片描述

   ble_hs_cfg.sm_sc = 1;
   ble_hs_cfg.sm_mitm = 1;

在这里插入图片描述

  • 在 软件配置下,选择 NimBLE - BLE only 模式
    → Component config → Bluetooth → Bluetooth → Host → (X) NimBLE - BLE only
    在这里插入图片描述

  • esp-ble-ota-android/releases/tag/rc 下载最新版本 ble-ota apk 安装 APP 来测试。

  • 测试结果抓包如下:
    在这里插入图片描述

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐