Hands On With The Intel Edison

Yesterday the tech world resounded with the astonishing news that Apple can’t run a CMS, rotary encoders were invented just for the Apple Watch, and Intel’s Developer Forum was scheduled well in advance of the Apple media circus. Intel’s smallest computer yet, the Edison, was also announced. Very few people without an Intel employee badge have one of these cool little devices, and lucky for us one of them put up a hands-on review.

With a lot of comments asking what the Edison is good for, [Dimitri] tells us the Edison isn’t meant to be only a dev board. A better comparison would be something like the Raspberry Pi compute module – a small board that product designers can build a device around. This, of course, is not news and should come as a surprise to no one. The 70-pin connector used in the Edison isn’t rated for high-frequency insertions, anyway.

Stock up on level shifters

Compared to even a Raspberry Pi, or even an Arduino Mega, the Arduino breakout board for the Edison is huge. The reason for this is a huge number of level shifters. Where Arduinos can chug right along at 3.3V and 5V, and a Pi uses the somewhat more uncommon (at least for the hobbyist market) 3.3V logic, most of the Edison runs at 1.8V.  All the user-configurable pins on the smaller breakout are 1.8V logic. Someone reading this will fry their Edison, so don’t say we didn’t warn you.

Performance

[Dimitri] was keen to get an idea of how powerful the Edison is. There’s a pretty good chip in there – an Atom Z34XX – that’s underclocked at 500MHz. Still, despite this apparent performance limitation, a few benchmarks reveal the Edison can work at up to 615 MIPS. That’s about twice the performance of the Raspberry Pi B+, and real-world tests of doing FFT along with OpenCV tracking makes [Dimitri] happy. Power consumption? At a medium load, the Edison draws about 200 mA. A lot of number crunching and blasting bits out of the radios increases that to a maximum of 500 mA. Not exactly low power, but very good in terms of performance per Watt.

Wireless

There are two radios on the Edison, one for Bluetooth Low Energy, and another for a/b/g/n WiFi (yes, it supports access mode). The on-chip antenna is acceptable, but for sending signals to the conference room down the hall, you might want to connect an external antenna.

Linux, Programming, and Arduino

Linux on the Edison isn’t a friendly Debian-derived installation like the Raspberry Pi. Instead, Intel is using Yocto, specifically designed for embedded environments. It’s not quite a distribution but instead a build system. There is no apt-get. Right now, this might be seen as a limitation, but enterprising kernel wizards have ported Debian to the Intel Galileo. Full Linux support is coming, but probably not (officially) from Intel.

Edison launched with an Arduino breakout board, but the Arduino compatibility is literally only a facade. Intel reengineered the Arduino IDE so it writes files instead of toggling pins. This means any programming language that can write a file is able to blink a LED with an Edison. It’s only a matter of preference, but if your idea of embedded development is a single chip and a C compiler, you’re better off using an ATMega and a UART.

Closing thoughts

This isn’t a Raspi killer, a Beaglebone killer, a TI CC3200 killer, or an ESP8266 killer. It’s an x86 board, with WiFi, Bluetooth and Linux that can toggle a few pins. It’s something different. Different is good. That means there are more choices.

73 thoughts on “Hands On With The Intel Edison

    1. Uh, yea, someone needs to be an a-hole about the crApple stuff. They don’t listen to “nice” requests from their user base, which tend to be seriously opinionated (ie: a-holes) themselves. Kind of like Volvo owners.

      1. While the Z34 processor has on-board graphics, there’s no access to the LCD/DVI/HDMI signals on the connector.

        The eMMC interface is going to make running a full distro very slow. The Edison is not a laptop computer on a chip — it is very much still an embedded Linux solution.

        1. I don’t think this will be the actual bottleneck. 100MB/s (read, write usually less than 50MB/s) eMMC chips are not uncommon. There are also some manufacturers that claim up to 300MB/s (read), although I haven’t yet worked with those chips. Of course, the SDIO interface on the SOC must also support those high rates.

      1. files are not the only things that are served. sensor readings come from servers, too.

        If all your code fits in RAM then it doesn’t matter how fast the secondary storage is.

        For me the excitement is running real node.js with a real network stack on small hardware. javascript is not my first choice of language but the google V8 implementation in node.js has incredible performance. I’d like to see 64-bit linux running on this hardware. x86_64 has a lot of performance advantages over x86.

  1. Stop poo-pooing Yocto — it’s precisely what you want to run on an embedded Linux board, and that’s why it’s used almost exclusively by people who actually do embedded Linux development for a living.

    If you’re SSHing into your embedded Linux board to compile code and manage packages for it, you’re doing it wrong. You should be using Yocto.

    For those unaware, Yocto is designed to cross-compile embedded Linux systems in a highly automated fashion. Everything is built from source, with good lifecycle/version management, and great support for custom patches, which I tend to have to deal with a lot more when I’m doing embedded Linux work versus desktop development.

    Embedded development in Linux relies on a lot of low-level work, and many device drivers aren’t yet available in Linux Mainline. That’s where Yocto really shines: it understands and manages DTS files and can build out-of-tree drivers in an automatic fashion. Yocto will automagically build an SDK for your app development tasks, too, which comes in handy since it’s unlikely your desktop Linux distro will be using the same libraries that your embedded board has.

  2. I’m really happy to see they’re going with the Yocto build system. I think once folks try it and get the hang of it, they’ll be very happy with it.

    One doesn’t generally create super general purpose images with it, such as the rpi Debian-based distro. The idea (especially when developing products) is generally to keep images lean and only what you need for your particular application. This is actually my preferred route with the Raspberry Pi and the Wandboard, as I prefer to develop on a host machine, simulate interfaces when possible, cross compile, and then debug via gdbserver/kdb once I’m confident in things running well.

    From my experience, the Yocto and OpenEmbedded communities are great. There’s some* very good documentation, and I’ve found the mailing list and IRC channels to always be friendly and helpful.

    So with all that said, I’d encourage folks to try to avoid a knee-jerk “Ugh, no prebuilt linux distro!” exclamation and instead explore things like Yocto and the Arago Project with the embedded platforms they already know and love. (Check out meta-raspberrypi!) You’ll quickly see that you can quickly put together images with all your favorite programs and tools in a way that can actually target multiple platforms and architectures!

    With respect to the “no apt-get” comment — bear in mind that Yocto is capable of generating rpms, debs, and ipks. You can enable package management on your images and create your own upstream package source.

    And no, I’m not an Intel employee — just an embedded engineer who thinks the Yocto and OpenEmbedded folks have been doing a great job, and was a little bummed to see Yocto mentioned in a negative way.

    I’d like to see more folks get into it, as it does force you to learn some cool stuff. I guess I’ll just have to get my hands on one of these things and write up some articles to share with fellow HackADay’ers!

    1. 100% this. I didn’t mean to sound negative about Yocto. Yocto and especially OpenEmbedded are great communities.

      It’s all about the audience. A lot of people thought Edison would be an RPi competitor and strong in the educational/maker space. A build system is a little intense for this. I’ve talked several people through the Yocto “getting the hang of it” phase, and it can be pretty painful at first. It makes perfect sense to use Yocto for these types of platforms, though multiple Linux options at the start would have been even better :)

    2. 100% this. I didn’t mean to sound negative about Yocto. Yocto and especially OpenEmbedded are indeed great communities.

      It’s all about the audience. A lot of people thought Edison would be an RPi competitor and strong in the educational/maker space. A build system is a little intense for this. I’ve talked several people through the Yocto “getting the hang of it” phase, and it can be pretty painful at first. It makes perfect sense to use Yocto for these types of platforms, though multiple Linux distros at the start would have been even better :)

  3. I could see a reason to run Windows. Older Windows like 3.1 and 98 were decent for the time, could be used to run old hardware that can’t be used with later Windows, and play old games. King’s Quest for example runs with corrupt graphic under various DOS emulation like DOSBox, I’d need something that is pre-XP OS to run older games.

    Sure beats keeping a full sized x86 desktop or aging laptop with failing caps, worn out keyboard, and corroded parts.

      1. Actually, you likely can run Windows on this. Windows Embedded is available for the Galileo which is a predecessor to the Edison. It apparently gives you access to the Win32 API. However, there are no graphics connections exposed and it is the NT Kernel, so King’s Quest is still out. However, it is highly likely that Win32 based applications are a distinct possibility.

        Read more about Windows on Devices here: http://dev.windows.com/en-us/featured/Windows-Developer-Program-for-IoT

        1. I don’t see any SPI Flash chip on the design which would hold the EFI BIOS — all it has is eMMC (think SD card, in chip form). Consequently, I’m pretty sure you’re stuck with U-Boot. I don’t think Windows Embedded can boot itself on bare metal (without an EFI or legacy BIOS) — though Windows Compact obviously has a bare-metal booter which would live on the eMMC.

          I wonder what it would take to write a Windows Compact BSP for it, and what the key advantages of Windows Compact would be over Linux?

      2. Write a booter that loads a BIOS into the proper memory space. For Windows 95 and later the BIOS is only used for hardware init and starting the boot process. From there it’s ignored by Windows. Some video cards, instead of flashing BIOS updates, used a boot loader to put an image into RAM.

        Many motherboards in the early 90’s had options in BIOS setup to load the BIOS into RAM and same for video and other peripheral firmware. Worked great for DOS and Win 3.x to speed things up, but a pretty useless feature for Windows 95 – unless you didn’t have 32bit drivers. Yup, for some types of hardware Win95 could use old Win3.1 16 bit drivers. I had an inkjet printer years ago that I couldn’t find 95 drivers for, then I discovered that 95’s printer support was still somewhat based on 3.1x and 16 bit drivers could be “forced in” and would usually work.

    1. @Genki “could be used to run old hardware that can’t be used with later Windows”
      In case you weren’t aware, you can use DOSBox to run old Dos games. It emulates an entire DOS environment, OS and all. You can even install Windows 3.1 inside of it.

      I’m all for goofing around with old OSs on real hardware, I’ve just found some people aren’t aware of alternatives.

  4. Maybe I’m odd, but it seems like Intel is really missing their best possible audience. Rather than making (another) something that has an x86 processor, but doesn’t even have video out handy, why not make a tiny board that would actually run a proper desktop OS? And, more to my point, why not make something credit card-sized that will run something like Windows XP?

    Why would you want a tiny computer to run Windows? Why not just use a RasPi? Because unlike the vast majority of my peers, I hate dealing with writing and compiling code for Linux. You take a program written and compiled for 32-bit Windows, and you can run it on most every computer out there today. Honestly, it’s at the point where I’d rather forego the RasPi entirely and deal with the fact that a cheap Windows computer is going to be slightly more cumbersome, even if it’s many, many times more practical for just about any project I have in the works.

    So if anyone from Intel is reading this, please, PLEASE, stop with these little hobby things, stop with the Arduino form factor, stop with all of that bandwagon nonsense, and just give us something that will run WinXP with HDMI out and a few USB ports. Maybe a SATA port and an Ethernet port, if you’re really feeling nice.

      1. Oh, oops. Based on what I said, you’re entirely right. What I neglected to mention is that I don’t want to have to pay $130 + S&H (which is $12 from Amazon, with no option for free shipping). I want to pay $50 (plus a reasonable S&H charge). I’m being demanding, I know, but I’m fortunate enough to live in a city where you can buy a computer that will do exactly what I need for $30, and it’ll be considerably more powerful, as well. The downside is that it’ll be desktop size instead of considerably smaller.

        In other words, I want to spend like $20-$30 for the convenience of being able to save desk space. Considering that I want to put these things into theatre lighting controllers, booth space is kind of a premium, so it’s worth the extra bit of money to not have to set up a desktop. It’s just not worth in excess of $100.

        1. What you’re looking for is a Vortex86Exm-based module. Something like the 86Duino.

          But to expect Intel to support running a 12-year-old decommissioned operating system on its cutting-edge IoT platform is ridiculous.

          And while I’d love to see LCD signals brought out, HDMI is unnecessary and bulky (think about it — the connector alone would basically add 50% size to this board). If you think you need HDMI for an IoT application, then it’s probably not really an IoT application, and you’d be better off with other, existing hardware.

          1. Micro HDMI connector is the same size as micro usb connector. HDMI carries 5.1 audio signal so you get a lot of function from a tiny connector.

            “LCD signals” are NOT HDMI, they are usually some sort of parallel interface.

            The ability to plug in a generic LCD panel is pretty nice. You can add a lovely “status display” to your embedded system so you don’t have to log into it to see how the beer is brewing or how much solar power you are using.

          2. The ability to add a generic LCD panel (which is going to have a parallel RGBHV interface) is precisely why I said I’d love to see LCD signals brought out, and precisely why I said HDMI is unnecessary and bulky.

          3. @Jay You mention IoT… I thought I was pretty clear that I want them to make something NOT targeted at that sort of audience. I want a cheap, small single-board computer that conforms to the IBM-compatible standard that every single desktop and laptop based on an x86 or x86-64 processor conforms to. It could be the size of the RasPi, or even a bit larger, as long as it has an x86 processor in it.

            And the reason I targeted WinXP is that it’s capable of running well on an Atom processor. Though, I get the feeling that if I’d said Win7, you’d have given me flack for expecting fairly high performance out of something like this. So, really, when I said WinXP, I meant that I want it to have a standard sort of BIOS, and have things located in memory just as they are on any normal x86 computer, so that I could put WinXP on it myself.

    1. What you’re looking for in a word is called WINE. I’ve used it. It makes EXEs run on Linux — and it does that very well. Head over to WineHQ’s AppDB to make sure your chosen program(s) work, but probably they do.

      Also, last I checked, MS killed XP dead as a stone. A pity, but it’s done. Win7 is the new XP. Get used to it and love it, until the next one comes out… that’s how they do things in MS-land.

      I use Puppy Linux. Full time. I love it dearly. It’s noticeably faster than XP *and* W7 on comparable hardware, does great things, and although it’s a little different from what you’re used to when you hear “Linux” (I won’t spout a lecture), it’s certainly worth a look. If you can get used to how we do things, you’ll quite likely enjoy it.

      I’d be interested to try and boot Puppy on the Edison, if I can get video out. Either I’m half illiterate or the article’s not clear (could be either one :P ) — is there a video output on that carrier board I see there? …or is that just a second MicroUSB port?

      1. Just looked myself. No video output.

        SPI is there though. Didn’t someone recently get on the HaD Front Page for a cheap SPI-driven VGA adapter? I think it used a CPLD and not a full FPGA… don’t remember the name off-hand :(

          1. You certainly weren’t running a 1024×768 LCD at 30 fps over 10Base-T, so I don’t understand the relevance of your comment. My response was to starhawk’s wanting to run a desktop distro (requiring desktop resolution). I don’t think many people would disagree with me when I say that SPI isn’t very useful past 320×240.

          2. Actual VGA boards were basically “dumb” peripherals: some memory, a few DACs, and some timing hardware. You should be able to pull off everything but the DACs and memory in either a CPLD or a cheap FPGA. Then you could add a PIC32 at 80MHz (or better) to act as a GPU: for that matter, some of the PIC32MX chips apparently have graphics hardware for LCDs builtin. The first one I clicked on at DigiKey was $6.11 (admittedly probably for several). Probably not enough to play Quake 9000 and 1/2, but starhawk merely mentioned Puppy Linux: there’s presumably a low-resource version of the desktop as a configuration option. There were graphics before PCIe, and there were IBM PC GPU cards before the PCI bus itself ( http://en.wikipedia.org/wiki/Professional_Graphics_Controller , which presumably maxed out at 10MHz GPU, and I half-recall at least one other too).

            For reference, this guy: ( http://blog.flyingpic24.com/2014/04/06/progress-on-pic32mx-video-player-performance/ ) apparently got a 30fps AVI player working with a similar part. This is doable, and somewhat cheaply. If you were willing to outsource the video display to other chips, then you could do all sorts of neat stuff (e.g. mix “bar code” images into the stream so that you could use them to track an old-style light pen, even when you have display lag).

            So, graphics: possible, if you’re willing to build an amateur graphics card.

      2. As has been mentioned in previous comments, there is no video out. You won’t be able to boot Puppy Linux (or any other Linux designed for PCs) because this board doesn’t have a BIOS. You’ll have to use U-Boot to boot Linux, which will require an extra step to get working.

        1. This is 100% wrong, you can boot up ubuntu or centos or fedora on systems with no video card, just a serial port console. Fedora doesn’t have a text based installer, so the text installer will set up networking and a VNC connection to run the installer. I’ve done this many times on soekris boards.

          1. If you’d actually read my comment, the second sentence reads: “You won’t be able to boot Puppy Linux … because this board doesn’t have a BIOS. You’ll have to use U-Boot to boot Linux, which will require an extra step to get working.”

            Nowhere did I insinuate that you had to have a video card to boot Linux. The first sentence of my comment, however, was answering the OP’s question about whether there was a video out.

      3. I used to be quite familiar with WINE, though I haven’t used it in the last few years. And you’re right, it would the problem (theoretically, at least, and barring any sort of weird complications that some specialty programs have had with WINE). So if we could ever get video out working (which I suspect is only needing a USB dongle and some drivers), that would be a potential solution.

        And I’m aware that Microsoft axed WinXP a while ago, but that doesn’t mean that all out installation DVDs suddenly stop working, right? I don’t need continued support or updates against threats or anything like that. The computer would be on a small network, isolated from the Internet, where there would only be one computer and maybe a smartphone, both using VNC for remote control, so we can change the lights from outside the booth. It would also be disconnected from the network except for times when we’re adjusting the values for the lights outside of the booth.

        So until I can get my wish (or maybe just tear apart some old netbooks…), I’ll look into WINE and see if maybe I can’t get that working. God knows that writing drivers is easier on Linux…

    2. Personally, I think we should all hope that the next version of this board includes a cross-over or cross-bar switch to allow any of the processor signal pins to be run out to the connector (except for a debug connection, of course, since that should be hardwired into place). An “Intel Evangelist” (I guess he’s on the payroll) popped into the last post’s discussion and basically implied that the PCIe wasn’t run to the connector, and jaydcarlson pointed out some unconnected video stuff above. If they run most of the chip & connector lines through some sort of matrix switch next time, they’ll be able to hit virtually every market segment that the processor itself could hit, all for the cost of one chip, and a single data connection.

      1. Or just use a bigger connector and ditch some of the GPIO. I’m a little disappointed so many pins were designated for GPIO-only duties, since I’ve never seen a product that needed more than 5 or 6 GPIO (LCD backlight control, USB regulator power, a couple hardware switches, and a couple LEDs).

        GPIO is so easy to add via i2C (much easier to add than a display controller!), and that solution has the added benefit of allowing different logic levels to be used by simply changing the power rail of the port expander IC.

        I generally like Intel’s thinking with this board — but I agree there needs to be some tweaking to really make it a killer product. Adding a 24-bit RGBHV interface would allow directly-driving a wide variety of cheap TFT panels. A DVI/HDMI expansion board could easily be built by routing that RGBHV interface into a low-cost DVI transmitter IC.

        PCIe is also a no-brainer. That Hirose connector is totally within spec for PCI-Express, and it’s not like a ton of extra signals are required to support a x1 lane.

        1. I suspect that Intel wants it as small as possible, which would potentially mean no expansion to the connector. Personally, I probably would have labelled the PCIe as a must-have (if I was designing the board, mind you: for my own uses, it would probably be pointless), along with at least 1 I2C and 1 SPI (for expansion), with everything else filled out as it seems appropriate, but depending on the number of outputs (I actually haven’t looked at the chip specs, since I won’t be buying one any time soon) you can very quickly find my suggestion to be appropriate: a robot arm or advanced drone is more likely to need the GPIOs, while a custom tablet is going to want the PCIe, and few things will want everything.

      1. I was quite surprised that PCIe was missing in the list of busses. Any idea if this will be availble on any variants or higher end versions (or if I’m just totally wrong)? Having PCIe was definitely one thing that drew me to some Freescale i.MX and TI OMAP parts…

        1. Gah…strike that — this FAQ seems to indicate it has PCIe support, but I don’t see it mentioned much elsewhere initially.

          If that’s the case, I would expect one could build a module with a single-chip 10/100 or perhaps even a gigabit controller?

          Just tossing out ideas here though… still need to spend some time with the docs.

          1. While extremely poorly-worded (and missing the “not” keyword), I would interpret the FAQ answer as: “No. It does [not] have I/O features found on Desktop Boards or laptops … such as full USB host and PCI express capability.”

      2. ENC28J60 is SPI 10 Mbit ethernet, you can get modules on ebay for $3 or so. There are linux drivers for this chip out there. Microchip also has a 100 MBit SPI ethernet chip but it’s not so easy to get a module for it and I haven’t seen much software for it.

        1. That ENC424/624J600 isn’t going to give you more performance over the ENC28J60 if you insists on using the SPI. Its SPI is limited to 14Mbps for some stupid reasons, so the SPI will be the bottle neck. (vs 20Mbps for the ENC28J60 where the Ethernet I/F is the bottleneck)

    1. Only slightly faster when in Linux/Arduino land. An RTOS running on the Quark is poised to fix this issue ‘the right way,’ although I have no idea when that feature will be ready. Sometime soon?

    2. If you’re bit-banging GPIO pins from Linux with any hope of speed, you’re doing it wrong. Most boards that require a protocol to be bit-banged will use a $0.60 MCU with an i2C interface, and send it commands from the Linux application processor.

  5. I’m still new to electronics and programming them. But could I essentially use this to build something akin to a mame cabinet with my old video games? Things from the days of 386/486 computing like Commander Keen, Gunship 2000, etc without them moving at a billion miles a second…

  6. Intel Edison as an IOT solution???

    I believe Intel misjudged or even worse insulted the Arduino community by suggesting that the Edison is a viable IOT platform. Yes it has just about everything you would ever need and much more and this is where the problem lies. It was designed for mobile platforms and has the power needed to make smart phones or tablets that can run and store many applications. The Edison is way overkill for 99%+ of IOT solutions. The $50 price on the surface does not seem too bad but they say this will be the price at any volume; you might as well just write a check to Intel now and give them all your profits.

    Good design practice or for that matter good business practice is that a system should have only the resources it needs plus some reasonable room for future expansion of capabilities.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.