In version 220.127.116.11 of Simplicity Studio 5, there is an issue with a component that may prevent Simplicity Studio from updating correctly depending on installed packages. The consequence of this issue is that when Simplicity Studio 18.104.22.168 is updated, the update dialog will never complete. When the dialog box is manually closed, Simplicity Studio 5 will enter an infinite loop of displaying an error dialog and Simplicity Studio 5 cannot be closed normally.
Simplicity Studio 5 must be forcibly quit.
Then restart Simplicity Studio, there will be one more update for the tool launcher package, this time it will succeed because the tool_installer was updated in the original update. After this update further updates can be applied and the Gecko SDK Suite updates can be installed.
Avoiding the Issue
If you read this thread before updating your 22.214.171.124 version of Simplicity Studio, there is a work around that can be applied that will avoid the issue. If you have already applied updates, do not attempt the following. Cancel out of the option to install updates and then select:
1. [Help] > [About Simplicity Studio]
3. [Installation Details]
4. Enter "Installer Tool" in the search box.
5. Select just the "Installer Tool" in the window
6. Click [Update...].
After installing that update, restart Simplicity Studio 5 and then the normal update process can be used to install all of the other updates.
Silicon Labs apologizes for the inconvenience of this issue. Let us know if there are any issues with the instructions in this Knowledge Base Article (KBA).
If Simplicity Studio 5 happens to hang during an operation, the best way to report this to Silicon Labs is to use a Java tool called jstack to capture a thread dump while the program is still in the hung state. This thread dump can be used by the Silicon Labs team to analyze the hang. To emphasize the point, if Simplicity Studio 5 had been shutdown and restarted, a thread dump at that point will not be useful. The jstack tool is included in the Simplicity Studio 5 installed Java Runtime Environment (JRE).
The procedure to use the tool for Windows, MacOS and Linux is described in the following sections.
[SIMPLICITY_STUDIO_INSTALLATION]\features\com.silabs.external.java.windows.x86_64.feature_11.0.5\jre\bin\jstack.exe PID > [PATH]\SSv5ThreadDump.txt
For example with the default installation path:
C:\SiliconLabs\SimplicityStudio\v5\features\com.silabs.external.java.windows.x86_64.feature_11.0.5\jre\bin\jstack.exe -l -e 41068 > C:\temp\SSv5ThreadDump.txt
ps aux | grep studio
This is an example of the output with the pid highlighted in red:
USERNAME@mac0010128 ~ % ps aux | grep studio
USERNAME 76698 5.6 9.7 12491892 1633396 ?? S Tue09AM 92:52.70 /Applications/SimplicityStudio5.app/Contents/MacOS/studio
USERNAME 19420 0.0 0.0 4268300 680 s000 R+ 3:26PM 0:00.00 grep studio
[SIMPLICITY_STUDIO_INSTALLATION]/Contents/Eclipse/jre/Contents/Home/bin/jstack -l -e PID > [PATH]/SSv5ThreadDump.txt
/Applications/SimplicityStudio5.app/Contents/Eclipse/jre/Contents/Home/bin/jstack -l -e 76698 > ~/Documents/SSv5ThreadDump.txt
ps aux | grep studio
This is an example of the output with the pid highlighted in red:
ThinkPad-W530:~$ ps aux | grep studio
USERNAME 10233 10.1 27.3 110505488 2115904 ? Sl 12:55 10:58 /home/USERNAME/SimplicityStudio_v5//jre/bin/java -Dosgi.requiredJavaVersion=11.0.5 -Xms40m -Declipse.p2.unsignedPolicy=allow -Djava.net.preferIPv4Stack=true -Djxbrowser.ipc.external=true -jar /home/USERNAME/SimplicityStudio_v5//plugins/org.eclipse.equinox.launcher_1.5.600.v20191014-2022.jar -os linux -ws gtk -arch x86_64 -showsplash -launcher /home/USERNAME/SimplicityStudio_v5/studio -name Studio --launcher.library /home/USERNAME/SimplicityStudio_v5//plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.1100.v20190907-0426/eclipse_1801.so -startup /home/USERNAME/SimplicityStudio_v5//plugins/org.eclipse.equinox.launcher_1.5.600.v20191014-2022.jar --launcher.overrideVmargs -exitdata a78007 -vm /home/USERNAME/SimplicityStudio_v5//jre/bin/java -vmargs -Dosgi.requiredJavaVersion=11.0.5 -Xms40m -Declipse.p2.unsignedPolicy=allow -Djava.net.preferIPv4Stack=true -Djxbrowser.ipc.external=true -jar /home/USERNAME/SimplicityStudio_v5//plugins/org.eclipse.equinox.launcher_1.5.600.v20191014-2022.jar
[SIMPLICITY_STUDIO_INSTALLATION]/jre/bin/jstack -l -e PID > [PATH]/SSv5ThreadDump.txt
~/SimplicityStudio_v5/jre/bin/jstack -l -e 10233 > ~/Documents/SSv5ThreadDump.txt
Then attach the thread dump file to a Silicon Labs support case along with other details of what operation was being done right before the hang as well as any screenshots taken of what was being shown in the application. A support case can be created from the Silicon Labs Simplicity Studio Community home page or with this url: https://siliconlabs.force.com/s/contactsupport
Hopefully you will never have to use the jstack tool, but if you do, the thread dump can be invaluable in resolving the issue as quickly as possible.
Simplicity Studio 5 has now been release and it is based on a much more recent version of Eclipse and CDT. It uses Eclipse 4.14 which was released in December 2019. One of the benefits of the newer version of Eclipse is better indexer performance. However semantic errors are still sometimes seen with Simplicity Studio 5 (but not always reproducible) with certain types of operations, such as when using typedef in header files.
If this occurs then try changing the default Indexer settings by disabling these settings:
[Index source files not included in the build]
[Index unused headers]
[Allow heuristic resolution of includes]
and then hit [Apply and Close].
Also it is still true that better indexer performance will be seen if fewer projects are open in the Simplicity IDE Project Explorer window because sometimes when the indexer updates it re-indexes all open projects.
Let us know if you still see indexer errors with the suggested settings. Silicon Labs is evaluating changing the default indexer settings in a future release.
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.