#202 – An Interview With Brandon Harris – Impish Internet Iamatology



Welcome Brandon Harris of Electric Imp!

  • Hugo started the company after leaving Apple (after briefly working at Nest). He worked on an Apple stock notifier (that turns green or red depending on stock direction). The frustration around connecting XML and JSON lead to the Imp.
  • Brandon and Hugo worked together at Apple on the iPhone.
  • Around the Electric Imp offices, one of the employees made the “IoTEA”, a notification system for when the kettle is ready.
  • Electric Imp wants to be the AWS of IoT.
  • There are currently three different versions of Imp hardware:
    • IMP001 is the SD card.
    • IMP002 is the solder down device.
    • IMP003 is the lower cost, no antenna module manufactured by Murata.
  • Each of these has the Broadcom wifi chipset, the same used in iPhones.
  • The main processor is the STM32 Cortex M3.
  • The coding language for the Electric Imp is Squirrel. They started with Lua, both of which are scripting languages.
  • The application team created a freefall detection device, something you throw in the air and it connects to the internet and sends a packet before returning to your hands.
  • DHCP is the slowest step in the connection process.
  • The Imp runs eCos, they call it impOS.
  • Using the SD card you are limited to 6 pins, it can help to use an i2c expander. Bit banging has to go through the SPI port.
  • Because it is an RTOS instead of a superloop, it can be a tough adjustment for normal Arduino users.
  • The Nora reference design is a multi sensor design with qualification of the power. Quirky has a similar product called Spotter.
  • There are a wide variety of other reference designs to pull from.
  • The sleep modes sip current in different modes:
    • Deep sleep: 4-6 uA wakes on timer or interrupt
    • On with wifi off: 1-2 mA
    • On with wifi on: 5-6 mA
    • Everything on: 100 mA
  • Nora reference design has battery info/comparison. It gets roughly 60K wakes on 2 AA alkalines. Nora does 15 mins between uploads, 1 min wake for each read.
  • Wifi is TDMA.
  • BlinkUP is how you get the info into a device, it uses a phototransistor on the bottom of the SD card (or you have to add one)
  • Adam Wolf told us about how they do something similar at Wayne and Layne.
  • Brandon hopes future products will try bluetooth, cellular.
  • They tried to put their reference designs into the public domain, which wasn’t allowed. Instead they licensed with the X11 open source license.
  • All of the necessary code and drivers for the Electric Imp are on their Git Hub repo.
  • Their main competition is SparkCore; the differentiating factor is that Spark allows you to run on their servers, whereas Electric Imp helps to make the process smoother.



  1. says

    I’d love to add internet to my existing microcontroller board (rs-232)… allowing the user to control the led and display status on a web page real-time! Looking at open source TCP/IP stacks (lwip/uip, ibex, netburner) and seeing what’s involved in porting to a particular processor, network phy chip, and optionally an rtos is not trivial! Websocket programming alone is an art in and of itself!

    However, with so many “cloud” platforms
    (electricimp, spark.io, xively,nimbits, iobridge, thingspeak,pinoccio, pensense, smartthings, etc)

    and so many wifi and wired modules
    (Redpine, Wiznet, Roving Networks/Microchip (ZG2100MC, Enc28j60), TI (CC3000, RDK-S2E), lantronix (xport), THING1 Wi-Fi etc)

    that it’s hard to tell what all the differences are, or if all these address different problems.

    So In general, is the idea these modules encapsulate a web server so that all a user’s microcontroller does is push new web pages, and retrieves new data that the user has entered on a form or clicked?

    If so, once implemented are you tied to the particular platform solution forever? I.e. Could I install a CC3000 on custom board (non-arduino) and have it talk directly to a computer on the network (without using any cloud services)?

    FYI, A recent Indiegogo project (“AsiaRF”) is a complete wifi linux box, not much bigger than the size of the RJ45, for $15!

    • says

      I have been using electric imp for about 1.5 years now. One way I could summarize it is that it is a very good way for a mechanical engineer (me) to put a machine onto the internet very quickly.

      The micro does not push a web page – it does its intended function (sensors, relays, etc) and can push some data to the imp agent. Each individual imp hardware module is assigned its own tiny computer (called agent) on the imp service. This agent can serve a web page or it can (more commonly) do some minimal tasks such as preparing a JSON object to be called by your web page on your own server.

      I don’t think the imp service is so much like Apple. It is more like a service on top of which you can do anything you want. but yes you are relying on their service to be running. I liken it to my reliance on Yahoo! for mail or Dropbox for my files or Verizon to keep my cell phone running. It is not for everyone but for my applications it is an incredibly good solution. Apple locks things down way… Way more.
      (actually, Yahoo! is a bad example, it is not quite as reliable)

      One thing that came up in the podcast is context switching. I have found that switching between Javascript for the web page and then Squirrel Language for the imp agent and imp device are all very natural. The syntax is so close. If I did not have the imp service I think I would have had to learn PHP and from what I have seen that is quite different.

      The way I use imp is for some testing machines at work and for hobby projects. While at work I can shoot code over lunch to my home project. At home I can check up on my ‘work’ machines. I have not been able to break the hardware or lock it up by shooting code to it so they did an excellent job there.

      I recommend the imp002 module, rather than the other two.


  2. says

    Yes Kris, they can see ALL of your data in a creepy way. This is “cloud” after all.
    The trade-off is you give up control over your project, just like in Apple ecosystem. You become a slave of their infrastructure.

    YAY, patent for a “use case” of old technology …

    One spin of pcb is killer, but not if you overpay $15-25 per module (compared to Atheros AR9331 modules). Thats twenty smackers PER MODULE.

    Atheros AR9331 design will cost you $12 in RETAIL. You can have whole custom thingamahbob with integrated Liion battery, injection molded case and external power supply, including FCC/CE, at $20-30 retail.

    400MHz, 32MB ram, 150Mbit (imp is 1Mbit max?), full Python/perl/javascript/bash/C/whatever you want supported, zero cloud bullshit.

    It shows Electric Imp has roots in Apple. Slick, expensive and inside a walled garden.

    • says

      From your comments it looks like you have no experience doing embedded development on AR9331. I do and it is awesome, but pain in the ass at the same time. And when you hit a brick wall with some issue you have nobody to turn to for any kind of support. So it is really hard to do a start up and everything takes much longer. Company I work for would gladly pay for some commercial support for OpenWrt and AR9331 SoC but there is none that I have found so far. So when I heard what Electric Imp guys have done I was amazed, this is exactly what was missing for us! Just too bad that they don’t do open version without their cloud, because we work in medical industry and all data has to stay private by law!

  3. says

    Sorry chaps, horses for courses and all that, but this week’s AH just came over as a 90 minute plug for one product. I’m probably wrong, but it looks like lots of “bingo” buzzwords and a target of selling glossily packaged IP off to a big corporate and retiring to the Bahamas. Ah well, you can’t win em all.

    • says

      >AH just came over as a 90 minute plug for one product.
      Pretty strange plug when you have one of the hosts basically saying the product is wanky and useless for 90 minutes :-)

      • says

        I really liked this show, it was definitely one of top shows I listed to. It is really interesting to hear about interesting platforms and products like Electric Imp. I do embedded development on AR9331 system, and know the pain and the lack of support of ANY KIND for OpenWrt and AR9331, so would welcome any kind of similar experience for OpenWrt and AR9331. I’m Open Source evangelist but when you have a startup with limited budget and small team (I’m only one working on OpenWrt) you feel the pain of this lack of support. I would really like to use a platform like one that Electric Imp has, and your company would pay for the support, just if it was open and not closed cloud eco system…

    • Chris McKernan says

      I have to agree with Mike. I am glad that Dave was asking some of the simple questions that I’d love to ask directly. The winner in this game is the company that releases simple, supported, and fully open source/hardware with a background service that is funded by advertising on the back end. The important thing in the race for the IoT is the data. Having *that* data is er…will be very very valuable, far more valuable that charging the developer and/or End User a subscription for the service. I hate subscriptions, every friggin’ thing in this world requires you to pay for use… that whole model is evil evil EVIL!

  4. says

    ben says”
    >If so, once implemented are you tied to the particular platform solution forever?

    Not only that, Your company business is tied to their company forever.

    Just say it out loud:
    “For the sake of ease of implementation I will give up control over my product. My product will work ONLY when some 3rd party company’s product work. 3rd party will CONTROL fate of my product.”

    This makes sense only if you are a software company with no engineers and no time to build hardware dev team, and even then its only sane short term.

    VC valley investors must LOOOVE this business model, Imp is basically selling crack.