What Is ‘Headless Provisioning,’ and How Can We Make It Easier for Users?

Nearly five years since IoT devices began to enter the market in a significant way (think first-gen Philips Hue and Nest), they’re still most popular with early adopters and people who self-identify as “techie.”

The remainder of the populace is still a bit hesitant. There are many reasons for this, such as security and price, but there is also perceived difficulty — the onboarding process for IoT devices often feels obtuse and temperamental. This is especially true with devices that don’t have screens. Connecting a screenless, smart device to the Internet when you’re used to connecting through a screen interface can be intimidating and easily perceived as complex — especially when it is, often times, needlessly complex!

This presents a challenge for product designers — how do we gracefully and strategically insert tech into a product in a way that allows people to intuitively connect it to the larger ecosystem?

What Is “Headless Provisioning”?

Headless provisioning is part of the unboxing experience — specifically, it’s the part when a user connects the device to the Internet for the first time. Unfortunately this process is often confusing for users. This is unfortunate because setting up users for easy success with this task is a big win for the user and the manufacturer of the product. A positive first impression nurtures brand loyalty.

Trends in headless provisioning are changing quickly, so we looked at some of the latest products on the market to see how easy they are to set up — including Amazon Echo, Echo Dot, FitBit Aria, Rachio’s Smart Sprinkler Controller, Nest Protect, Nest Cam, and Google Home. Examining the process across these devices begins to reveal the ways in which we can start to optimize headless provisioning.

What’s the Best Way To Do Headless Provisioning?

We work on a lot of IoT devices and we’re always trying to stay on top of the latest capabilities. There aren’t a lot of resources out there for those seeking to learn about different headless-provisioning techniques, so we thought we’d make our own.

Trends in headless provisioning are changing quickly, so we looked at some of the latest products on the market to see how easy they are to set up.

We’ve organized this resource in chronological order, from the beginning to last steps of the provisioning process, with tips and illustrative examples for each. Included are things to consider while developing the industrial design, firmware, and app for a consumer product. We present this with the caveat that protocols in this area are constantly changing, and this is what we think is working best right now:

Step 1: Putting the Device into Discovery Mode

Discovery mode prompts a device to broadcast its signal and ID so that external devices may be able to recognize, and connect with, the discoverable device. The discoverable device itself may also be searching for specific signals with which to connect. There are, however, several factors to consider when and how a user initiates discovery mode.

Discovery mode should remain active for a generous amount of time. A thirty-minute span should be suitable for most cases — this is enough time to allow the user to download the app and start following instructions. With devices that are directly connected to a power source, it often feels the most magical if the device goes into provisioning mode at the moment it is turned on (presuming no WiFi settings are detected upon bootup). This allows the user to do everything on the phone, and not have to switch between device and app.

Clearly communicate on the packaging where to go to download the app. Include a url, the app name, and an app icon. Nest and Google Home (see pic above) do this well.

Devices that run on batteries are trickier. Thirty minutes of provisioning will likely be too much of a drain on the battery. In instances like this, design the device to go into provisioning mode when powered on — if you have a dedicated power switch or button. The app should instruct when to press the button and give a reasonable amount of time (five minutes should suffice) to connect.

If the product doesn’t have an existing button or switch to power on — such as the Fitbit Aria or Nest Protect — add a branded plastic strip (see picture above) that the user can pull to complete the battery connection and turn on the device. This works reasonably well, and can save you from having to add a button if your interface doesn’t have one otherwise. You can press down the front of the Aria to get to change mode, which is somewhat awkward at times. Likewise, the entire faceplate of the Nest Protect is press-able, which re-enables provisioning mode.

Step 2: Communicating the Provisioning Status

Communication is essential — users need feedback from their devices to confirm that what they’re doing is working, or not. There are a few different ways we saw products pull this off. In general your options are limited to the hardware you have available, but here are some important tips to consider:

Don’t make the user feel rushed. Communicate that the device is on and searching — but do your best to not create an air of urgency. Yes, there is probably a provisioning window, as we talked about above, but the user will have a better experience if they don’t feel rushed.

Use audio and light elements to communicate what’s happening. The Echo has the benefit of great audio, and so they are wise to use it. In combination with their diffused light ring, it activates with a pleasant ambient noise and Alexa’s paced voice telling you to go to the app. An orange light cycles around the top, but not so fast as to induce frenzy.

The Aria, left, and Google Home, right.

The Google Home similarly uses its dotted-ring LEDs to communicate it’s on, as well as a nice piano interlude. Google’s voice instructions are very clear on instructing the user where to go:  “Welcome to Google Home. To get started, download the Google Home app on a phone or tablet.” A peaceful pulsing pattern of white lights indicates that it is ready and waiting.

Even a simple blinking light or dot matrix display is helpful. Not many IoT products will have the benefit of the Home and Echo’s crisp sound and array of lights. Most will likely have to rely on a single LED to communicate provisioning mode. Simply blinking an LED to indicate that it is powered, but not provisioned, is probably enough. But follow the lead of the aforementioned products and blink at a tempered pace — let the user know it’s looking, but there’s no need to panic.

The Aria doesn’t have colored LEDS — but it leverages a dot matrix display, reserved primarily for communicating your weight in typical use, to scroll text. It can literally spell out that it is in “Setup Mode.” This is a clever appropriation by them.

Step 3: Finding the Device on the Mobile App

Your device is searching for connection. At this point in time, pretty much all IoT products are going to have you use your phone to connect as you would with any WiFi network. This means you’ll often reach a step early in the onboarding process where you need leave the app and go into your phone’s settings where (hopefully) the name of your product is obvious and easy to find.

While this is still the process used in many popular products including Fitbit Aria, Amazon Echo, and Echo Dot, there are some new innovations we’ve seen out there that improve on it:

Keep the user in-app. In general, we have a strong preference for onboarding experiences that keep the user in-app. Some great examples of this include the Nest Protect, Nest Cam, and Rachio Sprinkler Controller.

Simplify connection confirmation. These products include two steps to confirm that you are connecting to the right unit.

Nest makes use of your phone’s camera to scan a QR code on the product itself to automatically recognize the device. The QR code works well in instances where people might be setting up multiple devices (which is more probable in the case of Nest Protects or Nest Cams).

Conversely, Rachio’s find and retrieve approach starts off with a screen that asks what type of device you’re looking for and then presents you with all of the matches it detects — and the way it automatically finds them feels a bit magical. It does ask you down the line to enter the serial number, which is easily visible and relatively short, to help verify connection. The find and retrieve technique works better when you’re working with a single device. (Most people will only own one sprinkler controller.)

Both methods are fairly user friendly (much better than having to switch back and forth on your phone between WiFi settings and the app). We slightly prefer Rachio’s, because it doesn’t require you to scan a QR code which can sometimes be inconvenient (lighting conditions or damaged labels).

Consider security concerns. Google Home has an interesting setup in that it will automatically populate in the Google Home app and promote itself to be provisioned. It’s like Rachio, but you never say “Search for Google Home” — instead, it just shows up. This is at once very easy, because it lets its presence be known proactively — but it’s also a bit disconcerting, because it is clear that anyone who has the app nearby will see it. This tradeoff in perceived security is something to be considered — and we’re not sure it’s worth it.

Step 4: Connecting to Wifi

Once the IoT device is connected, it needs to hand off access to the local network. This step has always been relatively simple — show a list of all WiFi networks and their strengths. The user recognizes theirs, selects it, and enters the password.

Give a “Show Password” option. This helps users with network passwords which are typically complex and less frequently entered. Overall, the best practice is to stick to standard and familiar patterns.

Bypass the password. The Rachio controller has a nice feature that allows you to hand off to the network the phone is attached to, and it carries over the permissions in the background — the user does not have to enter a password. This helps make setup even easier.

The Most Important Tip? Work Closely With Electrical Engineers

How many products feel as though they come with a barrier to entry based on perceived technical literacy? This is a problem because in addition to functionality and cost, ease of use is a major factor for people who are considering whether or not to purchase an IOT product. We hope this post acts as a resource for others who are trying to design IoT devices with easier set-ups.

Cross-discipline brainstorming across the provisioning process is the most significant source of creative and realizable solutions.

Of course, unspoken through all of this is the need for interaction designers to work closely with the electrical engineers on their project team. Because provisioning is a one-time thing, you are most likely repurposing existing components to get the job done as quickly and easily as possible.

The EE’s on your team are the ones with intimate knowledge of devices’ capabilities. They are the ones to consult when it comes to gauging how sound, display, and power can (and cannot) be used. Cross-discipline brainstorming across the provisioning process is without a doubt the most significant source of creative and realizable solutions.