Skip to content →

Building the firmware of Intel Edison

Hello! It’s coord.e. Today, I’ll explain the way to build the firmware of Intel Edison.

Tested Environment

  • Ubuntu 16.04
  • Using edison-src-ww25.5-15.tgz



  • Time (about one night)
  • PC working linux (Windows+cygwin or Mac might be able to build, but not tested)
  • Internet connection


Building Environment


Installing software dependencies

[shell]sudo apt-get install build-essential git diffstat gawk chrpath texinfo libtool gcc-multilib dfu-util u-boot-tools[/shell]


‘git’ will using in building, so you have to set your information if you are first at git.

[shell]git config –global ‘YOUR NAME’
git config –global ‘YOUR EMAIL ADDRESS'[/shell]



Setting up envirnment

Let’s create working folder. Now, I made folder named ‘edison’ under home directory.

cd ~
mkdir edison
cd edison

And download the file named edison-src-wwXX.X-XX.tgz1).tgz means tar.gz2)This file is used to be placed at these URL, but it changed.
。’X’ will be replaced with version string.

Please look for it well. The link is difficult to find. (Downloading will be finished soon because the size is not so large. )

I assume that it is downloaded directly under ‘edison’ folder.

First, let’s extract it.


tar xzf edison-src-wwXX.X-XX.tgz



Then, execute the script to setup the build environment. ‘–bb_number_thread’ option specifies thread number while building, ‘–parallel_make’ option specifies the number of process using at the same time. I often hear that these number had better be twice as many as CPU’s core number.3)You can check it with nproc command.

cd edison-src
./meta-intel-edison/ –bb_number_thread=8 –parallel_make=8




Let’s modify the source because there will have a lot of error.


No space left on device (ENOSPC)4)Source:

sudo sysctl -n -w fs.inotify.max_user_watches=16384



Edit: ~/edison/edison-src/out/linux64/poky/meta/conf/bitbake.conf

around line 486,

[shell]export BUILD_CPPFLAGS = ‘-isystem${STAGING_INCDIR_NATIVE}'[/shell]


[shell]export BUILD_CPPFLAGS = ‘-isystem${STAGING_INCDIR_NATIVE} -P'[/shell]

like this(add -P option)




[shell]export BUILD_CFLAGS = ‘${BUILD_CPPFLAGS} ${BUILD_OPTIMIZATION} -Wno-error'[/shell]

like this,

[shell]export BUILD_CXXFLAGS = ‘${BUILD_CFLAGS}'[/shell]


[shell]export BUILD_CXXFLAGS = ‘${BUILD_CFLAGS} -Wno-error'[/shell]

like this.(add -Wno-error option)



Edit: ~/edison/edison-src/out/linux64/poky/meta-intel-iot-middleware/recipes-connectivity/paho-mqtt/

modify around ‘SRC_URI’.

[shell]SRC_URI = ‘git://;protocol=http \
file://makefile.patch \

like this.



around line 42 at ~/edison/edison-src/out/linux64/poky/meta/recipes-core/glibc/

[shell]CFLAGS += ‘-DNOT_IN_libc=1′[/shell]


[shell]CFLAGS += ‘-DNOT_IN_libc=1 -fgnu89-inline'[/shell]

like this.

iotkit-comm(append on 2016/11/30)7)Source:

around line 140 at ~/edison/edison-src/meta-intel-edison/meta-intel-edison-distro/recipes-core/images/


#IMAGE_INSTALL += "iotkit-comm-js"
#IMAGE_INSTALL += "iotkit-comm-c-dev"


Please comment out two lines like above.



[shell]cd out/linux64
source poky/oe-init-build-env
bitbake edison-image[/shell]

Wait for a long time.


Make a flashable image




[shell]cd toFlash
sudo ./[/shell]

After executing this command, please connect to Edison with the USB cable.




References   [ + ]

1. .tgz means tar.gz
2. This file is used to be placed at these URL, but it changed.
3. You can check it with nproc command.
4. Source:
5. Source:
6. Source:
7. Source:

Published in Edison linux Y-modify YamaX Software