The Linaro Qualcomm Landing Team is pleased to announce the new release of the Linaro OpenEmbedded RPB release for Qualcomm™ Robotics RB5 platform. The Linaro OpenEmbedded RPB release 21.12 is based on OpenEmbedded and provides developers with a reference set of images including Xorg, Wayland/Weston as well as console only configurations.
What’s new in this release
- Minor system upgrade to dunfell 3.1.12.
- Major kernel upgrade to Linux kernel 5.15.6.
Important note(s) about this release
A firmware/bootloader upgrade is required for this release, install with the fastboot images, latest bootloader package.
LT9611UXC firmware upgrade is needed to be executed once for the HDMI display to work (see below).
The Linaro OpenEmbedde RPB version 21.12 for the Robotics RB5 platform supports the following features:
- It is based on the OpenEmbedded / Yocto Project release 3.1.12 (aka dunfell).
- It is based on Linux kernel 5.15.6.
- The following reference images are released:
bootimage that includes prebuilt kernel and initrd
rpb-console-imageimage that includes core packages as well as typical development packages (headless)
rpb-desktop-imageimage that includes a minimal desktop environment with Xorg and
rpb-weston-imageimage that includes a minimal desktop environment with Wayland and
- All images are configured with a password less root account.
- All images exist in two variants. The regular image, and a
-testimage , which includes additional packages typically useful for test and validation.
- The root file system should be flashed in the onboard UFS.
- The following features are supported on the Robotics RB5 platform:
- QRB5165 8x Kryo 585 CPU, up to 2.84 GHz (with cpufreq support)
- PSCI with support for cpuidle, SMP, hotplug and restart.
- TSENS and thermal management
- Adreno 650 GPU, powered by
freedrenoMesa/Gallium GPU driver, version 20.3.2
- Open GL ES 3.1 and Open GL 2.0
- X11 -modesetting video driver
- HDMI display
- HDMI audio using Lontium LT9611UXC.
- Storage: Onboard UFS and SD card
- USB 3.0 (Mouse, Keyboard, Storage, Ethernet)
- I2C, SPI, UART and GPIO from the LS1, LS1 and LS2 expansion connectors
- Hardware accelerated video codecs using dedicated Snapdragon coprocessor
- Bluetooth using integrated QCA6390 chip.
- WiFi 802.11 using ATH11k.
- Analog audio using WSA881x codec.
Information about the Robotics RB5
For more information about the Robotics RB5 platform, please check the following website and wiki:
How to install and use this release
To install this release please follow the instructions from the RB5 installation guide.
Download and preparation
Before starting download necessary files. This should include:
- boot image: boot-qrb5165-rb5.img
- One of rootfs images:
Gunzip downloaded files.
Make sure that you have fastboot tool installed. It can be either a part of “android-tools” package (Fedora, old Debian/Ubuntu) or a separate package (“android-tools-fastboot” or just “fastboot”, contemporary Debian/Ubuntu).
Connect host computer to RB5. It must be powered off (unplugged from power)
BOOT_CONFIG DIP switch on RB5 must be set to ‘0-0-0-0’. All switches should be in “off” position
Boot RB5 into fastboot mode.
- Hold down the “VOL-” button when connecting power supply.
- Tap the “ON/OFF” button while continuing to hold the “VOL-“ button for ~5 seconds after the blue LED lights up.
- Release “VOL-“ button
- Connect the USB3 Type C (5) between the Linux PC and the board
Board should boot into fastboot mode.
Check to make sure device is connected and in fastboot mode
$ sudo fastboot devices
Typically it will show as below
This release contains proprietary firmware. You can download the proprietary firmware separately, from here. All the required firmware files are pre-installed, and our images are bound to the Qualcomm Linux BSP license agreement. A copy of the LICENSE can be found in the image as
Linaro OpenEmbedded RPB
Linaro OpenEmbedded Reference Platform Build (RPB) is a reference implementation of an OpenEmbedded based distribution developed by Linaro. It provides examples and guidelines for users to create their own distribution based on OpenEmbedded. The reference images included in this release can be used to demonstrate and validate any of the use case that the Robotics RB5 can support. The current release is based on the OpenEmbedded Core dunfell release branch.
The following reference distributions are provided by the Linaro OpenEmbedded RPB project:
rpbis a reference OE distro that is based on Xorg graphics stack
rpb-waylandis a reference OE distro that is based on Wayland graphics stack
For more information about Linaro OpenEmbedded RPB, please check this document.
Flashing the prebuilt images
The default partition scheme, flashed by the Linaro bootloader release, has created the following partitions:
bootfor the boot image (which includes the kernel Image)
rootfsfor the main root file system image
To flash the boot image, from the host PC, run the following command:
fastboot flash boot <boot image file>
To flash the root file system image, download the image file with the extension
.img.gz and run:
$ gunzip rpb-XXX-image.rootfs.img.gz $ fastboot flash rootfs rpb-XXX-image.rootfs.img
substituting XXX with the type of the image you have selected.
The desktop image is a minimal graphical image based on the Xorg server. When booting it will automatically start an instance of Xorg server, and launch the
openbox window manager. It is recommended to use an HDMI monitor, as well as USB keyboard and mouse. A console login will also be started on the serial console.
If you have flashed the console image, when booting the board you will end up in a login prompt on the serial console. If you have an HDMI monitor connected, you will also have login terminals on the display.
The Weston image is a sample image that will start the Weston compositor using Wayland automatically on boot. It is recommended to use an HDMI monitor, as well as USB keyboard and mouse. A console login will also be started on the serial console.
Building from sources
The boot image and the root file system are completely built from sources, using OpenEmbedded build system. It is recommended to setup the build environment using the following instructions. For Qualcomm Robotics RB5 platform
qrb5165-rb5 is to be used as
MACHINE. For example you can use following commands:
$ MACHINE=qrb5165-rb5 DISTRO=rpb . setup-environment $ bitbake rpb-console-image
For more information about OpenEmbedded and the Yocto project please refer to the Yocto Project Documentation.
How to get and customize the kernel source code
To rebuild the kernel you can use the OpenEmbedded workflow and update the kernel recipe, located in the build environment in
./layers/meta-qcom/recipes-kernel/linux/linux-linaro-qcomlt_5.15.bb. To rebuild a boot image that includes your kernel changes, you can run the following
$ bitbake virtual/kernel
Assuming the build went fine, the new boot image will be located in the build folder, as
tmp-rpb-glibc/deploy/images/qrb5165-rb5/boot-qrb5165-rb5.img. You can run the following
fastboot command to boot it on the board:
$ fastboot boot boot-qrb5165-rb5.img
If you want to permanently use a custom kernel image, you can update the boot image and reflash it into the
$ fastboot flash boot boot-qrb5165-rb5.img
How to get and customize the bootloader
While the first stage bootloader is proprietary and released by the board manufacturer, Thundercom here, the second stage bootloader is
ABL and is open source.
The source code which is used in this release can be found in the Linaro Qualcomm Landing Team git repository:
git: http://git.linaro.org/landing-teams/working/qualcomm/abl.git tag: release/LU.UM.1.2.1.r1-23200-QRB5165.0
wget -qO- | tar -xf - export PATH=$(pwd)/../gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu/bin/:$PATH git clone https://source.codeaurora.org/quic/la/platform/prebuilts/clang/host/linux-x86 -b LA.UM.7.9.r1-07300-sm6150.0 clang git clone http://git.linaro.org/landing-teams/working/qualcomm/abl.git -b release/LU.UM.1.2.1.r1-23200-QRB5165.0 cd abl mkdir -p out/edk2 make all \ BOOTLOADER_OUT=out/edk2 \ BUILD_SYSTEM_ROOT_IMAGE=0 \ VERIFIED_BOOT=0 \ VERIFIED_BOOT_2=0 \ VERIFIED_BOOT_LE=0 \ USER_BUILD_VARIANT=0 \ DISABLE_PARALLEL_DOWNLOAD_FLASH=1 \ ABL_USE_SDLLVM=false \ ABL_SAFESTACK=false \ CLANG_BIN=$(pwd)/../clang/clang-4691093/bin/ \ CLANG_PREFIX="aarch64-linux-gnu-" \ TARGET_ARCHITECTURE=AARCH64 \ BOARD_BOOTLOADER_PRODUCT_NAME="SuperEDK2k"
Updating LT9611UXC firmware
LT9611UXC is a DSI-to-HDMI bridge that sits between QRB5165 and the HDMI connecter on the board. At the factory it is flashed with the firmware that works with the Qualcomm kernel, but does not work with the upstream kernel, used by Linaro release. Thus the LT9611UXC firmware needs to be updated after Linaro image has been flashed for the first time. In order to upgrade the firmware flash and boot the board, connect to it using the serial console and execute the following commands:
If the reported version is greater or equal to 43, you don’t have to uprade.
echo 1 > /sys/bus/i2c/devices/5-002b/lt9611uxc_firmware
The firmware will be updated (this process takes several minutes). After the process completes, reboot the board to get display up and running.
Optimized video pipeline
In order to exercise a fully optimized video pipeline some specific settings need to be applied throughout the pipeline elements. With the fully optimized video use case there is no extra buffer copy, and the various drivers involved are sharing all video buffers using dmabuf.
To exercise the opimized video pipeline, you can use for example the following gstreamer command:
GST_GL_PLATFORM=egl gst-launch-1.0 filesrc location=<path to file> ! qtdemux name=m m.video_0 ! h264parse ! v4l2video0dec capture-io-mode=dmabuf ! glimagesink
As of FFmpeg 3.4, support for v4l2 hardware assisted codecs was added. As a consequence, FFmpeg can now use the Venus codecs, using the v4l2 APIs. The relevant patches have been backported and are included in this release. FFmpeg is included by default in the images. Here is a sample command line that would decode a video file using hardware acceleration on Dragonboard 845c:
ffplay -sync video -autoexit -vcodec h264_v4l2m2m -i <an h264 video clip>
How to install and use the SDK release
Download rpb-x86_64-aarch64-toolchain-3.1+linaro.sh and follow the next steps,
$ chmod +x rpb-x86_64-aarch64-toolchain-3.1+linaro.sh bc. $ ./rpb-x86_64-aarch64-toolchain-3.1+linaro.sh
Select the location to install the SDK.
$ cd INSTALLED_LOCATION bc. $ source environment-setup-aarch64-linaro-linux
Then you can have access to the cross-compilers and libraries that comes with the SDK.
$ aarch64-linaro-linux-gcc -v
Feedback and Support
For general question or support request, please go to 96boards.org Community forum.
Bugs will be reviewed and prioritized by the team. For any bug report it is recommended to provide as much information as possible, and at the very list please include the name of the release you are using as well as the boot log (output of
How to contribute
We very much encourage developers to use and contribute to our releases, using the following instructions.
Qualcomm Snapdragon and Qualcomm Robotics RB5 are products of Qualcomm Technologies, Inc.