AVS Device SDK Dependencies

The Alexa Voice Service (AVS) Device SDK requires dependencies to compile and run. These dependencies include compilers, build tools, and open source libraries. This page lists these dependencies and the minimum versions tested against the SDK. If you choose to use different dependencies in your build, you might encounter issues beyond the scope of this documentation.

Version 1.26.0 changes

Required dependencies

The AVS Device SDK requires the following dependencies to build. Make sure you're using the minimum version or higher that's listed in the table.


The AVS Device SDK provides C++-based libraries that enable your device to process audio inputs and triggers, establish persistent connections with AVS, and handle all Alexa interactions.

To compile the SDK, your device must run C ++.

Language Minimum Version
C ++ 11


The AVS Device SDK runs on one of the following platforms.

Platforms Tested Versions
Raspberry Pi Model: 3B or 4. OS: Raspbian Buster
macOS Catalina (10.15.7)
Ubuntu Linux 18.04
Android Android 6.0 to Android 10.0
Windows 64-bit Windows 10 Enterprise 1703


You need a compiler to build the AVS Device SDK if you're using Ubuntu, Raspberry Pi, or macOS.

Compiler Supported Versions
GNU Compiler Collection (GCC) 4.8.5, 5.0
Clang 3.9 +

Build tools

The AVS Device SDK uses the CMake build tool to compile dependencies and automate build tasks.

CMake is a cross-platform set of tools that manages your app dependencies and creates a native makefile and workspaces suitable for the platform you're building with. It helps you create, build, and test projects with the AVS Device SDK.

Tool Minimum Version
CMake 3.1


The AVS Device SDK uses the following open source libraries and their respective dependencies – libcurl, nghttp2, OpenSSL, and Doxygen.

Library Minimum versions
libcurl 7.67.0
nghttp2 1.39.2
OpenSSL 1.1.1d
Doxygen 1.8.16

Core music provider

The AVS Device SDK doesn't support music out-of-the-box. However, to pass product testing and certification, all Alexa devices must support the following AVS music service providers. The following audio libraries, packages, and dependencies are tested and work with the SDK.

The SDK plays media from music streaming services including Amazon Music, TuneIn, iHeart Radio, Pandora, Sirius XM, and more. For more details on supporting Apple music, see Media Player.

Library Minimum version
Crypto library - For HLS demuxers 1.8.4 or earlier
libsoup - An HTTP client/server library used by GStreamer. 2.6.5 or earlier
libfaad-dev - AAC and HE-AAC decoding 1.10.4
GStreamer Bad Plug-ins 1.10.4

Hardware security module

You can use the PKCS#11 API to integrate a hardware security module into the SDK. To use this feature, install the following libraries:

Library Minimum version
Platform-Specific PKCS#11 Library 2.40
OpenSC 0.18.0
Library Minimum version
SoftHSM 2.4.0

Optional dependencies

There are various optional features you can enable in the AVS Device SDK. These require an additional set of dependencies, as described in the following tables.

Sample app

Building the AVS Device SDK sample app is optional. The sample app lets you test Alexa on your preferred operating system, before integrating with your device. The sample app runs on Mac, Linux, Raspberry Pi, Windows, or Android. The sample app builds with or without a wake work engine (WWE). Alexa doesn't operate in handsfree mode without the wake work engine activated.

Library Minimum version
PortAudio v190600_20161030
GStreamer 1.8.3

Note: If you're using the Android Microphone and Media Player, you don't require these dependencies. Note: If you're running MacOS Big Sur, the minimum required version of PortAudio is v190700_20210406


For more details about enabling Alerts, see Features.

Library Minimum version
SQLite 3.19.3

Asset manager

Building the SDK with the Asset Manager is optional. To enable this feature, install the following dependencies. For more details about using Asset manager, see Asset Manager.

Library Minimum version
libarchive 3.4.3


Building with Bluetooth is optional and is supported on Linux or Raspberry Pi. You can use the following Bluetooth protocols.

  • A2DP-SOURCE (Linux only)
  • AVRCPTarget (Linux only)
  • AVRCPController

To enable BlueZ and PulseAudio, the SDK uses the following libraries, modules, and dependencies. You can choose to build with different dependencies, however, they haven't been explicitly tested against the SDK.

Library Minimum version
SBC Library 1.3
BlueZ 5.37 5.37
libpulse-dev - Required if enabling this particular CMake variable: BLUETOOTH_BLUEZ_PULSEAUDIO_OVERRIDE_ENDPOINTS 8.0
PulseAudio and PulseAudio Bluetooth (or equivalent) - Used to handle audio routing 12.2 or earlier


The MediaPlayerInterface allows for sourcing, playback control, navigation, and querying the state of media content. Building with the MediaPlayerInterface is optional. To build this interface, you must install the following libraries, plug-ins, and dependencies:

Library Minimum version
GStreamer 1.8.3
GStreamer Base Plug-ins 1.8.3
GStreamer Good Plug-ins 1.8.3
GStreamer Libav Plug-ins or GStreamer Ugly Plug-ins for decoding MP3 data 1.8.3

Opus encoding

Opus encoding is optional. To enable Opus, install libopus and enable it.

Library Minimum version
libopus 1.2.1

SAMPLE-AES decryption

SAMPLE-AES decryption is optional. For more details about enabling SAMPLE-AES decryption, see Features.

Library Supported versions
FFmpeg 4.0.0 - 4.4.2

Build for Android

To build for Android, you must install the following libraries, packages, and dependencies.

Library Supported versions
Android Android API level 23 - Android API level 29
Android SDK tools - Included in Android Studio by default. 1.0.39 or later
Android Native Development Kit (NDK). Required for the MediaPlayerInterface and sample app integration. r16 or later
FFmpeg 4.0.0 - 4.4.2

Was this page helpful?

Last updated: Oct 20, 2021