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