The Gecko SDK (GSDK) combines all Silicon Labs 32-bit IoT product software development kits (SDKs) based on Gecko Platform into a single, integrated SDK.

Overview

Silicon Labs Gecko SDK (GSDK)

The Gecko SDK (GSDK) combines Silicon Labs wireless software development kits (SDKs) and Gecko Platform into a single, integrated package. The GSDK is your primary tool for developing in the Silicon Labs IoT Software ecosystem. All of Silicon Labs' stacks are written in-house to provide a seamless experience from silicon to tools, allowing you to unlock powerful features with ease, including:

  • Abstraction of complex requirements like multiprotocol and pre-certification
  • Industry-leading ability to support a large number of nodes
  • Ultra-low power consumption
  • Strong network reliability

Silicon Labs also helps future-proof your devices with over-the-air software and security updates, helping to minimize maintenance cost and improve your end user product experience!

Licensing

Gecko SDK is covered by one of several different licenses. The default license is the Master Software License Agreement (MSLA), which applies unless otherwise noted. Refer to License.txt for full details.

Documentation

An archive of all documents associated with the latest release of GSDK can be found in Releases. Documentation for some of the protocol SDKs and software components is available on https://docs.silabs.com.

Getting Started with GSDK

The recommended method to get started with the GSDK is to first install Simplicity Studio 5, which will setup your development environment and walk you through the installation of GSDK. Alternatively, GSDK and other required tools may be installed manually.

Installing through Simplicity Studio

Simplicity Studio 5 includes everything needed for IoT product development with Silicon Labs devices, including:

  • Detection and recognition of evaluation and development kits,
  • Resource navigator with kit and device-specific content,
  • Software project generator for multiple IDEs and GNU Make targets,
  • Software and hardware configuration tools,
  • Eclipse CDT-based IDE,
  • GNU toolchain,
  • Advanced network analysis tools,
  • Code-correlated energy profiling,
  • And a variety of other tools.

Start by downloading the Simplicity Studio package for your operating system from https://www.silabs.com/simplicity. Step-by-step installation instructions are provided in the online Simplicity Studio 5 User’s Guide.

Installing GSDK and Tools Manually

A GSDK development environment may also be installed and set up manually.

GSDK

GSDK releases are packaged as an archive that may be downloaded from the Releases page on GitHub. You may also clone this repo using a git client. Note that an installation of git lfs is also required. If you are installing git lfs only to use with the GSDK, you do not need to specify file types.

Toolchain

This release of GSDK supports the Arm Embedded Toolchain version 10.2 (10-2020-q4-major) and IAR Embedded Workbench v8.50.9. One of these toolchains must be installed.

Silicon Labs Configurator (SLC) Command-line Interface (CLI)

GSDK contains software that follows the SLC specification. Software is grouped into components (defined by .slcc files) that may provide features and/or require features provided by other components. Example projects (.slcp) describe a single software application (usually made up of multiple components plus application code) that can be used to generate an IDE project.

Simplicity Studio 5 includes a pre-integrated version of SLC tooling. The SLC-CLI tool provides a command-line alternative that, among other things, will resolve project and component dependencies and generate a project for a specified embedded target and build system (for example, IAR Embedded Workbench or GNU tools via a Makefile).

See the SLC specification for details about SLC. For information on installing and using the SLC-CLI, see UG520: Software Project Generation and Configuration with SLC-CLI.

Comments
  • Cannot update UZB7 Firmware

    Cannot update UZB7 Firmware

    I have the right firmware from this package and have attempted to flash OTW using PC Controller, following instructions here: Z-Wave 700/800: OTW of Controller - Silicon Labs (silabs.com)

    I received an error "can't open Xmodem session"

    This is not a devkit device so I shouldn't need a bootloader, nevertheless I have attempted to follow those instruction and the terminal in TeraTerm does not allow any interaction (per here, stuck at Step 5: https://siliconlabs.force.com/community/s/article/z-wave-700-programming-uzb7-controller-stick?language=en_US)

    Can someone please assist with this?

    opened by vaderag 6
  • Missing linker scripts for series 2 chip 4

    Missing linker scripts for series 2 chip 4

    The linker scripts for BGM24, MGM24, and EFR32BG24 are missing. They are usually found under 'platform/Device/SiliconLabs//Source/GCC' but for these dies it seems that they are not there. It exist for EFR32MG24 though, I assume it would be the same, but it makes generating paths via substitution wonky.

    opened by FredrikLL 2
  • Unable to uninstall `Bootloader Application Interface` component in SDK 4.1.0

    Unable to uninstall `Bootloader Application Interface` component in SDK 4.1.0

    We have a working project based on the Bluetooth-NCP example using Gecko SDK 4.0.2 to build firmware for EFR32. Our current configuration removes the Platform->Bootloader->Bootloader Application Interface component. This builds with no issues with SDK 4.0.2.

    We are running into an issue attempting to update the SDK to 4.1.0 as the Bootloader Application Interface component is now showing up as a dependency of the NCP Interface and can no longer be uninstalled.

    Screen Shot 2022-08-08 at 4 24 56 PM
    opened by kriszabala 2
  • Fix valid input value limits for SERIAL_API_SETUP_CMD_TX_POWERLEVEL_SET_16_BIT

    Fix valid input value limits for SERIAL_API_SETUP_CMD_TX_POWERLEVEL_SET_16_BIT

    Max value for iTxPower should be 140 deci dBm or 14.0 dBm and not 1.4 dBm.

    Debug log from customized ZPC from UnifySDK 1.2.0, shows that attempt to set value normal_tx_power_dbm: 130 (13 dBm) will fail:

    INFO: [zwave_rx] Z-Wave API module RF region 0
    
    DEBUG: [zwapi_connection] Outgoing Z-Wave API frame (hex): Length=08 Type=00 Cmd=0B 12 00 82 00 00 6C 
    DEBUG: [zwapi_session] Got Z-Wave API response frame (hex): Length=05 Type=01 Cmd=0B 12 00 
    WARNING: [zwave_rx] Z-Wave module power setting could not be applied. Command status: 1.
    WARNING: [zwave_rx] Running with default power
    

    Attempt to set value normal_tx_power_dbm: 14 (1.4dBm) will succeed

    DEBUG: [zwapi_connection] Outgoing Z-Wave API frame (hex): Length=08 Type=00 Cmd=0B 12 00 0E 00 00 E0 
    DEBUG: [zwapi_session] Got Z-Wave API response frame (hex): Length=05 Type=01 Cmd=0B 12 01 
    
    opened by nkljajic 0
  • Refactoring the platform init functions

    Refactoring the platform init functions

    What is being fixed? Examples: Platform init functions refactoring

    What's in this PR platform init related function are moved to EFR platform init file

    Testing How was this tested? (at least one bullet point required) basic test cases run manually on mg12+rs9116 and wf200 also

    opened by nipatel-silabs 0
  • The behavior to check SPI CS Port in spidrv_validation.lua

    The behavior to check SPI CS Port in spidrv_validation.lua

    When I use the slc-cli to generate a project with spidrv:spiflash, I will get this error:

    The following issues exist:
    ERROR : SPIFLASH : SPIDRV is configured to control CS, but no CS pin is selected - CS must be controlled by the application, or a CS pin must be configured : Location = #define SL_SPIDRV_SPIFLASH_CS_PORT
    

    So, I trace the code and find this condition. https://github.com/SiliconLabs/gecko_sdk/blob/2e82050dc8823c9fe0e8908c1b2666fb83056230/platform/emdrv/spidrv/script/spidrv_validation.lua#L10

    I think it will cause any new project with spidrv component to meet this error. I'm not sure how Simplicity Studio avoids this error, but I have two workarounds.

    1. Add a config/sl_spidrv_spiflash_config.h file first.

    2. Just remove the if condition in spidrv_validation.lua or add --force when using slc-cli to generate.

    opened by FloatingLab 0
  • Fixed UI tags for Network Steering config header

    Fixed UI tags for Network Steering config header

    Fixed an issue with the UI tags of the Network Steering Component configuration header for options :

    • RADIO_TX_POWER
    • CHANNEL_MASK

    This was displaying those options as toggle switches instead of input boxes in Simplicity Studio config UI

    opened by brian-silabs 0
  • fix: Add `extern

    fix: Add `extern "C"` to `em_eusart.h`

    Put most of the contents of platform/emlib/inc/em_eusart.h into a extern "C" block.

    It looks like this is how it has been done for most other header files.

    opened by jakeru 0
  • Get the latest ot-br-posix from official OpenThread repo

    Get the latest ot-br-posix from official OpenThread repo

    The mDNSResponder repo provided in third_party/gecko_sdk/util/third_party/ot-br-posix/script/bootstrap is no longer accessible and there are some problems with the tayga nat64. These problems have been addressed on the latest officialrepo.

    Would you please get the latest changes on this file to the ot-br-posix repo in SDK? We have some packages dependent on it and we are applying a patch manually but it should be solved eventually.

    opened by a-cinar 0
  • sl_openthread_rtos_config.h is not included in sl_ot_rtos_adaptation.c

    sl_openthread_rtos_config.h is not included in sl_ot_rtos_adaptation.c

    In the file sl_ot_rtos_adaptation.c there is a reference to SL_OPENTHREAD_RTOS_TASK_PRIORITY.

    This declaration exists in sl_openthread_rtos_config.h but this config file is not included resulting in the following error: Symbol 'SL_OPENTHREAD_RTOS_TASK_PRIORITY' could not be resolved

    #ifdef SL_CATALOG_BLUETOOTH_PRESENT
    #include "sl_bt_rtos_config.h"
    
    // Configure OpenThread initialization task to use the highest priority to ensure
    // OpenThread instantiation and CLI initialization is complete, before other tasks
    // have started
    #define SL_OPENTHREAD_RTOS_TASK_PRIORITY_STARTUP   (SL_BT_RTOS_LINK_LAYER_TASK_PRIORITY + 1)
    #else
    #define SL_OPENTHREAD_RTOS_TASK_PRIORITY_STARTUP   (SL_OPENTHREAD_RTOS_TASK_PRIORITY + 1)
    #endif // SL_CATALOG_BLUETOOTH_PRESENT
    
    opened by alexanderhoet 0
  • Differential input on analog input pins  iadcPosInputPadAna0 iadcNegInputPadAna1.  em_iadc.h

    Differential input on analog input pins iadcPosInputPadAna0 iadcNegInputPadAna1. em_iadc.h

    Using the enum IADC_NegInput_t and defining iadcNegInputPadAna1 as the negative input will cause just ADC noise no signal.

    I found the solution. It's required to select pin number 1 for the negative input, so something similar as what is done on the iadcNegInputGnd where | 1 is added at the end of the define. So I have done: iadcNegInputPadAna1 = (_IADC_SCAN_PORTNEG_PADANA1 << (_IADC_SCAN_PORTNEG_SHIFT - _IADC_SCAN_PINNEG_SHIFT)) | 1;

    This is probably a problem with some of the other inputs without it's own pin number. So this part of the SDK is does not seem very well tested.

    opened by teg-gitworld 7
  • bt_host_uart_dfu doesn't build under MinGW32 without changes

    bt_host_uart_dfu doesn't build under MinGW32 without changes

    With SDK 4.4.1 release and building in a MinGW32 environment on Windows, I had various issues:

    1. Makefile incorrectly detected the OS, so it was trying to build POSIX tcp and uart etc.

    2. When forced to 'win', it then had issues with In hints in tcp_win.c. I had to remove.

    3. When linking, it failed with

    obj/tcp_win.o: In function tcp_open': c:\Users\admin\Desktop\usb2\gecko_sdk\app\bluetooth\example_host\bt_host_uart_dfu/../../../../app/bluetooth/common_host/tcp/tcp_win.c:75: undefined reference togetaddrinfo' c:\Users\admin\Desktop\usb2\gecko_sdk\app\bluetooth\example_host\bt_host_uart_dfu/../../../../app/bluetooth/common_host/tcp/tcp_win.c:88: undefined reference to freeaddrinfo' c:\Users\admin\Desktop\usb2\gecko_sdk\app\bluetooth\example_host\bt_host_uart_dfu/../../../../app/bluetooth/common_host/tcp/tcp_win.c:101: undefined reference tofreeaddrinfo' collect2.exe: error: ld returned 1 exit status make: *** [exe/bt_host_uart_dfu] Error 1

    Since I'm not using tcp I just hacked the tcp_open to do nothing.

    Please can you confirm that it builds for you for Windows?

    an1086-gecko-bootloader-bluetooth.pdf is also a bit vague about how to build too, as the makefile exists in different folders for each version. For v4 you have to go to the folder to build.

    (I was building from a msys prompt (C:\MinGW\msys\1.0\msys.bat) after installation of mingw and msys.)

    Off topic, the log level parameter didn't appear to change the output when set to 4. I expected to see packets or something when debug was enabled.

    But the tool worked well. Thank you!

    opened by pilcherd 0
Releases(v4.1.3)
Owner
Silicon Labs
Silicon Labs is a leading provider of solutions for a smarter, more connected world. The official GitHub account contains officially supported repositories.
Silicon Labs
It includes our specialized binary payload DSL (parser and schemas), clients and sdks.

Symbol Monorepo In Q1 2021, we consolidated a number of projects into this repository. It includes our specialized binary payload DSL (parser and sche

Symbol 22 Nov 6, 2022
Lee Thomason 298 Nov 16, 2022
Iot-Surveillance-Car - This is a IOT Based Surveillance Car which can be controlled, tracked globally as well as its data can be accessed globally

Iot-Surveillance-Car - This is a IOT Based Surveillance Car which can be controlled, tracked globally as well as its data can be accessed globally. The camera on the front of the car can also be monitored globally. It can go anywhere where sim connection is available. 5th Sem Mini project

Rahul Vijan 5 Nov 24, 2022
A continuation of FSund's pteron-keyboard project. Feel free to contribute, or use these files to make your own! Kits and PCBs are also available through my facebook page.

pteron-pcb Intro This project is the evolution of the Pteron-Keyboard project, an incredible ergonomic keyboard that was handwired only. I aimed to in

null 17 Oct 11, 2022
ROS GNSS/INS driver for Inertial Labs positioning systems for the CARMA Platform

CARMA Inertial Labs GNSS/INS Driver This is a fork of the Inertial Labs ROS package that is used for connecting to Inertial Labs GNSS/INS, IMU-P, AHRS

null 2 Dec 26, 2021
A bootloader and experimentation playground for Apple Silicon

m1n1: an experimentation playground for Apple Silicon (And to some extent a Linux bootloader) Building You need an aarch64-linux-gnu-gcc cross-compile

Asahi Linux 2.4k Nov 25, 2022
Protobuf for Proxyman app - Include Apple Silicon & Intel architecture

Protobuf for Proxyman macOS app Protobuf for Proxyman app - Include Apple Silicon & Intel architecture How to build Open the project on the latest Xco

Proxyman 6 Nov 29, 2021
A program to backup all of your game savefiles on your system, neatly, and into a single folder.

Savefile Saver I created this project as a solution to a simple, but annoying problem: Backing up my game savefiles. I wanted to be able to copy all o

Dominic Esposito 6 Oct 24, 2022
Linux kernel labs

Linux Kernel Labs This repo illustrates how to write Linux kernel module labs safely and gracefully in a simple and concise way. Contrary to most work

Alex Chi 50 May 11, 2022
XV6 Labs - for Operating System

XV6 Labs - for Operating System Source: https://pdos.csail.mit.edu/6.828/2021/xv6.html Lab 1 Utilities Including some user-space programs sleep.c Noth

LanFear 1 Nov 5, 2021
Source code to the 1980s Amiga product, version dated 1992

HyperCacheAmiga Source code to the 1980s Amiga product, version dated 1992 A fellow named Matthew Kott reached out and asked me to release the source

Plummer's Software LLC 33 Nov 19, 2022
This is a product / project developed by a team of Five Members including Mithilesh Ghadge for the Engineering Clinics at Vellore Institute Of Technology

UltrasonicSensorGlasses-for-blind-people This is a product / project developed by a team of Five Members including Mithilesh Ghadge for the Engineerin

Mithilesh Ghadge 2 Oct 14, 2021
Historical Bell Labs ratfor code. Plus an attempt to modernize it.

RATFOR --- Rational Fortran This repository tracks the history of the original C version of the Bell Labs ratfor translator written by Brian Kernighan

Arnold Robbins 9 May 5, 2022
This is a tool for software engineers to view,record and analyse data(sensor data and module data) In the process of software development.

![Contributors][Huang Jianyu] Statement 由于工具源码在网上公开,除使用部分开源项目代码外,其余代码均来自我个人,工具本身不包含公司的知识产权,所有与公司有关的内容均从软件包中移除,软件发布遵循Apache协议,任何人均可下载进行修改使用,如使用过程中出现任何问

HuangJianyu 34 May 5, 2022
A video input (V4L2) to NDI converter that works with Raspberry Pi (32-bit and 64-bit), and Intel/AMD CPUs

V4L2 to NDI V4L2 to NDI is an application that connects to attached V4L2 devices and encodes the video signal into NDI It uses the NDI library, allowi

Luke Plassman 49 Nov 12, 2022
Optimization-Based GNSS/INS Integrated Navigation System

OB_GINS Optimization-Based GNSS/INS Integrated Navigation System We open-source OB_GINS, an optimization-based GNSS/INS integrated navigation system.

i2Nav-WHU 281 Nov 24, 2022
ThatOS64 is for the youtube series on 64-Bit Kernel Development pre-loaded by the EFI

Step by Step Tutorials on how to code a 64-Bit loader and kernel for OS Development NOTES Starting with CODE5, the resolution from the EFI file sets t

ThatOSDev 0 Jul 10, 2022
CQC (Charmed Quark Controller) a commercial grade, full featured, software based automation system. CQC is built on our CIDLib C++ development system, which is also available here on GitHub.

The CQC Automation System What It Is CQC is a commercial quality, software based automation system, suitable for residential or commercial application

Dean Roddey 60 Oct 2, 2022
bl_mcu_sdk is MCU software development kit provided by Bouffalo Lab Team for BL602/BL604, BL702/BL704/BL706 and other series of RISC-V based chips in the future.

bl mcu sdk is an MCU software development kit provided by the Bouffalo Lab Team for BL602/BL604, BL702/BL704/BL706 and other series of chips in the future

Bouffalo Lab 147 Nov 26, 2022