• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..--

BUILD.gnD03-Aug-20242.9 KiB9286

CMakeLists.txtD03-Aug-20242.7 KiB8072

README.mdD03-Aug-202490.3 KiB4,2553,108

README_BR.mdD03-Aug-20247.1 KiB361254

README_COAP.mdD03-Aug-20245.8 KiB243180

README_COAPS.mdD03-Aug-20246.2 KiB304222

README_COMMISSIONER.mdD03-Aug-20245.6 KiB269186

README_COMMISSIONING.mdD03-Aug-20242.3 KiB12291

README_DATASET.mdD03-Aug-202419 KiB831617

README_HISTORY.mdD03-Aug-202434.4 KiB653549

README_JOINER.mdD03-Aug-20241.3 KiB10975

README_NETDATA.mdD03-Aug-202412.3 KiB492361

README_SRP.mdD03-Aug-20243.8 KiB188151

README_SRP_CLIENT.mdD03-Aug-20248.7 KiB457320

README_SRP_SERVER.mdD03-Aug-20244 KiB240174

README_TCAT.mdD03-Aug-2024324 3826

README_TCP.mdD03-Aug-20245.8 KiB234161

README_UDP.mdD03-Aug-20244 KiB230159

cli.cppD03-Aug-2024250 KiB8,5834,407

cli.hppD03-Aug-202415.6 KiB440287

cli_bbr.cppD03-Aug-202413.8 KiB499208

cli_bbr.hppD03-Aug-20243.2 KiB9727

cli_br.cppD03-Aug-202421.5 KiB809357

cli_br.hppD03-Aug-20243.5 KiB11038

cli_coap.cppD03-Aug-202438.6 KiB1,168748

cli_coap.hppD03-Aug-20246.9 KiB188104

cli_coap_secure.cppD03-Aug-202432.5 KiB1,060631

cli_coap_secure.hppD03-Aug-20246.2 KiB16884

cli_commissioner.cppD03-Aug-202423.6 KiB738381

cli_commissioner.hppD03-Aug-20244.5 KiB11742

cli_config.hD03-Aug-20246.5 KiB21056

cli_dataset.cppD03-Aug-202435.8 KiB1,330680

cli_dataset.hppD03-Aug-20245.7 KiB14371

cli_dns.cppD03-Aug-202425.1 KiB752371

cli_dns.hppD03-Aug-20245.2 KiB13661

cli_extension_example.cD03-Aug-20242.3 KiB5820

cli_extension_example.cmakeD03-Aug-20242 KiB4033

cli_history.cppD03-Aug-202472.1 KiB1,478569

cli_history.hppD03-Aug-20244 KiB11441

cli_joiner.cppD03-Aug-20247.6 KiB284115

cli_joiner.hppD03-Aug-20243.2 KiB9626

cli_link_metrics.cppD03-Aug-202418.4 KiB531305

cli_link_metrics.hppD03-Aug-20244.9 KiB12745

cli_mac_filter.cppD03-Aug-202416.4 KiB510217

cli_mac_filter.hppD03-Aug-20243.6 KiB10532

cli_mdns.cppD03-Aug-202429.9 KiB1,157849

cli_mdns.hppD03-Aug-20245.5 KiB14569

cli_network_data.cppD03-Aug-202426.7 KiB975486

cli_network_data.hppD03-Aug-20245.4 KiB15637

cli_ping.cppD03-Aug-20247.6 KiB257163

cli_ping.hppD03-Aug-20243.4 KiB9826

cli_srp_client.cppD03-Aug-202430.8 KiB1,014455

cli_srp_client.hppD03-Aug-20244.2 KiB11339

cli_srp_server.cppD03-Aug-202416.7 KiB579280

cli_srp_server.hppD03-Aug-20243.2 KiB9726

cli_tcat.cppD03-Aug-202410.6 KiB272195

cli_tcat.hppD03-Aug-20243.1 KiB9225

cli_tcp.cppD03-Aug-202438.9 KiB1,228811

cli_tcp.hppD03-Aug-202411.9 KiB229143

cli_udp.cppD03-Aug-202413.4 KiB478216

cli_udp.hppD03-Aug-20243.4 KiB9525

cli_utils.cppD03-Aug-202419.8 KiB787560

cli_utils.hppD03-Aug-202429 KiB823257

ftd.cmakeD03-Aug-20242.2 KiB5850

mtd.cmakeD03-Aug-20242.2 KiB5850

radio.cmakeD03-Aug-20242.4 KiB6758

x509_cert_key.hppD03-Aug-20245.3 KiB11847

README.md

1# OpenThread CLI Reference
2
3The OpenThread CLI exposes configuration and management APIs via a command line interface. Use the CLI to play with OpenThread, which can also be used with additional application code. The OpenThread test scripts use the CLI to execute test cases.
4
5## Separator and escaping characters
6
7The whitespace character (`' '`) is used to delimit the command name and the different arguments, together with tab (`'\t'`) and new line characters (`'\r'`, `'\n'`).
8
9Some arguments might require to accept whitespaces on them. For those cases the backslash character (`'\'`) can be used to escape separators or the backslash itself.
10
11Example:
12
13```bash
14> networkname Test\ Network
15Done
16> networkname
17Test Network
18Done
19>
20```
21
22## OpenThread Command List
23
24- [ba](#ba)
25- [bbr](#bbr)
26- [br](README_BR.md)
27- [bufferinfo](#bufferinfo)
28- [ccathreshold](#ccathreshold)
29- [channel](#channel)
30- [child](#child-list)
31- [childip](#childip)
32- [childmax](#childmax)
33- [childsupervision](#childsupervision-interval)
34- [childtimeout](#childtimeout)
35- [coap](README_COAP.md)
36- [coaps](README_COAPS.md)
37- [coex](#coex)
38- [commissioner](README_COMMISSIONER.md)
39- [contextreusedelay](#contextreusedelay)
40- [counters](#counters)
41- [csl](#csl)
42- [dataset](README_DATASET.md)
43- [debug](#debug)
44- [delaytimermin](#delaytimermin)
45- [detach](#detach)
46- [deviceprops](#deviceprops)
47- [diag](#diag)
48- [discover](#discover-channel)
49- [dns](#dns-config)
50- [domainname](#domainname)
51- [dua](#dua-iid)
52- [eidcache](#eidcache)
53- [eui64](#eui64)
54- [extaddr](#extaddr)
55- [extpanid](#extpanid)
56- [factoryreset](#factoryreset)
57- [fake](#fake)
58- [fem](#fem)
59- [history](README_HISTORY.md)
60- [ifconfig](#ifconfig)
61- [instanceid](#instanceid)
62- [ipaddr](#ipaddr)
63- [ipmaddr](#ipmaddr)
64- [joiner](README_JOINER.md)
65- [joinerport](#joinerport-port)
66- [keysequence](#keysequence-counter)
67- [leaderdata](#leaderdata)
68- [leaderweight](#leaderweight)
69- [linkmetrics](#linkmetrics-mgmt-ipaddr-enhanced-ack-clear)
70- [linkmetricsmgr](#linkmetricsmgr-disable)
71- [locate](#locate)
72- [log](#log-filename-filename)
73- [mac](#mac-retries-direct)
74- [macfilter](#macfilter)
75- [meshdiag](#meshdiag-topology)
76- [mliid](#mliid-iid)
77- [mlr](#mlr-reg-ipaddr--timeout)
78- [mode](#mode)
79- [multiradio](#multiradio)
80- [nat64](#nat64-cidr)
81- [neighbor](#neighbor-list)
82- [netdata](README_NETDATA.md)
83- [netstat](#netstat)
84- [networkdiagnostic](#networkdiagnostic-get-addr-type-)
85- [networkidtimeout](#networkidtimeout)
86- [networkkey](#networkkey)
87- [networkname](#networkname)
88- [networktime](#networktime)
89- [nexthop](#nexthop)
90- [panid](#panid)
91- [parent](#parent)
92- [parentpriority](#parentpriority)
93- [partitionid](#partitionid)
94- [ping](#ping-async--i-source--m-ipaddr-size-count-interval-hoplimit-timeout)
95- [platform](#platform)
96- [pollperiod](#pollperiod-pollperiod)
97- [preferrouterid](#preferrouterid-routerid)
98- [prefix](#prefix)
99- [promiscuous](#promiscuous)
100- [pskc](#pskc)
101- [pskcref](#pskcref)
102- [radio](#radio-enable)
103- [radiofilter](#radiofilter)
104- [rcp](#rcp)
105- [region](#region)
106- [releaserouterid](#releaserouterid-routerid)
107- [reset](#reset)
108- [rloc16](#rloc16)
109- [route](#route)
110- [router](#router-list)
111- [routerdowngradethreshold](#routerdowngradethreshold)
112- [routereligible](#routereligible)
113- [routerselectionjitter](#routerselectionjitter)
114- [routerupgradethreshold](#routerupgradethreshold)
115- [childrouterlinks](#childrouterlinks)
116- [scan](#scan-channel)
117- [service](#service)
118- [singleton](#singleton)
119- [sntp](#sntp-query-sntp-server-ip-sntp-server-port)
120- [state](#state)
121- [srp](README_SRP.md)
122- [tcat](README_TCAT.md)
123- [tcp](README_TCP.md)
124- [test](#test-tmforiginfilter-enabledisable)
125- [thread](#thread-start)
126- [timeinqueue](#timeinqueue)
127- [trel](#trel)
128- [tvcheck](#tvcheck-enable)
129- [txpower](#txpower)
130- [udp](README_UDP.md)
131- [unsecureport](#unsecureport-add-port)
132- [uptime](#uptime)
133- [vendor](#vendor-name)
134- [verhoeff](#verhoeff-calculate)
135- [version](#version)
136
137## OpenThread Command Details
138
139### bbr
140
141Show current Primary Backbone Router information for Thread 1.2 device.
142
143```bash
144> bbr
145BBR Primary:
146server16: 0xE400
147seqno:    10
148delay:    120 secs
149timeout:  300 secs
150Done
151```
152
153```bash
154> bbr
155BBR Primary: None
156Done
157```
158
159### bbr mgmt dua \<status\|coap-code\> [meshLocalIid]
160
161Configure the response status for DUA.req with meshLocalIid in payload. Without meshLocalIid, simply respond any coming DUA.req next with the specified status or COAP code.
162
163Only for testing/reference device.
164
165known status value:
166
167- 0: ST_DUA_SUCCESS
168- 1: ST_DUA_REREGISTER
169- 2: ST_DUA_INVALID
170- 3: ST_DUA_DUPLICATE
171- 4: ST_DUA_NO_RESOURCES
172- 5: ST_DUA_BBR_NOT_PRIMARY
173- 6: ST_DUA_GENERAL_FAILURE
174- 160: COAP code 5.00
175
176```bash
177> bbr mgmt dua 1 2f7c235e5025a2fd
178Done
179> bbr mgmt dua 160
180Done
181```
182
183### bbr mgmt mlr listener
184
185Show the Multicast Listeners.
186
187Only for testing/reference Backbone Router device.
188
189```bash
190> bbr mgmt mlr listener
191ff04:0:0:0:0:0:0:abcd 3534000
192ff04:0:0:0:0:0:0:eeee 3537610
193Done
194```
195
196### bbr mgmt mlr listener add \<ipaddr\> \[\<timeout\>\]
197
198Add a Multicast Listener with a given IPv6 multicast address and timeout (in seconds).
199
200Only for testing/reference Backbone Router device.
201
202```bash
203> bbr mgmt mlr listener add ff04::1
204Done
205> bbr mgmt mlr listener add ff04::2 300
206Done
207> bbr mgmt mlr listener
208ff04:0:0:0:0:0:0:2 261
209ff04:0:0:0:0:0:0:1 3522
210Done
211```
212
213### bbr mgmt mlr listener clear
214
215Removes all the Multicast Listeners.
216
217Only for testing/reference Backbone Router device.
218
219```bash
220> bbr mgmt mlr listener clear
221Done
222> bbr mgmt mlr listener
223Done
224```
225
226### bbr mgmt mlr response \<status\>
227
228Configure the response status for the next MLR.req.
229
230Only for testing/reference device.
231
232Known status values:
233
234- 0: ST_MLR_SUCCESS
235- 2: ST_MLR_INVALID
236- 3: ST_MLR_NO_PERSISTENT
237- 4: ST_MLR_NO_RESOURCES
238- 5: ST_MLR_BBR_NOT_PRIMARY
239- 6: ST_MLR_GENERAL_FAILURE
240
241```bash
242> bbr mgmt mlr response 2
243Done
244```
245
246### bbr state
247
248Show local Backbone state ([`Disabled`,`Primary`, `Secondary`]) for Thread 1.2 FTD.
249
250`OPENTHREAD_CONFIG_BACKBONE_ROUTER_ENABLE` is required.
251
252```bash
253> bbr state
254Disabled
255Done
256
257> bbr state
258Primary
259Done
260
261> bbr state
262Secondary
263Done
264```
265
266### bbr enable
267
268Enable Backbone Router Service for Thread 1.2 FTD. `SRV_DATA.ntf` would be triggered for attached device if there is no Backbone Router Service in Thread Network Data.
269
270`OPENTHREAD_CONFIG_BACKBONE_ROUTER_ENABLE` is required.
271
272```bash
273> bbr enable
274Done
275```
276
277### bbr disable
278
279Disable Backbone Router Service for Thread 1.2 FTD. `SRV_DATA.ntf` would be triggered if Backbone Router is Primary state. o `OPENTHREAD_CONFIG_BACKBONE_ROUTER_ENABLE` is required.
280
281```bash
282> bbr disable
283Done
284```
285
286### bbr register
287
288Register Backbone Router Service for Thread 1.2 FTD. `SRV_DATA.ntf` would be triggered for attached device.
289
290`OPENTHREAD_CONFIG_BACKBONE_ROUTER_ENABLE` is required.
291
292```bash
293> bbr register
294Done
295```
296
297### bbr config
298
299Show local Backbone Router configuration for Thread 1.2 FTD.
300
301`OPENTHREAD_CONFIG_BACKBONE_ROUTER_ENABLE` is required.
302
303```bash
304> bbr config
305seqno:    10
306delay:    120 secs
307timeout:  300 secs
308Done
309```
310
311### bbr config \[seqno \<seqno\>\] \[delay \<delay\>\] \[timeout \<timeout\>\]
312
313Configure local Backbone Router configuration for Thread 1.2 FTD. `bbr register` should be issued explicitly to register Backbone Router service to Leader for Secondary Backbone Router. `SRV_DATA.ntf` would be initiated automatically if BBR Dataset changes for Primary Backbone Router.
314
315`OPENTHREAD_CONFIG_BACKBONE_ROUTER_ENABLE` is required.
316
317```bash
318> bbr config seqno 20 delay 30
319Done
320```
321
322### bbr jitter
323
324Show jitter (in seconds) for Backbone Router registration for Thread 1.2 FTD.
325
326`OPENTHREAD_CONFIG_BACKBONE_ROUTER_ENABLE` is required.
327
328```bash
329> bbr jitter
33020
331Done
332```
333
334### bbr jitter \<jitter\>
335
336Set jitter (in seconds) for Backbone Router registration for Thread 1.2 FTD.
337
338`OPENTHREAD_CONFIG_BACKBONE_ROUTER_ENABLE` is required.
339
340```bash
341> bbr jitter 10
342Done
343```
344
345### ba
346
347Show current Border Agent information.
348
349### ba port
350
351Print border agent service port.
352
353```bash
354> ba port
35549152
356Done
357```
358
359### ba state
360
361Print border agent state.
362
363Possible states are
364
365- `Stopped` : Border Agent is stopped.
366- `Started` : Border Agent is running with no active connection with external commissioner.
367- `Active` : Border Agent is running and is connected with an external commissioner.
368
369```bash
370> ba state
371Started
372Done
373```
374
375### ba ephemeralkey
376
377Indicates if an ephemeral key is active.
378
379Requires `OPENTHREAD_CONFIG_BORDER_AGENT_EPHEMERAL_KEY_ENABLE`.
380
381```bash
382> ba ephemeralkey
383inactive
384Done
385
386> ba ephemeralkey set Z10X20g3J15w1000P60m16 1000
387Done
388
389> ba ephemeralkey
390active
391Done
392```
393
394### ba ephemeralkey set \<keystring\> \[timeout\] \[port\]
395
396Sets the ephemeral key for a given timeout duration.
397
398Requires `OPENTHREAD_CONFIG_BORDER_AGENT_EPHEMERAL_KEY_ENABLE`.
399
400The ephemeral key can be set when Border Agent is already running and is not currently connected to any external commissioner (i.e., `ba state` gives `Started`).
401
402The `keystring` string is directly used as the ephemeral PSK (excluding the trailing null `\0` character). Its length MUST be between 6 and 32, inclusive.
403
404The `timeout` is in milliseconds. If not provided or set to zero, the default value of 2 minutes will be used. If the timeout value is larger than 10 minutes, the 10 minutes timeout value will be used instead.
405
406The `port` specifies the UDP port to use with the ephemeral key. If UDP port is zero or is not provided, an ephemeral port will be used. `ba port` will give the current UDP port in use by the Border Agent.
407
408Setting the ephemeral key again before a previously set one is timed out, will replace the previous one.
409
410While the timeout interval is in effect, the ephemeral key can be used only once by an external commissioner to connect. Once the commissioner disconnects, the ephemeral key is cleared, and Border Agent reverts to using PSKc.
411
412```bash
413> ba ephemeralkey set Z10X20g3J15w1000P60m16 5000 1234
414Done
415```
416
417### ba ephemeralkey clear
418
419Cancels the ephemeral key in use if any.
420
421Requires `OPENTHREAD_CONFIG_BORDER_AGENT_EPHEMERAL_KEY_ENABLE`.
422
423Can be used to cancel a previously set ephemeral key before it is used or times out. If the Border Agent is not running or there is no ephemeral key in use, calling this function has no effect.
424
425If a commissioner is connected using the ephemeral key and is currently active, calling this method does not change its state. In this case the `ba ephemeralkey` will continue to return `active` until the commissioner disconnects.
426
427```bash
428> ba ephemeralkey clear
429Done
430```
431
432### ba ephemeralkey callback enable
433
434Enables callback from Border Agent for ephemeral key state changes.
435
436```bash
437> ba ephemeralkey callback enable
438Done
439
440> ba ephemeralkey set W10X12 5000 49155
441Done
442
443BorderAgent callback: Ephemeral key active, port:49155
444BorderAgent callback: Ephemeral key inactive
445```
446
447### ba ephemeralkey callback disable
448
449Disables callback from Border Agent for ephemeral key state changes.
450
451```bash
452> ba ephemeralkey callback disable
453Done
454```
455
456### bufferinfo
457
458Show the current message buffer information.
459
460- The `total` shows total number of message buffers in pool.
461- The `free` shows the number of free message buffers.
462- The `max-used` shows the maximum number of used buffers at the same time since OT stack initialization or last `bufferinfo reset`.
463- This is then followed by info about different queues used by OpenThread stack, each line representing info about a queue.
464  - The first number shows number messages in the queue.
465  - The second number shows number of buffers used by all messages in the queue.
466  - The third number shows total number of bytes of all messages in the queue.
467
468```bash
469> bufferinfo
470total: 40
471free: 40
472max-used: 5
4736lo send: 0 0 0
4746lo reas: 0 0 0
475ip6: 0 0 0
476mpl: 0 0 0
477mle: 0 0 0
478coap: 0 0 0
479coap secure: 0 0 0
480application coap: 0 0 0
481Done
482```
483
484### bufferinfo reset
485
486Reset the message buffer counter tracking maximum number buffers in use at the same time.
487
488```bash
489> bufferinfo reset
490Done
491```
492
493### ccathreshold
494
495Get the CCA threshold in dBm measured at antenna connector per IEEE 802.15.4 - 2015 section 10.1.4.
496
497```bash
498> ccathreshold
499-75 dBm
500Done
501```
502
503### ccathreshold \<ccathreshold\>
504
505Set the CCA threshold measured at antenna connector per IEEE 802.15.4 - 2015 section 10.1.4.
506
507```bash
508> ccathreshold -62
509Done
510```
511
512### channel
513
514Get the IEEE 802.15.4 Channel value.
515
516```bash
517> channel
51811
519Done
520```
521
522### channel \<channel\>
523
524Set the IEEE 802.15.4 Channel value.
525
526```bash
527> channel 11
528Done
529```
530
531### channel manager
532
533Get channel manager state.
534
535`OPENTHREAD_CONFIG_CHANNEL_MANAGER_ENABLE` is required.
536
537```bash
538channel: 11
539auto: 1
540delay: 120
541interval: 10800
542supported: { 11-26}
543favored: { 11-26}
544Done
545```
546
547### channel manager change \<channel\>
548
549Initiate a channel change with the channel manager.
550
551`OPENTHREAD_CONFIG_CHANNEL_MANAGER_ENABLE` is required.
552
553```bash
554> channel manager change 11
555channel manager change 11
556Done
557```
558
559### channel manager select \<skip quality check (boolean)\>
560
561Request a channel selection with the channel manager.
562
563`OPENTHREAD_CONFIG_CHANNEL_MANAGER_ENABLE` and `OPENTHREAD_CONFIG_CHANNEL_MONITOR_ENABLE` are required.
564
565```bash
566> channel manager select 1
567channel manager select 1
568Done
569```
570
571### channel manager auto \<enable (boolean)\>
572
573Enable/disable the auto-channel-selection functionality.
574
575`OPENTHREAD_CONFIG_CHANNEL_MANAGER_ENABLE` and `OPENTHREAD_CONFIG_CHANNEL_MONITOR_ENABLE` are required.
576
577```bash
578> channel manager auto 1
579channel manager auto 1
580Done
581```
582
583### channel manager delay \<delay\>
584
585Set the channel change delay (in seconds).
586
587`OPENTHREAD_CONFIG_CHANNEL_MANAGER_ENABLE` and `OPENTHREAD_CONFIG_CHANNEL_MONITOR_ENABLE` are required.
588
589```bash
590> channel manager delay 120
591channel manager delay 120
592Done
593```
594
595### channel manager interval \<interval\>
596
597Set the auto-channel-selection interval (in seconds).
598
599`OPENTHREAD_CONFIG_CHANNEL_MANAGER_ENABLE` and `OPENTHREAD_CONFIG_CHANNEL_MONITOR_ENABLE` are required.
600
601```bash
602> channel manager interval 10800
603channel manager interval 10800
604Done
605```
606
607### channel manager supported \<mask\>
608
609Set the supported channel mask for the auto-channel-selection.
610
611`OPENTHREAD_CONFIG_CHANNEL_MANAGER_ENABLE` and `OPENTHREAD_CONFIG_CHANNEL_MONITOR_ENABLE` are required.
612
613```bash
614> channel manager supported 0x7fffc00
615channel manager supported 0x7fffc00
616Done
617```
618
619### channel manager favored \<mask\>
620
621Set the favored channel mask for the auto-channel-selection.
622
623`OPENTHREAD_CONFIG_CHANNEL_MANAGER_ENABLE` and `OPENTHREAD_CONFIG_CHANNEL_MONITOR_ENABLE` are required.
624
625```bash
626> channel manager favored 0x7fffc00
627channel manager favored 0x7fffc00
628Done
629```
630
631### channel monitor
632
633Get current channel monitor state and channel occupancy.
634
635`OPENTHREAD_CONFIG_CHANNEL_MONITOR_ENABLE` is required.
636
637```bash
638> channel monitor
639channel monitor
640enabled: 1
641interval: 41000
642threshold: -75
643window: 960
644count: 10552
645occupancies:
646ch 11 (0x0cb7)  4.96% busy
647ch 12 (0x2e2b) 18.03% busy
648ch 13 (0x2f54) 18.48% busy
649ch 14 (0x0fef)  6.22% busy
650ch 15 (0x1536)  8.28% busy
651ch 16 (0x1746)  9.09% busy
652ch 17 (0x0b8b)  4.50% busy
653ch 18 (0x60a7) 37.75% busy
654ch 19 (0x0810)  3.14% busy
655ch 20 (0x0c2a)  4.75% busy
656ch 21 (0x08dc)  3.46% busy
657ch 22 (0x101d)  6.29% busy
658ch 23 (0x0092)  0.22% busy
659ch 24 (0x0028)  0.06% busy
660ch 25 (0x0063)  0.15% busy
661ch 26 (0x058c)  2.16% busy
662
663Done
664```
665
666### channel monitor start
667
668Start the channel monitor.
669
670`OPENTHREAD_CONFIG_CHANNEL_MONITOR_ENABLE` is required.
671
672```bash
673> channel monitor start
674channel monitor start
675Done
676```
677
678### channel monitor stop
679
680Stop the channel monitor.
681
682`OPENTHREAD_CONFIG_CHANNEL_MONITOR_ENABLE` is required.
683
684```bash
685> channel monitor stop
686channel monitor stop
687Done
688```
689
690### channel preferred
691
692Get preferred channel mask.
693
694```bash
695> channel preferred
6960x7fff800
697Done
698```
699
700### channel supported
701
702Get supported channel mask.
703
704```bash
705> channel supported
7060x7fff800
707Done
708```
709
710### child list
711
712List attached Child IDs.
713
714```bash
715> child list
7161 2 3 6 7 8
717Done
718```
719
720### child table
721
722Print table of attached children.
723
724```bash
725> child table
726| ID  | RLOC16 | Timeout    | Age        | LQ In | C_VN |R|D|N|Ver|CSL|QMsgCnt|Suprvsn| Extended MAC     |
727+-----+--------+------------+------------+-------+------+-+-+-+---+---+-------+-------+------------------+
728|   1 | 0xc801 |        240 |         24 |     3 |  131 |1|0|0|  3| 0 |     0 |   129 | 4ecede68435358ac |
729|   2 | 0xc802 |        240 |          2 |     3 |  131 |0|0|0|  3| 1 |     0 |     0 | a672a601d2ce37d8 |
730Done
731```
732
733### child \<id\>
734
735Print diagnostic information for an attached Thread Child. The `id` may be a Child ID or an RLOC16.
736
737```bash
738> child 1
739Child ID: 1
740Rloc: 9c01
741Ext Addr: e2b3540590b0fd87
742Mode: rn
743CSL Synchronized: 1
744Net Data: 184
745Timeout: 100
746Age: 0
747Link Quality In: 3
748RSSI: -20
749Supervision Interval: 129
750Done
751```
752
753### childip
754
755Get the list of IP addresses stored for MTD children.
756
757```bash
758> childip
7593401: fdde:ad00:beef:0:3037:3e03:8c5f:bc0c
760Done
761```
762
763### childip max
764
765Get the maximum number of IP addresses that each MTD child may register with this device as parent.
766
767```bash
768> childip max
7694
770Done
771```
772
773### childip max \<count\>
774
775Set the maximum number of IP addresses that each MTD child may register with this device as parent. 0 to clear the setting and restore the default.
776
777`OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE` is required.
778
779```bash
780> childip max 2
781Done
782```
783
784### childmax
785
786Get the Thread maximum number of allowed children.
787
788```bash
789> childmax
7905
791Done
792```
793
794### childmax \<count\>
795
796Set the Thread maximum number of allowed children.
797
798```bash
799> childmax 2
800Done
801```
802
803### childsupervision interval
804
805Get the Child Supervision interval value on the child.
806
807Child Supervision feature provides a mechanism for parent to ensure that a message is sent to each sleepy child within the supervision interval. If there is no transmission to the child within the supervision interval, OpenThread enqueues and sends a Child Supervision Message to the child.
808
809```bash
810> childsupervision interval
81130
812Done
813```
814
815### childsupervision interval \<interval\>
816
817Set the Child Supervision interval value on the child.
818
819```bash
820> childsupervision interval 30
821Done
822```
823
824### childsupervision checktimeout
825
826Get the Child Supervision Check Timeout value on the child.
827
828If the device is a sleepy child and it does not hear from its parent within the specified check timeout, it initiates the re-attach process (MLE Child Update Request/Response exchange with its parent).
829
830```bash
831> childsupervision checktimeout
83230
833Done
834```
835
836### childsupervision checktimeout \<timeout\>
837
838Set the Child Supervision Check Timeout value on the child.
839
840```bash
841> childsupervision checktimeout 30
842Done
843```
844
845### childsupervision failcounter
846
847Get the current value of supervision check timeout failure counter.
848
849The counter tracks the number of supervision check failures on the child. It is incremented when the child does not hear from its parent within the specified check timeout interval.
850
851```bash
852> childsupervision failcounter
8530
854Done
855```
856
857### childsupervision failcounter reset
858
859Reset the supervision check timeout failure counter to zero.
860
861```bash
862> childsupervision failcounter reset
863Done
864```
865
866### childtimeout
867
868Get the Thread Child Timeout value.
869
870```bash
871> childtimeout
872300
873Done
874```
875
876### childtimeout \<timeout\>
877
878Set the Thread Child Timeout value.
879
880```bash
881> childtimeout 300
882Done
883```
884
885### coex
886
887Get the coex status.
888
889`OPENTHREAD_CONFIG_PLATFORM_RADIO_COEX_ENABLE` is required.
890
891```bash
892> coex
893Enabled
894Done
895```
896
897### coex disable
898
899Disable coex.
900
901`OPENTHREAD_CONFIG_PLATFORM_RADIO_COEX_ENABLE` is required.
902
903```bash
904> coex disable
905Done
906```
907
908### coex enable
909
910Enable coex.
911
912`OPENTHREAD_CONFIG_PLATFORM_RADIO_COEX_ENABLE` is required.
913
914```bash
915> coex enable
916Done
917```
918
919### coex metrics
920
921Show coex metrics.
922
923`OPENTHREAD_CONFIG_PLATFORM_RADIO_COEX_ENABLE` is required.
924
925```bash
926> coex metrics
927Stopped: false
928Grant Glitch: 0
929Transmit metrics
930    Request: 0
931    Grant Immediate: 0
932    Grant Wait: 0
933    Grant Wait Activated: 0
934    Grant Wait Timeout: 0
935    Grant Deactivated During Request: 0
936    Delayed Grant: 0
937    Average Request To Grant Time: 0
938Receive metrics
939    Request: 0
940    Grant Immediate: 0
941    Grant Wait: 0
942    Grant Wait Activated: 0
943    Grant Wait Timeout: 0
944    Grant Deactivated During Request: 0
945    Delayed Grant: 0
946    Average Request To Grant Time: 0
947    Grant None: 0
948Done
949```
950
951### contextreusedelay
952
953Get the CONTEXT_ID_REUSE_DELAY value.
954
955```bash
956> contextreusedelay
95711
958Done
959```
960
961### contextreusedelay \<delay\>
962
963Set the CONTEXT_ID_REUSE_DELAY value.
964
965```bash
966> contextreusedelay 11
967Done
968```
969
970### counters
971
972Get the supported counter names.
973
974```bash
975> counters
976br
977ip
978mac
979mle
980Done
981```
982
983### counters \<countername\>
984
985Get the counter value.
986
987Note:
988
989- `OPENTHREAD_CONFIG_UPTIME_ENABLE` is required for MLE role time tracking in `counters mle`
990- `OPENTHREAD_CONFIG_IP6_BR_COUNTERS_ENABLE` is required for `counters br`
991
992```bash
993> counters mac
994TxTotal: 10
995    TxUnicast: 3
996    TxBroadcast: 7
997    TxAckRequested: 3
998    TxAcked: 3
999    TxNoAckRequested: 7
1000    TxData: 10
1001    TxDataPoll: 0
1002    TxBeacon: 0
1003    TxBeaconRequest: 0
1004    TxOther: 0
1005    TxRetry: 0
1006    TxErrCca: 0
1007    TxErrBusyChannel: 0
1008RxTotal: 2
1009    RxUnicast: 1
1010    RxBroadcast: 1
1011    RxData: 2
1012    RxDataPoll: 0
1013    RxBeacon: 0
1014    RxBeaconRequest: 0
1015    RxOther: 0
1016    RxAddressFiltered: 0
1017    RxDestAddrFiltered: 0
1018    RxDuplicated: 0
1019    RxErrNoFrame: 0
1020    RxErrNoUnknownNeighbor: 0
1021    RxErrInvalidSrcAddr: 0
1022    RxErrSec: 0
1023    RxErrFcs: 0
1024    RxErrOther: 0
1025Done
1026> counters mle
1027Role Disabled: 0
1028Role Detached: 1
1029Role Child: 0
1030Role Router: 0
1031Role Leader: 1
1032Attach Attempts: 1
1033Partition Id Changes: 1
1034Better Partition Attach Attempts: 0
1035Parent Changes: 0
1036Time Disabled Milli: 10026
1037Time Detached Milli: 6852
1038Time Child Milli: 0
1039Time Router Milli: 0
1040Time Leader Milli: 16195
1041Time Tracked Milli: 33073
1042Done
1043> counters ip
1044TxSuccess: 10
1045TxFailed: 0
1046RxSuccess: 5
1047RxFailed: 0
1048Done
1049> counters br
1050Inbound Unicast: Packets 4 Bytes 320
1051Inbound Multicast: Packets 0 Bytes 0
1052Outbound Unicast: Packets 2 Bytes 160
1053Outbound Multicast: Packets 0 Bytes 0
1054RA Rx: 4
1055RA TxSuccess: 2
1056RA TxFailed: 0
1057RS Rx: 0
1058RS TxSuccess: 2
1059RS TxFailed: 0
1060Done
1061```
1062
1063### counters \<countername\> reset
1064
1065Reset the counter value.
1066
1067```bash
1068> counters mac reset
1069Done
1070> counters mle reset
1071Done
1072> counters ip reset
1073Done
1074```
1075
1076### csl
1077
1078Get the CSL configuration.
1079
1080CSL period is shown in microseconds.
1081
1082```bash
1083> csl
1084Channel: 11
1085Period: 160000us
1086Timeout: 1000s
1087Done
1088```
1089
1090### csl channel \<channel\>
1091
1092Set CSL channel.
1093
1094```bash
1095> csl channel 20
1096Done
1097```
1098
1099### csl period \<period\>
1100
1101Set CSL period in microseconds. Disable CSL by setting this parameter to `0`.
1102
1103The CSL period MUST be a multiple 160 microseconds which is 802.15.4 "ten symbols time".
1104
1105```bash
1106> csl period 30000000
1107Done
1108```
1109
1110### csl timeout \<timeout\>
1111
1112Set the CSL timeout in seconds.
1113
1114```bash
1115> csl timeout 10
1116Done
1117```
1118
1119### debug
1120
1121Executes a series of CLI commands to gather information about the device and thread network. This is intended for debugging.
1122
1123The output will display each executed CLI command preceded by "\$", followed by the corresponding command's generated output.
1124
1125The generated output encompasses the following information:
1126
1127- Version
1128- Current state
1129- RLOC16, extended MAC address
1130- Unicast and multicast IPv6 address list
1131- Channel
1132- PAN ID and extended PAN ID
1133- Network Data
1134- Partition ID
1135- Leader Data
1136
1137If the device is operating as FTD:
1138
1139- Child and neighbor table
1140- Router table and next hop Info
1141- Address cache table
1142- Registered MTD child IPv6 address
1143- Device properties
1144
1145If the device supports and acts as an SRP client:
1146
1147- SRP client state
1148- SRP client services and host info
1149
1150If the device supports and acts as an SRP sever:
1151
1152- SRP server state and address mode
1153- SRP server registered hosts and services
1154
1155If the device supports TREL:
1156
1157- TREL status and peer table
1158
1159If the device supports and acts as a border router:
1160
1161- BR state
1162- BR prefixes (OMR, on-link, NAT64)
1163- Discovered prefix table
1164
1165### delaytimermin
1166
1167Get the minimal delay timer (in seconds).
1168
1169```bash
1170> delaytimermin
117130
1172Done
1173```
1174
1175### delaytimermin \<delaytimermin\>
1176
1177Set the minimal delay timer (in seconds).
1178
1179```bash
1180> delaytimermin 60
1181Done
1182```
1183
1184### detach
1185
1186Start the graceful detach process by first notifying other nodes (sending Address Release if acting as a router, or setting Child Timeout value to zero on parent if acting as a child) and then stopping Thread protocol operation.
1187
1188```bash
1189> detach
1190Finished detaching
1191Done
1192```
1193
1194### detach async
1195
1196Start the graceful detach process similar to the `detach` command without blocking and waiting for the callback indicating that detach is finished.
1197
1198```bash
1199> detach async
1200Done
1201```
1202
1203### deviceprops
1204
1205Get the current device properties.
1206
1207```bash
1208> deviceprops
1209PowerSupply      : external
1210IsBorderRouter   : yes
1211SupportsCcm      : no
1212IsUnstable       : no
1213WeightAdjustment : 0
1214Done
1215```
1216
1217### deviceprops \<power-supply\> \<is-br\> \<supports-ccm\> \<is-unstable\> \<weight-adjustment\>
1218
1219Set the device properties which are then used to determine and set the Leader Weight.
1220
1221- power-supply: `battery`, `external`, `external-stable`, or `external-unstable`.
1222- weight-adjustment: Valid range is from -16 to +16. Clamped if not within the range.
1223
1224```bash
1225> deviceprops battery 0 0 0 -5
1226Done
1227
1228> deviceprops
1229PowerSupply      : battery
1230IsBorderRouter   : no
1231SupportsCcm      : no
1232IsUnstable       : no
1233WeightAdjustment : -5
1234Done
1235
1236> leaderweight
123751
1238Done
1239```
1240
1241### discover \[channel\]
1242
1243Perform an MLE Discovery operation.
1244
1245- channel: The channel to discover on. If no channel is provided, the discovery will cover all valid channels.
1246
1247```bash
1248> discover
1249| J | Network Name     | Extended PAN     | PAN  | MAC Address      | Ch | dBm | LQI |
1250+---+------------------+------------------+------+------------------+----+-----+-----+
1251| 0 | OpenThread       | dead00beef00cafe | ffff | f1d92a82c8d8fe43 | 11 | -20 |   0 |
1252Done
1253```
1254
1255### dns config
1256
1257Get the default query config used by DNS client.
1258
1259The config includes
1260
1261- Server IPv6 address and port
1262- Response timeout in msec (wait time to rx response)
1263- Maximum tx attempts before reporting failure
1264- Boolean flag to indicate whether the server can resolve the query recursively or not.
1265- Service resolution mode which specifies which records to query. Possible options are:
1266  - `srv` : Query for SRV record only.
1267  - `txt` : Query for TXT record only.
1268  - `srv_txt` : Query for both SRV and TXT records in the same message.
1269  - `srv_txt_sep`: Query in parallel for SRV and TXT using separate messages.
1270  - `srv_txt_opt`: Query for TXT/SRV together first, if it fails then query separately.
1271- Whether to allow/disallow NAT64 address translation during address resolution (requires `OPENTHREAD_CONFIG_DNS_CLIENT_NAT64_ENABLE`)
1272- Transport protocol UDP or TCP (requires `OPENTHREAD_CONFIG_DNS_CLIENT_OVER_TCP_ENABLE`)
1273
1274```bash
1275> dns config
1276Server: [fd00:0:0:0:0:0:0:1]:1234
1277ResponseTimeout: 5000 ms
1278MaxTxAttempts: 2
1279RecursionDesired: no
1280ServiceMode: srv_txt_opt
1281Nat64Mode: allow
1282TransportProtocol: udp
1283Done
1284>
1285```
1286
1287### dns config \[DNS server IP\] \[DNS server port\] \[response timeout (ms)\] \[max tx attempts\] \[recursion desired (boolean)\] \[service mode]
1288
1289Set the default query config.
1290
1291Service mode specifies which records to query. Possible options are:
1292
1293- `def` : Use default option.
1294- `srv` : Query for SRV record only.
1295- `txt` : Query for TXT record only.
1296- `srv_txt` : Query for both SRV and TXT records in the same message.
1297- `srv_txt_sep`: Query in parallel for SRV and TXT using separate messages.
1298- `srv_txt_opt`: Query for TXT/SRV together first, if it fails then query separately.
1299
1300To set protocol effectively to tcp `OPENTHREAD_CONFIG_DNS_CLIENT_OVER_TCP_ENABLE` is required.
1301
1302```bash
1303> dns config fd00::1 1234 5000 2 0 srv_txt_sep tcp
1304Done
1305
1306> dns config
1307Server: [fd00:0:0:0:0:0:0:1]:1234
1308ResponseTimeout: 5000 ms
1309MaxTxAttempts: 2
1310RecursionDesired: no
1311ServiceMode: srv_txt_sep
1312Nat64Mode: allow
1313TransportProtocol: tcp
1314Done
1315```
1316
1317We can leave some of the fields as unspecified (or use value zero). The unspecified fields are replaced by the corresponding OT config option definitions `OPENTHREAD_CONFIG_DNS_CLIENT_DEFAULT_{}` to form the default query config.
1318
1319```bash
1320> dns config fd00::2
1321Done
1322
1323> dns config
1324Server: [fd00:0:0:0:0:0:0:2]:53
1325ResponseTimeout: 3000 ms
1326MaxTxAttempts: 3
1327RecursionDesired: yes
1328Done
1329```
1330
1331### dns resolve \<hostname\> \[DNS server IP\] \[DNS server port\] \[response timeout (ms)\] \[max tx attempts\] \[recursion desired (boolean)\] \[transport protocol\]
1332
1333Send DNS Query to obtain IPv6 address for given hostname.
1334
1335The parameters after `hostname` are optional. Any unspecified (or zero) value for these optional parameters is replaced by the value from the current default config (`dns config`).
1336
1337To use tcp, `OPENTHREAD_CONFIG_DNS_CLIENT_OVER_TCP_ENABLE` is required.
1338
1339```bash
1340> dns resolve ipv6.google.com
1341> DNS response for ipv6.google.com - 2a00:1450:401b:801:0:0:0:200e TTL: 300
1342```
1343
1344The DNS server IP can be an IPv4 address, which will be synthesized to an IPv6 address using the preferred NAT64 prefix from the network data.
1345
1346> Note: The command will return `InvalidState` when the DNS server IP is an IPv4 address but the preferred NAT64 prefix is unavailable.
1347
1348```bash
1349> dns resolve example.com 8.8.8.8
1350Synthesized IPv6 DNS server address: fdde:ad00:beef:2:0:0:808:808
1351DNS response for example.com. - fd4c:9574:3720:2:0:0:5db8:d822 TTL:20456
1352Done
1353```
1354
1355### dns resolve4 \<hostname\> \[DNS server IP\] \[DNS server port\] \[response timeout (ms)\] \[max tx attempts\] \[recursion desired (boolean)\]
1356
1357Send DNS query to obtain IPv4 address for a given hostname and provide the NAT64 synthesized IPv6 addresses for the IPv4 addresses from the query response.
1358
1359Requires `OPENTHREAD_CONFIG_DNS_CLIENT_NAT64_ENABLE`.
1360
1361The parameters after `hostname` are optional. Any unspecified (or zero) value for these optional parameters is replaced by the value from the current default config (`dns config`).
1362
1363This command requires a NAT64 prefix to be configured and present in Thread Network Data.
1364
1365For example, if a NAT64 prefix of `2001:db8:122:344::/96` is used within the Thread mesh, the outputted IPv6 address corresponds to an IPv4 address of `142.250.191.78` for the `ipv4.google.com` host:
1366
1367```bash
1368> dns resolve4 ipv4.google.com
1369> DNS response for ipv4.google.com - 2001:db8:122:344:0:0:8efa:bf4e TTL: 20456
1370```
1371
1372### dns browse \<service-name\> \[DNS server IP\] \[DNS server port\] \[response timeout (ms)\] \[max tx attempts\] \[recursion desired (boolean)\]
1373
1374Send a browse (service instance enumeration) DNS query to get the list of services for given service-name.
1375
1376The parameters after `service-name` are optional. Any unspecified (or zero) value for these optional parameters is replaced by the value from the current default config (`dns config`).
1377
1378```bash
1379> dns browse _service._udp.example.com
1380DNS browse response for _service._udp.example.com.
1381inst1
1382inst2
1383inst3
1384Done
1385```
1386
1387The detailed service info (port number, weight, host name, TXT data, host addresses) is outputted only when provided by server/resolver in the browse response (in additional Data Section). This is a SHOULD and not a MUST requirement, and servers/resolvers are not required to provide this.
1388
1389The recommended behavior, which is supported by the OpenThread DNS-SD resolver, is to only provide the additional data when there is a single instance in the response. However, users should assume that the browse response may only contain the list of matching service instances and not any detail service info. To resolve a service instance, users can use the `dns service` or `dns servicehost` commands.
1390
1391```bash
1392> dns browse _service._udp.example.com
1393DNS browse response for _service._udp.example.com.
1394inst1
1395    Port:1234, Priority:1, Weight:2, TTL:7200
1396    Host:host.example.com.
1397    HostAddress:fd00:0:0:0:0:0:0:abcd TTL:7200
1398    TXT:[a=6531, b=6c12] TTL:7300
1399Done
1400```
1401
1402```bash
1403> dns browse _airplay._tcp.default.service.arpa
1404DNS browse response for _airplay._tcp.default.service.arpa.
1405Gabe's Mac mini
1406    Port:7000, Priority:0, Weight:0, TTL:10
1407    Host:Gabes-Mac-mini.default.service.arpa.
1408    HostAddress:fd97:739d:386a:1:1c2e:d83c:fcbe:9cf4 TTL:10
1409Done
1410```
1411
1412> Note: The DNS server IP can be an IPv4 address, which will be synthesized to an IPv6 address using the preferred NAT64 prefix from the network data. The command will return `InvalidState` when the DNS server IP is an IPv4 address but the preferred NAT64 prefix is unavailable. When testing DNS-SD discovery proxy, the zone is not `local` and instead should be `default.service.arpa`.
1413
1414### dns service \<service-instance-label\> \<service-name\> \[DNS server IP\] \[DNS server port\] \[response timeout (ms)\] \[max tx attempts\] \[recursion desired (boolean)\]
1415
1416Send a service instance resolution DNS query for a given service instance. Service instance label is provided first, followed by the service name (note that service instance label can contain dot '.' character).
1417
1418The parameters after `service-name` are optional. Any unspecified (or zero) value for these optional parameters is replaced by the value from the current default config (`dns config`).
1419
1420> Note: The DNS server IP can be an IPv4 address, which will be synthesized to an IPv6 address using the preferred NAT64 prefix from the network data. The command will return `InvalidState` when the DNS server IP is an IPv4 address but the preferred NAT64 prefix is unavailable.
1421
1422### dns servicehost \<service-instance-label\> \<service-name\> \[DNS server IP\] \[DNS server port\] \[response timeout (ms)\] \[max tx attempts\] \[recursion desired (boolean)\]
1423
1424Send a service instance resolution DNS query for a given service instance with a potential follow-up address resolution for the host name discovered for the service instance (if the server/resolver does not provide AAAA/A records for the host name in the response to SRV query).
1425
1426Service instance label is provided first, followed by the service name (note that service instance label can contain dot '.' character).
1427
1428The parameters after `service-name` are optional. Any unspecified (or zero) value for these optional parameters is replaced by the value from the current default config (`dns config`).
1429
1430### dns compression \[enable|disable\]
1431
1432Enable/Disable the "DNS name compression" mode.
1433
1434By default DNS name compression is enabled. When disabled, DNS names are appended as full and never compressed. This is applicable to OpenThread's DNS and SRP client/server modules.
1435
1436This is intended for testing only and available under `REFERENCE_DEVICE` config.
1437
1438Get the current "DNS name compression" mode.
1439
1440```
1441> dns compression
1442Enabled
1443```
1444
1445Set the "DNS name compression" mode.
1446
1447```
1448> dns compression disable
1449Done
1450>
1451>
1452> dns compression
1453Disabled
1454Done
1455```
1456
1457### domainname
1458
1459Get the Thread Domain Name for Thread 1.2 device.
1460
1461```bash
1462> domainname
1463Thread
1464Done
1465```
1466
1467### domainname \<name\>
1468
1469Set the Thread Domain Name for Thread 1.2 device.
1470
1471```bash
1472> domainname Test\ Thread
1473Done
1474```
1475
1476### dua iid
1477
1478Get the Interface Identifier manually specified for Thread Domain Unicast Address on Thread 1.2 device.
1479
1480```bash
1481> dua iid
14820004000300020001
1483Done
1484```
1485
1486### dua iid \<iid\>
1487
1488Set the Interface Identifier manually specified for Thread Domain Unicast Address on Thread 1.2 device.
1489
1490```bash
1491> dua iid 0004000300020001
1492Done
1493```
1494
1495### dua iid clear
1496
1497Clear the Interface Identifier manually specified for Thread Domain Unicast Address on Thread 1.2 device.
1498
1499```bash
1500> dua iid clear
1501Done
1502```
1503
1504### eidcache
1505
1506Print the EID-to-RLOC cache entries.
1507
1508```bash
1509> eidcache
1510fd49:caf4:a29f:dc0e:97fc:69dd:3c16:df7d 2000 cache canEvict=1 transTime=0 eid=fd49:caf4:a29f:dc0e:97fc:69dd:3c16:df7d
1511fd49:caf4:a29f:dc0e:97fc:69dd:3c16:df7f fffe retry canEvict=1 timeout=10 retryDelay=30
1512Done
1513```
1514
1515### eui64
1516
1517Get the factory-assigned IEEE EUI-64.
1518
1519```bash
1520> eui64
15210615aae900124b00
1522Done
1523```
1524
1525### extaddr
1526
1527Get the IEEE 802.15.4 Extended Address.
1528
1529```bash
1530> extaddr
1531dead00beef00cafe
1532Done
1533```
1534
1535### extaddr \<extaddr\>
1536
1537Set the IEEE 802.15.4 Extended Address.
1538
1539```bash
1540> extaddr dead00beef00cafe
1541dead00beef00cafe
1542Done
1543```
1544
1545### extpanid
1546
1547Get the Thread Extended PAN ID value.
1548
1549**NOTE** The current commissioning credential becomes stale after changing this value. Use [pskc](#pskc--p-keypassphrase) to reset.
1550
1551```bash
1552> extpanid
1553dead00beef00cafe
1554Done
1555```
1556
1557### extpanid \<extpanid\>
1558
1559Set the Thread Extended PAN ID value.
1560
1561```bash
1562> extpanid dead00beef00cafe
1563Done
1564```
1565
1566### factoryreset
1567
1568Delete all stored settings, and signal a platform reset.
1569
1570```bash
1571> factoryreset
1572```
1573
1574### fake
1575
1576Send fake Thread messages.
1577
1578Note: Only for certification test.
1579
1580#### fake /a/an \<dst-ipaddr\> \<target\> \<meshLocalIid\>
1581
1582```bash
1583> fake /a/an fdde:ad00:beef:0:0:ff:fe00:a800 fd00:7d03:7d03:7d03:55f2:bb6a:7a43:a03b 1111222233334444
1584Done
1585```
1586
1587### fem
1588
1589Get external FEM parameters.
1590
1591```bash
1592> fem
1593LNA gain 11 dBm
1594Done
1595```
1596
1597### fem lnagain
1598
1599Get the Rx LNA gain in dBm of the external FEM.
1600
1601```bash
1602> fem lnagain
160311
1604Done
1605```
1606
1607### fem lnagain \<LNA gain\>
1608
1609Set the Rx LNA gain in dBm of the external FEM.
1610
1611```bash
1612> fem lnagain 8
1613Done
1614```
1615
1616### ifconfig
1617
1618Show the status of the IPv6 interface.
1619
1620```bash
1621> ifconfig
1622down
1623Done
1624```
1625
1626### ifconfig up
1627
1628Bring up the IPv6 interface.
1629
1630```bash
1631> ifconfig up
1632Done
1633```
1634
1635### ifconfig down
1636
1637Bring down the IPv6 interface.
1638
1639```bash
1640> ifconfig down
1641Done
1642```
1643
1644### instanceid
1645
1646Show OpenThread instance identifier.
1647
1648```bash
1649> instanceid
1650468697314
1651Done
1652```
1653
1654### ipaddr
1655
1656List all IPv6 addresses assigned to the Thread interface.
1657
1658```bash
1659> ipaddr
1660fdde:ad00:beef:0:0:ff:fe00:0
1661fdde:ad00:beef:0:558:f56b:d688:799
1662fe80:0:0:0:f3d9:2a82:c8d8:fe43
1663Done
1664```
1665
1666Use `-v` to get more verbose information about the address:
1667
1668- `origin`: can be `thread`, `slaac`, `dhcp6`, or `manual`, and indicates the origin of the address
1669- `plen`: prefix length (in bits)
1670- `preferred`: preferred flag (boolean)
1671- `valid`: valid flag (boolean)
1672
1673```bash
1674> ipaddr -v
1675fd5e:18fa:f4a5:b8:0:ff:fe00:fc00 origin:thread plen:64 preferred:0 valid:1
1676fd5e:18fa:f4a5:b8:0:ff:fe00:dc00 origin:thread plen:64 preferred:0 valid:1
1677fd5e:18fa:f4a5:b8:f8e:5d95:87a0:e82c origin:thread plen:64 preferred:0 valid:1
1678fe80:0:0:0:4891:b191:e277:8826 origin:thread plen:64 preferred:1 valid:1
1679Done
1680```
1681
1682### ipaddr add \<ipaddr\>
1683
1684Add an IPv6 address to the Thread interface.
1685
1686```bash
1687> ipaddr add 2001::dead:beef:cafe
1688Done
1689```
1690
1691### ipaddr del \<ipaddr\>
1692
1693Delete an IPv6 address from the Thread interface.
1694
1695```bash
1696> ipaddr del 2001::dead:beef:cafe
1697Done
1698```
1699
1700### ipaddr linklocal
1701
1702Print Thread link-local IPv6 address.
1703
1704```bash
1705> ipaddr linklocal
1706fe80:0:0:0:f3d9:2a82:c8d8:fe43
1707Done
1708```
1709
1710### ipaddr mleid
1711
1712Print Thread Mesh Local EID address.
1713
1714```bash
1715> ipaddr mleid
1716fdde:ad00:beef:0:558:f56b:d688:799
1717Done
1718```
1719
1720### ipaddr rloc
1721
1722Print Thread Routing Locator (RLOC) address.
1723
1724```bash
1725> ipaddr rloc
1726fdde:ad00:beef:0:0:ff:fe00:0
1727Done
1728```
1729
1730### ipmaddr
1731
1732List all IPv6 multicast addresses subscribed to the Thread interface.
1733
1734```bash
1735> ipmaddr
1736ff05:0:0:0:0:0:0:1
1737ff33:40:fdde:ad00:beef:0:0:1
1738ff32:40:fdde:ad00:beef:0:0:1
1739Done
1740```
1741
1742### ipmaddr add \<ipaddr\>
1743
1744Subscribe the Thread interface to the IPv6 multicast address.
1745
1746```bash
1747> ipmaddr add ff05::1
1748Done
1749```
1750
1751### ipmaddr del \<ipaddr\>
1752
1753Unsubscribe the Thread interface to the IPv6 multicast address.
1754
1755```bash
1756> ipmaddr del ff05::1
1757Done
1758```
1759
1760### ipmaddr llatn
1761
1762Get the Link-Local All Thread Nodes multicast address.
1763
1764```
1765> ipmaddr llatn
1766ff32:40:fdde:ad00:beef:0:0:1
1767Done
1768```
1769
1770### ipmaddr promiscuous
1771
1772Get multicast promiscuous mode.
1773
1774```bash
1775> ipmaddr promiscuous
1776Disabled
1777Done
1778```
1779
1780### ipmaddr promiscuous enable
1781
1782Enable multicast promiscuous mode.
1783
1784```bash
1785> ipmaddr promiscuous enable
1786Done
1787```
1788
1789### ipmaddr promiscuous disable
1790
1791Disable multicast promiscuous mode.
1792
1793```bash
1794> ipmaddr promiscuous disable
1795Done
1796```
1797
1798### ipmaddr rlatn
1799
1800Get the Realm-Local All Thread Nodes multicast address.
1801
1802```
1803> ipmaddr rlatn
1804ff33:40:fdde:ad00:beef:0:0:1
1805Done
1806```
1807
1808### joinerport \<port\>
1809
1810Set the Joiner port.
1811
1812```bash
1813> joinerport 1000
1814Done
1815```
1816
1817### keysequence counter
1818
1819Get the Thread Key Sequence Counter.
1820
1821```bash
1822> keysequence counter
182310
1824Done
1825```
1826
1827### keysequence counter \<counter\>
1828
1829Set the Thread Key Sequence Counter.
1830
1831This command is reserved for testing and demo purposes only. Changing Key Sequence Counter will render a production application non-compliant with the Thread Specification.
1832
1833```bash
1834> keysequence counter 10
1835Done
1836```
1837
1838### keysequence guardtime
1839
1840Get Thread Key Switch Guard Time (in hours)
1841
1842```bash
1843> keysequence guardtime
18440
1845Done
1846```
1847
1848### keysequence guardtime \<guardtime\>
1849
1850Set Thread Key Switch Guard Time (in hours).
1851
1852This command is reserved for testing and demo purposes only. Changing Key Switch Guard Time will render a production application non-compliant with the Thread Specification.
1853
1854```bash
1855> keysequence guardtime 0
1856Done
1857```
1858
1859### leaderdata
1860
1861Show the Thread Leader Data.
1862
1863```bash
1864> leaderdata
1865Partition ID: 1077744240
1866Weighting: 64
1867Data Version: 109
1868Stable Data Version: 211
1869Leader Router ID: 60
1870Done
1871```
1872
1873### leaderweight
1874
1875Get the Thread Leader Weight.
1876
1877```bash
1878> leaderweight
1879128
1880Done
1881```
1882
1883### leaderweight \<weight\>
1884
1885Set the Thread Leader Weight.
1886
1887```bash
1888> leaderweight 128
1889Done
1890```
1891
1892### linkmetrics mgmt \<ipaddr\> enhanced-ack clear
1893
1894Send a Link Metrics Management Request to clear an Enhanced-ACK Based Probing.
1895
1896- ipaddr: Peer address (SHOULD be link local address of the neighboring device).
1897
1898```bash
1899> linkmetrics mgmt fe80:0:0:0:3092:f334:1455:1ad2 enhanced-ack clear
1900Done
1901> Received Link Metrics Management Response from: fe80:0:0:0:3092:f334:1455:1ad2
1902Status: Success
1903```
1904
1905### linkmetrics mgmt \<ipaddr\> enhanced-ack register [qmr][r]
1906
1907Send a Link Metrics Management Request to register an Enhanced-ACK Based Probing.
1908
1909- ipaddr: Peer address.
1910- qmr: This specifies what metrics to query. At most two options are allowed to select (per spec 4.11.3.4.4.6).
1911  - q: Layer 2 LQI.
1912  - m: Link Margin.
1913  - r: RSSI.
1914- r: This is optional and only used for reference devices. When this option is specified, Type/Average Enum of each Type Id Flags would be set to `reserved`. This is used to verify the Probing Subject correctly handles invalid Type Id Flags. This is only available when `OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE` is enabled.
1915
1916```bash
1917> linkmetrics mgmt fe80:0:0:0:3092:f334:1455:1ad2 enhanced-ack register qm
1918Done
1919> Received Link Metrics Management Response from: fe80:0:0:0:3092:f334:1455:1ad2
1920Status: Success
1921
1922> linkmetrics mgmt fe80:0:0:0:3092:f334:1455:1ad2 enhanced-ack register qm r
1923Done
1924> Received Link Metrics Management Response from: fe80:0:0:0:3092:f334:1455:1ad2
1925Status: Cannot support new series
1926```
1927
1928### linkmetrics mgmt \<ipaddr\> forward \<seriesid\> [ldraX][pqmr]
1929
1930Send a Link Metrics Management Request to configure a Forward Tracking Series.
1931
1932- ipaddr: Peer address.
1933- seriesid: The Series ID.
1934- ldraX: This specifies which frames are to be accounted.
1935  - l: MLE Link Probe.
1936  - d: MAC Data.
1937  - r: MAC Data Request.
1938  - a: MAC Ack.
1939  - X: This represents none of the above flags, i.e., to stop accounting and remove the series. This can only be used without any other flags.
1940- pqmr: This specifies what metrics to query.
1941  - p: Layer 2 Number of PDUs received.
1942  - q: Layer 2 LQI.
1943  - m: Link Margin.
1944  - r: RSSI.
1945
1946```bash
1947> linkmetrics mgmt fe80:0:0:0:3092:f334:1455:1ad2 forward 1 dra pqmr
1948Done
1949> Received Link Metrics Management Response from: fe80:0:0:0:3092:f334:1455:1ad2
1950Status: SUCCESS
1951```
1952
1953### linkmetrics probe \<ipaddr\> \<seriesid\> \<length\>
1954
1955Send a MLE Link Probe message to the peer.
1956
1957- ipaddr: Peer address.
1958- seriesid: The Series ID for which this Probe message targets at.
1959- length: The length of the Probe message, valid range: [0, 64].
1960
1961```bash
1962> linkmetrics probe fe80:0:0:0:3092:f334:1455:1ad2 1 10
1963Done
1964```
1965
1966### linkmetrics query \<ipaddr\> single [pqmr]
1967
1968Perform a Link Metrics query (Single Probe).
1969
1970- ipaddr: Peer address.
1971- pqmr: This specifies what metrics to query.
1972- p: Layer 2 Number of PDUs received.
1973- q: Layer 2 LQI.
1974- m: Link Margin.
1975- r: RSSI.
1976
1977```bash
1978> linkmetrics query fe80:0:0:0:3092:f334:1455:1ad2 single qmr
1979Done
1980> Received Link Metrics Report from: fe80:0:0:0:3092:f334:1455:1ad2
1981
1982 - LQI: 76 (Exponential Moving Average)
1983 - Margin: 82 (dB) (Exponential Moving Average)
1984 - RSSI: -18 (dBm) (Exponential Moving Average)
1985```
1986
1987### linkmetrics query \<ipaddr\> forward \<seriesid\>
1988
1989Perform a Link Metrics query (Forward Tracking Series).
1990
1991- ipaddr: Peer address.
1992- seriesid: The Series ID.
1993
1994```bash
1995> linkmetrics query fe80:0:0:0:3092:f334:1455:1ad2 forward 1
1996Done
1997> Received Link Metrics Report from: fe80:0:0:0:3092:f334:1455:1ad2
1998
1999 - PDU Counter: 2 (Count/Summation)
2000 - LQI: 76 (Exponential Moving Average)
2001 - Margin: 82 (dB) (Exponential Moving Average)
2002 - RSSI: -18 (dBm) (Exponential Moving Average)
2003```
2004
2005### linkmetricsmgr disable
2006
2007Disable the Link Metrics Manager.
2008
2009`OPENTHREAD_CONFIG_LINK_METRICS_MANAGER_ENABLE` is required.
2010
2011```bash
2012> linkmetricsmgr disable
2013Done
2014```
2015
2016### linkmetricsmgr enable
2017
2018Enable the Link Metrics Manager.
2019
2020`OPENTHREAD_CONFIG_LINK_METRICS_MANAGER_ENABLE` is required.
2021
2022```bash
2023> linkmetricsmgr enable
2024Done
2025```
2026
2027### linkmetricsmgr show
2028
2029Display the Link Metrics data of all subjects. The subjects are identified by its extended address.
2030
2031`OPENTHREAD_CONFIG_LINK_METRICS_MANAGER_ENABLE` is required.
2032
2033```bash
2034
2035> linkmetricsmgr show
2036ExtAddr:827aa7f7f63e1234, LinkMargin:80, Rssi:-20
2037Done
2038```
2039
2040### locate
2041
2042Gets the current state (`In Progress` or `Idle`) of anycast locator.
2043
2044`OPENTHREAD_CONFIG_TMF_ANYCAST_LOCATOR_ENABLE` is required.
2045
2046```bash
2047> locate
2048Idle
2049Done
2050
2051> locate fdde:ad00:beef:0:0:ff:fe00:fc10
2052
2053> locate
2054In Progress
2055Done
2056```
2057
2058### locate \<anycastaddr\>
2059
2060Locate the closest destination of an anycast address (i.e., find the destination's mesh local EID and RLOC16).
2061
2062`OPENTHREAD_CONFIG_TMF_ANYCAST_LOCATOR_ENABLE` is required.
2063
2064The closest destination is determined based on the the current routing table and path costs within the Thread mesh.
2065
2066Locate the leader using its anycast address:
2067
2068```bash
2069> locate fdde:ad00:beef:0:0:ff:fe00:fc00
2070fdde:ad00:beef:0:d9d3:9000:16b:d03b 0xc800
2071Done
2072```
2073
2074Locate the closest destination of a service anycast address:
2075
2076```bash
2077
2078> srp server enable
2079Done
2080
2081> netdata show
2082Prefixes:
2083Routes:
2084Services:
208544970 5d c002 s c800
208644970 5d c002 s cc00
2087Done
2088
2089> locate fdde:ad00:beef:0:0:ff:fe00:fc10
2090fdde:ad00:beef:0:a477:dc98:a4e4:71ea 0xcc00
2091done
2092```
2093
2094### log filename \<filename\>
2095
2096- Note: Simulation Only, ie: `OPENTHREAD_EXAMPLES_SIMULATION`
2097- Requires `OPENTHREAD_CONFIG_LOG_OUTPUT == OPENTHREAD_CONFIG_LOG_OUTPUT_DEBUG_UART`
2098
2099Specifies filename to capture otPlatLog() messages, useful when debugging automated test scripts on Linux when logging disrupts the automated test scripts.
2100
2101### log level
2102
2103Get the log level.
2104
2105```bash
2106> log level
21071
2108Done
2109```
2110
2111### log level \<level\>
2112
2113Set the log level.
2114
2115```bash
2116> log level 4
2117Done
2118```
2119
2120### meshdiag topology [ip6-addrs][children]
2121
2122Discover network topology (list of routers and their connections).
2123
2124This command requires `OPENTHREAD_CONFIG_MESH_DIAG_ENABLE` and `OPENTHREAD_FTD`.
2125
2126Parameters are optional and indicate additional items to discover. Can be added in any order.
2127
2128- `ip6-addrs` to discover the list of IPv6 addresses of every router.
2129- `children` to discover the child table of every router.
2130
2131Output lists all discovered routers. Information per router:
2132
2133- Router ID
2134- RLOC16
2135- Extended MAC address
2136- Thread Version (if known).
2137- Whether the router is this device is itself (`me`)
2138- Whether the router is the parent of this device when device is a child (`parent`)
2139- Whether the router is `leader`
2140- Whether the router acts as a border router providing external connectivity (`br`)
2141- List of routers to which this router has a link:
2142  - `3-links`: Router IDs to which this router has a incoming link with link quality 3
2143  - `2-links`: Router IDs to which this router has a incoming link with link quality 2
2144  - `1-links`: Router IDs to which this router has a incoming link with link quality 1
2145  - If a list if empty, it is omitted in the out.
2146- If `ip6-addrs`, list of IPv6 addresses of the router
2147- If `children`, list of all children of the router. Information per child:
2148  - RLOC16
2149  - Incoming Link Quality from perspective of parent to child (zero indicates unknown)
2150  - Child Device mode (`r` rx-on-when-idle, `d` Full Thread Device, `n` Full Network Data, `-` no flags set)
2151  - Whether the child is this device itself (`me`)
2152  - Whether the child acts as a border router providing external connectivity (`br`)
2153
2154Discover network topology:
2155
2156```bash
2157> meshdiag topology
2158id:02 rloc16:0x0800 ext-addr:8aa57d2c603fe16c ver:4 - me - leader
2159   3-links:{ 46 }
2160id:46 rloc16:0xb800 ext-addr:fe109d277e0175cc ver:4
2161   3-links:{ 02 51 57 }
2162id:33 rloc16:0x8400 ext-addr:d2e511a146b9e54d ver:4
2163   3-links:{ 51 57 }
2164id:51 rloc16:0xcc00 ext-addr:9aab43ababf05352 ver:4
2165   3-links:{ 33 57 }
2166   2-links:{ 46 }
2167id:57 rloc16:0xe400 ext-addr:dae9c4c0e9da55ff ver:4
2168   3-links:{ 46 51 }
2169   1-links:{ 33 }
2170Done
2171```
2172
2173Discover network topology with router's IPv6 addresses and children:
2174
2175```bash
2176> meshdiag topology children ip6-addrs
2177id:62 rloc16:0xf800 ext-addr:ce349873897233a5 ver:4 - me - br
2178   3-links:{ 46 }
2179   ip6-addrs:
2180       fdde:ad00:beef:0:0:ff:fe00:f800
2181       fdde:ad00:beef:0:211d:39e9:6b2e:4ad1
2182       fe80:0:0:0:cc34:9873:8972:33a5
2183   children: none
2184id:02 rloc16:0x0800 ext-addr:8aa57d2c603fe16c ver:4 - leader - br
2185   3-links:{ 46 51 }
2186   ip6-addrs:
2187       fdde:ad00:beef:0:0:ff:fe00:fc00
2188       fdde:ad00:beef:0:0:ff:fe00:800
2189       fdde:ad00:beef:0:8a36:a3eb:47ae:a9b0
2190       fe80:0:0:0:88a5:7d2c:603f:e16c
2191   children:
2192       rloc16:0x0803 lq:3, mode:rn
2193       rloc16:0x0804 lq:3, mode:rdn
2194id:33 rloc16:0x8400 ext-addr:d2e511a146b9e54d ver:4
2195   3-links:{ 57 }
2196   ip6-addrs:
2197       fdde:ad00:beef:0:0:ff:fe00:8400
2198       fdde:ad00:beef:0:824:a126:cf19:a9f4
2199       fe80:0:0:0:d0e5:11a1:46b9:e54d
2200   children: none
2201id:51 rloc16:0xcc00 ext-addr:9aab43ababf05352 ver:4
2202   3-links:{ 02 46 57 }
2203   ip6-addrs:
2204       fdde:ad00:beef:0:0:ff:fe00:cc00
2205       fdde:ad00:beef:0:2986:bba3:12d0:1dd2
2206       fe80:0:0:0:98ab:43ab:abf0:5352
2207   children: none
2208id:57 rloc16:0xe400 ext-addr:dae9c4c0e9da55ff ver:4
2209   3-links:{ 33 51 }
2210   ip6-addrs:
2211       fdde:ad00:beef:0:0:ff:fe00:e400
2212       fdde:ad00:beef:0:87d0:550:bc18:9920
2213       fe80:0:0:0:d8e9:c4c0:e9da:55ff
2214   children:
2215       rloc16:0xe402 lq:3, mode:rn - br
2216       rloc16:0xe403 lq:3, mode:rn
2217id:46 rloc16:0xb800 ext-addr:fe109d277e0175cc ver:4
2218   3-links:{ 02 51 62 }
2219   ip6-addrs:
2220       fdde:ad00:beef:0:0:ff:fe00:b800
2221       fdde:ad00:beef:0:df4d:2994:d85c:c337
2222       fe80:0:0:0:fc10:9d27:7e01:75cc
2223   children: none
2224Done
2225```
2226
2227Discover network topology with children:
2228
2229```bash
2230> meshdiag topology children
2231id:02 rloc16:0x0800 ext-addr:8aa57d2c603fe16c ver:4 - parent - leader - br
2232   3-links:{ 46 51 }
2233   children:
2234       rloc16:0x0803 lq:0, mode:rn
2235       rloc16:0x0804 lq:0, mode:rdn - me
2236id:46 rloc16:0xb800 ext-addr:fe109d277e0175cc ver:4
2237   3-links:{ 02 51 62 }
2238   children: none
2239id:33 rloc16:0x8400 ext-addr:d2e511a146b9e54d ver:4
2240   3-links:{ 57 }
2241   children: none
2242id:51 rloc16:0xcc00 ext-addr:9aab43ababf05352 ver:4
2243   3-links:{ 02 46 57 }
2244   children: none
2245id:57 rloc16:0xe400 ext-addr:dae9c4c0e9da55ff ver:4
2246   3-links:{ 33 51 }
2247   children:
2248       rloc16:0xe402 lq:3, mode:rn - br
2249       rloc16:0xe403 lq:3, mode:rn
2250id:62 rloc16:0xf800 ext-addr:ce349873897233a5 ver:4 - br
2251   3-links:{ 46 }
2252   children: none
2253```
2254
2255### meshdiag childtable \<router-rloc16\>
2256
2257Start a query for child table of a router with a given RLOC16.
2258
2259Output lists all child entries. Information per child:
2260
2261- RLOC16
2262- Extended MAC address
2263- Thread Version
2264- Timeout (in seconds)
2265- Age (seconds since last heard)
2266- Supervision interval (in seconds)
2267- Number of queued messages (in case the child is sleepy)
2268- Device Mode
2269- RSS (average and last) and link margin
2270- Error rates, frame tx (at MAC layer), IPv6 message tx (above MAC)
2271- Connection time (seconds since link establishment {dd}d.{hh}:{mm}:{ss} format)
2272- CSL info
2273  - If synchronized
2274  - Period (in unit of 10-symbols-time)
2275  - Timeout (in seconds)
2276  - Channel
2277
2278```bash
2279> meshdiag childtable 0x6400
2280rloc16:0x6402 ext-addr:8e6f4d323bbed1fe ver:4
2281    timeout:120 age:36 supvn:129 q-msg:0
2282    rx-on:yes type:ftd full-net:yes
2283    rss - ave:-20 last:-20 margin:80
2284    err-rate - frame:11.51% msg:0.76%
2285    conn-time:00:11:07
2286    csl - sync:no period:0 timeout:0 channel:0
2287rloc16:0x6403 ext-addr:ee24e64ecf8c079a ver:4
2288    timeout:120 age:19 supvn:129 q-msg:0
2289    rx-on:no type:mtd full-net:no
2290    rss - ave:-20 last:-20 margin:80
2291    err-rate - frame:0.73% msg:0.00%
2292    conn-time:01:08:53
2293    csl - sync:no period:0 timeout:0 channel:0
2294Done
2295```
2296
2297### meshdiag childip6 \<parent-rloc16\>
2298
2299Send a query to a parent to retrieve the IPv6 addresses of all its MTD children.
2300
2301```bash
2302> meshdiag childip6 0xdc00
2303child-rloc16: 0xdc02
2304    fdde:ad00:beef:0:ded8:cd58:b73:2c21
2305    fd00:2:0:0:c24a:456:3b6b:c597
2306    fd00:1:0:0:120b:95fe:3ecc:d238
2307child-rloc16: 0xdc03
2308    fdde:ad00:beef:0:3aa6:b8bf:e7d6:eefe
2309    fd00:2:0:0:8ff8:a188:7436:6720
2310    fd00:1:0:0:1fcf:5495:790a:370f
2311Done
2312```
2313
2314### meshdiag routerneighbortable \<router-rloc16\>
2315
2316Start a query for router neighbor table of a router with a given RLOC16.
2317
2318Output lists all router neighbor entries. Information per entry:
2319
2320- RLOC16
2321- Extended MAC address
2322- Thread Version
2323- RSS (average and last) and link margin
2324- Error rates, frame tx (at MAC layer), IPv6 message tx (above MAC)
2325- Connection time (seconds since link establishment {dd}d.{hh}:{mm}:{ss} format)
2326
2327```bash
2328> meshdiag routerneighbortable 0x7400
2329rloc16:0x9c00 ext-addr:764788cf6e57a4d2 ver:4
2330   rss - ave:-20 last:-20 margin:80
2331   err-rate - frame:1.38% msg:0.00%
2332   conn-time:01:54:02
2333rloc16:0x7c00 ext-addr:4ed24fceec9bf6d3 ver:4
2334   rss - ave:-20 last:-20 margin:80
2335   err-rate - frame:0.72% msg:0.00%
2336   conn-time:00:11:27
2337Done
2338```
2339
2340### mliid \<iid\>
2341
2342Set the Mesh Local IID.
2343
2344It must be used before Thread stack is enabled.
2345
2346Only for testing/reference device.
2347
2348```bash
2349> mliid 1122334455667788
2350Done
2351```
2352
2353### mlr reg \<ipaddr\> ... [timeout]
2354
2355Register Multicast Listeners to Primary Backbone Router, with an optional `timeout` (in seconds).
2356
2357Omit `timeout` to use the default MLR timeout on the Primary Backbone Router.
2358
2359Use `timeout = 0` to deregister Multicast Listeners.
2360
2361NOTE: Only for Thread 1.2 Commissioner FTD device.
2362
2363```bash
2364> mlr reg ff04::1
2365status 0, 0 failed
2366Done
2367> mlr reg ff04::1 ff04::2 ff02::1
2368status 2, 1 failed
2369ff02:0:0:0:0:0:0:1
2370Done
2371> mlr reg ff04::1 ff04::2 1000
2372status 0, 0 failed
2373Done
2374> mlr reg ff04::1 ff04::2 0
2375status 0, 0 failed
2376Done
2377```
2378
2379### mode
2380
2381Get the Thread Device Mode value.
2382
2383- -: no flags set (rx-off-when-idle, minimal Thread device, stable network data)
2384- r: rx-on-when-idle
2385- d: Full Thread Device
2386- n: Full Network Data
2387
2388```bash
2389> mode
2390rdn
2391Done
2392```
2393
2394### mode [rdn]
2395
2396Set the Thread Device Mode value.
2397
2398- -: no flags set (rx-off-when-idle, minimal Thread device, stable network data)
2399- r: rx-on-when-idle
2400- d: Full Thread Device
2401- n: Full Network Data
2402
2403```bash
2404> mode rdn
2405Done
2406```
2407
2408```bash
2409> mode -
2410Done
2411```
2412
2413### multiradio
2414
2415Get the list of supported radio links by the device.
2416
2417This command is always available, even when only a single radio is supported by the device.
2418
2419```bash
2420> multiradio
2421[15.4, TREL]
2422Done
2423```
2424
2425### multiradio neighbor list
2426
2427Get the list of neighbors and their supported radios and their preference.
2428
2429This command is only available when device supports more than one radio link.
2430
2431```bash
2432> multiradio neighbor list
2433ExtAddr:3a65bc38dbe4a5be, RLOC16:0xcc00, Radios:[15.4(255), TREL(255)]
2434ExtAddr:17df23452ee4a4be, RLOC16:0x1300, Radios:[15.4(255)]
2435Done
2436```
2437
2438### multiradio neighbor \<ext address\>
2439
2440Get the radio info for specific neighbor with a given extended address.
2441
2442This command is only available when device supports more than one radio link.
2443
2444```bash
2445> multiradio neighbor 3a65bc38dbe4a5be
2446[15.4(255), TREL(255)]
2447Done
2448```
2449
2450### nat64 cidr
2451
2452Gets the IPv4 configured CIDR in the NAT64 translator.
2453
2454`OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE` is required.
2455
2456```bash
2457> nat64 cidr
2458192.168.255.0/24
2459Done
2460```
2461
2462### nat64 cidr \<IPv4 address\>
2463
2464Sets the IPv4 CIDR in the NAT64 translator.
2465
2466Note:
2467
2468- `OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE` is required.
2469- A valid CIDR must have a non-zero prefix length.
2470- When updating the CIDR, NAT64 translator will be reset and all existing sessions will be expired.
2471
2472```bash
2473> nat64 cidr 192.168.100.0/24
2474Done
2475```
2476
2477### nat64 disable
2478
2479Disable NAT64 functions, including the translator and the prefix publishing.
2480
2481This command will reset the mapping table in the translator (if NAT64 translator is enabled in the build).
2482
2483`OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE` or `OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE` are required.
2484
2485```bash
2486> nat64 disable
2487Done
2488```
2489
2490### nat64 enable
2491
2492Enable NAT64 functions, including the translator and the prefix publishing.
2493
2494This command can be called anytime.
2495
2496`OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE` or `OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE` are required.
2497
2498```bash
2499> nat64 enable
2500Done
2501```
2502
2503### nat64 state
2504
2505Gets the state of NAT64 functions.
2506
2507Possible results for prefix manager are (`OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE` is required):
2508
2509- `Disabled`: NAT64 prefix manager is disabled.
2510- `NotRunning`: NAT64 prefix manager is enabled, but is not running, probably because the routing manager is disabled.
2511- `Idle`: NAT64 prefix manager is enabled and is running, but is not publishing a NAT64 prefix. Usually when there is another border router publishing a NAT64 prefix with higher priority.
2512- `Active`: NAT64 prefix manager is enabled, running and publishing a NAT64 prefix.
2513
2514Possible results for NAT64 translator are (`OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE` is required):
2515
2516- `Disabled`: NAT64 translator is disabled.
2517- `NotRunning`: NAT64 translator is enabled, but is not translating packets, probably because it is not configured with a NAT64 prefix or a CIDR for NAT64.
2518- `Active`: NAT64 translator is enabled and is translating packets.
2519
2520`OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE` or `OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE` are required.
2521
2522```bash
2523> nat64 state
2524PrefixManager: NotRunning
2525Translator:    NotRunning
2526Done
2527
2528> nat64 state
2529PrefixManager: Idle
2530Translator:    NotRunning
2531Done
2532
2533> nat64 state
2534PrefixManager: Active
2535Translator:    Active
2536Done
2537```
2538
2539### nat64 mappings
2540
2541Get the NAT64 translator mappings.
2542
2543`OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE` is required.
2544
2545```bash
2546> nat64 mappings
2547|          | Address                   |        | 4 to 6       | 6 to 4       |
2548+----------+---------------------------+--------+--------------+--------------+
2549| ID       | IPv6       | IPv4         | Expiry | Pkts | Bytes | Pkts | Bytes |
2550+----------+------------+--------------+--------+------+-------+------+-------+
2551| 00021cb9 | fdc7::df79 | 192.168.64.2 |  7196s |    6 |   456 |   11 |  1928 |
2552|          |                                TCP |    0 |     0 |    0 |     0 |
2553|          |                                UDP |    1 |   136 |   16 |  1608 |
2554|          |                               ICMP |    5 |   320 |    5 |   320 |
2555```
2556
2557### nat64 counters
2558
2559Get the NAT64 translator packet and error counters.
2560
2561`OPENTHREAD_CONFIG_NAT64_TRANSLATOR_ENABLE` is required.
2562
2563```bash
2564> nat64 counters
2565|               | 4 to 6                  | 6 to 4                  |
2566+---------------+-------------------------+-------------------------+
2567| Protocol      | Pkts     | Bytes        | Pkts     | Bytes        |
2568+---------------+----------+--------------+----------+--------------+
2569|         Total |       11 |          704 |       11 |          704 |
2570|           TCP |        0 |            0 |        0 |            0 |
2571|           UDP |        0 |            0 |        0 |            0 |
2572|          ICMP |       11 |          704 |       11 |          704 |
2573| Errors        | Pkts                    | Pkts                    |
2574+---------------+-------------------------+-------------------------+
2575|         Total |                       8 |                       4 |
2576|   Illegal Pkt |                       0 |                       0 |
2577|   Unsup Proto |                       0 |                       0 |
2578|    No Mapping |                       2 |                       0 |
2579Done
2580```
2581
2582### neighbor linkquality
2583
2584Print link quality info for all neighbors.
2585
2586```bash
2587> neighbor linkquality
2588| RLOC16 | Extended MAC     | Frame Error | Msg Error | Avg RSS | Last RSS | Age   |
2589+--------+------------------+-------------+-----------+---------+----------+-------+
2590| 0xe800 | 9e2fa4e1b84f92db |      0.00 % |    0.00 % |     -46 |      -48 |     1 |
2591| 0xc001 | 0ad7ed6beaa6016d |      4.67 % |    0.08 % |     -68 |      -72 |    10 |
2592Done
2593```
2594
2595### neighbor list
2596
2597List RLOC16 of neighbors.
2598
2599```bash
2600> neighbor list
26010xcc01 0xc800 0xf000
2602Done
2603```
2604
2605### neighbor table
2606
2607Print table of neighbors.
2608
2609```bash
2610> neighbor table
2611| Role | RLOC16 | Age | Avg RSSI | Last RSSI |R|D|N| Extended MAC     |
2612+------+--------+-----+----------+-----------+-+-+-+------------------+
2613|   C  | 0xcc01 |  96 |      -46 |       -46 |1|1|1| 1eb9ba8a6522636b |
2614|   R  | 0xc800 |   2 |      -29 |       -29 |1|1|1| 9a91556102c39ddb |
2615|   R  | 0xf000 |   3 |      -28 |       -28 |1|1|1| 0ad7ed6beaa6016d |
2616Done
2617```
2618
2619### neighbor conntime
2620
2621Print connection time and age of neighbors.
2622
2623The table provides the following info per neighbor:
2624
2625- RLOC16
2626- Extended MAC address
2627- Age (seconds since last heard from neighbor)
2628- Connection time (seconds since link establishment with neighbor)
2629
2630Duration intervals are formatted as `<hh>:<mm>:<ss>` for hours, minutes, and seconds if the duration is less than one day. If the duration is longer than one day, the format is `<dd>d.<hh>:<mm>:<ss>`.
2631
2632```bash
2633> neighbor conntime
2634| RLOC16 | Extended MAC     | Last Heard (Age) | Connection Time  |
2635+--------+------------------+------------------+------------------+
2636| 0x8401 | 1a28be396a14a318 |         00:00:13 |         00:07:59 |
2637| 0x5c00 | 723ebf0d9eba3264 |         00:00:03 |         00:11:27 |
2638| 0xe800 | ce53628a1e3f5b3c |         00:00:02 |         00:00:15 |
2639Done
2640```
2641
2642### neighbor conntime list
2643
2644Print connection time and age of neighbors.
2645
2646This command is similar to `neighbor conntime`, but it displays the information in a list format. The age and connection time are both displayed in seconds.
2647
2648```bash
2649> neighbor conntime list
26500x8401 1a28be396a14a318 age:63 conn-time:644
26510x5c00 723ebf0d9eba3264 age:23 conn-time:852
26520xe800 ce53628a1e3f5b3c age:23 conn-time:180
2653Done
2654```
2655
2656### netstat
2657
2658List all UDP sockets.
2659
2660```bash
2661> netstat
2662| Local Address                                   | Peer Address                                    |
2663+-------------------------------------------------+-------------------------------------------------+
2664| [0:0:0:0:0:0:0:0]:49153                         | [0:0:0:0:0:0:0:0]:0                             |
2665| [0:0:0:0:0:0:0:0]:49152                         | [0:0:0:0:0:0:0:0]:0                             |
2666| [0:0:0:0:0:0:0:0]:61631                         | [0:0:0:0:0:0:0:0]:0                             |
2667| [0:0:0:0:0:0:0:0]:19788                         | [0:0:0:0:0:0:0:0]:0                             |
2668Done
2669```
2670
2671### networkdiagnostic get \<addr\> \<type\> ..
2672
2673Send network diagnostic request to retrieve tlv of \<type\>s.
2674
2675If \<addr\> is unicast address, `Diagnostic Get` will be sent. if \<addr\> is multicast address, `Diagnostic Query` will be sent.
2676
2677```bash
2678> networkdiagnostic get fdde:ad00:beef:0:0:ff:fe00:fc00 0 1 6
2679> DIAG_GET.rsp/ans: 00080e336e1c41494e1c01020c000608640b0f674074c503
2680Ext Address: '0e336e1c41494e1c'
2681Rloc16: 0x0c00
2682Leader Data:
2683    PartitionId: 0x640b0f67
2684    Weighting: 64
2685    DataVersion: 116
2686    StableDataVersion: 197
2687    LeaderRouterId: 0x03
2688Done
2689
2690> networkdiagnostic get ff02::1 0 1
2691> DIAG_GET.rsp/ans: 00080e336e1c41494e1c01020c00
2692Ext Address: '0e336e1c41494e1c'
2693Rloc16: 0x0c00
2694Done
2695DIAG_GET.rsp/ans: 00083efcdb7e3f9eb0f201021800
2696Ext Address: '3efcdb7e3f9eb0f2'
2697Rloc16: 0x1800
2698Done
2699```
2700
2701### networkdiagnostic reset \<addr\> \<type\> ..
2702
2703Send network diagnostic request to reset \<addr\>'s tlv of \<type\>s. Currently only `MAC Counters`(9) is supported.
2704
2705```bash
2706> diagnostic reset fd00:db8::ff:fe00:0 9
2707Done
2708```
2709
2710### networkidtimeout
2711
2712Get the NETWORK_ID_TIMEOUT parameter used in the Router role.
2713
2714```bash
2715> networkidtimeout
2716120
2717Done
2718```
2719
2720### networkidtimeout \<timeout\>
2721
2722Set the NETWORK_ID_TIMEOUT parameter used in the Router role.
2723
2724```bash
2725> networkidtimeout 120
2726Done
2727```
2728
2729### networkkey
2730
2731Get the Thread Network Key value.
2732
2733```bash
2734> networkkey
273500112233445566778899aabbccddeeff
2736Done
2737```
2738
2739### networkkey \<key\>
2740
2741Set the Thread Network Key value.
2742
2743```bash
2744> networkkey 00112233445566778899aabbccddeeff
2745Done
2746```
2747
2748### networkname
2749
2750Get the Thread Network Name.
2751
2752```bash
2753> networkname
2754OpenThread
2755Done
2756```
2757
2758### networkname \<name\>
2759
2760Set the Thread Network Name.
2761
2762**NOTE** The current commissioning credential becomes stale after changing this value. Use [pskc](#pskc--p-keypassphrase) to reset.
2763
2764```bash
2765> networkname OpenThread
2766Done
2767```
2768
2769### networktime
2770
2771Get the Thread network time and the time sync parameters.
2772
2773```bash
2774> networktime
2775Network Time:     21084154us (synchronized)
2776Time Sync Period: 100s
2777XTAL Threshold:   300ppm
2778Done
2779```
2780
2781### networktime \<timesyncperiod\> \<xtalthreshold\>
2782
2783Set time sync parameters
2784
2785- timesyncperiod: The time synchronization period, in seconds.
2786- xtalthreshold: The XTAL accuracy threshold for a device to become Router-Capable device, in PPM.
2787
2788```bash
2789> networktime 100 300
2790Done
2791```
2792
2793### nexthop
2794
2795Output the table of allocated Router IDs and the current next hop (as Router ID) and path cost for each ID.
2796
2797```bash
2798> nexthop
2799| ID   |NxtHop| Cost |
2800+------+------+------+
2801|    9 |    9 |    1 |
2802|   25 |   25 |    0 |
2803|   30 |   30 |    1 |
2804|   46 |    - |    - |
2805|   50 |   30 |    3 |
2806|   60 |   30 |    2 |
2807Done
2808```
2809
2810### nexthop \<rloc16\>
2811
2812Get the next hop (as RLOC16) and path cost towards a given RLOC16 destination.
2813
2814```bash
2815> nexthop 0xc000
28160xc000 cost:0
2817Done
2818
2819nexthop 0x8001
28200x2000 cost:3
2821Done
2822```
2823
2824### panid
2825
2826Get the IEEE 802.15.4 PAN ID value.
2827
2828```bash
2829> panid
28300xdead
2831Done
2832```
2833
2834### panid \<panid\>
2835
2836Set the IEEE 802.15.4 PAN ID value.
2837
2838```bash
2839> panid 0xdead
2840Done
2841```
2842
2843### parent
2844
2845Get the diagnostic information for a Thread Router as parent.
2846
2847Note: When operating as a Thread Router when `OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE` is enabled, this command will return the cached information from when the device was previously attached as a Thread Child. Returning cached information is necessary to support the Thread Test Harness - Test Scenario 8.2.x requests the former parent (i.e. Joiner Router's) MAC address even if the device has already promoted to a router.
2848
2849```bash
2850> parent
2851Ext Addr: be1857c6c21dce55
2852Rloc: 5c00
2853Link Quality In: 3
2854Link Quality Out: 3
2855Age: 20
2856Version: 4
2857Done
2858```
2859
2860Note: When `OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE` is enabled, this command will return two extra lines with information relevant for CSL Receiver operation.
2861
2862```bash
2863CSL clock accuracy: 20
2864CSL uncertainty: 5
2865```
2866
2867### parentpriority
2868
2869Get the assigned parent priority value, -2 means not assigned.
2870
2871```bash
2872> parentpriority
28731
2874Done
2875```
2876
2877### parentpriority \<parentpriority\>
2878
2879Set the assigned parent priority value: 1, 0, -1 or -2.
2880
2881```bash
2882> parentpriority 1
2883Done
2884```
2885
2886### partitionid
2887
2888Get the Thread Network Partition ID.
2889
2890```bash
2891> partitionid
28924294967295
2893Done
2894```
2895
2896### partitionid preferred
2897
2898Get the preferred Thread Leader Partition ID.
2899
2900`OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE` is required.
2901
2902```bash
2903> partitionid preferred
29044294967295
2905Done
2906```
2907
2908### partitionid preferred \<partitionid\>
2909
2910Set the preferred Thread Leader Partition ID.
2911
2912`OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE` is required.
2913
2914```bash
2915> partitionid preferred 0xffffffff
2916Done
2917```
2918
2919### ping \[async\] \[-I source\] \[-m] \<ipaddr\> \[size\] \[count\] \[interval\] \[hoplimit\] \[timeout\]
2920
2921Send an ICMPv6 Echo Request.
2922
2923- async: Use the non-blocking mode. New commands are allowed before the ping process terminates.
2924- source: The source IPv6 address of the echo request.
2925- -m: multicast loop, which allows looping back pings to multicast addresses that the device itself is subscribed to.
2926- size: The number of data bytes to be sent.
2927- count: The number of ICMPv6 Echo Requests to be sent.
2928- interval: The interval between two consecutive ICMPv6 Echo Requests in seconds. The value may have fractional form, for example `0.5`.
2929- hoplimit: The hoplimit of ICMPv6 Echo Request to be sent.
2930- timeout: Time in seconds to wait for the final ICMPv6 Echo Reply after sending out the request. The value may have fractional form, for example `3.5`.
2931
2932```bash
2933> ping fd00:db8:0:0:76b:6a05:3ae9:a61a
2934> 16 bytes from fd00:db8:0:0:76b:6a05:3ae9:a61a: icmp_seq=5 hlim=64 time=0ms
29351 packets transmitted, 1 packets received. Packet loss = 0.0%. Round-trip min/avg/max = 0/0.0/0 ms.
2936Done
2937
2938> ping -I fd00:db8:0:0:76b:6a05:3ae9:a61a ff02::1 100 1 1 1
2939> 108 bytes from fd00:db8:0:0:f605:fb4b:d429:d59a: icmp_seq=4 hlim=64 time=7ms
29401 packets transmitted, 1 packets received. Round-trip min/avg/max = 7/7.0/7 ms.
2941Done
2942```
2943
2944The address can be an IPv4 address, which will be synthesized to an IPv6 address using the preferred NAT64 prefix from the network data.
2945
2946> Note: The command will return `InvalidState` when the preferred NAT64 prefix is unavailable.
2947
2948```bash
2949> ping 172.17.0.1
2950Pinging synthesized IPv6 address: fdde:ad00:beef:2:0:0:ac11:1
2951> 16 bytes from fdde:ad00:beef:2:0:0:ac11:1: icmp_seq=5 hlim=64 time=0ms
29521 packets transmitted, 1 packets received. Packet loss = 0.0%. Round-trip min/avg/max = 0/0.0/0 ms.
2953Done
2954```
2955
2956### ping stop
2957
2958Stop sending ICMPv6 Echo Requests.
2959
2960```bash
2961> ping stop
2962Done
2963```
2964
2965### platform
2966
2967Print the current platform
2968
2969```bash
2970> platform
2971NRF52840
2972Done
2973```
2974
2975### pollperiod
2976
2977Get the customized data poll period of sleepy end device (milliseconds). Only for certification test.
2978
2979```bash
2980> pollperiod
29810
2982Done
2983```
2984
2985### pollperiod \<pollperiod\>
2986
2987Set the customized data poll period for sleepy end device (milliseconds >= 10ms). Only for certification test.
2988
2989```bash
2990> pollperiod 10
2991Done
2992```
2993
2994### pskc
2995
2996Get pskc in hex format.
2997
2998```bash
2999> pskc
300000000000000000000000000000000000
3001Done
3002```
3003
3004### pskc [-p] \<key\>|\<passphrase\>
3005
3006With `-p` generate pskc from \<passphrase\> (UTF-8 encoded) together with **current** network name and extended PAN ID, otherwise set pskc as \<key\> (hex format).
3007
3008```bash
3009> pskc 67c0c203aa0b042bfb5381c47aef4d9e
3010Done
3011> pskc -p 123456
3012Done
3013```
3014
3015### pskcref
3016
3017Get pskc key reference.
3018
3019`OPENTHREAD_CONFIG_PLATFORM_KEY_REFERENCES_ENABLE` is required.
3020
3021```bash
3022> pskcref
30230x80000000
3024Done
3025```
3026
3027### pskcref \<keyref\>
3028
3029Set pskc key reference as \<keyref\>.
3030
3031`OPENTHREAD_CONFIG_PLATFORM_KEY_REFERENCES_ENABLE` is required.
3032
3033```bash
3034> pskcref 0x20017
3035Done
3036```
3037
3038### preferrouterid \<routerid\>
3039
3040Prefer a Router ID when solicit router id from Leader.
3041
3042```bash
3043> preferrouterid 16
3044Done
3045```
3046
3047### prefix
3048
3049Get the prefix list in the local Network Data. Note: For the Thread 1.2 border router with backbone capability, the local Domain Prefix would be listed as well (with flag `D`), with preceding `-` if backbone functionality is disabled.
3050
3051```bash
3052> prefix
30532001:dead:beef:cafe::/64 paros med
3054- fd00:7d03:7d03:7d03::/64 prosD med
3055Done
3056```
3057
3058### prefix add \<prefix\> [padcrosnD][prf]
3059
3060Add a valid prefix to the Network Data.
3061
3062Note: The Domain Prefix flag (`D`) is only available for Thread 1.2.
3063
3064- p: Preferred flag
3065- a: Stateless IPv6 Address Autoconfiguration flag
3066- d: DHCPv6 IPv6 Address Configuration flag
3067- c: DHCPv6 Other Configuration flag
3068- r: Default Route flag
3069- o: On Mesh flag
3070- s: Stable flag
3071- n: Nd Dns flag
3072- D: Domain Prefix flag
3073- prf: Default router preference, which may be 'high', 'med', or 'low'.
3074
3075```bash
3076> prefix add 2001:dead:beef:cafe::/64 paros med
3077Done
3078
3079> prefix add fd00:7d03:7d03:7d03::/64 prosD med
3080Done
3081```
3082
3083### prefix meshlocal
3084
3085Get the mesh local prefix.
3086
3087```bash
3088> prefix meshlocal
3089fdde:ad00:beef:0::/64
3090Done
3091```
3092
3093### prefix meshlocal <prefix>
3094
3095Set the mesh local prefix.
3096
3097```bash
3098> prefix meshlocal fdde:ad00:beef:0::/64
3099Done
3100```
3101
3102### prefix remove \<prefix\>
3103
3104Invalidate a prefix in the Network Data.
3105
3106```bash
3107> prefix remove 2001:dead:beef:cafe::/64
3108Done
3109```
3110
3111### promiscuous
3112
3113Get radio promiscuous property.
3114
3115```bash
3116> promiscuous
3117Disabled
3118Done
3119```
3120
3121### promiscuous enable
3122
3123Enable radio promiscuous operation and print raw packet content.
3124
3125```bash
3126> promiscuous enable
3127Done
3128```
3129
3130### promiscuous disable
3131
3132Disable radio promiscuous operation.
3133
3134```bash
3135> promiscuous disable
3136Done
3137```
3138
3139### radio enable
3140
3141Enable radio.
3142
3143```bash
3144> radio enable
3145Done
3146```
3147
3148### radio disable
3149
3150Disable radio.
3151
3152```bash
3153> radio disable
3154Done
3155```
3156
3157### radio stats
3158
3159`OPENTHREAD_CONFIG_RADIO_STATS_ENABLE` is required. This feature is only available on FTD and MTD.
3160
3161The radio statistics shows the time when the radio is in sleep/tx/rx state. The command will show the time of these states since last reset in unit of microseconds. It will also show the percentage of the time.
3162
3163```bash
3164> radio stats
3165Radio Statistics:
3166Total Time: 67.756s
3167Tx Time: 0.022944s (0.03%)
3168Rx Time: 1.482353s (2.18%)
3169Sleep Time: 66.251128s (97.77%)
3170Disabled Time: 0.000080s (0.00%)
3171Done
3172```
3173
3174### radio stats clear
3175
3176`OPENTHREAD_CONFIG_RADIO_STATS_ENABLE` is required. This feature is only available on FTD and MTD.
3177
3178This command resets the radio statistics. It sets all the time to 0.
3179
3180```bash
3181> radio stats clear
3182Done
3183```
3184
3185### radiofilter
3186
3187`OPENTHREAD_CONFIG_MAC_FILTER_ENABLE` is required.
3188
3189The radio filter is mainly intended for testing. It can be used to temporarily block all tx/rx on the IEEE 802.15.4 radio.
3190
3191When radio filter is enabled, radio is put to sleep instead of receive (to ensure device does not receive any frame and/or potentially send ack). Also the frame transmission requests return immediately without sending the frame over the air (return "no ack" error if ack is requested, otherwise return success).
3192
3193Get radio filter status (enabled or disabled).
3194
3195```bash
3196> radiofilter
3197Disabled
3198Done
3199```
3200
3201### radiofilter enable
3202
3203`OPENTHREAD_CONFIG_MAC_FILTER_ENABLE` is required.
3204
3205Enable radio radio filter.
3206
3207```bash
3208> radiofilter enable
3209Done
3210```
3211
3212### radiofilter disable
3213
3214`OPENTHREAD_CONFIG_MAC_FILTER_ENABLE` is required.
3215
3216Disable radio radio filter.
3217
3218```bash
3219> radiofilter disable
3220Done
3221```
3222
3223### rcp
3224
3225RCP-related commands.
3226
3227### region
3228
3229Set the radio region, this can affect the transmit power limit.
3230
3231```bash
3232> region US
3233Done
3234> region
3235US
3236Done
3237```
3238
3239### rcp version
3240
3241Print RCP version string.
3242
3243```bash
3244> rcp version
3245OPENTHREAD/20191113-00825-g82053cc9d-dirty; SIMULATION; Jun  4 2020 17:53:16
3246Done
3247```
3248
3249### releaserouterid \<routerid\>
3250
3251Release a Router ID that has been allocated by the device in the Leader role.
3252
3253```bash
3254> releaserouterid 16
3255Done
3256```
3257
3258### reset
3259
3260Signal a platform reset.
3261
3262```bash
3263> reset
3264```
3265
3266### reset bootloader
3267
3268Signal a platform reset to bootloader mode, if supported.
3269
3270Requires `OPENTHREAD_CONFIG_PLATFORM_BOOTLOADER_MODE_ENABLE`.
3271
3272```bash
3273> reset bootloader
3274Done
3275```
3276
3277### rloc16
3278
3279Get the Thread RLOC16 value.
3280
3281```bash
3282> rloc16
32830xdead
3284Done
3285```
3286
3287### route
3288
3289Get the external route list in the local Network Data.
3290
3291```bash
3292> route
32932001:dead:beef:cafe::/64 s med
3294Done
3295```
3296
3297### route add \<prefix\> [sna][prf]
3298
3299Add a valid external route to the Network Data.
3300
3301- s: Stable flag
3302- n: NAT64 flag
3303- a: Advertising PIO (AP) flag
3304- prf: Default Router Preference, which may be: 'high', 'med', or 'low'.
3305
3306```bash
3307> route add 2001:dead:beef:cafe::/64 s med
3308Done
3309```
3310
3311### route remove \<prefix\>
3312
3313Invalidate a external route in the Network Data.
3314
3315```bash
3316> route remove 2001:dead:beef:cafe::/64
3317Done
3318```
3319
3320### router list
3321
3322List allocated Router IDs.
3323
3324```bash
3325> router list
33268 24 50
3327Done
3328```
3329
3330### router table
3331
3332Print table of routers.
3333
3334```bash
3335> router table
3336| ID | RLOC16 | Next Hop | Path Cost | LQ In | LQ Out | Age | Extended MAC     | Link |
3337+----+--------+----------+-----------+-------+--------+-----+------------------+------+
3338| 22 | 0x5800 |       63 |         0 |     0 |      0 |   0 | 0aeb8196c9f61658 |    0 |
3339| 49 | 0xc400 |       63 |         0 |     3 |      3 |   0 | faa1c03908e2dbf2 |    1 |
3340Done
3341```
3342
3343### router \<id\>
3344
3345Print diagnostic information for a Thread Router. The `id` may be a Router ID or an RLOC16.
3346
3347```bash
3348> router 50
3349Alloc: 1
3350Router ID: 50
3351Rloc: c800
3352Next Hop: c800
3353Link: 1
3354Ext Addr: e2b3540590b0fd87
3355Cost: 0
3356Link Quality In: 3
3357Link Quality Out: 3
3358Age: 3
3359Done
3360```
3361
3362```bash
3363> router 0xc800
3364Alloc: 1
3365Router ID: 50
3366Rloc: c800
3367Next Hop: c800
3368Link: 1
3369Ext Addr: e2b3540590b0fd87
3370Cost: 0
3371Link Quality In: 3
3372Link Quality Out: 3
3373Age: 7
3374Done
3375```
3376
3377### routerdowngradethreshold
3378
3379Get the ROUTER_DOWNGRADE_THRESHOLD value.
3380
3381```bash
3382> routerdowngradethreshold
338323
3384Done
3385```
3386
3387### routerdowngradethreshold \<threshold\>
3388
3389Set the ROUTER_DOWNGRADE_THRESHOLD value.
3390
3391```bash
3392> routerdowngradethreshold 23
3393Done
3394```
3395
3396### routereligible
3397
3398Indicates whether the router role is enabled or disabled.
3399
3400```bash
3401> routereligible
3402Enabled
3403Done
3404```
3405
3406### routereligible enable
3407
3408Enable the router role.
3409
3410```bash
3411> routereligible enable
3412Done
3413```
3414
3415### routereligible disable
3416
3417Disable the router role.
3418
3419```bash
3420> routereligible disable
3421Done
3422```
3423
3424### routerselectionjitter
3425
3426Get the ROUTER_SELECTION_JITTER value.
3427
3428```bash
3429> routerselectionjitter
3430120
3431Done
3432```
3433
3434### routerselectionjitter \<jitter\>
3435
3436Set the ROUTER_SELECTION_JITTER value.
3437
3438```bash
3439> routerselectionjitter 120
3440Done
3441```
3442
3443### routerupgradethreshold
3444
3445Get the ROUTER_UPGRADE_THRESHOLD value.
3446
3447```bash
3448> routerupgradethreshold
344916
3450Done
3451```
3452
3453### routerupgradethreshold \<threshold\>
3454
3455Set the ROUTER_UPGRADE_THRESHOLD value.
3456
3457```bash
3458> routerupgradethreshold 16
3459Done
3460```
3461
3462### childrouterlinks
3463
3464Get the MLE_CHILD_ROUTER_LINKS value.
3465
3466```bash
3467> childrouterlinks
346816
3469Done
3470```
3471
3472### childrouterlinks \<number_of_links\>
3473
3474Set the MLE_CHILD_ROUTER_LINKS value.
3475
3476```bash
3477> childrouterlinks 16
3478Done
3479```
3480
3481### scan \[channel\]
3482
3483Perform an IEEE 802.15.4 Active Scan.
3484
3485- channel: The channel to scan on. If no channel is provided, the active scan will cover all valid channels.
3486
3487```bash
3488> scan
3489| PAN  | MAC Address      | Ch | dBm | LQI |
3490+------+------------------+----+-----+-----+
3491| ffff | f1d92a82c8d8fe43 | 11 | -20 |   0 |
3492Done
3493```
3494
3495### scan energy \[duration\] \[channel\]
3496
3497Perform an IEEE 802.15.4 Energy Scan.
3498
3499- duration: The time in milliseconds to spend scanning each channel.
3500
3501```bash
3502> scan energy 10
3503| Ch | RSSI |
3504+----+------+
3505| 11 |  -59 |
3506| 12 |  -62 |
3507| 13 |  -67 |
3508| 14 |  -61 |
3509| 15 |  -87 |
3510| 16 |  -86 |
3511| 17 |  -86 |
3512| 18 |  -52 |
3513| 19 |  -58 |
3514| 20 |  -82 |
3515| 21 |  -76 |
3516| 22 |  -82 |
3517| 23 |  -74 |
3518| 24 |  -81 |
3519| 25 |  -88 |
3520| 26 |  -71 |
3521Done
3522```
3523
3524```bash
3525> scan energy 10 20
3526| Ch | RSSI |
3527+----+------+
3528| 20 |  -82 |
3529Done
3530```
3531
3532### service
3533
3534Module for controlling service registration in Network Data. Each change in service registration must be sent to leader by `netdata register` command before taking effect.
3535
3536### service add \<enterpriseNumber\> \<serviceData\> \<serverData\>
3537
3538Add service to the Network Data.
3539
3540- enterpriseNumber: IANA enterprise number
3541- serviceData: hex-encoded binary service data
3542- serverData: hex-encoded binary server data
3543
3544```bash
3545> service add 44970 112233 aabbcc
3546Done
3547> netdata register
3548Done
3549```
3550
3551### service remove \<enterpriseNumber\> \<serviceData\>
3552
3553Remove service from Network Data.
3554
3555- enterpriseNumber: IANA enterprise number
3556- serviceData: hext-encoded binary service data
3557
3558```bash
3559> service remove 44970 112233
3560Done
3561> netdata register
3562Done
3563```
3564
3565### singleton
3566
3567Return true when there are no other nodes in the network, otherwise return false.
3568
3569```bash
3570> singleton
3571true or false
3572Done
3573```
3574
3575### sntp query \[SNTP server IP\] \[SNTP server port\]
3576
3577Send SNTP Query to obtain current unix epoch time (from 1st January 1970). The latter two parameters have following default values:
3578
3579- NTP server IP: 2001:4860:4806:8:: (Google IPv6 NTP Server)
3580- NTP server port: 123
3581
3582```bash
3583> sntp query
3584> SNTP response - Unix time: 1540894725 (era: 0)
3585```
3586
3587You can use NAT64 of OpenThread Border Router to reach e.g. Google IPv4 NTP Server:
3588
3589```bash
3590> sntp query 64:ff9b::d8ef:2308
3591> SNTP response - Unix time: 1540898611 (era: 0)
3592```
3593
3594### state
3595
3596Return state of current state.
3597
3598```bash
3599> state
3600offline, disabled, detached, child, router or leader
3601Done
3602```
3603
3604### state <state>
3605
3606Try to switch to state `detached`, `child`, `router` or `leader`.
3607
3608```bash
3609> state leader
3610Done
3611```
3612
3613### test tmforiginfilter \[enable|disable\]
3614
3615Enable/disable filter that drops UDP messages sent to the TMF port from untrusted origin. Also get the current state of the filter if no argument is specified.
3616
3617Note: This filter is enabled by default.
3618
3619This command is intended for testing only. `OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE` is required for all `test` sub-commands.
3620
3621Get the current state of the filter.
3622
3623```
3624> test tmforiginfilter
3625Enabled
3626```
3627
3628Enable or disable the filter.
3629
3630```
3631> test tmforiginfilter enable
3632Done
3633>
3634> test tmforiginfilter
3635Enabled
3636>
3637> test tmforiginfilter disable
3638Done
3639>
3640> test tmforiginfilter
3641Disabled
3642>
3643```
3644
3645### thread start
3646
3647Enable Thread protocol operation and attach to a Thread network.
3648
3649```bash
3650> thread start
3651Done
3652```
3653
3654### thread stop
3655
3656Disable Thread protocol operation and detach from a Thread network.
3657
3658```bash
3659> thread stop
3660Done
3661```
3662
3663### thread version
3664
3665Get the Thread Version number.
3666
3667```bash
3668> thread version
36692
3670Done
3671```
3672
3673### timeinqueue
3674
3675Print the tx queue time-in-queue histogram.
3676
3677Requires `OPENTHREAD_CONFIG_TX_QUEUE_STATISTICS_ENABLE`.
3678
3679The time-in-queue is tracked for direct transmissions only and is measured as the duration from when a message is added to the transmit queue until it is passed to the MAC layer for transmission or dropped.
3680
3681Each table row shows min and max time-in-queue (in milliseconds) followed by number of messages with time-in-queue within the specified min-max range. The histogram information is collected since the OpenThread instance was initialized or since the last time statistics collection was reset by the `timeinqueue reset` command.
3682
3683The collected statistics can be reset by `timeinqueue reset`.
3684
3685```bash
3686> timeinqueue
3687| Min  | Max  |Msg Count|
3688+------+------+---------+
3689|    0 |    9 |    1537 |
3690|   10 |   19 |     156 |
3691|   20 |   29 |      57 |
3692|   30 |   39 |     108 |
3693|   40 |   49 |      60 |
3694|   50 |   59 |      76 |
3695|   60 |   69 |      88 |
3696|   70 |   79 |      51 |
3697|   80 |   89 |      86 |
3698|   90 |   99 |      45 |
3699|  100 |  109 |      43 |
3700|  110 |  119 |      44 |
3701|  120 |  129 |      38 |
3702|  130 |  139 |      44 |
3703|  140 |  149 |      35 |
3704|  150 |  159 |      41 |
3705|  160 |  169 |      34 |
3706|  170 |  179 |      13 |
3707|  180 |  189 |      24 |
3708|  190 |  199 |       3 |
3709|  200 |  209 |       0 |
3710|  210 |  219 |       0 |
3711|  220 |  229 |       2 |
3712|  230 |  239 |       0 |
3713|  240 |  249 |       0 |
3714|  250 |  259 |       0 |
3715|  260 |  269 |       0 |
3716|  270 |  279 |       0 |
3717|  280 |  289 |       0 |
3718|  290 |  299 |       1 |
3719|  300 |  309 |       0 |
3720|  310 |  319 |       0 |
3721|  320 |  329 |       0 |
3722|  330 |  339 |       0 |
3723|  340 |  349 |       0 |
3724|  350 |  359 |       0 |
3725|  360 |  369 |       0 |
3726|  370 |  379 |       0 |
3727|  380 |  389 |       0 |
3728|  390 |  399 |       0 |
3729|  400 |  409 |       0 |
3730|  410 |  419 |       0 |
3731|  420 |  429 |       0 |
3732|  430 |  439 |       0 |
3733|  440 |  449 |       0 |
3734|  450 |  459 |       0 |
3735|  460 |  469 |       0 |
3736|  470 |  479 |       0 |
3737|  480 |  489 |       0 |
3738|  490 |  inf |       0 |
3739Done
3740```
3741
3742### timeinqueue max
3743
3744Print the maximum observed time-in-queue in milliseconds.
3745
3746Requires `OPENTHREAD_CONFIG_TX_QUEUE_STATISTICS_ENABLE`.
3747
3748The time-in-queue is tracked for direct transmissions only and is measured as the duration from when a message is added to the transmit queue until it is passed to the MAC layer for transmission or dropped.
3749
3750```bash
3751> timeinqueue max
3752291
3753```
3754
3755### timeinqueue reset
3756
3757Reset the TX queue time-in-queue statistics.
3758
3759```bash
3760> timeinqueue reset
3761Done
3762```
3763
3764### trel
3765
3766Indicate whether TREL radio operation is enabled or not.
3767
3768`OPENTHREAD_CONFIG_RADIO_LINK_TREL_ENABLE` is required for all `trel` sub-commands.
3769
3770```bash
3771> trel
3772Enabled
3773Done
3774```
3775
3776### trel enable
3777
3778Enable TREL operation.
3779
3780```bash
3781> trel enable
3782Done
3783```
3784
3785### trel disable
3786
3787Disable TREL operation.
3788
3789```bash
3790> trel disable
3791Done
3792```
3793
3794### trel filter
3795
3796Indicate whether TREL filter mode is enabled or not
3797
3798When filter mode is enabled, any rx and tx traffic through TREL interface is silently dropped. This is mainly intended for use during testing.
3799
3800```bash
3801> trel filter
3802Disabled
3803Done
3804```
3805
3806### trel filter enable
3807
3808Enable TREL filter mode.
3809
3810```bash
3811> trel filter enable
3812Done
3813```
3814
3815### trel filter disable
3816
3817Disable TREL filter mode.
3818
3819```bash
3820> trel filter disable
3821Done
3822```
3823
3824### trel peers [list]
3825
3826Get the TREL peer table in table format or as a list.
3827
3828```bash
3829> trel peers
3830| No  | Ext MAC Address  | Ext PAN Id       | IPv6 Socket Address                              |
3831+-----+------------------+------------------+--------------------------------------------------+
3832|   1 | 5e5785ba3a63adb9 | f0d9c001f00d2e43 | [fe80:0:0:0:cc79:2a29:d311:1aea]:9202            |
3833|   2 | ce792a29d3111aea | dead00beef00cafe | [fe80:0:0:0:5c57:85ba:3a63:adb9]:9203            |
3834Done
3835
3836> trel peers list
3837001 ExtAddr:5e5785ba3a63adb9 ExtPanId:f0d9c001f00d2e43 SockAddr:[fe80:0:0:0:cc79:2a29:d311:1aea]:9202
3838002 ExtAddr:ce792a29d3111aea ExtPanId:dead00beef00cafe SockAddr:[fe80:0:0:0:5c57:85ba:3a63:adb9]:9203
3839Done
3840```
3841
3842### tvcheck enable
3843
3844Enable thread version check when upgrading to router or leader.
3845
3846Note: Thread version check is enabled by default.
3847
3848`OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE` is required.
3849
3850```bash
3851> tvcheck enable
3852Done
3853```
3854
3855### tvcheck disable
3856
3857Disable thread version check when upgrading to router or leader.
3858
3859Note: Thread version check is enabled by default.
3860
3861`OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE` is required.
3862
3863```bash
3864> tvcheck disable
3865Done
3866```
3867
3868### txpower
3869
3870Get the transmit power in dBm.
3871
3872```bash
3873> txpower
3874-10 dBm
3875Done
3876```
3877
3878### txpower \<txpower\>
3879
3880Set the transmit power in dBm.
3881
3882```bash
3883> txpower -10
3884Done
3885```
3886
3887### unsecureport add \<port\>
3888
3889Add a port to the allowed unsecured port list.
3890
3891```bash
3892> unsecureport add 1234
3893Done
3894```
3895
3896### unsecureport remove \<port\>
3897
3898Remove a port from the allowed unsecured port list.
3899
3900```bash
3901> unsecureport remove 1234
3902Done
3903```
3904
3905### unsecureport remove all
3906
3907Remove all ports from the allowed unsecured port list.
3908
3909```bash
3910> unsecureport remove all
3911Done
3912```
3913
3914### unsecureport get
3915
3916Print all ports from the allowed unsecured port list.
3917
3918```bash
3919> unsecureport get
39201234
3921Done
3922```
3923
3924### uptime
3925
3926This command requires `OPENTHREAD_CONFIG_UPTIME_ENABLE` to be enabled.
3927
3928Print the OpenThread stack uptime (duration since OpenThread stack initialization).
3929
3930```bash
3931> uptime
393212:46:35.469
3933Done
3934>
3935```
3936
3937### uptime ms
3938
3939This command requires `OPENTHREAD_CONFIG_UPTIME_ENABLE` to be enabled.
3940
3941Print the OpenThread stack uptime in msec.
3942
3943```bash
3944> uptime ms
3945426238
3946Done
3947>
3948```
3949
3950### vendor name
3951
3952Get the vendor name.
3953
3954```bash
3955> vendor name
3956nest
3957Done
3958```
3959
3960Set the vendor name (requires `OPENTHREAD_CONFIG_NET_DIAG_VENDOR_INFO_SET_API_ENABLE`).
3961
3962```bash
3963> vendor name nest
3964Done
3965```
3966
3967### vendor model
3968
3969Get the vendor model.
3970
3971```bash
3972> vendor model
3973Hub Max
3974Done
3975```
3976
3977Set the vendor model (requires `OPENTHREAD_CONFIG_NET_DIAG_VENDOR_INFO_SET_API_ENABLE`).
3978
3979```bash
3980> vendor model Hub\ Max
3981Done
3982```
3983
3984### vendor swversion
3985
3986Get the vendor SW version.
3987
3988```bash
3989> vendor swversion
3990Marble3.5.1
3991Done
3992```
3993
3994Set the vendor SW version (requires `OPENTHREAD_CONFIG_NET_DIAG_VENDOR_INFO_SET_API_ENABLE`).
3995
3996```bash
3997> vendor swversion Marble3.5.1
3998Done
3999```
4000
4001### verhoeff calculate
4002
4003Calculates the Verhoeff checksum for a given decimal string.
4004
4005Requires `OPENTHREAD_CONFIG_VERHOEFF_CHECKSUM_ENABLE`.
4006
4007The input string MUST consist of characters in `['0'-'9']`.
4008
4009```bash
4010> verhoeff calculate 30731842
40111
4012Done
4013```
4014
4015### verhoeff validate
4016
4017Validates the Verhoeff checksum for a given decimal string.
4018
4019Requires `OPENTHREAD_CONFIG_VERHOEFF_CHECKSUM_ENABLE`.
4020
4021The input string MUST consist of characters in `['0'-'9']`. The last digit is treated as checksum.
4022
4023```bash
4024> verhoeff validate 307318421
4025Done
4026> verhoeff validate 307318425
4027Error 1: Failed
4028```
4029
4030### version
4031
4032Print the build version information.
4033
4034```bash
4035> version
4036OPENTHREAD/gf4f2f04; Jul  1 2016 17:00:09
4037Done
4038```
4039
4040### version api
4041
4042Print API version number.
4043
4044```bash
4045> version api
404628
4047Done
4048```
4049
4050### mac retries direct
4051
4052Get the number of direct TX retries on the MAC layer.
4053
4054```bash
4055> mac retries direct
40563
4057Done
4058```
4059
4060### mac retries direct \<number\>
4061
4062Set the number of direct TX retries on the MAC layer.
4063
4064```bash
4065> mac retries direct 5
4066Done
4067```
4068
4069### mac retries indirect
4070
4071Get the number of indirect TX retries on the MAC layer.
4072
4073```bash
4074> mac retries indirect
40753
4076Done
4077```
4078
4079### mac retries indirect \<number\>
4080
4081Set the number of indirect TX retries on the MAC layer.
4082
4083```bash
4084> mac retries indirect 5
4085Done
4086```
4087
4088### mac send \<op\>
4089
4090Instruct an Rx-Off-When-Idle device to send a mac frame to its parent. The mac frame could be either a mac data request or an empty mac data frame. Use `datarequest` to send a mac data request and `data` to send an empty mac data. This feature is for certification, it can only be used when `OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE` is enabled.
4091
4092```bash
4093> mac send datarequest
4094Done
4095```
4096
4097```bash
4098> mac send emptydata
4099Done
4100```
4101
4102### macfilter
4103
4104List the macfilter status, including address and received signal strength filter settings.
4105
4106```bash
4107> macfilter
4108Address Mode: Allowlist
41090f6127e33af6b403 : rss -95 (lqi 1)
41100f6127e33af6b402
4111RssIn List:
41120f6127e33af6b403 : rss -95 (lqi 1)
4113Default rss: -50 (lqi 3)
4114Done
4115```
4116
4117### macfilter addr
4118
4119List the address filter status.
4120
4121```bash
4122> macfilter addr
4123Allowlist
41240f6127e33af6b403 : rss -95 (lqi 1)
41250f6127e33af6b402
4126Done
4127```
4128
4129### macfilter addr disable
4130
4131Disable address filter mode.
4132
4133```bash
4134> macfilter addr disable
4135Done
4136```
4137
4138### macfilter addr allowlist
4139
4140Enable allowlist address filter mode.
4141
4142```bash
4143> macfilter addr allowlist
4144Done
4145```
4146
4147### macfilter addr denylist
4148
4149Enable denylist address filter mode.
4150
4151```bash
4152> macfilter addr denylist
4153Done
4154```
4155
4156### macfilter addr add \<extaddr\> \[rss\]
4157
4158Add an IEEE 802.15.4 Extended Address to the address filter, and fixed the received signal strength for the messages from the address if rss is specified.
4159
4160```bash
4161> macfilter addr add 0f6127e33af6b403 -95
4162Done
4163```
4164
4165```bash
4166> macfilter addr add 0f6127e33af6b402
4167Done
4168```
4169
4170### macfilter addr remove \<extaddr\>
4171
4172Remove the IEEE802.15.4 Extended Address from the address filter.
4173
4174```bash
4175> macfilter addr remove 0f6127e33af6b402
4176Done
4177```
4178
4179### macfilter addr clear
4180
4181Clear all the IEEE802.15.4 Extended Addresses from the address filter.
4182
4183```bash
4184> macfilter addr clear
4185Done
4186```
4187
4188### macfilter rss
4189
4190List the rss filter status
4191
4192```bash
4193> macfilter rss
41940f6127e33af6b403 : rss -95 (lqi 1)
4195Default rss: -50 (lqi 3)
4196Done
4197```
4198
4199### macfilter rss add \<extaddr\> \<rss\>
4200
4201Set the received signal strength for the messages from the IEEE802.15.4 Extended Address. If extaddr is \*, default received signal strength for all received messages would be set.
4202
4203```bash
4204> macfilter rss add * -50
4205Done
4206```
4207
4208```bash
4209> macfilter rss add 0f6127e33af6b404 -85
4210Done
4211```
4212
4213### macfilter rss add-lqi \<extaddr\> \<lqi\>
4214
4215Set the received link quality for the messages from the IEEE802.15.4 Extended Address. Valid lqi range [0,3] If extaddr is \*, default received link quality for all received messages would be set. Equivalent with 'filter rss add' with similar usage
4216
4217```bash
4218> macfilter rss add-lqi * 3
4219Done
4220```
4221
4222```bash
4223> macfilter rss add-lqi 0f6127e33af6b404 2
4224Done
4225```
4226
4227### macfilter rss remove \<extaddr\>
4228
4229Removes the received signal strength or received link quality setting on the Extended Address. If extaddr is \*, default received signal strength or link quality for all received messages would be unset.
4230
4231```bash
4232> macfilter rss remove *
4233Done
4234```
4235
4236```bash
4237> macfilter rss remove 0f6127e33af6b404
4238Done
4239```
4240
4241### macfilter rss clear
4242
4243Clear all the received signal strength or received link quality settings.
4244
4245```bash
4246> macfilter rss clear
4247Done
4248```
4249
4250### diag
4251
4252Factory Diagnostics module is enabled only when building OpenThread with `OPENTHREAD_CONFIG_DIAG_ENABLE=1` option. Go [diagnostics module][diag] for more information.
4253
4254[diag]: ../../src/core/diags/README.md
4255

README_BR.md

1# OpenThread CLI - Border Router (BR)
2
3## Command List
4
5Usage : `br [command] ...`
6
7- [counters](#counters)
8- [disable](#disable)
9- [enable](#enable)
10- [help](#help)
11- [init](#init)
12- [nat64prefix](#nat64prefix)
13- [omrprefix](#omrprefix)
14- [onlinkprefix](#onlinkprefix)
15- [pd](#pd)
16- [prefixtable](#prefixtable)
17- [rioprf](#rioprf)
18- [routeprf](#routeprf)
19- [routers](#routers)
20- [state](#state)
21
22## Command Details
23
24### help
25
26Usage: `br help`
27
28Print BR command help menu.
29
30```bash
31> br help
32counters
33disable
34enable
35omrprefix
36onlinkprefix
37pd
38prefixtable
39raoptions
40rioprf
41routeprf
42routers
43state
44Done
45```
46
47### init
48
49Usage: `br init <interface> <enabled>`
50
51Initializes the Border Routing Manager on given infrastructure interface.
52
53```bash
54> br init 2 1
55Done
56```
57
58### enable
59
60Usage: `br enable`
61
62Enable the Border Routing functionality.
63
64```bash
65> br enable
66Done
67```
68
69### disable
70
71Usage: `br disable`
72
73Disable the Border Routing functionality.
74
75```bash
76> br disable
77Done
78```
79
80### state
81
82Usage: `br state`
83
84Get the Border Routing state:
85
86- `uninitialized`: Routing Manager is uninitialized.
87- `disabled`: Routing Manager is initialized but disabled.
88- `stopped`: Routing Manager in initialized and enabled but currently stopped.
89- `running`: Routing Manager is initialized, enabled, and running.
90
91```bash
92> br state
93running
94```
95
96### counters
97
98Usage : `br counters`
99
100Get the Border Router counter.
101
102```bash
103> br counters
104Inbound Unicast: Packets 4 Bytes 320
105Inbound Multicast: Packets 0 Bytes 0
106Outbound Unicast: Packets 2 Bytes 160
107Outbound Multicast: Packets 0 Bytes 0
108RA Rx: 4
109RA TxSuccess: 2
110RA TxFailed: 0
111RS Rx: 0
112RS TxSuccess: 2
113RS TxFailed: 0
114Done
115```
116
117### omrprefix
118
119Usage: `br omrprefix [local|favored]`
120
121Get local or favored or both off-mesh-routable prefixes of the Border Router.
122
123```bash
124> br omrprefix
125Local: fdfc:1ff5:1512:5622::/64
126Favored: fdfc:1ff5:1512:5622::/64 prf:low
127Done
128
129> br omrprefix favored
130fdfc:1ff5:1512:5622::/64 prf:low
131Done
132
133> br omrprefix local
134fdfc:1ff5:1512:5622::/64
135Done
136```
137
138### onlinkprefix
139
140Usage: `br onlinkprefix [local|favored]`
141
142Get local or favored or both on-link prefixes of the Border Router.
143
144```bash
145> br onlinkprefix
146Local: fd41:2650:a6f5:0::/64
147Favored: 2600::0:1234:da12::/64
148Done
149
150> br onlinkprefix favored
1512600::0:1234:da12::/64
152Done
153
154> br onlinkprefix local
155fd41:2650:a6f5:0::/64
156Done
157```
158
159### nat64prefix
160
161Usage: `br nat64prefix [local|favored]`
162
163Get local or favored or both NAT64 prefixes of the Border Router.
164
165`OPENTHREAD_CONFIG_NAT64_BORDER_ROUTING_ENABLE` is required.
166
167```bash
168> br nat64prefix
169Local: fd14:1078:b3d5:b0b0:0:0::/96
170Favored: fd14:1078:b3d5:b0b0:0:0::/96 prf:low
171Done
172
173> br nat64prefix favored
174fd14:1078:b3d5:b0b0:0:0::/96 prf:low
175Done
176
177> br nat64prefix
178fd14:1078:b3d5:b0b0:0:0::/96
179Done
180```
181
182### pd
183
184Usage: `br pd [enable|disable]`
185
186Enable/Disable the DHCPv6 PD.
187
188```bash
189> br pd enable
190Done
191
192> br pd disable
193Done
194```
195
196Usage: `br pd state`
197
198Get the state of DHCPv6 PD.
199
200`OPENTHREAD_CONFIG_BORDER_ROUTING_DHCP6_PD_ENABLE` is required.
201
202- `disabled`: DHCPv6 PD is disabled on the border router.
203- `stopped`: DHCPv6 PD in enabled but won't try to request and publish a prefix.
204- `running`: DHCPv6 PD is enabled and will try to request and publish a prefix.
205
206```bash
207> br pd state
208running
209Done
210```
211
212Usage `br pd omrprefix`
213
214Get the DHCPv6 Prefix Delegation (PD) provided off-mesh-routable (OMR) prefix.
215
216`OPENTHREAD_CONFIG_BORDER_ROUTING_DHCP6_PD_ENABLE` is required.
217
218```bash
219> br pd omrprefix
2202001:db8:cafe:0:0/64 lifetime:1800 preferred:1800
221Done
222```
223
224### prefixtable
225
226Usage: `br prefixtable`
227
228Get the discovered prefixes by Border Routing Manager on the infrastructure link.
229
230Info per prefix entry:
231
232- The prefix
233- Whether the prefix is on-link or route
234- Milliseconds since last received Router Advertisement containing this prefix
235- Prefix lifetime in seconds
236- Preferred lifetime in seconds only if prefix is on-link
237- Route preference (low, med, high) only if prefix is route (not on-link)
238- The router IPv6 address which advertising this prefix
239- Flags in received Router Advertisement header:
240  - M: Managed Address Config flag
241  - O: Other Config flag
242  - Stub: Stub Router flag (indicates whether the router is a stub router)
243
244```bash
245> br prefixtable
246prefix:fd00:1234:5678:0::/64, on-link:no, ms-since-rx:29526, lifetime:1800, route-prf:med, router:ff02:0:0:0:0:0:0:1 (M:0 O:0 Stub:1)
247prefix:1200:abba:baba:0::/64, on-link:yes, ms-since-rx:29527, lifetime:1800, preferred:1800, router:ff02:0:0:0:0:0:0:1 (M:0 O:0 Stub:1)
248Done
249```
250
251### raoptions
252
253Usage: `br raoptions <options>`
254
255Sets additional options to append at the end of emitted Router Advertisement (RA) messages. `<options>` provided as hex bytes.
256
257```bash
258> br raoptions 0400ff00020001
259Done
260```
261
262### raoptions clear
263
264Usage: `br raoptions clear`
265
266Clear any previously set additional options to append at the end of emitted Router Advertisement (RA) messages.
267
268```bash
269> br raoptions clear
270Done
271```
272
273### rioprf
274
275Usage: `br rioprf`
276
277Get the preference used when advertising Route Info Options (e.g., for discovered OMR prefixes) in emitted Router Advertisement message.
278
279```bash
280> br rioprf
281med
282Done
283```
284
285### rioprf \<prf\>
286
287Usage: `br rioprf high|med|low`
288
289Set the preference (which may be 'high', 'med', or 'low') to use when advertising Route Info Options (e.g., for discovered OMR prefixes) in emitted Router Advertisement message.
290
291```bash
292> br rioprf low
293Done
294```
295
296### rioprf clear
297
298Usage: `br rioprf clear`
299
300Clear a previously set preference value for advertising Route Info Options (e.g., for discovered OMR prefixes) in emitted Router Advertisement message. When cleared BR will use device's role to determine the RIO preference: Medium preference when in router/leader role and low preference when in child role.
301
302```bash
303> br rioprf clear
304Done
305```
306
307### routeprf
308
309Usage: `br routeprf`
310
311Get the preference used for publishing routes in Thread Network Data. This may be the automatically determined route preference, or an administratively set fixed route preference - if applicable.
312
313```bash
314> br routeprf
315med
316Done
317```
318
319### routeprf \<prf\>
320
321Usage: `br routeprf high|med|low`
322
323Set the preference (which may be 'high', 'med', or 'low') to use publishing routes in Thread Network Data. Setting a preference value overrides the automatic route preference determination. It is used only for an explicit administrative configuration of a Border Router.
324
325```bash
326> br routeprf low
327Done
328```
329
330### routeprf clear
331
332Usage: `br routeprf clear`
333
334Clear a previously set preference value for publishing routes in Thread Network Data. When cleared BR will automatically determine the route preference based on device's role and link quality to parent (when acting as end-device).
335
336```bash
337> br routeprf clear
338Done
339```
340
341### routers
342
343Usage: `br routers`
344
345Get the list of discovered routers by Border Routing Manager on the infrastructure link.
346
347Info per router:
348
349- The router IPv6 address
350- Flags in received Router Advertisement header:
351  - M: Managed Address Config flag
352  - O: Other Config flag
353  - Stub: Stub Router flag (indicates whether the router is a stub router)
354- Milliseconds since last received message from this router
355
356```bash
357> br routers
358ff02:0:0:0:0:0:0:1 (M:0 O:0 Stub:1) ms-since-rx:1505
359Done
360```
361

README_COAP.md

1# OpenThread CLI - CoAP Example
2
3The OpenThread CoAP APIs may be invoked via the OpenThread CLI.
4
5## Quick Start
6
7### Form Network
8
9Form a network with at least two devices.
10
11### Node 1
12
13On node 1, setup CoAP server with resource `test-resource`.
14
15```bash
16> coap start
17Done
18> coap resource test-resource
19Done
20```
21
22### Node 2
23
24```bash
25> coap start
26Done
27> coap get fdde:ad00:beef:0:d395:daee:a75:3964 test-resource
28Done
29coap response from [fdde:ad00:beef:0:2780:9423:166c:1aac] with payload: 30
30> coap put fdde:ad00:beef:0:2780:9423:166c:1aac test-resource con payload
31Done
32coap response from [fdde:ad00:beef:0:2780:9423:166c:1aac]
33```
34
35### Result
36
37On node 1, you should see output similar to below:
38
39```bash
40coap request from [fdde:ad00:beef:0:b3:e3f6:2dcc:4b79] GET
41coap response sent
42coap request from [fdde:ad00:beef:0:b3:e3f6:2dcc:4b79] PUT with payload: 7061796c6f6164
43coap response sent
44```
45
46## Command List
47
48- [help](#help)
49- [cancel](#cancel)
50- [delete](#delete-address-uri-path-type-payload)
51- [get](#get-address-uri-path-type)
52- [observe](#observe-address-uri-path-type)
53- [parameters](#parameters)
54- [post](#post-address-uri-path-type-payload)
55- [put](#put-address-uri-path-type-payload)
56- [resource](#resource-uri-path)
57- [set](#set-new-content)
58- [start](#start)
59- [stop](#stop)
60
61## Command Details
62
63### help
64
65```bash
66> coap help
67help
68cancel
69delete
70get
71observe
72parameters
73post
74put
75resource
76set
77start
78stop
79Done
80```
81
82List the CoAP CLI commands.
83
84### cancel
85
86Request the cancellation of an existing observation subscription to a remote resource.
87
88```bash
89> coap cancel
90Done
91```
92
93### delete \<address\> \<uri-path\> \[type\] \[payload\]
94
95- address: IPv6 address of the CoAP server.
96- uri-path: URI path of the resource.
97- type: "con" for Confirmable or "non-con" for Non-confirmable (default).
98- payload: CoAP request payload.
99
100```bash
101> coap delete fdde:ad00:beef:0:2780:9423:166c:1aac test-resource con payload
102Done
103```
104
105### get \<address\> \<uri-path\> \[type\]
106
107- address: IPv6 address of the CoAP server.
108- uri-path: URI path of the resource.
109- type: "con" for Confirmable or "non-con" for Non-confirmable (default). Use "block-<block-size>" if the response should be transferred block-wise. ("block-16","block-32","block-64","block-128","block-256","block-512","block-1024")
110
111```bash
112> coap get fdde:ad00:beef:0:2780:9423:166c:1aac test-resource
113Done
114```
115
116```bash
117> coap get fdde:ad00:beef:0:2780:9423:166c:1aac test-resource block-1024
118Done
119```
120
121### observe \<address\> \<uri-path\> \[type\]
122
123This is the same a `get`, but the `Observe` parameter will be sent, set to 0 triggering a subscription request.
124
125- address: IPv6 address of the CoAP server.
126- uri-path: URI path of the resource.
127- type: "con" for Confirmable or "non-con" for Non-confirmable (default).
128
129```bash
130> coap observe fdde:ad00:beef:0:2780:9423:166c:1aac test-resource
131Done
132```
133
134### parameters \<type\> \["default"|<ack_timeout\> <ack_random_factor_numerator\> <ack_random_factor_denominator\> <max_retransmit\>\]
135
136Sets transmission parameters for the following interactions.
137
138- type: "request" for CoAP requests and "response" for CoAP responses.
139
140If no more parameters are given, the command prints the current configuration:
141
142```bash
143> coap parameters request
144Transmission parameters for request:
145ACK_TIMEOUT=1000 ms, ACK_RANDOM_FACTOR=255/254, MAX_RETRANSMIT=2
146Done
147```
148
149If `"default"` is given, the command sets the default configuration for the transmission parameters.
150
151```bash
152> coap parameters request default
153Transmission parameters for request:
154default
155Done
156```
157
158Also, you can specify the transmission parameters in the command line:
159
160- ack_timeout (0~UINT32_MAX): RFC7252 ACK_TIMEOUT, in milliseconds.
161- ack_random_factor_numerator, ack_random_factor_denominator (0~255): RFC7252 ACK_RANDOM_FACTOR=ack_random_factor_numerator/ack_random_factor_denominator.
162- max_retransmit (0~255): RFC7252 MAX_RETRANSMIT.
163
164```bash
165> coap parameters request 1000 255 254 2
166Transmission parameters for request:
167ACK_TIMEOUT=1000 ms, ACK_RANDOM_FACTOR=255/254, MAX_RETRANSMIT=2
168Done
169```
170
171### post \<address\> \<uri-path\> \[type\] \[payload\]
172
173- address: IPv6 address of the CoAP server.
174- uri-path: URI path of the resource.
175- type: "con" for Confirmable or "non-con" for Non-confirmable (default). Use "block-<block-size>" to send blocks with random payload. ("block-16","block-32","block-64","block-128","block-256","block-512","block-1024")
176- payload: CoAP request payload. If \[type\] is "block-<block-size>", the amount of blocks to be sent can be set here.
177
178```bash
179> coap post fdde:ad00:beef:0:2780:9423:166c:1aac test-resource con payload
180Done
181```
182
183```bash
184> coap post fdde:ad00:beef:0:2780:9423:166c:1aac test-resource block-1024 10
185Done
186```
187
188### put \<address\> \<uri-path\> \[type\] \[payload\]
189
190- address: IPv6 address of the CoAP server.
191- uri-path: URI path of the resource.
192- type: "con" for Confirmable or "non-con" for Non-confirmable (default). Use "block-<block-size>" to send blocks with random payload. ("block-16","block-32","block-64","block-128","block-256","block-512","block-1024")
193- payload: CoAP request payload. If \[type\] is "block-<block-size>", the amount of blocks to be sent can be set here.
194
195```bash
196> coap put fdde:ad00:beef:0:2780:9423:166c:1aac test-resource con payload
197Done
198```
199
200```bash
201> coap put fdde:ad00:beef:0:2780:9423:166c:1aac test-resource block-1024 10
202Done
203```
204
205### resource \[uri-path\]
206
207Sets the URI path for the test resource.
208
209```bash
210> coap resource test-resource
211Done
212> coap resource
213test-resource
214Done
215```
216
217### set \[new-content\]
218
219Sets the content sent by the test resource. If a CoAP client is observing the resource, a notification is sent to that client.
220
221```bash
222> coap set Testing123
223Done
224```
225
226### start
227
228Starts the application coap service.
229
230```bash
231> coap start
232Done
233```
234
235### stop
236
237Stops the application coap service.
238
239```bash
240> coap stop
241Done
242```
243

README_COAPS.md

1# OpenThread CLI - CoAPS Example
2
3The OpenThread CoAPS APIs may be invoked via the OpenThread CLI.
4
5## Quick Start
6
7### Form Network
8
9Form a network with at least two devices.
10
11### Configure DTLS ciphersuite.
12
13CoAPS uses DTLS to establish a secure, end-to-end connection.
14
15This example supports two ciphersuites:
16
17- TLS_PSK_WITH_AES_128_CCM_8
18
19  ```bash
20  > coaps psk <your-psk> <your-psk-id>
21  Done
22  ```
23
24- TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8
25  ```bash
26  > coaps x509
27  Done
28  ```
29  The X.509 certificate stored in `core/cli/x509_cert_key.hpp`.
30
31### Node 1
32
33On node 1, setup CoAPS server with resource `test-resource`.
34
35```bash
36> coaps start
37Done
38> coaps resource test-resource
39Done
40```
41
42### Node 2
43
44```bash
45> coaps start
46Done
47> coaps connect <peer-ip6-address>
48Done
49coaps connected
50> coaps get test-resource
51Done
52coaps response from fdde:ad00:beef:0:9903:14b:27e0:5744 with payload: 68656c6c6f576f726c6400
53> coaps put test-resource con payload
54Done
55coaps response from fdde:ad00:beef:0:9903:14b:27e0:5744
56```
57
58### Result
59
60On node 1, you should see output similar to below:
61
62```bash
63coaps request from fdde:ad00:beef:0:9e68:576f:714c:f395 GET
64coaps response sent
65coaps request from fdde:ad00:beef:0:9e68:576f:714c:f395 PUT with payload: 7061796c6f6164
66coaps response sent
67```
68
69## Generate Elliptic Curve Private Key and X.509 Certificate
70
71### EC Private Key
72
73```bash
74> openssl ecparam -genkey -name prime256v1 -noout -out ec_private.pem
75```
76
77### X.509 Certificate
78
79```bash
80> openssl req -x509 -new -key ec_private.pem -out x509_cert.pem -days 30
81```
82
83## Command List
84
85- [help](#help)
86- [connect](#connect-address)
87- [delete](#delete-uri-path-type-payload)
88- [disconnect](#disconnect)
89- [get](#get-uri-path-type)
90- [isclosed](#isclosed)
91- [isconnactive](#isconnactive)
92- [isconnected](#isconnected)
93- [post](#post-uri-path-type-payload)
94- [psk](#psk-psk-pskid)
95- [put](#put-uri-path-type-payload)
96- [resource](#resource-uri-path)
97- [set](#set-new-content)
98- [start](#start)
99- [stop](#stop)
100- [x509](#x509)
101
102## Command Details
103
104### help
105
106```bash
107> coaps help
108connect
109delete
110disconnect
111get
112isclosed
113isconnactive
114isconnected
115post
116psk
117put
118resource
119set
120start
121stop
122x509
123Done
124```
125
126List the CoAPS CLI commands.
127
128### connect \<address\>
129
130Establish DTLS session.
131
132- address: IPv6 address of the peer.
133
134```bash
135> coaps connect fdde:ad00:beef:0:9903:14b:27e0:5744
136Done
137coaps connected
138```
139
140### delete \<uri-path\> \[type\] \[payload\]
141
142- uri-path: URI path of the resource.
143- type: "con" for Confirmable or "non-con" for Non-confirmable (default).
144- payload: CoAPS request payload.
145
146```bash
147> coaps delete test-resource con payload
148Done
149```
150
151### disconnect
152
153```bash
154> coaps disconnect
155coaps disconnected
156Done
157```
158
159### get \<uri-path\> \[type\]
160
161- uri-path: URI path of the resource.
162- type: "con" for Confirmable or "non-con" for Non-confirmable (default). Use "block-<block-size>" if the response should be transferred block-wise. ("block-16","block-32","block-64","block-128","block-256","block-512","block-1024")
163
164```bash
165> coaps get test-resource
166Done
167```
168
169```bash
170> coaps get test-resource block-1024
171Done
172```
173
174### post \<uri-path\> \[type\] \[payload\]
175
176- uri-path: URI path of the resource.
177- type: "con" for Confirmable or "non-con" for Non-confirmable (default). Use "block-<block-size>" to send blocks with random payload. ("block-16","block-32","block-64","block-128","block-256","block-512","block-1024")
178- payload: CoAP request payload. If \[type\] is "block-<block-size>", the amount of blocks to be sent can be set here.
179
180```bash
181> coaps post test-resource con payload
182Done
183```
184
185```bash
186> coaps post test-resource block-1024 10
187Done
188```
189
190### psk \<psk\> \<pskid\>
191
192Set DTLS ciphersuite to `TLS_PSK_WITH_AES_128_CCM_8`.
193
194- psk: pre-shared key
195- pskid: pre-shared key identifier
196
197```bash
198> coaps psk 123 pskid
199Done
200```
201
202### put \<uri-path\> \[type\] \[payload\]
203
204- uri-path: URI path of the resource.
205- type: "con" for Confirmable or "non-con" for Non-confirmable (default). Use "block-<block-size>" to send blocks with random payload. ("block-16","block-32","block-64","block-128","block-256","block-512","block-1024")
206- payload: CoAP request payload. If \[type\] is "block-<block-size>", the amount of blocks to be sent can be set here.
207
208```bash
209> coaps put test-resource con payload
210Done
211```
212
213```bash
214> coaps put test-resource block-1024 10
215Done
216```
217
218### resource \[uri-path\]
219
220Sets the URI path for the test resource.
221
222```bash
223> coaps resource test-resource
224Done
225> coaps resource
226test-resource
227Done
228```
229
230### set \[new-content\]
231
232Sets the content sent by the test resource.
233
234```bash
235> coaps set Testing123
236Done
237```
238
239### start \[check-peer-cert\|max-conn-attempts\]
240
241Starts the application coaps service.
242
243The `check-peer-cert` parameter determines if the peer-certificate check is enabled (default) or disabled. The `max-conn-attempts` parameter sets the maximum number of allowed attempts, successful or failed, to connect to the CoAP Secure server. The default value of this parameter is 0, which means that there is no limit to the number of attempts. The `check-peer-cert` and `max-conn-attempts` parameters work together in the following combinations, even though you can only specify one argument:
244
245- No argument specified: Defaults are used.
246- Setting `check-peer-cert` to `true`: Has the same effect as as omitting the argument, which is that the `check-peer-cert` value is `true`, and the `max-conn-attempts` value is 0.
247- Setting `check-peer-cert` to `false`: `check-peer-cert` value is `false`, and the `max-conn-attempts` value is `0`.
248- Specifying a number: `check-peer-cert` is `true`, and the `max-conn-attempts` value is the number specified in the argument.
249
250```bash
251> coaps start
252Done
253```
254
255### stop
256
257Stops the application coaps service.
258
259```bash
260> coaps stop
261Done
262```
263
264### isconnected
265
266Indicates whether or not the CoAP secure service is connected.
267
268```bash
269> coaps isconnected
270yes
271Done
272```
273
274### isconnactive
275
276Indicates whether or not the CoAP secure service connection is active (already connected or establishing a connection).
277
278```bash
279> coaps isconnactive
280yes
281Done
282```
283
284### isclosed
285
286Indicates whether or not the CoAP secure service is closed.
287
288```bash
289> coaps isclosed
290no
291Done
292```
293
294### x509
295
296Set DTLS ciphersuite to `TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8`.
297
298The X.509 certificate stored in [`src/cli/x509_cert_key.hpp`](x509_cert_key.hpp).
299
300```bash
301> coaps x509
302Done
303```
304

README_COMMISSIONER.md

1# OpenThread CLI - Commissioner
2
3## Overview
4
5The Commissioner is an entity that can add new Thread devices securely to a Thread network. It also can manage a Thread network by changing network configuration parameters ([Operational Datasets](README_DATASET.md)) or sending specific management/diagnostic commands to selected Thread devices. Before a Commissioner can do its tasks, it has to petition to the Leader to get permission to become the Commissioner.
6
7## Quick Start
8
9See [README_COMMISSIONING.md](README_COMMISSIONING.md).
10
11## Command List
12
13- [help](#help)
14- [announce](#announce)
15- [energy](#energy)
16- [joiner add](#joiner-add)
17- [joiner remove](#joiner-remove)
18- [joiner table](#joiner-table)
19- [mgmtget](#mgmtget)
20- [mgmtset](#mgmtset)
21- [panid](#panid)
22- [provisioningurl](#provisioningurl)
23- [sessionid](#sessionid)
24- [start](#start)
25- [state](#state)
26- [stop](#stop)
27
28## Command Details
29
30### help
31
32Usage: `commissioner help`
33
34Print commissioner help menu.
35
36```bash
37> commissioner help
38help
39announce
40energy
41joiner
42mgmtget
43mgmtset
44panid
45provisioningurl
46sessionid
47start
48stop
49Done
50```
51
52### announce
53
54Usage: `commissioner announce <mask> <count> <period> <destination>`
55
56Send a `MGMT_ANNOUNCE_BEGIN` message.
57
58- mask: Bitmask identifying channels to send MLE Announce messages.
59- count: Number of MLE Announce transmissions per channel.
60- period: Period between successive MLE Announce transmissions (milliseconds).
61- destination: IPv6 destination for the message (may be multicast).
62
63```bash
64> commissioner announce 0x00050000 2 32 fdde:ad00:beef:0:0:ff:fe00:c00
65Done
66```
67
68### energy
69
70Usage: `commissioner energy <mask> <count> <period> <scanDuration> <destination>`
71
72Send a `MGMT_ED_SCAN` message.
73
74- mask: Bitmask identifying channels to perform IEEE 802.15.4 ED Scans.
75- count: Number of IEEE 802.15.4 ED Scans per channel.
76- period: Period between successive IEEE 802.15.4 ED Scans (milliseconds).
77- scanDuration: IEEE 802.15.4 ScanDuration to use when performing an IEEE 802.15.4 ED Scan (milliseconds).
78- destination: IPv6 destination for the message (may be multicast).
79
80The contents of `MGMT_ED_REPORT` messages (i.e. Channel Mask and Energy List) are printed as they are received.
81
82```bash
83> commissioner energy 0x00050000 2 32 1000 fdde:ad00:beef:0:0:ff:fe00:c00
84Done
85Energy: 00050000 0 0 0 0
86```
87
88### joiner add
89
90Usage: `commissioner joiner add <eui64>|<discerner> <pskd> [timeout]`
91
92Add a Joiner entry.
93
94- eui64: The IEEE EUI-64 of the Joiner or '\*' to match any Joiner.
95- discerner: The Joiner discerner in format `number/length`.
96- pskd: Pre-Shared Key for the Joiner.
97- timeout: joiner timeout in seconds.
98
99```bash
100> commissioner joiner add d45e64fa83f81cf7 J01NME
101Done
102```
103
104```bash
105> commissioner joiner add 0xabc/12 J01NME
106Done
107```
108
109### joiner remove
110
111Usage: `commissioner joiner remove <eui64>|<discerner>`
112
113Remove a Joiner entry.
114
115- eui64: The IEEE EUI-64 of the Joiner or '\*' to match any Joiner.
116- discerner: The Joiner discerner in format `number/length`.
117
118```bash
119> commissioner joiner remove d45e64fa83f81cf7
120Done
121```
122
123```bash
124> commissioner joiner remove 0xabc/12
125Done
126```
127
128### joiner table
129
130Usage: `commissioner joiner table`
131
132List all Joiner entries.
133
134```bash
135> commissioner joiner table
136| ID                    | PSKd                             | Expiration |
137+-----------------------+----------------------------------+------------+
138|                     * |                           J01NME |      81015 |
139|      d45e64fa83f81cf7 |                           J01NME |     101204 |
140| 0x0000000000000abc/12 |                           J01NME |     114360 |
141Done
142```
143
144### mgmtget
145
146Usage: `commissioner mgmtget [locator] [sessionid] [steeringdata] [joinerudpport] [-x <TLV Types>]`
147
148Send a `MGMT_GET` message to the Leader.
149
150```bash
151> commissioner mgmtget locator sessionid
152Done
153```
154
155### mgmtset
156
157Usage: `commissioner mgmtset [locator <locator>] [sessionid <sessionid>] [steeringdata <steeringdata>] [joinerudpport <joinerudpport>] [-x <TLVs>]`
158
159Send a `MGMT_SET` message to the Leader.
160
161```bash
162> commissioner mgmtset joinerudpport 9988
163Done
164```
165
166### panid
167
168Usage: `commissioner panid <panid> <mask> <destination>`
169
170Send a `MGMT_PANID_QUERY` message.
171
172- panid: PAN ID to check for conflicts.
173- mask: Bitmask identifying channels to perform IEEE 802.15.4 Active Scans.
174- destination: IPv6 destination for the message (may be multicast).
175
176The contents of `MGMT_PANID_CONFLICT` messages (i.e. PAN ID and Channel Mask) are printed as they are received.
177
178```bash
179> commissioner panid 0xdead 0x7fff800 fdde:ad00:beef:0:0:ff:fe00:c00
180Done
181Conflict: dead, 00000800
182```
183
184### provisioningurl
185
186Usage: `commissioner provisioningurl <provisioningurl>`
187
188Set the Provisioning URL.
189
190```bash
191> commissioner provisioningurl http://github.com/openthread/openthread
192Done
193```
194
195### sessionid
196
197Usage: `commissioner sessionid`
198
199Get current commissioner session id.
200
201```bash
202> commissioner sessionid
2030
204Done
205```
206
207### id
208
209Usage: `commissioner id`
210
211Get the commissioner id.
212
213```bash
214> commissioner id
215OpenThread Commissioner
216Done
217```
218
219### id \<name\>
220
221Set the commissioner id.
222
223```bash
224> commissioner id "Custom Commissioner Id"
225Done
226```
227
228### start
229
230Usage: `commissioner start`
231
232Start the Commissioner role.
233
234This command will cause the device to send `LEAD_PET` and `LEAD_KA` messages.
235
236```bash
237> commissioner start
238Commissioner: petitioning
239Done
240Commissioner: active
241```
242
243### state
244
245Usage: `commissioner state`
246
247Get Commissioner state.
248
249This command will return the current Commissioner state.
250
251```bash
252> commissioner state
253active
254Done
255```
256
257### stop
258
259Usage: `commissioner stop`
260
261Stop the Commissioner role.
262
263This command will cause the device to send `LEAD_KA[Reject]` messages.
264
265```bash
266> commissioner stop
267Done
268```
269

README_COMMISSIONING.md

1# OpenThread CLI - Commissioning
2
3## Overview
4
5Commissioning is the process of adding a new Thread device, called the Joiner, to a Thread network. This process is done under guidance of a [Commissioner](README_COMMISSIONER.md).
6
7## Quick Start
8
9### Form Network
10
11Form a network with the Thread device that has Commissioner support.
12
131. Generate and view new network configuration.
14
15   ```bash
16   > dataset init new
17   Done
18   > dataset
19   Active Timestamp: 1
20   Channel: 13
21   Channel Mask: 0x07fff800
22   Ext PAN ID: d63e8e3e495ebbc3
23   Mesh Local Prefix: fd3d:b50b:f96d:722d::/64
24   Network Key: dfd34f0f05cad978ec4e32b0413038ff
25   Network Name: OpenThread-8f28
26   PAN ID: 0x8f28
27   PSKc: c23a76e98f1a6483639b1ac1271e2e27
28   Security Policy: 0, onrc
29   Done
30   ```
31
322. Commit new dataset to the Active Operational Dataset in non-volatile storage.
33
34   ```bash
35   dataset commit active
36   Done
37   ```
38
393. Enable Thread interface
40
41   ```bash
42   > ifconfig up
43   Done
44   > thread start
45   Done
46   ```
47
48### Obtain Joiner IEEE EUI-64
49
501. Start the Joiner node and obtain the Joiner's IEEE EUI-64.
51
52   ```bash
53   > eui64
54   18b4300000000002
55   Done
56   ```
57
58### Start Commissioner
59
601. Start the Commissioner Role
61
62   ```bash
63   > commissioner start
64   Commissioner: petitioning
65   Done
66   Commissioner: active
67   ```
68
692. Add the Joiner with the device-specific pre-shared key (PSKd)
70
71   ```bash
72   > commissioner joiner add 18b4300000000002 J01NME
73   Done
74   ```
75
76### Start Joiner
77
781. Factory reset the device.
79
80   ```bash
81   > factoryreset
82   ```
83
842. Start the Joiner process.
85
86   ```bash
87   > ifconfig up
88   Done
89   > joiner start J01NME
90   Done
91   Join success
92   ```
93
943. Attach to Thread network
95
96   ```bash
97   > thread start
98   Done
99   ```
100
1014. After successful attach, validate the device has the same Active Operational Dataset as above.
102
103   ```bash
104   > dataset active
105   Active Timestamp: 1
106   Channel: 13
107   Channel Mask: 0x07fff800
108   Ext PAN ID: d63e8e3e495ebbc3
109   Mesh Local Prefix: fd3d:b50b:f96d:722d::/64
110   Network Key: dfd34f0f05cad978ec4e32b0413038ff
111   Network Name: OpenThread-8f28
112   PAN ID: 0x8f28
113   PSKc: c23a76e98f1a6483639b1ac1271e2e27
114   Security Policy: 0, onrc
115   Done
116   ```
117
118## CLI Reference
119
120- [Commissioner CLI Reference](README_COMMISSIONER.md)
121- [Joiner CLI Reference](README_JOINER.md)
122

README_DATASET.md

1# OpenThread CLI - Operational Datasets
2
3## Overview
4
5Thread network configuration parameters are managed using Active and Pending Operational Dataset objects.
6
7### WARNING - Restrictions for production use!
8
9The CLI commands to write/change the Active and Pending Operational Datasets may allow setting invalid parameters, or invalid combinations of parameters, for testing purposes. These CLI commands can only be used:
10
11- To configure network parameters for the first device in a newly created Thread network.
12- For testing (not applicable to production devices).
13
14In production Thread networks, the correct method to write/change Operational Datasets is via a [Commissioner](README_COMMISSIONER.md) that performs [commissioning](README_COMMISSIONING.md). Production devices that are not an active Commissioner and are part of a Thread network MUST NOT modify the Operational Datasets in any way.
15
16### Active Operational Dataset
17
18The Active Operational Dataset includes parameters that are currently in use across an entire Thread network. The Active Operational Dataset contains:
19
20- Active Timestamp
21- Channel
22- Channel Mask
23- Extended PAN ID
24- Mesh-Local Prefix
25- Network Name
26- PAN ID
27- PSKc
28- Security Policy
29
30### Pending Operational Dataset
31
32The Pending Operational Dataset is used to communicate changes to the Active Operational Dataset before they take effect. The Pending Operational Dataset contains all the parameters from the Active Operational Dataset, with the addition of:
33
34- Delay Timer
35- Pending Timestamp
36
37## Quick Start
38
39### Form Network
40
411. Generate and view new network configuration.
42
43   ```bash
44   > dataset init new
45   Done
46   > dataset
47   Active Timestamp: 1
48   Channel: 15
49   Channel Mask: 0x07fff800
50   Ext PAN ID: 39758ec8144b07fb
51   Mesh Local Prefix: fdf1:f1ad:d079:7dc0::/64
52   Network Key: f366cec7a446bab978d90d27abe38f23
53   Network Name: OpenThread-5938
54   PAN ID: 0x5938
55   PSKc: 3ca67c969efb0d0c74a4d8ee923b576c
56   Security Policy: 672 onrc 0
57   Done
58   ```
59
602. Commit new dataset to the Active Operational Dataset in non-volatile storage.
61
62   ```bash
63   dataset commit active
64   Done
65   ```
66
673. Enable Thread interface
68
69   ```bash
70   > ifconfig up
71   Done
72   > thread start
73   Done
74   ```
75
76### Attach to Existing Network
77
78Only the Network Key is required for a device to attach to a Thread network.
79
80While not required, specifying the channel avoids the need to search across multiple channels, improving both latency and efficiency of the attach process.
81
82After the device successfully attaches to a Thread network, the device will retrieve the complete Active Operational Dataset.
83
841. Create a partial Active Operational Dataset.
85
86   ```bash
87   > dataset networkkey dfd34f0f05cad978ec4e32b0413038ff
88   Done
89   > dataset commit active
90   Done
91   ```
92
932. Enable Thread interface.
94
95   ```bash
96   > ifconfig up
97   Done
98   > thread start
99   Done
100   ```
101
1023. After attaching, validate that the device received the complete Active Operational Dataset.
103
104   ```bash
105   > dataset active
106   Active Timestamp: 1
107   Channel: 15
108   Channel Mask: 0x07fff800
109   Ext PAN ID: 39758ec8144b07fb
110   Mesh Local Prefix: fdf1:f1ad:d079:7dc0::/64
111   Network Key: f366cec7a446bab978d90d27abe38f23
112   Network Name: OpenThread-5938
113   PAN ID: 0x5938
114   PSKc: 3ca67c969efb0d0c74a4d8ee923b576c
115   Security Policy: 672 onrc 0
116   Done
117   ```
118
119### Using the Dataset Updater to update Operational Dataset
120
121Dataset Updater can be used for a delayed update of network parameters on all devices of a Thread Network.
122
1231. Clear the dataset buffer and add the Dataset fields to update.
124
125   ```bash
126   > dataset clear
127   Done
128
129   > dataset channel 12
130   Done
131   ```
132
1332. Set the delay timer parameter (example uses 5 minutes or 300000 ms). Check the resulting dataset. There is no need to specify active or pending timestamps because the Dataset Updater will handle this. If specified the `dataset updater start` will issue an error.
134
135   ```bash
136   > dataset delay 300000
137
138   > dataset
139   Channel: 12
140   Delay: 30000
141   Done
142   ```
143
1443. Start the Dataset Updater, which will prepare a Pending Operation Dataset and inform the Leader to distribute it to other devices.
145
146   ```bash
147   > dataset updater start
148   Done
149
150   > dataset updater
151   Enabled
152   ```
153
1544. After about 5 minutes, the changes are applied to the Active Operational Dataset on the Leader. This can also be checked at other devices on the network: these should have applied the new Dataset too, at approximately the same time as the Leader has done this.
155
156   ```bash
157   > dataset active
158   Active Timestamp: 10
159   Channel: 12
160   Channel Mask: 0x07fff800
161   Ext PAN ID: 324a71d90cdc8345
162   Mesh Local Prefix: fd7d:da74:df5e:80c::/64
163   Network Key: be768535bac1b8d228960038311d6ca2
164   Network Name: OpenThread-bcaf
165   PAN ID: 0xbcaf
166   PSKc: e79b274ab22414a814ed5cce6a30be67
167   Security Policy: 672 onrc 0
168   Done
169   ```
170
171### Using the Pending Operational Dataset for Delayed Dataset Updates
172
173The Pending Operational Dataset can be used for a delayed update of network parameters on all devices of a Thread Network. If certain Active Operational Dataset parameters need to be changed, but the change would impact the connectivity of the network, delaying the update helps to let all devices receive the new parameters before the update is applied. Examples of such parameters are the channel, PAN ID, certain Security Policy bits, or Network Key.
174
175The delay timer determines the time period after which the Pending Operational Dataset takes effect and becomes the Active Operational Dataset. The following example shows how a Pending Operational Dataset with delay timer can be set at a Leader device. The Leader will initiate the distribution of the Pending Operational Dataset to the rest of the devices in the network.
176
177Normally, an active Commissioner will set a new Pending Operational Dataset. For testing purposes, we will do this in the example directly on the Leader using the CLI - so without using a Commissioner.
178
1791. The main parameter to change is the channel. We can display the current Active Operational Dataset to see that the current channel is 16.
180
181   ```bash
182   > dataset active
183   Active Timestamp: 1691070443
184   Channel: 16
185   Channel Mask: 0x07fff800
186   Ext PAN ID: 324a71d90cdc8345
187   Mesh Local Prefix: fd7d:da74:df5e:80c::/64
188   Network Key: be768535bac1b8d228960038311d6ca2
189   Network Name: OpenThread-bcaf
190   PAN ID: 0xbcaf
191   PSKc: e79b274ab22414a814ed5cce6a30be67
192   Security Policy: 672 onrc 0
193   Done
194   ```
195
1962. Create a new Dataset in the dataset buffer, by copying the Active Operational Dataset. Then change the channel number to 12 and increase the timestamp.
197
198   ```bash
199   > dataset init active
200   Done
201   > dataset activetimestamp 1696177379
202   Done
203   > dataset pendingtimestamp 1696177379
204   Done
205   > dataset channel 12
206   Done
207   ```
208
2093. Set the delay timer parameter to 5 minutes (300000 ms). Show the resulting Dataset that's ready to be used.
210
211   ```bash
212   > dataset delay 300000
213   Done
214   > dataset
215   Pending Timestamp: 1696177379
216   Active Timestamp: 1696177379
217   Channel: 12
218   Channel Mask: 0x07fff800
219   Delay: 300000
220   Ext PAN ID: 324a71d90cdc8345
221   Mesh Local Prefix: fd7d:da74:df5e:80c::/64
222   Network Key: be768535bac1b8d228960038311d6ca2
223   Network Name: OpenThread-bcaf
224   PAN ID: 0xbcaf
225   PSKc: e79b274ab22414a814ed5cce6a30be67
226   Security Policy: 672 onrc 0
227   Done
228   ```
229
2304. Commit the new Dataset as the Pending Operational Dataset. This also starts the delay timer countdown. The Leader then starts the distribution of the Pending Operational Dataset to other devices in the network.
231
232   ```bash
233   > dataset commit pending
234   Done
235   ```
236
2375. To verify that the delay timer is counting down, display the Pending Operational Dataset after a few seconds.
238
239   ```bash
240   > dataset pending
241   Pending Timestamp: 1696177379
242   Active Timestamp: 1696177379
243   Channel: 12
244   Channel Mask: 0x07fff800
245   Delay: 293051
246   Ext PAN ID: 324a71d90cdc8345
247   Mesh Local Prefix: fd7d:da74:df5e:80c::/64
248   Network Key: be768535bac1b8d228960038311d6ca2
249   Network Name: OpenThread-bcaf
250   PAN ID: 0xbcaf
251   PSKc: e79b274ab22414a814ed5cce6a30be67
252   Security Policy: 672 onrc 0
253   Done
254   ```
255
256   This shows that indeed the delay timer has started counting down from its initial value `300000`. The same can be optionally checked on other devices in the network.
257
2586) After about 5 minutes, check that the Pending Operational Dataset has been applied at the Leader. This can also be checked at other devices on the network: these should have applied the new Dataset too, at approximately the same time as the Leader has done this.
259
260   ```bash
261   > dataset active
262   Active Timestamp: 1696177379
263   Channel: 12
264   Channel Mask: 0x07fff800
265   Ext PAN ID: 324a71d90cdc8345
266   Mesh Local Prefix: fd7d:da74:df5e:80c::/64
267   Network Key: be768535bac1b8d228960038311d6ca2
268   Network Name: OpenThread-bcaf
269   PAN ID: 0xbcaf
270   PSKc: e79b274ab22414a814ed5cce6a30be67
271   Security Policy: 672 onrc 0
272   Done
273   ```
274
275   This shows that the Active Operational Dataset has now been updated to use channel 12. And the Pending Operational Dataset is no longer present, as can be seen by this command:
276
277   ```bash
278   > dataset pending
279   Error 23: NotFound
280   ```
281
282## Command List
283
284- [help](#help)
285- [active](#active)
286- [activetimestamp](#activetimestamp)
287- [channel](#channel)
288- [channelmask](#channelmask)
289- [clear](#clear)
290- [commit](#commit)
291- [delay](#delay)
292- [extpanid](#extpanid)
293- [init](#init)
294- [meshlocalprefix](#meshlocalprefix)
295- [mgmtgetcommand](#mgmtgetcommand)
296- [mgmtsetcommand](#mgmtsetcommand)
297- [networkkey](#networkkey)
298- [networkname](#networkname)
299- [panid](#panid)
300- [pending](#pending)
301- [pendingtimestamp](#pendingtimestamp)
302- [pskc](#pskc)
303- [securitypolicy](#securitypolicy)
304- [tlvs](#tlvs)
305- [updater](#updater)
306
307## Command Details
308
309### help
310
311Usage: `dataset help`
312
313Print dataset help menu.
314
315```bash
316> dataset help
317help
318active
319activetimestamp
320channel
321channelmask
322clear
323commit
324delay
325extpanid
326init
327meshlocalprefix
328mgmtgetcommand
329mgmtsetcommand
330networkkey
331networkname
332panid
333pending
334pendingtimestamp
335pskc
336securitypolicy
337set
338tlvs
339Done
340```
341
342### active
343
344Usage: `dataset active [-x]`
345
346Print Active Operational Dataset in human-readable form.
347
348```bash
349> dataset active
350Active Timestamp: 1
351Channel: 15
352Channel Mask: 0x07fff800
353Ext PAN ID: 39758ec8144b07fb
354Mesh Local Prefix: fdf1:f1ad:d079:7dc0::/64
355Network Key: f366cec7a446bab978d90d27abe38f23
356Network Name: OpenThread-5938
357PAN ID: 0x5938
358PSKc: 3ca67c969efb0d0c74a4d8ee923b576c
359Security Policy: 672 onrc 0
360Done
361```
362
363Print Active Operational Dataset as hex-encoded TLVs.
364
365```bash
366> dataset active -x
3670e080000000000010000000300000f35060004001fffe0020839758ec8144b07fb0708fdf1f1add0797dc00510f366cec7a446bab978d90d27abe38f23030f4f70656e5468726561642d353933380102593804103ca67c969efb0d0c74a4d8ee923b576c0c0402a0f7f8
368Done
369```
370
371### activetimestamp
372
373Usage: `dataset activetimestamp [timestamp]`
374
375Get active timestamp seconds. It represents a "Unix time", in number of seconds since Jan 1st, 1970.
376
377```bash
378> dataset activetimestamp
379123456789
380Done
381```
382
383Set active timestamp seconds.
384
385```bash
386> dataset activetimestamp 123456789
387Done
388```
389
390### channel
391
392Usage: `channel [channel]`
393
394Get channel.
395
396```bash
397> dataset channel
39812
399Done
400```
401
402Set channel.
403
404```bash
405> dataset channel 12
406Done
407```
408
409### channelmask
410
411Usage: `dataset channelmask [channelmask]`
412
413Get channel mask.
414
415```bash
416> dataset channelmask
4170x07fff800
418Done
419```
420
421Set channel mask.
422
423```bash
424> dataset channelmask 0x07fff800
425Done
426```
427
428### clear
429
430Usage: `dataset clear`
431
432Reset operational dataset buffer.
433
434```bash
435> dataset clear
436Done
437```
438
439### commit
440
441Usage: `dataset commit <active|pending>`
442
443Commit operational dataset buffer to active/pending operational dataset.
444
445```bash
446> dataset commit active
447Done
448```
449
450### delay
451
452Usage: `dataset delay [delay]`
453
454Get delay timer value. The timer value is in milliseconds.
455
456```bash
457> dataset delay
4581000
459Done
460```
461
462Set delay timer value.
463
464```bash
465> dataset delay 100000
466Done
467```
468
469### extpanid
470
471Usage: `dataset extpanid [extpanid]`
472
473Get extended panid.
474
475```bash
476> dataset extpanid
477000db80123456789
478Done
479```
480
481Set extended panid.
482
483**NOTE** The commissioning credential in the dataset buffer becomes stale after changing this value. Use [pskc](#pskc) to reset.
484
485```bash
486> dataset extpanid 000db80123456789
487Done
488```
489
490### init
491
492Usage: `dataset init <active|new|pending|tlvs <hex-encoded TLVs>>`
493
494Initialize operational dataset buffer. Use `new` to initialize with randomly selected values:
495
496```bash
497> dataset init new
498Done
499```
500
501Use `active` or `pending` to initialize the dataset buffer with a copy of the current Active Operational Dataset or Pending Operational Dataset, respectively:
502
503```bash
504> dataset init active
505Done
506```
507
508Use the `tlvs` option to initialize the dataset buffer from a string of hex-encoded TLVs:
509
510```bash
511> dataset init tlvs 0e080000000000010000000300001235060004001fffe002088665f03e6e42e7750708fda576e5f9a5bd8c0510506071d8391be671569e080d52870fd5030f4f70656e5468726561642d633538640102c58d04108a926cf8b13275a012ceedeeae40910d0c0402a0f7f8
512Done
513```
514
515### meshlocalprefix
516
517Usage: `dataset meshlocalprefix [prefix]`
518
519Get mesh local prefix.
520
521```bash
522> dataset meshlocalprefix
523fd00:db8:0:0::/64
524Done
525```
526
527Set mesh local prefix.
528
529```bash
530> dataset meshlocalprefix fd00:db8::
531Done
532```
533
534### mgmtgetcommand
535
536Usage: `dataset mgmtgetcommand <active|pending> [address <destination>] [TLV list] [-x]`
537
538Send MGMT_ACTIVE_GET or MGMT_PENDING_GET.
539
540```bash
541> dataset mgmtgetcommand active address fdde:ad00:beef:0:558:f56b:d688:799 activetimestamp securitypolicy
542Done
543```
544
545### mgmtsetcommand
546
547Usage: `dataset mgmtsetcommand <active|pending> [TLV Type list] [-x]`
548
549Send MGMT_ACTIVE_SET or MGMT_PENDING_SET.
550
551```bash
552> dataset mgmtsetcommand active activetimestamp 123 securitypolicy 1 onrc 0
553Done
554```
555
556### networkkey
557
558Usage: `dataset networkkey [key]`
559
560Get network key
561
562```bash
563> dataset networkkey
56400112233445566778899aabbccddeeff
565Done
566```
567
568Set network key.
569
570```bash
571> dataset networkkey 00112233445566778899aabbccddeeff
572Done
573```
574
575### networkname
576
577Usage: `dataset networkname [name]`
578
579Get network name.
580
581```bash
582> dataset networkname
583OpenThread
584Done
585```
586
587Set network name.
588
589**NOTE** The commissioning credential in the dataset buffer becomes stale after changing this value. Use [pskc](#pskc) to reset.
590
591```bash
592> dataset networkname OpenThread
593Done
594```
595
596### panid
597
598Usage: `dataset panid [panid]`
599
600Get panid.
601
602```bash
603> dataset panid
6040x1234
605Done
606```
607
608Set panid.
609
610```bash
611> dataset panid 0x1234
612Done
613```
614
615### pending
616
617Usage: `dataset pending [-x]`
618
619Print Pending Operational Dataset in human-readable form.
620
621```bash
622> dataset pending
623Pending Timestamp: 2
624Active Timestamp: 1
625Channel: 26
626Channel Mask: 0x07fff800
627Delay: 58706
628Ext PAN ID: a74182f4d3f4de41
629Mesh Local Prefix: fd46:c1b9:e159:5574::/64
630Network Key: ed916e454d96fd00184f10a6f5c9e1d3
631Network Name: OpenThread-bff8
632PAN ID: 0xbff8
633PSKc: 264f78414adc683191863d968f72d1b7
634Security Policy: 672 onrc 0
635Done
636```
637
638Print Pending Operational Dataset as hex-encoded TLVs.
639
640```bash
641> dataset pending -x
6420e0800000000000100003308000000000002000034040000b512000300001a35060004001fffe00208a74182f4d3f4de410708fd46c1b9e15955740510ed916e454d96fd00184f10a6f5c9e1d3030f4f70656e5468726561642d626666380102bff80410264f78414adc683191863d968f72d1b70c0402a0f7f8
643Done
644```
645
646### pendingtimestamp
647
648Usage: `dataset pendingtimestamp [timestamp]`
649
650Get pending timestamp seconds. It represents a "Unix time", in number of seconds since Jan 1st, 1970.
651
652```bash
653> dataset pendingtimestamp
654123456789
655Done
656```
657
658Set pending timestamp seconds.
659
660```bash
661> dataset pendingtimestamp 123456789
662Done
663```
664
665### pskc
666
667Usage: `pskc [-p] [<key>|<passphrase>]`
668
669Get PSKc.
670
671```bash
672> dataset pskc
67367c0c203aa0b042bfb5381c47aef4d9e
674Done
675```
676
677Set PSKc.
678
679With `-p`(**only for FTD**) generate PSKc from \<passphrase\> (UTF-8 encoded) together with network name and extended PAN ID in the dataset buffer if set or values in the current stack if not, otherwise set PSKc as \<key\> (hex format).
680
681```bash
682> dataset pskc 67c0c203aa0b042bfb5381c47aef4d9e
683Done
684> dataset pskc -p 123456
685Done
686```
687
688### securitypolicy
689
690Usage: `dataset securitypolicy [<rotationtime> [onrcCepR] [versionthreshold]]`
691
692Get security policy.
693
694```bash
695> dataset securitypolicy
696672 onrc 0
697Done
698```
699
700Set security policy.
701
702- o: Obtaining the Network Key for out-of-band commissioning is enabled.
703- n: Native Commissioning using PSKc is allowed.
704- r: Thread 1.x Routers are enabled.
705- c: External Commissioner authentication is allowed using PSKc.
706- C: Thread 1.2 Commercial Commissioning is enabled.
707- e: Thread 1.2 Autonomous Enrollment is enabled.
708- p: Thread 1.2 Network Key Provisioning is enabled.
709- R: Non-CCM routers are allowed in Thread 1.2 CCM networks.
710
711If the `versionthreshold` parameter is not provided, a default value of zero is assumed.
712
713```bash
714> dataset securitypolicy 672 onrc 0
715Done
716```
717
718### set
719
720Usage: `dataset set <active|pending> <dataset>`
721
722Set the Active Operational Dataset using hex-encoded TLVs.
723
724```bash
725> dataset set active 0e080000000000010000000300000f35060004001fffe0020839758ec8144b07fb0708fdf1f1add0797dc00510f366cec7a446bab978d90d27abe38f23030f4f70656e5468726561642d353933380102593804103ca67c969efb0d0c74a4d8ee923b576c0c0402a0f7f8
726Done
727```
728
729Set the Pending Operational Dataset using hex-encoded TLVs.
730
731```bash
732> dataset set pending 0e0800000000000100003308000000000002000034040000b512000300001a35060004001fffe00208a74182f4d3f4de410708fd46c1b9e15955740510ed916e454d96fd00184f10a6f5c9e1d3030f4f70656e5468726561642d626666380102bff80410264f78414adc683191863d968f72d1b70c0402a0f7f8
733Done
734```
735
736### tlvs
737
738Usage: `dataset tlvs`
739
740Convert the Operational Dataset to hex-encoded TLVs.
741
742```bash
743> dataset
744Active Timestamp: 1
745Channel: 22
746Channel Mask: 0x07fff800
747Ext PAN ID: d196fa2040e973b6
748Mesh Local Prefix: fdbb:c310:c48f:3a39::/64
749Network Key: 9929154dbc363218bcd22f907caf5c15
750Network Name: OpenThread-de2b
751PAN ID: 0xde2b
752PSKc: 15b2c16f7ba92ed4bc7b1ee054f1553f
753Security Policy: 672 onrc 0
754Done
755
756> dataset tlvs
7570e080000000000010000000300001635060004001fffe00208d196fa2040e973b60708fdbbc310c48f3a3905109929154dbc363218bcd22f907caf5c15030f4f70656e5468726561642d646532620102de2b041015b2c16f7ba92ed4bc7b1ee054f1553f0c0402a0f7f8
758Done
759```
760
761### updater
762
763Usage: `dataset updater`
764
765Requires `OPENTHREAD_CONFIG_DATASET_UPDATER_ENABLE`.
766
767Indicate whether there is an ongoing Operation Dataset update request.
768
769```bash
770> dataset updater
771Enabled
772```
773
774### updater start
775
776Usage: `dataset updater start`
777
778Requires `OPENTHREAD_CONFIG_DATASET_UPDATER_ENABLE`.
779
780Request network to update its Operation Dataset to the current operational dataset buffer.
781
782The current operational dataset buffer should contain the fields to be updated with their new values. It must not contain Active or Pending Timestamp fields. The Delay field is optional. If not provided, a default value (1000 ms) is used.
783
784```bash
785> channel
78619
787Done
788
789> dataset clear
790Done
791> dataset channel 15
792Done
793> dataset
794Channel: 15
795Done
796
797> dataset updater start
798Done
799> dataset updater
800Enabled
801Done
802
803Dataset update complete: OK
804
805> channel
80615
807Done
808```
809
810### updater cancel
811
812Usage: `dataset updater cancel`
813
814Requires `OPENTHREAD_CONFIG_DATASET_UPDATER_ENABLE`.
815
816Cancels an ongoing (if any) Operational Dataset update request.
817
818```bash
819> dataset updater start
820Done
821> dataset updater
822Enabled
823Done
824>
825> dataset updater cancel
826Done
827> dataset updater
828Disabled
829Done
830```
831

README_HISTORY.md

1# OpenThread CLI - History Tracker
2
3History Tracker module records history of different events (e.g., RX and TX IPv6 messages or network info changes, etc.) as the Thread network operates. All tracked entries are timestamped.
4
5All commands under `history` require `OPENTHREAD_CONFIG_HISTORY_TRACKER_ENABLE` feature to be enabled.
6
7The number of entries recorded for each history list is configurable through a set of OpenThread config options, e.g. `OPENTHREAD_CONFIG_HISTORY_TRACKER_NET_INFO_LIST_SIZE` specifies the number of entries in Network Info history list. The History Tracker will keep the most recent entries overwriting oldest one when the list gets full.
8
9## Command List
10
11Usage : `history [command] ...`
12
13- [help](#help)
14- [ipaddr](#ipaddr)
15- [ipmaddr](#ipmaddr)
16- [neighbor](#neighbor)
17- [netinfo](#netinfo)
18- [prefix](#prefix)
19- [route](#route)
20- [router](#router)
21- [rx](#rx)
22- [rxtx](#rxtx)
23- [tx](#tx)
24
25## Timestamp Format
26
27Recorded entries are timestamped. When the history list is printed, the timestamps are shown relative the time the command was issues (i.e., when the list was printed) indicating how long ago the entry was recorded.
28
29```bash
30> history netinfo
31| Age                  | Role     | Mode | RLOC16 | Partition ID |
32+----------------------+----------+------+--------+--------------+
33|         02:31:50.628 | leader   | rdn  | 0x2000 |    151029327 |
34|         02:31:53.262 | detached | rdn  | 0xfffe |            0 |
35|         02:31:54.663 | detached | rdn  | 0x2000 |            0 |
36Done
37```
38
39For example `02:31:50.628` indicates the event was recorded "2 hours, 31 minutes, 50 seconds, and 628 milliseconds ago". Number of days is added for events that are older than 24 hours, e.g., `1 day 11:25:31.179`, or `31 days 03:00:23.931`.
40
41Timestamps use millisecond accuracy and are tacked up to 49 days. If the event is older than 49 days, the entry is still tracked in the list but the timestamp is shown as `more than 49 days`.
42
43## Command Details
44
45### help
46
47Usage: `history help`
48
49Print SRP client help menu.
50
51```bash
52> history help
53help
54ipaddr
55ipmaddr
56neighbor
57netinfo
58prefix
59route
60router
61rx
62rxtx
63tx
64Done
65>
66```
67
68### ipaddr
69
70Usage `history ipaddr [list] [<num-entries>]`
71
72Print the unicast IPv6 address history. Each entry provides:
73
74- Event: Added or Removed.
75- Address: Unicast address along with its prefix length (in bits).
76- Origin: thread, slaac, dhcp6, or manual.
77- Address Scope.
78- Flags: Preferred, Valid, and RLOC (whether the address is RLOC).
79
80Print the unicast IPv6 address history as table.
81
82```bash
83> history ipaddr
84| Age                  | Event   | Address / PrefixLength                      | Origin |Scope| P | V | R |
85+----------------------+---------+---------------------------------------------+--------+-----+---+---+---+
86|         00:00:04.991 | Removed | 2001:dead:beef:cafe:c4cb:caba:8d55:e30b/64  | slaac  |  14 | Y | Y | N |
87|         00:00:44.647 | Added   | 2001:dead:beef:cafe:c4cb:caba:8d55:e30b/64  | slaac  |  14 | Y | Y | N |
88|         00:01:07.199 | Added   | fd00:0:0:0:0:0:0:1/64                       | manual |  14 | Y | Y | N |
89|         00:02:17.885 | Added   | fdde:ad00:beef:0:0:ff:fe00:fc00/64          | thread |   3 | N | Y | N |
90|         00:02:17.885 | Added   | fdde:ad00:beef:0:0:ff:fe00:5400/64          | thread |   3 | N | Y | Y |
91|         00:02:20.107 | Removed | fdde:ad00:beef:0:0:ff:fe00:5400/64          | thread |   3 | N | Y | Y |
92|         00:02:21.575 | Added   | fdde:ad00:beef:0:0:ff:fe00:5400/64          | thread |   3 | N | Y | Y |
93|         00:02:21.575 | Added   | fdde:ad00:beef:0:ecea:c4fc:ad96:4655/64     | thread |   3 | N | Y | N |
94|         00:02:23.904 | Added   | fe80:0:0:0:3c12:a4d2:fbe0:31ad/64           | thread |   2 | Y | Y | N |
95Done
96```
97
98Print the unicast IPv6 address history as a list (the last 5 entries).
99
100```bash
101> history ipaddr list 5
10200:00:20.327 -> event:Removed address:2001:dead:beef:cafe:c4cb:caba:8d55:e30b prefixlen:64 origin:slaac scope:14 preferred:yes valid:yes rloc:no
10300:00:59.983 -> event:Added address:2001:dead:beef:cafe:c4cb:caba:8d55:e30b prefixlen:64 origin:slaac scope:14 preferred:yes valid:yes rloc:no
10400:01:22.535 -> event:Added address:fd00:0:0:0:0:0:0:1 prefixlen:64 origin:manual scope:14 preferred:yes valid:yes rloc:no
10500:02:33.221 -> event:Added address:fdde:ad00:beef:0:0:ff:fe00:fc00 prefixlen:64 origin:thread scope:3 preferred:no valid:yes rloc:no
10600:02:33.221 -> event:Added address:fdde:ad00:beef:0:0:ff:fe00:5400 prefixlen:64 origin:thread scope:3 preferred:no valid:yes rloc:yes
107Done
108```
109
110### ipmaddr
111
112Usage `history ipmaddr [list] [<num-entries>]`
113
114Print the multicast IPv6 address history. Each entry provides:
115
116- Event: Subscribed or Unsubscribed.
117- Address: Multicast address.
118- Origin: Thread, or Manual.
119
120Print the multicast IPv6 address history as table.
121
122```bash
123> history ipmaddr
124| Age                  | Event        | Multicast Address                       | Origin |
125+----------------------+--------------+-----------------------------------------+--------+
126|         00:00:08.592 | Unsubscribed | ff05:0:0:0:0:0:0:1                      | Manual |
127|         00:01:25.353 | Subscribed   | ff05:0:0:0:0:0:0:1                      | Manual |
128|         00:01:54.953 | Subscribed   | ff03:0:0:0:0:0:0:2                      | Thread |
129|         00:01:54.953 | Subscribed   | ff02:0:0:0:0:0:0:2                      | Thread |
130|         00:01:59.329 | Subscribed   | ff33:40:fdde:ad00:beef:0:0:1            | Thread |
131|         00:01:59.329 | Subscribed   | ff32:40:fdde:ad00:beef:0:0:1            | Thread |
132|         00:02:01.129 | Subscribed   | ff03:0:0:0:0:0:0:fc                     | Thread |
133|         00:02:01.129 | Subscribed   | ff03:0:0:0:0:0:0:1                      | Thread |
134|         00:02:01.129 | Subscribed   | ff02:0:0:0:0:0:0:1                      | Thread |
135Done
136```
137
138Print the multicast IPv6 address history as a list.
139
140```bash
141> history ipmaddr list
14200:00:25.447 -> event:Unsubscribed address:ff05:0:0:0:0:0:0:1 origin:Manual
14300:01:42.208 -> event:Subscribed address:ff05:0:0:0:0:0:0:1 origin:Manual
14400:02:11.808 -> event:Subscribed address:ff03:0:0:0:0:0:0:2 origin:Thread
14500:02:11.808 -> event:Subscribed address:ff02:0:0:0:0:0:0:2 origin:Thread
14600:02:16.184 -> event:Subscribed address:ff33:40:fdde:ad00:beef:0:0:1 origin:Thread
14700:02:16.184 -> event:Subscribed address:ff32:40:fdde:ad00:beef:0:0:1 origin:Thread
14800:02:17.984 -> event:Subscribed address:ff03:0:0:0:0:0:0:fc origin:Thread
14900:02:17.984 -> event:Subscribed address:ff03:0:0:0:0:0:0:1 origin:Thread
15000:02:17.984 -> event:Subscribed address:ff02:0:0:0:0:0:0:1 origin:Thread
151Done
152```
153
154### neighbor
155
156Usage `history neighbor [list] [<num-entries>]`
157
158Print the neighbor table history. Each entry provides:
159
160- Type: Child or Router
161- Event: Added, Removed, Changed (e.g., mode change).
162- Extended Address
163- RLOC16
164- MLE Link Mode
165- Average RSS (in dBm) of received frames from neighbor at the time the entry was recorded
166
167Print the neighbor history as a table.
168
169```bash
170> history neighbor
171| Age                  | Type   | Event     | Extended Address | RLOC16 | Mode | Ave RSS |
172+----------------------+--------+-----------+------------------+--------+------+---------+
173|         00:00:29.233 | Child  | Added     | ae5105292f0b9169 | 0x8404 | -    |     -20 |
174|         00:01:38.368 | Child  | Removed   | ae5105292f0b9169 | 0x8401 | -    |     -20 |
175|         00:04:27.181 | Child  | Changed   | ae5105292f0b9169 | 0x8401 | -    |     -20 |
176|         00:04:51.236 | Router | Added     | 865c7ca38a5fa960 | 0x9400 | rdn  |     -20 |
177|         00:04:51.587 | Child  | Removed   | 865c7ca38a5fa960 | 0x8402 | rdn  |     -20 |
178|         00:05:22.764 | Child  | Changed   | ae5105292f0b9169 | 0x8401 | rn   |     -20 |
179|         00:06:40.764 | Child  | Added     | 4ec99efc874a1841 | 0x8403 | r    |     -20 |
180|         00:06:44.060 | Child  | Added     | 865c7ca38a5fa960 | 0x8402 | rdn  |     -20 |
181|         00:06:49.515 | Child  | Added     | ae5105292f0b9169 | 0x8401 | -    |     -20 |
182Done
183```
184
185Print the neighbor history as a list.
186
187```bash
188
189> history neighbor list
19000:00:34.753 -> type:Child event:Added extaddr:ae5105292f0b9169 rloc16:0x8404 mode:- rss:-20
19100:01:43.888 -> type:Child event:Removed extaddr:ae5105292f0b9169 rloc16:0x8401 mode:- rss:-20
19200:04:32.701 -> type:Child event:Changed extaddr:ae5105292f0b9169 rloc16:0x8401 mode:- rss:-20
19300:04:56.756 -> type:Router event:Added extaddr:865c7ca38a5fa960 rloc16:0x9400 mode:rdn rss:-20
19400:04:57.107 -> type:Child event:Removed extaddr:865c7ca38a5fa960 rloc16:0x8402 mode:rdn rss:-20
19500:05:28.284 -> type:Child event:Changed extaddr:ae5105292f0b9169 rloc16:0x8401 mode:rn rss:-20
19600:06:46.284 -> type:Child event:Added extaddr:4ec99efc874a1841 rloc16:0x8403 mode:r rss:-20
19700:06:49.580 -> type:Child event:Added extaddr:865c7ca38a5fa960 rloc16:0x8402 mode:rdn rss:-20
19800:06:55.035 -> type:Child event:Added extaddr:ae5105292f0b9169 rloc16:0x8401 mode:- rss:-20
199Done
200```
201
202### netinfo
203
204Usage `history netinfo [list] [<num-entries>]`
205
206Print the Network Info history. Each Network Info provides:
207
208- Device Role
209- MLE Link Mode
210- RLOC16
211- Partition ID
212
213Print the Network Info history as a table.
214
215```bash
216> history netinfo
217| Age                  | Role     | Mode | RLOC16 | Partition ID |
218+----------------------+----------+------+--------+--------------+
219|         00:00:10.069 | router   | rdn  | 0x6000 |    151029327 |
220|         00:02:09.337 | child    | rdn  | 0x2001 |    151029327 |
221|         00:02:09.338 | child    | rdn  | 0x2001 |    151029327 |
222|         00:07:40.806 | child    | -    | 0x2001 |    151029327 |
223|         00:07:42.297 | detached | -    | 0x6000 |            0 |
224|         00:07:42.968 | disabled | -    | 0x6000 |            0 |
225Done
226```
227
228Print the Network Info history as a list.
229
230```bash
231> history netinfo list
23200:00:59.467 -> role:router mode:rdn rloc16:0x6000 partition-id:151029327
23300:02:58.735 -> role:child mode:rdn rloc16:0x2001 partition-id:151029327
23400:02:58.736 -> role:child mode:rdn rloc16:0x2001 partition-id:151029327
23500:08:30.204 -> role:child mode:- rloc16:0x2001 partition-id:151029327
23600:08:31.695 -> role:detached mode:- rloc16:0x6000 partition-id:0
23700:08:32.366 -> role:disabled mode:- rloc16:0x6000 partition-id:0
238Done
239```
240
241Print only the latest 2 entries.
242
243```bash
244> history netinfo 2
245| Age                  | Role     | Mode | RLOC16 | Partition ID |
246+----------------------+----------+------+--------+--------------+
247|         00:02:05.451 | router   | rdn  | 0x6000 |    151029327 |
248|         00:04:04.719 | child    | rdn  | 0x2001 |    151029327 |
249Done
250```
251
252### prefix
253
254Usage `history prefix [list] [<num-entries>]`
255
256Print the Network Data on mesh prefix history. Each item provides:
257
258- Event (`Added` or `Removed`)
259- Prefix
260- Flags
261- Preference (`high`, `med`, `low`)
262- RLOC16
263
264The flags are as follows:
265
266- `p`: Preferred flag
267- `a`: Stateless IPv6 Address Autoconfiguration flag
268- `d`: DHCPv6 IPv6 Address Configuration flag
269- `c`: DHCPv6 Other Configuration flag
270- `r`: Default Route flag
271- `o`: On Mesh flag
272- `s`: Stable flag
273- `n`: Nd Dns flag
274- `D`: Domain Prefix flag
275
276Print the history as a table.
277
278```bash
279> history prefix
280| Age                  | Event   | Prefix                                      | Flags     | Pref | RLOC16 |
281+----------------------+---------+---------------------------------------------+-----------+------+--------+
282|         00:00:10.663 | Added   | fd00:1111:2222:3333::/64                    | paro      | med  | 0x5400 |
283|         00:01:02.054 | Removed | fd00:dead:beef:1::/64                       | paros     | high | 0x5400 |
284|         00:01:21.136 | Added   | fd00:abba:cddd:0::/64                       | paos      | med  | 0x5400 |
285|         00:01:45.144 | Added   | fd00:dead:beef:1::/64                       | paros     | high | 0x3c00 |
286|         00:01:50.944 | Added   | fd00:dead:beef:1::/64                       | paros     | high | 0x5400 |
287|         00:01:59.887 | Added   | fd00:dead:beef:1::/64                       | paros     | med  | 0x8800 |
288Done
289```
290
291Print the history as a list.
292
293```bash
294> history prefix list
29500:04:12.487 -> event:Added prefix:fd00:1111:2222:3333::/64 flags:paro pref:med rloc16:0x5400
29600:05:03.878 -> event:Removed prefix:fd00:dead:beef:1::/64 flags:paros pref:high rloc16:0x5400
29700:05:22.960 -> event:Added prefix:fd00:abba:cddd:0::/64 flags:paos pref:med rloc16:0x5400
29800:05:46.968 -> event:Added prefix:fd00:dead:beef:1::/64 flags:paros pref:high rloc16:0x3c00
29900:05:52.768 -> event:Added prefix:fd00:dead:beef:1::/64 flags:paros pref:high rloc16:0x5400
30000:06:01.711 -> event:Added prefix:fd00:dead:beef:1::/64 flags:paros pref:med rloc16:0x8800
301```
302
303### route
304
305Usage `history route [list] [<num-entries>]`
306
307Print the Network Data external route history. Each item provides:
308
309- Event (`Added` or `Removed`)
310- Route
311- Flags
312- Preference (`high`, `med`, `low`)
313- RLOC16
314
315The flags are as follows:
316
317- `s`: Stable flag
318- `n`: NAT64 flag
319
320Print the history as a table.
321
322```bash
323history route
324| Age                  | Event   | Route                                       | Flags     | Pref | RLOC16 |
325+----------------------+---------+---------------------------------------------+-----------+------+--------+
326|         00:00:05.456 | Removed | fd00:1111:0::/48                            | s         | med  | 0x3c00 |
327|         00:00:29.310 | Added   | fd00:1111:0::/48                            | s         | med  | 0x3c00 |
328|         00:00:42.822 | Added   | fd00:1111:0::/48                            | s         | med  | 0x5400 |
329|         00:01:27.688 | Added   | fd00:aaaa:bbbb:cccc::/64                    | s         | med  | 0x8800 |
330Done
331```
332
333Print the history as a list (last two entries).
334
335```bash
336> history route list 2
33700:00:48.704 -> event:Removed route:fd00:1111:0::/48 flags:s pref:med rloc16:0x3c00
33800:01:12.558 -> event:Added route:fd00:1111:0::/48 flags:s pref:med rloc16:0x3c00
339Done
340```
341
342### router
343
344Usage `history router [list] [<num-entries>]`
345
346Print the route table history. Each item provides:
347
348- Event (`Added`, `Removed`, `NextHopChanged`, `CostChanged`)
349- Router ID and RLOC16 of router
350- Next Hop (Router ID and RLOC16) - `none` if no next hop.
351- Path cost (old `->` new) - `inf` to indicate infinite path cost.
352
353Print the history as a table.
354
355```bash
356> history router
357| Age                  | Event          | ID (RLOC16) | Next Hop    | Path Cost  |
358+----------------------+----------------+-------------+-------------+------------+
359|         00:00:05.258 | NextHopChanged |  7 (0x1c00) | 34 (0x8800) | inf ->   3 |
360|         00:00:08.604 | NextHopChanged | 34 (0x8800) | 34 (0x8800) | inf ->   2 |
361|         00:00:08.604 | Added          |  7 (0x1c00) |        none | inf -> inf |
362|         00:00:11.931 | Added          | 34 (0x8800) |        none | inf -> inf |
363|         00:00:14.948 | Removed        | 59 (0xec00) |        none | inf -> inf |
364|         00:00:14.948 | Removed        | 54 (0xd800) |        none | inf -> inf |
365|         00:00:14.948 | Removed        | 34 (0x8800) |        none | inf -> inf |
366|         00:00:14.948 | Removed        |  7 (0x1c00) |        none | inf -> inf |
367|         00:00:54.795 | NextHopChanged | 59 (0xec00) | 34 (0x8800) |   1 ->   5 |
368|         00:02:33.735 | NextHopChanged | 54 (0xd800) |        none |  15 -> inf |
369|         00:03:10.915 | CostChanged    | 54 (0xd800) | 34 (0x8800) |  13 ->  15 |
370|         00:03:45.716 | NextHopChanged | 54 (0xd800) | 34 (0x8800) |  15 ->  13 |
371|         00:03:46.188 | CostChanged    | 54 (0xd800) | 59 (0xec00) |  13 ->  15 |
372|         00:04:19.124 | CostChanged    | 54 (0xd800) | 59 (0xec00) |  11 ->  13 |
373|         00:04:52.008 | CostChanged    | 54 (0xd800) | 59 (0xec00) |   9 ->  11 |
374|         00:05:23.176 | CostChanged    | 54 (0xd800) | 59 (0xec00) |   7 ->   9 |
375|         00:05:51.081 | CostChanged    | 54 (0xd800) | 59 (0xec00) |   5 ->   7 |
376|         00:06:48.721 | CostChanged    | 54 (0xd800) | 59 (0xec00) |   3 ->   5 |
377|         00:07:13.792 | NextHopChanged | 54 (0xd800) | 59 (0xec00) |   1 ->   3 |
378|         00:09:28.681 | NextHopChanged |  7 (0x1c00) | 34 (0x8800) | inf ->   3 |
379|         00:09:31.882 | Added          |  7 (0x1c00) |        none | inf -> inf |
380|         00:09:51.240 | NextHopChanged | 54 (0xd800) | 54 (0xd800) | inf ->   1 |
381|         00:09:54.204 | Added          | 54 (0xd800) |        none | inf -> inf |
382|         00:10:20.645 | NextHopChanged | 34 (0x8800) | 34 (0x8800) | inf ->   2 |
383|         00:10:24.242 | NextHopChanged | 59 (0xec00) | 59 (0xec00) | inf ->   1 |
384|         00:10:24.242 | Added          | 34 (0x8800) |        none | inf -> inf |
385|         00:10:41.900 | NextHopChanged | 59 (0xec00) |        none |   1 -> inf |
386|         00:10:42.480 | Added          |  3 (0x0c00) |  3 (0x0c00) | inf -> inf |
387|         00:10:43.614 | Added          | 59 (0xec00) | 59 (0xec00) | inf ->   1 |
388Done
389```
390
391Print the history as a list (last 20 entries).
392
393```bash
394> history router list 20
39500:00:06.959 -> event:NextHopChanged router:7(0x1c00) nexthop:34(0x8800) old-cost:inf new-cost:3
39600:00:10.305 -> event:NextHopChanged router:34(0x8800) nexthop:34(0x8800) old-cost:inf new-cost:2
39700:00:10.305 -> event:Added router:7(0x1c00) nexthop:none old-cost:inf new-cost:inf
39800:00:13.632 -> event:Added router:34(0x8800) nexthop:none old-cost:inf new-cost:inf
39900:00:16.649 -> event:Removed router:59(0xec00) nexthop:none old-cost:inf new-cost:inf
40000:00:16.649 -> event:Removed router:54(0xd800) nexthop:none old-cost:inf new-cost:inf
40100:00:16.649 -> event:Removed router:34(0x8800) nexthop:none old-cost:inf new-cost:inf
40200:00:16.649 -> event:Removed router:7(0x1c00) nexthop:none old-cost:inf new-cost:inf
40300:00:56.496 -> event:NextHopChanged router:59(0xec00) nexthop:34(0x8800) old-cost:1 new-cost:5
40400:02:35.436 -> event:NextHopChanged router:54(0xd800) nexthop:none old-cost:15 new-cost:inf
40500:03:12.616 -> event:CostChanged router:54(0xd800) nexthop:34(0x8800) old-cost:13 new-cost:15
40600:03:47.417 -> event:NextHopChanged router:54(0xd800) nexthop:34(0x8800) old-cost:15 new-cost:13
40700:03:47.889 -> event:CostChanged router:54(0xd800) nexthop:59(0xec00) old-cost:13 new-cost:15
40800:04:20.825 -> event:CostChanged router:54(0xd800) nexthop:59(0xec00) old-cost:11 new-cost:13
40900:04:53.709 -> event:CostChanged router:54(0xd800) nexthop:59(0xec00) old-cost:9 new-cost:11
41000:05:24.877 -> event:CostChanged router:54(0xd800) nexthop:59(0xec00) old-cost:7 new-cost:9
41100:05:52.782 -> event:CostChanged router:54(0xd800) nexthop:59(0xec00) old-cost:5 new-cost:7
41200:06:50.422 -> event:CostChanged router:54(0xd800) nexthop:59(0xec00) old-cost:3 new-cost:5
41300:07:15.493 -> event:NextHopChanged router:54(0xd800) nexthop:59(0xec00) old-cost:1 new-cost:3
41400:09:30.382 -> event:NextHopChanged router:7(0x1c00) nexthop:34(0x8800) old-cost:inf new-cost:3
415Done
416```
417
418### rx
419
420Usage `history rx [list] [<num-entries>]`
421
422Print the IPv6 message RX history in either table or list format. Entries provide same information and follow same format as in `history rxtx` command.
423
424Print the IPv6 message RX history as a table:
425
426```bash
427> history rx
428| Age                  | Type             | Len   | Chksum | Sec | Prio | RSS  |Dir | Neighb | Radio |
429+----------------------+------------------+-------+--------+-----+------+------+----+--------+-------+
430|                      | UDP              |    50 | 0xbd26 |  no |  net |  -20 | RX | 0x4800 |  15.4 |
431|         00:00:07.640 | src: [fe80:0:0:0:d03d:d3e7:cc5e:7cd7]:19788                                 |
432|                      | dst: [ff02:0:0:0:0:0:0:1]:19788                                             |
433+----------------------+------------------+-------+--------+-----+------+------+----+--------+-------+
434|                      | HopOpts          |    44 | 0x0000 | yes | norm |  -20 | RX | 0x4800 |  15.4 |
435|         00:00:09.263 | src: [fdde:ad00:beef:0:0:ff:fe00:4800]:0                                    |
436|                      | dst: [ff03:0:0:0:0:0:0:2]:0                                                 |
437+----------------------+------------------+-------+--------+-----+------+------+----+--------+-------+
438|                      | UDP              |    12 | 0x3f7d | yes |  net |  -20 | RX | 0x4800 |  15.4 |
439|         00:00:09.302 | src: [fdde:ad00:beef:0:0:ff:fe00:4800]:61631                                |
440|                      | dst: [fdde:ad00:beef:0:0:ff:fe00:4801]:61631                                |
441+----------------------+------------------+-------+--------+-----+------+------+----+--------+-------+
442|                      | ICMP6(EchoReqst) |    16 | 0x942c | yes | norm |  -20 | RX | 0x4800 |  15.4 |
443|         00:00:09.304 | src: [fdde:ad00:beef:0:ac09:a16b:3204:dc09]:0                               |
444|                      | dst: [fdde:ad00:beef:0:dc0e:d6b3:f180:b75b]:0                               |
445+----------------------+------------------+-------+--------+-----+------+------+----+--------+-------+
446|                      | HopOpts          |    44 | 0x0000 | yes | norm |  -20 | RX | 0x4800 |  15.4 |
447|         00:00:09.304 | src: [fdde:ad00:beef:0:0:ff:fe00:4800]:0                                    |
448|                      | dst: [ff03:0:0:0:0:0:0:2]:0                                                 |
449+----------------------+------------------+-------+--------+-----+------+------+----+--------+-------+
450|                      | UDP              |    50 | 0x2e37 |  no |  net |  -20 | RX | 0x4800 |  15.4 |
451|         00:00:21.622 | src: [fe80:0:0:0:d03d:d3e7:cc5e:7cd7]:19788                                 |
452|                      | dst: [ff02:0:0:0:0:0:0:1]:19788                                             |
453+----------------------+------------------+-------+--------+-----+------+------+----+--------+-------+
454|                      | UDP              |    50 | 0xe177 |  no |  net |  -20 | RX | 0x4800 |  15.4 |
455|         00:00:26.640 | src: [fe80:0:0:0:d03d:d3e7:cc5e:7cd7]:19788                                 |
456|                      | dst: [ff02:0:0:0:0:0:0:1]:19788                                             |
457+----------------------+------------------+-------+--------+-----+------+------+----+--------+-------+
458|                      | UDP              |   165 | 0x82ee | yes |  net |  -20 | RX | 0x4800 |  15.4 |
459|         00:00:30.000 | src: [fe80:0:0:0:d03d:d3e7:cc5e:7cd7]:19788                                 |
460|                      | dst: [fe80:0:0:0:a4a5:bbac:a8e:bd07]:19788                                  |
461+----------------------+------------------+-------+--------+-----+------+------+----+--------+-------+
462|                      | UDP              |    93 | 0x52df |  no |  net |  -20 | RX | unknwn |  15.4 |
463|         00:00:30.480 | src: [fe80:0:0:0:d03d:d3e7:cc5e:7cd7]:19788                                 |
464|                      | dst: [fe80:0:0:0:a4a5:bbac:a8e:bd07]:19788                                  |
465+----------------------+------------------+-------+--------+-----+------+------+----+--------+-------+
466|                      | UDP              |    50 | 0x5ccf |  no |  net |  -20 | RX | unknwn |  15.4 |
467|         00:00:30.772 | src: [fe80:0:0:0:d03d:d3e7:cc5e:7cd7]:19788                                 |
468|                      | dst: [ff02:0:0:0:0:0:0:1]:19788                                             |
469Done
470
471```
472
473Print the latest 5 entries of the IPv6 message RX history as a list:
474
475```bash
476> history rx list 4
47700:00:13.368
478    type:UDP len:50 checksum:0xbd26 sec:no prio:net rss:-20 from:0x4800 radio:15.4
479    src:[fe80:0:0:0:d03d:d3e7:cc5e:7cd7]:19788
480    dst:[ff02:0:0:0:0:0:0:1]:19788
48100:00:14.991
482    type:HopOpts len:44 checksum:0x0000 sec:yes prio:norm rss:-20 from:0x4800 radio:15.4
483    src:[fdde:ad00:beef:0:0:ff:fe00:4800]:0
484    dst:[ff03:0:0:0:0:0:0:2]:0
48500:00:15.030
486    type:UDP len:12 checksum:0x3f7d sec:yes prio:net rss:-20 from:0x4800 radio:15.4
487    src:[fdde:ad00:beef:0:0:ff:fe00:4800]:61631
488    dst:[fdde:ad00:beef:0:0:ff:fe00:4801]:61631
48900:00:15.032
490    type:ICMP6(EchoReqst) len:16 checksum:0x942c sec:yes prio:norm rss:-20 from:0x4800 radio:15.4
491    src:[fdde:ad00:beef:0:ac09:a16b:3204:dc09]:0
492    dst:[fdde:ad00:beef:0:dc0e:d6b3:f180:b75b]:0
493Done
494```
495
496### rxtx
497
498Usage `history rxtx [list] [<num-entries>]`
499
500Print the combined IPv6 message RX and TX history in either table or list format. Each entry provides:
501
502- IPv6 message type: UDP, TCP, ICMP6 (and its subtype), etc.
503- IPv6 payload length (excludes the IPv6 header).
504- Source IPv6 address and port number.
505- Destination IPv6 address and port number (port number is valid for UDP/TCP, it is zero otherwise).
506- Whether or not link-layer security was used.
507- Message priority: low, norm, high, net (for Thread control messages).
508- Message checksum (valid for UDP, TCP, or ICMP6 message)
509- RSS: Received Signal Strength (in dBm) - averaged over all received fragment frames that formed the message. For TX history `NA` (not applicable) is used.
510- Whether the message was sent or received (`TX` or `RX`). A failed transmission (e.g., if tx was aborted or no ack from peer for any of the message fragments) is indicated with `TX-F` in the table format or `tx-success:no` in the list format.
511- Short address (RLOC16) of neighbor to/from which the message was sent/received. If the frame is broadcast, it is shown as `bcast` in table format or `0xffff` in the list format. If the short address of neighbor is not available, it is shown as `unknwn` in the table format or `0xfffe` in the list format.
512- Radio link on which the message was sent/received (useful when `OPENTHREAD_CONFIG_MULTI_RADIO` is enabled). Can be `15.4`, `trel`, or `all` (if sent on all radio links).
513
514Print the IPv6 message RX and TX history as a table:
515
516```bash
517> history rxtx
518| Age                  | Type             | Len   | Chksum | Sec | Prio | RSS  |Dir | Neighb | Radio |
519+----------------------+------------------+-------+--------+-----+------+------+----+--------+-------+
520|                      | HopOpts          |    44 | 0x0000 | yes | norm |  -20 | RX | 0x0800 |  15.4 |
521|         00:00:09.267 | src: [fdde:ad00:beef:0:0:ff:fe00:800]:0                                     |
522|                      | dst: [ff03:0:0:0:0:0:0:2]:0                                                 |
523+----------------------+------------------+-------+--------+-----+------+------+----+--------+-------+
524|                      | UDP              |    12 | 0x6c6b | yes |  net |  -20 | RX | 0x0800 |  15.4 |
525|         00:00:09.290 | src: [fdde:ad00:beef:0:0:ff:fe00:800]:61631                                 |
526|                      | dst: [fdde:ad00:beef:0:0:ff:fe00:801]:61631                                 |
527+----------------------+------------------+-------+--------+-----+------+------+----+--------+-------+
528|                      | ICMP6(EchoReqst) |    16 | 0xc6a2 | yes | norm |  -20 | RX | 0x0800 |  15.4 |
529|         00:00:09.292 | src: [fdde:ad00:beef:0:efe8:4910:cf95:dee9]:0                               |
530|                      | dst: [fdde:ad00:beef:0:af4c:3644:882a:3698]:0                               |
531+----------------------+------------------+-------+--------+-----+------+------+----+--------+-------+
532|                      | ICMP6(EchoReply) |    16 | 0xc5a2 | yes | norm |  NA  | TX | 0x0800 |  15.4 |
533|         00:00:09.292 | src: [fdde:ad00:beef:0:af4c:3644:882a:3698]:0                               |
534|                      | dst: [fdde:ad00:beef:0:efe8:4910:cf95:dee9]:0                               |
535+----------------------+------------------+-------+--------+-----+------+------+----+--------+-------+
536|                      | UDP              |    50 | 0xaa0d | yes |  net |  NA  | TX | 0x0800 |  15.4 |
537|         00:00:09.294 | src: [fdde:ad00:beef:0:0:ff:fe00:801]:61631                                 |
538|                      | dst: [fdde:ad00:beef:0:0:ff:fe00:800]:61631                                 |
539+----------------------+------------------+-------+--------+-----+------+------+----+--------+-------+
540|                      | HopOpts          |    44 | 0x0000 | yes | norm |  -20 | RX | 0x0800 |  15.4 |
541|         00:00:09.296 | src: [fdde:ad00:beef:0:0:ff:fe00:800]:0                                     |
542|                      | dst: [ff03:0:0:0:0:0:0:2]:0                                                 |
543+----------------------+------------------+-------+--------+-----+------+------+----+--------+-------+
544|                      | UDP              |    50 | 0xc1d8 |  no |  net |  -20 | RX | 0x0800 |  15.4 |
545|         00:00:09.569 | src: [fe80:0:0:0:54d9:5153:ffc6:df26]:19788                                 |
546|                      | dst: [ff02:0:0:0:0:0:0:1]:19788                                             |
547+----------------------+------------------+-------+--------+-----+------+------+----+--------+-------+
548|                      | UDP              |    50 | 0x3cb1 |  no |  net |  -20 | RX | 0x0800 |  15.4 |
549|         00:00:16.519 | src: [fe80:0:0:0:54d9:5153:ffc6:df26]:19788                                 |
550|                      | dst: [ff02:0:0:0:0:0:0:1]:19788                                             |
551+----------------------+------------------+-------+--------+-----+------+------+----+--------+-------+
552|                      | UDP              |    50 | 0xeda0 |  no |  net |  -20 | RX | 0x0800 |  15.4 |
553|         00:00:20.599 | src: [fe80:0:0:0:54d9:5153:ffc6:df26]:19788                                 |
554|                      | dst: [ff02:0:0:0:0:0:0:1]:19788                                             |
555+----------------------+------------------+-------+--------+-----+------+------+----+--------+-------+
556|                      | UDP              |   165 | 0xbdfa | yes |  net |  -20 | RX | 0x0800 |  15.4 |
557|         00:00:21.059 | src: [fe80:0:0:0:54d9:5153:ffc6:df26]:19788                                 |
558|                      | dst: [fe80:0:0:0:8893:c2cc:d983:1e1c]:19788                                 |
559+----------------------+------------------+-------+--------+-----+------+------+----+--------+-------+
560|                      | UDP              |    64 | 0x1c11 |  no |  net |  NA  | TX | 0x0800 |  15.4 |
561|         00:00:21.062 | src: [fe80:0:0:0:8893:c2cc:d983:1e1c]:19788                                 |
562|                      | dst: [fe80:0:0:0:54d9:5153:ffc6:df26]:19788                                 |
563+----------------------+------------------+-------+--------+-----+------+------+----+--------+-------+
564|                      | UDP              |    93 | 0xedff |  no |  net |  -20 | RX | unknwn |  15.4 |
565|         00:00:21.474 | src: [fe80:0:0:0:54d9:5153:ffc6:df26]:19788                                 |
566|                      | dst: [fe80:0:0:0:8893:c2cc:d983:1e1c]:19788                                 |
567+----------------------+------------------+-------+--------+-----+------+------+----+--------+-------+
568|                      | UDP              |    44 | 0xd383 |  no |  net |  NA  | TX | bcast  |  15.4 |
569|         00:00:21.811 | src: [fe80:0:0:0:8893:c2cc:d983:1e1c]:19788                                 |
570|                      | dst: [ff02:0:0:0:0:0:0:2]:19788                                             |
571Done
572```
573
574Print the latest 5 entries of the IPv6 message RX history as a list:
575
576```bash
577> history rxtx list 5
578
57900:00:02.100
580    type:UDP len:50 checksum:0xd843 sec:no prio:net rss:-20 from:0x0800 radio:15.4
581    src:[fe80:0:0:0:54d9:5153:ffc6:df26]:19788
582    dst:[ff02:0:0:0:0:0:0:1]:19788
58300:00:15.331
584    type:HopOpts len:44 checksum:0x0000 sec:yes prio:norm rss:-20 from:0x0800 radio:15.4
585    src:[fdde:ad00:beef:0:0:ff:fe00:800]:0
586    dst:[ff03:0:0:0:0:0:0:2]:0
58700:00:15.354
588    type:UDP len:12 checksum:0x6c6b sec:yes prio:net rss:-20 from:0x0800 radio:15.4
589    src:[fdde:ad00:beef:0:0:ff:fe00:800]:61631
590    dst:[fdde:ad00:beef:0:0:ff:fe00:801]:61631
59100:00:15.356
592    type:ICMP6(EchoReqst) len:16 checksum:0xc6a2 sec:yes prio:norm rss:-20 from:0x0800 radio:15.4
593    src:[fdde:ad00:beef:0:efe8:4910:cf95:dee9]:0
594    dst:[fdde:ad00:beef:0:af4c:3644:882a:3698]:0
59500:00:15.356
596    type:ICMP6(EchoReply) len:16 checksum:0xc5a2 sec:yes prio:norm tx-success:yes to:0x0800 radio:15.4
597    src:[fdde:ad00:beef:0:af4c:3644:882a:3698]:0
598    dst:[fdde:ad00:beef:0:efe8:4910:cf95:dee9]:0
599```
600
601### tx
602
603Usage `history tx [list] [<num-entries>]`
604
605Print the IPv6 message TX history in either table or list format. Entries provide same information and follow same format as in `history rxtx` command.
606
607Print the IPv6 message TX history as a table (10 latest entries):
608
609```bash
610> history tx
611| Age                  | Type             | Len   | Chksum | Sec | Prio | RSS  |Dir | Neighb | Radio |
612+----------------------+------------------+-------+--------+-----+------+------+----+--------+-------+
613|                      | ICMP6(EchoReply) |    16 | 0x932c | yes | norm |  NA  | TX | 0x4800 |  15.4 |
614|         00:00:18.798 | src: [fdde:ad00:beef:0:dc0e:d6b3:f180:b75b]:0                               |
615|                      | dst: [fdde:ad00:beef:0:ac09:a16b:3204:dc09]:0                               |
616+----------------------+------------------+-------+--------+-----+------+------+----+--------+-------+
617|                      | UDP              |    50 | 0xce87 | yes |  net |  NA  | TX | 0x4800 |  15.4 |
618|         00:00:18.800 | src: [fdde:ad00:beef:0:0:ff:fe00:4801]:61631                                |
619|                      | dst: [fdde:ad00:beef:0:0:ff:fe00:4800]:61631                                |
620+----------------------+------------------+-------+--------+-----+------+------+----+--------+-------+
621|                      | UDP              |    64 | 0xf7ba |  no |  net |  NA  | TX | 0x4800 |  15.4 |
622|         00:00:39.499 | src: [fe80:0:0:0:a4a5:bbac:a8e:bd07]:19788                                  |
623|                      | dst: [fe80:0:0:0:d03d:d3e7:cc5e:7cd7]:19788                                 |
624+----------------------+------------------+-------+--------+-----+------+------+----+--------+-------+
625|                      | UDP              |    44 | 0x26d4 |  no |  net |  NA  | TX | bcast  |  15.4 |
626|         00:00:40.256 | src: [fe80:0:0:0:a4a5:bbac:a8e:bd07]:19788                                  |
627|                      | dst: [ff02:0:0:0:0:0:0:2]:19788                                             |
628Done
629```
630
631Print the IPv6 message TX history as a list:
632
633```bash
634history tx list
63500:00:23.957
636    type:ICMP6(EchoReply) len:16 checksum:0x932c sec:yes prio:norm tx-success:yes to:0x4800 radio:15.4
637    src:[fdde:ad00:beef:0:dc0e:d6b3:f180:b75b]:0
638    dst:[fdde:ad00:beef:0:ac09:a16b:3204:dc09]:0
63900:00:23.959
640    type:UDP len:50 checksum:0xce87 sec:yes prio:net tx-success:yes to:0x4800 radio:15.4
641    src:[fdde:ad00:beef:0:0:ff:fe00:4801]:61631
642    dst:[fdde:ad00:beef:0:0:ff:fe00:4800]:61631
64300:00:44.658
644    type:UDP len:64 checksum:0xf7ba sec:no prio:net tx-success:yes to:0x4800 radio:15.4
645    src:[fe80:0:0:0:a4a5:bbac:a8e:bd07]:19788
646    dst:[fe80:0:0:0:d03d:d3e7:cc5e:7cd7]:19788
64700:00:45.415
648    type:UDP len:44 checksum:0x26d4 sec:no prio:net tx-success:yes to:0xffff radio:15.4
649    src:[fe80:0:0:0:a4a5:bbac:a8e:bd07]:19788
650    dst:[ff02:0:0:0:0:0:0:2]:19788
651Done
652```
653

README_JOINER.md

1# OpenThread CLI - Joiner
2
3## Quick Start
4
5See [README_COMMISSIONING.md](README_COMMISSIONING.md).
6
7## Command List
8
9- [help](#help)
10- [discerner](#discerner)
11- [id](#id)
12- [start](#start)
13- [state](#state)
14- [stop](#stop)
15
16## Command Details
17
18### help
19
20Usage: `joiner help`
21
22Print joiner help menu.
23
24```bash
25> joiner help
26help
27id
28start
29state
30stop
31Done
32```
33
34### discerner
35
36Usage: `joiner discerner [discerner]`
37
38Print or set the Joiner Discerner. Note this value takes the place of the place of EUI-64 during the joiner session of Thread commissioning.
39
40- discerner: `clear` to clear discerner, `number/length` to set discerner
41
42```bash
43> joiner discerner 0xabc/12
44Done
45> joiner discerner
460xabc/12
47Done
48> joiner discerner clear
49Done
50```
51
52### id
53
54Usage: `joiner id`
55
56Print the Joiner ID.
57
58```bash
59> joiner id
60d65e64fa83f81cf7
61Done
62```
63
64### start
65
66Usage: `joiner start <pskd> [provisioning-url]`
67
68Start the Joiner role.
69
70- pskd: Pre-Shared Key for the Joiner.
71- provisioning-url: Provisioning URL for the Joiner (optional).
72
73This command will cause the device to start the Joiner process.
74
75```bash
76> joiner start J01NM3
77Done
78```
79
80### state
81
82Usage: `joiner state`
83
84Print the Joiner state.
85
86- Idle
87- Discover
88- Connecting
89- Connected
90- Entrust
91- Joined
92
93```bash
94> joiner state
95Idle
96Done
97```
98
99### stop
100
101Usage: `joiner stop`
102
103Stop the Joiner role.
104
105```bash
106> joiner stop
107Done
108```
109

README_NETDATA.md

1# OpenThread CLI - Network Data
2
3## Overview
4
5Thread Network Data contains information about Border Routers and other servers available in the Thread network. Border Routers and devices offering services register their information with the Leader. The Leader collects and structures this information within the Thread Network Data and distributes the information to all devices in the Thread Network.
6
7Border Routers may register prefixes assigned to the Thread Network and prefixes that they offer routes for. Services may register any information relevant to the service itself.
8
9Border Router and service information may be stable or temporary. Stable Thread Network Data is distributed to all devices, including Sleepy End Devices (SEDs). Temporary Network Data is distributed to all nodes except SEDs.
10
11## Quick Start
12
13### Form Network and Configure Prefix
14
151. Generate and view new network configuration.
16
17   ```bash
18   > dataset init new
19   Done
20   > dataset
21   Active Timestamp: 1
22   Channel: 13
23   Channel Mask: 0x07fff800
24   Ext PAN ID: d63e8e3e495ebbc3
25   Mesh Local Prefix: fd3d:b50b:f96d:722d::/64
26   Network Key: dfd34f0f05cad978ec4e32b0413038ff
27   Network Name: OpenThread-8f28
28   PAN ID: 0x8f28
29   PSKc: c23a76e98f1a6483639b1ac1271e2e27
30   Security Policy: 0, onrc
31   Done
32   ```
33
342. Commit new dataset to the Active Operational Dataset in non-volatile storage.
35
36   ```bash
37   dataset commit active
38   Done
39   ```
40
413. Enable Thread interface
42
43   ```bash
44   > ifconfig up
45   Done
46   > thread start
47   Done
48   ```
49
504. Observe IPv6 addresses assigned to the Thread interface.
51
52   ```bash
53   > ipaddr
54   fd3d:b50b:f96d:722d:0:ff:fe00:fc00
55   fd3d:b50b:f96d:722d:0:ff:fe00:dc00
56   fd3d:b50b:f96d:722d:393c:462d:e8d2:db32
57   fe80:0:0:0:a40b:197f:593d:ca61
58   Done
59   ```
60
615. Register an IPv6 prefix assigned to the Thread network.
62
63   ```bash
64   > prefix add fd00:dead:beef:cafe::/64 paros
65   Done
66   > netdata register
67   Done
68   ```
69
706. Observe Thread Network Data.
71
72   ```bash
73   > netdata show
74   Prefixes:
75   fd00:dead:beef:cafe::/64 paros med dc00
76   Routes:
77   Services:
78   Done
79   ```
80
817. Observe IPv6 addresses assigned to the Thread interface.
82
83   ```bash
84   > ipaddr
85   fd00:dead:beef:cafe:4da8:5234:4aa2:4cfa
86   fd3d:b50b:f96d:722d:0:ff:fe00:fc00
87   fd3d:b50b:f96d:722d:0:ff:fe00:dc00
88   fd3d:b50b:f96d:722d:393c:462d:e8d2:db32
89   fe80:0:0:0:a40b:197f:593d:ca61
90   Done
91   ```
92
93### Attach to Existing Network
94
95Only the Network Key is required for a device to attach to a Thread network.
96
97While not required, specifying the channel avoids the need to search across multiple channels, improving both latency and efficiency of the attach process.
98
99After the device successfully attaches to a Thread network, the device will retrieve the complete Active Operational Dataset.
100
1011. Create a partial Active Operational Dataset.
102
103   ```bash
104   > dataset networkkey dfd34f0f05cad978ec4e32b0413038ff
105   Done
106   > dataset commit active
107   Done
108   ```
109
1102. Enable Thread interface.
111
112   ```bash
113   > ifconfig up
114   Done
115   > thread start
116   Done
117   ```
118
1193. After attaching, observe Thread Network Data.
120
121   ```bash
122   > netdata show
123   Prefixes:
124   fd00:dead:beef:cafe::/64 paros med dc00
125   Routes:
126   Services:
127   Done
128   ```
129
1304. Observe IPv6 addresses assigned to the Thread interface.
131
132   ```bash
133   > ipaddr
134   fd00:dead:beef:cafe:4da8:5234:4aa2:4cfa
135   fd3d:b50b:f96d:722d:0:ff:fe00:fc00
136   fd3d:b50b:f96d:722d:0:ff:fe00:dc00
137   fd3d:b50b:f96d:722d:393c:462d:e8d2:db32
138   fe80:0:0:0:a40b:197f:593d:ca61
139   Done
140   ```
141
142## Command List
143
144- [help](#help)
145- [full](#full)
146- [length](#length)
147- [maxlength](#maxlength)
148- [publish](#publish)
149- [register](#register)
150- [show](#show)
151- [steeringdata](#steeringdata-check-eui64discerner)
152- [unpublish](#unpublish)
153
154## Command Details
155
156### help
157
158Usage: `netdata help`
159
160Print netdata help menu.
161
162```bash
163> netdata help
164full
165length
166maxlength
167publish
168register
169show
170steeringdata
171unpublish
172Done
173```
174
175### full
176
177Usage: `netdata full`
178
179Print "yes" or "no" flag tracking whether or not the "net data full" callback has been invoked since start of Thread operation or since the last time `netdata full reset` was used to reset the flag.
180
181This command requires `OPENTHREAD_CONFIG_BORDER_ROUTER_SIGNAL_NETWORK_DATA_FULL`.
182
183The "net data full" callback is invoked whenever:
184
185- The device is acting as a leader and receives a Network Data registration from a Border Router (BR) that it cannot add to Network Data (running out of space).
186- The device is acting as a BR and new entries cannot be added to its local Network Data.
187- The device is acting as a BR and tries to register its local Network Data entries with the leader, but determines that its local entries will not fit.
188
189```
190> netdata full
191no
192Done
193```
194
195### full reset
196
197Usage: `netdata full reset`
198
199Reset the flag tracking whether "net data full" callback was invoked.
200
201This command requires `OPENTHREAD_CONFIG_BORDER_ROUTER_SIGNAL_NETWORK_DATA_FULL`.
202
203```
204> netdata full reset
205Done
206```
207
208### length
209
210Usage: `netdata length`
211
212Get the current length of (number of bytes) Partition's Thread Network Data.
213
214```bash
215> netdata length
21623
217Done
218```
219
220### maxlength
221
222Usage: `netdata maxlength`
223
224Get the maximum observed length of the Thread Network Data since OT stack initialization or since the last call to `netdata maxlength reset`.
225
226```bash
227> netdata maxlength
22840
229Done
230```
231
232### maxlength reset
233
234Usage: `netdata maxlength reset`
235
236Reset the tracked maximum length of the Thread Network Data.
237
238```bash
239> netdata maxlength reset
240Done
241```
242
243### publish
244
245The Network Data Publisher provides mechanisms to limit the number of similar Service and/or Prefix (on-mesh prefix or external route) entries in the Thread Network Data by monitoring the Network Data and managing if or when to add or remove entries.
246
247The Publisher requires `OPENTHREAD_CONFIG_NETDATA_PUBLISHER_ENABLE`.
248
249### publish dnssrp
250
251Publish DNS/SRP service entry.
252
253This command requires `OPENTHREAD_CONFIG_TMF_NETDATA_SERVICE_ENABLE`.
254
255The following formats are available: :
256
257- `netdata publish dnssrp anycast <seq-num>` to publish "DNS/SRP Service Anycast Address" with a given sequence number.
258- `netdata publish dnssrp unicast <address> <port>` to publish "DNS/SRP Service Unicast Address" with given address and port number info. The address/port info is included in Service TLV data.
259- `netdata publish dnssrp unicast <port>` to publish "DNS/SRP Service Unicast Address" with given port number and the device's mesh-local EID for the address. The address and port info is included in Server TLV data.
260
261A new call to `netdata publish dnssrp [anycast|unicast] [...]` command will remove and replace any previous "DNS/SRP Service" entry that was being published (from earlier `netdata publish dnssrp [...]` commands).
262
263```bash
264> netdata publish dnssrp anycast 1
265Done
266
267> netdata publish dnssrp unicast fd00::1234 51525
268Done
269
270> netdata publish dnssrp unicast 50152
271Done
272```
273
274### publish prefix \<prefix\> [padcrosnD][prf]
275
276Publish an on-mesh prefix entry.
277
278- p: Preferred flag
279- a: Stateless IPv6 Address Autoconfiguration flag
280- d: DHCPv6 IPv6 Address Configuration flag
281- c: DHCPv6 Other Configuration flag
282- r: Default Route flag
283- o: On Mesh flag
284- s: Stable flag
285- n: Nd Dns flag
286- D: Domain Prefix flag (only available for Thread 1.2).
287- prf: Preference, which may be 'high', 'med', or 'low'.
288
289```bash
290> netdata publish prefix fd00:1234:5678::/64 paos med
291Done
292```
293
294### publish route \<prefix\> [sn][prf]
295
296Publish an external route entry.
297
298- s: Stable flag
299- n: NAT64 flag
300- a: Advertising PIO (AP) flag
301- prf: Preference, which may be: 'high', 'med', or 'low'.
302
303```bash
304> netdata publish route fd00:1234:5678::/64 s high
305Done
306```
307
308### publish replace \<old prefix\> \<prefix\> [sn][prf]
309
310Replace a previously published external route entry.
311
312If there is no previously published external route matching old prefix, this command behaves similarly to `netdata publish route`. If there is a previously published route entry, it will be replaced with the new prefix. In particular, if the old prefix was already added in the Network Data, the change to the new prefix is immediately reflected in the Network Data (i.e., old prefix is removed and the new prefix is added in the same Network Data registration request to leader). This ensures that route entries in the Network Data are not abruptly removed.
313
314- s: Stable flag
315- n: NAT64 flag
316- a: Advertising PIO (AP) flag
317- prf: Preference, which may be: 'high', 'med', or 'low'.
318
319```bash
320> netdata publish replace ::/0 fd00:1234:5678::/64 s high
321Done
322```
323
324### register
325
326Usage: `netdata register`
327
328Register configured prefixes, routes, and services with the Leader.
329
330```bash
331> netdata register
332Done
333```
334
335### show
336
337Usage: `netdata show [local] [-x] [\<rloc16\>]`
338
339Print entries in Network Data, on-mesh prefixes, external routes, services, and 6LoWPAN context information.
340
341If the optional `rloc16` input is specified, prints the entries associated with the given RLOC16 only. The RLOC16 filtering can be used when `-x` or `local` are not used.
342
343On-mesh prefixes are listed under `Prefixes` header:
344
345- The on-mesh prefix
346- Flags
347  - p: Preferred flag
348  - a: Stateless IPv6 Address Autoconfiguration flag
349  - d: DHCPv6 IPv6 Address Configuration flag
350  - c: DHCPv6 Other Configuration flag
351  - r: Default Route flag
352  - o: On Mesh flag
353  - s: Stable flag
354  - n: Nd Dns flag
355  - D: Domain Prefix flag (only available for Thread 1.2).
356- Preference `high`, `med`, or `low`
357- RLOC16 of device which added the on-mesh prefix
358
359External Routes are listed under `Routes` header:
360
361- The route prefix
362- Flags
363  - s: Stable flag
364  - n: NAT64 flag
365  - a: Advertising PIO (AP) flag
366- Preference `high`, `med`, or `low`
367- RLOC16 of device which added the route prefix
368
369Service entries are listed under `Services` header:
370
371- Enterprise number
372- Service data (as hex bytes)
373- Server data (as hex bytes)
374- Flags
375  - s: Stable flag
376- RLOC16 of devices which added the service entry
377
3786LoWPAN Context IDs are listed under `Contexts` header:
379
380- The prefix
381- Context ID
382- Compress flag (`c` if marked or `-` otherwise).
383
384Commissioning Dataset information is printed under `Commissioning` header:
385
386- Session ID if present in Dataset or `-` otherwise
387- Border Agent RLOC16 (in hex) if present in Dataset or `-` otherwise
388- Joiner UDP port number if present in Dataset or `-` otherwise
389- Steering Data (as hex bytes) if present in Dataset or `-` otherwise
390- Flags:
391  - e: if Dataset contains any extra unknown TLV
392
393Print Network Data received from the Leader.
394
395```bash
396> netdata show
397Prefixes:
398fd00:dead:beef:cafe::/64 paros med a000
399Routes:
400fd00:1234:0:0::/64 s med a000
401fd00:4567:0:0::/64 s med 8000
402Services:
40344970 5d fddead00beef00007bad0069ce45948504d2 s a000
404Contexts:
405fd00:dead:beef:cafe::/64 1 c
406Commissioning:
4071248 dc00 9988 00000000000120000000000000000000 e
408Done
409```
410
411Print Network Data entries from the Leader associated with `0xa00` RLOC16.
412
413```bash
414> netdata show 0xa00
415Prefixes:
416fd00:dead:beef:cafe::/64 paros med a000
417Routes:
418fd00:1234:0:0::/64 s med a000
419Services:
42044970 5d fddead00beef00007bad0069ce45948504d2 s a000
421Done
422```
423
424Print Network Data received from the Leader as hex-encoded TLVs.
425
426```bash
427> netdata show -x
42808040b02174703140040fd00deadbeefcafe0504dc00330007021140
429Done
430```
431
432Print local Network Data to sync with Leader.
433
434```bash
435> netdata show local
436Prefixes:
437fd00:dead:beef:cafe::/64 paros med dc00
438Routes:
439Services:
440Done
441```
442
443Print local Network Data to sync with Leader as hex-encoded TLVs.
444
445```bash
446> netdata show local -x
44708040b02174703140040fd00deadbeefcafe0504dc00330007021140
448Done
449```
450
451### netdata steeringdata check \<eui64\>|\<discerner\>
452
453Check whether the steering data includes a joiner.
454
455- eui64: The IEEE EUI-64 of the Joiner.
456- discerner: The Joiner discerner in format `number/length`.
457
458```bash
459> netdata steeringdata check d45e64fa83f81cf7
460Done
461> netdata steeringdata check 0xabc/12
462Done
463> netdata steeringdata check 0xdef/12
464Error 23: NotFound
465```
466
467### unpublish
468
469This command unpublishes a previously published Network Data entry.
470
471This command requires `OPENTHREAD_CONFIG_NETDATA_PUBLISHER_ENABLE`.
472
473### unpublish dnssrp
474
475Unpublishes DNS/SRP Service entry (available when `OPENTHREAD_CONFIG_TMF_NETDATA_SERVICE_ENABLE` is enabled):
476
477- `netdata unpublish dnssrp` to unpublish "DNS/SRP Service" entry (anycast or unciast).
478
479```bash
480> netdata unpublish dnssrp
481Done
482```
483
484### unpublish \<prefix\>
485
486Unpublishes a previously published on-mesh prefix or external route entry.
487
488```bash
489> netdata unpublish fd00:1234:5678::/64
490Done
491```
492

README_SRP.md

1# OpenThread CLI - SRP (Service Registration Protocol)
2
3## Quick Start
4
5### Start SRP Server
6
7Start the SRP Server node:
8
9```bash
10./output/simulation/bin/ot-cli-ftd 1
11```
12
13Setup a Thread network and start the SRP Server:
14
15```bash
16> dataset init new
17Done
18> dataset
19Active Timestamp: 1
20Channel: 22
21Channel Mask: 0x07fff800
22Ext PAN ID: 8d6ed7a05a28fb3b
23Mesh Local Prefix: fded:5114:8263:1fe1::/64
24Network Key: 7fcbae4153cc2955c28440c15d4d4219
25Network Name: OpenThread-f7af
26PAN ID: 0xf7af
27PSKc: b658e40f174e3a11be149b302ef07a0f
28Security Policy: 672, onrc
29Done
30> dataset commit active
31Done
32> ifconfig up
33Done
34> thread start
35Done
36> state
37leader
38Done
39>ipaddr
40fded:5114:8263:1fe1:0:ff:fe00:fc00
41fded:5114:8263:1fe1:0:ff:fe00:c000
42fded:5114:8263:1fe1:68bc:ec03:c1ad:9325
43fe80:0:0:0:a8cd:6e23:df3d:4193
44Done
45> srp server enable
46Done
47```
48
49### Start SRP Client
50
51Start the SRP Client node:
52
53```bash
54./output/simulation/bin/ot-cli-ftd 2
55```
56
57Join the Thread Network and register a `_ipps._tcp` service:
58
59```bash
60> dataset networkkey 7fcbae4153cc2955c28440c15d4d4219
61Done
62> dataset commit active
63Done
64> ifconfig up
65Done
66> thread start
67Done
68> state
69child
70Done
71> ipaddr
72fded:5114:8263:1fe1:0:ff:fe00:c001
73fded:5114:8263:1fe1:44f9:cc06:4a2d:534
74fe80:0:0:0:38dd:fdf7:5fd:24e
75Done
76> srp client host name my-host
77Done
78> srp client host address fded:5114:8263:1fe1:44f9:cc06:4a2d:534
79Done
80> srp client service add my-service _ipps._tcp 12345
81Done
82> srp client autostart enable
83Done
84```
85
86The last command enables the auto-start mode on the client which then monitors the network data to discover available SRP servers within the Thread network and automatically starts the client.
87
88Alternatively, the client can be started manually using the `srp client start`.
89
90The SRP Server listening UDP port (which is `c002`(`49154`) in the example below) can be found from the Server Data (listed by the `netdata show` command).
91
92Make sure the SRP Server address & port are used for the `srp client start` command.
93
94```bash
95> netdata show
96Prefixes:
97Routes:
98Services:
9944970 5d c002 s 8400
100Done
101> srp client start fded:5114:8263:1fe1:68bc:ec03:c1ad:9325 49154
102Done
103```
104
105### Verify the service status
106
107Check if the host and service has been successfully registered on the client node:
108
109```bash
110> srp client host
111name:"my-host", state:Registered, addrs:[fded:5114:8263:1fe1:44f9:cc06:4a2d:534]
112Done
113> srp client service
114instance:"my-service", name:"_ipps._tcp", state:Registered, port:12345, priority:0, weight:0
115Done
116```
117
118Make sure it shows `state:Registered` for both host and service commands.
119
120Check the host & service on the server node:
121
122```bash
123> srp server host
124my-host.default.service.arpa.
125    deleted: false
126    addresses: [fded:5114:8263:1fe1:44f9:cc06:4a2d:534]
127Done
128> srp server service
129my-service._ipps._tcp.default.service.arpa.
130    deleted: false
131    port: 12345
132    priority: 0
133    weight: 0
134    ttl: 7200
135    lease: 7200
136    key-lease: 1209600
137    TXT: []
138    host: my-host.default.service.arpa.
139    addresses: [fded:5114:8263:1fe1:44f9:cc06:4a2d:534]
140Done
141```
142
143Make sure it shows `deleted: false` for both host and service commands.
144
145### Remove the service
146
147A service can be removed through the client node:
148
149```bash
150> srp client service remove my-service _ipps._tcp
151Done
152```
153
154Confirm on the server node that the service has been removed:
155
156```bash
157> srp server service
158my-service._ipps._tcp.default.service.arpa.
159    deleted: true
160Done
161```
162
163The service entry is listed because the name of service is not removed.
164
165### Remove the host and service names
166
167A host and service, along with their names, can be removed through the client node:
168
169```bash
170> srp client host remove 1
171Done
172```
173
174Confirm on the server node that no host or service entries are listed:
175
176```bash
177> srp server host
178Done
179> srp server service
180Done
181>
182```
183
184## CLI Reference
185
186- [SRP Client CLI Reference](README_SRP_CLIENT.md)
187- [SRP Server CLI Reference](README_SRP_SERVER.md)
188

README_SRP_CLIENT.md

1# OpenThread CLI - SRP Client
2
3## Command List
4
5Usage : `srp client [command] ...`
6
7- [help](#help)
8- [autostart](#autostart)
9- [callback](#callback)
10- [host](#host)
11- [keyleaseinterval](#keyleaseinterval)
12- [leaseinterval](#leaseinterval)
13- [server](#server)
14- [service](#service)
15- [start](#start)
16- [state](#state)
17- [stop](#stop)
18- [ttl](#ttl)
19
20## Command Details
21
22### help
23
24Usage: `srp client help`
25
26Print SRP client help menu.
27
28```bash
29> srp client help
30autostart
31callback
32help
33host
34keyleaseinterval
35leaseinterval
36service
37start
38state
39stop
40ttl
41Done
42```
43
44### autostart
45
46Usage `srp client autostart [enable|disable]`
47
48Enable/Disable auto start mode in SRP client. This command requires `OPENTHREAD_CONFIG_SRP_CLIENT_AUTO_START_API_ENABLE` feature to be enabled.
49
50Get the current autostart mode.
51
52```bash
53> srp client autostart
54Disabled
55Done
56```
57
58Set the autostart mode.
59
60```bash
61> srp client autostart enable
62Done
63
64> srp client autostart
65Enabled
66Done
67```
68
69### callback
70
71Usage `srp client callback [enable|disable]`
72
73Enable/Disable printing callback events from SRP client.
74
75Get current callback mode
76
77```bash
78> srp client callback
79Disabled
80Done
81```
82
83Set callback mode
84
85```bash
86> srp client callback enable
87Done
88
89> srp client callback
90Enabled
91Done
92```
93
94#### Example
95
96When two services are successfully registered:
97
98```bash
99SRP client callback - error:OK
100Host info:
101    name:"dev4312", state:Registered, addrs:[fd00:0:0:0:0:0:0:1]
102Service list:
103    instance:"ins2", name:"_test2._udp", state:Registered, port:111, priority:1, weight:1
104    instance:"ins1", name:"_test1._udp,_sub1,_sub2", state:Registered, port:777, priority:0, weight:0
105```
106
107When service `ins2` is removed:
108
109```bash
110SRP client callback - error:OK
111Host info:
112    name:"dev4312", state:Registered, addrs:[fd00:0:0:0:0:0:0:1]
113Service list:
114    instance:"ins1", name:"_test1._udp", state:Registered, port:777, priority:0, weight:0
115Removed service list:
116    instance:"ins2", name:"_test2._udp,_sub1,_sub2", state:Removed, port:111, priority:1, weight:1
117```
118
119When host info (and all services) is removed:
120
121```bash
122SRP client callback - error:OK
123Host info:
124    name:"dev4312", state:Removed, addrs:[fd00:0:0:0:0:0:0:1]
125Service list:
126Removed service list:
127    instance:"ins1", name:"_test1._udp", state:Removed, port:777, priority:0, weight:0
128```
129
130### host
131
132Usage: `srp client host`
133
134Print the full host info (host name, state, list of host addresses).
135
136```bash
137> srp client host
138name:"dev4312", state:Registered, addrs:[fd00:0:0:0:0:0:0:1234, fd00:0:0:0:0:0:0:beef]
139Done
140```
141
142When auto host address mode is enabled.
143
144```bash
145srp client host
146name:"dev1234", state:Registered, addrs:auto
147Done
148```
149
150### host name
151
152Usage: `srp client host name [name]`
153
154Get the host name.
155
156```bash
157> srp client host name
158dev4312
159Done
160```
161
162Set host name (can be set when the host is removed or not yet registered with server).
163
164```bash
165srp client host name dev4312
166Done
167```
168
169### host address
170
171Usage : `srp client host address [auto | <address> ...]`
172
173Indicate auto address mode is enabled.
174
175```bash
176> srp client host address
177auto
178Done
179```
180
181Get the list of host addresses (when auto host address is not enabled).
182
183```bash
184> srp client host address
185fd00:0:0:0:0:0:0:1234
186fd00:0:0:0:0:0:0:beef
187Done
188```
189
190Enable auto host address mode. When enabled client will automatically use all preferred Thread netif unicast addresses excluding all link-local and mesh-local addresses. If there is no preferred address, then Mesh Local EID address is added. SRP client will automatically re-register if/when addresses on Thread netif get changed (e.g., new address is added or existing address is removed or marked as non-preferred).
191
192```bash
193> srp client host address auto
194Done
195```
196
197Explicitly set the list of host addresses (can be set while client is running to update the host addresses), also disabled auto host address mode.
198
199```bash
200> srp client host address fd00::cafe
201Done
202```
203
204### host state
205
206Usage: `srp client host state`
207
208Get the host state.
209
210```bash
211> srp client host state
212Registered
213Done
214```
215
216The possible states are (same value for service state):
217
218- `ToAdd`: item to be added/registered.
219- `Adding`: item is being added/registered.
220- `ToRefresh`: item to be refreshed (renew lease).
221- `Refreshing`: item is being refreshed.
222- `ToRemove`: item to be removed.
223- `Removing`: item is being removed.
224- `Registered`: item is registered with server.
225- `Removed`: item is removed.
226
227### host remove
228
229Usage: `srp client host remove [removekeylease] [sendunregtoserver]`
230
231Remove host info and all services from server.
232
233- `removekeylease` is an optional boolean value indicating whether or not the host key lease should also be removed (default is false).
234- `sendunregtoserver` is a another optional boolean value indicating whether or not to send an update message to the server when host info is not yet registered (default is false).
235
236```bash
237> srp client host remove 1
238Done
239```
240
241### host clear
242
243Usage: `srp client host clear`
244
245Clear host info and all services on client (unlike `host remove`, with `host clear` no update is sent to server).
246
247```bash
248> srp client host clear
249Done
250```
251
252### keyleaseinterval
253
254Usage: `srp client keyleaseinterval [interval]`
255
256Get the key lease interval (in seconds).
257
258```bash
259> srp client keyleaseinterval
2601209600
261Done
262>
263```
264
265Set the key lease interval.
266
267```bash
268> srp client keyleaseinterval 864000
269Done
270```
271
272### leaseinterval
273
274Usage: `srp client leaseinterval [interval]`
275
276Get the lease interval (in seconds).
277
278```bash
279> srp client leaseinterval
2807200
281Done
282>
283```
284
285Set the lease interval.
286
287```bash
288> srp client leaseinterval 3600
289Done
290```
291
292### server
293
294Usage: `srp client server`
295
296Print the server socket address (IPv6 address and port number).
297
298```bash
299> srp client server
300[fd00:0:0:0:d88a:618b:384d:e760]:4724
301Done
302```
303
304### server address
305
306Print the server IPv6 address.
307
308```bash
309> srp client server address
310fd00:0:0:0:d88a:618b:384d:e760
311Done
312```
313
314### server port
315
316Print the server port number
317
318```bash
319> srp client server port
3204724
321Done
322```
323
324### service
325
326Usage: `srp client service`
327
328Print the list of services.
329
330```bash
331> srp client service
332instance:"ins2", name:"_test2._udp,_sub1,_sub2", state:Registered, port:111, priority:1, weight:1
333instance:"ins1", name:"_test1._udp", state:Registered, port:777, priority:0, weight:0
334Done
335```
336
337### service add
338
339Usage: `srp client service add <instancename> <servicename> <port> [priority] [weight] [txt]`
340
341Add a service with a given instance name, service name, port number, priority, weight and txt values.
342
343The `<servicename>` can optionally include a list of service subtype labels separated by comma.
344
345The priority and weight are optional and if not provided zero will be used. The txt should follow hex-string format and is treated as an already encoded TXT data byte sequence. It is also optional and if not provided it is considered empty.
346
347```bash
348> srp client service add ins1 _test1._udp 777
349Done
350
351> srp client service add ins2 _test2._udp,_sub1,_sub2 111 1 1
352Done
353```
354
355### service remove
356
357Usage: `srp client service remove <instancename> <servicename>`
358
359Remove a service with a give instance name and service name.
360
361```bash
362> srp client service remove ins2 _test2._udp
363Done
364```
365
366### service clear
367
368Usage: `srp client service clear <instancename> <servicename>`
369
370Clear a service with a give instance name and service name (unlike `service remove`, with `service clear` no update is sent to server and the entry is immediately removed from client list).
371
372```bash
373> srp client service clear ins2 _test2._udp
374Done
375```
376
377### service key
378
379Usage `srp client service key [enable|disable]`
380
381Enable/Disable "service key record inclusion" mode in SRP client. This command requires `OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE` feature to be enabled.
382
383KEY record is optional in Service Description Instruction (it is required and always included in the Host Description Instruction). The default behavior of SRP client is to not include it. This command is intended to override the default behavior for testing only (in a `REFERENCE_DEVICE` build).
384
385Get the current "service key record inclusion" mode.
386
387```bash
388> srp client service key
389Disabled
390Done
391```
392
393Set the "service key record inclusion" mode.
394
395```bash
396> srp client service key enable
397Done
398
399> srp client service key
400Enabled
401Done
402```
403
404### start
405
406Usage: `srp client start <serveraddr> <serverport>`
407
408Start the SRP client with a given server IPv6 address and port number.
409
410```bash
411> srp client start fd00::d88a:618b:384d:e760 4724
412Done
413```
414
415### state
416
417Usage: `srp client state`
418
419Indicates the state of SRP client, i.e., whether it is enabled or disabled.
420
421```bash
422> srp client state
423Enabled
424Done
425```
426
427### stop
428
429Usage: `srp client stop`
430
431Stop the SRP client.
432
433```bash
434> srp client stop
435Done
436```
437
438### ttl
439
440Usage: `srp client ttl [value]`
441
442Get the TTL (in seconds).
443
444```bash
445> srp client ttl
4467200
447Done
448>
449```
450
451Set the TTL.
452
453```bash
454> srp client ttl 3600
455Done
456```
457

README_SRP_SERVER.md

1# OpenThread CLI - SRP Server
2
3## Quick Start
4
5See [README_SRP.md](README_SRP.md).
6
7## Command List
8
9- [help](#help)
10- [addrmode](#addrmode)
11- [auto](#auto)
12- [disable](#disable)
13- [domain](#domain)
14- [enable](#enable)
15- [host](#host)
16- [lease](#lease)
17- [seqnum](#seqnum)
18- [service](#service)
19- [state](#state)
20
21## Command Details
22
23### help
24
25Usage: `srp server help`
26
27Print SRP server help menu.
28
29```bash
30> srp server help
31addrmode
32auto
33disable
34domain
35enable
36help
37host
38lease
39seqnum
40service
41state
42Done
43```
44
45### addrmode
46
47Usage: `srp server addrmode [unicast|anycast]`
48
49Get or set the address mode used by the SRP server.
50
51Address mode specifies how the address and port number are determined by the SRP server and this is published in the Thread Network Data.
52
53Get the address mode.
54
55```bash
56> srp server addrmode
57unicast
58Done
59```
60
61Set the address mode.
62
63```bash
64> srp server addrmode anycast
65Done
66
67> srp server addrmode
68anycast
69Done
70```
71
72### auto
73
74Usage: `srp server auto [enable|disable]`
75
76Enables or disables the auto-enable mode on the SRP server.
77
78When this mode is enabled, the Border Routing Manager controls if and when to enable or disable the SRP server.
79
80This command requires that `OPENTHREAD_CONFIG_BORDER_ROUTING_ENABLE` be enabled.
81
82```bash
83> srp server auto enable
84Done
85
86> srp server auto
87Enabled
88Done
89```
90
91### disable
92
93Usage: `srp server disable`
94
95Disable the SRP server.
96
97```bash
98> srp server disable
99Done
100```
101
102### domain
103
104Usage: `srp server domain [domain-name]`
105
106Get the domain.
107
108```bash
109> srp server domain
110default.service.arpa.
111Done
112```
113
114Set the domain.
115
116```bash
117> srp server domain thread.service.arpa.
118Done
119```
120
121### enable
122
123Usage: `srp server enable`
124
125Enable the SRP server.
126
127```bash
128> srp server enable
129Done
130```
131
132### host
133
134Usage: `srp server host`
135
136Print information of all registered hosts.
137
138```bash
139> srp server host
140srp-api-test-1.default.service.arpa.
141    deleted: false
142    addresses: [fdde:ad00:beef:0:0:ff:fe00:fc10]
143srp-api-test-0.default.service.arpa.
144    deleted: false
145    addresses: [fdde:ad00:beef:0:0:ff:fe00:fc10]
146Done
147```
148
149### lease
150
151Usage: `srp server lease [<min-lease>] [<max-lease>] [<min-key-lease>] [<max-key-lease>]`
152
153Get LEASE and KEY-LEASE values.
154
155```bash
156> srp server lease
157min lease: 1800
158max lease: 7200
159min key-lease: 86400
160max key-lease: 1209600
161Done
162```
163
164Set LEASE and KEY-LEASE values.
165
166```bash
167> srp server lease 1800 7200 86400 1209600
168Done
169```
170
171### seqnum
172
173Usage: `srp server seqnum [<seqnum>]`
174
175Get or set the sequence number used with anycast address mode.
176
177The sequence number is included in "DNS/SRP Service Anycast Address" entry published in the Network Data.
178
179```bash
180> srp server seqnum 20
181Done
182
183> srp server seqnum
18420
185Done
186```
187
188### service
189
190Usage: `srp server service`
191
192Print information of all registered services.
193
194The TXT record is displayed as an array of entries. If an entry has a key, the key will be printed in ASCII format. The value portion will always be printed as hex bytes.
195
196```bash
197> srp server service
198srp-api-test-1._ipps._tcp.default.service.arpa.
199    deleted: false
200    subtypes: (null)
201    port: 49152
202    priority: 0
203    weight: 0
204    ttl: 7200
205    lease: 7200
206    key-lease: 1209600
207    TXT: [616263, xyz=585960]
208    host: srp-api-test-1.default.service.arpa.
209    addresses: [fdde:ad00:beef:0:0:ff:fe00:fc10]
210srp-api-test-0._ipps._tcp.default.service.arpa.
211    deleted: false
212    subtypes: _sub1,_sub2
213    port: 49152
214    priority: 0
215    weight: 0
216    ttl: 3600
217    lease: 3600
218    key-lease: 1209600
219    TXT: [616263, xyz=585960]
220    host: srp-api-test-0.default.service.arpa.
221    addresses: [fdde:ad00:beef:0:0:ff:fe00:fc10]
222Done
223```
224
225### state
226
227Usage: `srp server state`
228
229Print the state of the SRP server. It could be `disabled`, `stopped` or `running`.
230
231- disabled: The SRP server is not enabled.
232- stopped: The SRP server is enabled but not active due to existing SRP servers already active in the Thread network. The SRP server may become active when existing SRP servers are no longer active within the Thread network.
233- running: The SRP server is active and will handle service registrations.
234
235```bash
236> srp server state
237running
238Done
239```
240

README_TCAT.md

1# OpenThread CLI - TCAT Example
2
3## Command List
4
5- help [#help]
6- start [#start]
7- stop [#stop]
8
9### help
10
11print help
12
13```bash
14tcat help
15help
16start
17stop
18Done
19```
20
21### start
22
23Start tcat server and ble advertisement.
24
25```bash
26tcat start
27Done
28```
29
30### stop
31
32Stop tcat server and ble advertisement.
33
34```bash
35tcat stop
36Done
37```
38

README_TCP.md

1# OpenThread CLI - TCP Example
2
3The OpenThread TCP APIs may be invoked via the OpenThread CLI.
4
5## Quick Start
6
7### Form Network
8
9Form a network with at least two devices.
10
11### Node 1
12
13On node 1, initialize the TCP CLI module and listen for incoming connections using the example TCP listener.
14
15```bash
16> tcp init
17> tcp listen :: 30000
18```
19
20The `::` specifies the IPv6 Unspecified Address.
21
22### Node 2
23
24On node 2, initialize the TCP CLI module, connect to node 1, and send a simple message.
25
26```bash
27> tcp init
28> tcp connect fe80:0:0:0:a8df:580a:860:ffa4 30000
29> tcp send hello
30```
31
32### Result
33
34After running the `tcp connect` command on node 2, you should see a printout on node 2 similar to below:
35
36```bash
37TCP: Connection established
38```
39
40In addition, you should also see a printout on node 1 similar to below:
41
42```bash
43Accepted connection from [fe80:0:0:0:8f3:f602:bf9b:52f2]:49152
44TCP: Connection established
45```
46
47After running the `tcp send` command on node 2, you should see a printout on node 1 similar to below:
48
49```bash
50TCP: Received 5 bytes: hello
51```
52
53For a more in-depth example, see [this video](https://youtu.be/ppZ784YUKlI).
54
55## Command List
56
57- [help](#help)
58- [init](#init-size)
59- [deinit](#deinit)
60- [bind](#bind-ip-port)
61- [connect](#connect-ip-port-fastopen)
62- [send](#send-message)
63- [benchmark](#benchmark-run-size)
64- [sendend](#sendend)
65- [abort](#abort)
66- [listen](#listen-ip-port)
67- [stoplistening](#stoplistening)
68
69## Command Details
70
71### abort
72
73Unceremoniously ends the TCP connection, if one exists, associated with the example TCP endpoint, transitioning the TCP endpoint to the closed state.
74
75```bash
76> tcp abort
77TCP: Connection reset
78Done
79```
80
81### benchmark run [\<size\>]
82
83Transfers the specified number of bytes using the TCP connection currently associated with the example TCP endpoint (this TCP connection must be established before using this command).
84
85- size: the number of bytes to send for the benchmark. If it is left unspecified, the default size is used.
86
87```bash
88> tcp benchmark run
89Done
90TCP Benchmark Complete: Transferred 73728 bytes in 7233 milliseconds
91TCP Goodput: 81.546 kb/s
92```
93
94### benchmark result
95
96Get the last result of TCP benchmark. If the benchmark is ongoing, it will show that benchmark is ongoing. This command is used for test scripts which automate the tcp benchmark test.
97
98```
99> tcp benchmark result
100TCP Benchmark Status: Ongoing
101Done
102
103> tcp benchmark result
104TCP Benchmark Status: Completed
105TCP Benchmark Complete: Transferred 73728 bytes in 7056 milliseconds
106TCP Goodput: 83.592 kb/s
107```
108
109### bind \<ip\> \<port\>
110
111Associates a name (i.e. IPv6 address and port) to the example TCP endpoint.
112
113- ip: the IPv6 address or the unspecified IPv6 address (`::`).
114- port: the TCP port.
115
116```bash
117> tcp bind :: 30000
118Done
119```
120
121### connect \<ip\> \<port\> [\<fastopen\>]
122
123Establishes a connection with the specified peer.
124
125If the connection establishment is successful, the resulting TCP connection is associated with the example TCP endpoint.
126
127- ip: the peer's IP address.
128- port: the peer's TCP port.
129- fastopen: if "fast", TCP Fast Open is enabled for this connection; if "slow", it is not. Defaults to "slow".
130
131```bash
132> tcp connect fe80:0:0:0:a8df:580a:860:ffa4 30000
133Done
134TCP: Connection established
135```
136
137The address can be an IPv4 address, which will be synthesized to an IPv6 address using the preferred NAT64 prefix from the network data.
138
139> Note: The command will return `InvalidState` when the preferred NAT64 prefix is unavailable.
140
141```bash
142> tcp connect 172.17.0.1 1234
143Connecting to synthesized IPv6 address: fdde:ad00:beef:2:0:0:ac11:1
144Done
145```
146
147### deinit
148
149Deinitializes the example TCP listener and the example TCP endpoint.
150
151```bash
152> tcp deinit
153Done
154```
155
156### help
157
158List the TCP CLI commands.
159
160```bash
161> tcp help
162abort
163benchmark
164bind
165connect
166deinit
167help
168init
169listen
170send-message
171sendend
172stoplistening
173Done
174```
175
176### init [\<mode\>]&nbsp;[\<size\>]
177
178Initializes the example TCP listener and the example TCP endpoint.
179
180- mode: this specifies the buffering strategy and whether to use TLS. The possible values are "linked", "circular" (default), and "tls".
181- size: the size of the receive buffer to associate with the example TCP endpoint. If left unspecified, the maximum size is used.
182
183If "tls" is used, then the TLS protocol will be used for the connection (on top of TCP). When communicating over TCP between two nodes, either both should use TLS or neither should (a non-TLS endpoint cannot communicate with a TLS endpoint). The first two options, "linked" and "circular", specify that TLS should not be used and specify a buffering strategy to use with TCP; two endpoints of a TCP connection may use different buffering strategies.
184
185The behaviors of "linked" and "circular" buffering are identical, but the option is provided so that users of TCP can inspect the code to see an example of using the two buffering strategies.
186
187```bash
188> tcp init tls
189Done
190```
191
192### listen \<ip\> \<port\>
193
194Uses the example TCP listener to listen for incoming connections on the specified name (i.e. IPv6 address and port).
195
196If no TCP connection is associated with the example TCP endpoint, then any incoming connections matching the specified name are accepted and associated with the example TCP endpoint.
197
198- ip: the IPv6 address or the unspecified IPv6 address (`::`).
199- port: the TCP port.
200
201```bash
202> tcp listen :: 30000
203Done
204```
205
206### send \<message\>
207
208Send data over the TCP connection associated with the example TCP endpoint.
209
210- message: the message to send.
211
212```bash
213> tcp send hello
214Done
215```
216
217### sendend
218
219Sends the "end of stream" signal (i.e., FIN segment) over the TCP connection associated with the example TCP endpoint. This promises the peer that no more data will be sent to it over this TCP connection.
220
221```bash
222> tcp sendend
223Done
224```
225
226### stoplistening
227
228Stops listening for incoming TCP connections using the example TCP listener.
229
230```bash
231> tcp stoplistening
232Done
233```
234

README_UDP.md

1# OpenThread CLI - UDP Example
2
3The OpenThread UDP APIs may be invoked via the OpenThread CLI.
4
5## Quick Start
6
7### Form Network
8
9Form a network with at least two devices.
10
11### Node 1
12
13On node 1, open and bind the example UDP socket.
14
15```bash
16> udp open
17> udp bind :: 1234
18```
19
20The `::` specifies the IPv6 Unspecified Address.
21
22### Node 2
23
24On node 2, open the example UDP socket and send a simple message.
25
26```bash
27> udp open
28> udp send fdde:ad00:beef:0:bb1:ebd6:ad10:f33 1234 hello
29```
30
31### Result
32
33On node 1, you should see a print out similar to below:
34
35```bash
365 bytes from fdde:ad00:beef:0:dac3:6792:e2e:90d8 49153 hello
37```
38
39## Command List
40
41- [help](#help)
42- [bind](#bind-netif-ip-port)
43- [close](#close)
44- [connect](#connect-ip-port)
45- [linksecurity](#linksecurity)
46- [open](#open)
47- [send](#send-ip-port-message)
48
49## Command Details
50
51### help
52
53List the UDP CLI commands.
54
55```bash
56> udp help
57help
58bind
59close
60connect
61open
62send
63Done
64```
65
66### bind [netif] \<ip\> \<port\>
67
68Assigns a name (i.e. IPv6 address and port) to the example socket.
69
70- netif: the network interface to bind to.
71  - not specified: Thread network interface.
72  - `-u`: unspecified network interface.
73  - `-b`: Backbone network interface.
74- ip: the IPv6 address or the unspecified IPv6 address (`::`).
75- port: the UDP port
76
77```bash
78> udp bind :: 1234
79Done
80> udp bind -u :: 1234
81Done
82> udp bind -b :: 1234
83Done
84```
85
86### close
87
88Closes the example socket.
89
90```bash
91> udp close
92Done
93```
94
95### connect \<ip\> \<port\>
96
97Specifies the peer with which the socket is to be associated.
98
99- ip: the peer's IP address.
100- port: the peer's UDP port.
101
102```bash
103> udp connect fdde:ad00:beef:0:bb1:ebd6:ad10:f33 1234
104Done
105```
106
107The address can be an IPv4 address, which will be synthesized to an IPv6 address using the preferred NAT64 prefix from the network data.
108
109> Note: The command will return `InvalidState` when the preferred NAT64 prefix is unavailable.
110
111```bash
112> udp connect 172.17.0.1 1234
113Connecting to synthesized IPv6 address: fdde:ad00:beef:2:0:0:ac11:1
114Done
115```
116
117### linksecurity
118
119Indicates whether the link security is enabled or disabled.
120
121```bash
122> udp linksecurity
123Enabled
124Done
125```
126
127### linksecurity enable
128
129Enable link security.
130
131```bash
132> udp linksecurity enable
133Done
134```
135
136### linksecurity disable
137
138Disable link security.
139
140```bash
141> udp linksecurity disable
142Done
143```
144
145### open
146
147Opens the example socket.
148
149```bash
150> udp open
151Done
152```
153
154### send \<ip\> \<port\> \<message\>
155
156Send a UDP message.
157
158- ip: the destination address.
159- port: the UDP destination port.
160- message: the message to send.
161
162```bash
163> udp send fdde:ad00:beef:0:bb1:ebd6:ad10:f33 1234 hello
164Done
165```
166
167The address can be an IPv4 address, which will be synthesized to an IPv6 address using the preferred NAT64 prefix from the network data.
168
169> Note: The command will return `InvalidState` when the preferred NAT64 prefix is unavailable.
170
171```bash
172> udp send 172.17.0.1 1234 hello
173Sending to synthesized IPv6 address: fdde:ad00:beef:2:0:0:ac11:1
174Done
175```
176
177### send \<ip\> \<port\> \<type\> \<value\>
178
179Send a few bytes over UDP.
180
181- ip: the IPv6 destination address.
182- port: the UDP destination port.
183- type: the type of the message:
184  - `-t`: text payload in the `value`, same as without specifying the type.
185  - `-s`: autogenerated payload with specified length indicated in the `value`.
186  - `-x`: binary data in hexadecimal representation in the `value`.
187
188```bash
189> udp send fdde:ad00:beef:0:bb1:ebd6:ad10:f33 1234 -t hello
190Done
191
192> udp send fdde:ad00:beef:0:bb1:ebd6:ad10:f33 1234 -x 68656c6c6f
193Done
194
195> udp send fdde:ad00:beef:0:bb1:ebd6:ad10:f33 1234 -s 800
196Done
197
198```
199
200### send \<message\>
201
202Send a UDP message on a connected socket.
203
204- message: the message to send.
205
206```bash
207> udp send hello
208Done
209```
210
211### send \<type\> \<value\>
212
213Send a few bytes over UDP.
214
215- type: the type of the message:
216  - `-t`: text payload in the `value`, same as without specifying the type.
217  - `-s`: autogenerated payload with specified length indicated in the `value`.
218  - `-x`: binary data in hexadecimal representation in the `value`.
219
220```bash
221> udp send -t hello
222Done
223
224> udp send -x 68656c6c6f
225Done
226
227> udp send -s 800
228Done
229```
230