Alexa Voice Service 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. The following section lists these dependencies and the minimum versions tested against the SDK.

Required dependencies

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

Language

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 use the AVS Device SDK, your device must be able to build and run C++11.

Platform

The AVS Device SDK runs on most Linux-based platforms. For point of reference, it offers two sample applications that are built and tested on the platforms listed in the following table.

Platform Tested version
Raspberry Pi Model: 3B or 4. OS: Raspbian Bullseye
macOS Monterey (12.4)
Ubuntu Linux 20.04

Compiler

If you're using Ubuntu, Raspberry Pi, or macOS, you need a compiler to build the AVS Device SDK. The following table shows supported compilers.

Compiler Supported version
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.

Doxygen and Graphviz are for building the SDK API documentation and they are optional.

The following table shows the supported build tool versions.

Tool Minimum version
CMake 3.1
Doxygen (optional) 1.8.16
Graphviz (optional) 2.30.0

Libraries

The following table shows the open source libraries and their respective dependencies—libcurl, nghttp2, and OpenSSL—that the AVS Device SDK uses.

Library Minimum version
libcurl 7.67.0
nghttp2 1.39.2
OpenSSL 1.1.1d

Core music provider

The AVS Device SDK doesn't provide support for music itself. However, to pass product testing and certification, all Alexa devices must support the following AVS music service providers. The following table shows the audio libraries, packages, and dependencies that 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 about supporting Apple music, see Media Player.

Library Description 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 A set of GStreamer plug-ins that aren't up to par compared to the rest 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 libraries shown in the following table.

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

Optional dependencies

You can enable several optional features in the AVS Device SDK. These features require an additional set of dependencies, as described in the following tables.

Alerts

For more details about how to enable 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

Bluetooth

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

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

To enable BlueZ and PulseAudio, the SDK uses the libraries, modules, and dependencies shown in the following table. 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

MediaPlayerInterface

The MediaPlayerInterface enables you to add 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 libraries, plug-ins, and dependencies shown in the following table.

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 how to enable SAMPLE-AES decryption, see Features.

Library Supported versions
FFmpeg 4.0.0 - 4.4.2

Was this page helpful?

Last updated: Nov 30, 2022