Skip to content

Most visited

Recently visited


Intel® Joule™

Intel® Joule™, Intel’s highest-performing system-on-module, packs powerful compute capabilities in a thumb-sized, low-power package. The Intel® Joule™ 550x/570x developer kit enables developers to rapidly prototype all manner of autonomous robots and IoT applications requiring computer vision or edge processing.


Flashing the image

Before you begin flashing, you will need the following items in addition to your Joule board:

To flash Android Things onto your Joule, download the latest preview image and follow these steps:

Step 1: Upgrade the BIOS

The following one-time procedure is required if your board does not already have BIOS version 183 or later.

  1. Download the BIOS version 183 from Intel.
  2. Follow Intel's instructions for Flashing the BIOS on Joule. Your board must have BIOS version 183 or later installed before you can continue.

Step 2: Install Fastboot

The following one-time procedure is required the first time you power on a new Joule module to install a bootloader with Fastboot support:

  1. Update the Android SDK Platform Tools to version 25.0.3 or later from the SDK Manager.

    • Verify that the fastboot binary is installed in the platform-tools/ directory of your Android SDK.
    • After you have the fastboot tool, add it to your PATH environment variable.
  2. Insert the microSD card supplied with your Joule into your host computer.

  3. Unzip the downloaded Android Things image archive on your host computer. Navigate to the unzipped image file.
  4. Use the following instructions to write fastboot-disk.img onto your microSD card:

    • Linux: Use dmesg to discover the disk name (e.g. sdX or mmcblkX), followed by dd write the image to the disk:

      $ dmesg
      [...] sd 9:0:0:0: [sda] Attached SCSI removable disk
      $ dd if=fastboot-disk.img of=/dev/sda bs=4M
    • Mac: Use diskutil list to discover the disk name (e.g. diskX), followed by dd to write the image to the disk:

      $ diskutil list
      /dev/disk0 (internal, physical):
      /dev/disk1 (internal, virtual):
      /dev/disk2 (external, physical):
      $ dd if=fastboot-disk.img of=/dev/disk2 bs=4m
    • Windows: Download and install Win32 Disk Imager. Select fastboot-disk.img and the drive letter of your microSD card, then click Write.

  5. Unmount and safely eject the microSD card volume.

  6. Insert the microSD card into the Joule and connect the board to your host computer as shown below:


    1. Connect a 12V adapter to the power input connector.
    2. Connect a USB-C cable from your host computer for USB OTG.
    3. Connect a Micro-HDMI cable to an external display.
    4. Optionally, connect a USB keyboard for BIOS setup.
  7. After BIOS setup, the board boots automatically into Fastboot mode. Run the following command to verify that the device has booted into Fastboot correctly:

    $ fastboot devices
    jouleA00C508900408C fastboot

Step 3: Flash Android Things

Once you have loaded the proper bootloader on your device, use the following steps to flash the Android image:

  1. Open a command line terminal and navigate to the unzipped image directory.
  2. If your device is not already in Fastboot mode, use the adb tool to activate it:

    $ adb reboot bootloader
  3. Verify that the device has booted into Fastboot mode by executing the following:

    $ fastboot devices
    jouleA00C508900408C fastboot
  4. Execute the following fastboot commands to install the operating system image:

    $ fastboot \
        flash gpt partition-table.img \
        flash bootloader bootloader \
        erase misc \
        reboot bootloader
    $ fastboot \
        flash gpt partition-table.img \
        flash oemvars oemvars.txt \
        flash bootloader bootloader \
        flash boot_a boot.img \
        flash boot_b boot.img \
        flash system_a system.img \
        flash system_b system.img \
        flash userdata userdata.img \
        flash gapps_a gapps.img \
        flash gapps_b gapps.img \
        erase misc \
        set_active _a \
  5. To verify that Android is running on the device, discover it using the adb tool:

    $ adb devices
    List of devices attached
    jouleA00C508900408C device

Connecting Wi-Fi

After flashing your board, it is strongly recommended to connect it to the internet. This allows your device to deliver crash reports and receive updates.

Before connecting your board to a Wi-Fi network, ensure the provided antennas are attached to the u.FL Wi-Fi connectors on your board as shown:


To connect your board to Wi-Fi using adb:

  1. Send an intent to the Wi-Fi service that includes the SSID and passcode of your local network:

    $ adb shell am startservice \
        -n \
        -a WifiSetupService.Connect \
        -e ssid <Network_SSID> \
        -e passphrase <Network_Passcode>
  2. Verify that the connection was successful through logcat:

    $ adb logcat -d | grep Wifi
    V WifiWatcher: Network state changed to CONNECTED
    V WifiWatcher: SSID changed: ...
    I WifiConfigurator: Successfully connected to ...
  3. Test that you can access a remote IP address:

    $ adb shell ping
    PING ( 56(84) bytes of data.
    64 bytes from icmp_seq=1 ttl=57 time=6.67 ms
    64 bytes from icmp_seq=2 ttl=57 time=55.5 ms
    64 bytes from icmp_seq=3 ttl=57 time=23.0 ms
    64 bytes from icmp_seq=4 ttl=57 time=245 ms

If you want to clear all of the saved networks on the board:

$ adb shell am startservice \
    -n \
    -a WifiSetupService.Reset

Serial debug console

The serial console is a helpful tool for debugging your board and reviewing system log information. The console is the default output location for kernel log messages (i.e. dmesg), and it also provides access to a full shell prompt that you can use to access commands such as logcat. This is helpful if you are unable to access ADB on your board through other means and have not yet enabled a network connection.

To access the serial console, connect a micro USB cable to the board as shown below.


Open a connection to the USB serial device on your development computer using a terminal program, such as PuTTY (Windows), Serial (Mac OS), or Minicom (Linux). The serial port parameters for the console are as follows:

This site uses cookies to store your preferences for site-specific language and display options.


This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a one-minute survey?
Help us improve Android tools and documentation.