Skip to content

BLE Advertising Stops Prematurely in Matter SiLabs Lighting Example #1

@Chapoly1305

Description

Summary

BLE advertising in the Matter (CHIP) SiLabs lighting example firmware stops after 50-200ms of virtual time instead of continuing for the expected 15-minute commissioning window. This prevents BLE commissioning from working properly in Renode emulation.

Environment

  • Renode Version: 1.16.0 (29f80e8-202512311735)
  • Build: SiliconLabsSoftware fork, built with .NET 8.0
  • Platform: Linux
  • Board: BRD4186C (EFR32MG24 Mighty Gecko)
  • Firmware: Matter SiLabs Lighting Example (BRD4186C-matter-silabs-lighting-example.out, 72MB with debug symbols)

Expected Behavior

BLE advertising should continue every ~100ms for at least 15 minutes (Matter commissioning window), transmitting advertisement packets on channels 37, 38, and 39 (BLE advertising channels 0, 12, 39).

Expected frame count in 10 seconds: ~100 frames

Actual Behavior

BLE advertising stops completely after 50-200ms of virtual time, with only 1-20 frames transmitted.

Actual frame count in 10 seconds: 1-20 frames (highly variable)

Timeline Example:

First frame:  00:00:00.052ms
Last frame:   00:00:00.180ms
Active:       128ms (1.28% of test)
Silent:       9.82 seconds (98.72% of test)

Reproducibility

Highly non-deterministic - multiple runs with identical configuration produce different results:

Run Frames Last Frame Time Notes
1 1 52ms Only one frame
2 13 154ms Better, but still stops early
3 19 200ms Most frames, still fails

Steps to Reproduce

  1. Compile Matter 1.4.2. ./scripts/examples/gn_silabs_example.sh ./examples/lighting-app/silabs/ ./out/lighting-app BRD4186C
  2. Clone the SiliconLabs Renode fork: git clone git@github.com:SiliconLabsSoftware/renode.git
  3. Build with .NET: ./build.sh --net
  4. Create test script reproduce_issue.resc:
emulation CreateBLEMedium "wireless"
mach create "matter"
machine LoadPlatformDescription @platforms/boards/silabs/brd4186c.repl
sysbus LoadELF @matter/BRD4186C-matter-silabs-lighting-example.out
cpu VectorTableOffset `sysbus GetSymbolAddress "__Vectors"`
connector Connect sysbus.radio wireless

# Enable radio logging to see BLE frames
logLevel -1 sysbus.radio

# Run for 10 seconds
emulation RunFor @10
  1. Run: ./renode --console --disable-xwt reproduce_issue.resc
  2. Observe: Only a few "Sending frame" messages appear in first 200ms, then complete silence

Evidence of Issue

Console Output

[INFO] radio: Sending frame at 00:00:00.052243460 on channel 39 (Phy_BLE_2_4GHz_GFSK): D6-BE-...
[INFO] radio: Sending frame at 00:00:00.052921170 on channel 12 (Phy_BLE_2_4GHz_GFSK): D6-BE-...
[INFO] radio: Sending frame at 00:00:00.053621170 on channel 0 (Phy_BLE_2_4GHz_GFSK): D6-BE-...
... (a few more frames) ...
[INFO] radio: Sending frame at 00:00:00.180221170 on channel 12 (Phy_BLE_2_4GHz_GFSK): D6-BE-...
(then silence for remaining 9.8 seconds)

Other Observation:

  • issue persists without any plugins
  • Not stopped by application. (breakpoints on sl_bt_advertiser_stop never triggered)
  • CPU continues executing, peripheral access continues
  • issue persists regardless of timing configuration

Files for Reference

  • Platform definition: platforms/boards/silabs/brd4186c.repl
  • CPU definition: platforms/cpus/silabs/efr32s2/efr32mg24.repl
  • Test script: reproduce_issue.resc (attached)

reproduce_issue.resc.zip

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions