1.. _bluetooth_mesh_shell: 2 3Bluetooth Mesh Shell 4#################### 5 6The Bluetooth Mesh shell subsystem provides a set of Bluetooth Mesh shell commands for the 7:ref:`shell_api` module. It allows for testing and exploring the Bluetooth Mesh API through an 8interactive interface, without having to write an application. 9 10The Bluetooth Mesh shell interface provides access to most Bluetooth Mesh features, including 11provisioning, configuration, and message sending. 12 13Prerequisites 14************* 15 16The Bluetooth Mesh shell subsystem depends on the application to create the composition data and do 17the mesh initialization. 18 19Application 20*********** 21 22The Bluetooth Mesh shell subsystem is most easily used through the Bluetooth Mesh shell application 23under ``tests/bluetooth/mesh_shell``. See :ref:`shell_api` for information on how to connect and 24interact with the Bluetooth Mesh shell application. 25 26Basic usage 27*********** 28 29The Bluetooth Mesh shell subsystem adds a single ``mesh`` command, which holds a set of 30sub-commands. Every time the device boots up, make sure to call ``mesh init`` before any of the 31other Bluetooth Mesh shell commands can be called:: 32 33 uart:~$ mesh init 34 35This is done to ensure that all available log will be printed to the shell output. 36 37Provisioning 38============ 39 40The mesh node must be provisioned to become part of the network. This is only necessary the first 41time the device boots up, as the device will remember its provisioning data between reboots. 42 43The simplest way to provision the device is through self-provisioning. To do this the user must 44provision the device with the default network key and address ``0x0001``, execute:: 45 46 uart:~$ mesh prov local 0 0x0001 47 48Since all mesh nodes use the same values for the default network key, this can be done on multiple 49devices, as long as they're assigned non-overlapping unicast addresses. Alternatively, to provision 50the device into an existing network, the unprovisioned beacon can be enabled with 51``mesh prov pb-adv on`` or ``mesh prov pb-gatt on``. The beacons can be picked up by an external 52provisioner, which can provision the node into its network. 53 54Once the mesh node is part of a network, its transmission parameters can be controlled by the 55general configuration commands: 56 57* To set the destination address, call ``mesh target dst <Addr>``. 58* To set the network key index, call ``mesh target net <NetKeyIdx>``. 59* To set the application key index, call ``mesh target app <AppKeyIdx>``. 60 61By default, the transmission parameters are set to send messages to the provisioned address and 62network key. 63 64Configuration 65============= 66 67By setting the destination address to the local unicast address (``0x0001`` in the 68``mesh prov local`` command above), we can perform self-configuration through any of the 69:ref:`bluetooth_mesh_shell_cfg_cli` commands. 70 71A good first step is to read out the node's own composition data:: 72 73 uart:~$ mesh models cfg get-comp 74 75This prints a list of the composition data of the node, including a list of its model IDs. 76 77Next, since the device has no application keys by default, it's a good idea to add one:: 78 79 uart:~$ mesh models cfg appkey add 0 0 80 81Message sending 82=============== 83 84With an application key added (see above), the mesh node's transition parameters are all valid, and 85the Bluetooth Mesh shell can send raw mesh messages through the network. 86 87For example, to send a Generic OnOff Set message, call:: 88 89 uart:~$ mesh test net-send 82020100 90 91.. note:: 92 All multibyte fields model messages are in little endian, except the opcode. 93 94The message will be sent to the current destination address, using the current network and 95application key indexes. As the destination address points to the local unicast address by default, 96the device will only send packets to itself. To change the destination address to the All Nodes 97broadcast address, call:: 98 99 uart:~$ mesh target dst 0xffff 100 101With the destination address set to ``0xffff``, any other mesh nodes in the network with the 102configured network and application keys will receive and process the messages we send. 103 104.. note:: 105 To change the configuration of the device, the destination address must be set back to the 106 local unicast address before issuing any configuration commands. 107 108Sending raw mesh packets is a good way to test model message handler implementations during 109development, as it can be done without having to implement the sending model. By default, only the 110reception of the model messages can be tested this way, as the Bluetooth Mesh shell only includes 111the foundation models. To receive a packet in the mesh node, you have to add a model with a valid 112opcode handler list to the composition data in ``subsys/bluetooth/mesh/shell.c``, and print the 113incoming message to the shell in the handler callback. 114 115Parameter formats 116***************** 117 118The Bluetooth Mesh shell commands are parsed with a variety of formats: 119 120.. list-table:: Parameter formats 121 :widths: 1 4 2 122 :header-rows: 1 123 124 * - Type 125 - Description 126 - Example 127 * - Integers 128 - The default format unless something else is specified. Can be either decimal or 129 hexadecimal. 130 - ``1234``, ``0xabcd01234`` 131 * - Hexstrings 132 - For raw byte arrays, like UUIDs, key values and message payloads, the parameters should 133 be formatted as an unbroken string of hexadecimal values without any prefix. 134 - ``deadbeef01234`` 135 * - Booleans 136 - Boolean values are denoted in the API documentation as ``<val(off, on)>``. 137 - ``on``, ``off``, ``enabled``, ``disabled``, ``1``, ``0`` 138 139Commands 140******** 141 142The Bluetooth Mesh shell implements a large set of commands. Some of the commands accept parameters, 143which are mentioned in brackets after the command name. For example, 144``mesh lpn set <value: off, on>``. Mandatory parameters are marked with angle brackets (e.g. 145``<NetKeyIdx>``), and optional parameters are marked with square brackets (e.g. ``[DstAddr]``). 146 147The Bluetooth Mesh shell commands are divided into the following groups: 148 149.. contents:: 150 :depth: 1 151 :local: 152 153.. note:: 154 Some commands depend on specific features being enabled in the compile time configuration of 155 the application. Not all features are enabled by default. The list of available Bluetooth 156 mesh shell commands can be shown in the shell by calling ``mesh`` without any arguments. 157 158General configuration 159===================== 160 161``mesh init`` 162------------- 163 164 Initialize the mesh shell. This command must be run before any other mesh command. 165 166``mesh reset-local`` 167-------------------- 168 169 Reset the local mesh node to its initial unprovisioned state. This command will also clear 170 the Configuration Database (CDB) if present. 171 172Target 173====== 174 175The target commands enables the user to monitor and set the target destination address, network 176index and application index for the shell. These parameters are used by several commands, like 177provisioning, Configuration Client, etc. 178 179``mesh target dst [DstAddr]`` 180----------------------------- 181 182 Get or set the message destination address. The destination address determines where mesh 183 packets are sent with the shell, but has no effect on modules outside the shell's control. 184 185 * ``DstAddr``: If present, sets the new 16-bit mesh destination address. If omitted, the current destination address is printed. 186 187 188``mesh target net [NetKeyIdx]`` 189------------------------------- 190 191 Get or set the message network index. The network index determines which network key is used 192 to encrypt mesh packets that are sent with the shell, but has no effect on modules outside 193 the shell's control. The network key must already be added to the device, either through 194 provisioning or by a Configuration Client. 195 196 * ``NetKeyIdx``: If present, sets the new network index. If omitted, the current network index is printed. 197 198 199``mesh target app [AppKeyIdx]`` 200------------------------------- 201 202 Get or set the message application index. The application index determines which application 203 key is used to encrypt mesh packets that are sent with the shell, but has no effect on 204 modules outside the shell's control. The application key must already be added to the device 205 by a Configuration Client, and must be bound to the current network index. 206 207 * ``AppKeyIdx``: If present, sets the new application index. If omitted, the current application index is printed. 208 209 210Low Power Node 211============== 212 213``mesh lpn set <Val(off, on)>`` 214------------------------------- 215 216 Enable or disable Low Power operation. Once enabled, the device will turn off its radio and 217 start polling for friend nodes. 218 219 * ``Val``: Sets whether Low Power operation is enabled. 220 221``mesh lpn poll`` 222----------------- 223 224 Perform a poll to the friend node, to receive any pending messages. Only available when LPN 225 is enabled. 226 227Testing 228======= 229 230``mesh test net-send <HexString>`` 231----------------------------------- 232 233 Send a raw mesh message with the current destination address, network and application index. 234 The message opcode must be encoded manually. 235 236 * ``HexString`` Raw hexadecimal representation of the message to send. 237 238``mesh test iv-update`` 239----------------------- 240 241 Force an IV update. 242 243 244``mesh test iv-update-test <Val(off, on)>`` 245------------------------------------------- 246 247 Set the IV update test mode. In test mode, the IV update timing requirements are bypassed. 248 249 * ``Val``: Enable or disable the IV update test mode. 250 251 252``mesh test rpl-clear`` 253----------------------- 254 255 Clear the replay protection list, forcing the node to forget all received messages. 256 257.. warning:: 258 259 Clearing the replay protection list breaks the security mechanisms of the mesh node, making 260 it susceptible to message replay attacks. This should never be performed in a real 261 deployment. 262 263Health Server Test 264------------------ 265 266``mesh test health-srv add-fault <FaultID>`` 267^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 268 269 Register a new Health Server Fault for the Linux Foundation Company ID. 270 271 * ``FaultID``: ID of the fault to register (``0x0001`` to ``0xFFFF``) 272 273 274``mesh test health-srv del-fault [FaultID]`` 275^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 276 277 Remove registered Health Server faults for the Linux Foundation Company ID. 278 279 * ``FaultID``: If present, the given fault ID will be deleted. If omitted, all registered faults will be cleared. 280 281Provisioning 282============ 283 284To allow a device to broadcast connectable unprovisioned beacons, the 285:kconfig:option:`CONFIG_BT_MESH_PROVISIONEE` configuration option must be enabled, along with the 286:kconfig:option:`CONFIG_BT_MESH_PB_GATT` option. 287 288``mesh prov pb-gatt <Val(off, on)>`` 289------------------------------------ 290 291 Start or stop advertising a connectable unprovisioned beacon. The connectable unprovisioned 292 beacon allows the mesh node to be discovered by nearby GATT based provisioners, and 293 provisioned through the GATT bearer. 294 295 * ``Val``: Enable or disable provisioning with GATT 296 297To allow a device to broadcast unprovisioned beacons, the 298:kconfig:option:`CONFIG_BT_MESH_PROVISIONEE` configuration option must be enabled, along with the 299:kconfig:option:`CONFIG_BT_MESH_PB_ADV` option. 300 301``mesh prov pb-adv <Val(off, on)>`` 302----------------------------------- 303 304 Start or stop advertising the unprovisioned beacon. The unprovisioned beacon allows the mesh 305 node to be discovered by nearby advertising-based provisioners, and provisioned through the 306 advertising bearer. 307 308 * ``Val``: Enable or disable provisioning with advertiser 309 310To allow a device to provision devices, the :kconfig:option:`CONFIG_BT_MESH_PROVISIONER` and 311:kconfig:option:`CONFIG_BT_MESH_PB_ADV` configuration options must be enabled. 312 313``mesh prov remote-adv <UUID(1-16 hex)> <NetKeyIdx> <Addr> <AttDur(s)>`` 314----------------------------------------------------------------------------------- 315 316 Provision a nearby device into the mesh. The mesh node starts scanning for unprovisioned 317 beacons with the given UUID. Once found, the unprovisioned device will be added to the mesh 318 network with the given unicast address, and given the network key indicated by 319 ``NetKeyIdx``. 320 321 * ``UUID``: UUID of the unprovisioned device. Providing a hex-string shorter than 16 bytes will populate the N most significant bytes of the array and zero-pad the rest. 322 * ``NetKeyIdx``: Index of the network key to pass to the device. 323 * ``Addr``: First unicast address to assign to the unprovisioned device. The device will occupy as many addresses as it has elements, and all must be available. 324 * ``AttDur``: The duration in seconds the unprovisioned device will identify itself for, if supported. See :ref:`bluetooth_mesh_models_health_srv_attention` for details. 325 326To allow a device to provision devices over GATT, the :kconfig:option:`CONFIG_BT_MESH_PROVISIONER` 327and :kconfig:option:`CONFIG_BT_MESH_PB_GATT_CLIENT` configuration options must be enabled. 328 329``mesh prov remote-gatt <UUID(1-16 hex)> <NetKeyIdx> <Addr> <AttDur(s)>`` 330------------------------------------------------------------------------- 331 332 Provision a nearby device into the mesh. The mesh node starts scanning for connectable 333 advertising for PB-GATT with the given UUID. Once found, the unprovisioned device will be 334 added to the mesh network with the given unicast address, and given the network key 335 indicated by ``NetKeyIdx``. 336 337 * ``UUID``: UUID of the unprovisioned device. Providing a hex-string shorter than 16 bytes will populate the N most significant bytes of the array and zero-pad the rest. 338 * ``NetKeyIdx``: Index of the network key to pass to the device. 339 * ``Addr``: First unicast address to assign to the unprovisioned device. The device will occupy as many addresses as it has elements, and all must be available. 340 * ``AttDur``: The duration in seconds the unprovisioned device will identify itself for, if supported. See :ref:`bluetooth_mesh_models_health_srv_attention` for details. 341 342``mesh prov uuid [UUID(1-16 hex)]`` 343----------------------------------- 344 345 Get or set the mesh node's UUID, used in the unprovisioned beacons. 346 347 * ``UUID``: If present, new 128-bit UUID value. Providing a hex-string shorter than 16 bytes will populate the N most significant bytes of the array and zero-pad the rest. If omitted, the current UUID will be printed. To enable this command, the :kconfig:option:`CONFIG_BT_MESH_SHELL_PROV_CTX_INSTANCE` option must be enabled. 348 349 350``mesh prov input-num <Number>`` 351-------------------------------- 352 353 Input a numeric OOB authentication value. Only valid when prompted by the shell during 354 provisioning. The input number must match the number presented by the other participant in 355 the provisioning. 356 357 * ``Number``: Decimal authentication number. 358 359 360``mesh prov input-str <String>`` 361-------------------------------- 362 363 Input an alphanumeric OOB authentication value. Only valid when prompted by the shell during 364 provisioning. The input string must match the string presented by the other participant in 365 the provisioning. 366 367 * ``String``: Unquoted alphanumeric authentication string. 368 369 370``mesh prov static-oob [Val(1-32 hex)]`` 371---------------------------------------- 372 373 Set or clear the static OOB authentication value. The static OOB authentication value must 374 be set before provisioning starts to have any effect. The static OOB value must be same on 375 both participants in the provisioning. To enable this command, the 376 :kconfig:option:`CONFIG_BT_MESH_SHELL_PROV_CTX_INSTANCE` option must be enabled. 377 378 * ``Val``: If present, indicates the new hexadecimal value of the static OOB. Providing a hex-string shorter than 16 bytes will populate the N most significant bytes of the array and zero-pad the rest. If omitted, the static OOB value is cleared. 379 380 381``mesh prov local <NetKeyIdx> <Addr> [IVI]`` 382-------------------------------------------- 383 384 Provision the mesh node itself. If the Configuration database is enabled, the network key 385 must be created. Otherwise, the default key value is used. 386 387 * ``NetKeyIdx``: Index of the network key to provision. 388 * ``Addr``: First unicast address to assign to the device. The device will occupy as many addresses as it has elements, and all must be available. 389 * ``IVI``: Indicates the current network IV index. Defaults to 0 if omitted. 390 391 392``mesh prov beacon-listen <Val(off, on)>`` 393------------------------------------------ 394 395 Enable or disable printing of incoming unprovisioned beacons. Allows a provisioner device to 396 detect nearby unprovisioned devices and provision them. To enable this command, the 397 :kconfig:option:`CONFIG_BT_MESH_SHELL_PROV_CTX_INSTANCE` option must be enabled. 398 399 * ``Val``: Whether to enable the unprovisioned beacon printing. 400 401``mesh prov remote-pub-key <PubKey>`` 402------------------------------------- 403 Provide Device public key. 404 405 * ``PubKey`` - Device public key in big-endian. 406 407``mesh prov auth-method input <Action> <Size>`` 408----------------------------------------------- 409 From the provisioner device, instruct the unprovisioned device to use the specified Input 410 OOB authentication action. 411 412 * ``Action`` - Input action. Allowed values: 413 414 * ``0`` - No input action. 415 * ``1`` - Push action set. 416 * ``2`` - Twist action set. 417 * ``4`` - Enter number action set. 418 * ``8`` - Enter String action set. 419 * ``Size`` - Authentication size. 420 421``mesh prov auth-method output <Action> <Size>`` 422------------------------------------------------ 423 From the provisioner device, instruct the unprovisioned device to use the specified Output 424 OOB authentication action. 425 426 * ``Action`` - Output action. Allowed values: 427 428 * ``0`` - No output action. 429 * ``1`` - Blink action set. 430 * ``2`` - Vibrate action set. 431 * ``4`` - Display number action set. 432 * ``8`` - Display String action set. 433 * ``Size`` - Authentication size. 434 435``mesh prov auth-method static <Val(1-16 hex)>`` 436------------------------------------------------ 437 From the provisioner device, instruct the unprovisioned device to use static OOB 438 authentication, and use the given static authentication value when provisioning. 439 440 * ``Val`` - Static OOB value. Providing a hex-string shorter than 32 bytes will populate the N most significant bytes of the array and zero-pad the rest. 441 442``mesh prov auth-method none`` 443------------------------------ 444 From the provisioner device, don't use any authentication when provisioning new devices. 445 This is the default behavior. 446 447Proxy 448===== 449 450The Proxy Server module is an optional mesh subsystem that can be enabled through the 451:kconfig:option:`CONFIG_BT_MESH_GATT_PROXY` configuration option. 452 453``mesh proxy identity-enable`` 454------------------------------ 455 456 Enable the Proxy Node Identity beacon, allowing Proxy devices to connect explicitly to this 457 device. The beacon will run for 60 seconds before the node returns to normal Proxy beacons. 458 459The Proxy Client module is an optional mesh subsystem that can be enabled through the 460:kconfig:option:`CONFIG_BT_MESH_PROXY_CLIENT` configuration option. 461 462``mesh proxy connect <NetKeyIdx>`` 463---------------------------------- 464 465 Auto-Connect a nearby proxy server into the mesh. 466 467 * ``NetKeyIdx``: Index of the network key to connect. 468 469 470``mesh proxy disconnect <NetKeyIdx>`` 471------------------------------------- 472 473 Disconnect the existing proxy connection. 474 475 * ``NetKeyIdx``: Index of the network key to disconnect. 476 477 478``mesh proxy solicit <NetKeyIdx>`` 479---------------------------------- 480 481 Begin Proxy Solicitation of a subnet. Support of this feature can be enabled through the 482 :kconfig:option:`CONFIG_BT_MESH_PROXY_SOLICITATION` configuration option. 483 484 * ``NetKeyIdx``: Index of the network key to send Solicitation PDUs to. 485 486.. _bluetooth_mesh_shell_cfg_cli: 487 488Models 489====== 490 491Configuration Client 492-------------------- 493 494The Configuration Client model is an optional mesh subsystem that can be enabled through the 495:kconfig:option:`CONFIG_BT_MESH_CFG_CLI` configuration option. This is implemented as a separate 496module (``mesh models cfg``) inside the ``mesh models`` subcommand list. This module will work on 497any instance of the Configuration Client model if the mentioned shell configuration options is 498enabled, and as long as the Configuration Client model is present in the model composition of the 499application. This shell module can be used for configuring itself and other nodes in the mesh 500network. 501 502The Configuration Client uses general message parameters set by ``mesh target dst`` and ``mesh 503target net`` to target specific nodes. When the Bluetooth Mesh shell node is provisioned, given that 504the :kconfig:option:`CONFIG_BT_MESH_SHELL_PROV_CTX_INSTANCE` option is enabled with the shell 505provisioning context initialized, the Configuration Client model targets itself by default. 506Similarly, when another node has been provisioned by the Bluetooth Mesh shell, the Configuration 507Client model targets the new node. In most common use-cases, the Configuration Client is depending 508on the provisioning features and the Configuration database to be fully functional. The 509Configuration Client always sends messages using the Device key bound to the destination address, so 510it will only be able to configure itself and the mesh nodes it provisioned. The following steps are 511an example of how you can set up a device to start using the Configuration Client commands: 512 513* Initialize the client node (``mesh init``). 514* Create the CDB (``mesh cdb create``). 515* Provision the local device (``mesh prov local``). 516* The shell module should now target itself. 517* Monitor the composition data of the local node (``mesh models cfg get-comp``). 518* Configure the local node as desired with the Configuration Client commands. 519* Provision other devices (``mesh prov beacon-listen``) (``mesh prov remote-adv``) 520 (``mesh prov remote-gatt``). 521* The shell module should now target the newly added node. 522* Monitor the newly provisioned nodes and their addresses (``mesh cdb show``). 523* Monitor the composition data of the target device (``mesh models cfg get-comp``). 524* Configure the node as desired with the Configuration Client commands. 525 526``mesh models cfg target get`` 527^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 528 529 Get the target Configuration server for the Configuration Client model. 530 531``mesh models cfg help`` 532^^^^^^^^^^^^^^^^^^^^^^^^ 533 534 Print information for the Configuration Client shell module. 535 536``mesh models cfg reset`` 537^^^^^^^^^^^^^^^^^^^^^^^^^ 538 539 Reset the target device. 540 541``mesh models cfg timeout [Timeout(s)]`` 542^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 543 544 Get and set the Config Client model timeout used during message sending. 545 546 * ``Timeout``: If present, set the Config Client model timeout in seconds. If omitted, the current timeout is printed. 547 548 549``mesh models cfg get-comp [Page]`` 550^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 551 552 Read a composition data page. The full composition data page will be printed. If the target 553 does not have the given page, it will return the last page before it. 554 555 * ``Page``: The composition data page to request. Defaults to 0 if omitted. 556 557 558``mesh models cfg beacon [Val(off, on)]`` 559^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 560 561 Get or set the network beacon transmission. 562 563 * ``Val``: If present, enables or disables sending of the network beacon. If omitted, the current network beacon state is printed. 564 565 566``mesh models cfg ttl [TTL]`` 567^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 568 569 Get or set the default TTL value. 570 571 * ``TTL``: If present, sets the new default TTL value. Legal TTL values are 0x00 and 0x02-0x7f. If omitted, the current default TTL value is printed. 572 573 574``mesh models cfg friend [Val(off, on)]`` 575^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 576 577 Get or set the Friend feature. 578 579 * ``Val``: If present, enables or disables the Friend feature. If omitted, the current Friend feature state is printed: 580 581 * ``0x00``: The feature is supported, but disabled. 582 * ``0x01``: The feature is enabled. 583 * ``0x02``: The feature is not supported. 584 585 586``mesh models cfg gatt-proxy [Val(off, on)]`` 587^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 588 589 Get or set the GATT Proxy feature. 590 591 * ``Val``: If present, enables or disables the GATT Proxy feature. If omitted, the current GATT Proxy feature state is printed: 592 593 * ``0x00``: The feature is supported, but disabled. 594 * ``0x01``: The feature is enabled. 595 * ``0x02``: The feature is not supported. 596 597 598``mesh models cfg relay [<Val(off, on)> [<Count> [Int(ms)]]]`` 599^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 600 601 Get or set the Relay feature and its parameters. 602 603 * ``Val``: If present, enables or disables the Relay feature. If omitted, the current Relay feature state is printed: 604 605 * ``0x00``: The feature is supported, but disabled. 606 * ``0x01``: The feature is enabled. 607 * ``0x02``: The feature is not supported. 608 609 * ``Count``: Sets the new relay retransmit count if ``val`` is ``on``. Ignored if ``val`` is ``off``. Legal retransmit count is 0-7. Defaults to ``2`` if omitted. 610 * ``Int``: Sets the new relay retransmit interval in milliseconds if ``val`` is ``on``. Legal interval range is 10-320 milliseconds. Ignored if ``val`` is ``off``. Defaults to ``20`` if omitted. 611 612``mesh models cfg node-id <NetKeyIdx> [Identity]`` 613^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 614 615 Get or Set of current Node Identity state of a subnet. 616 617 * ``NetKeyIdx``: The network key index to Get/Set. 618 * ``Identity``: If present, sets the identity of Node Identity state. 619 620``mesh models cfg polltimeout-get <LPNAddr>`` 621^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 622 623 Get current value of the PollTimeout timer of the LPN within a Friend node. 624 625 * ``LPNAddr`` Address of Low Power node. 626 627``mesh models cfg net-transmit-param [<Count> <Int(ms)>]`` 628^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 629 630 Get or set the network transmit parameters. 631 632 * ``Count``: Sets the number of additional network transmits for every sent message. Legal retransmit count is 0-7. 633 * ``Int``: Sets the new network retransmit interval in milliseconds. Legal interval range is 10-320 milliseconds. 634 635 636``mesh models cfg netkey add <NetKeyIdx> [Key(1-16 hex)]`` 637^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 638 639 Add a network key to the target node. Adds the key to the Configuration Database if enabled. 640 641 * ``NetKeyIdx``: The network key index to add. 642 * ``Key``: If present, sets the key value as a 128-bit hexadecimal value. Providing a hex-string shorter than 16 bytes will populate the N most significant bytes of the array and zero-pad the rest. Only valid if the key does not already exist in the Configuration Database. If omitted, the default key value is used. 643 644 645``mesh models cfg netkey upd <NetKeyIdx> [Key(1-16 hex)]`` 646^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 647 648 Update a network key to the target node. 649 650 * ``NetKeyIdx``: The network key index to updated. 651 * ``Key``: If present, sets the key value as a 128-bit hexadecimal value. Providing a hex-string shorter than 16 bytes will populate the N most significant bytes of the array and zero-pad the rest. If omitted, the default key value is used. 652 653``mesh models cfg netkey get`` 654^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 655 656 Get a list of known network key indexes. 657 658 659``mesh models cfg netkey del <NetKeyIdx>`` 660^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 661 662 Delete a network key from the target node. 663 664 * ``NetKeyIdx``: The network key index to delete. 665 666 667``mesh models cfg appkey add <NetKeyIdx> <AppKeyIdx> [Key(1-16 hex)]`` 668^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 669 670 Add an application key to the target node. Adds the key to the Configuration Database if 671 enabled. 672 673 * ``NetKeyIdx``: The network key index the application key is bound to. 674 * ``AppKeyIdx``: The application key index to add. 675 * ``Key``: If present, sets the key value as a 128-bit hexadecimal value. Providing a hex-string shorter than 16 bytes will populate the N most significant bytes of the array and zero-pad the rest. Only valid if the key does not already exist in the Configuration Database. If omitted, the default key value is used. 676 677``mesh models cfg appkey upd <NetKeyIdx> <AppKeyIdx> [Key(1-16 hex)]`` 678^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 679 680 Update an application key to the target node. 681 682 * ``NetKeyIdx``: The network key index the application key is bound to. 683 * ``AppKeyIdx``: The application key index to update. 684 * ``Key``: If present, sets the key value as a 128-bit hexadecimal value. Providing a hex-string shorter than 16 bytes will populate the N most significant bytes of the array and zero-pad the rest. If omitted, the default key value is used. 685 686``mesh models cfg appkey get <NetKeyIdx>`` 687^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 688 689 Get a list of known application key indexes bound to the given network key index. 690 691 * ``NetKeyIdx``: Network key indexes to get a list of application key indexes from. 692 693 694``mesh models cfg appkey del <NetKeyIdx> <AppKeyIdx>`` 695^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 696 697 Delete an application key from the target node. 698 699 * ``NetKeyIdx``: The network key index the application key is bound to. 700 * ``AppKeyIdx``: The application key index to delete. 701 702 703``mesh models cfg model app-bind <Addr> <AppKeyIdx> <MID> [CID]`` 704^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 705 706 Bind an application key to a model. Models can only encrypt and decrypt messages sent with 707 application keys they are bound to. 708 709 * ``Addr``: Address of the element the model is on. 710 * ``AppKeyIdx``: The application key to bind to the model. 711 * ``MID``: The model ID of the model to bind the key to. 712 * ``CID``: If present, determines the Company ID of the model. If omitted, the model is a Bluetooth SIG defined model. 713 714 715``mesh models cfg model app-unbind <Addr> <AppKeyIdx> <MID> [CID]`` 716^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 717 718 Unbind an application key from a model. 719 720 * ``Addr``: Address of the element the model is on. 721 * ``AppKeyIdx``: The application key to unbind from the model. 722 * ``MID``: The model ID of the model to unbind the key from. 723 * ``CID``: If present, determines the Company ID of the model. If omitted, the model is a Bluetooth SIG defined model. 724 725 726``mesh models cfg model app-get <ElemAddr> <MID> [CID]`` 727^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 728 729 Get a list of application keys bound to a model. 730 731 * ``ElemAddr``: Address of the element the model is on. 732 * ``MID``: The model ID of the model to get the bound keys of. 733 * ``CID``: If present, determines the Company ID of the model. If omitted, the model is a Bluetooth SIG defined model. 734 735 736``mesh models cfg model pub <Addr> <MID> [CID] [<PubAddr> <AppKeyIdx> <Cred(off, on)> <TTL> <PerRes> <PerSteps> <Count> <Int(ms)>]`` 737^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 738 739 Get or set the publication parameters of a model. If all publication parameters are 740 included, they become the new publication parameters of the model. If all publication 741 parameters are omitted, print the current publication parameters of the model. 742 743 * ``Addr``: Address of the element the model is on. 744 * ``MID``: The model ID of the model to get the bound keys of. 745 * ``CID``: If present, determines the Company ID of the model. If omitted, the model is a Bluetooth SIG defined model. 746 747 Publication parameters: 748 749 * ``PubAddr``: The destination address to publish to. 750 * ``AppKeyIdx``: The application key index to publish with. 751 * ``Cred``: Whether to publish with Friendship credentials when acting as a Low Power Node. 752 * ``TTL``: TTL value to publish with (``0x00`` to ``0x07f``). 753 * ``PerRes``: Resolution of the publication period steps: 754 755 * ``0x00``: The Step Resolution is 100 milliseconds 756 * ``0x01``: The Step Resolution is 1 second 757 * ``0x02``: The Step Resolution is 10 seconds 758 * ``0x03``: The Step Resolution is 10 minutes 759 * ``PerSteps``: Number of publication period steps, or 0 to disable periodic publication. 760 * ``Count``: Number of retransmission for each published message (``0`` to ``7``). 761 * ``Int`` The interval between each retransmission, in milliseconds. Must be a multiple of 50. 762 763``mesh models cfg model pub-va <Addr> <UUID(1-16 hex)> <AppKeyIdx> <Cred(off, on)> <TTL> <PerRes> <PerSteps> <Count> <Int(ms)> <MID> [CID]`` 764^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 765 766 Set the publication parameters of a model. 767 768 * ``Addr``: Address of the element the model is on. 769 * ``MID``: The model ID of the model to get the bound keys of. 770 * ``CID``: If present, determines the Company ID of the model. If omitted, the model is a Bluetooth SIG defined model. 771 772 Publication parameters: 773 774 * ``UUID``: The destination virtual address to publish to. Providing a hex-string shorter than 16 bytes will populate the N most significant bytes of the array and zero-pad the rest. 775 * ``AppKeyIdx``: The application key index to publish with. 776 * ``Cred``: Whether to publish with Friendship credentials when acting as a Low Power Node. 777 * ``TTL``: TTL value to publish with (``0x00`` to ``0x07f``). 778 * ``PerRes``: Resolution of the publication period steps: 779 780 * ``0x00``: The Step Resolution is 100 milliseconds 781 * ``0x01``: The Step Resolution is 1 second 782 * ``0x02``: The Step Resolution is 10 seconds 783 * ``0x03``: The Step Resolution is 10 minutes 784 * ``PerSteps``: Number of publication period steps, or 0 to disable periodic publication. 785 * ``Count``: Number of retransmission for each published message (``0`` to ``7``). 786 * ``Int`` The interval between each retransmission, in milliseconds. Must be a multiple of 50. 787 788 789``mesh models cfg model sub-add <ElemAddr> <SubAddr> <MID> [CID]`` 790^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 791 792 Subscription the model to a group address. Models only receive messages sent to their 793 unicast address or a group or virtual address they subscribe to. Models may subscribe to 794 multiple group and virtual addresses. 795 796 * ``ElemAddr``: Address of the element the model is on. 797 * ``SubAddr``: 16-bit group address the model should subscribe to (``0xc000`` to ``0xFEFF``). 798 * ``MID``: The model ID of the model to add the subscription to. 799 * ``CID``: If present, determines the Company ID of the model. If omitted, the model is a Bluetooth SIG defined model. 800 801 802``mesh models cfg model sub-del <ElemAddr> <SubAddr> <MID> [CID]`` 803^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 804 805 Unsubscribe a model from a group address. 806 807 * ``ElemAddr``: Address of the element the model is on. 808 * ``SubAddr``: 16-bit group address the model should remove from its subscription list (``0xc000`` to ``0xFEFF``). 809 * ``MID``: The model ID of the model to add the subscription to. 810 * ``CID``: If present, determines the Company ID of the model. If omitted, the model is a Bluetooth SIG defined model. 811 812 813``mesh models cfg model sub-add-va <ElemAddr> <LabelUUID(1-16 hex)> <MID> [CID]`` 814^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 815 816 Subscribe the model to a virtual address. Models only receive messages sent to their unicast 817 address or a group or virtual address they subscribe to. Models may subscribe to multiple 818 group and virtual addresses. 819 820 * ``ElemAddr``: Address of the element the model is on. 821 * ``LabelUUID``: 128-bit label UUID of the virtual address to subscribe to. Providing a hex-string shorter than 16 bytes will populate the N most significant bytes of the array and zero-pad the rest. 822 * ``MID``: The model ID of the model to add the subscription to. 823 * ``CID``: If present, determines the Company ID of the model. If omitted, the model is a Bluetooth SIG defined model. 824 825 826``mesh models cfg model sub-del-va <ElemAddr> <LabelUUID(1-16 hex)> <MID> [CID]`` 827^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 828 829 Unsubscribe a model from a virtual address. 830 831 * ``ElemAddr``: Address of the element the model is on. 832 * ``LabelUUID``: 128-bit label UUID of the virtual address to remove the subscription of. Providing a hex-string shorter than 16 bytes will populate the N most significant bytes of the array and zero-pad the rest. 833 * ``MID``: The model ID of the model to add the subscription to. 834 * ``CID``: If present, determines the Company ID of the model. If omitted, the model is a Bluetooth SIG defined model. 835 836``mesh models cfg model sub-ow <ElemAddr> <SubAddr> <MID> [CID]`` 837^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 838 839 Overwrite all model subscriptions with a single new group address. 840 841 * ``ElemAddr``: Address of the element the model is on. 842 * ``SubAddr``: 16-bit group address the model should added to the subscription list (``0xc000`` to ``0xFEFF``). 843 * ``MID``: The model ID of the model to add the subscription to. 844 * ``CID``: If present, determines the Company ID of the model. If omitted, the model is a Bluetooth SIG defined model. 845 846``mesh models cfg model sub-ow-va <ElemAddr> <LabelUUID(1-16 hex)> <MID> [CID]`` 847^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 848 849 Overwrite all model subscriptions with a single new virtual address. Models only receive 850 messages sent to their unicast address or a group or virtual address they subscribe to. 851 Models may subscribe to multiple group and virtual addresses. 852 853 * ``ElemAddr``: Address of the element the model is on. 854 * ``LabelUUID``: 128-bit label UUID of the virtual address as the new Address to be added to the subscription list. Providing a hex-string shorter than 16 bytes will populate the N most significant bytes of the array and zero-pad the rest. 855 * ``MID``: The model ID of the model to add the subscription to. 856 * ``CID``: If present, determines the Company ID of the model. If omitted, the model is a Bluetooth SIG defined model. 857 858``mesh models cfg model sub-del-all <ElemAddr> <MID> [CID]`` 859^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 860 861 Remove all group and virtual address subscriptions from of a model. 862 863 * ``ElemAddr``: Address of the element the model is on. 864 * ``MID``: The model ID of the model to Unsubscribe all. 865 * ``CID``: If present, determines the Company ID of the model. If omitted, the model is a Bluetooth SIG defined model. 866 867``mesh models cfg model sub-get <ElemAddr> <MID> [CID]`` 868^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 869 870 Get a list of addresses the model subscribes to. 871 872 * ``ElemAddr``: Address of the element the model is on. 873 * ``MID``: The model ID of the model to get the subscription list of. 874 * ``CID``: If present, determines the Company ID of the model. If omitted, the model is a Bluetooth SIG defined model. 875 876 877``mesh models cfg krp <NetKeyIdx> [Phase]`` 878^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 879 880 Get or set the key refresh phase of a subnet. 881 882 * ``NetKeyIdx``: The identified network key used to Get/Set the current Key Refresh Phase state. 883 * ``Phase``: New Key Refresh Phase. Valid phases are: 884 885 * ``0x00``: Normal operation; Key Refresh procedure is not active 886 * ``0x01``: First phase of Key Refresh procedure 887 * ``0x02``: Second phase of Key Refresh procedure 888 889``mesh models cfg hb-sub [<Src> <Dst> <Per>]`` 890^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 891 892 Get or set the Heartbeat subscription parameters. A node only receives Heartbeat messages 893 matching the Heartbeat subscription parameters. Sets the Heartbeat subscription parameters 894 if present, or prints the current Heartbeat subscription parameters if called with no 895 parameters. 896 897 * ``Src``: Unicast source address to receive Heartbeat messages from. 898 * ``Dst``: Destination address to receive Heartbeat messages on. 899 * ``Per``: Logarithmic representation of the Heartbeat subscription period: 900 901 * ``0``: Heartbeat subscription will be disabled. 902 * ``1`` to ``17``: The node will subscribe to Heartbeat messages for 2\ :sup:`(period - 1)` seconds. 903 904 905``mesh models cfg hb-pub [<Dst> <Count> <Per> <TTL> <Features> <NetKeyIdx>]`` 906^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 907 908 Get or set the Heartbeat publication parameters. Sets the Heartbeat publication parameters 909 if present, or prints the current Heartbeat publication parameters if called with no 910 parameters. 911 912 * ``Dst``: Destination address to publish Heartbeat messages to. 913 * ``Count``: Logarithmic representation of the number of Heartbeat messages to publish periodically: 914 915 * ``0``: Heartbeat messages are not published periodically. 916 * ``1`` to ``17``: The node will periodically publish 2\ :sup:`(count - 1)` Heartbeat messages. 917 * ``255``: Heartbeat messages will be published periodically indefinitely. 918 919 * ``Per``: Logarithmic representation of the Heartbeat publication period: 920 921 * ``0``: Heartbeat messages are not published periodically. 922 * ``1`` to ``17``: The node will publish Heartbeat messages every 2\ :sup:`(period - 1)` seconds. 923 924 * ``TTL``: The TTL value to publish Heartbeat messages with (``0x00`` to ``0x7f``). 925 * ``Features``: Bitfield of features that should trigger a Heartbeat publication when changed: 926 927 * ``Bit 0``: Relay feature. 928 * ``Bit 1``: Proxy feature. 929 * ``Bit 2``: Friend feature. 930 * ``Bit 3``: Low Power feature. 931 932 * ``NetKeyIdx``: Index of the network key to publish Heartbeat messages with. 933 934 935Health Client 936------------- 937 938The Health Client model is an optional mesh subsystem that can be enabled through the 939:kconfig:option:`CONFIG_BT_MESH_HEALTH_CLI` configuration option. This is implemented as a separate 940module (``mesh models health``) inside the ``mesh models`` subcommand list. This module will work on 941any instance of the Health Client model if the mentioned shell configuration options is enabled, and 942as long as one or more Health Client model(s) is present in the model composition of the 943application. This shell module can be used to trigger interaction between Health Clients and Servers 944on devices in a Mesh network. 945 946By default, the module will choose the first Health Client instance in the model composition when 947using the Health Client commands. To choose a specific Health Client instance the user can utilize 948the commands ``mesh models health instance set`` and ``mesh models health instance get-all``. 949 950The Health Client may use the general messages parameters set by ``mesh target dst``, 951``mesh target net`` and ``mesh target app`` to target specific nodes. If the shell target 952destination address is set to zero, the targeted Health Client will attempt to publish messages 953using its configured publication parameters. 954 955``mesh models health instance set <ElemIdx>`` 956^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 957 958 Set the Health Client model instance to use. 959 960 * ``ElemIdx``: Element index of Health Client model. 961 962``mesh models health instance get-all`` 963^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 964 965 Prints all available Health Client model instances on the device. 966 967``mesh models health fault-get <CID>`` 968^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 969 970 Get a list of registered faults for a Company ID. 971 972 * ``CID``: Company ID to get faults for. 973 974 975``mesh models health fault-clear <CID>`` 976^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 977 978 Clear the list of faults for a Company ID. 979 980 * ``CID``: Company ID to clear the faults for. 981 982 983``mesh models health fault-clear-unack <CID>`` 984^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 985 986 Clear the list of faults for a Company ID without requesting a response. 987 988 * ``CID``: Company ID to clear the faults for. 989 990 991``mesh models health fault-test <CID> <TestID>`` 992^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 993 994 Invoke a self-test procedure, and show a list of triggered faults. 995 996 * ``CID``: Company ID to perform self-tests for. 997 * ``TestID``: Test to perform. 998 999 1000``mesh models health fault-test-unack <CID> <TestID>`` 1001^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1002 1003 Invoke a self-test procedure without requesting a response. 1004 1005 * ``CID``: Company ID to perform self-tests for. 1006 * ``TestID``: Test to perform. 1007 1008 1009``mesh models health period-get`` 1010^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1011 1012 Get the current Health Server publish period divisor. 1013 1014 1015``mesh models health period-set <Divisor>`` 1016^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1017 1018 Set the current Health Server publish period divisor. When a fault is detected, the Health 1019 Server will start publishing is fault status with a reduced interval. The reduced interval 1020 is determined by the Health Server publish period divisor: Fault publish period = Publish 1021 period / 2\ :sup:`divisor`. 1022 1023 * ``Divisor``: The new Health Server publish period divisor. 1024 1025 1026``mesh models health period-set-unack <Divisor>`` 1027^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1028 1029 Set the current Health Server publish period divisor. When a fault is detected, the Health 1030 Server will start publishing is fault status with a reduced interval. The reduced interval 1031 is determined by the Health Server publish period divisor: Fault publish period = Publish 1032 period / 2\ :sup:`divisor`. 1033 1034 * ``Divisor``: The new Health Server publish period divisor. 1035 1036 1037``mesh models health attention-get`` 1038^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1039 1040 Get the current Health Server attention state. 1041 1042 1043``mesh models health attention-set <Time(s)>`` 1044^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1045 1046 Enable the Health Server attention state for some time. 1047 1048 * ``Time``: Duration of the attention state, in seconds (``0`` to ``255``) 1049 1050 1051``mesh models health attention-set-unack <Time(s)>`` 1052^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1053 1054 Enable the Health Server attention state for some time without requesting a response. 1055 1056 * ``Time``: Duration of the attention state, in seconds (``0`` to ``255``) 1057 1058 1059Binary Large Object (BLOB) Transfer Client model 1060------------------------------------------------ 1061 1062The :ref:`bluetooth_mesh_blob_cli` can be added to the mesh shell by enabling the 1063:kconfig:option:`CONFIG_BT_MESH_BLOB_CLI` option, and disabling the 1064:kconfig:option:`CONFIG_BT_MESH_DFU_CLI` option. 1065 1066``mesh models blob cli target <Addr>`` 1067^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1068 1069 Add a Target node for the next BLOB transfer. 1070 1071 * ``Addr``: Unicast address of the Target node's BLOB Transfer Server model. 1072 1073 1074``mesh models blob cli bounds [<Group>]`` 1075^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1076 1077 Get the total boundary parameters of all Target nodes. 1078 1079 * ``Group``: Optional group address to use when communicating with Target nodes. If omitted, the BLOB Transfer Client will address each Target node individually. 1080 1081 1082``mesh models blob cli tx <Id> <Size> <BlockSizeLog> <ChunkSize> [<Group> [<Mode(push, pull)>]]`` 1083^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1084 1085 Perform a BLOB transfer to Target nodes. The BLOB Transfer Client will send a dummy BLOB to 1086 all Target nodes, then post a message when the transfer is completed. Note that all Target 1087 nodes must first be configured to receive the transfer using the ``mesh models blob srv rx`` 1088 command. 1089 1090 * ``Id``: 64-bit BLOB transfer ID. 1091 * ``Size``: Size of the BLOB in bytes. 1092 * ``BlockSizeLog``: Logarithmic representation of the BLOB's block size. The final block size will be ``1 << block size log`` bytes. 1093 * ``ChunkSize``: Chunk size in bytes. 1094 * ``Group``: Optional group address to use when communicating with Target nodes. If omitted or set to 0, the BLOB Transfer Client will address each Target node individually. 1095 * ``Mode``: BLOB transfer mode to use. Must be either ``push`` (Push BLOB Transfer Mode) or ``pull`` (Pull BLOB Transfer Mode). If omitted, ``push`` will be used by default. 1096 1097 1098``mesh models blob cli tx-cancel`` 1099^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1100 1101 Cancel an ongoing BLOB transfer. 1102 1103``mesh models blob cli tx-get [Group]`` 1104^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1105 1106 Determine the progress of a previously running BLOB transfer. Can be used when not 1107 performing a BLOB transfer. 1108 1109 * ``Group``: Optional group address to use when communicating with Target nodes. If omitted or set to 0, the BLOB Transfer Client will address each Target node individually. 1110 1111 1112``mesh models blob cli tx-suspend`` 1113^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1114 1115 Suspend the ongoing BLOB transfer. 1116 1117 1118``mesh models blob cli tx-resume`` 1119^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1120 1121 Resume the suspended BLOB transfer. 1122 1123``mesh models blob cli instance-set <ElemIdx>`` 1124^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1125 1126 Use the BLOB Transfer Client model instance on the specified element when using the other 1127 BLOB Transfer Client model commands. 1128 1129 * ``ElemIdx``: The element on which to find the BLOB Transfer Client model instance to use. 1130 1131``mesh models blob cli instance-get-all`` 1132^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1133 1134 Get a list of all BLOB Transfer Client model instances on the node. 1135 1136 1137BLOB Transfer Server model 1138-------------------------- 1139 1140The :ref:`bluetooth_mesh_blob_srv` can be added to the mesh shell by enabling the 1141:kconfig:option:`CONFIG_BT_MESH_BLOB_SRV` option. The BLOB Transfer Server model is capable of 1142receiving any BLOB data, but the implementation in the mesh shell will discard the incoming data. 1143 1144 1145``mesh models blob srv rx <ID> [<TimeoutBase(10s steps)>]`` 1146^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1147 1148 Prepare to receive a BLOB transfer. 1149 1150 * ``ID``: 64-bit BLOB transfer ID to receive. 1151 * ``TimeoutBase``: Optional additional time to wait for client messages, in 10-second increments. 1152 1153 1154``mesh models blob srv rx-cancel`` 1155^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1156 1157 Cancel an ongoing BLOB transfer. 1158 1159``mesh models blob srv instance-set <ElemIdx>`` 1160^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1161 1162 Use the BLOB Transfer Server model instance on the specified element when using the other 1163 BLOB Transfer Server model commands. 1164 1165 * ``ElemIdx``: The element on which to find the BLOB Transfer Server model instance to use. 1166 1167``mesh models blob srv instance-get-all`` 1168^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1169 1170 Get a list of all BLOB Transfer Server model instances on the node. 1171 1172 1173Firmware Update Client model 1174---------------------------- 1175 1176The Firmware Update Client model can be added to the mesh shell by enabling configuration options 1177:kconfig:option:`CONFIG_BT_MESH_BLOB_CLI` and :kconfig:option:`CONFIG_BT_MESH_DFU_CLI`. The Firmware 1178Update Client demonstrates the firmware update Distributor role by transferring a dummy firmware 1179update to a set of Target nodes. 1180 1181 1182``mesh models dfu slot add <Size> <FwID> [<Metadata>]`` 1183^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1184 1185 Add a virtual DFU image slot that can be transferred as a DFU image. The image slot will be 1186 assigned an image slot index, which is printed as a response, and can be used to reference 1187 the slot in other commands. To update the image slot, remove it using the 1188 ``mesh models dfu slot del`` shell command and then add it again. 1189 1190 * ``Size``: DFU image slot size in bytes. 1191 * ``FwID``: Firmware ID, formatted as a hexstring. 1192 * ``Metadata``: Optional firmware metadata, formatted as a hexstring. 1193 1194 1195``mesh models dfu slot del <SlotIdx>`` 1196^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1197 1198 Delete the DFU image slot at the given index. 1199 1200 * ``SlotIdx``: Index of the slot to delete. 1201 1202 1203``mesh models dfu slot get <SlotIdx>`` 1204^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1205 1206 Get all available information about a DFU image slot. 1207 1208 * ``SlotIdx``: Index of the slot to get. 1209 1210 1211``mesh models dfu cli target <Addr> <ImgIdx>`` 1212^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1213 1214 Add a Target node. 1215 1216 * ``Addr``: Unicast address of the Target node. 1217 * ``ImgIdx``: Image index to address on the Target node. 1218 1219 1220``mesh models dfu cli target-state`` 1221^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1222 1223 Check the DFU Target state of the device at the configured destination address. 1224 1225 1226``mesh models dfu cli target-imgs [<MaxCount>]`` 1227^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1228 1229 Get a list of DFU images on the device at the configured destination address. 1230 1231 * ``MaxCount``: Optional maximum number of images to return. If omitted, there's no limit on the number of returned images. 1232 1233 1234``mesh models dfu cli target-check <SlotIdx> <TargetImgIdx>`` 1235^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1236 1237 Check whether the device at the configured destination address will accept a DFU transfer 1238 from the given DFU image slot to the Target node's DFU image at the given index, and what 1239 the effect would be. 1240 1241 * ``SlotIdx``: Index of the local DFU image slot to check. 1242 * ``TargetImgIdx``: Index of the Target node's DFU image to check. 1243 1244 1245``mesh models dfu cli send <SlotIdx> [<Group>]`` 1246^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1247 1248 Start a DFU transfer to all added Target nodes. 1249 1250 * ``SlotIdx``: Index of the local DFU image slot to send. 1251 * ``Group``: Optional group address to use when communicating with the Target nodes. If omitted, the Firmware Update Client will address each Target node individually. 1252 1253 1254``mesh models dfu cli cancel [<Addr>]`` 1255^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1256 1257 Cancel the DFU procedure at any state on a specific Target node or on all Target nodes. When 1258 a Target node address is provided, the Firmware Update Client model will try to cancel the 1259 DFU procedure on the provided Target node. Otherwise, the Firmware Update Client model will 1260 try to cancel the ongoing DFU procedure on all Target nodes. 1261 1262 * ``Addr``: Optional unicast address of a Target node on which to cancel the DFU procedure. 1263 1264 1265``mesh models dfu cli apply`` 1266^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1267 1268 Apply the most recent DFU transfer on all Target nodes. Can only be called after a DFU 1269 transfer is completed. 1270 1271 1272``mesh models dfu cli confirm`` 1273^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1274 1275 Confirm that the most recent DFU transfer was successfully applied on all Target nodes. Can 1276 only be called after a DFU transfer is completed and applied. 1277 1278 1279``mesh models dfu cli suspend`` 1280^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1281 1282 Suspend the ongoing DFU transfer. 1283 1284 1285``mesh models dfu cli resume`` 1286^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1287 1288 Resume the suspended DFU transfer. 1289 1290 1291``mesh models dfu cli progress`` 1292^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1293 1294 Check the progress of the current transfer. 1295 1296 1297``mesh models dfu cli instance-set <ElemIdx>`` 1298^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1299 1300 Use the Firmware Update Client model instance on the specified element when using the other 1301 Firmware Update Client model commands. 1302 1303 * ``ElemIdx``: The element on which to find the Firmware Update Client model instance to use. 1304 1305``mesh models dfu cli instance-get-all`` 1306^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1307 1308 Get a list of all Firmware Update Client model instances on the node. 1309 1310 1311Firmware Update Server model 1312---------------------------- 1313 1314The Firmware Update Server model can be added to the mesh shell by enabling configuration options 1315:kconfig:option:`CONFIG_BT_MESH_BLOB_SRV` and :kconfig:option:`CONFIG_BT_MESH_DFU_SRV`. The Firmware 1316Update Server demonstrates the firmware update Target role by accepting any firmware update. The 1317mesh shell Firmware Update Server will discard the incoming firmware data, but otherwise behave as a 1318proper firmware update Target node. 1319 1320 1321``mesh models dfu srv applied`` 1322^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1323 1324 Mark the most recent DFU transfer as applied. Can only be called after a DFU transfer is 1325 completed, and the Distributor has requested that the transfer is applied. 1326 1327 As the mesh shell Firmware Update Server doesn't actually apply the incoming firmware image, 1328 this command can be used to emulate an applied status, to notify the Distributor that the 1329 transfer was successful. 1330 1331 1332``mesh models dfu srv progress`` 1333^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1334 1335 Check the progress of the current transfer. 1336 1337``mesh models dfu srv rx-cancel`` 1338^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1339 1340 Cancel incoming DFU transfer. 1341 1342``mesh models dfu srv instance-set <ElemIdx>`` 1343^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1344 1345 Use the Firmware Update Server model instance on the specified element when using the other 1346 Firmware Update Server model commands. 1347 1348 * ``ElemIdx``: The element on which to find the Firmware Update Server model instance to use. 1349 1350``mesh models dfu srv instance-get-all`` 1351^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1352 1353 Get a list of all Firmware Update Server model instances on the node. 1354 1355 1356.. _bluetooth_mesh_shell_dfd_server: 1357 1358Firmware Distribution Server model 1359---------------------------------- 1360 1361The Firmware Distribution Server model commands can be added to the mesh shell by enabling the 1362:kconfig:option:`CONFIG_BT_MESH_DFD_SRV` configuration option. The shell commands for this model 1363mirror the messages sent to the server by a Firmware Distribution Client model. To use these 1364commands, a Firmware Distribution Server must be instantiated by the application. 1365 1366``mesh models dfd receivers-add <Addr>,<FwIdx>[;<Addr>,<FwIdx>]...`` 1367^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1368 1369 Add receivers to the Firmware Distribution Server. Supply receivers as a list of 1370 comma-separated addr,fw_idx pairs, separated by semicolons, for example, 1371 ``0x0001,0;0x0002,0;0x0004,1``. Do not use spaces in the receiver list. Repeated calls to 1372 this command will continue populating the receivers list until 1373 ``mesh models dfd receivers-delete-all`` is called. 1374 1375 * ``Addr``: Address of the receiving node(s). 1376 * ``FwIdx``: Index of the firmware slot to send to ``Addr``. 1377 1378``mesh models dfd receivers-delete-all`` 1379^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1380 1381 Delete all receivers from the server. 1382 1383``mesh models dfd receivers-get <First> <Count>`` 1384^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1385 1386 Get a list of info about firmware receivers. 1387 1388 * ``First``: Index of the first receiver to get from the receiver list. 1389 * ``Count``: The number of receivers for which to get info. 1390 1391``mesh models dfd capabilities-get`` 1392^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1393 1394 Get the capabilities of the server. 1395 1396``mesh models dfd get`` 1397^^^^^^^^^^^^^^^^^^^^^^^ 1398 1399 Get information about the current distribution state, phase and the transfer parameters. 1400 1401``mesh models dfd start <AppKeyIdx> <SlotIdx> [<Group> [<PolicyApply> [<TTL> [<TimeoutBase> [<XferMode>]]]]]`` 1402^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1403 1404 Start the firmware distribution. 1405 1406 * ``AppKeyIdx``: Application index to use for sending. The common application key should be bound to the Firmware Update and BLOB Transfer models on the Distributor and Target nodes. 1407 * ``SlotIdx``: Index of the local image slot to send. 1408 * ``Group``: Optional group address to use when communicating with the Target nodes. If omitted, the Firmware Distribution Server will address each Target node individually. To keep addressing each Target node individually while changing other arguments, set this argument value to 0. 1409 * ``PolicyApply``: Optional field that corresponds to the update policy. Setting this to ``true`` will make the Firmware Distribution Server apply the image immediately after the transfer is completed. 1410 * ``TTL``: Optional. TTL value to use when sending. Defaults to configured default TTL. 1411 * ``TimeoutBase``: Optional additional value used to calculate timeout values in the firmware distribution process, in 10-second increments.. See :ref:`bluetooth_mesh_blob_timeout` for information about how ``timeout_base`` is used to calculate the transfer timeout. Defaults to 0. 1412 * ``XferMode``: Optional BLOB transfer mode. 1 = Push mode (Push BLOB Transfer Mode), 2 = Pull mode (Pull BLOB Transfer Mode). Defaults to Push mode. 1413 1414``mesh models dfd suspend`` 1415^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1416 1417 Suspends the ongoing distribution. 1418 1419``mesh models dfd cancel`` 1420^^^^^^^^^^^^^^^^^^^^^^^^^^ 1421 1422 Cancel the ongoing distribution. 1423 1424``mesh models dfd apply`` 1425^^^^^^^^^^^^^^^^^^^^^^^^^ 1426 1427 Apply the distributed firmware. 1428 1429``mesh models dfd fw-get <FwID>`` 1430^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1431 1432 Get information about the firmware image uploaded to the server. 1433 1434 * ``FwID``: Firmware ID of the image to get. 1435 1436``mesh models dfd fw-get-by-idx <Idx>`` 1437^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1438 1439 Get information about the firmware image uploaded to the server in a specific slot. 1440 1441 * ``Idx``: Index of the slot to get the image from. 1442 1443``mesh models dfd fw-delete <FwID>`` 1444^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1445 1446 Delete a firmware image from the server. 1447 1448 * ``FwID``: Firmware ID of the image to delete. 1449 1450``mesh models dfd fw-delete-all`` 1451^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1452 1453 Delete all firmware images from the server. 1454 1455``mesh models dfd instance-set <ElemIdx>`` 1456^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1457 1458 Use the Firmware Distribution Server model instance on the specified element when using the 1459 other Firmware Distribution Server model commands. 1460 1461 * ``ElemIdx``: The element on which to find the Firmware Distribution Server model instance to use. 1462 1463``mesh models dfd instance-get-all`` 1464^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1465 1466 Get a list of all Firmware Distribution Server model instances on the node. 1467 1468 1469.. _bluetooth_mesh_shell_dfu_metadata: 1470 1471DFU metadata 1472------------ 1473 1474The DFU metadata commands allow generating metadata that can be used by a Target node to check the 1475firmware before accepting it. The commands are enabled through the 1476:kconfig:option:`CONFIG_BT_MESH_DFU_METADATA` configuration option. 1477 1478``mesh models dfu metadata comp-clear`` 1479^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1480 1481 Clear the stored composition data to be used for the Target node. 1482 1483``mesh models dfu metadata comp-add <CID> <ProductID> <VendorID> <Crpl> <Features>`` 1484^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1485 1486 Create a header of the Composition Data Page 0. 1487 1488 * ``CID``: Company identifier assigned by Bluetooth SIG. 1489 * ``ProductID``: Vendor-assigned product identifier. 1490 * ``VendorID``: Vendor-assigned version identifier. 1491 * ``Crpl``: The size of the replay protection list. 1492 * ``Features``: Features supported by the node in bit field format: 1493 1494 * ``0``: Relay. 1495 * ``1``: Proxy. 1496 * ``2``: Friend. 1497 * ``3``: Low Power. 1498 1499``mesh models dfu metadata comp-elem-add <Loc> <NumS> <NumV> {<SigMID>|<VndCID> <VndMID>}...`` 1500^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1501 Add element description of the Target node. 1502 1503 * ``Loc``: Element location. 1504 * ``NumS``: Number of SIG models instantiated on the element. 1505 * ``NumV``: Number of vendor models instantiated on the element. 1506 * ``SigMID``: SIG Model ID. 1507 * ``VndCID``: Vendor model company identifier. 1508 * ``VndMID``: Vendor model identifier. 1509 1510``mesh models dfu metadata comp-hash-get [<Key(16 hex)>]`` 1511^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1512 1513 Generate a hash of the stored Composition Data to be used in metadata. 1514 1515 * ``Key``: Optional 128-bit key to be used to generate the hash. Providing a hex-string shorter than 16 bytes will populate the N most significant bytes of the array and zero-pad the rest. 1516 1517``mesh models dfu metadata encode <Major> <Minor> <Rev> <BuildNum> <Size> <CoreType> <Hash> <Elems> [<UserData>]`` 1518^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1519 1520 Encode metadata for the DFU. 1521 1522 * ``Major``: Major version of the firmware. 1523 * ``Minor``: Minor version of the firmware. 1524 * ``Rev``: Revision number of the firmware. 1525 * ``BuildNum``: Build number. 1526 * ``Size``: Size of the signed bin file. 1527 * ``CoreType``: New firmware core type in bit field format: 1528 1529 * ``0``: Application core. 1530 * ``1``: Network core. 1531 * ``2``: Applications specific BLOB. 1532 * ``Hash``: Hash of the composition data generated using ``mesh models dfu metadata comp-hash-get`` command. 1533 * ``Elems``: Number of elements on the new firmware. 1534 * ``UserData``: User data supplied with the metadata. 1535 1536 1537Segmentation and Reassembly (SAR) Configuration Client 1538------------------------------------------------------ 1539 1540The SAR Configuration client is an optional mesh model that can be enabled through the 1541:kconfig:option:`CONFIG_BT_MESH_SAR_CFG_CLI` configuration option. The SAR Configuration Client 1542model is used to support the functionality of configuring the behavior of the lower transport layer 1543of a node that supports the SAR Configuration Server model. 1544 1545 1546``mesh models sar tx-get`` 1547^^^^^^^^^^^^^^^^^^^^^^^^^^ 1548 1549 Send SAR Configuration Transmitter Get message. 1550 1551``mesh models sar tx-set <SegIntStep> <UniRetransCnt> <UniRetransWithoutProgCnt> <UniRetransIntStep> <UniRetransIntInc> <MultiRetransCnt> <MultiRetransInt>`` 1552^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1553 1554 Send SAR Configuration Transmitter Set message. 1555 1556 * ``SegIntStep``: SAR Segment Interval Step state. 1557 * ``UniRetransCnt``: SAR Unicast Retransmissions Count state. 1558 * ``UniRetransWithoutProgCnt``: SAR Unicast Retransmissions Without Progress Count state. 1559 * ``UniRetransIntStep``: SAR Unicast Retransmissions Interval Step state. 1560 * ``UniRetransIntInc``: SAR Unicast Retransmissions Interval Increment state. 1561 * ``MultiRetransCnt``: SAR Multicast Retransmissions Count state. 1562 * ``MultiRetransInt``: SAR Multicast Retransmissions Interval state. 1563 1564``mesh models sar rx-get`` 1565^^^^^^^^^^^^^^^^^^^^^^^^^^ 1566 1567 Send SAR Configuration Receiver Get message. 1568 1569``mesh models sar rx-set <SegThresh> <AckDelayInc> <DiscardTimeout> <RxSegIntStep> <AckRetransCount>`` 1570^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1571 1572 Send SAR Configuration Receiver Set message. 1573 1574 * ``SegThresh``: SAR Segments Threshold state. 1575 * ``AckDelayInc``: SAR Acknowledgment Delay Increment state. 1576 * ``DiscardTimeout``: SAR Discard Timeout state. 1577 * ``RxSegIntStep``: SAR Receiver Segment Interval Step state. 1578 * ``AckRetransCount``: SAR Acknowledgment Retransmissions Count state. 1579 1580 1581Private Beacon Client 1582--------------------- 1583 1584The Private Beacon Client model is an optional mesh subsystem that can be enabled through the 1585:kconfig:option:`CONFIG_BT_MESH_PRIV_BEACON_CLI` configuration option. 1586 1587``mesh models prb priv-beacon-get`` 1588^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1589 1590 Get the target's Private Beacon state. Possible values: 1591 1592 * ``0x00``: The node doesn't broadcast Private beacons. 1593 * ``0x01``: The node broadcasts Private beacons. 1594 1595``mesh models prb priv-beacon-set <Val(off, on)> <RandInt(10s steps)>`` 1596^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1597 1598 Set the target's Private Beacon state. 1599 1600 * ``Val``: Control Private Beacon state. 1601 * ``RandInt``: Random refresh interval (in 10-second steps), or 0 to keep current value. 1602 1603``mesh models prb priv-gatt-proxy-get`` 1604^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1605 1606 Get the target's Private GATT Proxy state. Possible values: 1607 1608 * ``0x00``: The Private Proxy functionality is supported, but disabled. 1609 * ``0x01``: The Private Proxy functionality is enabled. 1610 * ``0x02``: The Private Proxy functionality is not supported. 1611 1612``mesh models prb priv-gatt-proxy-set <Val(off, on)>`` 1613^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1614 1615 Set the target's Private GATT Proxy state. 1616 1617 * ``Val``: New Private GATT Proxy value: 1618 1619 * ``0x00``: Disable the Private Proxy functionality. 1620 * ``0x01``: Enable the Private Proxy functionality. 1621 1622``mesh models prb priv-node-id-get <NetKeyIdx>`` 1623^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1624 1625 Get the target's Private Node Identity state. Possible values: 1626 1627 * ``0x00``: The node does not adverstise with the Private Node Identity. 1628 * ``0x01``: The node advertises with the Private Node Identity. 1629 * ``0x02``: The node doesn't support advertising with the Private Node Identity. 1630 1631 * ``NetKeyIdx``: Network index to get the Private Node Identity state of. 1632 1633``mesh models prb priv-node-id-set <NetKeyIdx> <State>`` 1634^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1635 1636 Set the target's Private Node Identity state. 1637 1638 * ``NetKeyIdx``: Network index to set the Private Node Identity state of. 1639 * ``State``: New Private Node Identity value: 1640 1641 * ``0x00``: Stop advertising with the Private Node Identity. 1642 * ``0x01``: Start advertising with the Private Node Identity. 1643 1644 1645Opcodes Aggregator Client 1646------------------------- 1647 1648The Opcodes Aggregator client is an optional Bluetooth Mesh model that can be enabled through the 1649:kconfig:option:`CONFIG_BT_MESH_OP_AGG_CLI` configuration option. The Opcodes Aggregator Client 1650model is used to support the functionality of dispatching a sequence of access layer messages to 1651nodes supporting the Opcodes Aggregator Server model. 1652 1653``mesh models opagg seq-start <ElemAddr>`` 1654^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1655 1656 Start the Opcodes Aggregator Sequence message. This command initiates the context for 1657 aggregating messages and sets the destination address for next shell commands to 1658 ``elem_addr``. 1659 1660 * ``ElemAddr``: Element address that will process the aggregated opcodes. 1661 1662``mesh models opagg seq-send`` 1663^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1664 1665 Send the Opcodes Aggregator Sequence message. This command completes the procedure, sends 1666 the aggregated sequence message to the target node and clears the context. 1667 1668``mesh models opagg seq-abort`` 1669^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1670 1671 Abort the Opcodes Aggregator Sequence message. This command clears the Opcodes Aggregator 1672 Client context. 1673 1674 1675Remote Provisioning Client 1676-------------------------- 1677 1678The Remote Provisioning Client is an optional Bluetooth Mesh model enabled through the 1679:kconfig:option:`CONFIG_BT_MESH_RPR_CLI` configuration option. The Remote Provisioning Client model 1680provides support for remote provisioning of devices into a mesh network by using the Remote 1681Provisioning Server model. 1682 1683This shell module can be used to trigger interaction between Remote Provisioning Clients and Remote 1684Provisioning Servers on devices in a mesh network. 1685 1686``mesh models rpr scan <Timeout(s)> [<UUID(1-16 hex)>]`` 1687^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1688 1689 Start scanning for unprovisioned devices. 1690 1691 * ``Timeout``: Scan timeout in seconds. Must be at least 1 second. 1692 * ``UUID``: Device UUID to scan for. Providing a hex-string shorter than 16 bytes will populate the N most significant bytes of the array and zero-pad the rest. If omitted, all devices will be reported. 1693 1694``mesh models rpr scan-ext <Timeout(s)> <UUID(1-16 hex)> [<ADType> ... ]`` 1695^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1696 1697 Start the extended scanning for unprovisioned devices. 1698 1699 * ``Timeout``: Scan timeout in seconds. Valid values from :c:macro:`BT_MESH_RPR_EXT_SCAN_TIME_MIN` to :c:macro:`BT_MESH_RPR_EXT_SCAN_TIME_MAX`. 1700 * ``UUID``: Device UUID to start extended scanning for. Providing a hex-string shorter than 16 bytes will populate the N most significant bytes of the array and zero-pad the rest. 1701 * ``ADType``: List of AD types to include in the scan report. Must contain 1 to :kconfig:option:`CONFIG_BT_MESH_RPR_AD_TYPES_MAX` entries. 1702 1703``mesh models rpr scan-srv [<ADType> ... ]`` 1704^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1705 1706 Start the extended scanning for the Remote Provisioning Server. 1707 1708 * ``ADType``: List of AD types to include in the scan report. Must contain 1 to :kconfig:option:`CONFIG_BT_MESH_RPR_AD_TYPES_MAX` entries. 1709 1710``mesh models rpr scan-caps`` 1711^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1712 1713 Get the scanning capabilities of the Remote Provisioning Server. 1714 1715``mesh models rpr scan-get`` 1716^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1717 1718 Get the current scanning state of the Remote Provisioning Server. 1719 1720``mesh models rpr scan-stop`` 1721^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1722 1723 Stop any ongoing scanning on the Remote Provisioning Server. 1724 1725``mesh models rpr link-get`` 1726^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1727 1728 Get the current link status of the Remote Provisioning Server. 1729 1730``mesh models rpr link-close`` 1731^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1732 1733 Close any open links on the Remote Provisioning Server. 1734 1735``mesh models rpr provision-remote <UUID(1-16 hex)> <NetKeyIdx> <Addr>`` 1736^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1737 1738 Provision a mesh node using the PB-Remote provisioning bearer. 1739 1740 * ``UUID``: UUID of the unprovisioned node. Providing a hex-string shorter than 16 bytes will populate the N most significant bytes of the array and zero-pad the rest. 1741 * ``NetKeyIdx``: Network Key Index to give to the unprovisioned node. 1742 * ``Addr``: Address to assign to remote device. If ``addr`` is 0, the lowest available address will be chosen. 1743 1744``mesh models rpr reprovision-remote <Addr> [<CompChanged(false, true)>]`` 1745^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1746 1747 Reprovision a mesh node using the PB-Remote provisioning bearer. 1748 1749 * ``Addr``: Address to assign to remote device. If ``addr`` is 0, the lowest available address will be chosen. 1750 * ``CompChanged``: The Target node has indicated that its Composition Data has changed. Defaults to false. 1751 1752``mesh models rpr instance-set <ElemIdx>`` 1753^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1754 1755 Use the Remote Provisioning Client model instance on the specified element when using the 1756 other Remote Provisioning Client model commands. 1757 1758 * ``ElemIdx``: The element on which to find the Remote Provisioning Client model instance to use. 1759 1760``mesh models rpr instance-get-all`` 1761^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1762 1763 Get a list of all Remote Provisioning Client model instances on the node. 1764 1765 1766Configuration database 1767====================== 1768 1769The Configuration database is an optional mesh subsystem that can be enabled through the 1770:kconfig:option:`CONFIG_BT_MESH_CDB` configuration option. The Configuration database is only 1771available on provisioner devices, and allows them to store all information about the mesh network. 1772To avoid conflicts, there should only be one mesh node in the network with the Configuration 1773database enabled. This node is the Configurator, and is responsible for adding new nodes to the 1774network and configuring them. 1775 1776``mesh cdb create [NetKey(1-16 hex)]`` 1777-------------------------------------- 1778 1779 Create a Configuration database. 1780 1781 * ``NetKey``: Optional network key value of the primary network key (NetKeyIndex=0). Providing a hex-string shorter than 16 bytes will populate the N most significant bytes of the array and zero-pad the rest. Defaults to the default key value if omitted. 1782 1783 1784``mesh cdb clear`` 1785------------------ 1786 1787 Clear all data from the Configuration database. 1788 1789 1790``mesh cdb show`` 1791----------------- 1792 1793 Show all data in the Configuration database. 1794 1795 1796``mesh cdb node-add <UUID(1-16 hex)> <Addr> <ElemCnt> <NetKeyIdx> [DevKey(1-16 hex)]`` 1797-------------------------------------------------------------------------------------- 1798 1799 Manually add a mesh node to the configuration database. Note that devices provisioned with 1800 ``mesh provision`` and ``mesh provision-adv`` will be added automatically if the 1801 Configuration Database is enabled and created. 1802 1803 * ``UUID``: 128-bit hexadecimal UUID of the node. Providing a hex-string shorter than 16 bytes will populate the N most significant bytes of the array and zero-pad the rest. 1804 * ``Addr``: Unicast address of the node, or 0 to automatically choose the lowest available address. 1805 * ``ElemCnt``: Number of elements on the node. 1806 * ``NetKeyIdx``: The network key the node was provisioned with. 1807 * ``DevKey``: Optional 128-bit device key value for the device. Providing a hex-string shorter than 16 bytes will populate the N most significant bytes of the array and zero-pad the rest. If omitted, a random value will be generated. 1808 1809 1810``mesh cdb node-del <Addr>`` 1811---------------------------- 1812 1813 Delete a mesh node from the Configuration database. If possible, the node should be reset 1814 with ``mesh reset`` before it is deleted from the Configuration database, to avoid 1815 unexpected behavior and uncontrolled access to the network. 1816 1817 * ``Addr`` Address of the node to delete. 1818 1819 1820``mesh cdb subnet-add <NetKeyIdx> [<NetKey(1-16 hex)>]`` 1821-------------------------------------------------------- 1822 1823 Add a network key to the Configuration database. The network key can later be passed to mesh 1824 nodes in the network. Note that adding a key to the Configuration database does not 1825 automatically add it to the local node's list of known network keys. 1826 1827 * ``NetKeyIdx``: Key index of the network key to add. 1828 * ``NetKey``: Optional 128-bit network key value. Providing a hex-string shorter than 16 bytes will populate the N most significant bytes of the array and zero-pad the rest. If omitted, a random value will be generated. 1829 1830 1831``mesh cdb subnet-del <NetKeyIdx>`` 1832----------------------------------- 1833 1834 Delete a network key from the Configuration database. 1835 1836 * ``NetKeyIdx``: Key index of the network key to delete. 1837 1838 1839``mesh cdb app-key-add <NetKeyIdx> <AppKeyIdx> [<AppKey(1-16 hex)>]`` 1840--------------------------------------------------------------------- 1841 1842 Add an application key to the Configuration database. The application key can later be 1843 passed to mesh nodes in the network. Note that adding a key to the Configuration database 1844 does not automatically add it to the local node's list of known application keys. 1845 1846 * ``NetKeyIdx``: Network key index the application key is bound to. 1847 * ``AppKeyIdx``: Key index of the application key to add. 1848 * ``AppKey``: Optional 128-bit application key value. Providing a hex-string shorter than 16 bytes will populate the N most significant bytes of the array and zero-pad the rest. If omitted, a random value will be generated. 1849 1850 1851``mesh cdb app-key-del <AppKeyIdx>`` 1852------------------------------------ 1853 1854 Delete an application key from the Configuration database. 1855 1856 * ``AppKeyIdx``: Key index of the application key to delete. 1857 1858 1859On-Demand Private GATT Proxy Client 1860----------------------------------- 1861 1862The On-Demand Private GATT Proxy Client model is an optional mesh subsystem that can be enabled 1863through the :kconfig:option:`CONFIG_BT_MESH_OD_PRIV_PROXY_CLI` configuration option. 1864 1865``mesh models od_priv_proxy od-priv-gatt-proxy [Dur(s)]`` 1866--------------------------------------------------------- 1867 1868 Set the On-Demand Private GATT Proxy state on active target, or fetch the value of this 1869 state from it. 1870 1871 * ``Dur``: If given, set the state of On-Demand Private GATT Proxy to this value in seconds. Fetch this value otherwise. 1872 1873 1874Solicitation PDU RPL Client 1875--------------------------- 1876 1877The Solicitation PDU RPL Client model is an optional mesh subsystem that can be enabled through the 1878:kconfig:option:`CONFIG_BT_MESH_SOL_PDU_RPL_CLI` configuration option. 1879 1880``mesh models sol_pdu_rpl sol-pdu-rpl-clear <RngStart> <Ackd> [RngLen]`` 1881------------------------------------------------------------------------ 1882 1883 Clear active target's solicitation replay protection list (SRPL) in given range of 1884 solicitation source (SSRC) addresses. 1885 1886 * ``RngStart``: Start address of the SSRC range. 1887 * ``Ackd``: This argument decides on whether an acknowledged or unacknowledged message will be sent. 1888 * ``RngLen``: Range length for the SSRC addresses to be cleared from the solicitiation RPL list. This parameter is optional; if absent, only a single SSRC address will be cleared. 1889 1890 1891Frame statistic 1892=============== 1893 1894``mesh stat get`` 1895----------------- 1896 1897 Get the frame statistic. The command prints numbers of received frames, as well as numbers 1898 of planned and succeeded transmission attempts. 1899 1900 1901``mesh stat clear`` 1902------------------- 1903 1904 Clear all statistics collected before. 1905