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