Imp Firmware not updating

I just received my imps and impees and am experiencing a few odd bugs when trying to send different firmware from the planner/code screens to my imps. Sometimes the firmware will send (LED changes colors, device reboots) but then server.log messages are not shown, sometimes the firmware is never sent, etc. If I unplug the imp and reinsert it, the correct code is run and I am able to see the server.log messages.

I tried to run the server.permanent example code and receive the following error:

Friday, September 21, 2012 14:08:42: ERROR: the index ‘permanent’ does not exist.

Due to this and the fact that the Very Slow blinking Green LED never goes out I believe the issue lies with the fact that my imps are using an old OS Release. I’ve tried running the imps with different firmware, different example code, and different impees to cause them to update but so far no luck. Can you check my firmware version (might be nice if there was an API call to do that) and provide some help?

I have this “run not working only after reinsertion” many times since firmware v5 was released so I think it’s a bug with the new flash code somewhere …

This also happens if I change the code running on my imps (change one script with another from planner) - many times the new script is downloaded only after a reinsertion.

@deldrid1: for some reason, you were not getting the new FW update. I’ve just re-queued it for you and your cards should pick it up on the next boot.

@Brown: if you PM me with your username I can check your card FW version too.

We will be adding a way for the user to display their firmware version at some point…

@Hugo: I have 3 imps - one directly from you guys and two from Sparkfun. I changed Wi-Fi networks the imps were attached to (first time they have been connected since your post). The imp directly from EI updated fine and is now working how I expect it to. However, the two from Sparkfun still won’t apply their firmware updates… Any other ideas?

Are those two imps running code that goes straight to sleep (server.sleepfor), by any chance? That currently prevents updates from “taking”.

We’re implementing a better way for people to sleep when all messages from the server have been processed, but right now you need to do this:

function gosleep() {
server.sleepfor(xxx);
}

imp.wakeup(0.1, gosleep);

…as this will let the messages (which include the “update your firmware” message) get processed before the imp goes into sleep.

They are not.

I’ve tried your code above, different default firmware on both Hannah and April, and the example codes on the devwiki but still no updates… On the imp that did update , I’m still not sure its on the latest release because the blinking green LED never goes out.

The latest update still leaves the green light on. The 60 second timeout is in the next release.

We just worked out the issue; this impee has parameters (set by your more recent firmware imp), but the release-2 firmware barfs when it’s sent them. If you delete the impee in the planner (just click it, then delete node), then reinsert the card, it should upgrade fine.

Hugo, thank you for following up with me. My two imps did finally do their update after several attempts (and I don’t remember the exact order that it did finally work unfortunately - however it wasn’t as simple as deleting the impee and reinserting on the first card. The second card that process worked fine.)

Just as a note, I understand why the imps were not updating using my most recent code on my Hannah impee but I don’t fully understand why they weren’t updating on my April board which just had the Hello World example code running on it. I’ve also tried deleting the impees from the planner, tried various different example firmware from Electric Imp, etc. and couldn’t get it to take… At least its working now! Thanks!

The issue wasn’t the firmware on the imp, it was that previously, with the later release imp, you had set a parameter on the impee, which was being send down to the imp at boot-time. The older firmware barfed on this and disconnected before it could be told to update.

I think I might be having the same issue with one of my imps. It connects to my wifi network, gets and IP, and contacts the Imp cloud (green light). However, as soon as it does this, it receives something it doesn’t like and reboots (red light). I can’t figure out what to do :frowning: Anything you guys can do on your end would be much appreciated. I’m scheduled to give and Imp demo tomorrow and would love to have something working :slight_smile:

If you switch to the default blank fw (imp.unboundsq), then unplug & replug, does it still flash red?

Your imp is on the latest fw, but doesn’t appear to be booting fully. We have had another report of this and are looking into it.

Hi Hugo,
I’m not exactly sure how to switch to the default firmware because this Imp isn’t showing up in the impees list. Thanks so much for getting back to me :slight_smile:

I had some imps doing that which were “rescued” by re-doing the Blink-up. This forces them to re-enrol with the server, which has the side effect of flushing out any stale data the server may have kept about them.

Peter

I just tried creating a new account and using Blink-up to commission the imp. Same behavior. Since the stream is encrypted, I can’t really tell what’s happening but the Imp appears to receive something it doesn’t like from the server and then throws the fast red light. @Hugo, the new account is under the username ‘abyss’.

I managed to reproduce this on another Imp. The issue is the Imp is downloading bad code. However, for some reason, the imp isn’t being listed in the interface so I never have the opportunity to change what code is running on it.