ACK Device SDK

The Alexa Connect Kit (ACK) Device SDK is contains embedded C libraries, samples, and documentation for developers to build Alexa-connected host microcontroller unit (HMCU) applications for ACK.

Download the SDK

Download the ACK Device SDK on the Resources page of the ACK developer console.

Full SDK documentation

SDK versions

There are two major versions of the ACK Device SDK – ACK Device SDK version 3.x and ACK Device SDK 4.x. Each major version also has a series of minor releases, such as the ACK Device SDK 3.2 and ACK Device SDK 3.4. The following table lists the SDK release dates and the compatible ACK development kits.

SDK Version Release date ACK development kit compatibility

ACK Device SDK 4.1

Apr 30, 2021

Espressif

ACK Device SDK 3.4

Apr 30, 2021

Espressif and USI

ACK Device SDK 3.2

Feb 01, 2021

Espressif and USI

ACK Device SDK 3.1

Feb 01, 2021

Espressif and USI

ACK Device SDK 4

The ACK Device SDK 4 is only supported on the Espressif development board. It introduces support for the following smart home interfaces in addition to the interfaces already supported in SDK 3:

The full ACK Device SDK 4 documentation is bundled with the SDK download in a pdf file.

ACK Device SDK 3

The ACK Device SDK 3 is supported on both the USI and Espressif development board. For more details about the supported smart home interfaces, see Smart home Capability Interfaces.

The full ACK SDK 3 documentation is bundled with the SDK download in a pdf file.

SDK components

The ACK Device SDK has two main components, the SDK sample apps and the HMCU implementation core.

SDK Sample apps

The ACK Device SDK contains four sample apps that you can upload to your ACK development kit. You can use the sample apps out-of-the-box or use them as a template to build your own Alexa products. The four sample apps included with both the ACK Device SDK 3 and 4 are:

  • Hello Word – Models basic the functionality of a smart plug, such as powering it on and toggling through ACK lifecycle states.
  • Dash Replenishment – Models the basic functionality of the Dash Replenishment Service, such as tracking if a printer is low on paper or ink.
  • Smart Light – Models the basic functionality of a smart light, such as powering it on, controlling the brightness, and toggling through presets.
  • Microwave – Models the basic functionality of a microwave, such as powering it on and emulating a keypad.

HMCU Implementation Core

The implementation core communicates between your HMCU application and the ACK module. The implementation core handles device registration, life cycle management, connection to Alexa, device state changes, and processes Alexa directives and events. The HMCU runs your device's application, which handles device-specific logic for your device. The ACK Device SDK provides the C source code that you use in your device's HMCU application. The ACK Device SDK provides the link between your device's HMCU and the ACK Module.

For more information about how the different components of ACK communicate with each other, see How Alexa Connect Kit Works.

Choosing the correct SDK version

Use the following information to determine whether to use the ACK Device SDK 3 or ACK Device SDK 4.

ACK scenario Recommendation

You're starting a new ACK product, and you purchased an Espressif development kit.

Your kit is already compatible with the ACK Device SDK 4. Only the ACK Device SDK 4 appears on the Resources page of the ACK developer console.

You're starting a new ACK product, and you purchased a USI development kit.

Upgrade to ACK Device SDK 4 before you begin development. Download the ACK Device SDK 4 on the Resources page of the ACK developer console.

You're currently prototyping a device by using SDK 3, but you haven't created a virtual product yet.

Upgrade to SDK 4 before you create a virtual product. Download the ACK Device SDK 4 on the Resources page of the ACK developer console.

You're currently prototyping a device by using SDK 3, you have already created a virtual product, and you want to take advantage of the new smart home interfaces available in SDK 4. After you create a new virtual product, download the ACK Device SDK 4 on the Resources page. Copy the code from your existing HMCU application to your new product and update it as explained in upgrade your HMCU application from SDK 3 to SDK 4.

Upgrade your product to SDK 4. First create a new virtual product on the Products page of the ACK developer console.

You're currently prototyping a device by using SDK 3, you have already created a virtual product, and you don't need the new smart home interfaces.

You can keep using SDK 3. The ACK Device SDK 3 is still supported for the SDK 3 smart home interfaces.

Your ACK product is certified.

Don't upgrade the SDK version of your product.

You're manufacturing your ACK device.

Don't upgrade the SDK version of your product.

You already launched your ACK device

Don't upgrade the SDK version of your product.

Upgrade your HMCU application from SDK 3 to SDK 4

If you have an existing product in development, and you want to upgrade to ACK Device SDK 4, you must update the code for your existing HMCU application.

First remove all includes that look like the following:

  • #include v3avs_capabilities/...
  • #include v3avs_types/...

Then update your code by replacing ACK Device SDK 3 types and capabilities with ACK Device SDK 4 types and capabilities by using the information in the following table. Include the headers for the types and capabilities that you replace.

SDK 3 Entity SDK 4 Replacement SDK 4 Header

v3avs_capabilities_V3Alexa_Cause_CauseType

ack_alexa_change_report_cause_type

generated/ack_generated_alexa.h

v3avs_capabilities_V3Alexa_ErrorResponse_ErrorType

ack_alexa_error_type

generated/ack_generated_alexa.h

v3avs_capabilities_V3Alexa_NotSupportedInCurrentMode_DeviceMode

ack_alexa_device_mode

generated/ack_generated_alexa.h

v3avs_capabilities_V3AlexaCooking_ErrorResponse_ErrorType

ack_alexa_cooking_error_type

generated/ack_generated_alexa_cooking.h

v3avs_types_V3CookingMode_Value

ack_cooking_mode

generated/ack_generated_cooking_mode.h

v3avs_types_V3Count_Size

ack_count_unit

#include generated/ack_generated_count.h

v3avs_types_V3EnumeratedPowerLevel_Value

ack_enumerated_power_level

generated/ack_generated_enumerated_power_level.h

v3avs_types_V3Temperature_Scale

ack_temperature_scale

generated/ack_generated_temperature.h

v3avs_types_V3Volume_Unit

ack_volume_unit

#include generated/ack_generated_volume.h

v3avs_types_V3Weight_Unit

ack_weight_unit

#include generated/ack_generated_weight.h