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:

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:

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.

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:

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.
  • 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

The following new or updated samples were added to the Azure Sphere Gallery, a collection of unmaintained scripts, utilities, and functions:

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:

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.

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.

The following new or updated samples were added to the Azure Sphere Gallery, a collection of unmaintained scripts, utilities, and functions:

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.

Three new samples were added to the Azure Sphere Gallery, a collection of unmaintained scripts, utilities, and functions:

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

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.

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 and/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 device provisioning service 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.

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 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-interfaces or Networking_GetInterfaceConnectionStatus commands 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.

PowerShell tab completion parameter

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

PowerShell tab completion value

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.

Azure Sphere interactive mode

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, and GPIO_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.