blob: fe353a9ffa780113b654849c6c16023775297e1f [file] [log] [blame]
# Copyright (c) 2023 Project CHIP Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
name: 22.4.1. [TC-SC-4.1] Commissionable Node Discovery [DUT as Commissionee]
PICS:
- MCORE.ROLE.COMMISSIONEE
config:
nodeId: 0x12344321
endpoint: 0
discriminator:
type: int16u
defaultValue: 3840
shortDiscriminator:
type: int16u
defaultValue: 15
vendorId:
type: int16u
defaultValue: 65521
productId:
type: int16u
defaultValue: 32769
deviceType:
type: int16u
defaultValue: 65535
PakeVerifier:
type: octet_string
defaultValue: "hex:b96170aae803346884724fe9a3b287c30330c2a660375d17bb205a8cf1aecb350457f8ab79ee253ab6a8e46bb09e543ae422736de501e3db37d441fe344920d09548e4c18240630c4ff4913c53513839b7c07fcc0627a1b8573a149fcd1fa466cf"
timeout: 900
waitAfterCommissioning:
type: int16u
defaultValue: 5000
tests:
- label: "Step 1: Wait for the commissioned device to be retrieved"
cluster: "DelayCommands"
command: "WaitForCommissionee"
arguments:
values:
- name: "nodeId"
value: nodeId
- label:
"Step 1a: DUT is put in Commissioning Mode using Open Basic
Commissioning Window command "
cluster: "Administrator Commissioning"
command: "OpenBasicCommissioningWindow"
timedInteractionTimeoutMs: 10000
arguments:
values:
- name: "CommissioningTimeout"
value: 180
- label: "Waiting after opening commissioning window"
cluster: "DelayCommands"
command: "WaitForMs"
arguments:
values:
- name: "ms"
value: waitAfterCommissioning
- label:
"Step 2a: Check DNS-SD instance name must be 64-bit randomly selected
ID expressed as a sixteen-char hex string with capital letters"
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "instanceName"
saveAs: deviceInstanceNameBeforeReboot
constraints:
minLength: 16
maxLength: 16
isUpperCase: true
isHexString: true
- label: "Step 2b: Service type must be _matterc._udp"
verification: |
Run the below commands within the mentioned time interval used in open-commissioning-window in step-1.
Run the below avahi browse command in the TH terminal
avahi-browse -rt _matterc._udp
ubuntu@ubuntu:~$ avahi-browse -rt _matterc._udp
Verify the device is advertising _matterc._udp service like below output in TH terminal Log: (Verify for the DUT's actual values (like vendor ID, PID ..etc) as mentioned in the expected outcome of the test plan, The below log contains the data from the reference raspi accessory)
+ wlan0 IPv6 5A4E867284D08B13 _matterc._udp local
+ eth0 IPv6 5A4E867284D08B13 _matterc._udp local
= eth0 IPv6 5A4E867284D08B13 _matterc._udp local
hostname = [E45F010F1A010000.local]
address = [fe80::e65f:1ff:fe0f:1a01]
port = [5540]
txt = ["PI=" "PH=36" "CM=1" "D=3840" "T=1" "VP=65521+32769"]
= wlan0 IPv6 5A4E867284D08B13 _matterc._udp local
hostname = [E45F010F1A010000.local]
address = [fe80::e65f:1ff:fe0f:1a01]
port = [5540]
txt = ["PI=" "PH=36" "CM=1" "D=3840" "T=1" "VP=65521+32769"]
If we use Thread setup, then the Service Domain will be 422F10CDC290A406.local
verify CM flag is 1
to look for subtypes, on the raspi run $ avahi-browse -p _services._dns-sd._udp | grep _matterc
+;eth0;IPv6;_matterc;_udp;local
+;eth0;IPv6;_V65521;_sub._matterc._udp;local
+;eth0;IPv6;_S15;_sub._matterc._udp;local
+;eth0;IPv6;_L3840;_sub._matterc._udp;local
+;eth0;IPv6;_CM;_sub._matterc._udp;local
cluster: "LogCommands"
command: "UserPrompt"
PICS: PICS_SKIP_SAMPLE_APP
arguments:
values:
- name: "message"
value: "Enter 'y' after success"
- name: "expectedValue"
value: "y"
#validate the service type and the service domain not implemented in CI
- label:
"Step 2c: Check target hostname is derived from the 48bit or 64bit MAC
address expressed as a twelve or sixteen capital letter hex string"
PICS: "( MCORE.COM.WIFI || MCORE.COM.ETH) && !MCORE.COM.THR"
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "hostName"
constraints:
minLength: 12
maxLength: 16
isUpperCase: true
isHexString: true
- label:
"Step 2c: Check target hostname is derived from the 48bit or 64bit MAC
address expressed as a twelve or sixteen capital letter hex string"
PICS: "(!MCORE.COM.WIFI && !MCORE.COM.WIFI) && MCORE.COM.THR"
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "hostName"
constraints:
minLength: 12
maxLength: 16
isUpperCase: true
isHexString: true
#subtype
- label: "Step 2d: Check Long Discriminator _L"
cluster: "DiscoveryCommands"
command: "FindCommissionableByLongDiscriminator"
arguments:
values:
- name: "value"
value: discriminator
- label: "Step 2d: Check Short Discriminator (_S)"
cluster: "DiscoveryCommands"
command: "FindCommissionableByShortDiscriminator"
arguments:
values:
- name: "value"
value: shortDiscriminator
- label:
"Step 2e: If (MCORE.SC.VENDOR_SUBTYPE) present, subtype _V<ddddd> is
present must be 16-bit vendor id, encoded as a variable-length decimal
number in ASCII text, omitting any leading zeros"
PICS: MCORE.SC.VENDOR_SUBTYPE
cluster: "DiscoveryCommands"
command: "FindCommissionableByVendorId"
arguments:
values:
- name: "value"
value: vendorId
- label:
"Step 2f: If (MCORE.SC.DEVTYPE_SUBTYPE) present, subtype _T<ddd> is
present, <ddd> represents device type from Data Model and must be
represented as a variable length decimal number in ASCII without
leading zeros"
PICS: MCORE.SC.DEVTYPE_SUBTYPE
cluster: "DiscoveryCommands"
command: "FindCommissionableByDeviceType"
arguments:
values:
- name: "value"
value: deviceType
- label:
"Step 2g: Check Commissioning Mode (_CM) subtype _CM must be present"
cluster: "DiscoveryCommands"
command: "FindCommissionableByCommissioningMode"
- label:
"Step 2h: key D must be present and represents the discriminator which
must be encoded as a variable-length decimal value with up to 4 digits
omitting any leading zeros"
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "longDiscriminator"
value: discriminator
constraints:
minValue: 0
maxValue: 4096
- label:
"Step 2i: If (MCORE.SC.VP_KEY) present, VP key must contain at least
Vendor ID is present"
PICS: MCORE.SC.VP_KEY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "vendorId"
value: vendorId
- label:
"Step 2j: If (MCORE.SC.VP_KEY) present, VP key must contain at least
Product ID is present"
PICS: MCORE.SC.VP_KEY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "productId"
value: productId
- label:
"Step 2k: If (MCORE.SC.SII_OP_DISCOVERY_KEY) present, SII key must be
an unsigned integer with units of milliseconds and shall be encoded as
a variable length decimal number in ASCII, omitting leading zeros.
Shall not exceed 3600000"
PICS: MCORE.SC.SII_OP_DISCOVERY_KEY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "mrpRetryIntervalIdle"
constraints:
maxValue: 3600000
- label:
"Step 2l: If (MCORE.SC.SAI_OP_DISCOVERY_KEY ) present, SAI key must be
an unsigned integer with units of milliseconds and shall be encoded as
a variable length decimal number in ASCII, omitting leading zeros.
Shall not exceed 3600000."
PICS: MCORE.SC.SAI_OP_DISCOVERY_KEY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "mrpRetryIntervalActive"
constraints:
maxValue: 3600000
- label:
"Step 2m: If (MCORE.SC.SAT_OP_DISCOVERY_KEY) present, SAT key must be
an unsigned integer with units of milliseconds and shall be encoded as
a variable length decimal number in ASCII, omitting leading zeros.
Shall not exceed 65535."
PICS: MCORE.SC.SAI_OP_DISCOVERY_KEY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "mrpRetryActiveThreshold"
constraints:
maxValue: 65535
- label: "Step 2n: TXT key for commissioning mode (CM) CM=1 must be present"
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "commissioningMode"
value: 1
- label:
"Step 2o: If (MCORE.SC.DT_KEY) present, DT key must contain the device
type identifier from Data Model Device Types and must be encoded as a
variable length decimal ASCII number without leading zeros"
PICS: MCORE.SC.DT_KEY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "deviceType"
value: deviceType
- label:
"Step 2p: If (MCORE.SC.DN_KEY) present, DN key must be a UTF-8 encoded
string with a maximum length of 32B"
PICS: MCORE.SC.DN_KEY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "deviceName"
constraints:
maxLength: 32
- label:
"Step 2q: If (MCORE.SC.RI_KEY ) present, key RI must include the
Rotating Device Identifier encoded as a uppercase string with a
maximum length of 100 chars"
PICS: MCORE.SC.RI_KEY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "rotatingIdLen"
constraints:
maxValue: 100
- label:
"Step 2r: If (MCORE.SC.PH_KEY) present, key PH must be encoded as a
variable-length decimal number in ASCII text, omitting any leading
zeros. If present value must be different of 0"
PICS: MCORE.SC.PH_KEY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "pairingHint"
constraints:
notValue: 0
- label:
"Step 2s: If (MCORE.SC.PI_KEY) present, key PI must be encoded as a
valid UTF-8 string with a maximum length of 128 bytes"
PICS: MCORE.SC.PI_KEY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "pairingInstruction"
constraints:
maxLength: 128
- label:
"Step 2t: DUT must publish AAAA records for each IPv6 address upon
which they are willing to accept Matter messages."
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "numIPs"
constraints:
minValue: 1
### DUT TurnOff
- label: "Step 3: Reboot/restart the DUT"
PICS: PICS_SDK_CI_ONLY
cluster: "SystemCommands"
endpoint: 0
command: "Reboot"
- label: "Step 3: Reboot target device(DUT)"
verification: |
Did the DUT successfully reboot?
cluster: "LogCommands"
command: "UserPrompt"
PICS: PICS_SKIP_SAMPLE_APP
arguments:
values:
- name: "message"
value: "Please reboot the DUT and enter 'y' after DUT starts"
- name: "expectedValue"
value: "y"
- label: "Wait for the commissioned device to be retrieved"
cluster: "DelayCommands"
command: "WaitForCommissionee"
arguments:
values:
- name: "nodeId"
value: nodeId
- label:
"Step 3a: DUT put in Commissioning Mode using Open Basic Commissioning
Window command, starting advertising Commissionable Node Discovery
service using DNS-SD"
PICS: CADMIN.S.C01.Rsp
cluster: "Administrator Commissioning"
command: "OpenBasicCommissioningWindow"
timedInteractionTimeoutMs: 10000
arguments:
values:
- name: "CommissioningTimeout"
value: 180
- label: "Waiting after opening commissioning window"
cluster: "DelayCommands"
command: "WaitForMs"
arguments:
values:
- name: "ms"
value: waitAfterCommissioning
- label:
"Step 4a: Check DNS-SD instance name must be 64-bit randomly selected
ID expressed as a sixteen-char hex string with capital letters and
must be different from the one at step 2"
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "instanceName"
constraints:
minLength: 16
maxLength: 16
isUpperCase: true
isHexString: true
notValue: deviceInstanceNameBeforeReboot
- label: "Step 4b: service type must be _matterc._udp"
verification: |
Run the below avahi browse command in TH terminal
avahi-browse -rt _matterc._udp
Verify the device is advertising _matterc._udp service like below output in TH terminal Log: (Verify for the DUT's actual values (like vendor ID, PID ..etc) as mentioned in the expected outcome of the test plan, The below log contains the data from the reference raspi accessory)
+ wlan0 IPv6 F6385CBB29F7CE93 _matterc._udp local
+ eth0 IPv6 F6385CBB29F7CE93 _matterc._udp local
= eth0 IPv6 F6385CBB29F7CE93 _matterc._udp local
hostname = [E45F010F1A010000.local]
address = [fe80::e65f:1ff:fe0f:1a01]
port = [5540]
txt = ["PI=" "PH=36" "CM=1" "D=3840" "T=1" "VP=65521+32769"]
= wlan0 IPv6 F6385CBB29F7CE93 _matterc._udp local
hostname = [E45F010F1A010000.local]
address = [fe80::e65f:1ff:fe0f:1a01]
port = [5540]
txt = ["PI=" "PH=36" "CM=1" "D=3840" "T=1" "VP=65521+32769"]
Service Domain 422F10CDC290A406.local
verify CM flag is 1
to look for subtypes, on the raspi run $ avahi-browse -p _services._dns-sd._udp | grep _matterc
+;eth0;IPv6;_matterc;_udp;local
+;eth0;IPv6;_V65521;_sub._matterc._udp;local
+;eth0;IPv6;_S15;_sub._matterc._udp;local
+;eth0;IPv6;_L3840;_sub._matterc._udp;local
+;eth0;IPv6;_CM;_sub._matterc._udp;local
cluster: "LogCommands"
command: "UserPrompt"
PICS: PICS_SKIP_SAMPLE_APP
arguments:
values:
- name: "message"
value: "Enter 'y' after success"
- name: "expectedValue"
value: "y"
#validate the service type and the service domain not implemented in CI
- label:
"Step 4c: Check Hostname. If (MCORE.COM.WIFI) OR (MCORE.COM.ETH)
target hostname is derived from the 48bit or 64bit MAC address
expressed as a twelve or sixteen capital letter hex string"
PICS: "(MCORE.COM.WIFI || MCORE.COM.ETH) && !MCORE.COM.THR"
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "hostName"
constraints:
minLength: 12
maxLength: 16
isUpperCase: true
isHexString: true
- label:
"Step 4c: Check Hostname. If (MCORE.COM.THR) target hostname is
derived from the 48bit or 64bit MAC address expressed as a twelve or
sixteen capital letter hex string"
PICS: "(!MCORE.COM.WIFI && !MCORE.COM.ETH) && MCORE.COM.THR"
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "hostName"
constraints:
minLength: 12
maxLength: 16
isUpperCase: true
isHexString: true
- label: "Step 4d: Check Long Discriminator _L"
cluster: "DiscoveryCommands"
command: "FindCommissionableByLongDiscriminator"
arguments:
values:
- name: "value"
value: discriminator
- label: "Step 4e: Check Short Discriminator (_S)"
cluster: "DiscoveryCommands"
command: "FindCommissionableByShortDiscriminator"
arguments:
values:
- name: "value"
value: shortDiscriminator
- label:
"Step 4f: If (MCORE.SC.VENDOR_SUBTYPE ) present, subtype _V<ddddd> is
present must be 16-bit vendor id, encoded as a variable-length decimal
number in ASCII text, omitting any leading zeros"
PICS: MCORE.SC.VENDOR_SUBTYPE
cluster: "DiscoveryCommands"
command: "FindCommissionableByVendorId"
arguments:
values:
- name: "value"
value: vendorId
- label:
"Step 4g: If (MCORE.SC.DEVTYPE_SUBTYPE) present, subtype _T<ddd> is
present, <ddd> represents device type from Data Model and must be
represented as a variable length decimal number in ASCII without
leading zeros"
# The device type is not broadcasted by the accessory under CI.
PICS: MCORE.SC.DEVTYPE_SUBTYPE
cluster: "DiscoveryCommands"
command: "FindCommissionableByDeviceType"
arguments:
values:
- name: "value"
value: deviceType
- label: "Step 4h: Check Commissioning Mode (_CM) subtype _CM is present"
cluster: "DiscoveryCommands"
command: "FindCommissionableByCommissioningMode"
- label:
"Step 4i: key D must be present and represents the discriminator which
must be encoded as a variable-length decimal value with up to 4 digits
omitting any leading zeros"
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "longDiscriminator"
value: discriminator
constraints:
minValue: 0
maxValue: 4096
- label:
"Step 4j: If (MCORE.SC.VP_KEY) present, VP key must contain at least
Vendor ID is present."
PICS: MCORE.SC.VP_KEY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "vendorId"
value: vendorId
- label:
"Step 4k: If (MCORE.SC.VP_KEY) present, VP key must contain at least
Product ID is present."
PICS: MCORE.SC.VP_KEY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "productId"
value: productId
- label:
"Step 4l: If (MCORE.SC.SII_OP_DISCOVERY_KEY ) present, SII key must be
an unsigned integer with units of milliseconds and shall be encoded as
a variable length decimal number in ASCII, omitting leading zeros.
Shall not exceed 3600000"
PICS: MCORE.SC.SII_OP_DISCOVERY_KEY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "mrpRetryIntervalIdle"
constraints:
maxValue: 3600000
- label:
"Step 4m: If (MCORE.SC.SAI_OP_DISCOVERY_KEY) present, SAI key must be
an unsigned integer with units of milliseconds and shall be encoded as
a variable length decimal number in ASCII, omitting leading zeros.
Shall not exceed 3600000."
PICS: MCORE.SC.SAI_OP_DISCOVERY_KEY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "mrpRetryIntervalActive"
constraints:
maxValue: 3600000
- label:
"Step 4n: If (MCORE.SC.SAT_OP_DISCOVERY_KEY) present, SAT key must be
an unsigned integer with units of milliseconds and shall be encoded as
a variable length decimal number in ASCII, omitting leading zeros.
Shall not exceed 65535."
PICS: MCORE.SC.SAI_OP_DISCOVERY_KEY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "mrpRetryActiveThreshold"
constraints:
maxValue: 65535
- label:
"Step 4o: TXT key for commissioning mode (CM) key CM=1 must be present"
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "commissioningMode"
value: 1
- label:
"Step 4p: If (MCORE.SC.DT_KEY) present, DT key must contain the device
type identifier from Data Model Device Types and must be encoded as a
variable length decimal ASCII number without leading zeros"
PICS: MCORE.SC.DT_KEY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "deviceType"
value: deviceType
- label:
"Step 4q: If (MCORE.SC.DN_KEY) present, DN key must be a UTF-8 encoded
string with a maximum length of 32B"
PICS: MCORE.SC.DN_KEY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "deviceName"
constraints:
maxLength: 32
- label:
"Step 4r: If (MCORE.SC.RI_KEY) present, key RI must include the
Rotating Device Identifier encoded as a uppercase string with a
maximum length of 100 chars"
PICS: MCORE.SC.RI_KEY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "rotatingIdLen"
constraints:
maxValue: 100
- label:
"Step 4s: If (MCORE.SC.PH_KEY) present, key PH must be encoded as a
variable-length decimal number in ASCII text, omitting any leading
zeros. If present value must be different of 0"
PICS: MCORE.SC.PH_KEY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "pairingHint"
constraints:
notValue: 0
- label:
"Step 4t: If (MCORE.SC.PI_KEY) present, key PI must be encoded as a
valid UTF-8 string with a maximum length of 128 bytes"
PICS: MCORE.SC.PI_KEY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "pairingInstruction"
constraints:
maxLength: 128
- label:
"Step 4u: DUT must publish AAAA records for each IPv6 address upon
which they are willing to accept Matter messages."
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "numIPs"
constraints:
minValue: 1
- label: "Step 5: Wait for OpenBasicCommissioningWindow timeout to expire"
cluster: "DelayCommands"
command: "WaitForMs"
arguments:
values:
- name: "ms"
value: 180000
- label:
"Step 6: DUT is Commissioned and instructed to enter in commissioning
mode using Open Commissioning Window command"
cluster: "Administrator Commissioning"
command: "OpenCommissioningWindow"
timedInteractionTimeoutMs: 10000
PICS: CADMIN.S.C00.Rsp && PICS_SDK_CI_ONLY
arguments:
values:
- name: "CommissioningTimeout"
value: 180
- name: "PAKEPasscodeVerifier"
value: PakeVerifier
- name: "Discriminator"
value: discriminator
- name: "Iterations"
value: 1000
- name: "Salt"
value: "SPAKE2P Key Salt"
#Issue https://github.com/project-chip/connectedhomeip/issues/26127
- label:
"Step 6: DUT is Commissioned and instructed to enter in commissioning
mode using Open Commissioning Window command"
verification: |
Run the below open-commissioning-window in TH Terminal
The user needs to change this command to match the longDiscriminator override.
use the same discriminator as the longDiscriminator of the DUT.
./chip-tool pairing open-commissioning-window 1 1 200 2000 <discriminator>
verify success on TH (Chip-tool) logs:
[1652341411.383669][2929:2934] CHIP:DMG: InvokeResponseMessage =
[1652341411.383720][2929:2934] CHIP:DMG: {
[1652341411.383769][2929:2934] CHIP:DMG: suppressResponse = false,
[1652341411.383821][2929:2934] CHIP:DMG: InvokeResponseIBs =
[1652341411.383886][2929:2934] CHIP:DMG: [
[1652341411.383936][2929:2934] CHIP:DMG: InvokeResponseIB =
[1652341411.384009][2929:2934] CHIP:DMG: {
[1652341411.384068][2929:2934] CHIP:DMG: CommandStatusIB =
[1652341411.384139][2929:2934] CHIP:DMG: {
[1652341411.384203][2929:2934] CHIP:DMG: CommandPathIB =
[1652341411.384278][2929:2934] CHIP:DMG: {
[1652341411.384349][2929:2934] CHIP:DMG: EndpointId = 0x0,
[1652341411.384427][2929:2934] CHIP:DMG: ClusterId = 0x3c,
[1652341411.384501][2929:2934] CHIP:DMG: CommandId = 0x0,
[1652341411.384624][2929:2934] CHIP:DMG: },
[1652341411.384722][2929:2934] CHIP:DMG:
[1652341411.384795][2929:2934] CHIP:DMG: StatusIB =
[1652341411.384877][2929:2934] CHIP:DMG: {
[1652341411.384958][2929:2934] CHIP:DMG: status = 0x00 (SUCCESS),
[1652341411.385035][2929:2934] CHIP:DMG: },
[1652341411.385116][2929:2934] CHIP:DMG:
[1652341411.385188][2929:2934] CHIP:DMG: },
[1652341411.385271][2929:2934] CHIP:DMG:
[1652341411.385337][2929:2934] CHIP:DMG: },
[1652341411.385416][2929:2934] CHIP:DMG:
[1652341411.385474][2929:2934] CHIP:DMG: ],
[1652341411.385547][2929:2934] CHIP:DMG:
[1652341411.385605][2929:2934] CHIP:DMG: InteractionModelRevision = 1
[1652341411.385662][2929:2934] CHIP:DMG: },
[1652341411.385794][2929:2934] CHIP:DMG: Received Command Response Status for Endpoint=0 Cluster=0x0000_003C Command=0x0000_0000 Status=0x0
[1652341411.385860][2929:2934] CHIP:CTL: Successfully opened pairing window on the device
cluster: "LogCommands"
command: "UserPrompt"
PICS: PICS_SKIP_SAMPLE_APP && CADMIN.S.C00.Rsp
arguments:
values:
- name: "message"
value: "Enter 'y' after success"
- name: "expectedValue"
value: "y"
- label: "Waiting after opening commissioning window"
cluster: "DelayCommands"
command: "WaitForMs"
arguments:
values:
- name: "ms"
value: waitAfterCommissioning
- label:
"Step 7a: DNS-SD instance name must be 64-bit randomly selected ID
expressed as a sixteen-char hex string with capital letters"
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "instanceName"
constraints:
minLength: 16
maxLength: 16
isUpperCase: true
isHexString: true
#validate the service type and the service domain not implemented in CI
- label:
"Step 7b: Check Hostname.If (MCORE.COM.WIFI) OR (MCORE.COM.ETH) target
hostname is derived from the 48bit or 64bit MAC address expressed as a
twelve or sixteen capital letter hex string."
# On macOS the hostname is the device name and because of it this test is disabled for now.
PICS: "(MCORE.COM.WIFI || MCORE.COM.ETH) && !MCORE.COM.THR"
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "hostName"
constraints:
minLength: 12
maxLength: 16
isUpperCase: true
isHexString: true
- label:
"Step 7b: Check Hostname. If (MCORE.COM.THR) target hostname is
derived from the 48bit or 64bit MAC extended address expressed as a
twelve or sixteen capital letter hex string."
# On macOS the hostname is the device name and because of it this test is disabled for now.
PICS: "(!MCORE.COM.WIFI && !MCORE.COM.ETH) && MCORE.COM.THR"
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "hostName"
constraints:
minLength: 12
maxLength: 16
isUpperCase: true
isHexString: true
- label: "Step 7c: Check Long Discriminator _L"
cluster: "DiscoveryCommands"
command: "FindCommissionableByLongDiscriminator"
arguments:
values:
- name: "value"
value: discriminator
- label: "Step 7d: Check Short Discriminator (_S)"
cluster: "DiscoveryCommands"
command: "FindCommissionableByShortDiscriminator"
arguments:
values:
- name: "value"
value: shortDiscriminator
- label:
"Step 7e: If (MCORE.SC.VENDOR_SUBTYPE) present, subtype _V<ddddd> is
present must be 16-bit vendor id, encoded as a variable-length decimal
number in ASCII text, omitting any leading zeros"
PICS: MCORE.SC.VENDOR_SUBTYPE
cluster: "DiscoveryCommands"
command: "FindCommissionableByVendorId"
arguments:
values:
- name: "value"
value: vendorId
- label:
"Step 7f: If (MCORE.SC.DEVTYPE_SUBTYPE) present, subtype _T<ddd> is
present, <ddd> represents device type from Data Model and must be
represented as a variable length decimal number in ASCII without
leading zeros"
# The device type is not broadcasted by the accessory under CI.
PICS: MCORE.SC.DEVTYPE_SUBTYPE
cluster: "DiscoveryCommands"
command: "FindCommissionableByDeviceType"
arguments:
values:
- name: "value"
value: deviceType
- label: "Step 7g: Check Commissioning Mode (_CM) subtype _CM is present"
cluster: "DiscoveryCommands"
command: "FindCommissionableByCommissioningMode"
- label:
"Step 7h: If (MCORE.SC.VP_KEY ) present, VP key must contain at least
Vendor ID is present."
PICS: MCORE.SC.VP_KEY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "vendorId"
value: vendorId
- label:
"Step 7i: If (MCORE.SC.VP_KEY ) present, VP key must contain at least
Product ID is present"
PICS: MCORE.SC.VP_KEY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "productId"
value: productId
- label:
"Step 7j: Optional TXT key for MRP Retry Interval Idle. if
(MCORE.SC.SII_OP_DISCOVERY_KEY) present, SII key must be an unsigned
integer with units of milliseconds and shall be encoded as a variable
length decimal number in ASCII, omitting leading zeros. Shall not
exceed 3600000"
PICS: MCORE.SC.SII_OP_DISCOVERY_KEY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "mrpRetryIntervalIdle"
constraints:
maxValue: 3600000
- label:
"Step 7k: Optional TXT key for MRP Retry Interval Active. if
(MCORE.SC.SAI_OP_DISCOVERY_KEY) present, SAI key must be an unsigned
integer with units of milliseconds and shall be encoded as a variable
length decimal number in ASCII, omitting leading zeros. Shall not
exceed 3600000."
PICS: MCORE.SC.SAI_OP_DISCOVERY_KEY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "mrpRetryIntervalActive"
constraints:
maxValue: 3600000
- label:
"Step 7l: Optional TXT key for MRP Retry Active Mode Threshold. If
(MCORE.SC.SAT_OP_DISCOVERY_KEY) present, SAT key must be an unsigned
integer with units of milliseconds and shall be encoded as a variable
length decimal number in ASCII, omitting leading zeros. Shall not
exceed 65535."
PICS: MCORE.SC.SAI_OP_DISCOVERY_KEY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "mrpRetryActiveThreshold"
constraints:
maxValue: 65535
- label: "Step 7m: TXT key for commissioning mode. CM=2 must be present"
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "commissioningMode"
value: 2
- label:
"Step 7n: If (MCORE.SC.DT_KEY) present, DT key must contain the device
type identifier from Data Model Device Types and must be encoded as a
variable length decimal ASCII number without leading zeros"
PICS: MCORE.SC.DT_KEY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "deviceType"
value: deviceType
- label:
"Step 7o: If (MCORE.SC.DN_KEY) present, DN key must be a UTF-8 encoded
string with a maximum length of 32B"
PICS: MCORE.SC.DN_KEY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "deviceName"
constraints:
maxLength: 32
- label:
"Step 7p: If (MCORE.SC.RI_KEY) present, key RI must include the
Rotating Device Identifier encoded as a uppercase string with a
maximum length of 100 chars"
PICS: MCORE.SC.RI_KEY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "rotatingIdLen"
constraints:
maxValue: 100
- label:
"Step 7q: If (MCORE.SC.PH_KEY) present, key PH must be encoded as a
variable-length decimal number in ASCII text, omitting any leading
zeros. If present value must be different of 0"
PICS: MCORE.SC.PH_KEY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "pairingHint"
constraints:
notValue: 0
- label:
"Step 7r: If (MCORE.SC.PI_KEY) present, key PI must be encoded as a
valid UTF-8 string with a maximum length of 128 bytes"
PICS: MCORE.SC.PI_KEY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "pairingInstruction"
constraints:
maxLength: 128
- label:
"Step 7s: DUT must publish AAAA records for each IPv6 address upon
which they are willing to accept Matter messages"
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "numIPs"
constraints:
minValue: 1
- label: "Step 8: Wait for OCW timeout to expire"
cluster: "DelayCommands"
command: "WaitForMs"
arguments:
values:
- name: "ms"
value: 180000
- label:
"Step 9: If (MCORE.SC.EXTENDED_DISCOVERY ) enable Extended Discovery.
DUT should start to send Commissionable Node Discovery DNS-SD
advertisements"
verification: |
If the device supports Extended Discovery, pass the PROMPT before the extended time period expires.
the Device should continue to advertise. Use the avahi-browse command and you should see the _matterc._udp advertisement
Reference Raspberrypi device is not supporting extended discovery.
cluster: "LogCommands"
command: "UserPrompt"
PICS: PICS_SKIP_SAMPLE_APP && MCORE.SC.EXTENDED_DISCOVERY
arguments:
values:
- name: "message"
value: "Enter 'y' after success"
- name: "expectedValue"
value: "y"
- label:
"Step 10a: Check DNS-SD instance name must be 64-bit randomly selected
ID expressed as a sixteen-char hex string with capital letters"
PICS: MCORE.SC.EXTENDED_DISCOVERY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "instanceName"
constraints:
minLength: 16
maxLength: 16
isUpperCase: true
isHexString: true
- label: "Step 10b: service type must be _matterc._udp"
verification: |
Run and Verify on the below output in TH terminal Log: (Below is the sample log , as RPI doesn't support the extended discovery)
Verify the CM flag value is 0
avahi-browse -rt _matterc._udp
Verify the device is advertising _matterc._udp service like below output in TH terminal Log: (Verify for the DUT's actual values (like vendor ID, PID ..etc) as mentioned in the expected outcome of the test plan, The below log contains the data from the reference raspi accessory)
+ wlp0s20f3 IPv6 FD37FE5156C56632 _matterc._udp local
= wlp0s20f3 IPv6 FD37FE5156C56632 _matterc._udp local
hostname = [8C1D96786A130000.local]
address = [fe80::e9f6:2c08:2794:357d]
port = [5540]
txt = ["PI=" "PH=36" "CM=2" "D=3840" "T=1" "DT=65535" "VP=65521+32769"]
cluster: "LogCommands"
command: "UserPrompt"
PICS: PICS_SKIP_SAMPLE_APP && MCORE.SC.EXTENDED_DISCOVERY
arguments:
values:
- name: "message"
value: "Enter 'y' after success"
- name: "expectedValue"
value: "y"
#validate the service type and the service domain
- label:
"Step 10c: Check Hostname. If (MCORE.COM.WIFI) OR (MCORE.COM.ETH)
target hostname is derived from the 48bit or 64bit MAC address
expressed as a twelve or sixteen capital letter hex string"
# On macOS the hostname is the device name and because of it this test is disabled for now.
PICS:
"(MCORE.COM.WIFI || MCORE.COM.ETH) && !MCORE.COM.THR &&
MCORE.SC.EXTENDED_DISCOVERY"
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "hostName"
constraints:
minLength: 12
maxLength: 16
isUpperCase: true
isHexString: true
- label:
"Step 10c: Check Hostname. If (MCORE.COM.THR) target hostname is
derived from the 48bit or 64bit MAC extended address expressed as a
twelve or sixteen capital letter hex string."
# On macOS the hostname is the device name and because of it this test is disabled for now.
PICS:
"(!MCORE.COM.WIFI && !MCORE.COM.ETH) && MCORE.COM.THR &&
MCORE.SC.EXTENDED_DISCOVERY"
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "hostName"
constraints:
minLength: 12
maxLength: 16
isUpperCase: true
isHexString: true
# Commissioning Subtypes
- label: "Step 10d: Check Long Discriminator _L"
PICS: MCORE.SC.EXTENDED_DISCOVERY
cluster: "DiscoveryCommands"
command: "FindCommissionableByLongDiscriminator"
arguments:
values:
- name: "value"
value: discriminator
- label: "Step 10e: Check Short Discriminator (_S)"
PICS: MCORE.SC.EXTENDED_DISCOVERY
cluster: "DiscoveryCommands"
command: "FindCommissionableByShortDiscriminator"
arguments:
values:
- name: "value"
value: shortDiscriminator
- label:
"Step 10f: If (MCORE.SC.VENDOR_SUBTYPE ) present, subtype _V<ddddd> is
present must be 16-bit vendor id, encoded as a variable-length decimal
number in ASCII text, omitting any leading zeros"
PICS: MCORE.SC.VENDOR_SUBTYPE && MCORE.SC.EXTENDED_DISCOVERY
cluster: "DiscoveryCommands"
command: "FindCommissionableByVendorId"
arguments:
values:
- name: "value"
value: vendorId
- label:
"Step 10g: If (MCORE.SC.DEVTYPE_SUBTYPE) present, subtype _T<ddd> is
present, <ddd> represents device type from Data Model and must be
represented as a variable length decimal number in ASCII without
leading zeros"
# The device type is not broadcasted by the accessory under CI.
PICS: MCORE.SC.DEVTYPE_SUBTYPE && MCORE.SC.EXTENDED_DISCOVERY
cluster: "DiscoveryCommands"
command: "FindCommissionableByDeviceType"
arguments:
values:
- name: "value"
value: deviceType
#TODO
- label: "Step 10h: Check Commissioning Mode (_CM)"
verification: |
subtype _CM must not be present
cluster: "LogCommands"
command: "UserPrompt"
PICS: PICS_SKIP_SAMPLE_APP && MCORE.SC.EXTENDED_DISCOVERY
arguments:
values:
- name: "message"
value: "Enter 'y' after success"
- name: "expectedValue"
value: "y"
# TXT Records
- label: "Step 10i: TXT key for discriminator (D)"
PICS: MCORE.SC.EXTENDED_DISCOVERY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "longDiscriminator"
value: discriminator
constraints:
minValue: 0
maxValue: 4096
- label:
"Step 10j: If (MCORE.SC.VP_KEY) present, VP key must contain at least
Vendor ID is present"
PICS: MCORE.SC.VP_KEY && MCORE.SC.EXTENDED_DISCOVERY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "vendorId"
value: vendorId
- label:
"Step 10k: If (MCORE.SC.VP_KEY) present, VP key must contain at least
Product ID is present"
PICS: MCORE.SC.VP_KEY && MCORE.SC.EXTENDED_DISCOVERY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "productId"
value: productId
- label:
"Step 10l: If (MCORE.SC.SII_OP_DISCOVERY_KEY) present, SII key must be
an unsigned integer with units of milliseconds and shall be encoded as
a variable length decimal number in ASCII, omitting leading zeros.
Shall not exceed 3600000."
PICS: MCORE.SC.SII_OP_DISCOVERY_KEY && MCORE.SC.EXTENDED_DISCOVERY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "mrpRetryIntervalIdle"
constraints:
maxValue: 3600000
- label:
"Step 10m: If (MCORE.SC.SAI_OP_DISCOVERY_KEY) present, SAI key must be
an unsigned integer with units of milliseconds and shall be encoded as
a variable length decimal number in ASCII, omitting leading zeros.
Shall not exceed 3600000."
PICS: MCORE.SC.SAI_OP_DISCOVERY_KEY && MCORE.SC.EXTENDED_DISCOVERY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "mrpRetryIntervalActive"
constraints:
maxValue: 3600000
- label:
"Step 10n: If (MCORE.SC.SAT_OP_DISCOVERY_KEY) present, SAT key must be
an unsigned integer with units of milliseconds and shall be encoded as
a variable length decimal number in ASCII, omitting leading zeros.
Shall not exceed 65535."
PICS: MCORE.SC.SAI_OP_DISCOVERY_KEY && MCORE.SC.EXTENDED_DISCOVERY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "mrpRetryActiveThreshold"
constraints:
maxValue: 65535
- label:
"Step 10o: TXT key for commissioning mode (CM), CM=0 may be present"
PICS: MCORE.SC.EXTENDED_DISCOVERY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "commissioningMode"
value: 0
- label:
"Step 10p: If (MCORE.SC.DT_KEY) present, DT key must contain the
device type identifier from Data Model Device Types and must be
encoded as a variable length decimal ASCII number without leading
zeros"
PICS: MCORE.SC.DT_KEY && MCORE.SC.EXTENDED_DISCOVERY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "deviceType"
value: deviceType
- label:
"Step 10q: If (MCORE.SC.DN_KEY) present, DN key must be a UTF-8
encoded string with a maximum length of 32B"
PICS: MCORE.SC.DN_KEY && MCORE.SC.EXTENDED_DISCOVERY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "deviceName"
constraints:
maxLength: 32
- label:
"Step 10r: If (MCORE.SC.RI_KEY) present, key RI must include the
Rotating Device Identifier encoded as a uppercase string with a
maximum length of 100 chars"
PICS: MCORE.SC.RI_KEY && MCORE.SC.EXTENDED_DISCOVERY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "rotatingIdLen"
constraints:
maxValue: 100
- label:
"Step 10s: If (MCORE.SC.PH_KEY) present, key PH must be encoded as a
variable-length decimal number in ASCII text, omitting any leading
zeros. If present value must be different of 0"
PICS: MCORE.SC.PH_KEY && MCORE.SC.EXTENDED_DISCOVERY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "pairingHint"
constraints:
notValue: 0
- label:
"Step 10t: If (MCORE.SC.PI_KEY) present, key PI must be encoded as a
valid UTF-8 string with a maximum length of 128 bytes"
PICS: MCORE.SC.PI_KEY && MCORE.SC.EXTENDED_DISCOVERY
cluster: "DiscoveryCommands"
command: "FindCommissionable"
response:
values:
- name: "pairingInstruction"
constraints:
maxLength: 128