Kiểm tra OTA trên Bắc Âu

Hướng dẫn sau đây sử dụng ví dụ về ứng dụng chiếu sáng trong SDK Matter cùng với bảng phát triển nRF52840 của Bắc Âu.

Thiết lập môi trường

Những hướng dẫn này dựa trên quá trình cài đặt chuỗi công cụ nRF Connect dựa trên Docker. Nếu bạn không muốn sử dụng Docker, hãy xem hướng dẫn cách cài đặt nRF Connect nguyên gốc trên máy tính lưu trữ trên trang web Bắc Âu.

Khám phá SDK Matter

user@host> mkdir otaprep
user@host> cd otaprep
user@host> git clone https://github.com/project-chip/connectedhomeip.git
user@host> cd connectedhomeip/
user@host> git fetch origin v1.0-branch
user@host> git checkout FETCH_HEAD

Kiểm tra đúng hình ảnh Docker cần dùng. Sử dụng một trong các hình ảnh được tạo cho tính năng tích hợp liên tục SDK Matter.

user@host> cat .github/workflows/examples-nrfconnect.yaml | grep chip-build
            image: connectedhomeip/chip-build-nrf-platform:0.5.99

Kết nối bảng mạch Bắc Âu với máy tính. Kiểm tra bảng liệt kê giao diện nối tiếp qua USB:

Trên MacOS:

user@host> ls /dev/tty.usbmodem*
/dev/tty.usbmodem0123456789000

Trên Linux:

user@host> ls /dev/tty*AC*
/dev/ttyACM0

hoặc

user@host> ls /dev/tty*USB*
/dev/ttyUSB0

Chạy một vùng chứa bằng cách sử dụng thông tin thu thập được từ lệnh trước đó. Truyền các cờ để gắn thư mục SDK Matter của máy chủ và giao diện nối tiếp USB vào vùng chứa.

user@host> docker run --name container_name -it --user $(id -u):$(id -g) --mount source=$(pwd),target=/workspace,type=bind connectedhomeip/chip-build-nrf-platform:0.5.99 /bin/bash

Dừng và khởi động vùng chứa Matter Docker

Mỗi khi chạy lệnh docker run, bạn sẽ tạo một vùng chứa mới với hình ảnh được chỉ định. Khi bạn làm như vậy, dữ liệu cũ đã lưu trên thực thể vùng chứa trước đó sẽ bị mất. Đôi khi, đây là điều bạn mong muốn vì nó cho phép bạn bắt đầu lại một quá trình cài đặt mới. Tuy nhiên, trong ví dụ này, rất có thể bạn muốn lưu cấu hình môi trường và công việc của mình giữa các phiên.

user@host> docker stop container_name

Khi bạn đã sẵn sàng chạy lại, hãy khởi động vùng chứa và mở cửa sổ dòng lệnh:

user@host> docker start container_name
user@host> docker exec -it container_name /bin/bash

Bạn có thể mở thêm các phiên hoạt động khác tại vùng chứa của mình bằng:

user@host> docker exec -it container_name /bin/bash

Hoặc bắt đầu phiên gốc bằng:

user@host> docker exec -u 0 -it container_name /bin/bash

Khởi chạy SDK

Trong vùng chứa đó, hãy khởi chạy SDK Matter và các biến môi trường cho chuỗi công cụ nRF52 của Bắc Âu. Quá trình khởi chạy SDK Matter thường mất vài phút.

$ cd /workspace
$ git submodule update --init --recursive
$ source ./scripts/bootstrap.sh
$ source ./scripts/activate.sh
$ export ZEPHYR_BASE=/opt/NordicSemiconductor/nrfconnect/zephyr
$ export GNUARMEMB_TOOLCHAIN_PATH="$PW_ARM_CIPD_INSTALL_DIR"
$ scripts/run_in_build_env.sh "python3 scripts/setup/nrfconnect/update_ncs.py --update --shallow"
$ source /opt/NordicSemiconductor/nrfconnect/zephyr/zephyr-env.sh

Bản dựng và Flash

Định cấu hình VID và PID cho thiết bị:

$ cd examples/lighting-app/nrfconnect
$ west build -b nrf52840dk_nrf52840 -t menuconfig

Trong các tuỳ chọn trên trình đơn tương tác:

  1. Modules --->

  2. connectedhomeip --->

  3. [*] Connected Home over IP protocol stack --->

  4. Nhập Device vendor ID (VID) và Device product ID (PID) ở định dạng số nguyên cơ số 10.

  5. Đảm bảo cờ [*] Enable OTA requestor đã được chọn.

  6. Nhấn phím s để lưu cấu hình, nhấn phím Enter để xác nhận rồi nhấn q để thoát khỏi menuconfig.

Thiết lập chứng chỉ thử nghiệm

Làm theo các bước trong bài viết Tạo chứng chỉ kiểm thử thiết bị theo chuẩn Matter để tạo chứng chỉ CD, DAC và PAI.

Tạo thiết bị của bạn

$ west build -b nrf52840dk_nrf52840

Cài đặt ROM thiết bị

Việc này được thực hiện trên máy tính lưu trữ, không phải trong vùng chứa Docker.

Nếu bạn chưa có công cụ dòng lệnh nRFConnect, hãy tải xuống và cài đặt các công cụ đó.

user@host> nrfjprog --program build/zephyr/merged.hex --chiperase -f NRF52

Mở kết nối thiết bị đầu cuối với thiết bị của bạn trên máy chủ lưu trữ hoặc trên vùng chứa. Hãy sử dụng công cụ dòng lệnh yêu thích của bạn như minicom hoặc GNU screen.

user@host> minicom -c on -D /dev/ttyACM0 115200

user@host> screen /dev/ttyACM0 115200

Tạo và tải hình ảnh OTA lên

Sau khi bạn đã cài đặt ROM cho thiết bị, hãy thay đổi chế độ cài đặt bản dựng một lần nữa để tạo hình ảnh OTA với phiên bản phần mềm thiết bị tăng dần.

Chạy Zephyr menuconfig:

$ west build -b nrf52840dk_nrf52840 -t menuconfig

Trong các tuỳ chọn trên trình đơn tương tác:

  1. Modules -->

  2. connectedhomeip -->

  3. Connected Home over IP protocol stack -->

  4. Thay đổi Device Software Version thành 2.

  5. Thay đổi Device Software Version String thành prerelease-2.

  6. Nhấn phím s để lưu cấu hình, nhấn phím Enter để xác nhận rồi nhấn q để thoát khỏi menuconfig.

Tạo tệp gói OTA Matter mới. Dữ liệu đầu ra được đặt trong build/zephyr/zephyr.bin.

$ /workspace/src/app/ota_image_tool.py create -v hex_VID -p hex_PID -vn version_no -vs version_string path_to_binary -da digest_algorithm path_to_ota_file

Xác nhận các thuộc tính của tệp gói OTA Matter đã tạo:

/workspace/examples/lighting-app/nrfconnect# /workspace/src/app/ota_image_tool.py show firmware-ota-update-test.bin
Magic: 1beef11e
Total Size: 951784
Header Size: 72
Header TLV:
  [0] Vendor Id: XXXXX (0xXXXX)
  [1] Product Id: 32768 (0x8000)
  [2] Version: 2 (0x2)
  [3] Version String: prerelease-2
  [4] Payload Size: 951696 (0xe8590)
  [8] Digest Type: 1 (0x1)
  [9] Digest: 75f2e8b0c8e922b8bb3841504190bcdd83533e936a284c7254d29327d605c930

Vì SDK Matter được gắn từ máy chủ lưu trữ vùng chứa, nên Hình ảnh OTA cũng có sẵn trên máy chủ lưu trữ vùng chứa của bạn. Tải hình ảnh OTA lên Google Home Developer Console bằng cách làm theo hướng dẫn tải OTA lên.

Hãy chuyển sang thiết bị sau đó và quan sát quy trình OTA.

Mở kết nối thiết bị đầu cuối với thiết bị trên máy chủ lưu trữ hoặc trên vùng chứa. Sử dụng thiết bị đầu cuối yêu thích của bạn, chẳng hạn như minicom hoặc GNU screen:

$ minicom -c on -D /dev/ttyACM0 115200

Nhấn nút đặt lại của thiết bị để xem nhật ký từ lúc khởi động.

Trong dữ liệu đầu ra của thiết bị, bạn sẽ thấy VID và PID mà bạn đã thiết lập, cũng như URL của mã QR vận hành:

I: nRF5 802154 radio initialized
I: 4 Sectors of 4096 bytes

(...)

I: 681 [SVR]Server Listening...
I: 684 [DL]Device Configuration:
I: 687 [DL]  Serial Number: 11223344556677889900
I: 692 [DL]  Vendor Id: XXXXX (0xXXXX)
I: 695 [DL]  Product Id: XXXXX (0xXXXX)
I: 699 [DL]  Hardware Version: 0
I: 702 [DL]  Setup Pin Code (0 for UNKNOWN/ERROR): 20202021
I: 708 [DL]  Setup Discriminator (0xFFFF for UNKNOWN/ERROR): 3840 (0xF00)
I: 714 [DL]  Manufacturing Date: (not set)
I: 718 [DL]  Device Type: 65535 (0xFFFF)
I: 723 [SVR]SetupQRCode: [MT:6FCJ142C00KA0648G00]
I: 727 [SVR]Copy/paste the below URL in a browser to see the QR Code:
I: 733 [SVR]https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%000000000000000000000
I: 742 [SVR]Manual pairing code: [30900112302]
I: 747 [DL]CHIP task running
I: 752 [DL]CHIPoBLE advertising started
I: 757 [DL]NFC Tag emulation started

Đảm bảo rằng Trung tâm của bạn đang có kết nối mạng và phí hoa hồng thiết bị bằng Google Home app (GHA) bằng cách sử dụng mã QR trên đường liên kết có trong nhật ký.

Hãy để thiết bị ghi nhật ký các hoạt động sau khi chạy thử.

Bạn sẽ thấy nội dung sau trong nhật ký thiết bị:

/* Hub OTA provider identification */
I: 69642 [SWU]OTA Requestor received AnnounceOTAProvider
D: 69647 [SWU]  FabricIndex: 1
D: 69649 [SWU]  ProviderNodeID: 0x00000000XXXXXXXX
D: 69654 [SWU]  VendorID: 0x6006
D: 69657 [SWU]  AnnouncementReason: 0
D: 69660 [SWU]  Endpoint: 2
...
D: 69799 [SWU]Establishing session to provider node ID 0x00000000FC843D94 on fabric index 1
...
D: 262265 [SWU]QueryImageResponse:
D: 262268 [SWU]  status: 0
D: 262271 [SWU]  imageURI: bdx://00000000FC843D94/37f09fd6-0000-0000-0000-000000000000
D: 262278 [SWU]  softwareVersion: 2
D: 262281 [SWU]  softwareVersionString: 2
D: 262285 [SWU]  updateToken: 36
D: 262288 [SWU]  userConsentNeeded: 0
D: 262292 [SWU]Update available from version 0 to 2
...
D: 262372 [SWU]Establishing session to provider node ID 0x00000000FC843D94 on fabric index 1
...
D: 262409 [SWU]BDX::SendMessage

Sau khi hình ảnh được áp dụng, thiết bị sẽ khởi động lại. Sau khi khởi động lại, thời gian biên dịch của hình ảnh phải khớp với thời gian biên dịch của hình ảnh được tải lên Developer Console.

Xác thực bản cập nhật phần mềm OTA

Bạn có thể kiểm tra phiên bản phần mềm của thiết bị bằng ứng dụng Google Home (GHA). Sau khi đã uỷ quyền cho một thiết bị, hãy làm theo các quy trình sau:

  1. Nhấn và giữ ô thiết bị trên màn hình chính của GHA
  2. Nhấn vào biểu tượng ở trên cùng bên phải
  3. Nhấn vào Thông tin kỹ thuật
  4. Kiểm tra trường Phiên bản phần mềm

Màn hình Ứng dụng Google Home hiển thị trường phiên bản phần mềm