북유럽에서 OTA 테스트

다음 안내에서는 조명 앱 Nordic nRF52840 및 Matter SDK의 예 개발 보드입니다.

환경 설정

이 안내는 Docker 기반 애플리케이션 설치를 기반으로 nRF 연결 있습니다. Docker를 사용하지 않으려면 nRF 설치 안내를 확인하세요. 호스트 컴퓨터의 기본 연결은 검색 결과를 참고할 수 있습니다.

Matter SDK 확인하기

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

사용할 올바른 Docker 이미지를 확인합니다. 다음을 위해 만든 이미지 중 하나를 사용하세요. Matter SDK 지속적 통합

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

Nordic 보드를 컴퓨터에 연결합니다. 다음 항목의 USB 열거 확인 직렬 인터페이스:

MacOS에서:

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

Linux의 경우 다음 중 하나를 수행합니다.

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

또는

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

이전 명령어에서 수집한 정보를 사용하여 컨테이너를 실행합니다. 통과 호스트 Matter SDK 폴더와 USB를 마운트하는 플래그 직렬 인터페이스를 전달하는 것입니다.

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

Matter Docker 컨테이너 중지 및 시작

docker run 명령어를 실행할 때마다 다음이 포함된 새 컨테이너가 생성됩니다. 지정할 수 있습니다 이렇게 하면 이전 컨테이너 인스턴스는 손실됩니다 때로는 이것이 새 설치를 시작할 수 있기 때문입니다. 그러나 여기서는 예를 들어 작업 및 환경 구성을 세션 간

user@host> docker stop container_name

다시 실행할 준비가 되면 컨테이너를 시작하고 터미널을 엽니다. 기간:

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

다음을 사용하여 컨테이너에 대한 추가 터미널 세션을 열 수 있습니다.

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

또는 다음을 사용하여 루트 세션을 시작합니다.

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

SDK 초기화

컨테이너에서 Matter SDK를 초기화합니다. Nordic nRF52 도구 모음의 환경 변수입니다. 이 Matter SDK 초기화에는 몇 분 정도 걸리는 경우가 많습니다.

$ 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

빌드 및 플래시

기기의 VID 및 PID를 구성합니다.

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

대화형 메뉴 옵션:

  1. Modules --->

  2. connectedhomeip --->

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

  4. base-10에 Device vendor ID (VID) Device product ID (PID)를 입력합니다. 정수 형식입니다.

  5. [*] Enable OTA requestor 플래그가 선택되어 있는지 확인합니다.

  6. s를 눌러 구성을 저장하고 Enter 키를 눌러 확인한 후 구성을 저장합니다. q를 사용하여 menuconfig를 종료합니다.

테스트 인증서 설정

Matter 기기 테스트 인증서 만들기의 단계를 따르세요. CD, DAC, PAI 인증서를 만듭니다.

나만의 기기 만들기

$ west build -b nrf52840dk_nrf52840

기기 플래시

이 작업은 Docker 컨테이너가 아닌 호스트 컴퓨터에서 수행됩니다.

nRFConnect 명령줄 도구가 아직 없는 경우 설치합니다.

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

호스트 또는 호스트에서 기기에 대한 터미널 연결을 열고 있습니다 minicom 또는 GNU screen와 같이 선호하는 터미널 도구를 사용합니다.

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

user@host> screen /dev/ttyACM0 115200

OTA 이미지 생성 및 업로드

기기를 플래시한 후 빌드 설정을 한 번 더 변경하여 OTA 이미지를 생성하는 방법을 사용합니다.

Zephyr menuconfig를 실행합니다.

$ west build -b nrf52840dk_nrf52840 -t menuconfig

대화형 메뉴 옵션:

  1. Modules -->

  2. connectedhomeip -->

  3. Connected Home over IP protocol stack -->

  4. Device Software Version2로 변경합니다.

  5. Device Software Version Stringprerelease-2로 변경합니다.

  6. s를 눌러 구성을 저장하고 Enter 키를 눌러 확인한 후 구성을 저장합니다. q를 사용하여 menuconfig를 종료합니다.

Matter OTA 번들 파일을 빌드합니다. 출력은 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

생성된 Matter OTA 번들의 속성을 확인하세요. 파일:

/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

Matter SDK는 컨테이너 호스트에서 마운트되므로 OTA 이미지는 컨테이너 호스트에서도 사용할 수 있습니다. OTA 이미지를 OTA 업로드에 따라 Google Home Developer Console 업데이트 안내를 참조하세요.

기기를 커미셔닝하고 OTA 프로세스를 관찰합니다.

호스트 또는 호스트에서 기기에 대한 터미널 연결을 엽니다. 있습니다 minicom 또는 GNU screen와 같이 선호하는 터미널을 사용합니다.

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

기기의 재설정 버튼을 눌러 부팅 로그를 확인합니다.

기기 출력에 설정한 VID 및 PID뿐만 아니라 커미셔닝 QR 코드의 URL:

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

Hub가 온라인 상태인지 확인하고 로그에 있는 링크의 QR 코드를 사용하여 Google Home app (GHA)

커미셔닝 후 기기가 활동을 기록하도록 합니다.

기기 로그에 다음 텍스트가 표시됩니다.

/* 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

이미지가 적용된 후 기기가 재부팅됩니다. 재부팅 후 컴파일 시간 업로드된 이미지와 일치해야 합니다 Developer Console

OTA 소프트웨어 업데이트 유효성 검사

기기 소프트웨어 버전은 Google Home 앱 (GHA)을 사용하여 확인할 수 있습니다. 기기가 커미셔닝되면 다음 절차를 따르세요.

  1. GHA 기본 화면에서 기기 타일 길게 누르기
  2. 오른쪽 상단의 아이콘을 탭합니다.
  3. 기술 정보를 탭합니다.
  4. 소프트웨어 버전 필드를 확인합니다.

소프트웨어 버전 필드가 표시된 Google Home 앱 화면