What's new in Azure Sphere
Azure Sphere is updated on an ongoing basis. Feature releases support new functionality and include both the Azure Sphere OS and the SDK. Quality releases include bug fixes and performance enhancements, and typically include only the Azure Sphere OS. For all releases, the updated OS is automatically downloaded from the cloud to Azure Sphere devices that are connected to the internet. Release numbers are typically in year.month format, so 19.11 identifies the release in November, 2019.
If your devices are connected to the internet, they should receive the OS update from the cloud. However, if you have an early Seeed MT3620 Development Kit that has not been used, you might need to update manually, as described in Update the OS on an early dev kit.
To verify the installed OS version on an attached device, use the following command:
azsphere device show-os-version
To check which version of the SDK is installed on your local computer, use the following command:
azsphere show-version
Devices that receive the Retail Evaluation release of the OS will be updated to the final Retail OS within 24 hours after it is released. The Retail Evaluation release is available for backward compatibility testing 14 days before the Retail OS release. If you are not familiar with the Retail Evaluation program, see Set up devices for OS evaluation to find out how to participate.
If critical bugs are discovered during the Retail Evaluation period, we may release an updated OS on the Retail Evaluation feed and, in turn, may restart or extend the evaluation period. As possible, we will post notifications on Azure Updates and the Azure Sphere IoT Tech Community blog. The version number of the final retail OS release will reflect any such updates.
Azure Sphere encourages security researchers to search for any vulnerabilities and report them responsibly based on Microsoft's Coordinated Vulnerability Disclosure principle to the MSRC Portal. Reports of vulnerabilities may include rewards through the Microsoft Azure Bounty Program. See Azure Sphere CVEs for general information about Azure Sphere CVEs. You can find information about CVEs already published in the MSRC Security Update Guide and in the release-specific details in this article.
About the 21.11 quality release
Azure Sphere did not release an updated OS or SDK for 21.11.
Updates for 21.11 include the following documentation changes and other minor edits:
| Article | Changes |
|---|---|
| Device capabilities and servicing sessions | Clarifications and corrections on when capabilities are needed and what actions they permit. |
| Set up Azure IoT Edge for Azure Sphere | Updated to include instructions for working with both IoT Edge 1.2 and IoT Edge 1.1. |
| Azure Sphere CVEs | Added information about the contents and timing of published Azure Sphere common vulnerabilities and exposures (CVEs). |
| Factory-floor tasks | Added information on manufacturing states and device capabilities. |
| device | Clarifications and corrections about device capabilities. |
| Overview of Azure Sphere CLI | Clarifications and corrections about device capabilities. |
What's new in the 21.10 feature release
The Azure Sphere 21.10 feature release includes the following components:
- Updated Azure Sphere OS
- Updated Azure Sphere SDK for Windows and for Linux
- Updated Azure Sphere extensions for Visual Studio and for Visual Studio Code
If your devices are connected to the internet, they will receive the updated OS from the cloud. To install the latest SDK and extensions for Visual Studio and Visual Studio Code, see the installation Quickstart for Windows or Linux:
- Quickstart: Install the Azure Sphere SDK for Windows
- Quickstart: Install the Azure Sphere SDK for Linux
Important
The Azure Sphere Classic CLI will not be included in SDK releases starting in April 2022. The Classic CLI was marked as deprecated in February 2021. If you still have a dependency on the Classic CLI, you must migrate your processes and scripts before April 2022 to avoid disruption.
New and changed features in the 21.10 release
The 21.10 release includes:
- support for connecting to a network through a proxy server.
- security fixes and performance enhancements in wolfSSL version 4.8.1.
- improvements in connecting to Azure IoT Hub with the Device Provisioning Service (DPS).
- the ability to rename a tenant.
- support for specifying the output format from Wi-Fi commands in the CLI.
- guidance for using the MT3620 in scenarios where Wi-Fi is not required.
Web Proxy Support
Azure Sphere devices can now connect to a network through a proxy server. You can configure a proxy with applibs commands or with the CLI. For more information, see Connect Azure Sphere through a proxy server.
For more information on the available CLI commands, see network proxy.
wolfSSL updated to Version 4.8.1
The Azure Sphere OS now includes wolfSSL 4.8.1. This update brings the latest security fixes and performance enhancements from wolfSSL. In addition, a new ABI is exposed through the OS to prevent man-in-the-middle attacks in some TLS configurations. When using wolfSSL in your application (as shown in the wolfSSL sample), we recommend using wolfSSL_CTX_set_verify to validate the host whenever applicable.
See more information about using wolfSSL_CTX_set_verify on the wolfSSL website.
Verify tenant CA certificate automatically on Azure IoT Hub
We have updated the guidance on how to configure Azure IoT Hub and DPS with Azure Sphere tenant certificates to include a simplified process that does not require a proof-of-possession verification step. For more information, see Set up an Azure IoT Hub for Azure Sphere and Set up an Azure IoT Hub for Azure Sphere with the Device Provisioning Service.
Support for tenant rename
The azsphere tenant update Azure Sphere CLI command enables you to rename an existing tenant. For more information, see the tenant command reference topic.
Specify output format for Wi-Fi commands
The azsphere device wifi commands now support the --output (--out or -o) parameter to specify the format of the CLI output. For more information, see Supported output formats.
Using the MT3620 in scenarios where Wi-Fi is not required
We have provided updated software and hardware guidance for scenarios where Wi-Fi is either temporarily or permanently not required, showing how to lower power consumption and simplify hardware designs in such scenarios. See Wi-Fi connections and MT3620 hardware notes for details.
New and updated samples and Gallery projects for 21.10
The following Azure Sphere samples have been updated for 21.10:
- An additional readme was added to the AzureIoT sample to show how to add web proxy support.
- The HTTPS/cURL samples have been updated to show how to add proxy support.
The following projects in the Azure Sphere Gallery have been added or updated for 21.10:
- Azure IoT Store and Forward shows how to add telemetry store and forward capability to the AzureIoT sample.
- CO2_MonitorHealthySpaces shows how to integrate a CO2 monitor with IoT Central.
- EAP-TLS_Solution shows how to connect Azure Sphere devices to EAP-TLS networks.
- SimpleFileSystem_RemoteDisk shows how to add file system support to an Azure Sphere project.
New and revised documentation in the 21.10 release
| Article | Changes |
|---|---|
| Connect Azure Sphere through a proxy server | New topic that describes how to configure an Azure Sphere device to connect to the Internet through a proxy server. |
| Set up an Azure IoT Hub for Azure Sphere | Updated topic to include information about automatic and manual verification of a tenant CA certificate on Azure IoT Hub. |
| Set up an Azure IoT Hub for Azure Sphere with the Device Provisioning Service | Updated topic to include information about automatic and manual verification of a tenant CA certificate on Device Provisioning Service. |
| Update an existing tenant | Added information on renaming an existing tenant. |
| MT3620 hardware notes | Updated to include information about disabling Wi-Fi in certain scenarios. |
| device | - Added information for azsphere device network proxy command. - Updated examples for the azsphere device wifi commands. |
| tenant update | Added information for the azure sphere tenant update command. |
| Applibs networking reference | Added proxy client support APIs. |
Known issue in the 21.10 release
Any application built using the 21.10 SDK that uses heap memory allocation tracking will fail to build with the following error:
azsphere_target_add_image_package received an unexpected request to set DEBUG_LIB: libmalloc which is not available in the selected Target API Set. Please select version 10 or later in the CMakeLists.txt.
To fix the error you need to make a small change to one of the SDK CMake files. You need to be an Administrator to change this file.
- On Windows: C:\Program Files (x86)\Microsoft Azure Sphere SDK\CMakeFiles\AzureSphereToolchainBase.cmake
- On Linux: /opt/azurespheresdk/CMakeFiles/AzureSphereToolchainBase.cmake
Modify line 13 of AzureSphereToolchainBase.cmake to the following:
set(libmalloc_10_or_later "10" "11" )
This issue will be fixed in the next release of the Azure Sphere SDK.
Fixed bugs and common vulnerabilities in the 21.10 release
The 21.10 release includes updates to mitigate against the following CVEs:
- cURL CVE-2021-22922
- cURL CVE-2021-22923
- cURL CVE-2021-22925
- cURL CVE-2021-22926
- cURL CVE-2021-22946
- cURL CVE-2021-22947
- CVE-2021-41374
- CVE-2021-41375
- CVE-2021-42300
- CVE-2021-41376
About the 21.09 quality release
The 21.09 release includes updates to the Azure Sphere OS; it does not include an updated SDK. If your devices are connected to the internet, they will receive the updated OS from the cloud.
Updates to the Azure Sphere OS include:
- Upgraded Linux Kernel to 5.10.60.
- Improvements to crash handling to prevent hangs.
New and updated Gallery projects for 21.09
- RS-485 real-time driver demonstrates how to use an M4F core on MT3620 to implement reliable RS-485 communication with inter-core communication to the high-level app on the A7 core.
New and revised documentation in the 21.09 release
| Article | Changes |
|---|---|
| Troubleshoot cloud and deployment issues | Added troubleshooting information related to claiming a device. |
About the 21.08 quality release
The 21.08 release includes the following enhancements and bug fixes in the Azure Sphere OS; it does not include an updated SDK.
- Security updates
- Improved stability for ethernet support
- Improved stability for I2C devices
If your devices are connected to the internet, they will receive the updated OS from the cloud.
There are also new Azure Sphere Gallery samples and documentation updates.
Fixed bugs and common vulnerabilities in the 21.08 release
The 21.08 release includes updates to mitigate against the following Common Vulnerabilities and Exposures (CVEs):
- CVE-2021-22924
- CVE-2021-36956
New Gallery samples
The following new or updated samples were added to the Azure Sphere Gallery, a collection of unmaintained scripts, utilities, and functions:
- Littlefs SD Card shows how to add file system and SD card support to an Azure Sphere implementation.
- AzureIoTMessageWithProperties shows how to add custom properties to a telemetry message sent to Azure IoT Hub.
New and revised documentation in the 21.08 release
| Article | Changes |
|---|---|
| azsphere device | Reference topic updated for deprecation of --cert-id and --interface-name. |
| Important changes (deprecations) in Azure Sphere CLI | New topic that describes features, commands, or parameters that have been deprecated or removed from the Azure Sphere CLI. |
What's new in the 21.07 feature release
The Azure Sphere 21.07 feature release includes the following components:
Updated Azure Sphere OS
Updated Azure Sphere SDK for Windows and for Linux
Updated Azure Sphere extensions for Visual Studio and for Visual Studio Code
There are also updated samples, tutorials, gallery items, and documentation updates.
If your devices are connected to the internet, they will receive the updated OS from the cloud. You'll be prompted to install the updated SDK on next use, or you can install it now. To install the latest SDK, see the installation Quickstart for Windows or Linux:
Important
30 September 2021
Update 2 for the 21.07 SDK for Windows is now available. This update fixes an installer bug which prevents uninstallation of the Azure Sphere SDK after upgrading to Windows 11. While Windows 11 is not yet a supported platform for the Azure Sphere SDK, we recommend installing the latest Azure Sphere SDK for Windows if you are testing on Windows 11.
28 July 2021
Update 1 for the 21.07 SDK is now available. If you had installed the previous release of the 21.07 SDK, you can re-install to get the updated version. The 21.07 SDK release incorrectly removed some deprecated parameters from the Azure Sphere CLI. The 21.07 Update 1 SDK reinstates these deprecated parameters to the CLI for backward compatibility purposes. For more information, see Important changes (deprecations) in Azure Sphere CLI.
New and changed features in the 21.07 release
The 21.07 release includes an improvement to how time sync is handled, the ability to track shared library heap memory usage during development, and new ways to authenticate using Azure Active Directory. This release also includes some debugging improvements in the Visual Studio and Visual Studio Code extensions, expanded support of the --output parameter in the CLI, and the ability to get additional device information from some commands in the CLI and Public API (PAPI).
Time sync changes
The time sync process has changed in the 21.07 release to provide a more robust process when the primary time server fails or cannot be reached. Previously, services that depend on completion of time sync could fail to start if time-sync retries prevented time sync from completing. The change adds a fallback mechanism for obtaining accurate time so that time-sync retries do not continue indefinitely.
Heap memory allocation tracking
The heap memory allocation tracking feature provides developers with a convenient way to see memory allocations from libraries included with the Azure Sphere SDK during development of an application. The feature adds a new application capability, HeapMemStats, and a new Azure Sphere SDK library, libmalloc. The feature also includes changes to the output of the Azure Sphere CLI command azsphere device app show-memory-stats and the Visual Studio extension. With these changes, developers can add the HeapMemStats capability to their high-level application, deploy the app to a development-enabled device, and use Visual Studio's Performance Profiler to view the memory used by the SDK libraries called by their app.
Authentication methods using Azure Active Directory
The Azure Sphere Public API (PAPI) supports multiple methods of user authentication and authorization in Azure Active Directory (AAD).
With Azure Active Directory, an application token can be used to authenticate and grant access to specific Azure resources from a user app, service, or automation tool by using the service principal or managed identity method for authentication.
The following authentication methods are now supported using Azure Active Directory:
- Access Azure Sphere Public API with AAD managed identity
- Access Azure Sphere Public API with AAD application service principal
- Access Azure Sphere Public API with your AAD user identity
Additional update status details from CLI and PAPI commands
The Azure Sphere Public API has been extended to include additional device details about the operating system and update status. You can now see the version of the system OS installed on the device, the latest available OS version, when the device was last updated, and when the device last checked for updates. The additional information can be helpful to manage updates to your devices.
The following Azure Sphere API reference pages explain the API response changes in more detail:
| Command | Description |
|---|---|
| Devices - Get | Gets details for a device. |
| Devices - List | Gets all devices that are claimed to the specified tenant. |
| Devices - List In Group | Gets all devices that are assigned to the specified device group. |
| Devices - List In Product | Gets all devices that belong to the specified product. |
In addition, the Azure Sphere CLI has been updated to include these additional device details in the azsphere device list, azsphere device show, and azsphere device update commands using the --query parameter or the supported output formats. For example, azsphere device show --output json.
New and changed features in Visual Studio or Visual Studio Code extensions for Azure Sphere
The Visual Studio and Visual Studio Code extensions include more descriptive names for debug targets. The Visual Studio extension also includes support for heap memory allocation tracking.
More descriptive names for debug targets
The Visual Studio extension now uses the project name for the debug target name. The Visual Studio Code extension shows the project name as before, but simplifies the descriptive text.
Support for other output formats
Additional Azure Sphere CLI commands now support the --output (--out or -o) parameter to specify the format of the CLI output. For more information, see Supported commands.
New and updated commands and parameters
Updates to commands:
| Command | Description |
|---|---|
| azsphere device network enable | Enables a network interface on the attached device. |
| azsphere device network disable | Disables a network interface on the attached device. |
Updates to parameters:
| Parameter | Description |
|---|---|
| azsphere device network show-diagnostics | The --id parameter is changed to --network. |
| azsphere device network update-interface | The --interface-name parameter is changed to --interface. |
| azsphere device certificate delete | The --cert-id parameter is changed to --certificate. |
| azsphere device certificate show | The --cert-id parameter is changed to --certificate. |
| azsphere tenant create | The --force parameter is changed to --force-additional. |
| azsphere tenant create | The --disable-confirm-prompt parameter is new; it disables the user confirmation prompt. |
Note
The 21.07 SDK release incorrectly removed the deprecated parameters mentioned here from the Azure Sphere CLI entirely. The 21.07 Update 1 SDK reinstates these deprecated parameters to the CLI for backward compatibility purposes. For more information, see Important changes (deprecations) in Azure Sphere CLI.
New and revised documentation in the 21.07 release
| Article | Changes |
|---|---|
| Memory use in high-level applications | Updated topic to include discussion of heap memory allocation tracking. |
| Using Visual Studio Code with Secure Shell (SSH) on a remote host | New topic describing how to build and debug Azure Sphere applications on a remote host via Secure Shell. |
| Authentication methods using Azure Active Directory | New topic that provides an overview of the supported authentication methods. |
| Access Azure Sphere Public API with AAD managed identity | New topic that provides an overview and steps to access Azure Sphere Public API with AAD managed identity. |
| Access Azure Sphere Public API with AAD application service principal | New topic that provides an overview and steps to access Azure Sphere Public API with AAD service principal. |
| Access Azure Sphere Public API with your AAD user identity | New topic that provides an overview and steps to access Azure Sphere Public API with AAD user identity. |
| Supported commands | Updated the list of commands that support output formats. |
| device | Updates to the commands and parameter descriptions and examples. |
| tenant | Updates to the parameter descriptions and examples. |
| role | Updated topic as the value for the --role parameter is not case-sensitive. |
New and updated samples and Gallery items
The 21.07 release includes an updated memory usage tutorial, updates to the Azure IoT sample, and three new or updated projects in the Azure Sphere Gallery.
Updated memory usage tutorial
The MemoryUsage tutorial has been updated to demonstrate heap memory allocation tracking.
Updated Azure IoT sample
We made some minor refinements to the Azure IoT sample, including changing the polling rate of IoTHubDeviceClient_LL_DoWork to every 100ms rather than every 1s, following this IoT Hub client best practice. We recommend that you adopt this change in your existing apps.
New or updated Gallery samples
The following new or updated samples were added to the Azure Sphere Gallery, a collection of unmaintained scripts, utilities, and functions:
VS1053AudioStreaming shows how to play audio through a VS1053 codec board.
WebHookPublicAPIServicePrincipal shows how to use Service Principal based authentication for the Azure Sphere Security Service Public API.
AzureSphereTenantDeviceTwinSync was updated to utilize new Azure Sphere Public API support for querying the OS version for devices.
Known issues in the 21.07 release
The new update status fields are not displayed in the default CLI output format
The azsphere device list, azsphere device show, and azsphere device update CLI commands will expose the four new update-related fields only when using JSON or another supported output format; the new fields will not show when using the default table format. You can use the --query argument to specify those additional fields for output to a table, but the Device ID might be truncated if the table is too wide. We recommend that you reduce the number of columns in the table so that the Device ID does not get truncated. For example, azsphere device show --query '{DeviceId:deviceId, LastAvailableOSVersion:lastAvailableOSVersion, LastInstalledOSVersion:lastInstalledOSVersion, LastOSUpdateUTC:lastOSUpdateUTC, LastUpdateRequestUTC:lastUpdateRequestUTC}'.
Fixed bugs and common vulnerabilities in the 21.07 release
The 21.07 release includes updates to mitigate against the following Common Vulnerabilities and Exposures (CVEs):
CVE-2021-26428
CVE-2021-26429
CVE-2021-26430
About the 21.06 quality release
The 21.06 release includes bug fixes in the Azure Sphere OS; it does not include an updated SDK. If your devices are connected to the internet, they will receive the updated OS from the cloud.
New and revised documentation in the 21.06 release
| Article | Changes |
|---|---|
| Manage tenants | Streamlined content about creating, managing, or finding Azure Sphere tenants |
| Troubleshoot cloud and deployment problems | New notes in the Troubleshoot OS updates section and the Troubleshoot deployment updates section |
| Log in with Azure Sphere CLI | New topic that describes the default login with the CLI, and how to log in using a browser. |
New Gallery samples in the 21.06 release
Three new samples were added to the Azure Sphere Gallery, a collection of unmaintained scripts, utilities, and functions:
WiFiConfigurationviaNfc illustrates how to configure WiFi credentials from a phone via Near-Field Communication (NFC).
TranslatorCognitiveServices shows how to use Azure Sphere to communicate with an Azure Cognitive Service, in this case to translate text.
Grove_16x2_RGB_LCD provides driver code for an LCD RGB display.
About the 21.05 release
Azure Sphere did not release an updated OS or SDK for 21.05. Documentation updates include minor bug fixes and other updates, and two new samples were added to the Azure Sphere Gallery.
New and revised documentation in the 21.05 release
| Article | Changes |
|---|---|
| Networking connectivity overview | Added a sentence about the communications interface being non-deterministic for multihomed devices |
| Memory use in high-level applications | Added a note about avoiding unnecessary flash updates |
| Using storage on Azure Sphere | Added a note about avoiding unnecessary flash updates |
| Code for renewable security | New topic on best practices for writing code for renewable security |
| Hardware design verification | Revised the steps to improve clarity |
| Applibs application.h | Removed links to obsolete libraries |
| Applibs networking.h | Removed links to obsolete libraries |
New Gallery samples for 21.05
Two new samples were added to the Azure Sphere Gallery, a collection of unmaintained scripts, utilities, and functions:
MQTT project demonstrates how to add Message Queuing Telemetry Transport (MQTT) support to an Azure Sphere project.
Azure Sphere Tenant Device Twin Sync shows how to use Azure IoT telemetry events to trigger queries to the Azure Sphere Security Service for properties about that device, and how to update the device's Device Twin.
About the 21.04 feature release
The Azure Sphere 21.04 feature release includes the following components:
Updated Azure Sphere OS
Updated Azure Sphere SDK for Windows and for Linux
Updated Azure Sphere extensions for Visual Studio and for Visual Studio Code
There's also a new version of the reference development board (RDB) design, new or updated samples, and a new Application note on Wi-Fi configuration options.
If your devices are connected to the internet, they will receive the updated OS from the cloud. You'll be prompted to install the updated SDK on next use, or you can install it now. To install the latest SDK, see the installation Quickstart for Windows or Linux:
New and changed features in the 21.04 release
Peripheral configuration locking
Azure Sphere chips now have the ability to lock a peripheral configuration. This prevents an attacker from reassigning peripherals even if code is compromised. Thus, peripheral configuration locking adds another layer of security.
Time sync changes in 21.04
The 21.04 release changes the client ports used by the Azure Sphere device. Previously, the device always used client source port 124. After this release it will use a random UDP client source port between 32678-61000. If this port fails, Azure Sphere then attempts to use port 124 as the UDP client source port.
Ethernet enabled by default
The 21.04 release changes the way the ethernet interface is enabled. Previously, a developer needed to call the Networking_SetInterfaceState command to enable ethernet. After this release, ethernet will automatically be enabled on first reboot after an ethernet board configuration is loaded.
Wi-Fi improvements
The Wi-Fi client performs background scanning at regular intervals. In some cases the client could disconnect when the wi-fi background scan was ongoing at the same time that a device registered a "beacon lost" signal. We have introduced an offset in the two signals so the system will now listen for beacon signals beyond the scan time.
Delete a product or device group with the CLI
CLI support for deleting a product is now available using the azsphere product delete command.
CLI support for deleting a device group is now available using the azsphere device-group delete command.
View statistics on total memory usage
The azsphere device app show-memory-stats command returns memory usage statistics on total memory usage, user mode usage, and peak user-mode usage for applications running on an attached device. The device must have the appDevelopment device capability configured to run this command.
Support for crash data collection
Optional diagnostic data can now be configured using the CLI to collect a full Linux core dump when an application or system service crashes. You can give consent to enable crash dump collection by using the --allow-crash-dumps-collection parameter in the azsphere device-group update command.
Write capabilities added to Azure Sphere Explorer for Visual Studio or Visual Studio Code
Azure Sphere Explorer for Visual Studio now has the ability to create and update products and device groups. Other changes were made to both the Visual Studio and Visual Studio Code versions of Azure Sphere Explorer to make them functionally equivalent.
Multiple device support in Azure Sphere Explorer for Visual Studio or Visual Studio Code
Azure Sphere Explorer now supports multiple connected devices. One device can be chosen as the active device for a given project. Deployment and debugging of the project is then done on the active device.
New and updated samples, code snippets, and Gallery items
The 21.04 release includes a refactored Azure IoT sample, a new code snippet, and several new items in the Azure Sphere Gallery.
Refactored Azure Sphere sample app for connecting to Azure IoT
Updates to the Azure IoT sample include:
Dedicated guidance (READMEs) for each starter scenario (connect to Azure IoT Hub or Azure IoT Central) and for each add-on scenario (connecting via the Device Provisioning Service or via Azure IoT Edge).
Refactored codebase with smaller, easier-to-assemble pieces.
Support for Azure IoT Plug and Play (PnP) - so that the device's data model "template" is auto-populated when using Azure IoT Central or a PnP-aware client connected to Azure IoT Hub.
Updated best practice for using the Azure IoT C SDK, in particular to enable connections via the DPS to be established asynchronously.
New code snippet on memory usage
A new code snippet on memory usage demonstrates how to detect and handle unexpected memory usage.
GitHub gallery samples
More than 10 new projects added to the Azure Sphere Gallery GitHub repository, including: -* tools to evaluate networks' compatibility with Azure Sphere OS.
- tools to use the littlefs file system.
a complete design of a realtime demo device (balancing robot), including software, hardware, and mechanical designs.
Hardware reference design changes
Changes to the hardware design of the MT3620 reference development board (RDB) have been made for version 1.7. These changes have been identified through extensive use of the board (both internally and via customer feedback) and as a result of software changes that have enabled features such as Power Down that were not supported at the time the board was originally designed.
The MCU programming and debugging interface has been modified to include a second schematic showing a circuit that enables the PC and reset button to bring a device out of Power Down mode. This is a backwards-compatible change with no changes required to the SDK.
New and revised documentation in the 21.04 release
| Article | Changes |
|---|---|
| Connect Azure Sphere to Ethernet | Updated topic to remove obsolete information on removing board configuration images via deployment. |
| Set up an Azure IoT Hub for Azure Sphere | Updated to reflect the new workflow depicted in the refactored Azure IoT sample |
| Set up Azure IoT Hub with DPS | New topic that describes the authentication process for the Device Provisioning Service and setup to use an Azure IoT Hub with Azure Sphere devices. |
| Set up Azure IoT Edge for Azure Sphere | Updated to reflect the new workflow depicted in the refactored Azure IoT sample |
| View device and tenant information in the Azure Sphere Explorer | Updated to include support for multiple devices and write capabilities in Visual Studio. |
| Peripheral configuration locking | New topic to describe the peripheral configuration locking capability on Azure Sphere chips. |
| Levels of restarting on a device | Updated topic to include circumstance related to peripheral configuration that causes a device to reboot. |
| Create and manage device groups | Updated to include new Visual Studio capabilities. |
| Manage products | Updated to include new Visual Studio capabilities. |
| About over-the-air updates | New topic describes the overall update process. |
| Configure crash dumps | Updated topic to explain how to configure crash dump related setting using the CLI. |
| Troubleshooting cloud and deployment problems | Updated topic to include specific problems with OS and deployment updates. |
| Cloud configuration tasks | Updated with information on the need to include original images, including board config images, within tenants. |
| MT3620 hardware notes | Updated topic to clarify the RTC power configuration, pinout settings, and interactions with the MT3620 during Power Down state. |
| MCU programming and debugging interface | Updated topic to include a second circuit schematic and descriptions of the circuit's components. |
| MT3620 reference board design | Updated topic to include information about Reference Development Board (RDB) version 1.7. |
| MT3620 RDB user guide | Updated topic to describe only the features and components of Reference Development Board (RDB) version 1.7. |
| MT3620 RDB v1.6 user guide | New topic to to describe the features and components of Reference Development Board (RDB) versions 1.6 and earlier. |
| Wi-Fi configuration | New application note that includes detailed options for configuring wi-fi in different situations. |
| CLI reference guide | Updated examples to include a column displaying the crash dump setting for the device group. |
| device | Updated topic for the azsphere device app show-memory-stats command. |
| product | Updated topic for the azsphere product delete command. |
| device-group | - Updated topic for the azsphere device-group delete command. - Updated topic for the azsphere device-group update command. |
| Troubleshoot Azure Sphere CLI | New topic for problems that may occur when running commands in the Azure Sphere CLI. |
Known issues in the 21.04 release
Azure Sphere device IDs are case insensitive. In the 21.04 release, the CLI may return the device ID in either lowercase or uppercase. For instance, the local device commands return the device ID in lowercase and the cloud commands return the device ID in uppercase, but you should not rely on a specific case being returned. Note that this may affect any CLI scripts that assume that the device ID is case sensitive or expect a specific case.
Fixed bugs and common vulnerabilities in the 21.04 release
The 21.04 release includes fixes for the following bugs:
The OS did not properly report the internet status per interface if both Wi-Fi and ethernet were enabled. The internet status from
azsphere device network list-interfacesorNetworking_GetInterfaceConnectionStatuscommands is now shown for each interface.Multiple hostnames resolving to the same IP address resulted in stale DNS cache entries in the DNS client. From this release forward, we ensure both hosts have valid and unique DNS cache entries.
21.04 includes updates to mitigate against the following Common Vulnerabilities and Exposures (CVEs):
CVE-2021-28460
CVE-2021-22876
CVE-2021-22890
About the 21.03 quality release
The 21.03 release includes bug fixes in the Azure Sphere OS; it does not include an updated SDK. If your devices are connected to the internet, they will receive the updated OS from the cloud.
Fixed bugs and common vulnerabilities in the 21.03 OS release
21.03 includes updates to mitigate against the following Common Vulnerabilities and Exposures (CVEs).
CVE-2020-28928
CVE-2021-28460
CVE-2021-27803
CVE-2021-3336
CVE-2021-27074
CVE-2021-27080
About the 21.02 release
The Azure Sphere 21.02 release includes the following components:
Updated Azure Sphere OS
Updated Azure Sphere SDK for Windows and for Linux
If your devices are connected to the internet, they will receive the updated OS from the cloud. We encourage you to install the latest SDK, but the existing 21.01 SDK will continue to work with the updated OS. To install the latest SDK, see the installation Quickstart for Windows or Linux:
New and changed features in the 21.02 release
The 21.02 release includes the promotion of the CLI v2 from Beta to release, and a new tutorial about memory management. The 21.02 OS update includes bug fixes and performance enhancements. The following sections provide details about these changes.
Azure Sphere CLI
The 21.02 Azure Sphere SDK release includes a new version of the Azure Sphere CLI that is easier to use in your shell and in your scripts. The new CLI is available in any shell such as PowerShell, Windows command prompt, or Linux command shell. It is installed alongside the deprecated Azure Sphere classic CLI on both Windows and Linux, so you have access to either interface.
Azure Sphere CLI v2 is now referred to as "Azure Sphere CLI".
Earlier Azure Sphere CLI versions (CLI v1 and lower) are now referred to as "Azure Sphere classic CLI".
The dedicated Azure Sphere Developer Command Prompt (available from Start > Azure Sphere or a shortcut) will be marked as deprecated and can be used only with the deprecated classic CLI.
The main new features of the new Azure Sphere CLI are summarized below and explained in detail here. The input and output for the new Azure Sphere CLI also have some differences compared to the Azure Sphere classic CLI. We encourage you to familiarize yourself with these differences and plan to migrate your processes and scripts that use the CLI. Although both versions of the CLI can be installed and used side-by-side, the classic CLI is no longer updated or maintained and will be retired in the coming months.
Tab completion
Tab completion is like autocomplete for the command-line interface. Type a few characters of a command and then press TAB to select the desired completion text. If multiple items begin with the text that you initially typed, then continue pressing TAB until the item you want appears.
In Linux, Azure Sphere CLI supports the tab completion feature for commands under the Bash shell.
Additionally, autocompletion helps you discover commands, parameters, and parameter values that are available to use. This is available by using CTRL+Space in Windows PowerShell or press TAB twice in the Linux Bash shell.
For example, type azsphere product update and use autocompletion to see a list of available parameters.

Similarly, type azsphere product update --product and use autocompletion to see a list of available products in your tenant.

Interactive mode (preview)
Interactive mode automatically displays information and makes it easier to select commands and sub-commands. Enter the interactive mode with the azsphere interactive command. The command prompt changes to azsphere>> to indicate that you are now running commands in the interactive shell.

Flexible output (preview)
You can more easily automate CLI commands by writing scripts that consume JSON or YAML output. You can separate this "stdout" output from "stderr" related error and informational messages. You can redirect it or paginate it with your favorite tools. And you can filter, modify, and sort it using the new --query option. Only some commands currently support these new output options; let us know via azsphere feedback if we're missing a command that you need to script.
New and updated samples for 21.02
The 21.02 release includes the following new and updated sample hardware designs and applications:
New tutorial on memory usage to demonstrate how to detect and fix memory usage problems, such as a memory leak, in your application.
Updated Readme files include commands for both the new Azure Sphere CLI and deprecated Azure Sphere classic CLI.
New and revised documentation in the 21.02 release
| Article | Changes |
|---|---|
| Azure Sphere CLI | Updated topic to describe the new Azure Sphere CLI features. |
| Migrate from classic CLI to Azure Sphere CLI | New topic about migrating to the new Azure Sphere CLI. |
| Azure Sphere classic CLI (Deprecated) | New topic describes how to use the Azure Sphere classic CLI. |
| Azure Sphere CLI interactive mode | New topic about new interactive mode feature. |
| interactive | New topic about new interactive command. |
| Quickstart: Install the Azure Sphere SDK for Linux | Updated installation instructions. |
| get-support-data | Updated topic to include support for new CLI. |
| register-user | Updated details registering email address from a third-party email account. |
| manufacturing-state | Updated details for the command. |
| Certificate use with Azure Sphere | New topic about the types of certificates that the various Azure Sphere components use. |
| Application Notes | New section providing extended guidance around specific scenarios and use cases. |
Known issues in the 21.02 release
Parameter completion
In the new Azure Sphere CLI, parameter completion does not work correctly in Windows PowerShell 5.0. We recommend using a later version of PowerShell or interactive mode for auto completion.
Fixed bugs and common vulnerabilities in the 21.02 OS release
The 21.02 OS release includes various bug fixes, a Linux kernel update, and mitigations against the following CVEs:
- CVE-2021-27080
- CVE-2021-27074
- CVE-2021-3336
- CVE-2020-8286
- CVE-2020-8285
- CVE-2020-8284
- CVE-2020-8231
About the 21.01 feature release
The Azure Sphere 21.01 feature release includes the following components:
- Updated Azure Sphere OS
- Updated Azure Sphere SDK for Windows and for Linux
- Updated Azure Sphere extensions for Visual Studio and for Visual Studio Code
If your devices are connected to the internet, they will receive the updated OS from the cloud. You'll be prompted to install the updated SDK on next use, or you can install it now. To install the latest SDK, see the installation Quickstart for Windows or Linux:
New and changed features in the 21.01 release
The 21.01 release includes additional features in the CLI v2 Beta, a new API to help applications monitor their memory usage, support for application crash data collection, and improved capabilities in Azure Sphere Explorer. In addition, we've added the ability to control current for GPIOs and additional ways to access ADC peripherals.
The following sections provide details about these changes.
Azure Sphere CLI v2
In the 21.01 release, the Azure Sphere CLI v2 continues to evolve, but is still considered a Beta product. We encourage you to use this new, more powerful CLI and to report any problems by using the v2 Beta CLI azsphere feedback command. In general, the V2 CLI is backwards compatible with the V1 CLI; however, it has a few differences that are worth noting, as described in the online documentation.
In each subsequent release of CLI v2, we aim to maintain backwards compatibility for both input (command names, parameter names, parameter values) and output in JSON and yaml. In cases where such compatibility is not possible, we will provide at least 6 months' notice before making changes.
The 21.01 release of CLI v2 supports simplified object identification so that you can use either use the ID (GUID), IP address, or Local Connection ID to identify the device.
API features
Several of the Applibs libraries contain new functions at this release:
New memory functions allow high-level applications to monitor their own memory usage. The functions return the total memory usage, user-mode memory usage, and peak user-mode memory usage.
New GPIO libraries components, which include
gpiopin_request,pin_config_param_type, andGPIO_SET_PIN_CONFIG_IOCTL, allow you to control the amount of current used to drive GPIO pins.
Support for crash data collection
Optional diagnostic data can be configured to collect a full Linux core dump when an application or system service crashes.
The Device Group - Patch function in the public API (PAPI) supports enabling crash dump collection for one or more of your device groups.
Access to ADC peripherals
ADC peripherals can now be accessed in the following ways:
Simplified functions that are wrappers for base Linux functionality.
Advanced functions that rely on Linux ioctls that communicate with the peripheral directly.
Code snippets are provided for both simplified and advanced functions that show how to:
Get the channel specification
Set the reference voltage
Get the sample bit count
Read the ADC
See the Implementation Overview for a side-by-side comparison of reading the ADC with the simplified, advanced, and Linux sysfs implementations.
New features in the 21.01 SDK
The IoT C SDK that is released with Azure Sphere was upgraded to the July LTS Refresh. This update contains an important security patch.
Updated Azure Sphere Explorer in Visual Studio and Visual Studio Code
Azure Sphere Explorer has been updated for this release. Visual Studio supports a read-only version and the Visual Studio Code version now supports write capabilities.
New and updated samples for 21.01
The 21.01 release includes the following new and updated sample hardware designs and applications:
A new ADC sample that demonstrates how to use analog-to-digital conversion (ADC) functionality.
Updates to the HTTPS_CurlEasy sample to showcase chunked downloads.
We have continued to make more of our existing Azure Sphere samples available for download through the Microsoft Samples Browser.
In addition, we now provide a collection of unmaintained samples and hardware designs in the Azure Sphere Gallery.
New and revised documentation in the 21.01 release
Topics on how to create, build, and debug applications have been restructured and simplified. As much as possible, these have been organized with the development environment in mind, whether Visual Studio, Visual Studio Code, or the command line.
The following table lists additional changes.
| Article | Changes |
|---|---|
| azsphere device capability | Added the azsphere device capability select command in CLI v2 to select a downloaded capability file to use for a servicing session. |
| azsphere device app start | Updated --debug-mode parameter to remove usage of short format -d. |
| azsphere command reference pages | All azsphere commands where the --device parameter is used. |
| Tutorial: Build and debug partner applications | New tutorial to illustrate multi-root debugging. |
| Create a high-level application | New topic contains steps to create new high-level applications. |
| Create a real-time capable application | New topic describes how to create new real-time capable applications. |
| Create partner applications | New topic describes how to create new partner applications. |
| Build a high-level application | New topic describes how to build high-level applications. |
| Build a real-time capable application | New topic describes how to build real-time capable applications. |
| Build and deploy partner applications | New topic describes how to build partner applications. |
| Debug a high-level application | New topic contains steps to debug high-level applications. |
| Debug a real-time capable application | New topic describes how to debug real-time capable applications. |
| Debug partner applications | New topic describes how to debug partner applications. |
| Create and manage device groups | New topic describes how to create and update device groups. |
| Manage products | New topic describes how to create and update products. |
| View deployment history | New topic describes how to view deployment history for a device group. |
| Create a cloud deployment for test | New topic describes how to create a deployment for testing during development. |
| Memory use in high-level applications | Added information on new memory API to obtain memory statistics in high-level applications. |
| Overview of diagnostic data types | New topic that provides an overview of the diagnostic data types for Azure Sphere devices. |
| Configure crash dumps | New topic that describes how to configure crash dump related setting. |
Known issues in the 21.01 release
In CLI v2, an incorrect error message is displayed if the value for the --name and --new-name parameters contains non-alphanumeric characters. The error is reported for the azsphere product create, azsphere product update, azsphere device-group create, and azsphere device-group update commands. The error message will be updated in an upcoming release. The names for product and device groups can only include alphanumeric characters.
About the 20.12 quality release
The Azure Sphere 20.12 quality release includes only an updated Azure Sphere OS. It does not include an updated SDK.
The 20.12 quality release includes the following bug fixes and enhancements:
- Reduced the maximum transmission unit (MTU) from 1500 bytes to 1420 bytes.
- Improved device update in congested networks.
- Fixed a problem wherein the Wi-Fi module stops scanning but does not respond with a completion event if a background scan is running and the active Wi-Fi network is deleted.
- Fixed a bug wherein I2CMaster_Write() returns EBUSY when re-sideloading the app interrupts operation.
- Fixed an Ethernet connection issue for devices with both Wi-Fi and Ethernet enabled. In some cases, upon rebooting the device the Ethernet link-up appeared to be down when it is connected to a network.
New and revised documentation in the 20.12 release
| Article | Changes |
|---|---|
| MT3620 hardware notes | Added information about how to interact with an MT3620 in Power Down state. |
| Base APIs | Separated IOCTLs, IoT S SDK, and TLS utilities into new pages. |
| Development environment | Revised to provide more information for developers. |
| Tutorial: Build a high-level application | Revised to improve consistency. |
| Tutorial: Build a real-time capable application | Revised to improve consistency. |
| device, dev | Added azsphere device network update-interface command. |