Sigfox Protocol Library Architecture
The Sigfox Protocol Library is an abstraction layer. It connects your application software to the radio chipset through the manufacturer's APIs.
The Sigfox Protocol Library performs the usual features of a communication protocol:
- packet formatting,
- local functions (especially authentication, cryptography and error checking),
- communication procedures.
The Sigfox Protocol Library's core API is composed of base and optional features. Base features take care of the frame building and scheduling (in time and frequency), while optional features deal with Radio Configuration support, Downlink support, Secure Element support, etc.
To make the link between the Sigfox Protocol Library and the hardware components, a set of drivers exists. They perform the following functions:
- BPSK modulation / GFSK demodulation, which is optimized for each radio chipset characteristics,
- Non-volatile memory management, which stores parameters and values,
- Memory Allocation (dependant on each microcontroller),
- AES encryption feature, which performs authentication and/or encryption functions with or without support, from a hardware AES block,
- Timer management,
- Secured memory management (to store the ID, Key, and PAC credentials).
The drivers are dependent on the radio chipset. They make the communication link between the microcontroller running the Sigfox Protocol Library and the radio, MCU chipsets and other hardware elements, whatever the communication channel is. They are developed and provided by the chipset vendor.
Sigfox State Machine
The Sigfox State Machine implements several procedures of the Sigfox radio protocol. It is embedded in the Sigfox Protocol Library and consists of five states. The transitions between the five states give you a flavor of the radio protocol behavior. As you can see, it's simple, really simple!
Sigfox Protocol Library APIs
If your device uses a Sigfox Verified Modular Design or a Reference Design, the Sigfox Protocol Library is already embedded in it. Usually, a wrapper is added by the module manufacturer to comply with its own company's software requirements. When you want to transmit a message over the Sigfox network, you just have to prepare the content of your message and call a function. That's it!
If you plan to build your own design, you can contact Sigfox to get the latest Sigfox Protocol Library.
The Sigfox Protocol Library contains:
- the header files describing the function prototypes,
- the binary file compiled for the specific microcontroller target.
In addition to the Sigfox Protocol Library, Sigfox may provide device makers with additional software codes called Addons. For example, the Sigfox RF & Protocol Addon is an application which contains test modes. It has to be flashed into your device along with the Sigfox Protocol Library for the execution of the Sigfox RF & Protocol Test.
Sigfox Protocol Library Files
There are three ways to get the Sigfox Protocol Library, as depicted below:
First way
The Sigfox Protocol Library is embedded in Sigfox Verified modular designs.
This solution is ‘plug and play’, since the Sigfox Protocol Library is integrated and validated with the manufacturer's API.
For all available references, check out the Sigfox Partner Network.
Second way
Most of our semiconductor partners deliver the Sigfox Protocol Library either online (included in an SDK) or directly flashed in their SoC (System on Chip).
In both cases and as in the first way above, the Sigfox Protocol Library is delivered with the manufacturer's API. However, unlike the first way, the RF and Protocol testing is mandatory when designing a device with a chip-on-board approach.
If none of the above fits your project, Sigfox proposes :
- a 'Public Library Package' available for free ( see the section 'releases' in this page ) which contains :
- The complete binary and header files for the Sigfox Library compiled for most common compilers and microprocessors.
- NO support of integration is delivered with this package.
- a 'Standard Library Integration Package' that you can buy on a per-product basis from your Build dashboard and with :
- The complete binary and header files for the Sigfox Library compiled for your specific target (custom compiler / flags )
- Interactive support sessions to help you integrate the Sigfox Protocol Library on your hardware.
With this approach, the Sigfox Protocol Library comes alone. The manufacturer's API implementation remains under your responsibility.
Sigfox Protocol Library releases
The Sigfox Protocol Library is released and maintained by Sigfox. This section describes all the changes released in each version (improvements, new features, and bug fixes).
Since the V2.2.2 release, the library can be customized to include only the features required by the Device Makers, which makes it possible to save space in the device's flash memory. The possible combinations are defined in the table below, as well as in the release notes:
Features | DL_PNS_UP_ONLY | FDL | FDL_UP_ONLY | SE_FDL |
Protocol_V1 | supported | supported | supported | supported |
SwitchPublicKey | supported | supported | supported | supported |
Downlink | not_supported | supported | not_supported | supported |
RC1, RC3 RC5, RC6, RC7 |
supported | supported | supported | supported |
RC2, RC4 | not_supported | supported | supported | supported |
PayloadEncryption | not_supported | supported | supported | supported |
SecureElement | not_supported | not_supported | not_supported | supported |
Additional table information:
- FDL stands for FH, DC, and LBT. The 3 possible spectrum accesses, depending on the RC.
- DL stands for DC (Duty Cycle) and LBT (Listen Before Talk).
- PNS stands for Payload Encrypted NOT Supported. By default, this feature is present in the Sigfox Library.
- UP_ONLY stands for Uplink Only Library. Downlink feature is not supported.
- SE stands for SECURE ELEMENT feature.
Download the 'Public Library Package (FDL version only)' below : with Compiler IAR, Keil and GCC for Targets Cortex M0,M0+,M3, M4, M23 and M33
you need to be logged in
Sigfox Library Releases Information :
Date | Version | Short Description |
---|---|---|
09-Mar-2022 | V2.11.0 | Compliance with Sigfox Protocol specification V1.6 ( RC3d support ) |
15-Oct-2020 | V2.10.0 | Compliance with Sigfox Protocol specification V1.5 ( rollover counter modulo flexibility ) |
30-Apr-2020 | V2.8.1 | DL bug fix |
19-Nov-2019 | V2.8.0 | RC7 ( Russia ) |
28-Feb-2019 | V2.7.0 | Internal feature |
21-Jan-2019 | V2.6.1 | Bug Fix, minor issue seen on the payload encryption |
14-Sep-2018 | V2.6.0 | Extend RC5 bandwidth to 192kHz. |
31-Jul-2018 | V2.5.0 | Single Frame feature introduction |
04-May-2018 | V2.4.0 | RC6 (India) Support. |
02-Mar-2018 | V2.3.1 | Minor bug fix on the LBT feature for RC3. |
09-Feb-2018 | V2.3.0 | Monarch feature |
23-Janv-2018 | V2.2.3 | Bug fix on the Frequency Hopping computation for RC2 and RC4 ( introduced since V2.0.0 ) |
21-Nov-2017 | V2.2.2 | Payload decryption algorithm change ( Only for Payload Encryption supported and Downlink device ) |
08-Nov-2017 | V2.2.1 | Bug Fix on internal state machine : Come back to READY state after a downlink timeout. |
23-Oct-2017 | V2.2.0 | Architecture optimization |
19-Sep-2017 | V2.1.0 | Payload Encryption feature |
07-Jul-2017 | V2.0.0 | Secure Element support |
03-Jul-2017 | V1.9.3 | Bug fix – Binary shift operation fix with some compiler – only affect RC4. |
13-Jun-2017 | V1.9.2 | Support the mobility for Japan/Korea – RC5 |
02-May-2017 | V1.9.1 | Bug fix in the RX frequency computation in RC4 |
20-Mar-2017 | V1.9.0 | Change frequency hopping sequence for RC2 and 4 |
25-Oct-2016 | V1.8.9 | Few bug fixes |
11-Oct-2016 | V1.8.8 | RC3a defined at 36kHz ( possibility to extend to 192kHz ) |
17-Mar-2016 | V1.8.7 | Add new storage in NVM - only for FCC standard. |
29-Jan-2016 | V1.8.6 | Add documention for a better library integration experience |
15-Dec-2015 | V1.8.5 | Integrate Carrier Sense parameter for ARIB standard in Manufacturer API. |
07-Dec-2015 | V1.8.4 | 2 Fixes regarding the ARIB standard. Other standards are not impacted. LBT support |
01-Dec-2015 | V1.8.3 | Minor Change to support ChessDE (NXP) compiler. |
30-Nov-2015 | V1.8.2 | Support FCC Uplink (902.2 MHz) and Downlink (905.2 MHz) Frequencies |
06-May-2015 | V1.6 | Integrate Downlink |