Using CPC SPI on Linux Border Router#
This document refers to a setup build using:
BRD4271A as the Silicon Labs Radio Board
BRD8016A as the Silicon Labs Raspberry Pi Adapter Board
A Raspberry Pi as the host
Note: Pin mapping will need to be adapted to any custom hardware.
RCP SPI Connections#
SPI signals need to be allocated to pins connected to the host via the Radio Board connectors and the BRD8016A Raspberry Pi connector shown below.
xG25 Software Configuration#
SPI signal |
| RCP values | xG25 GPIO |
---|---|---|---|
IRQ | SL_CPC_DRV_SPI_EXP_IRQ_PORT / SL_CPC_DRV_SPI_EXP_IRQ_PIN | SL_GPIO_PORT_A / 5 | EFR32_PA5 |
CS | SL_CPC_DRV_SPI_EXP_CS_PORT / SL_CPC_DRV_SPI_EXP_CS_PIN | SL_GPIO_PORT_B / 4 | EFR32_PB4 |
(MISO)CIPO/RX | SL_CPC_DRV_SPI_EXP_CIPO_PORT / SL_CPC_DRV_SPI_EXP_CIPO_PIN | SL_GPIO_PORT_C / 1 | EFR32_PC1 |
(MOSI)COPI/TX | SL_CPC_DRV_SPI_EXP_COPI_PORT / SL_CPC_DRV_SPI_EXP_COPI_PIN | SL_GPIO_PORT_C / 0 | EFR32_PC0 |
SCLK | SL_CPC_DRV_SPI_EXP_SCLK_PORT / SL_CPC_DRV_SPI_EXP_SCLK_PIN | SL_GPIO_PORT_C / 2 | EFR32_PC2 |
xG25 Pins#
SPI signal | xG25 GPIO | xG25 Pin | WSTK signal |
---|---|---|---|
IRQ | EFR32_PA5 | 34 | WSTK_P4 |
CS | EFR32_PB4 | 24 | WSTK_P7 |
(MISO)CIPO/RX | EFR32_PC1 | 2 | WSTK_P3 |
(MOSI)COPI/TX | EFR32_PC0 | 1 | WSTK_P1 |
SCLK | EFR32_PC2 | 3 | WSTK_P5 |
BRD4271A Pins#
SPI signal | BRD4271A signal | Radio Board Pin |
---|---|---|
IRQ | WSTK_P4 | P201_7 |
CS | WSTK_P7 | P201_10 |
(MISO)CIPO/RX | WSTK_P3 | P201_6 |
(MOSI)COPI/TX | WSTK_P1 | P201_4 |
SCLK | WSTK_P5 | P201_8 |
BRD8016A Pins#
SPI signal | Radio Board Pin | BRD8016A signals | RPi GPIO |
---|---|---|---|
IRQ | P201_7 | RADIO_P4 | RPI_GPIO22 |
CS | P201_10 | RADIO_P7 | RPI_GPIO8 |
(MISO)CIPO/RX | P201_6 | RADIO_P3 | RPI_GPIO9 |
(MOSI)COPI/TX | P201_4 | RADIO_P1 | RPI_GPIO10 |
SCLK | P201_8 | RADIO_P5 | RPI_GPIO11 |
Raspberry Header Pins#
SPI signal | RPi GPIO | RPi Header pin | RPi SPI signal |
---|---|---|---|
IRQ | RPI_GPIO22 | 15 | |
CS | RPI_GPIO8 | 24 | RPI_SPI_CS |
(MISO)CIPO/RX | RPI_GPIO9 | 21 | RPI_SPI_MISO |
(MOSI)COPI/TX | RPI_GPIO10 | 19 | RPI_SPI_MOSI |
SCLK | RPI_GPIO11 | 23 | RPI_SPI_SCLK |
Raspberry Software Settings#
SPI signal | RPi SPI signal | RPi Software settings | RPi Value |
---|---|---|---|
IRQ |
| 22 | |
CS | RPI_SPI_CS | device tree | 0x08 |
(MISO)CIPO/RX | RPI_SPI_MISO | device tree | 0x09 |
(MOSI)COPI/TX | RPI_SPI_MOSI | device tree | 0x0a |
SCLK | RPI_SPI_SCLK | device tree | 0x0b |
RCP Project#
CPC Addition to Wi-SUN RCP Project#
Add Wi-SUN / Application / Wi-SUN RCP / Wi-SUN Border Router RCP - CPC Interface.
By default, this component uses UART. Follow the steps below to add CPC to your Wi-SUN project.
Install the Services / Co-Processor Communication / Secondary Device / Driver / CPC Secondary - SPI: Recommended SPI interface.
This creates the default
exp
CPC instance under Services / Co-Processor Communication / Secondary Device / Driver / CPC Secondary - SPI (EUSART) / exp.Click Configure to check the SPI pin configuration, making sure it matches the RCP SPI connections for BRD4271A/BRD8016A/RPi hardware.
Press the Pin Tool button and filter on 'SPI' to get a pin view of SPI signals.
Build your CPC project.
Flash it on the RCP, clearing the flash before flashing (to get rid of any remaining NVM data).
Insert the RCP Radio Board on the BRD8016A Adapter Board.
Make sure that the expansion board switch is set to the High Power (LDO) mode.
Insert the BRD8016A on the Raspberry Pi header.
Border Router#
Note: As from 23Q4/GSDK V4.3.2, the CPC component in the GSDK will use the CPC Protocol v5, so the
cpcd
installation on the Border Router also needs to use this version.
First of all CPC needs to be able to communicate with the RCP, independently from wsbrd.
To achieve this, cpcd
needs to be compiled with the CPC Protocol v5, as follows:
Removing previous cpcd
/ libcpc
Installs#
sudo rm -rf /usr/local/lib/arm-linux-gnueabihf/*
Installing cpcd with Protocol V6#
git clone https://github.com/SiliconLabs/cpc_daemon.git cpc_daemon
cd cpc_daemon/
cat CMakeLists.txt | head
mkdir build
cd build/
cmake ../
make
sudo make install
sudo ldconfig
Checking cpcd
Protocol Version#
$ cat ~/cpc_daemon*/CMakeLists.txt | grep CPC_PROTOCOL_VERSION
set(CPC_PROTOCOL_VERSION "6")
Checking cpcd
/ libcpc
Installs#
$ ls -al /usr/local/lib/arm-linux-gnueabihf/
total 188
drwxr-xr-x 3 root root 4096 Jul 9 11:35 .
drwxr-xr-x 6 root root 4096 Apr 18 2024 ..
lrwxrwxrwx 1 root root 11 Apr 19 2024 libcpc.so -> libcpc.so.3
lrwxrwxrwx 1 root root 17 Jul 9 11:35 libcpc.so.3 -> libcpc.so.4.7.0.0
-rw-r--r-- 1 root root 87776 Jun 7 2024 libcpc.so.4.4.2.0
-rw-r--r-- 1 root root 88160 Jul 9 11:34 libcpc.so.4.7.0.0
drwxr-xr-x 2 root root 4096 Jul 9 11:35 pkgconfig
$ cpcd --version
4.7.0.0
GIT commit: 4ff183d9d1ec888812bff3c3562e4961594e5bb5
GIT branch: refs/heads/main
Enabling SPI via the Device Tree#
In /boot/config.txt
, comment the UART line and add the SPI overlay as follows:
[all]
## Disable WiFi and Bluetooth, both potentially using UART
dtoverlay=disable-bt
dtoverlay=disable-wifi
# Disable UART
#enable_uart=1
# Enable SPI for CPC host/RCP communication
dtoverlay=spi0-1cs
# Generate a reset on GIPO 23, keep the level high after reset
gpio=23=op,dh
Note: A reboot is required after modifying
/boot/config.txt
.
Reboot the Raspberry Pi
cpcd
SPI configuration file#
(only active lines are shown)
The default configuration file is /usr/local/etc/cpcd.conf
. To use another, use the --conf
option.
$ cat /usr/local/etc/cpcd.conf | grep -v ^$ | grep -v ^#
instance_name: cpcd_0
bus_type: SPI
spi_device_file: /dev/spidev0.0
spi_rx_irq_gpio_chip: gpiochip0
spi_rx_irq_gpio: 22
spi_device_bitrate: 1000000
bootloader_recovery_pins_enabled: false
bootloader_wake_gpio_chip: gpiochip0
bootloader_wake_gpio: 24
bootloader_reset_gpio_chip: gpiochip0
bootloader_reset_gpio: 23
stdout_trace: false
trace_to_file: false
traces_folder: /tmp/
enable_frame_trace: false
rlimit_nofile: 2000
disable_encryption: true
binding_key_file: ~/.cpcd/binding.key
wsbrd
Configuration File for CPC#
The changes are similar for UART and SPI mode, since the bus mode is selected in the cpcd
configuration file (shown here with traces enabled).
$ cat ~/wsbrd.conf | grep -v ^$ | grep -v ^#
user = wsbrd
group = wsbrd
cpc_instance = cpcd_0
ipv6_prefix = fd12:3456::/64
network_name = Linux_spi_EU_33_5
domain = EU
chan_plan_id = 33
phy_mode_id = 5
phy_operating_modes = auto
key = /home/pi/wisun-br-linux/examples/br_key.pem
certificate = /home/pi/wisun-br-linux/examples/br_cert.pem
authority = /home/pi/wisun-br-linux/examples/ca_cert.pem
color_output = no
pcap_file = /tmp/dump.pcapng
trace = hif
The only line relevant to using CPC is (on top of commenting out UART-related lines):
cpc_instance = cpcd_0
Setup Cross-Check#
Using the BRD8016A Wireless Expansion board: you will need to mount the expansion board on the Raspberry Pi and make sure that the expansion board switch is set to the high power mode.
$ cat /etc/wsbrd.conf | grep cpc_instance
cpc_instance = cpcd_0
$ cat /usr/local/etc/cpcd.conf | grep instance_name
instance_name: cpcd_0
SPI Signals Allocation Checks#
Raspberry Pi Device Tree Check#
dtc -I fs /sys/firmware/devicetree/base
gives (abstracts) spi0
information (comment lines added for clarity):
spi0_pins {
brcm,function = <0x04>;
phandle = <0x0e>;
# MISO MOSI SCLK
brcm,pins = <0x09 0x0a 0x0b>;
};
spi0_cs_pins {
brcm,function = <0x01>;
phandle = <0x0f>;
# CS0
brcm,pins = <0x08>;
};
Raspberry Pi GPIOs Check#
These are controlled by the device tree.
Note: Remember that changes to the device tree require a reboot to be taken into account
cat /sys/kernel/debug/gpio | grep SPI
gpio-7 (SPI_CE1_N )
gpio-8 (SPI_CE0_N |spi0 CS0 ) out hi ACTIVE LOW
gpio-9 (SPI_MISO )
gpio-10 (SPI_MOSI )
gpio-11 (SPI_SCLK )
gpio-43 (SPIFLASH_CE_N )
Communication Checks#
cpcd
/RCP communication (without wsbrd)#
Note: A reboot is required after modifying
/boot/config.txt
, so reboot if you haven't done so yet.
cpcd
manual start#
Use ps -C cpcd
to make sure no cpcd process is running. Use sudo kill <cpcd PID>
to kill it if it's running.
A full log (with traces enabled) is provided below.
Click to expand and view the full log
$ sudo cpcd --conf /usr/local/etc/cpcd.conf
WARNING in function 'main' in file /home/pi/cpc_daemon/main.c at line #68 : Running CPCd as 'root' is not recommended. Proceed at your own risk.
[2025-07-09T13:10:44.177112Z] Info : [CPCd v4.7.0.0] [Library API v3] [RCP Protocol v6]
[2025-07-09T13:10:44.177422Z] Info : Git commit: 4ff183d9d1ec888812bff3c3562e4961594e5bb5 / branch: refs/heads/main
[2025-07-09T13:10:44.177487Z] WARNING : In function 'main' in file /home/pi/cpc_daemon/main.c at line #68 : Running CPCd as 'root' is not recommended. Proceed at your own risk.
[2025-07-09T13:10:44.177578Z] Info : Reading cli arguments
[2025-07-09T13:10:44.177657Z] Info : cpcd --conf /usr/local/etc/cpcd.conf
[2025-07-09T13:10:44.178256Z] Info : Reading configuration
[2025-07-09T13:10:44.178275Z] Info : file_path = /usr/local/etc/cpcd.conf
[2025-07-09T13:10:44.178291Z] Info : instance_name = cpcd_0
[2025-07-09T13:10:44.178305Z] Info : socket_folder = /dev/shm
[2025-07-09T13:10:44.178319Z] Info : operation_mode = MODE_NORMAL
[2025-07-09T13:10:44.178333Z] Info : use_encryption = false
[2025-07-09T13:10:44.178347Z] Info : binding_key_file = /root/.cpcd/binding.key
[2025-07-09T13:10:44.178362Z] Info : stdout_tracing = true
[2025-07-09T13:10:44.178375Z] Info : file_tracing = false
[2025-07-09T13:10:44.178389Z] Info : lttng_tracing = false
[2025-07-09T13:10:44.178402Z] Info : enable_frame_trace = true
[2025-07-09T13:10:44.178416Z] Info : traces_folder = /tmp
[2025-07-09T13:10:44.178430Z] Info : bus = SPI
[2025-07-09T13:10:44.178445Z] Info : spi_file = /dev/spidev0.0
[2025-07-09T13:10:44.178458Z] Info : spi_bitrate = 10000000
[2025-07-09T13:10:44.178473Z] Info : spi_irq_chip = gpiochip0
[2025-07-09T13:10:44.178487Z] Info : spi_irq_pin = 22
[2025-07-09T13:10:44.178500Z] Info : fwu_recovery_pins_enabled = false
[2025-07-09T13:10:44.178515Z] Info : fwu_connect_to_bootloader = false
[2025-07-09T13:10:44.178529Z] Info : fwu_enter_bootloader = false
[2025-07-09T13:10:44.178542Z] Info : restart_cpcd = false
[2025-07-09T13:10:44.178556Z] Info : application_version_validation = false
[2025-07-09T13:10:44.178569Z] Info : print_secondary_versions_and_exit = false
[2025-07-09T13:10:44.178583Z] Info : use_noop_keep_alive = false
[2025-07-09T13:10:44.178597Z] Info : reset_sequence = true
[2025-07-09T13:10:44.178610Z] Info : stats_interval = 0
[2025-07-09T13:10:44.178624Z] Info : rlimit_nofile = 2000
[2025-07-09T13:10:44.178638Z] Info : ENCRYPTION IS DISABLED
[2025-07-09T13:10:44.178754Z] Gpio : Opening gpio #22 on chip gpiochip0. Direction : IN, edge : FALLING
[2025-07-09T13:10:44.180595Z] Info : Starting daemon in normal mode
[2025-07-09T13:10:44.180653Z] Gpio : Opening gpio #22 on chip gpiochip0. Direction : IN, edge : FALLING
[2025-07-09T13:10:44.181266Z] Driver : Thread start
[2025-07-09T13:10:44.181352Z] Driver : Opening spi file /dev/spidev0.0
[2025-07-09T13:10:44.181371Z] Driver : Init done
[2025-07-09T13:10:44.181511Z] Core : Changing ep#0 state from SLI_CPC_STATE_CLOSED to SLI_CPC_STATE_CONNECTED
[2025-07-09T13:10:44.181558Z] Core : open ep #0
[2025-07-09T13:10:44.181613Z] Server : Cleaning up socket folder /dev/shm/cpcd/cpcd_0
[2025-07-09T13:10:44.181707Z] Server : Removing /dev/shm/cpcd/cpcd_0/reset.cpcd.sock
[2025-07-09T13:10:44.181770Z] Server : Removing /dev/shm/cpcd/cpcd_0/ctrl.cpcd.sock
[2025-07-09T13:10:44.182031Z] Info : Connecting to Secondary...
[2025-07-09T13:10:44.182262Z] Core : Pushed frame to driver : 14:00:0E:00:C4:95:0F:03:00:08:00:02:02:00:00:00:00:00:00:91:A0
[2025-07-09T13:10:44.182330Z] Core : txd transmit completed
[2025-07-09T13:10:44.182347Z] Core : Endpoint #0: frame transmit submitted
[2025-07-09T13:10:44.182363Z] System : Submitted command_id #3 command_seq #0
[2025-07-09T13:10:44.182378Z] Driver : Init of a transaction caused by the core
[2025-07-09T13:10:44.182418Z] System : property-set (id #3) sent with property #514
[2025-07-09T13:10:44.182424Z] Driver : Primary has a frame to send
[2025-07-09T13:10:44.182436Z] Reset Sequence : Reboot mode sent
[2025-07-09T13:10:44.182661Z] Driver : Clocked in this header : 00:00:00:00:00:00:00
[2025-07-09T13:10:44.183050Z] Driver : Init of a transaction caused by the IRQ line
[2025-07-09T13:10:44.183075Z] Driver : Secondary signaled a frame to send
[2025-07-09T13:10:44.183262Z] Driver : Clocked in this header : 14:00:0E:00:C4:95:0F
[2025-07-09T13:10:44.183549Z] Driver : Sent frame to core : 14:00:0E:00:C4:95:0F:06:00:08:00:02:02:00:00:00:00:00:00:30:AE
[2025-07-09T13:10:44.183635Z] Core : rxd frame : 14:00:0E:00:C4:95:0F:06:00:08:00:02:02:00:00:00:00:00:00:30:AE
[2025-07-09T13:10:44.183663Z] Core : Endpoint #0: rxd unnumbered frame
[2025-07-09T13:10:44.183684Z] System : Processing command seq#0 of type 3
[2025-07-09T13:10:44.183747Z] Core : Endpoint #0: unnumbered frame processed
[2025-07-09T13:10:44.183763Z] Core : rxd uframe with valid header checksum
[2025-07-09T13:10:44.183858Z] Core : Pushed frame to driver : 14:00:06:00:C4:34:A6:01:01:00:00:84:41
[2025-07-09T13:10:44.183899Z] Core : txd transmit completed
[2025-07-09T13:10:44.183916Z] Core : Endpoint #0: frame transmit submitted
[2025-07-09T13:10:44.183931Z] System : Submitted command_id #1 command_seq #1
[2025-07-09T13:10:44.183980Z] System : reset (id #1) sent
[2025-07-09T13:10:44.183996Z] Reset Sequence : Reboot mode reply received, reset request sent
[2025-07-09T13:10:44.184034Z] Driver : Init of a transaction caused by the core
[2025-07-09T13:10:44.184060Z] Driver : Primary has a frame to send
[2025-07-09T13:10:44.184337Z] Driver : Clocked in this header : 00:00:00:00:00:00:00
[2025-07-09T13:10:44.184708Z] Driver : Init of a transaction caused by the IRQ line
[2025-07-09T13:10:44.184735Z] Driver : Secondary signaled a frame to send
[2025-07-09T13:10:44.184903Z] Driver : Clocked in this header : 14:00:0A:00:C4:55:D3
[2025-07-09T13:10:44.185145Z] Driver : Sent frame to core : 14:00:0A:00:C4:55:D3:01:01:04:00:00:00:00:00:13:F9
[2025-07-09T13:10:44.185199Z] Core : rxd frame : 14:00:0A:00:C4:55:D3:01:01:04:00:00:00:00:00:13:F9
[2025-07-09T13:10:44.185224Z] Core : Endpoint #0: rxd unnumbered frame
[2025-07-09T13:10:44.185242Z] System : Processing command seq#1 of type 3
[2025-07-09T13:10:44.185284Z] System : on_final_reset()
[2025-07-09T13:10:44.185300Z] Reset Sequence : Reset request response received : 0
[2025-07-09T13:10:44.185316Z] Core : Endpoint #0: unnumbered frame processed
[2025-07-09T13:10:44.185330Z] Core : rxd uframe with valid header checksum
[2025-07-09T13:10:44.185344Z] Reset Sequence : Reset request acknowledged, waiting for device to reset
[2025-07-09T13:10:44.479121Z] Driver : Init of a transaction caused by the IRQ line
[2025-07-09T13:10:44.479174Z] Driver : Secondary signaled a frame to send
[2025-07-09T13:10:44.479370Z] Driver : Clocked in this header : 14:00:0E:00:C0:11:4F
[2025-07-09T13:10:44.479678Z] Driver : Sent frame to core : 14:00:0E:00:C0:11:4F:06:00:08:00:00:00:00:00:73:00:00:00:DC:98
[2025-07-09T13:10:44.479747Z] Core : rxd frame : 14:00:0E:00:C0:11:4F:06:00:08:00:00:00:00:00:73:00:00:00:DC:98
[2025-07-09T13:10:44.479775Z] Core : Endpoint #0: rxd unnumbered frame
[2025-07-09T13:10:44.479794Z] System : Unsolicited uframe received
[2025-07-09T13:10:44.479811Z] Reset Sequence : Received reset reason : 115
[2025-07-09T13:10:44.479825Z] Reset Sequence : Reset sequence: 3
[2025-07-09T13:10:44.479839Z] Core : Endpoint #0: unnumbered frame processed
[2025-07-09T13:10:44.479853Z] Core : rxd uframe with valid header checksum
[2025-07-09T13:10:44.479868Z] Reset Sequence : Waiting for reset reason
[2025-07-09T13:10:44.479881Z] Reset Sequence : Reset reason received
[2025-07-09T13:10:44.479920Z] Core : Pushed frame to driver : 14:00:0A:00:C4:55:D3:02:02:04:00:20:00:00:00:AA:DE
[2025-07-09T13:10:44.479957Z] Core : txd transmit completed
[2025-07-09T13:10:44.479974Z] Core : Endpoint #0: frame transmit submitted
[2025-07-09T13:10:44.479989Z] System : Submitted command_id #2 command_seq #2
[2025-07-09T13:10:44.480044Z] System : property-get (id #2) sent with property 0x20
[2025-07-09T13:10:44.480086Z] Driver : Init of a transaction caused by the core
[2025-07-09T13:10:44.480111Z] Driver : Primary has a frame to send
[2025-07-09T13:10:44.480290Z] Driver : Clocked in this header : 00:00:00:00:00:00:00
[2025-07-09T13:10:44.480692Z] Driver : Init of a transaction caused by the IRQ line
[2025-07-09T13:10:44.480717Z] Driver : Secondary signaled a frame to send
[2025-07-09T13:10:44.480902Z] Driver : Clocked in this header : 14:00:0C:00:C4:F5:61
[2025-07-09T13:10:44.481161Z] Driver : Sent frame to core : 14:00:0C:00:C4:F5:61:06:02:06:00:20:00:00:00:F6:07:9B:C9
[2025-07-09T13:10:44.481217Z] Core : rxd frame : 14:00:0C:00:C4:F5:61:06:02:06:00:20:00:00:00:F6:07:9B:C9
[2025-07-09T13:10:44.481241Z] Core : Endpoint #0: rxd unnumbered frame
[2025-07-09T13:10:44.481260Z] System : Processing command seq#2 of type 3
[2025-07-09T13:10:44.481315Z] Reset Sequence : Received RX capability of 2038 bytes
[2025-07-09T13:10:44.481331Z] Info : RX capability is 2038 bytes
[2025-07-09T13:10:44.481348Z] Core : Endpoint #0: unnumbered frame processed
[2025-07-09T13:10:44.481361Z] Core : rxd uframe with valid header checksum
[2025-07-09T13:10:44.481375Z] Reset Sequence : Obtained RX capability
[2025-07-09T13:10:44.481388Z] Info : Connected to Secondary
[2025-07-09T13:10:44.481421Z] Core : Pushed frame to driver : 14:00:0A:00:C4:55:D3:02:03:04:00:01:00:00:00:31:27
[2025-07-09T13:10:44.481540Z] Core : txd transmit completed
[2025-07-09T13:10:44.481558Z] Core : Endpoint #0: frame transmit submitted
[2025-07-09T13:10:44.481588Z] System : Submitted command_id #2 command_seq #3
[2025-07-09T13:10:44.481634Z] System : property-get (id #2) sent with property 0x1
[2025-07-09T13:10:44.481677Z] Driver : Init of a transaction caused by the core
[2025-07-09T13:10:44.481704Z] Driver : Primary has a frame to send
[2025-07-09T13:10:44.481939Z] Driver : Clocked in this header : 00:00:00:00:00:00:00
[2025-07-09T13:10:44.482261Z] Driver : Init of a transaction caused by the IRQ line
[2025-07-09T13:10:44.482387Z] Driver : Secondary signaled a frame to send
[2025-07-09T13:10:44.482631Z] Driver : Clocked in this header : 14:00:0B:00:C4:65:E4
[2025-07-09T13:10:44.482874Z] Driver : Sent frame to core : 14:00:0B:00:C4:65:E4:06:03:05:00:01:00:00:00:06:CD:21
[2025-07-09T13:10:44.482928Z] Core : rxd frame : 14:00:0B:00:C4:65:E4:06:03:05:00:01:00:00:00:06:CD:21
[2025-07-09T13:10:44.482952Z] Core : Endpoint #0: rxd unnumbered frame
[2025-07-09T13:10:44.482971Z] System : Processing command seq#3 of type 3
[2025-07-09T13:10:44.483015Z] Info : Secondary Protocol v6
[2025-07-09T13:10:44.483033Z] Core : Endpoint #0: unnumbered frame processed
[2025-07-09T13:10:44.483048Z] Core : rxd uframe with valid header checksum
[2025-07-09T13:10:44.483062Z] Reset Sequence : Obtained Protocol version
[2025-07-09T13:10:44.483095Z] Core : Pushed frame to driver : 14:00:0A:00:C4:55:D3:02:04:04:00:02:00:00:00:A9:A5
[2025-07-09T13:10:44.483133Z] Core : txd transmit completed
[2025-07-09T13:10:44.483149Z] Core : Endpoint #0: frame transmit submitted
[2025-07-09T13:10:44.483164Z] System : Submitted command_id #2 command_seq #4
[2025-07-09T13:10:44.483204Z] System : property-get (id #2) sent with property 0x2
[2025-07-09T13:10:44.483243Z] Driver : Init of a transaction caused by the core
[2025-07-09T13:10:44.483267Z] Driver : Primary has a frame to send
[2025-07-09T13:10:44.483442Z] Driver : Clocked in this header : 00:00:00:00:00:00:00
[2025-07-09T13:10:44.483758Z] Driver : Init of a transaction caused by the IRQ line
[2025-07-09T13:10:44.483783Z] Driver : Secondary signaled a frame to send
[2025-07-09T13:10:44.483952Z] Driver : Clocked in this header : 14:00:0E:00:C4:95:0F
[2025-07-09T13:10:44.484233Z] Driver : Sent frame to core : 14:00:0E:00:C4:95:0F:06:04:08:00:02:00:00:00:00:00:00:00:94:9F
[2025-07-09T13:10:44.484284Z] Core : rxd frame : 14:00:0E:00:C4:95:0F:06:04:08:00:02:00:00:00:00:00:00:00:94:9F
[2025-07-09T13:10:44.484307Z] Core : Endpoint #0: rxd unnumbered frame
[2025-07-09T13:10:44.484324Z] System : Processing command seq#4 of type 3
[2025-07-09T13:10:44.484360Z] Core : Endpoint #0: unnumbered frame processed
[2025-07-09T13:10:44.484377Z] Core : rxd uframe with valid header checksum
[2025-07-09T13:10:44.484391Z] Reset Sequence : Obtained Capabilities
[2025-07-09T13:10:44.484418Z] Core : Pushed frame to driver : 14:00:0A:00:C4:55:D3:02:05:04:00:03:00:00:00:7C:6B
[2025-07-09T13:10:44.484455Z] Core : txd transmit completed
[2025-07-09T13:10:44.484471Z] Core : Endpoint #0: frame transmit submitted
[2025-07-09T13:10:44.484496Z] System : Submitted command_id #2 command_seq #5
[2025-07-09T13:10:44.484531Z] System : property-get (id #2) sent with property 0x3
[2025-07-09T13:10:44.484568Z] Driver : Init of a transaction caused by the core
[2025-07-09T13:10:44.484593Z] Driver : Primary has a frame to send
[2025-07-09T13:10:44.484770Z] Driver : Clocked in this header : 00:00:00:00:00:00:00
[2025-07-09T13:10:44.485219Z] Driver : Init of a transaction caused by the IRQ line
[2025-07-09T13:10:44.485248Z] Driver : Secondary signaled a frame to send
[2025-07-09T13:10:44.485455Z] Driver : Clocked in this header : 14:00:16:00:C4:57:E5
[2025-07-09T13:10:44.485954Z] Driver : Sent frame to core : 14:00:16:00:C4:57:E5:06:05:10:00:03:00:00:00:04:00:00:00:07:00:00:00:00:00:00:00:D4:FB
[2025-07-09T13:10:44.486013Z] Core : rxd frame : 14:00:16:00:C4:57:E5:06:05:10:00:03:00:00:00:04:00:00:00:07:00:00:00:00:00:00:00:D4:FB
[2025-07-09T13:10:44.486040Z] Core : Endpoint #0: rxd unnumbered frame
[2025-07-09T13:10:44.486061Z] System : Processing command seq#5 of type 3
[2025-07-09T13:10:44.486105Z] Info : Secondary CPC v4.7.0
[2025-07-09T13:10:44.486191Z] Core : Endpoint #0: unnumbered frame processed
[2025-07-09T13:10:44.486207Z] Core : rxd uframe with valid header checksum
[2025-07-09T13:10:44.486221Z] Reset Sequence : Obtained Secondary CPC version
[2025-07-09T13:10:44.486258Z] Core : Pushed frame to driver : 14:00:0E:00:C4:95:0F:03:06:08:00:60:00:00:00:04:07:00:00:F9:7C
[2025-07-09T13:10:44.486298Z] Core : txd transmit completed
[2025-07-09T13:10:44.486314Z] Core : Endpoint #0: frame transmit submitted
[2025-07-09T13:10:44.486329Z] System : Submitted command_id #3 command_seq #6
[2025-07-09T13:10:44.486371Z] System : property-set (id #3) sent with property #96
[2025-07-09T13:10:44.486412Z] Driver : Init of a transaction caused by the core
[2025-07-09T13:10:44.486437Z] Driver : Primary has a frame to send
[2025-07-09T13:10:44.486615Z] Driver : Clocked in this header : 00:00:00:00:00:00:00
[2025-07-09T13:10:44.487000Z] Driver : Init of a transaction caused by the IRQ line
[2025-07-09T13:10:44.487025Z] Driver : Secondary signaled a frame to send
[2025-07-09T13:10:44.487191Z] Driver : Clocked in this header : 14:00:0A:00:C4:55:D3
[2025-07-09T13:10:44.487413Z] Driver : Sent frame to core : 14:00:0A:00:C4:55:D3:06:06:04:00:60:00:00:00:9D:7E
[2025-07-09T13:10:44.487465Z] Core : rxd frame : 14:00:0A:00:C4:55:D3:06:06:04:00:60:00:00:00:9D:7E
[2025-07-09T13:10:44.487487Z] Core : Endpoint #0: rxd unnumbered frame
[2025-07-09T13:10:44.487504Z] System : Processing command seq#6 of type 3
[2025-07-09T13:10:44.487539Z] Core : Endpoint #0: unnumbered frame processed
[2025-07-09T13:10:44.487555Z] Core : rxd uframe with valid header checksum
[2025-07-09T13:10:44.487570Z] Reset Sequence : Obtained Set Primary Version Reply
[2025-07-09T13:10:44.487596Z] Core : Pushed frame to driver : 14:00:0A:00:C4:55:D3:02:07:04:00:40:00:00:00:DF:FE
[2025-07-09T13:10:44.487632Z] Core : txd transmit completed
[2025-07-09T13:10:44.487649Z] Core : Endpoint #0: frame transmit submitted
[2025-07-09T13:10:44.487663Z] System : Submitted command_id #2 command_seq #7
[2025-07-09T13:10:44.487696Z] System : property-get (id #2) sent with property 0x40
[2025-07-09T13:10:44.487733Z] Driver : Init of a transaction caused by the core
[2025-07-09T13:10:44.487758Z] Driver : Primary has a frame to send
[2025-07-09T13:10:44.487931Z] Driver : Clocked in this header : 00:00:00:00:00:00:00
[2025-07-09T13:10:44.488258Z] Driver : Init of a transaction caused by the IRQ line
[2025-07-09T13:10:44.488283Z] Driver : Secondary signaled a frame to send
[2025-07-09T13:10:44.488449Z] Driver : Clocked in this header : 14:00:0E:00:C4:95:0F
[2025-07-09T13:10:44.488729Z] Driver : Sent frame to core : 14:00:0E:00:C4:95:0F:06:07:08:00:40:00:00:00:00:00:00:00:18:9E
[2025-07-09T13:10:44.488780Z] Core : rxd frame : 14:00:0E:00:C4:95:0F:06:07:08:00:40:00:00:00:00:00:00:00:18:9E
[2025-07-09T13:10:44.488803Z] Core : Endpoint #0: rxd unnumbered frame
[2025-07-09T13:10:44.488820Z] System : Processing command seq#7 of type 3
[2025-07-09T13:10:44.488852Z] Info : Secondary bus bitrate is 0
[2025-07-09T13:10:44.488870Z] Core : Endpoint #0: unnumbered frame processed
[2025-07-09T13:10:44.488895Z] Core : rxd uframe with valid header checksum
[2025-07-09T13:10:44.488922Z] Core : Pushed frame to driver : 14:00:0A:00:C4:55:D3:02:08:04:00:50:00:00:00:91:6F
[2025-07-09T13:10:44.489166Z] Driver : Init of a transaction caused by the core
[2025-07-09T13:10:44.489407Z] Driver : Primary has a frame to send
[2025-07-09T13:10:44.489472Z] Core : txd transmit completed
[2025-07-09T13:10:44.489491Z] Core : Endpoint #0: frame transmit submitted
[2025-07-09T13:10:44.489507Z] System : Submitted command_id #2 command_seq #8
[2025-07-09T13:10:44.489779Z] Driver : Clocked in this header : 00:00:00:00:00:00:00
[2025-07-09T13:10:44.489545Z] System : property-get (id #2) sent with property 0x50
[2025-07-09T13:10:44.490154Z] Driver : Init of a transaction caused by the IRQ line
[2025-07-09T13:10:44.490181Z] Driver : Secondary signaled a frame to send
[2025-07-09T13:10:44.490431Z] Driver : Clocked in this header : 14:00:0E:00:C4:95:0F
[2025-07-09T13:10:44.490721Z] Driver : Sent frame to core : 14:00:0E:00:C4:95:0F:06:08:08:00:50:00:00:00:80:96:98:00:7C:AE
[2025-07-09T13:10:44.490777Z] Core : rxd frame : 14:00:0E:00:C4:95:0F:06:08:08:00:50:00:00:00:80:96:98:00:7C:AE
[2025-07-09T13:10:44.490802Z] Core : Endpoint #0: rxd unnumbered frame
[2025-07-09T13:10:44.490821Z] System : Processing command seq#8 of type 3
[2025-07-09T13:10:44.490866Z] Info : Secondary max bus bitrate is 10000000
[2025-07-09T13:10:44.490883Z] Info : The negotiated SPI bitrate will be 10000000
[2025-07-09T13:10:44.490900Z] Core : Endpoint #0: unnumbered frame processed
[2025-07-09T13:10:44.490915Z] Core : rxd uframe with valid header checksum
[2025-07-09T13:10:44.490949Z] Core : Pushed frame to driver : 14:00:0A:00:C4:55:D3:02:09:04:00:04:00:00:00:3A:68
[2025-07-09T13:10:44.490987Z] Core : txd transmit completed
[2025-07-09T13:10:44.491003Z] Core : Endpoint #0: frame transmit submitted
[2025-07-09T13:10:44.491018Z] System : Submitted command_id #2 command_seq #9
[2025-07-09T13:10:44.491124Z] System : property-get (id #2) sent with property 0x4
[2025-07-09T13:10:44.491165Z] Driver : Init of a transaction caused by the core
[2025-07-09T13:10:44.491191Z] Driver : Primary has a frame to send
[2025-07-09T13:10:44.491240Z] Driver : Clocked in this header : 00:00:00:00:00:00:00
[2025-07-09T13:10:44.491472Z] Driver : Init of a transaction caused by the IRQ line
[2025-07-09T13:10:44.491497Z] Driver : Secondary signaled a frame to send
[2025-07-09T13:10:44.491538Z] Driver : Clocked in this header : 14:00:11:00:C4:C7:60
[2025-07-09T13:10:44.491647Z] Driver : Sent frame to core : 14:00:11:00:C4:C7:60:06:09:0B:00:04:00:00:00:32:2E:31:30:2E:30:00:18:4D
[2025-07-09T13:10:44.491697Z] Core : rxd frame : 14:00:11:00:C4:C7:60:06:09:0B:00:04:00:00:00:32:2E:31:30:2E:30:00:18:4D
[2025-07-09T13:10:44.491721Z] Core : Endpoint #0: rxd unnumbered frame
[2025-07-09T13:10:44.491739Z] System : Processing command seq#9 of type 3
[2025-07-09T13:10:44.491795Z] Info : Secondary APP v2.10.0
[2025-07-09T13:10:44.491814Z] Core : Endpoint #0: unnumbered frame processed
[2025-07-09T13:10:44.491828Z] Core : rxd uframe with valid header checksum
[2025-07-09T13:10:44.491842Z] Reset Sequence : Obtained Secondary APP version
[2025-07-09T13:10:44.492150Z] Security : Encryption is disabled
[2025-07-09T13:10:44.492169Z] Core : Security changed state: 0 -> 1
[2025-07-09T13:10:44.492185Z] Info : Daemon startup was successful. Waiting for client connections
An abstract is:
$ sudo cpcd --conf /usr/local/etc/cpcd.conf
WARNING in function 'main' in file /home/pi/cpc_daemon/main.c at line #68 : Running CPCd as 'root' is not recommended. Proceed at your own risk.
[2025-07-09T13:10:44.177112Z] Info : [CPCd v4.7.0.0] [Library API v3] [RCP Protocol v6]
. . .
[2025-07-09T13:10:44.177487Z] WARNING : In function 'main' in file /home/pi/cpc_daemon/main.c at line #68 : Running CPCd as 'root' is not recommended. Proceed at your own risk.
[2025-07-09T13:10:44.177578Z] Info : Reading cli arguments
[2025-07-09T13:10:44.177657Z] Info : cpcd --conf /usr/local/etc/cpcd.conf
[2025-07-09T13:10:44.178256Z] Info : Reading configuration
[2025-07-09T13:10:44.178275Z] Info : file_path = /usr/local/etc/cpcd.conf
[2025-07-09T13:10:44.178291Z] Info : instance_name = cpcd_0
. . .
[2025-07-09T13:10:44.178430Z] Info : bus = SPI
[2025-07-09T13:10:44.178445Z] Info : spi_file = /dev/spidev0.0
[2025-07-09T13:10:44.178458Z] Info : spi_bitrate = 10000000
[2025-07-09T13:10:44.178473Z] Info : spi_irq_chip = gpiochip0
[2025-07-09T13:10:44.178487Z] Info : spi_irq_pin = 22
. . .
[2025-07-09T13:10:44.178597Z] Info : reset_sequence = true
. . .
[2025-07-09T13:10:44.178638Z] Info : ENCRYPTION IS DISABLED
. . .
[2025-07-09T13:10:44.181352Z] Driver : Opening spi file /dev/spidev0.0
[2025-07-09T13:10:44.181371Z] Driver : Init done
. . .
[2025-07-09T13:10:44.182031Z] Info : Connecting to Secondary...
. . .
[2025-07-09T13:10:44.182436Z] Reset Sequence : Reboot mode sent
. . .
[2025-07-09T13:10:44.183996Z] Reset Sequence : Reboot mode reply received, reset request sent
. . .
[2025-07-09T13:10:44.184735Z] Driver : Secondary signaled a frame to send
. . .
[2025-07-09T13:10:44.185199Z] Core : rxd frame : 14:00:0A:00:C4:55:D3:01:01:04:00:00:00:00:00:13:F9
. . .
[2025-07-09T13:10:44.185284Z] System : on_final_reset()
[2025-07-09T13:10:44.185300Z] Reset Sequence : Reset request response received : 0
. . .
[2025-07-09T13:10:44.185344Z] Reset Sequence : Reset request acknowledged, waiting for device to reset
[2025-07-09T13:10:44.479121Z] Driver : Init of a transaction caused by the IRQ line
[2025-07-09T13:10:44.479174Z] Driver : Secondary signaled a frame to send
. . .
[2025-07-09T13:10:44.481315Z] Reset Sequence : Received RX capability of 2038 bytes
[2025-07-09T13:10:44.481331Z] Info : RX capability is 2038 bytes
. . .
[2025-07-09T13:10:44.481375Z] Reset Sequence : Obtained RX capability
[2025-07-09T13:10:44.481388Z] Info : Connected to Secondary
. . .
[2025-07-09T13:10:44.492150Z] Security : Encryption is disabled
[2025-07-09T13:10:44.492169Z] Core : Security changed state: 0 -> 1
[2025-07-09T13:10:44.492185Z] Info : Daemon startup was successful. Waiting for client connections
When you get the Daemon startup was successful. Waiting for client connections
message, you're ready to start wsbrd
.
Starting cpcd
before starting wsbrd
#
If cpcd
is not running when wsbrd
is launched, the following error will occur:
$ sudo wsbrd --conf /etc/wsbrd.conf
Silicon Labs Wi-SUN border router v2.2
cpc_init: Connection refused
Starting cpcd
as a Service#
This is an option. Probably the best, with Restart=on-failure
.
nano $ sudo nano /usr/local/lib/systemd/system/cpcd.service
$ cat /usr/local/lib/systemd/system/cpcd.service
# SPDX-License-Identifier: GPL-2.0 or APACHE-2.0
[Unit]
Description=Silicon Labs CPC Service
Documentation=file:////usr/local/etc/cpcd.conf
After=network.target
After=freeradius.service
# If you rely on an external DHCP server, don't forget to add a dependency here
[Service]
ExecStart=cpcd --conf /usr/local/etc/cpcd.conf
Restart=on-failure
[Install]
WantedBy=multi-user.target
Checking cpcd
Service Status#
$ sudo systemctl status cpcd.service
● cpcd.service - Silicon Labs CPC Service
Loaded: loaded (/usr/local/lib/systemd/system/cpcd.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2025-07-09 15:15:24 CEST; 2s ago
Docs: file:////usr/local/etc/cpcd.conf
Main PID: 2110 (cpcd)
Tasks: 4 (limit: 1595)
CPU: 19ms
CGroup: /system.slice/cpcd.service
└─2110 cpcd --conf /usr/local/etc/cpcd.conf
Jul 09 15:15:25 rns-md-wisun-direct-connect cpcd[2110]: [2025-07-09T13:15:24.668762Z] Core : rxd frame : 14:00:11:00:C4:C7:60:06:09:0B:00:04:00:00:00:32:2E:31:30:2E:30:00:18:4D
Jul 09 15:15:25 rns-md-wisun-direct-connect cpcd[2110]: [2025-07-09T13:15:24.668788Z] Core : Endpoint #0: rxd unnumbered frame
Jul 09 15:15:25 rns-md-wisun-direct-connect cpcd[2110]: [2025-07-09T13:15:24.668808Z] System : Processing command seq#9 of type 3
Jul 09 15:15:25 rns-md-wisun-direct-connect cpcd[2110]: [2025-07-09T13:15:24.668872Z] Info : Secondary APP v2.10.0
Jul 09 15:15:25 rns-md-wisun-direct-connect cpcd[2110]: [2025-07-09T13:15:24.668892Z] Core : Endpoint #0: unnumbered frame processed
Jul 09 15:15:25 rns-md-wisun-direct-connect cpcd[2110]: [2025-07-09T13:15:24.668906Z] Core : rxd uframe with valid header checksum
Jul 09 15:15:25 rns-md-wisun-direct-connect cpcd[2110]: [2025-07-09T13:15:24.668921Z] Reset Sequence : Obtained Secondary APP version
Jul 09 15:15:25 rns-md-wisun-direct-connect cpcd[2110]: [2025-07-09T13:15:24.669204Z] Security : Encryption is disabled
Jul 09 15:15:25 rns-md-wisun-direct-connect cpcd[2110]: [2025-07-09T13:15:24.669224Z] Core : Security changed state: 0 -> 1
Jul 09 15:15:25 rns-md-wisun-direct-connect cpcd[2110]: [2025-07-09T13:15:24.669239Z] Info : Daemon startup was successful. Waiting for client connections
CPC/wsbrd Communication#
A full log is provided below, obtained with sudo wsbrd --conf /etc/wsbrd.conf -T cpc
.
Click to expand and view the full log
$ sudo wsbrd --conf /etc/wsbrd.conf -T cpc
Silicon Labs Wi-SUN border router v2.2
[2025-04-25T14:36:36.166444Z] libcpc(cpcd_0:1673) [cpc_init:732]: libcpc version: v4.4.2.0
[2025-04-25T14:36:36.166722Z] libcpc(cpcd_0:1673) [cpc_init:733]: libcpc API version: v3
[2025-04-25T14:36:36.167622Z] libcpc(cpcd_0:1673) [get_secondary_app_version:403]: secondary application is v2.6.1
[2025-04-25T14:36:36.168110Z] libcpc(cpcd_0:1673) [cpc_init:841]: cpc lib initialized
[2025-04-25T14:36:36.168184Z] libcpc(cpcd_0:1673) [cpc_open_endpoint:1107]: opening EP #10
[2025-04-25T14:36:36.170290Z] libcpc(cpcd_0:1673) [cpc_open_endpoint:1238]: opened EP #10
1745591796.170425: hif tx: REQ_RESET 00
[2025-04-25T14:36:36.170481Z] libcpc(cpcd_0:1673) [cpc_write_endpoint:1524]: writing to EP #10
[2025-04-25T14:36:36.170530Z] libcpc(cpcd_0:1673) [cpc_write_endpoint:1540]: wrote to EP #10
[2025-04-25T14:36:36.171476Z] libcpc(cpcd_0:1673) [cpc_read_endpoint:1439]: reading from EP #10
[2025-04-25T14:36:36.171532Z] libcpc(cpcd_0:1673) [cpc_read_endpoint:1459]: read from EP #10
1745591796.171573: hif rx: IND_RESET 01 06 00 02 00 05 00 02 32 2e 35 2e 30 00 60 a4 23 ff fe 37 ac 96
Connected to RCP "2.5.0" (2.5.0), API 2.6.1
1745591796.171699: hif tx: SET_HOST_API 00 00 00 02
[2025-04-25T14:36:36.171733Z] libcpc(cpcd_0:1673) [cpc_write_endpoint:1524]: writing to EP #10
[2025-04-25T14:36:36.171780Z] libcpc(cpcd_0:1673) [cpc_write_endpoint:1540]: wrote to EP #10
1745591796.171819: hif tx: REQ_RADIO_LIST
[2025-04-25T14:36:36.171841Z] libcpc(cpcd_0:1673) [cpc_write_endpoint:1524]: writing to EP #10
[2025-04-25T14:36:36.171886Z] libcpc(cpcd_0:1673) [cpc_write_endpoint:1540]: wrote to EP #10
[2025-04-25T14:36:36.171925Z] libcpc(cpcd_0:1673) [cpc_read_endpoint:1439]: reading from EP #10
[2025-04-25T14:36:36.173445Z] libcpc(cpcd_0:1673) [cpc_read_endpoint:1459]: read from EP #10
1745591796.173504: hif rx: CNF_RADIO_LIST 0f 01 00 00 01 60 dc 71 33 a0 86 01 00 45 00 91 ff 01 00 03 60 dc 71 33 40 0d 03 00 23 00 94 ff ff 01 50 60 dc 71 33 40 0d 03*
1745591796.185361: hif tx: SET_RADIO_TX_POWER 00
[2025-04-25T14:36:36.185454Z] libcpc(cpcd_0:1673) [cpc_write_endpoint:1524]: writing to EP #10
[2025-04-25T14:36:36.185709Z] libcpc(cpcd_0:1673) [cpc_write_endpoint:1540]: wrote to EP #10
[INFO][addr]: Address added to IF 1: fe80::62a4:23ff:fe37:ac96
[DBG ][addr]: LL64 Register OK!
[INFO][rout]: Added route:
[DBG ][rout]: fe80::/64 if:1 src:'Static' id:0 lifetime:infinite
[DBG ][rout]: On-link (met 128)
[INFO][rout]: Added route:
[DBG ][rout]: ff00::/8 if:1 src:'Static' id:0 lifetime:infinite
[DBG ][rout]: On-link (met 192)
[INFO][addr]: Address added to IF 1: fd12:3456::62a4:23ff:fe37:ac96
[INFO][rout]: Added route:
[DBG ][rout]: fd12:3456::62a4:23ff:fe37:ac96/128 if:1 src:'Loopback' id:0 lifetime:infinite
[DBG ][rout]: On-link (met 128)
1745591796.187886: tkl RPL DIO reset: t=492s I[525,1049]=584s k=0
Successfully registered to system DBus
[INFO][wsbs]: Wi-SUN packet congestion minTh 150, maxTh 300, drop probability 10 weight 32, Packet/Seconds 5
[INFO][wspc]: Read GTK frame counter: index 0 value 10000000
[INFO][wspc]: Read LGTK frame counter: index 0 value 10000000
PAN version number update
1745591796.198983: tkl (null) reset: t=38s I[60,960]=60s k=1
1745591796.200975: hif tx: SET_FHSS_UC ff 02 20 ff ff ff 27 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[2025-04-25T14:36:36.201199Z] libcpc(cpcd_0:1673) [cpc_write_endpoint:1524]: writing to EP #10
[2025-04-25T14:36:36.201488Z] libcpc(cpcd_0:1673) [cpc_write_endpoint:1540]: wrote to EP #10
1745591796.201544: hif tx: SET_FHSS_FFN_BC fc 03 00 55 e3 ff 02 20 ff ff ff 27 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[2025-04-25T14:36:36.201662Z] libcpc(cpcd_0:1673) [cpc_write_endpoint:1524]: writing to EP #10
[2025-04-25T14:36:36.201780Z] libcpc(cpcd_0:1673) [cpc_write_endpoint:1540]: wrote to EP #10
1745591796.201901: hif tx: SET_FHSS_LFN_BC 60 ea 00 55 e3 02 20 ff ff ff 27 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[2025-04-25T14:36:36.203242Z] libcpc(cpcd_0:1673) [cpc_write_endpoint:1524]: writing to EP #10
[2025-04-25T14:36:36.203362Z] libcpc(cpcd_0:1673) [cpc_write_endpoint:1540]: wrote to EP #10
1745591796.203467: hif tx: SET_FHSS_ASYNC f4 01 00 00 20 ff ff ff 27 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[2025-04-25T14:36:36.203579Z] libcpc(cpcd_0:1673) [cpc_write_endpoint:1524]: writing to EP #10
[2025-04-25T14:36:36.203625Z] libcpc(cpcd_0:1673) [cpc_write_endpoint:1540]: wrote to EP #10
1745591796.203665: hif tx: SET_RADIO 01 00 01
[2025-04-25T14:36:36.203699Z] libcpc(cpcd_0:1673) [cpc_write_endpoint:1524]: writing to EP #10
[2025-04-25T14:36:36.203821Z] libcpc(cpcd_0:1673) [cpc_write_endpoint:1540]: wrote to EP #10
1745591796.203875: hif tx: SET_FILTER_PANID 28 97
[2025-04-25T14:36:36.203904Z] libcpc(cpcd_0:1673) [cpc_write_endpoint:1524]: writing to EP #10
[2025-04-25T14:36:36.203944Z] libcpc(cpcd_0:1673) [cpc_write_endpoint:1540]: wrote to EP #10
1745591796.204013: hif tx: REQ_RADIO_ENABLE
[2025-04-25T14:36:36.204036Z] libcpc(cpcd_0:1673) [cpc_write_endpoint:1524]: writing to EP #10
[2025-04-25T14:36:36.204090Z] libcpc(cpcd_0:1673) [cpc_write_endpoint:1540]: wrote to EP #10
domain: EU
channel plan id: 33
phy mode id: 0x03
phy operating modes: 1, 84, 85, 86
RCP configuration index: 1
channel 0 frequency: 863.1MHz
channel spacing: 200kHz
channel count: 35
channel masks:
advertised effective
unicast -- 00:00:00:d8:fb
broadcast -- 00:00:00:d8:fb
async -- 00:00:00:d8:fb
Nodes join ability:
rank FFN1.0 FFN1.1 LFN
1 no yes yes
>1 no yes can[1]
[1]: neighboring routers must use a channel plan 2 (reg. domain & ChanPlanId)
[INFO][wspc]: GTK hash set 60:95:a3:eb:29:24:a1:8a 00:00:00:00:00:00:00:00 00:00:00:00:00:00:00:00 00:00:00:00:00:00:00:00
[INFO][wspc]: NW key set: 0, hash: 60:95:a3:eb:29:24:a1:8a
1745591796.207604: hif tx: SET_SEC_KEY 01 dd cd bb 4f ba 43 76 2f 64 07 10 01 11 5c be 9d 80 96 98 00
[2025-04-25T14:36:36.207731Z] libcpc(cpcd_0:1673) [cpc_write_endpoint:1524]: writing to EP #10
[2025-04-25T14:36:36.207799Z] libcpc(cpcd_0:1673) [cpc_write_endpoint:1540]: wrote to EP #10
[INFO][wspc]: LGTK hash set 65:93:0e:11:4e:fd:de:72 00:00:00:00:00:00:00:00 00:00:00:00:00:00:00:00 00:00:00:00:00:00:00:00
[INFO][wspc]: NW key set: 4, hash: 65:93:0e:11:4e:fd:de:72
1745591796.209030: hif tx: SET_SEC_KEY 05 21 42 c1 b4 59 97 51 53 e8 30 bb ef 13 e9 ae 15 80 96 98 00
[2025-04-25T14:36:36.209105Z] libcpc(cpcd_0:1673) [cpc_write_endpoint:1524]: writing to EP #10
[2025-04-25T14:36:36.209172Z] libcpc(cpcd_0:1673) [cpc_write_endpoint:1540]: wrote to EP #10
[INFO][wspc]: NW send key index set: 0
[INFO][wspc]: NW send key index set: 4
1745591796.209661: tkl ADV reset: t=536s I[60,960]=797s k=1
1745591796.209700: tkl CFG reset: t=170s I[60,960]=259s k=1
1745591796.210187: tx-15.4 adv dst:00:00:00:00:00:00:00:00
1745591796.210566: hif tx: REQ_DATA_TX 00 4b 00 01 e3 28 97 96 ac 37 fe ff 23 a4 60 05 15 01 00 00 00 00 00 3f 34 a0 06 88 ff ff 00 12 03 21 05 04 00 00 00 00 43 17*
[2025-04-25T14:36:36.210693Z] libcpc(cpcd_0:1673) [cpc_write_endpoint:1524]: writing to EP #10
[2025-04-25T14:36:36.210771Z] libcpc(cpcd_0:1673) [cpc_write_endpoint:1540]: wrote to EP #10
1745591796.211121: tx-15.4 cfg dst:00:00:00:00:00:00:00:00
1745591796.211223: hif tx: REQ_DATA_TX 01 7f 00 09 e3 28 97 96 ac 37 fe ff 23 a4 60 0e aa aa aa aa 01 05 15 01 02 00 00 00 06 15 02 00 00 00 00 00 05 15 c0 60 ea 00*
[2025-04-25T14:36:36.211343Z] libcpc(cpcd_0:1673) [cpc_write_endpoint:1524]: writing to EP #10
[2025-04-25T14:36:36.211404Z] libcpc(cpcd_0:1673) [cpc_write_endpoint:1540]: wrote to EP #10
Wi-SUN Border Router is ready
1745591796.211758: drop tun : unsupported ICMPv6 type 133
1745591796.211821: drop tun : unsupported dst=ff02::16
[2025-04-25T14:36:36.568841Z] libcpc(cpcd_0:1673) [cpc_read_endpoint:1439]: reading from EP #10
[2025-04-25T14:36:36.568918Z] libcpc(cpcd_0:1673) [cpc_read_endpoint:1459]: read from EP #10
1745591796.568940: hif rx: CNF_DATA_TX 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
1745591796.820307: drop tun : unsupported dst=ff02::16
1745591797.160343: drop tun : unsupported dst=ff02::16
[2025-04-25T14:36:38.241676Z] libcpc(cpcd_0:1673) [cpc_read_endpoint:1439]: reading from EP #10
[2025-04-25T14:36:38.241783Z] libcpc(cpcd_0:1673) [cpc_read_endpoint:1459]: read from EP #10
1745591798.241823: hif rx: CNF_DATA_TX 01 00 00 00 00 00 00 00 00 00 00 00 00 00 98 96 98 00 00 00 00 00 00
Note: Once CPC is working, removing
-T cpc
is recommended.
If the Connected to RCP "x.y.z" (x.y.z), API t.u.v
message is present, everything is working as expected (the RCP version string comes from the RCP binary, not from wsbrd
).