The Linaro Qualcomm Landing Team is pleased to announce the new release of the Linaro OpenEmbedded RPB release for Qualcomm™ Snapdragon® 410E processor. 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
You need to install the most recent bootloader package before using this release. Unlike the Debian based release, there is no GUI SD card installer for OpenEmbedded releases, and you need to use the SD rescue image using the latest bootloader release.
For a list of all known issues, please check our Bugzilla
The Linaro OpenEmbedde RPB version 21.12 for the Snapdragon 410E 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.
- It is based on proprietary firmware available on Qualcomm Developer Network or 96boards.org.
- 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 have a pre-configured user called
linaro, and the password for this user is set to
- 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 eMMC.
- The following features are supported on the DragonBoard 410c:
- Quad Core ARMv8 A53 CPU (@1.0GHz)
- PSCI with support for cpuidle, SMP, hotplug and restart.
- Adreno 306 GPU, powered by
freedrenoMesa/Gallium GPU driver, version 20.3.2
- OpenGL 3.1, OpenGLES 3.0, GLX, EGL
- X11 -modesetting video driver
- Cpufreq, using ondemand governor by default
- CPU thermal sensors, and thermal management using the step wise governor
- HDMI display and audio using the onboard ADV7533 MIPI/DSI Receiver with HDMI Transmitter from Analog Devices
- UART, SD, eMMC
- USB2.0 (Mouse, Keyboard, Storage, Ethernet)
- Wifi and Bluetooth using integrated WCN3620, using proprietary firmware and wcn36xx driver
- Hardware accelerated video codecs using dedicated Snapdragon coprocessor
- Onboard GPS using Qualcomm GNSS subsystem
- CSI interface with external ISP only, sample driver included for OV5640, with support for the following features:
- CSI0 and/or CSI1 on the high speed expansion connector
- streaming from the camera sensor or CSID test generator
- raw dump to memory: 8bit packed UYVY format from OV5640 and resolutions of 2592×1944, 1920×1080 or 1280×960
- format conversion from 8bit packed UYVY to NV12
- input image downscaling (up to 16x)
- input image cropping
Information about the DragonBoard 410c
For more information about the DragonBoard 410c, please check the following website and wiki:
How to install and use this release
To install this release please follow the instructions from the DragonBoard 410c installation guide. You need to use the SD recue method to install the most recent bootloader release and ensure that the board can boot in
WLAN and BT MAC addresses
There is no dedicated flash memory on the board to store persistent data such as WLAN and BT MAC addresses. A solution is being designed to store them in an eMMC partition, so that reel MAC addresses can be used across reboots. This solution will be implemented in an upcoming release. For the time being, the MAC addresses are computed in the bootloader (in LK), such that:
- they are different from each other
- they are pseudo random, but unique for each board
- they are persistent across reboot (e.g. they are always the same)
- they are set in LK and dynamically added to the device tree blob (DTB) so that they are available to the kernel
The WLAN and BT drivers will read the MAC addresses set by the bootloader into the DTB, and configure the hardware accordingly.
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 Dragonboard 410c 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>
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 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
Assuming the build went fine, the new boot image will be located in the build folder, as
tmp-rpb-glibc/deploy/images/dragonboard-410c/boot-dragonboard410c.img.You can run the following
fastboot command to boot it on the board:
sudo fastboot boot boot-dragonboard410c.img
If you want to permanently use a custom kernel image, you can update the boot image and reflash it into the
sudo fastboot flash boot boot-dragonboard410c.img
How to get and customize the bootloader
While the first stage bootloader is proprietary and released as firmware blob available on Qualcomm Developer Network or 96boards.org, the second stage bootloader is
LK and is open source. However the second stage bootloader is not built as part of the OpenEmbedded RPB build, but it can be built separately.
git: http://git.linaro.org/landing-teams/working/qualcomm/lk.git tag: dragonboard410c-LA.BR.1.2.7-03810-8x16.0-linaro3
The first stage bootloader expects the second stage bootloader to include a signature. The signature is typically used for secure boot. On Dragonboard 410c, since no private keys are available, the signature is not checked for integrity however the signature section, even if empty, must exist. To build the LK bootloader and add the signature section, you can use the following instructions:
git clone git://codeaurora.org/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8.git -b LA.BR.1.1.3.c4-01000-8x16.0 git clone http://git.linaro.org/landing-teams/working/qualcomm/lk.git -b dragonboard410c-LA.BR.1.2.7-03810-8x16.0-linaro3 git clone https://git.linaro.org/landing-teams/working/qualcomm/signlk.git cd lk make -j4 msm8916 EMMC_BOOT=1 TOOLCHAIN_PREFIX=<path to arm-eabi-4.8 tree>/bin/arm-eabi- mv ./build-msm8916/emmc_appsboot.mbn ./build-msm8916/emmc_appsboot_unsigned.mbn ../signlk/signlk.sh -i=./build-msm8916/emmc_appsboot_unsigned.mbn -o=./build-msm8916/emmc_appsboot.mbn -d
The second stage bootloader is flashed on the
aboot partition, you can now flash your board with:
sudo fastboot flash aboot ./build-msm8916/emmc_appsboot.mbn
Using the onboard GPS
The GPS software stack mostly runs on the DSP subsystem. The communication between the main CPU and the DSP is done with a specific IPC driver called QRTR (see ./net/qrtr/ in the kernel source tree). The DSP is started automatically at boot, any gpsd client can be started and will be able to retrieve GPS data.
Please note that the sensitivity of the onboard antenna is quite low, so getting a FIX will take several minutes. Please refer to the dedicated application note to install an external antenna for better GPS performance.
You first need to initialize gpsd and register the custom protocol used by Qualcomm GNSS:
systemctl start gpsd /usr/sbin/gpsdctl add pds://any
From now on, you can use any gpsd client, such as gpsmon, cgps or xgps.
Using CSI camera
For detailed information about using CSI camera, please refer to this page.
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 410c:
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, the output of
dpkg -l to list all packages installed, 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 is product of Qualcomm Technologies, Inc.