<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Building firmware 1.4.0+ from source]]></title><description><![CDATA[<p dir="auto">This tutorial explains the setup required to build the firmware from the GitHub source repository <a href="https://github.com/sg-wireless/sg-sdk" target="_blank" rel="noopener noreferrer nofollow ugc">https://github.com/sg-wireless/sg-sdk</a></p>
<p dir="auto">In this tutorial, I am using Windows 11 with Ubuntu 24.04 installed via WSL (<a href="https://learn.microsoft.com/en-us/windows/wsl/about" target="_blank" rel="noopener noreferrer nofollow ugc">Windows Subsystem for Linux</a>). You can also use Ubuntu 24.04 or MacOS directly.</p>
<p dir="auto"><strong>Step1</strong>: Install necessary packages via apt</p>
<pre><code>sudo apt-get install git wget flex bison gperf python3 python3-pip python3-setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0 python3-venv python3-toml python3-serial
</code></pre>
<p dir="auto"><strong>Step2</strong>: Clone the SG Wireless Open Source SDK</p>
<pre><code>git clone https://github.com/sg-wireless/sg-sdk.git
</code></pre>
<p dir="auto"><strong>Note</strong>: If you previously cloned the repository, you can just fetch the latest version. When updating from 1.3.0 to 1.4.0+, it is recommended to deinit and re-init the submodules:</p>
<pre><code>git remote update
git submodule deinit --all -f
git pull
</code></pre>
<p dir="auto"><strong>Step3</strong>: Build the firmware</p>
<pre><code>cd sg-sdk &amp;&amp; ./fw_builder.sh --board SGW3501-F1-StarterKit build
</code></pre>
<p dir="auto"><strong>Note</strong>: You can copy/rename the defaults.sdk.example to file defaults.sdk to define build defaults such as board type and port.</p>
<p dir="auto"><strong>Step4</strong>: Flashing the firmware</p>
<p dir="auto">If you are using Ubuntu Linux natively on your PC, you can simply connect the Starter Kit and run:</p>
<pre><code>./fw_builder.sh --board SGW3501-F1-StarterKit flash --port /dev/ttyUSB0
</code></pre>
<p dir="auto"><strong>Note</strong>: You can copy/rename the defaults.sdk.example to file defaults.sdk to define build defaults such as board type and port.</p>
<p dir="auto">If you are using WSL, I suggest installing <a href="https://gitlab.com/alelec/wsl-usb-gui" target="_blank" rel="noopener noreferrer nofollow ugc">wsl-usb-gui</a> or <a href="https://github.com/nickbeth/wsl-usb-manager" target="_blank" rel="noopener noreferrer nofollow ugc">wsl-usb-manager</a></p>
<p dir="auto"><img src="/assets/uploads/files/1736537297428-c90bff24-431a-4d51-a8ea-071f259ce6a6-image.png" alt="c90bff24-431a-4d51-a8ea-071f259ce6a6-image.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">Select the entry with “Silicon Labs CP210x USB to UART Bridge (COMx)” that corresponds to the board you want to flash. In the screenshot above, I have two Starter Kits connected to my PC.</p>
<p dir="auto">Once the device is attached to the WSL subsystem, you can flash it with the same command as above:</p>
<pre><code>./fw_builder.sh --board SGW3501-F1-StarterKit flash --port /dev/ttyUSB0
</code></pre>
<p dir="auto"><strong>Note</strong>: On older versions of Ubuntu (ex: 22.04), the version of cmake installed with apt is too old. You can install a newer version by running:</p>
<pre><code>sudo apt-get install python3-pip &amp;&amp; pip3 install -U cmake
</code></pre>
<p dir="auto">Please make sure you add the PATH where cmake is installed:</p>
<pre><code>export PATH=~/.local/bin:$PATH
</code></pre>
<p dir="auto">Please let me know if you experience any issues with building the firmware.</p>
]]></description><link>https://forum.sgwireless.com/topic/77/building-firmware-1-4-0-from-source</link><generator>RSS for Node</generator><lastBuildDate>Sun, 19 Jul 2026 22:15:41 GMT</lastBuildDate><atom:link href="https://forum.sgwireless.com/topic/77.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 31 May 2026 13:34:39 GMT</pubDate><ttl>60</ttl></channel></rss>