{"id":16895856,"url":"https://github.com/nerivec/silabs-multiprotocol-builder","last_synced_at":"2025-07-18T08:31:26.338Z","repository":{"id":250473557,"uuid":"834553759","full_name":"Nerivec/silabs-multiprotocol-builder","owner":"Nerivec","description":"Builder for Silabs multiprotocol (Zigbee, OpenThread, Bluetooth Low Energy) components.","archived":true,"fork":false,"pushed_at":"2024-12-18T20:23:53.000Z","size":338,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-11T13:09:47.436Z","etag":null,"topics":["ble","bluetooth-low-energy","bluez","cpc-daemon","cpcd","multiprotocol","openthread","otbr","silabs","zigbee","zigbeed"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Nerivec.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"Nerivec","patreon":"Nerivec","buy_me_a_coffee":"Nerivec"}},"created_at":"2024-07-27T16:10:09.000Z","updated_at":"2025-06-12T11:18:43.000Z","dependencies_parsed_at":"2024-08-03T20:54:13.965Z","dependency_job_id":null,"html_url":"https://github.com/Nerivec/silabs-multiprotocol-builder","commit_stats":null,"previous_names":["nerivec/silabs-multiprotocol-builder"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/Nerivec/silabs-multiprotocol-builder","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nerivec%2Fsilabs-multiprotocol-builder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nerivec%2Fsilabs-multiprotocol-builder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nerivec%2Fsilabs-multiprotocol-builder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nerivec%2Fsilabs-multiprotocol-builder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Nerivec","download_url":"https://codeload.github.com/Nerivec/silabs-multiprotocol-builder/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nerivec%2Fsilabs-multiprotocol-builder/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265728813,"owners_count":23818729,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ble","bluetooth-low-energy","bluez","cpc-daemon","cpcd","multiprotocol","openthread","otbr","silabs","zigbee","zigbeed"],"created_at":"2024-10-13T17:26:36.409Z","updated_at":"2025-07-18T08:31:26.326Z","avatar_url":"https://github.com/Nerivec.png","language":"Shell","funding_links":["https://github.com/sponsors/Nerivec","https://patreon.com/Nerivec","https://buymeacoffee.com/Nerivec"],"categories":[],"sub_categories":[],"readme":"# silabs-multiprotocol-builder\n\n\u003e [!TIP]\n\u003e Silabs will be releasing binaries, same as this project intended, with future releases. _Archiving this for reference._\n\nBuilder for Silabs multiprotocol (Zigbee, OpenThread, Bluetooth Low Energy) components.\n\nUses Silicon Labs Simplicity SDK and Silicon Labs Configurator (slc) to build binaries and configurations files for supported architectures (arm32, arm64, x86_64). It mimics the official Silicon Labs Multiprotocol Docker container to be able to use the components outside of containers.\n\nThe following installation steps have been tested (unless otherwise noted) on Ubuntu 24.04 x64 (VirtualBox) with a Sonoff Dongle-E with [this firmware](https://github.com/Nerivec/silabs-firmware-builder/releases/download/v2024.6.1/sonoff_zbdonglee_rcp-uart-802154-blehci-sw_460800_2024.6.1.gbl).\n\n\u003e [!TIP]\n\u003e The release archives contain the `*.sh` scripts in this repository at the time of build. If using the latest release, check for newer versions of the scripts here and replace them as needed.\n\n## Pre-setup\n\nThis step extracts the previously downloaded archive in its own folder and runs the necessary local adjustments to the newly extracted files, including possible customization.\n\n```bash\ntar xf silabs-multiprotocol-components-ARCH.tar.xz --one-top-level\ncd silabs-multiprotocol-components-ARCH\nsudo chmod +x ./pre-setup.sh\nsudo ./pre-setup.sh\n```\n\n\u003e [!IMPORTANT]\n\u003e Replace `ARCH` with the arch of the downloaded archive.\n\n### Parameters\n\n- `--device-path DEVICE_PATH`\n  - The path to your physical adapter.\n  - Default: `/dev/ttyACM0`.\n- `--baudrate BAUDRATE`\n  - The baudrate of your RCP firmware.\n  - Default: `460800`.\n- `--hardware-flow HARDWARE_FLOW`\n  - The flow control of your RCP firmware (`sw` or `rtscts=false` should set this to `false`).\n  - Default: `true`.\n- `--disable-encryption DISABLE_ENCRYPTION`\n  - See CPCd configuration below.\n  - Default: `true`.\n- `--disable-conflict-services DISABLE_CONFLICT_SERVICES`\n  - Automatically disables conflicting services on your machine when set to `true`. Note: This is false by default as that may alter your current machine's state in an undesirable way. Check `script/_disable_services` for details on what may be conflicting if you wish to do it manually.\n  - Default: `false`.\n- `--zigbeed-iid ZIGBEED_IID`\n  - The zigbeed process interface id (iid) which is used to differentiate between multiple networks using the same RCP. The iid must be set to a value between 1 and 3 and must be unique for each host process using the multi-PAN 802.15.4 RCP.\n  - Default: `1`.\n- `--otbr-iid OTBR_IID`\n  - Same as above, for OTBR process.\n  - Default: `2`.\n\n#### Example\n\nThis is the default if no parameter given:\n\n```bash\nsudo ./pre-setup.sh --device-path /dev/ttyACM0 --baudrate 460800 --hardware-flow true --disable-encryption true --disable-conflict-services false --zigbeed-iid 1 --otbr-iid 2\n```\n\n### Installing an RCP firmware on your adapter.\n\nThese components currently require an RCP firmware version 2024.6.1. You can find some experimental builds here: https://github.com/Nerivec/silabs-firmware-builder/releases/tag/v2024.6.1\n\n\u003e `rcp-uart-802154-blehci` =\u003e with BLE support.\n\n\u003e `rcp-uart-802154` =\u003e without BLE support (you won't be able to use the BLE components).\n\n## Install\n\nThis step installs the requested components and sets up any startup requirements.\n\n```bash\nsudo chmod +x ./install.sh\nsudo ./install.sh\n```\n\n### Parameters\n\nBy default (without parameters), the script only installs cpcd (required for all others), use the parameters below to install the components you want.\n\n- `--zigbeed`\n  - Install zigbeed components.\n- `--otbr`\n  - Install otbr components.\n- `--ot-cli`\n  - Install ot-cli components.\n- `--ble`\n  - Install ble components.\n- `--skip-cpcd`\n  - Skip installation of cpcd components (useful if you want to launch the script in multiple steps to install components one at a time).\n- `--all`\n  - Takes precedence over `--skip-cpcd` if supplied after it, doesn't if before it.\n- `--infra-if-name INFRA_IF_NAME`\n  - Interface name (for OTBR), usually `eth0` or `enp0s3`.\n  - Default: return value of `ip -o -4 route show to default | awk '{print $5}'`.\n\n\u003e [!IMPORTANT]\n\u003e The `install.sh` script should take care of detecting already installed components and skip unnecessary/undesired steps. You may need to adjust it if you want to customize the behavior.\n\n\u003e [!TIP]\n\u003e Restarting your machine after installing the components of your choice (below) should allow enabled services to start in the proper order automatically.\n\n## CPCd\n\nBase communication protocol for RCP support.\n\n### Configuration\n\nLocation: `/usr/local/etc/cpcd.conf`\n\n\u003e [!NOTE]\n\u003e Setting `disable_encryption` to false requires a firmware built with encryption enabled too.\n\n## zigbeed\n\nAdd ZigBee support.\n\n\u003cimg src=\"./poc/z2m-about.png\" height=\"400\"\u003e\u003c/img\u003e\n\u003cimg src=\"./poc/z2m-network-map.png\" height=\"400\"\u003e\u003c/img\u003e\n\n### Configuration\n\nLocation: `/usr/local/etc/zigbeed.conf`\n\n\u003e [!NOTE]\n\u003e Adjust `ezsp-interface` if you modify the `socat` configuration below.\n\n### Socat Configuration\n\nLocation: `/etc/systemd/system/zigbeed-socat.service`\n\n\u003e [!TIP]\n\u003e To connect to zigbeed from your ZigBee application, use the path configured in that file. Default is: `/dev/ttyZigbeeNCP`.\n\n#### TCP\n\n\u003e [!WARNING]\n\u003e Untested\n\nTo use TCP instead, you can change the default socat command to something like this:\n```conf\nExecStart=/usr/bin/socat -v tcp-l:9627,reuseaddr,fork pty,link=/tmp/ttyZigbeeNCP,raw\n```\n\nThen you can use `127.0.0.1:9627` in your ZigBee application (in whatever IP/port format required). _Check other socat tutorials to configure the TCP part as needed._\n\n## OTBR\n\n\u003e [!WARNING]\n\u003e OTBR setup is very intricate, and might require manual editing of the scripts used to install all the requirements if your setup varies slightly. Beware, it also modifies several parts of the system to allow it to work (networking \u0026 co).\n\nAdd OpenThread support.\n\n\u003cimg src=\"./poc/ot-status.png\" height=\"400\"\u003e\u003c/img\u003e\n\u003cimg src=\"./poc/ot-topology.png\" height=\"400\"\u003e\u003c/img\u003e\n\n### Start utilities\n\nSee https://openthread.io/reference/cli/commands and https://openthread.io/guides/border-router/tools for more details.\n\n#### ot-ctl\n\n#### ot-cli\n\n```bash\nsudo /usr/local/bin/ot-cli 'spinel+cpc://cpcd_0?iid=2\u0026iid-list=0'\n```\n\n\u003e [!TIP]\n\u003e Check the `--otbr-iid` saved in `pre-setup-run.conf` from when you ran `pre-setup.sh` (above command uses default).\n\n#### ot-fct\n\nSee [README.md](https://github.com/SiliconLabs/simplicity_sdk/blob/sisdk-2024.6/util/third_party/openthread/tools/ot-fct/README.md) for more details.\n\n#### pskc\n\n#### steering-data\n\n## BLE\n\nAdd Bluetooth Low Energy support.\n\n\u003cimg src=\"./poc/btmon-discovering.png\" height=\"400\"\u003e\u003c/img\u003e\n\n### Start utilities\n\nBluetooth CLI utility:\n```bash\nsudo bluetoothctl\n```\n\nView traffic:\n```bash\nsudo btmon\n```\n\n## Troubleshooting\n\nUse `journalctl` to get more information if a service is misbehaving or just to check the logs:\n\n```bash\nsudo journalctl -fexu cpcd\nsudo journalctl -fexu zigbeed-socat\nsudo journalctl -fexu zigbeed\nsudo journalctl -fexu otbr-agent\nsudo journalctl -fexu otbr-web\nsudo journalctl -fexu cpc-hci-bridge\nsudo journalctl -fexu hciattach\nsudo journalctl -fexu bluetooth\n```\n\n\u003e [!TIP]\n\u003e If you get issues with some services that have not started after boot, see if something takes too long and prevents others from starting, _like the serial path becoming available_ (might need to adjust `sleep` times in systemd services or use similar mechanisms).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnerivec%2Fsilabs-multiprotocol-builder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnerivec%2Fsilabs-multiprotocol-builder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnerivec%2Fsilabs-multiprotocol-builder/lists"}