This Knowledge Base Article (KBA) will detail the steps necessary to port each of the 5 Z-Wave software example projects from Simplicity Studio 4 and Gecko SDK Suite 2.7.6 to Simplicity Studio 5 and Gecko SDK Suite 3.0.0. If the project being migrated is based on one of the software examples then the steps should be very similar. If possible it is always easiest to create a new software example project using the new GSDK.
1. First Migrate the project from the Simplicity Studio 4 workspace to Simplicity Studio 5 using the [Migrate Project] tool which can be found by clicking the [Tools] icon from any perspective (in Simplicity Studio 5) and then browsing to the correct workspace. Select all projects to be migrated and continue through the dialog boxes. After the projects are migrated a success screen should be displayed that says additional change to the project might be needed and directing you to this Knowledge Base Article (KBA).
2. For All projects:
It is recommended to copy the v5 version of those files into the projects to replace them. The files can just be copied from the v5 project replacing the v4 copies (select the file and use CTRL (or CMD) C and then CTRL (or CMD) V to paste into the migrated project). Confirm that you want to overwrite the files.
3. Projects DoorLockKeyPad, SensorPIR, SwitchOnOff
These projects have changes in the base project file (DoorLockKeyPad.c, SensorPIR.c and SwitchOnOff.c) that need to be merged from a Simplicity Studio 5 version of the project to the migrated project. Select the above mentioned .c file in the project created from Gecko SDK Suite 3.0 and use CTRL-C or right click and select copy. Then click the [src] folder in the migrated version of the project and select CTRL-V or right click the folder and select [Paste] and select [Yes] when prompted to overwrite the file. If user changes have been made to the project or the file has been renamed, then the changes should be merged instead of overwriting the file. Select the .c file in the Simplicity Studio 5 generated copy of the project and ctrl click the equivalent file in the migrated project and then right click the file and select [Compare With] > [Each Other] and then merge the changes into the file.
Verify the project builds correctly after merging the files.
4. Project PowerStrip
1. Copy new folders 'driver' and 'ZAF_ApplicationUtilities_Actuator' from the Simplicity Studio 5 created project into the migrated project using one of the copy methods previously described.
2. The 'ZAF_CommandClasses_MultilevelSwitch' folder has different files in it for Simplicity Studio 5. Delete the folder from the migrated project and then copy the folder from the Simplicity Studio 5 created project into the migrated project.
3. To get the changes to PowerStrip.c copy or merge the Simplicity Studio 5 created file into the migrated project.
4. There are also changes to the Symbols and Includes in the Simplicity Studio 5 created project. To easily port this to the migrated project open project properties <C/C++ General> → <Paths and Symbols> → <Export Settings...> and select a filename to store the Symbols and Includes from the v5 created project and then use <Import Settings...> in the migrated project to add them to the project.
Verify the project builds correctly.
5. Project WallController
1. The 'ZAF_CommandClasses_MultilevelSwitch' folder has different files in it for Simplicity Studio 5. Delete the folder from the migrated project and then copy the folder from the Simplicity Studio 5 created project into the migrated project.
2. To get the changes to WallController.c copy or merge the Simplicity Studio 5 created file into the migrated project.
Verify the project builds correctly.
Hopefully the above instructions help to quickly migrate the project to GSDK 3.0.0.
The Simplicity Commander included with Simplicity Studio™ is regularly updated with other Simplicity Studio updates and so it is recommended to just update Simplicity Studio™ to get the latest Simplicity Commander update.
However, sometimes there is a lag between when a new Simplicity Commander is released on the Silicon Labs website (https://www.silabs.com/mcu/programming-options) and when a new Simplicity Studio™ version is released. If the new version of Simplicity Commander includes a new feature that is required for development then it is possible to replace the Simplicity Studio™ version with the following procedure.
First make sure to exit all running instances of Simplicity Studio™ and then download the appropriate version of Simplicity Commander from the above website.
The procedure for updating Simplicity Commander on the MacOS is slightly different and is described after the Windows and Linux instructions.
Windows and Linux (verified on Windows 10 and Ubuntu 18.04 LTS)
Backup the following files from the internal Simplicity Studio™ commander as they have to be added back after the update:
The default paths for the Simplicity Studio™ version of commander are:
When the downloaded version of Simplicity Commander is expanded on Windows it is placed in a [Simplicity Commander] folder and on Linux in a [SimplicityCommander-Linux] folder. The Linux version will contain an additional tarball that needs to be expanded into a [commander] folder. The contents of that folder ([Simplicity Commander] on Windows or [commander] on Linux) should be used to replace the internal Simplicity Studio™ commander located at the above paths. Then copy in the two files that were backed up (apack.info and commander40x40.png) replacing the apack.info file.
MacOS Instructions (verified on MacOS Catalina version 10.15.4)
After the SimplicityCommander-Mac.zip is expanded it will be placed in a folder with a release note text file, a README.txt and the Commander .dmg file. When the .dmg file is opened it mounts the Commander application as a volume. The Commander.app can then be executed from that volume or dragged into the Applications folder or in this case used to replace the internal Simplicity Studio™ commander. Drag Commander.app into the folder containing the existing Commander.app:
A popup will be displayed saying an item named "Commander.app" already exists with various options:
Choose the Replace option. Note: If Commander.app is dragged from the Applications folder it will move it out of Applications and not create a copy.
That's it! To verify the new version is being used, start Simplicity Studio™ and launch Simplicity Commander (from the Launcher perspective Tools icon (green wrench)) and select [Help] > [About Simplicity Commander] and the version will match the name of the .zip (Windows), .tgz (Linux) or .dmg (MacOS) file. Commander is also used behind the scenes for several operations including flashing images and various security commands.
Note there has been at least one report on a Mac that it had to be rebooted for this to work correctly. That shouldn't normally be necessary, but it might if Simplicity Commander or Simplicity Studio did not shutdown cleanly for some reason so it is worth trying.
With the SV126.96.36.199 Simplicity Studio release there was an update to the silink adapter pack. The adapter pack is used with the Network Analyzer, Energy Profiler and "Launch Console" functionality. The silink update included an update to the Segger JLink ARM library and unfortunately one of the symbolic links to that library was not updated.
This will result in errors if trying to run one of those tools. The error can also be seen from [Settings] > [Simplicity Studio] > [Adapter Packs] and then expanding the 'Silink adapter pack' entry:
By opening a terminal window it is easy to delete the bad symlink and then to add the correct symlink. After opening the terminal window issue a 'cd' command to change to the adapter pack directory ~/SimplicityStudio_v4/developer/adapter_packs/silink on Linux. Then delete the bad symlink and add the correct one:
ln -s libjlinkarm.so.6.22.4 libjlinkarm.so.6
Then do ls -l to verify the link has been fixed:
lrwxrwxrwx 1 USERNAME USERNAME 16 Dec 16 23:20 libjlinkarm.so -> libjlinkarm.so.6
lrwxrwxrwx 1 USERNAME USERNAME 21 Dec 16 23:20 libjlinkarm.so.6 -> libjlinkarm.so.6.18.3
-rwxr-xr-x 1 USERNAME USERNAME 18605120 Dec 4 04:02 libjlinkarm.so.6.22.4
Then restart Simplicity Studio and go back to the adapter pack folder and verify the issue has been resolved.
With the December release of Simplicity Studio SV188.8.131.52 and Gecko SDK Suite v2.7.0, the Silicon Labs proprietary implementation of the Thread (SL-Thread) protocol was removed from the Gecko SDK Suite. The reason for this decision as described in more detail in this Knowledge Base Article (KBA): https://www.silabs.com/community/wireless/zigbee-and-thread/knowledge-base.entry.html/2019/08/01/deprecation_of_slthreadinfavorofopenthread-zNsJ is that Silicon Labs will focus on Supporting the OpenThread implementation of the Thread protocol.
For customers installing Simplicity Studio that need access to the SL-Thread SDK to support existing products, follow this procedure during installation. If Simplicity Studio has already been installed and access to the Wireless Mesh protocols (EmberZNet (Zigbee) and Thread) has been granted, then the SL-Thread SDK can be installed by using the Installation Wizard Package Manager ([Help] > [Update Software] > [Package Manager] and then select the SDKs tab and set the top [Category] filter to [Thread]) (See Step 9).
1. Download the latest Simplicity Studio installer for the chosen operating system.
2. Launch the installer and when the Installation Wizard appears select [Install by Product Group].
3. Select Wireless & RF Families
On the Install Wizard dialog box select the entire [Wireless & RF] product group and then press [Next]. In order to install the SL-Thread SDK, it is necessary to keep all of the wireless protocols selected at this step. SDK filtering can be done at a later step.
4. Sign In if not yet Signed In
The next screen is just an informational screen to show content access for the current user including Thread access. Sign In if necessary or else just press [Next].
5. Filter SDKs to be Installed
At this step SDK filtering can take place to limit the SDKs that will be installed. Note the latest SDKs shown will be part of Gecko SDK Suite version 2.7.0 (and will install Gecko Platform version 2.7.0). The last available Thread SDK (version 2.10.4) is for Gecko SDK Suite 2.6.4. This just means that if any of the latest versions of the other SDKs are left selected, both Gecko SDK Suite 2.7.0 and 2.6.4 will be installed. DO NOT press [Finish] yet.
6. Uncheck [Show Latest Versions] to see SL-Thread SDKs
To gain access to the various SL-Thread SDK versions, scroll down the dialog box and uncheck the [Show Latest Versions] box:
7. Select desired SL-Thread SDK version(s)
Now scroll down through the available packages and select the desired SL-Thread SDK version(s) to be installed. The latest available SL-Thread SDK - 184.108.40.206 is shown selected below. If other SDKs for the same Gecko SDK Suite are desired they can be selected at this step as well. After the selections are made click [Next].
7. Complete the Installation
Accept the license agreement and then click [Finish] to complete the Simplicity Studio installation.
8. Restart Simplicity Studio and Start Thread development
After the installation completes, a prompt will appear to restart Simplicity Studio. After Simplicity Studio restarts, if a product that supports the SL-Thread SDK is attached to the computer and selected in the [Debug Adapters] window or added to the [My Products] window, the Gecko SDK Suite that contains the installed SL-Thread SDK can be set as the [Preferred SDK] and then the available Thread Software Examples will be displayed in the main Launcher window.
9. Use Package Manager to Install SL-Thread SDK to existing Simplicity Studio Installations
As mentioned in the introduction, after Simplicity Studio is installed the [Package Manager] from the [Installation Wizard] can be used to install different SL-Thread SDK version. Setting the [Category] filter to [Thread] and the [Version] filter to [All] will display all of the available SL-Thread SDKs.
During a debug session it is often helpful to be able to see variables represented in hexadecimal format as opposed to the default decimal format. The obvious Eclipse setting to change the Debug number format does not work in the version of Eclipse CDT on which Simplicity Studio is based and this Default number format settings have been removed from the latest version of Eclipse:
However there is an obscure way to change the default format from a debug session, it applies to hover windows and the other debug windows and it will persist across projects, debug sessions and Simplicity Studio restarts. From an active debug session, with the [Variables] tab selected, click the small white down arrow chevron in the upper right corner of the Variables dialog and select [Number Format] and then choose the desired option from the drop down list:
Hopefully this is useful information.
Simplicity Studio has a project importer that can be used to add a source controlled project to a workspace. Unfortunately there are some quirks in the project import process and so this Knowledge Base Article (KBA) will serve to point out those quirks and how to work around them until an update can be released that cleans up the project import operation.
For source controlled projects it is recommended to keep them in a folder that is external to the workspace and that one reason why it is necessary to import the project into the workspace. Also it is important to put the "hidden" files and project folders (ones that start with "." such as the .project and .cproject files and .internal_hwconfig, .pdm, .settings folders) under source control as well as any SDK supplied precompiled library (.a) or object (.o) files. A lot of source control systems will ignore library and object files by default, which is appropriate for the source files compiled with the project, but not the ones that originate with the SDK. To see these files look under the project properties [C/C++ Build] > [Settings] > [* Linker] under either [Libraries] or [Miscellaneous].
For this KBA the projects are stored in the C:\tmp\projects folder.
To add the projects to Simplicity Studio use [File] > [Import...] and then browse to the project folder to import:
Then click through the dialog boxes until the [Project Configuration] dialog is shown, this is were the 'quirks' occur:
The [Use default location] checkbox is marked and the default location is the project folder name in the current workspace. This makes sense except the files will not be copied into the workspace by the import operation and so Simplicity Studio does not find the project information:
Since the project and the .project file in this case is under source control, the files should not be copied into the workspace, so that part of the import defaults to the correct behavior. To correctly import the project the [Use default location] should be unchecked and then [Browse..] or enter the path were the project is stored (C:\tmp\projects\Gecko in this case). If the path is entered directly there is no issue, but if the [Browse...] button is used the project name will be duplicated (Gecko\Gecko in this case) and so the path must be corrected by removing the duplication before hitting [Finish]:
Depending on how the path is entered either an information message about importing from an existing location or a warning that the project location exists and has content will be displayed. Both of these messages are normal and it is okay to cick [Finish] to complete the project import. After the import the project is ready to use.
When working with projects under source control, unless using a source control plugin, it is recommended to close the project before making any changes to the project from the source control software. If a source file is removed from the project, it can still show up in the project due to references to the file in the workspace .metadata files. In this case the file will have a yellow '!' warning icon and it can be corrected by deleting the file from the project properties [Linked Resources] tab:
The delete operation will simply remove the reference from the .metadata files and then the project will build without error.
I hope this KBA helps avoid some headaches when working with source controlled projects.
Simplicity Studio is based on Eclipse which uses a Java Virtual Machine (JVM) as the underlying platform. The JVM Java heap space by default is limited to 1/4 of the physical memory on the computer. With recent SDK releases the memory requirements during the AppBuilder "Generate" function and other memory intensive operations may exceed the default Java heap space maximum (see image below). This is especially true on computers that have 8 GB or less of memory, as the default maximum heap space would be 2 GB (1 GB for a 4 GB computer) on these computers.
The following are guidelines for reducing the amount of memory that Simplicity Studio uses in general as well as how to increase the maximum heap space Simplicity Studio will try to use based on memory availability in the system. Note the allocated memory will be released after the operation that allocated it finishes - so the memory is not permanently allocated to Simplicity Studio.
1. If there is less than 16 GB of RAM installed, then use a text editor to edit the studio.ini file from the Simplicity Studio installation directory and add the line
line. This will allow Simplicity Studio to try and allocate up to 3 GB of RAM for the Java heap space. If you still get an out of memory error (GC overhead limit exceeded) with the above setting then it can be changed to -Xmx4096m. For computers with 16 GB or more of memory, Simplicity Studio will use up to 4 GB of RAM by default (the default is to use up to 1/4 of the available memory), but this can be increased to a higher limit if issues are seen. Note that for 32-bit Windows installations the maximum Java heap size is 2 GB, so this setting will not work for 32-bit installations.
2. On some Windows systems there is a _java_options system environment variable that will limit Java applications to only using a small amount (256 or 512 MB) of Java heap space. Look for this variable under Look under [System] > [Advanced system settings] > [Environment Variables] in the [Systems variables] section for a _java_options variable and if it exists increase the value to 2g or 3g.
3. Only enable 1 or 2 SDKs per workspace (This is done at [Window] > [Preferences] > [Simplicity Studio] > [SDKs] and uncheck (disable) SDKs that are not being used). This change will make a big reduction in how much memory Simplicity Studio uses.
At the end of this KBA there are some tips for using multiple workspaces: https://www.silabs.com/community/software/simplicity-studio/knowledge-base.entry.html/2018/08/22/gecko_sdk_suite_tool-qlc4
4. Only have a few projects open in the Simplicity Studio project explorer. Other projects can be closed by right clicking the project folder and selecting [Close Project] or [Close Unrelated Projects].
5. Minimize the number of open files in the Simplicity IDE, especially .isc or .hwconf files.
6. Enable display of heap status ([Window] > [Preferences] > [General] and select [Show heap status]). Then periodically and especially before creating or generating a project with AppBuilder click the trashcan icon to run the garbage collector to free up memory.
7. Change the JVM Garbage Collector to a more aggressive garbage collector than the default one. Use a text editor to edit studio.ini and add this line
After the line
Note changing the garbage collector could slow down the Generate and other operations.
If the "About Simplicity Studio" dialog box ([Help] > [About Simplicity Studio] or on a Mac [Simplicity Studio] > [About Simplicity Studio]) shows "Invalid Installation" similar to this screenshot:
Then this can be manually repaired by following these steps:
MacOS: /Applications/Simplicity Studio/Contents/Eclipse/offline/autogen
MacOS: /Applications/Simplicity Studio/Contents/Eclipse/configuration/studio/assets/assets_autogen.assets3
The Simplicity Studio release that was made on Friday April 26th (SV220.127.116.11) had issues that prevented some Simplicity Studio installations from updating correctly. The installations that would fail were versions SV18.104.22.168 and SV22.214.171.124. If the last time Simplicity Studio was updated was before March 29th (so version SV126.96.36.199 or earlier) then the update worked correctly.
This issue has been resolved with the Simplicity Studio release that was made Tuesday afternoon, April 30th 2019 (UTC-06:00). The version of this release is SV188.8.131.52 (seen from [Help] > [About]). This release will update all versions of Simplicity Studio and it will fix any failed attempts to update to SV184.108.40.206. It will also properly update any installations that had worked around the update issue by manually applying an update to the Simplicity Studio Product package and then applying the other updates.
If Simplicity Studio is configured to automatically check for updates when it starts (the default setting) then the user will automatically be prompted to install the new update after they start or restart Simplicity Studio. If Simplicity Studio is configured to manually or periodically check for updates, then clicking the [Update Software] link will check for updates and then the available updates can be seen from the [Package Manager] [Product Updates] tab.
Depending on when Simplicity Studio was last updated several more updates could be available. To apply all of the available updates click the [Update] button and then after the update completes restart Simplicity Studio.
If any problems are seen with the update, please respond to this Knowledge Base Article or else create a new Simplicity Studio Community Forum thread or support case to report the issue.
Silicon Labs apologizes for the inconvenience this update issue has caused our customers.
Currently if the offline installer archives are used to install and update Simplicity Studio it is hard to tell when the archive files have been updated indicating that an update is available. Since the files tend to be very large (some are over 8 GB) it is inconvenient to download them just to check if they have been updated. So this article will list the latest version of Simplicity Studio and the various SDKs that have been released. The goal will be to update the article each time there is a new release, so that by following this article customers will be notified when Simplicity Studio and the various SDKs have been updated.
I also want to point out that the Simplicity Studio [Help] > [About] functionality has been enhanced to show a unified version number and the versions of the various components that comprise that version of Simplicity Studio. The information is presented in a matrix format that will show the component versions for the last 10 Simplicity Studio releases. The unified version number will make it easier to communicate the installed version of Simplicity Studio to Silicon Labs.
The current version of Simplicity Studio is 220.127.116.11. It was released on November 26th, 2019 and this is a portion of the [Help] > [About] information that also shows the Simplicity Studio Platform version (which was previously the easiest way to report the Simplicity Studio version):
On the About box there is also a "Toolchains and SDKs" tab that shows the versions of the installed toolchains and SDKs. This screenshot shows the information on the latest available SDKs as of November 26th, 2019:
I hope this information proves useful especially to customers using the offline archives files to install and update Simplicity Studio. This article should provide a temporary benefit until an update indication can be added to the offline installer page.