FAQ for FFS

The following questions and answers discuss implementing Frustration Free Setup (FFS) on an Alexa Voice Service (AVS) enabled device.

Q: Can my customers still use our companion app for the device?
Although the entire device setup occurs in the Alexa app, you can still use your companion app for advanced settings. FFS supports three possible scenarios for the Alexa app and any device companion app:
  • Setup requires only the Alexa app
  • Device setup begins with the Alexa app, and the end of the setup process provides a deep link to your companion app for additional settings.
  • Your device companion app includes a deep link to the Alexa app to start device setup.
Q: How do I enable production devices for Zero Touch Setup (ZTS)?
Follow these steps to enable production devices for ZTS:
  1. Provision the device according to the instructions in Provision AVS devices for FFS
  2. Verify that User Guided Setup (UGS) works for the device.
  3. Make sure that the device packaging has a 1D barcode that contains the device serial number and meets the specifications described in 1D Barcode requirements.
  4. For each batch of devices that you manufacture, upload your control logs according to the Device Control Log Specification.
Q: How should I set up my devices for certification?
Use the following tips to set up your devices for certification:
Q: Should the Alexa app display a push notification after a user sets up a device through ZTS?
The Alexa app displays a push notification confirming the successful setup of a device after a user completes ZTS. If the Alexa app doesn't display this push notification, make sure that after ZTS completes, your software calls aceFfs_stop().
Q: Why is the device that I'm provisioning using a different locale from my Alexa provisioner device?
You might notice during testing that when using FFS for setup, the Alexa provisioner sends a callback with locale information to the device. The device can save this callback information for future use.

The following code sample shows an example of one of these callbacks.


 /**
 * Language locale sent by the provisioner.
 * @param[in] ctx. opaque context pointer
 * @param[in] locale. Configuration for locale setting, like "en-US", a
 * language-CountryCode combination, following standard ISO 639-1 for
 * language and ISO 3166-2 for country code.
 * @param[in] len. length of locale
 * @return ACE_STATUS_OK on success, failure code otherwise.
 */
 ace_status_t (*set_language_locale)(void* ctx, const char* locale,
 size_t len);