运行低功耗蓝牙功能测试 - FreeRTOS
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

运行低功耗蓝牙功能测试

此部分介绍如何使用适用于 FreeRTOS 的 AWS IoT Device Tester 来设置和运行蓝牙测试。核心资格认证不需要蓝牙测试。如果您不想使用 FreeRTOS 蓝牙支持测试您的设备,则可跳过此设置,确保将 device.json 中的 BLE 功能设置为 No

先决条件

  • 按照准备首次测试微控制器主板中的说明进行操作。

  • 一个 Raspberry Pi 3B+。(运行 Raspberry Pi BLE 配套应用程序时必需)

  • 一个适用于 Raspberry Pi 软件的 microSD 卡和 SD 卡适配器。

 

Raspberry Pi 设置

要测试受测设备 (DUT) 的 BLE 功能,您必须拥有 Raspberry Pi Model 3B+。

设置 Raspberry Pi 以运行 BLE 测试

  1. 下载自定义 Yocto 映像,其中包含执行测试所需的软件。

  2. 将 yocto 映像刷写到 Raspberry Pi 的 SD 卡。

    1. 通过使用 SD 卡写入工具(例如 Etcher),将下载的 image-name.rpi-sdimg 文件刷写到 SD 卡中。由于操作系统映像很大,因此,该步骤可能需要一些时间。然后,从您的计算机中弹出 SD 卡,然后将 microSD 卡插入您的 Raspberry Pi 上。

  3. 配置您的 Raspberry Pi。

    1. 对于第一次启动,我们建议您将 Raspberry Pi 连接到显示器、键盘和鼠标。

    2. 将您的 Raspberry Pi 连接到微型 USB 电源。

    3. 使用默认凭证登录。对于用户 ID,请输入 root。对于密码,请输入 idtafr

    4. 通过使用以太网或 Wi-Fi 连接,将 Raspberry Pi 连接到您的网络。

      1. 要通过 Wi-Fi 连接您的 Raspberry Pi,请在 Raspberry Pi 上打开 /etc/wpa_supplicant.conf,并将您的 Wi-Fi 凭证添加到 Network 配置。

        ctrl_interface=/var/run/wpa_supplicant ctrl_interface_group=0 update_config=1 network={ scan_ssid=1 ssid="your-wifi-ssid" psk="your-wifi-password" }
      2. 运行 ifup wlan0 以启动 Wi-Fi 连接。连接到 Wi-Fi 网络可能需要一分钟。

    5. 对于以太网连接,请运行 ifconfig eth0。对于 Wi-Fi 连接,请运行 ifconfig wlan0。记下 IP 地址,它在命令输出中显示为 inet addr。您在本过程的后面部分需要该 IP 地址。

    6. (可选)测试使用 yocto 映像的默认凭证通过 SSH 在 Raspberry Pi 上执行命令。为了提高安全性,我们建议您为 SSH 设置公有密钥身份验证并禁用基于密码的 SSH。

      1. 使用 OpenSSL ssh-keygen 命令创建 SSH 密钥。如果主机上已有 SSH 密钥对,则最佳实践是创建一个新的 SSH 密钥对,以允许适用于 FreeRTOS 的 AWS IoT Device Tester 登录 Raspberry Pi。

        注意

        Windows 未预装 SSH 客户端。有关如何在 Windows 上安装 SSH 客户端的信息,请参阅下载 SSH 软件

      2. ssh-keygen 命令会提示您输入要存储密钥对的名称和路径。默认情况下,密钥对文件的名称为 id_rsa(私有密钥)和 id_rsa.pub(公有密钥)。在 macOS 和 Linux 上,这些文件的默认位置为 ~/.ssh/。在 Windows 上,默认位置为 C:\Users\user-name

      3. 当系统提示您输入密钥短语时,请按 Enter 以继续。

      4. 要在 Raspberry Pi 上添加 SSH 密钥以便适用于 FreeRTOS 的 AWS IoT Device Tester 能够登录设备,请使用主机中的 ssh-copy-id 命令。此命令会将您的公有密钥添加到 Raspberry Pi 上的 ~/.ssh/authorized_keys 文件中。

        ssh-copy-id root@raspberry-pi-ip-address

      5. 当系统提示您输入密码时,请输入 idtafr。这是 yocto 映像的默认密码。

        注意

        ssh-copy-id 命令假定公有密钥的名称为 id_rsa.pub。在 macOS 和 Linux 上,默认位置为 ~/.ssh/。在 Windows 上,默认位置为 C:\Users\user-name\.ssh。如果公有密钥采用其他名称或存储在其他位置,则必须使用 -i 选项与 ssh-copy-id 指定 SSH 公有密钥的完全限定路径(例如,ssh-copy-id -i ~/my/path/myKey.pub)。有关创建 SSH 密钥和复制公有密钥的更多信息,请参阅 SSH-COPY-ID

      6. 要测试公有密钥身份验证是否有效,请运行 ssh -i /my/path/myKey root@raspberry-pi-device-ip

        如果系统未提示您输入密码,则公有密钥身份验证有效。

      7. 验证您是否能使用公有密钥登录 Raspberry Pi,然后禁用基于密码的 SSH。

        1. 在 Raspberry Pi 中,编辑 /etc/ssh/sshd_config 文件。

        2. PasswordAuthentication 属性设置为 no

        3. 保存并关闭 sshd_config 文件。

        4. 通过运行 /etc/init.d/sshd reload 重新加载 SSH 服务器。

    7. 创建 resource.json 文件。

      1. 在将 AWS IoT Device Tester 提取到的目录中,创建一个名为 resource.json 的文件。

      2. 将以下有关 Raspberry Pi 的信息添加到该文件中,并将 rasp-pi-ip-address 替换为 Raspberry Pi 的 IP 地址。

        [ { "id": "ble-test-raspberry-pi", "features": [ {"name":"ble", "version":"4.2"} ], "devices": [ { "id": "ble-test-raspberry-pi-1", "connectivity": { "protocol": "ssh", "ip": "rasp-pi-id-address" } } ] } ]
      3. (可选)如果您对 SSH 使用公有密钥身份验证,请将以下内容添加到 resource.json 文件的 connectivity 部分。

        "connectivity": { "protocol": "ssh", "ip": "rasp-pi-id-address", "auth": { "method": "pki", "credentials": { "user": "root", "privKeyPath": "location-of-private-key" } } }

FreeRTOS 设备设置

device.json 文件中,将 BLE 功能设置为 Yes。如果您在蓝牙测试可用前开始使用 device.json 文件,您需要将 BLE 功能添加到 features 数组:

{ ... "features": [ { "name": "BLE", "value": "Yes" }, ... }

运行 BLE 测试

device.json 中启用 BLE 功能后,在不指定 group-id 的情况下运行 devicetester_[linux | mac | win_x86-64] run-suite 时将运行 BLE 测试。

如果要单独运行 BLE 测试,可以为 BLE 指定组 ID:devicetester_[linux | mac | win_x86-64] run-suite --userdata path-to-userdata/userdata.json --group-id FullBLE

要获得最可靠的性能,请将 Raspberry Pi 放置在受测设备 (DUT) 附近 。

BLE 测试故障排除

确保您已执行准备首次测试微控制器主板中的步骤。如果 BLE 以外的测试失败,则问题很可能与蓝牙配置无关。