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.
Predict the reading, then compare it with the measurement.
Contiki-NG Cooja
Third party ToolObserve a leaf join, deliver an injected temperature reading, lose its preferred relay and recover through the other relay.
Download the complete lab packet and follow README.md to run it in the free simulator.
Download the setup and run guideGet 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.
Steps
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 · Contiki-NG Cooja; numbered callout added to a real capture. Enlarge screenshot (new tab) 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 · Contiki-NG Cooja; numbered callout added to a real capture. Enlarge screenshot (new tab) 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 · Contiki-NG Cooja; numbered callout added to a real capture. Enlarge screenshot (new tab) 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 · Contiki-NG Cooja; numbered callout added to a real capture. Enlarge screenshot (new tab) 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 · Contiki-NG Cooja; numbered callout added to a real capture. Enlarge screenshot (new tab) 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 · Contiki-NG Cooja; numbered callout added to a real capture. Enlarge screenshot (new tab) 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 · 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.
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 checkA 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