Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: BoM

...

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

...

  • Beta engineering release of 05 Feb 2025

Hardware used (as of Jan 2026 PoC, to be expanded with more devices, device types)

...

BoM:

  1. Banana Pi R4 with WiFi chipset (whole kit)
  2. SiLabs EFR32xG24 Explorer kit
  3. Matter/WiFi Mini smartplug (110vAC, US power) example, TP-link Tapo
  4. Thread Mini smartplug (110vAC, US power) example, Onvis Smartplug S4
  5. 2 x generic (110vAC, US power) generic LED “night lights” to be plugged into smartplugs 
  6. 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
    bordertrue
    diagramNameotbr
    simpleViewerfalse
    width
    linksauto
    tbstyletop
    lboxtrue
    diagramWidth851
    height
    390
    564
    revision
    3
    9

Kernel side changes for Thread

  • Minimal kernel changes

    • CONFIG_USB_ACM=y

      • drivers/usb/class/Makefile

      • Description - ACM support for UART communication
    • 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
      bordertrue
      diagramNamekcmf
      simpleViewerfalse
      width
      linksauto
      tbstyletop
      lboxtrue
      diagramWidth930
      height350
      revision1

User space code changes for Thread in meta-cmf-broadband/recipes-connectivity

...

Runtime changes for Thread

  • cpcd.conf

    • set disable_encryption to true
  • cpcd.service

    • Remove ExecStartPre=/usr/bin/init-iot-radio.sh
  • Directory creation

    • mkdir /nvram/icontrol/etc/thread
  • systemctl enable otbr-agent

  • otbr-agent.service

    • 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

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 it ? - otbr-agent
    • More technical explanation on user space

      • 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
    • Can i assume that the above mentioned kernel config to be enabled,if so why , kernel side explanation

        1. CONFIG_TUN=y
          • Required since OTBR-agent creates the wpan0 network interface
          • The TUN/TAP driver support enables creation of virtual network interfaces
          • Without this, OTBR-agent wouldn't be able to create the wpan0 interface
        2. CONFIG_IEEE802154=y
          • Required as the base IEEE 802.15.4 protocol support
          • Provides the fundamental IEEE 802.15.4 networking stack
          • OTBR-agent uses this for Thread networking which runs on 802.15.4
        3. CONFIG_MAC802154=y
          • Required for MAC layer operations of IEEE 802.15.4
          • Handles MAC layer functionality like addressing and frame formatting
          • OTBR-agent relies on this for proper 802.15.4 packet handling

        Without these kernel configurations:

        • The wpan0 interface creation would fail
        • The IEEE 802.15.4 networking stack wouldn't be available
        • The MAC layer operations for Thread networking wouldn't work

...

Testing bluetooth

  • process state

    • draw.io Diagram
      bordertrue
      diagramNamepsatet
      simpleViewerfalse
      width
      linksauto
      tbstyletop
      lboxtrue
      diagramWidth410
      height210
      revision1
  • hciconfig

    • draw.io Diagram
      bordertrue
      diagramNamehciconfigefr
      simpleViewerfalse
      width
      linksauto
      tbstyletop
      lboxtrue
      diagramWidth640
      height220
      revision1
  • Device connection using bluetoothctl

    • draw.io Diagram
      bordertrue
      diagramNamebtefrtest
      simpleViewerfalse
      width
      linksauto
      tbstyletop
      lboxtrue
      diagramWidth760
      height2000
      revision1
    • Module test - TAPO Matter smart plug
  • systemctl status

    • draw.io Diagram
      bordertrue
      diagramNamesysbt
      simpleViewerfalse
      width
      linksauto
      tbstyletop
      lboxtrue
      diagramWidth950
      height1270
      revision1