Skip to main content

Activating imp-Enabled Devices

Which Device Enrollment Flows Do We Support?

Enrollment is the process by which an imp-enabled device is granted access to the Electric Imp impCloud™. There are variations on this process for all of the key types of device that might seek access to the impCloud: Development Devices in the lab, factory devices (BlinkUp™; Fixtures and Devices Under Test (DUTs)), and Production Devices in the field.

Enrollment is closely related to BlinkUp, which is the means by which an imp-enabled device receives the enrollment token it subsequently uses to verify its request for access to the impCloud. BlinkUp is sometimes also used to pass a plan ID to the device — during BlinkUp, plan IDs differentiate one device user from another.

What follows is a description of the current enrollment process, the recommended flows that will ensure successful device enrollment, and guidance on what will be observed when unsupported flows are employed.

Enrollment Tokens And Plan IDs

There are different types of enrollment tokens, each used according to the circumstances of the enrollment:

Enrollment Token Type Device to be Enrolled Token Sent By
Developer Development Devices
BlinkUp Fixtures
Electric Imp mobile app
Factory DUTs BlinkUp Fixtures
Production Blessed devices (Production Devices) Customer’s BlinkUp SDK-based app

In addition, there are two different types of plan ID, each used according to the target device’s intended user:

Plan ID Type User Type Identified Plan ID Sent to Device Only By
Developer The Electric Imp account with which the enrolled device will be associated Electric Imp mobile app
Production The Production Device’s end-user Customer’s BlinkUp SDK-based app

Factory enrollment does not make use of plan IDs.

Supported Enrollment Flows

Production and Developer enrollment involves the following stages:


 Click for a larger version
 

Customers’ BlinkUp SDK-based apps typically retrieve a new production plan ID each time a device is configured. The Electric Imp app retrieves the developer’s single plan ID when the developer logs into the app.

Factory enrollment is slightly different in that no mobile app is used: BlinkUp is driven by factory hardware, which retrieves a factory enrollment token but no plan ID. Instead of running application firmware, the device that has been enrolled receives and runs the assigned factory firmware.

If the impCloud cannot enroll any device for some reason — for example, the token is invalid, or of the wrong type — it sends a rejection in response to the device’s enrollment request. What the immediate effect of this rejection will be will depend upon the enrollment circumstances. Possible outcomes are discussed later in this article.

  • When a development device has been enrolled, it appears in impCentral™ as an unassigned device. It can now be manually assigned to any of the account’s Development Device Groups, causing it to receive and run the application firmware most recently deployed to the group. If it is subsequently re-enrolled, the device remains assigned to the same Development Device Group.
  • When a BlinkUp Fixture has been enrolled, it appears in impCentral as an unassigned device. It can now be manually assigned to any of the account’s Test Factory Device Groups or Factory Device Groups. In either case, it receives and runs the factory firmware most recently deployed to its assigned group. If it is subsequently re-enrolled, the device remains assigned to the same Device Group.
  • When a DUT has been enrolled, it automatically receives the factory firmware deployed to the Test Factory or Factory Device Group to which the enrolling BlinkUp Fixture is assigned.
  • When a Production Device has been enrolled, it will run the application firmware deployed to the Production Device Group to which it was assigned at blessing.

The following are the only public impCloud enrollment flows that Electric Imp supports:

  • BlinkUp Fixtures should only be enrolled using the Electric Imp mobile app (ie. using a development token and a developer plan ID).
  • Development Devices should be initially enrolled using the Electric Imp mobile app (ie. using a development token and a developer plan ID).
  • DUTs should only be enrolled using BlinkUp Fixtures.
  • Production Devices should only be enrolled using the customer’s BlinkUp SDK-enabled app (ie. using a production token and a production plan ID).

The following flowchart will help you choose the correct enrollment flow:


 Click for a larger version

Unsupported Enrollment Flows

The following actions are not supported by Electric Imp and should not be implemented by customers. They are included here to help you understand what you may have done wrong if you are experiencing unsuccessful enrollments or other unexpected device/agent behavior: for example, a device that enrolls but has no agent.

Blessed Production Device, Development Token, Developer Plan ID

This is typically a blessed device being enrolled using the Electric Imp mobile app, possibly by an end-user attempting to convert a purchased product into a development device.

The device will signal that BlinkUp has failed (a red flash) and boot its existing production application firmware. Its network credentials are cleared, so that the user must re-configure using the customer’s BlinkUp SDK-based app when the device next disconnects.

Blessed Production Device, Development Token, Production Plan ID

The device will run the application firmware deployed to the Production Device Group of which it is a member. Its network credentials are cleared, so that the user must re-enroll the device using the customer’s BlinkUp SDK-based app when the device next disconnects.

Blessed Production Device, Production Token, Developer Plan ID

This is typically where a customer has hard-coded their developer plan ID into their BlinkUp SDK-based app to facilitate app testing.

The device will run the application firmware deployed to the Production Device Group of which it is a member. Its network credentials are cleared so that the user must re-enroll the device using the customer’s BlinkUp SDK-based app when the device next disconnects.

Note It is no longer necessary and not desirable to include developer plan IDs in your apps. If you are doing so, please remove it and make use of the production plan IDs supplied by the BlinkUp SDK. Test your app on Test Blessed Devices or Production Devices. Please see ‘How To Test BlinkUp SDK-based Apps’ for further details.

Unsupported imp001 Enrollment Flows

The following flows are not supported but are described here to help you understand what you may have done wrong if you are not experiencing successful enrollments or other unexpected device and/or agent behavior.

Note The use of imp001 cards in BlinkUp Fixtures is no longer supported. Please replace your imp001-based fixtures with fixtures based on imp modules.

Production Device Fitted With A Development imp001

The imp001 will receive the production application firmware assigned to the device, but it will have no agent. Its network credentials will be cleared so that the user must re-enroll the device using the customer’s BlinkUp SDK-based app when the device next disconnects.

Production Device With A Different Production Device’s imp001

The imp001 will receive the production application firmware assigned to the device, but it will have no agent. Its network credentials will be cleared so that the user must re-enroll the device using the customer’s BlinkUp SDK-based app when the device next disconnects.

Production Device With A Factory imp001

Note This flow will be eliminated when impCentral replaces the legacy IDE in August 2018. impCentral does not use or support factory imps.

If the imp001 and the device are associated with the same account, the factory imp001 will receive the factory firmware it has been associated with, and it will proceed to test and re-bless the device.

If they are not associated with the same account, the imp001 will receive the device’s assigned production application firmware. Its network credentials will be cleared so that the user must re-enroll the device using the customer’s BlinkUp SDK-based app when the device next disconnects.