# 96Boards - Poplar

**URL:** <https://hub.mender.io/t/96boards-poplar/181>\
**Category:** Yocto Project\
**Tags:** yocto, sumo, 96boards\
**Created:** [May 20, 2019, 8:42am UTC](https://hub.mender.io/t/96boards-poplar/181 "2019-05-20T08:42:47Z")\
**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:** [May 20, 2019, 8:42am UTC](https://hub.mender.io/t/96boards-poplar/181/1 "2019-05-20T08:42:47Z")

</div>

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

# Board description

Poplar is the first development board compliant with the 96Boards Enterprise Edition TV Platform specification. Developed by HiSilicon, the board features the Hi3798C V200 with an integrated quad-core 64-bit ARM Cortex A53 processor and high performance Mali T720 GPU. Its high performance specification also supports a premium user experience with up to H.265 HEVC decoding of 4K video at 60 frames per second.

![Poplar-Board-Front-Web-500x330](https://canada1.discourse-cdn.com/flex036/uploads/mender/original/1X/fd2378d23b25a7056c7b685cd6f1af43b597430a.jpeg)

URL: [https://www.96boards.org/product/poplar/](https://www.96boards.org/product/poplar/)

# 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 |
| --- | --- | --- |
| sumo (2.5) | :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-checklist?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="sumo"

```

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

```auto
mkdir mender-poplar && cd mender-poplar

```

Initialize repo manifest:

```auto
repo init -u https://github.com/96boards/oe-rpb-manifest.git -b ${BRANCH}

```

Fetch Mender repo manifest amendment:

```auto
wget --directory-prefix .repo/manifests/ https://raw.githubusercontent.com/mendersoftware/meta-mender-community/${BRANCH}/meta-mender-96boards/scripts/manifest-96boards.xml

```

Initialize Mender repo manifest amendment:

```auto
repo init -m manifest-96boards.xml

```

Fetch layers in manifest:

```auto
repo sync

```

## Setup build environment

Initialize the build environment:

```auto
MACHINE=poplar DISTRO=rpb source setup-environment-mender

```

### 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/client-configuration/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
bitbake rpb-console-image

```

`rpb-console-image` is defined in the 96boards Reference Platform Build [layer](https://github.com/96boards/meta-rpb)

Replace `rpb-console-image` with your desired image target.

### Using the build output

After a successful build, the images and build artifacts are placed in:

- `tmp-glibc/deploy/images/poplar/rpb-console-image-poplar.sdimg.gz`
- `tmp-glibc/deploy/images/poplar/rpb-console-image-poplar.mender`

The disk image with `.sdimg.gz` 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).

### Flash instructions

Prerequisite:

- Connected to serial console (micro USB J9 connector)
- Ethernet cable connected to RJ45 (J1) on same network as PC
- [TFT server](https://help.ubuntu.com/community/TFTP) running on PC
- Copy `rpb-console-image-poplar.sdimg.gz` to your TFT server directory

Halt boot the boot procedure in U-boot on the serial console, you should now have access to the U-boot command line interface:

```auto
Hit any key to stop autoboot: 0                                                                                                            
poplar#

```

Setup TFT server and client IP address in U-boot:

```auto
setenv serverip 192.168.128.122
setenv ipaddr 192.168.128.170

```

Transfer disk image to RAM using TFTP:

```auto
tftp 0x08000000 rpb-console-image-poplar.sdimg.gz

```

Write disk image to eMMC:

```auto
gzwrite mmc 0 0x08000000 0x$filesize 100000 0

```

The write operations should take around 5 minutes, once completed power-cycle or reset the device and you should have a Mender compatible image running on your device with the Mender client.

### Recovery

If you do not have an working U-boot on your board or something goes wrong during the flashing procedure you can create recovery USB flash drive based on the these [instructions](https://github.com/96boards-poplar/Documentation/blob/master/debian/debian_recovery.md#to-allow-recovery-of-a-poplar-board-in-a-bricked-state-prepare-a-usb-flash-drive).

The `flashboot.bin` file mentioned in linked instructions is generated during a Yocto build and can be found at:

- `tmp-glibc/deploy/images/poplar/fastboot.bin`

# References

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

# Known issues

The device does not have a fixed MAC address and is “randomized” on each boot. As the default [device identity](https://github.com/mendersoftware/mender/blob/master/support/mender-device-identity) is based on the MAC address it becomes problematic when connecting to a Mender server.

* * *

_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!_
