BlinkUp Reference
In order to connect an imp-enabled device to the Electric Imp impCloud™, it must be configured with local wireless credentials, an Enrolment Token and a Plan ID. The process of gathering this information from the user and configuring the device is know as BlinkUp™. BlinkUp can be accomplished in a number of ways with varying levels of customization. The simplest way to configure a device using BlinkUp is to use the BUBasicController class, which provides a standard user interface for the user. If you wish to customize the user experience, you can use the lower-level classes from the SDK.
The Electric Imp iOS BlinkUp SDK supports iOS 8 and up. The latest release is version 20.0.0.
The BlinkUp process can be broken into four steps:
- Network selection
- Setup configuration and identification gathering
- Flashing the device
- Polling the server for the device information

Network Selection
Network selection is the process of gathering network information from the user. When presented with the network selection UI, the user will be able to enter a WiFi SSID and password, or enter a WPS PIN. The user may also clear a device of its current configuration. The user can cancel and return to the previous UI without selecting an action to perform. When implementing a custom BlinkUp, you can use the BUNetworkSelectController to perform this operation.
Configuration ID
The configuration ID combines all the device identification information needed for device authorization. It is required when connecting a device to the impCloud, but it is not needed when clearing a device of previously installed configuration data. A configuration ID contains two parts: an Enrolment Token and a Plan ID. The Enrolment Token is retrieved from the impCloud when creating a BUConfigId. The Plan ID can be passed in from your app or retrieved from the impCloud along with the Enrolment Token.
Flashing
Flashing is the process of sending information from the phone or tablet to the imp-enabled device via a series of screen flashes. When flashing using WPS, a BUWPSConfig and a BUConfigId need to be passed in to begin the flash. When flashing using WiFi credentials, a BUWifiConfig and a BUConfigId are needed. When clearing the configuration of a device a BUNetworkConfig is needed. Flashing is performed by the BUFlashController.
When flashing an imp005-based device to connect solely through Ethernet, a BUEthernetConfig and a BUConfigId are needed. If the device can use either WiFi or Ethernet, pass a BUWPSConfig and a BUConfigId — the device will then connect to the specified WiFi network if it is not physically connected to a wired network. The imp005 module does not currently support WPS. The imp005 is the only imp module with Ethernet support — all other imp modules connect by WiFi/WPS.
Polling
Polling is the process of retrieving device information after a flash. It is not needed during a clear-configuration operation. The polling process checks the impCloud for information about that device. Either the device connects to the impCloud, is successfully enrolled, and its information is successfully retrieved by the SDK, or the polling will fail after a timeout period. Polling is performed using a BUDevicePoller object created during the process of flashing.
Additional Notes
Swift Support
The SDK can be used in a Swift program. A few optional extensions are provided to wrap some of the large block method parameters. More information about Swift setup can be found in the Install Guide
BlinkUp Success During Rotation
Rotating an iOS device during BlinkUp can reduce the odds of a successful BlinkUp being achieved. It is strongly recommended that you implement the following:
Ensure that your application has “Requires full screen” set to
true
for the application Target -> General setting.The view controller that presents the BlinkUp, the RootViewController, and any container controllers (such as UINavigationController, UISplitViewController, etc) should implement the shouldAutorotate method and return the value acquired from
[BUHelper shouldAutorotate]
. If the interface is rotated while the BlinkUp interface is presented the status bar and or presenting interface may become out of sync with the device orientation. To counteract this issue, the presenting view controller can call the BUHelper method fixRotationForViewController: after the flash process has completed.
During the flash process the status bar may or may not appear. If the application’sinfo.plist
has “View controller-based status bar appearance” set toYES
, the status bar will not be visible, otherwise it will use the preference of your application.
Promises
Due to the asynchronous nature of the BlinkUp process, it may be useful to use a promise library when not using the BUBasicController.
Advanced Features
The imp001 through the imp004m are able to communicate solely by WiFi. The imp005 also supports Ethernet. impOS release 34 and up support the application of static network configurations and connection through HTTP CONNECT proxy servers. To make use of these advanced features, you will need to integrate BlinkUp into your app through the SDK’s customization mechanism. They are not supported by the standard interface.
Programming Guides
Class References
- BUBasicController
- BUConfigId
- BUDHCPAddressing
- BUDeviceInfo
- BUDevicePoller
- BUErrorStringParameters
- BUEthernetConfig
- BUFlashController
- BUFlashStringParameters
- BUHelper
- BUNetworkAddressing
- BUNetworkConfig
- BUNetworkManager
- BUNetworkProxy
- BUNetworkSelectController
- BUNetworkSelectStringParameters
- BUPinningDescription
- BUPinningSPKIData
- BUSDK
- BUStaticAddressing
- BUWPSConfig
- BUWifiConfig