Skip to content

Join a far-room leaf and heal its path

Observe a leaf join, deliver an injected temperature reading, lose its preferred relay and recover through the other relay.

Radio Remi — I trace the measured path and keep application claims separate., your practice guide

Radio Remi — I trace the measured path and keep application claims separate.
Predict the reading, then compare it with the measurement.

Contiki-NG Cooja

Third party Tool

Observe a leaf join, deliver an injected temperature reading, lose its preferred relay and recover through the other relay.

Tier 2 · Free simulator · install required · No account

Version tested: Contiki-NG release/v4.9 c20b12cd, Cooja 4.8 (2022071901), Temurin 17.0.20.1, image sha256:b14d5afb0a2a852d9e72bbed607ead03f6ccc5f4d4dee44f0799110be2f4b609. Date: 2026-09-10.

Download the complete lab packet and follow README.md to run it in the free simulator.

Download the setup and run guide

Get the lab files

Download the complete packet for the simulation and its firmware, or download individual files for inspection. README.md gives the setup and run commands.

  • cooja-mesh-join-and-heal.csc
  • README.md
  • expected-output.txt
  • lab-files.tar.gz

Steps

Screens captured against Contiki-NG Cooja Contiki-NG release/v4.9 c20b12cd, Cooja 4.8 (2022071901), Temurin 17.0.20.1, image sha256:b14d5afb0a2a852d9e72bbed607ead03f6ccc5f4d4dee44f0799110be2f4b609 on 2026-09-10; the tool may have moved on — the text steps are the contract.

  1. 1 Step 1

    Do
    Open the CSC. It moves leaf 5 into radio range after 30 simulated seconds and pauses at 110 seconds for inspection. Trace its parent arrow.
    You will see
    Leaf 5 selects relay 2 at 41.934296 s, giving path 5 → 2 → 1. It is configured as non-forwarding.
    Why it matters
    Joining a route is only one layer of evidence. This RPL association is not Zigbee permit-join or Trust Center authorization.
    Step 1: The real joined leaf, both relays and root at the baseline pause. The orange ring marks the evidence; the numbered badge is outside it.
    Step 1 · Contiki-NG Cooja; numbered callout added to a real capture. Enlarge screenshot (new tab)
  2. 2 Step 2

    Do
    Filter Mote output for temperature_c. Match the source address and sequence to the sink reception and returning reply.
    You will see
    Root 1 receives the first temperature_c=21.5 seq=0 reading at 52.212400 s. Later sequence numbers and replies appear before the pause.
    Why it matters
    The 21.5 °C value is injected through project-conf.h, not measured by hardware. A useful payload with identity and units adds evidence beyond a parent arrow.
    Step 2: Actual temperature payloads, sequences, source address and replies. The orange ring marks the evidence; the numbered badge is outside it.
    Step 2 · Contiki-NG Cooja; numbered callout added to a real capture. Enlarge screenshot (new tab)
  3. 3 Step 3

    Do
    Bring Radio messages to the front and compare From/To rows with the reading exchanges. Restore Network afterwards.
    You will see
    The frames show hops through a relay. Radio traffic also contains control and acknowledgements; it is not a Zigbee cluster trace.
    Why it matters
    Keep path evidence separate from application-profile evidence and from physical sensor behavior.
    Step 3: Real baseline radio-message rows. The orange ring marks the evidence; the numbered badge is outside it.
    Step 3 · Contiki-NG Cooja; numbered callout added to a real capture. Enlarge screenshot (new tab)
  4. 4 Step 4

    Do
    Click Start/Pause to continue from 110 seconds. The script removes the selected relay at 120.549 s. Let the run finish at 240 seconds and inspect Network.
    You will see
    Relay 2 is gone. Leaf 5 has changed its preferred parent to relay 3, leaving path 5 → 3 → 1.
    Why it matters
    The fault removes the actual selected relay. The alternate relay must be reachable for this recovery to work.
    Step 4: The final Network graph has relay 3 and the repaired leaf path. The orange ring marks the evidence; the numbered badge is outside it.
    Step 4 · Contiki-NG Cooja; numbered callout added to a real capture. Enlarge screenshot (new tab)
  5. 5 Step 5

    Do
    Filter ^--|Received ping reply and compare the post-fault status with the baseline. Read the event times from expected-output.txt.
    You will see
    Parent 3 is selected at 134.876272 s: 14.327272 s after the fault.
    Why it matters
    A changed route is a recovery hypothesis. The next reading and reply establish that this application path resumed.
    Step 5: Real post-fault route-status rows, including the preferred parent. The orange ring marks the evidence; the numbered badge is outside it.
    Step 5 · Contiki-NG Cooja; numbered callout added to a real capture. Enlarge screenshot (new tab)
  6. 6 Step 6

    Do
    Filter temperature_c. Locate the first recovered sink reception and the corresponding reply in the full log; retain the missing sequence numbers.
    You will see
    The first recovered reading reaches root at 144.581400 s, 24.032400 s after the fault; the reply reaches leaf 5 at 144.645656 s. Seventeen temperature readings reach the sink over the run.
    Why it matters
    Record time to useful service, losses and return-path evidence instead of claiming instantaneous whole-mesh repair.
    Step 6: At least six final temperature request and reply rows. The orange ring marks the evidence; the numbered badge is outside it.
    Step 6 · Contiki-NG Cooja; numbered callout added to a real capture. Enlarge screenshot (new tab)
  7. 7 Step 7

    Do
    Filter ^--|Received ping reply. Complete the README portfolio record and the host’s four-panel story: join, reading, failure, bounded result.
    You will see
    The post-repair root ping returns TTL 63 in 114 ms. TEST OK requires the pre-fault reading, parent change, recovered reading, reply and ping.
    Why it matters
    Accept this controlled RPL path only. Zigbee commissioning, binding, bridge translation, OTA and Matter need separate evidence.
    Step 7: The real post-repair ping with surrounding status rows. The orange ring marks the evidence; the numbered badge is outside it.
    Step 7 · Contiki-NG Cooja; numbered callout added to a real capture. Enlarge screenshot (new tab)

Chapter checks

These questions refer to the chapter’s examples. Use the return links to review their answers.

  1. A team says its Zigbee deployment is a resilient mesh because several powered nodes are installed. Which first review response is strongest?

    Return to the chapter’s knowledge check
  2. A topology record lists every Zigbee device, but it does not show end-device parents, router responsibilities, or what happens when a planned router is unavailable. What is the correct release decision?

    Return to the chapter’s knowledge check

Caution

This is a Contiki-NG RPL/IPv6/6LoWPAN mesh over simulated IEEE 802.15.4, not Zigbee application profiles, OpenThread or Matter. The temperature is injected and leaf-only is a routing role, not battery-life evidence. No Trust Center, permit-join security, binding, bridge translation or OTA update is simulated.

Return to Zigbee Network Topologies · Browse Labs