Are there alternatives to using the App to configure the imp to a WiFi network? Can we possibly do that using one of the UART or SPI interfaces?
There are no alternatives right now, sorry. You don’t need to use a phone, you can use a non-phone device (tablet, iPod touch, etc) - or just borrow one to configure it.
How about WPS?
WPS still needs to be initiated somehow, plus the user credentials need to be transferred in most cases.
I for one would be willing to accept a greatly reduced transfer speed, even up to an order of magnitude longer, to be able to program the devices from a non-phone. While you are right, smartphone penetration has gone a long way, and it won’t really be THAT big of a deal. It is hard to make a consumer device where the customer would need to have a phone just to get the device they bought to work.
The issue is less the speed of transfer, and more the stability of the transfer speed - ie consistency of frame rate. Encoding to deal with bit slip is somewhat harder than dealing with bit errors.
Sorry for the delay in getting back to this discussion. Thank you for your responses so far. And I completely understand that you are targeting users with a smart phone. And any person who is buying a device with a wifi feature is more than likely to own a smartphone too. I’m just trying to see if the imp might be a good fit for our application. For instance, I know of a wifi module which accepts wifi configuration information over the air by using ad-hoc beacons through a pc/smarphone. I was just wondering if such a feature could be implemented on the imp.
WPS-PIN was technically vulnerable to attack because some routers had no “bad pin delay”, so people could just brute force the PIN.
I think it’s definitely worth looking at alternatives to smart phones. Other web enabled devices do it by creating ad hoc network that you can connect to (on computer or smartphone) and input network info through a browser. This works really smoothly in products like koubachi. Along these lines, will it be possible for consumers of my product to link an imp to a network without having an electric imp account? It wouldn’t make sense to, say, have to sign up with an account on electric imp AND xyz company to get the device working.
We’re not planning on doing the ad-hoc thing. That’s really nasty and not smooth at all in my opinion. We’ll improve the android app, and get the iOS one approved, and work on an in-browser tool too.
How about a windows app to do the same thing? Is that more relaible?
Windows app would be reliable, but I’m afraid that’s definitely not on the menu. You can do this in a browser with a lot less hassle…
Caps lock LED?
Peter
Another interesting alternative would be the flash on phones… I just dont know if it could strobe fast enough.
Another alternative would be for the Imp to look for an open WiFi network the first time it boots up (one can be set up on the Android phone via WiFi Tethering if needed) and go to the Electric Imp servers to fetch its real WiFi config. This way people wouldn't have to mess with any apps, they would have to make sure that the first time the Imp is started it has an open WiFi network to connect to and fetch its permanent config.
The BlinkUp procedure is kind of annoying for mass deployments, especially if the Imp itself is hidden from view (or even sealed). For instance, one of the uses we envision requires the Imp to be permanently installed into an access control device that is installed outdoors - given its size we could simply put it in a blob of epoxy (or rubber) - as long as it has power and WiFi it should work fine - that however prevents any BlinkUps from happening.
Finally, another option would be to have the Imp activate a serial port on certain pins when it boots up without a configuration - so that you can hook up a serial cable (or USB to serial adapter) to it and get a command-line configuration utility, like a bootloader of sorts. Once configured, the Imp would no longer start up that serial line on boot so that it can be plugged into its impee.
Razvan
I’ve always imagined an inaccessible /sealed imp would be programmed through a user interface, such as an LCD screen on a printer. Inside the device would be an LED that’d flash at the imp with the appropriate settings.
Some notes:
Not sure how you could mass configure the cards, they would still be installed on different WiFi networks so the user must have a way to do it post-installation, correct?
I understand what you're saying about not wanting to activate any pins before configuration. Another option would be to make use of the (very nice) SD form factor of the Imp and simply make it look like an MMC card when plugged into a standard SD reader (as far as I understand, you've already prototyped something like this). Then let the user drop a file called "settings.txt" in the virtual SD card that contains the SSID and password for the network to connect to.
This should be safe (according to the FAQ, the Imp already knows if it's plugged into an SD card reader instead of an impee so it will not activate its "MMC card" persona in an impee, just when it's plugged into a regular SD reader). It already looks like an SD card, why not use that to your advantage? :).
One final note: some impees might be more than dumb devices with a few digital outputs. One of my plans (once I receive my imps) is to make it talk to a Ben NanoNote ( http://en.qi-hardware.com/wiki/Ben_NanoNote ) mini laptop. Other impees might also have a keyboard and a screen, so the user might be able to easily input the SSID and password.
Is there any update on the status of the iOS app or another non-android way to commission an imp?