NameLast modifiedSizeLicense

Parent Directory Parent Directory
text README.txt 28-Jul-2014 10:42 295 open
other boot-ifc6410-20140722-23.img.gz 28-Jul-2014 10:41 7.5M open
other bootimg.cfg 28-Jul-2014 10:41 240 open
other firmware-ifc6410-20140722-23.img.gz 28-Jul-2014 10:41 64.0K open
other initrd.img-3.4.0-linaro-ifc6410 28-Jul-2014 10:41 2.3M open
other kernel_config_ifc6410 28-Jul-2014 10:41 96.7K open
other linaro-trusty-developer-ifc6410-20140722-23.img.gz 28-Jul-2014 10:41 164.6M open
other linaro-trusty-gnome-ifc6410-20140722-23.img.gz 28-Jul-2014 10:42 413.7M open
application/x-debian-package linux-headers-3.4.0-linaro-ifc6410_3.4.0-linaro-ifc6410-2_armhf.deb 28-Jul-2014 10:42 6.5M open
application/x-debian-package linux-image-3.4.0-linaro-ifc6410-dbg_3.4.0-linaro-ifc6410-2_armhf.deb 28-Jul-2014 10:42 31.1M open
application/x-debian-package linux-image-3.4.0-linaro-ifc6410_3.4.0-linaro-ifc6410-2_armhf.deb 28-Jul-2014 10:42 5.7M open
application/x-debian-package linux-libc-dev_3.4.0-linaro-ifc6410-2_armhf.deb 28-Jul-2014 10:42 721.7K open
other zImage_ifc6410 28-Jul-2014 10:42 5.2M open


The Linaro Qualcomm Landing Team is pleased to announce the new release of the Snapdragon 600 Linux Platform for Inforce IFC6410. The Snapdragon 600 Linux Platform 14.07 release is an Ubuntu-based Linaro Member Build that provides a desktop like environment using Ubuntu and the Gnome desktop.

What’s new in this release

  • The v3.4 Linux kernel is based off Inforce BSP v2.0.
  • The interactive cpufreq governor is no longer used by default, and ondemand cpufreq governor is used instead.
  • Gstreamer components have been upgraded to v1.4, the core Gstreamer packages are installed in the desktop image by default, and non essential packages are available in the Linaro Qualcomm overlay PPA.
  • A C sample test application is provided to use the video hardware decoder (VIDC), with support for MPEG4 and H264, for more information, read the section below called “Multimedia use cases”.
  • A new bug tracking system has been put in place for all Linaro projects, all issues with this release should now be reported using the Linaro bug tracking system. More information at the end of the release notes.
  • Bug fixed:
    • gstreamer1.0-libav was missing from the image

Features

The following features are currently supported by the 14.07 version of the Snapdragon 600 Linux Platform for Inforce IFC6410:

  • Provides a working Ubuntu environment with access to Ubuntu repositories (apt-get) and updates. It is based on Ubuntu 14.04 (aka trusty).
  • It is based on Linux Kernel v3.4 from Code Aurora Forum, and proprietary firmware from Inforce IFC6410 Android BSP Rel v1.5.
  • The following prebuilt 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, and the password for this user is set to linaro
  • The root file system can be installed on eMMC or any other external media such as USB, SD card, SATA.
  • The following board features are supported:
    • Quad Core Krait 300 1.7GHz CPU
    • Adreno 320 GPU, powered by freedreno GPU driver
      • OpenGL 2.1
      • Mesa 10.2.1
      • xf86-video-freedreno driver v1.1.0, with XA support enabled
    • Cpufreq
    • Initial, very conservative in-kernel thermal management
    • Audio playback (analog, digital)
    • HDMI display
    • UART, Ethernet, SD, eMMC, SATA
    • USB2.0 (Mouse, Keyboard, Storage)
    • Wifi using QCA6234x, using a backport of the Atheros ath6kl driver, instead of using compat-wireless

Information about the IFC6410 board

For more information about Linaro’s Snapdragon 600 Linux Platform Build and the Inforce IFC6410 board, please check the Linaro wiki. This wiki page provides additional information on board setup and getting started with Ubuntu on the IFC6410 (e.g. customize the kernel, rebuild the images, ...).

Download the release binaries

To install the release on the IFC6410 Board, you need to download the following files:

boot-ifc6410-20140722-23.img.gz
firmware-ifc6410-20140722-23.img.gz

and at least one of the following files:

linaro-trusty-developer-ifc6410-20140722-23.img.gz
linaro-trusty-gnome-ifc6410-20140722-23.img.gz

The build id is in the form: TIMESTAMP-BUILD_NUMBER.

All images downloaded from Linaro are compressed files and need to be uncompressed first:

gunzip *.img.gz

Managing the proprietary firmware

To properly use this release, a set of proprietary firmware blobs must be acquired separately from Inforce Techweb website as Linaro is not redistributing them in this release.
These firmware blobs are needed for audio, power management, video and graphics support. While it is possible to boot the release without the firmware installed, it is not recommended, as various errors can occur.

For bootloader, kernel and firmware, this release is based on Inforce IFC6410 Android BSP Rel v1.5, which you need to download from Inforce Techweb. The ZIP file Inforce-IFC6410_AndroidBSP_880160_Rel_Beta_V1.5.zip includes all the proprietary firmware blobs required to use this Ubuntu-based Linaro build.

The Linaro release does not contain any proprietary software and thus provides an empty firmware image. The provided firmware image is only a placeholder for users to install the firmware blobs downloaded from Inforce website. The empty firmware image can be flashed as per the instructions in the next sections; of course some functionality will not work without the proprietary firmware blobs. To install the firmware and get all the features of the release, you should extract the firmware from the Inforce BSP release, install them in the firmware image, and flash the updated firmware image as per the instructions in the next sections.

To install the firmware blobs, first locate the file proprietary.tar.gz in the source folder after extracting the Inforce BSP release ZIP file. Then follow the next instructions on how to loop mount the empty firmware image included in the release and inject Inforce’s proprietary firmware blobs.

mkdir image
sudo mount -o loop firmware-ifc6410-20140722-23.img image
sudo tar xzf proprietary.tar.gz -C image/ --strip-components 8 proprietary/prebuilt/target/product/msm8960/system/etc/firmware/
sudo umount image
rmdir image

The firmware image firmware-ifc640-20140722-23 has been updated, and now contains all the relevant proprietary firmware blobs.

Installing the Gnome based image

Connect the IFC6410 to the development host (USB for fastboot, UART for the serial console), and make sure that it is booted in fastboot mode, and waiting for commands, then you can flash the images:

sudo fastboot flash boot boot-ifc6410-20140722-23.img
sudo fastboot flash cache firmware-ifc6410-20140722-23.img
sudo fastboot flash -S 768M userdata linaro-trusty-gnome-ifc6410-20140722-23.img

Note:

  • fastboot should be able to split large files automatically, but it does not work on IFC6410. As such, it is mandatory to add -S 768M, when flashing files larger than 768MB.
  • the root file system must be flashed in the userdata partition, and the boot image must be flashed in the boot partition, otherwise the system will not boot.
  • the firmware image can be flashed in any partition larger than 64MB, it is recommended to use cache partition, but not strictly required.

Running the Gnome based image

The Gnome based image is expected to provide a desktop-like experience, as such it is recommended to use an HDMI monitor, as well as USB keyboard and mouse.

The default bootargs embedded in the released boot image will intentionally prevent the graphical login manager (GDM) to start, since trying to start graphical environment without the proprietary firmware installed will lead to various boot errors. To prevent GDM to start, the keyword text was added into the bootargs. If you have properly installed and flashed into eMMC the proprietary firmware blobs and want to use the graphical interface, you can either start the login manager from the serial console, or alternatively you can change the bootargs.

To boot to the serial console and get a root prompt, you can simply run:

sudo fastboot continue

Note: The default bootargs enable the kernel messages to be displayed on the serial console.

Once you have a root prompt on the serial console, you have a functional Ubuntu system. If you want to start the login manager to see the graphical interface on the HDMI monitor, from the serial console simply run

start gdm

The login manager window should appear within a few seconds, and you can log with the user linaro, using the password linaro. If you want to boot directly to the login manager, you can boot the image with different bootargs (e.g. remove the keyword text). For example, you can run the following command:

sudo fastboot boot boot-ifc6410-20140722-23.img -c "console=ttyHSL0,115200n8 root=/dev/mmcblk0p13 rootwait rw"

Finally, if you want to make the bootargs change persistent, you can modify the released boot image and reflash it into the boot partition:

abootimg -u boot-ifc6410-20140722-23.img -c "cmdline=console=ttyHSL0,115200n8 root=/dev/mmcblk0p13 rootwait rw"
sudo fastboot flash boot boot-ifc6410-20140722-23.img

Note: abootimg is a tool to read/write/update Android boot partition, and is available in most standard Linux distribution; simply install the package using your Linux distribution methods. If you are using Ubuntu on your PC, simply run:

sudo apt-get install abootimg

Multimedia use cases

A package called vidctest is released in the Linaro PPA, and can be installed on the board with:

sudo apt-get update
sudo apt-get install vidctest

This aplication provides a sample C code to use the hardware video decoders. Unlike Android where OpenMax APIs are used to instantiate and use video codecs, the Snapdragon Linux Platform is using directly the kernel driver interface, called vidc. The test application is using ION to allocate video buffers, and directly controls the video hardware using VIDC ioctl. The test application does not render the output video frames, instead the output frames are dumped into a file called output.yuv. The output frames contain raw video data, using NV12 tiled format.

The support for this non standard raw video format has been added to Gstreamer 1.4 which is the main reason why Gstreamer 1.4 is the version used in this release. This raw video format is depicted in details here. You can use Gstreamer to generate a raw video frame test pattern using this format and render in a X11 window. To do so, you first need to install the following packages on the board:

sudo apt-get update
sudo apt-get install gstreamer1.0-tools gstreamer1.0-plugins-bad

Then you can run the following commands from the root console prompt, that first initialize a minimal X11 window manager:

export DISPLAY=:0
X&
metacity&
gst-launch-1.0 videotestsrc ! video/x-raw,format=NV12_64Z32,width=1280,height=720 ! videoconvert ! ximagesink

This Gstreamer application will generate raw video frames and render them in an X11 window. The scaling and color conversion are all done using the CPU, as you can see from the CPU load. Gstreamer also provides another video sink that can be used as an alternative: glimagesink. This Gstreamer video sink is working fine with this release, and it uses the GPU, through the freedreno driver to render the raw video frames:

gst-launch-1.0 videotestsrc ! video/x-raw,format=NV12_64Z32,width=1280,height=720 ! videoconvert ! glimagesink

In this case the CPU is used for the conversion from NV12 tiled format to raw un-tiled YUV, and the GPU is used for scaling and color converstion, you can check the CPU load is much less.

To decode a video file using vidctest application, you first need to download a video file sample, such as the infamous Big Buck Bunny. You can then decode the file on the board using the following command:

sudo vidctest 1 <path to video file>

The entire file is decoded and a file called output.yuv is created. You may decide to abort the decoding after a few hundreds frame, since the output file size grows very quickly. You can then render the output file using the following Gstreamer application:

gst-launch-1.0 filesrc location=output.yuv ! videoparse format=nv12-64z32 width=1280 height=720  ! videoconvert ! glimagesink

The width and heigth parameters must be changed based on the original video resolution.

Note: there is a limitation currently when rendering from a file like in the above application. The alignment between the Luma and Chroma planes in the raw video buffer might differ with what Gstreamer is expecting, depending on the video resolution. For a correct visual rendering it is recommended to use 1280×720 resolution for now. The rationale is the following: the VIDC decoder requires that both the Luma and the Chroma planes are aligned on 8kb boundary, while the buffer format in Gstreamer expects them to be aligned on 4kb. As such depending on the size of the Luma plane in bytes, Gstreamer will read the Chroma properly or not. To ensure this condition is met, the Luma plane size in bytes must be a multiple of 8kb, so that the Chroma plane is aligned with both 8kb and 4kb. The size of the Luma plane for this raw video tiled buffer format is ROUND(width, 128) * ROUND(height, 32). For example, for 1280×720, it gives: ROUND(1280, 128) * ROUND(720, 32) which is 1280 * 736 which is a multiple of 8192 (8kb). If you use a resolution that does not meet this criteria the rendering will be distorted.

In the upcoming releases, support for decoding with Gstreamer will be added, and none of limitations above will exist. The main puropose of this release is to provide an early/alpha access to decoding using Qualcomm video hardware acceleration. Several enhancements are being discussed, such as adding support for the Gallium OpenMax video state tracker, or getting rid of the dependency on ION memory allocation.

The source code for the vidctest application is available in the following git tree, and it can be built using the following commands:

sudo apt-get install build-essential autoconf git libavformat-dev libavutil-dev libavcodec-dev
git clone https://git.linaro.org/landing-teams/working/qualcomm/vidctest.git
./autogen.sh
make

Installing the Developer based image

Connect the IFC6410 to the development host (USB for fastboot, UART for the serial console), and make sure that it is booted in fastboot mode, and waiting for commands, then you can flash the images:

sudo fastboot flash boot boot-ifc6410-20140722-23.img
sudo fastboot flash cache firmware-ifc6410-20140722-23.img
sudo fastboot flash userdata linaro-trusty-developer-ifc6410-20140722-23.img

Note:

  • the root file system must be flashed in the userdata partition, and the boot image must be flashed in the boot partition, otherwise the system will not boot.
  • the firmware image can be flashed in any partition larger than 64MB, it is recommended to use cache partition, but not strictly required.

Running the Developer based image

To boot to the serial console and get a root prompt, you can simply run:

sudo fastboot continue

Note: The default bootargs enable the kernel messages to be displayed on the serial console.

Once you have a root prompt on the serial console, you have a functional Ubuntu system.

How to get and customize the kernel source code

The Linux kernel used in this release is available via tags in the Linaro Qualcomm Landing Team git repository:

https://git.linaro.org/landing-teams/working/qualcomm/kernel.git
git://git.linaro.org/landing-teams/working/qualcomm/kernel.git
tag: ubuntu-ifc6410-14.07
defconfig: ifc6410_defconfig

The kernel compresssed image (zImage) is located in the boot image and partition and the kernel modules are installed in the root file system. It is possible for a user to rebuild the kernel and run a custom kernel image instead of the released kernel. You can build the kernel using any recent GCC release using the git tree, tag and defconfig mentioned above. To boot a custom zImage once, you can run the following fastboot command:

sudo fastboot boot -c "console=ttyHSL0,115200,n8 root=/dev/mmcblk0p13 rootwait rw text" -b 0x80200000 zImage

If you have followed these instructions, the root file system was flashed into the userdata partition which is known as /dev/mmcblk0p13 from Linux kernel. The -c arguments represent the bootargs that will be passed to the kernel during the boot.

If you want to permanently use a custom zImage, you can update the boot image and reflash it into the boot partition:

abootimg -u boot-ifc6410-20140722-23.img -k zImage
sudo fastboot flash boot boot-ifc6410-20140722-23.img

How to get and customize Ubuntu packages source code

This release is based on Ubuntu 14.04 (aka trusty), and it is not possible to use a different Ubuntu release (e.g. it is not possible to downgrade to an older Ubuntu release, nor is it possible to use a newer release, such as the one being currently developed).

For more information, please refer to the Linaro wiki.

How to install the root filesystem on external storage

The root file system can be installed on SD card, external USB drive or external SATA drive instead of being flashed to the eMMC. The method is to extract the content of the root file system image from the release, and copy it onto a proper partition on an SD card or USB drive, then boot the target platform with the proper root= argument in the bootargs. The root file system image file is using an Android sparse image format to optimize the file size. To convert a sparse image into a mountable raw image file, and mount it on your host, run:

simg2img linaro-trusty-gnome-ifc6410-20140722-23.img linaro-trusty-gnome-ifc6410-20140722-23.img.raw
mkdir rootfs
sudo mount -o loop linaro-trusty-gnome-ifc6410-20140722-23.img.raw rootfs

Note that simg2img is available in most standard Linux distribution; simply install the package using your Linux distribution methods. If you are using Ubuntu on your PC, simply run sudo apt-get install android-tools-fsutils. Assuming the SD card or USB drive that should contain the root file system is properly formatted as ext4 partition and mounted on your host as /mnt/disk, you can copy the content of the image with:

cd rootfs
sudo cp -a * /mnt/disk

It is very important to run the copy with admin privileges and with -a in order to preserve files ownership and permission.

The SD card or USB drive is now ready to be plugged and used on the target. For USB drive it is recommended to use externally powered USB drive or through an externally powered USB HUB. When booting with the root file system on USB drive or SD card, the boot partition from the eMMC is still being used for the kernel and initrd. As such you need to update the boot image with the new bootargs, and reflash it. If using a USB or SATA drive or SD card with a single partition, the device to boot from will be either /dev/sda1 for USB drive or /dev/mmcblk1p1 for SD card. For example, for USB drive, run:

abootimg -u boot-ifc6410-20140722-23.img -c "cmdline=console=ttyHSL0,115200n8 root=/dev/sda1 rootwait rw text"
sudo fastboot flash boot boot-ifc6410-20140722-23.img

Known issues and limitations

  • In Gnome, the default sound configuration will use main speaker which is not valid on IFC6410. The two valid sound configurations are HDMI and Headphones. To change the sound output device in Gnome, go to the Sound Settings in the main System Settings.
  • In the Gnome login manager, 2 fallback sessions are proposed: using Metacity or Compiz. Compiz is not working, and there is no plan to fix that, as Compiz is obsolete. Metacity is working fine, and provides an altertanive graphical interface that does not require GPU composition.
  • Few software codecs are installed by default; you might install additional codecs such as gstreamer1.0-plugins-bad or gstreamer1.0-plugins-ugly.
  • The current thermal management policy is very conservative and the CPUs are quickly throttled down to lower CPU frequency. This will be improved in further releases. To check the thermal related kernel message you can run dmesg | grep msm_thermal.
  • The developer image does not include the the Linaro Qualcomm overlay by default, unlike the Gnome image. If you need to install packages overlaid by Linaro, once you have booted the developer image, you need to create the file /etc/apt/sources.list.d/linaro-maintainers-qcom-trusty.list with the following content:
deb http://ppa.launchpad.net/linaro-maintainers/qcom-overlay/ubuntu trusty main
deb-src http://ppa.launchpad.net/linaro-maintainers/qcom-overlay/ubuntu trusty main
  • If you mix and match Gstreamer 1.2 and 1.4 packages on your system you might end up with some dpkg dependency issues. It can happen if you install gstreamer1.0-plugins-good or gstreamer1.0-plugins-bad before doing sudo apt-get update for example. In this case the following commands should resolve the conflicts:
sudo apt-get update
sudo apt-get purge gstreamer1.0-plugins-bad libgstreamer-plugins-bad1.0-0 gstreamer1.0-plugins-bad-videoparsers gstreamer1.0-plugins-bad-faad
sudo apt-get install gstreamer1.0-plugins-good
sudo apt-get purge libgstreamer-plugins-good1.0-0
sudo apt-get install gstreamer1.0-plugins-bad

Feedback and Support

For general question or support request, please go to My Dragon Board Community.

For any bug related to the Linaro Member Build, please submit issues to the Linaro bug tracking system. To submit a bug, select “File a Bug”, then Product: “Qualcomm LT”. 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 dmesg).