-
Notifications
You must be signed in to change notification settings - Fork 4
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
- Compile Matter 1.4.2.
./scripts/examples/gn_silabs_example.sh ./examples/lighting-app/silabs/ ./out/lighting-app BRD4186C - Clone the SiliconLabs Renode fork:
git clone git@github.com:SiliconLabsSoftware/renode.git - Build with .NET:
./build.sh --net - 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
- Run:
./renode --console --disable-xwt reproduce_issue.resc - 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_stopnever 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)