# Hardkernel ODROID-C2

**URL:** <https://hub.mender.io/t/hardkernel-odroid-c2/478>\
**Category:** Yocto Project\
**Tags:** yocto, thud, odroid, warrior\
**Created:** [April 13, 2019, 7:48pm UTC](https://hub.mender.io/t/hardkernel-odroid-c2/478 "2019-04-13T19:48:03Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![mirzak](https://yyz2.discourse-cdn.com/flex036/user_avatar/hub.mender.io/mirzak/32/2056_2.png) [@mirzak](https://hub.mender.io/u/mirzak)\
**Post date:** [April 13, 2019, 7:48pm UTC](https://hub.mender.io/t/hardkernel-odroid-c2/478/1 "2019-04-13T19:48:03Z")

</div>

The official [Mender documentation](https://docs.mender.io/) explains how Mender works. This is a board-specific complement to the official documentation.

# Board description

The ODROID-C2 is a 64-bit quad-core single board computer(SBC) that is one of the most cost-effective 64bit development boards available in the ARM world. It can function as a home theater set-top box, a general purpose computer for web browsing, gaming and socializing, a compact tool for college or office work, a prototyping device for hardware tinkering, a controller for home automation, a workstation for software development, and much more.

![ODROID-C2](https://canada1.discourse-cdn.com/flex036/uploads/mender/original/1X/34b6df283f20fe53922c1bf69b17782127e9bf84.jpeg)

URL: [https://www.hardkernel.com/shop/odroid-c2/](https://www.hardkernel.com/shop/odroid-c2/)  
Wiki: [https://wiki.odroid.com/odroid-c2/odroid-c2](https://wiki.odroid.com/odroid-c2/odroid-c2)

# Test results

The Yocto Project releases in the table below have been tested by the Mender community. Please update it if you have tested this integration on other [Yocto Project releases](https://wiki.yoctoproject.org/wiki/Releases?target=_blank):

| Yocto Project | Build | Runtime |
| --- | --- | --- |
| warrior (2.7) | :test_works: | :test_works: |
| thud (2.6) | :test_works: | :test_works: |

**Build** Means that the Yocto Project build using this Mender integration completes without errors and outputs images.  
**Runtime** Means that Mender has been verified to work on the board. For U-Boot-based boards, the [integration checklist](https://docs.mender.io/devices/yocto-project/bootloader-support/u-boot/integration-checklistt?target=_blank) has been verified.

# Getting started

## Prerequisites

- A supported Linux distribution and dependencies installed on your workstation/laptop as described in the [Yocto Mega Manual](https://www.yoctoproject.org/docs/current/mega-manual/mega-manual.html#detailed-supported-distros)
  - NOTE. Instructions depend on which Yocto version you intend to use.

- Google repo tool [installed](https://hub.mender.io/t/google-repo/58/2) and in your `PATH`.

## Configuring the build

### Setup Yocto environment

Set the Yocto Project branch you are building for:

```auto
# set to your branch, make sure it is supported (see table above)
export BRANCH="warrior"

```

Create a directory for your `mender-odroid` setup to live in and clone the  
meta information.

```auto
mkdir mender-odroid && cd mender-odroid

```

Initialize repo manifest:

```auto
repo init -u https://github.com/mendersoftware/meta-mender-community \
           -m meta-mender-odroid/scripts/manifest-odroid.xml \
           -b ${BRANCH}

```

Fetch layers in manifest:

```auto
repo sync

```

## Setup build environment

Initialize the build environment:

```auto
source setup-environment odroid

```

### Configure Mender server URL (optional)

This section is not required for a successful build but images that are generated by default are only suitable for usage with the Mender client in [Standalone deployments](https://docs.mender.io/architecture/standalone-deployments?target=_blank), due to lack of server configuration.

You can edit the `conf/local.conf` file to provide your Mender server configuration, ensuring the generated images and Mender Artifacts are connecting to the Mender server that you are using. There should already be a commented section in the generated `conf/local.conf` file and you can simply uncomment the relevant configuration options and assign appropriate values to them.

Build for Hosted Mender:

```auto
# To get your tenant token:
# - log in to https://hosted.mender.io
# - click your email at the top right and then "My organization"
# - press the "COPY TO CLIPBOARD"
# - assign content of clipboard to MENDER_TENANT_TOKEN
#
MENDER_SERVER_URL = "https://hosted.mender.io"
MENDER_TENANT_TOKEN = "<copy token here>"

```

Build for Mender demo server:

```auto
# https://docs.mender.io/getting-started/create-a-test-environment
#
# Update IP address to match the machine running the Mender demo server
MENDER_DEMO_HOST_IP_ADDRESS = "192.168.0.100"

```

### Building the image

You can now proceed with building an image:

```auto
MACHINE=odroid-c2 bitbake core-image-base

```

Replace `core-image-base` with your desired image target.

### Using the build output

After a successful build, the images and build artifacts are placed in `tmp/deploy/images/odroid-c2/`.

- `tmp/deploy/images/odroid-c2-base/core-image-base-odroid-c2-base.sdimg`
- `tmp/deploy/images/odroid-c2-base/core-image-base-odroid-c2-base.mender`

The disk image with `.sdimg` suffix is used to provision the device storage for devices without Mender running already. Please proceed to [the official documentation on provisioning a new device](https://docs.mender.io/artifacts/provisioning-a-new-device?target=_blank) for steps to do this.

On the other hand, if you already have Mender running on your device and want to deploy a rootfs update using this build, you should use the [Mender Artifact](https://docs.mender.io/architecture/mender-artifacts?target=_blank) files, which have `.mender` suffix. You can either deploy this Artifact in managed mode with the Mender server (upload it under Releases in the server UI) or by using the Mender client only in [Standalone deployments](https://docs.mender.io/architecture/standalone-deployments?target=_blank).

# References

- The sources of the Yocto integration can be found in [meta-mender-community/meta-mender-odroid](https://github.com/mendersoftware/meta-mender-community/tree/thud/meta-mender-odroid)

# Known issues

**NOTE!** This integration will only work for the `odroid-c2` machine, which is based on upstream Linux and U-boot. The `odroid-c2-hardkernel` machine uses Hardkernel U-boot and Linux forks, which would require additional integration work.

**NOTE!** This integration will has only been tested when booting from SD card. To boot of the eMMC additional configuration might be required.

* * *

_If this post was useful to you, please press like, or leave a thank you note to the contributor who put valuable time into this and made it available to you. It will be much appreciated!_
