This document summarizes the work done by Linaro, Qualcomm, and eInfochips to enable Ubuntu Linux on the Qualcomm Snapdragon 600 processor. It discusses the Linaro Ubuntu developer releases that provide multimedia hardware acceleration. It also describes eInfochips' video conferencing solution built on these releases using Gstreamer, SIP, and a QT5-based GUI to enable low-latency audio and video calls on Snapdragon devices.
2. Ubuntu Linux on the
Qualcomm® Snapdragon™
600 Processor
Mark Charlebois, Director of Open Source SW Strategy, Qualcomm Innovation Center, Inc.
Nicolas Dechesne, Landing Team, Tech Lead, Linaro
Krunal Patil, Technical Lead, eInfochips
Qualcomm Snapdragon is a product of Qualcomm Technologies, Inc.
3. 3
Building a Community
Developer Enablement
• Mydragonboard.org
• IFC6410 from Inforce
• Linaro Ubuntu Based Developer Releases
Solutions
• eInfoChips
5. 5
Linaro Overview
Linaro is working to accelerate and improve the open source ecosystem for the
ARM architecture, helping to deliver industry leading innovation
Linaro is a collaborative software engineering company funded by members
Instead of duplicating effort for common open source software, companies
collaborate to share development costs and software is built once
The work is carried out in the open, tested and then upstreamed into the
relevant open source projects: kernel.org, AOSP …
9. 9
Problem Statement
• Android kernel and user space stack not necessarily applicable
in some broader embedded markets
• Lack of standard components support: Gstreamer, X11,
Wayland, (embedded) Qt
• One-off Linux kernel drop not helping long development and
maintenance cycle
10. 10
Improvements and Solutions
• Linux Platform releases for Snapdragon
• Multimedia and Graphics hardware acceleration for non-
Android Linux
• Linux upstream kernel.org development
12. 12
Ubuntu Based Linaro Member Build
Based on standard Ubuntu for ARM (14.04), using Gnome Shell desktop
Access to Ubuntu repositories (apt-get) and updates.
Modified packages: Linux kernel, Mesa, X11 driver, Gstreamer
H/w acceleration enabled when installing proprietary “firmware”
Always based on “current” Ubuntu version
Monthly releases, names <YY>.<MM>, latest release: 14.08
− http://www.linaro.org/downloads/
− http://releases.linaro.org/14.08/ubuntu/ifc6410/
− http://bugs.linaro.org/, against “Qualcomm LT” product
− IRC: #linaro on irc.freenode.net
13. 13
Release Content
The following pre-built images are released:
− boot image that includes prebuilt kernel and initrd
− developer image that includes Ubuntu core packages as well as typical development
packages
− gnome image that includes a minimal Gnome Shell environment GUI
All images have a pre-configured user called « linaro »
The images can be flashed on eMMC or installed any other external media such
as USB, SD card, SATA.
Support for h/w video codecs and camera is “work in progress”
Linux kernel derived from Code Aurora msm-3.4 kernel. Upgrade to 3.14 is
“work in progress”.
14. 14
Managing Proprietary Firmware Blobs
Proprietary firmware blobs are required
− GPU
− DSP
− WLAN
− Video hardware coprocessor (codec)
Need to be acquired legally from board vendor
Simple instructions to pack the firmware files into a separate image and flash
into eMMC
mkdir image && mount -o loop firmware-ifc6410-20140722-23.img image
<extract firmware files in ./image>
umount image
15. 15
Install and Run Linaro Ubuntu Images
Download the release files
Flash the boot and rootfs partition
Optionally flash the firmware partition
Ensure serial connection or USB keyboard/mouse + HDMI display
Optionally (recommended!): use external storage e.g. SSD drive in SATA
enclosure
fastboot flash boot boot-ifc6410-20140722-23.img
fastboot flash cache firmware-ifc6410-20140722-23.img
fastboot flash -S 768M userdata linaro-trusty-gnome-ifc6410-20140722-23.img
fastboot continue
22. 22
Graphics Stack
Linaro Ubuntu builds are currently based on
Open Source “freedreno” graphics driver from
freedesktop.org “mesa” project
Using Mesa 10.2.x stable releases
OpenGL 2.1
OpenGLES1.0, 2.0
Additional support to Qualcomm Technologies
proprietary driver in future releases
23. 23
Gstreamer
gst-launch-1.0 filesrc location=<file>.mov ! qtdemux !
avdec_h264 ! glimagesink
Software (CPU) video decoders
GPU rendering (rescale and color conversion)
Gstreamer
plugin with h/w video
decoder support
qcom-vidc-dec
24. 24
Developer Workflow
Ubuntu is a binary based distribution
− Installable images are released
− Target devices can be used as development host
Nobody “rebuilds” Ubuntu, images are assembled from binary packages
Each user space package or component builds independently, “natively”
Most development packages (.h files) are available in the Ubuntu archives
Linaro uses Ubuntu Launchpad PPAs
− ppa:linaro-maintainers/overlay
− ppa:linaro-maintainers/qcom-overlay
25. 25
If You Prefer “DIY”
Embedded often requires to build your own
GNU/Linux product/distro
The Yocto Project is a handy tool to create
customized images
− Initial BSP layer available for IFC6410 that brings
accelerated Xserver support
− Initial patches accepted upstream in OpenEmbedded
− https://wiki.linaro.org/Boards/IFC6410/OpenEmbedded
− https://git.linaro.org/people/nicolas.dechesne/meta-
qualcomm.git
26. 26
Linux Kernel Upstreaming
Overall goal to contribute full platform enablement in kernel.org
“linux-msm” is the growing open source community dedicated to Qualcomm Technologies’
SoC kernel upstreaming
##linux-msm on irc.freenode.net, linux-arm-msm@vger.kernel.org
Linaro maintains a “tracking” branch
− Rebased on each “-rc” kernel.org tag release
− Integrates all outstanding (public) development patches for APQ8064, APQ8074 and APQ8084
− Continuous Integration loop using Linaro LAVA framework and board farm
The “tracking” branch is a solid baseline to get started with upstream kernel development
for Qualcomm Technologies’ SoC.
On IFC6410: Wlan, Ethernet, SD, eMMC, USB, SATA, HDMI Display.
28. 28
eInfochips Solutions For Broad
Embedded Market
Product Engineering Services
Re-
engineeringSustenanceEnhancementProductionQA and
CertificationDevelopmentConcept and
Design
Application SW
BSP + System SW
Mechanicals
Hardware
29. 29
www.einfochips.com
Peer-to peer and
Multi-party Conference
Linux 3.4.0
eInfochips RTP Stack
QT5 based GUI
Sofia SIP and Freeswitch
Open Embedded
V4L2 based Video
Low latency SIP conferencing with Audio, Video and IM support
Solution Features
31. 31
System Diagram
VOIP Conferencing UI
(QT5 on EGLFS)
Video capture
module
V4L2 video capture
driver for USB
camera
Video Encode
module
Gstreamer based
video encoding
ALSA sub system
Audio Capture
module
G.711 encoding
Audio Encode
module
A-V capture-encode-stream <- - -> A-V receive-decode-display
Sofia SIP for VOIP
session mgmt
RTP Sender Module
eInfochips RTP stack
for sending A-V data
RTP Receiver
Module
eInfochips RTP stack
for sending A-V data
Video Decode
module
Gstreamer based
video decoding
Video Display
module
V4L2 video display
driver
G.711 decoding
Audio Decode
module
ALSA sub system
Audio Playback
module
Media encoding Pipeline
Media Transmission Pipeline
Media Consumption Pipeline
32. 32
Step by Step Process
• Build oe-core, bitbake and meta-qualcomm
• V4L2 video capture support
OE –
BSP layer
• Build core-image-minimal File system
• Boot the IFC6410 boardFilesystem
• Build core-image-x11 with OpenGL
X11
Support
• Build meta-qt5 layer & make it part of file
system
• Modify Qt layer to use xcb instead of
default eglfs
QT5
• Customized layer to integrate software
components Qt5, Sofia SIP, VOIP stack and
Gstreamer
• .bbappend file for qtbase custom
• voip-demo.bb for custom rootfs
• Develop VC Application
Meta-
eInfochips
• Modify QT SDK to bypass Qt-Gstreamer
plugin and directly use Gstreamer native
library APIs
• Use glimagesink to gain advantage of GPU
acceleration
Performance
Optimization