Scope
Goal is to understand and bringup required platform for supporting various IoT protocols including, WiFi, thread & Bluetooth in RDK-B Bananapi R4 with silabs module
Banana Pi R4 release used
- Beta engineering release of 05 Feb 2025
Hardware used (as of Jan 2026 PoC, to be expanded with more devices, device types)
BoM:
- Banana Pi R4 with WiFi chipset (whole kit)
- SiLabs EFR32xG24 Explorer kit
- Silabs xG24 Explorer Kit (brd2703a)
- Matter/WiFi Mini smartplug (110vAC, US power) example, TP-link Tapo
- Thread Mini smartplug (110vAC, US power) example, Onvis Smartplug S4
- 2 x generic (110vAC, US power) generic LED “night lights” to be plugged into smartplugs
- Associated cabling/serial adapters
RDK image tool (easy way to Image the SD card for RDK-B) -> https://rdkcentral.com/download-instructions/?caller=broadband
Where to purchase SiLabs
...
hardware
Highlevel block diagram of Thread & Bluetooth
| draw.io Diagram |
|---|
| border | true |
|---|
| |
|---|
| diagramName | otbr |
|---|
| simpleViewer | false |
|---|
| width | |
|---|
| links | auto |
|---|
| tbstyle | top |
|---|
| lbox | true |
|---|
| diagramWidth |
|---|
|
6713211
Kernel side changes for Thread
CONFIG_USB_ACM=y
CONFIG_TUN=y
drivers/net/tap.c
- Description - TUN generic support
CONFIG_IEEE802154=y
net/ieee802154
- Description - Generic IEEE802154
CONFIG_MAC802154=y
net/mac802154
- Description - Generic MAC layer for IEEE802154
| draw.io Diagram |
|---|
| border | true |
|---|
| |
|---|
| diagramName | kcmf |
|---|
| simpleViewer | false |
|---|
| width | |
|---|
| links | auto |
|---|
| tbstyle | top |
|---|
| lbox | true |
|---|
| diagramWidth | 930 |
|---|
| height | 350 |
|---|
| revision | 1 |
|---|
|
User space code changes for Thread in meta-cmf-broadband/recipes-connectivity
Yocto changes for Thread
| draw.io Diagram |
|---|
| border | true |
|---|
| |
|---|
| diagramName | otbrinstall11 |
|---|
| simpleViewer | false |
|---|
| width | |
|---|
| links | auto |
|---|
| tbstyle | top |
|---|
| lbox | true |
|---|
| diagramWidth | 901 |
|---|
| height | 301 |
|---|
| revision | 1 |
|---|
|
Runtime changes for Thread
- set
disable_encryption to true
- Remove ExecStartPre=/usr/bin/init-iot-radio.sh
- mkdir /nvram/icontrol/etc/thread
- update debug level to 7 from 5
- cpcd service should be up and running
- otbr-agent service should be up and running
- ot-ctl shoule be accessible and get state
| Code Block |
|---|
W:~# ot-ctl
> state
disabled
Done
> |
Firmware upgrade of BRD module
- Use simplicity studio
- Use commander tool
- Installed software in ubuntu and connected module with USB Type C
- Get Approval from Thomas Lea to get access to the firmware - rcp-multi-all-4.4.5-2-brd2703a.hex
Documentation for thread
Key check points when we land in issues for thread
- Make sure we have wpan0 interface up
- brlan0 should be up and running
- wpan0 - who creates wpan0it ? - otbr-agent
- Initial OTBR-agent startup:
- OTBR-agent process starts
- At this point, no wpan0 interface exists yet
- No socket exists yet at
/run/openthread-wpan0.sock
- OTBR-agent creates socket:
- Creates Unix domain socket at
/run/openthread-wpan0.sock - This socket will be used for IPC/control operations
- OTBR-agent creates network interface:
- Creates the
wpan0 network interface - Takes ownership of managing this interface
- Runtime dependencies:
- The
wpan0 interface is ONLY available while OTBR-agent is running - If OTBR-agent stops, the wpan0 interface goes away
- Other services/processes should not expect wpan0 to exist without OTBR-agent running
- Communication flow:
- Other processes can communicate with OTBR-agent through the socket at
/run/openthread-wpan0.sock - Network traffic goes through the wpan0 interface managed by OTBR-agent
Code changes to support Bluetooth
- Prerequisite - Bluetooth support in Banana Pi R4(Reference) - Generic Module
- steps
- cd meta-cmf-broadband/recipes-connectivity
- mkdir bt-host-cpc-hci-bridge
| draw.io Diagram |
|---|
| border | true |
|---|
| |
|---|
| diagramName | install-btattach |
|---|
| simpleViewer | false |
|---|
| width | |
|---|
| links | auto |
|---|
| tbstyle | top |
|---|
| lbox | true |
|---|
| diagramWidth | 660 |
|---|
| height | 350 |
|---|
| revision | 1 |
|---|
|
| draw.io Diagram |
|---|
| border | true |
|---|
| |
|---|
| diagramName | imagebthci |
|---|
| simpleViewer | false |
|---|
| width | |
|---|
| links | auto |
|---|
| tbstyle | top |
|---|
| lbox | true |
|---|
| diagramWidth | 990 |
|---|
| height | 380 |
|---|
| revision | 1 |
|---|
|
Testing bluetooth
| draw.io Diagram |
|---|
| border | true |
|---|
| |
|---|
| diagramName | psatet |
|---|
| simpleViewer | false |
|---|
| width | |
|---|
| links | auto |
|---|
| tbstyle | top |
|---|
| lbox | true |
|---|
| diagramWidth | 410 |
|---|
| height | 210 |
|---|
| revision | 1 |
|---|
|
| draw.io Diagram |
|---|
| border | true |
|---|
| |
|---|
| diagramName | hciconfigefr |
|---|
| simpleViewer | false |
|---|
| width | |
|---|
| links | auto |
|---|
| tbstyle | top |
|---|
| lbox | true |
|---|
| diagramWidth | 640 |
|---|
| height | 220 |
|---|
| revision | 1 |
|---|
|
| draw.io Diagram |
|---|
| border | true |
|---|
| |
|---|
| diagramName | btefrtest |
|---|
| simpleViewer | false |
|---|
| width | |
|---|
| links | auto |
|---|
| tbstyle | top |
|---|
| lbox | true |
|---|
| diagramWidth | 760 |
|---|
| height | 2000 |
|---|
| revision | 1 |
|---|
|
- Module test - TAPO Matter smart plug
| draw.io Diagram |
|---|
| border | true |
|---|
| |
|---|
| diagramName | sysbt |
|---|
| simpleViewer | false |
|---|
| width | |
|---|
| links | auto |
|---|
| tbstyle | top |
|---|
| lbox | true |
|---|
| diagramWidth | 950 |
|---|
| height | 1270 |
|---|
| revision | 1 |
|---|
|