Wifi Configuration Alternatives to using the App

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? 


I understand, that using the App is the most idealistic way of doing the configuration. But how would you tackle a situation where the user/installer does not have access to an iOS or Android or even any sort of Smartphone ? 

Thanks.  

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.


Really, we’re not aiming the product at people who do not have, or do not have access to, a smartphone. It’s hard to control the devices with a dumbphone when you have them connected to the internet…

How about WPS?


-Marco G.

WPS still needs to be initiated somehow, plus the user credentials need to be transferred in most cases.


The bar of having a smartphone is getting lower all the time as even in the US smartphone penetration is >50% now… but we’re looking at other options (eg browser-based).

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.  


As I said somewhere else, I just happened to win a smartphone a few days before talking to you guys about getting imps.  I have not done any work with HTML5 or JS to know the details, but say you slowed transfer time by half, would that make the constraints of programming easier?  The firmware of the imp could look for a timing handshake to know how fast the device is actually going to transfer.

-Kris

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.


But yes, we’re actively looking into it - both to enable the worse-performing android devices to hopefully work and also to maybe get it working in-browser too.

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.


I’ve also looked into WPS before but I believe it is vulnerable to a security attack. And like Hugo mentioned it still requires you to initiate the process somehow. 

Also what do you mean by getting it working in-browser? 


WPS-PIN was technically vulnerable to attack because some routers had no “bad pin delay”, so people could just brute force the PIN.


WPS on its own is secure, but you need to press a button on the router to enable WPS mode - this window then typically lasts 2 minutes.

Having it work “in browser” would mean that, as long as the imp is portable, you could hold it up to your computer screen and program the wifi credentials from within your browser.

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.


For M2M customers, they will be able to make their own “blinkup” app, which links users to their backends without each customer needing their own electric imp login.

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.


Just my crazy thought process, I guess.

Some notes:


@drazvan:
- You don’t have to blinkup in the final device. You can pre-configure cards en-masse before plugging them into the target.
- Note that if the card is not “user accessible”, then you become liable for some FCC testing, as you would in applications where you have solder-down modules.

I don’t really like activating interfaces when there’s no config as this could cause issues with certain impees, depending on how they were designed. The optical is “out of band” and hence totally safe in that regard.

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.

Programming, say, 4 or 8 at a time can be done easily with a fixture (imagine stacked aprils sharing power) and a single iOS/Android device. This is quick and would be a very small part of installation time for any devices.

Yes, MMC mode is supportable with the hardware, but is not supported by any current firmware. It's possible this could be implemented in the future, but I don't believe this is any easier than the optical solution, given reliable iOS and Android apps and possibly a browser-based tool.

There's a lot of talk about other configuration approaches, but IMO this is mainly because people either have iOS devices or Androids that drop frames; if their first attempts had worked - and we absolutely are going to make this be the case - then I don't believe it'd be an issue for most people.

Is there any update on the status of the iOS app or another non-android way to commission an imp?