NameLast modifiedSizeLicense

Parent Directory Parent Directory
text MD5SUMS.txt 12-Jan-2018 20:18 1.2K open
text README.txt 12-Jan-2018 20:18 296 open
other boot-qcom-apq8064-cm-qs600-qcom-snapdragon-20141126-56.img.gz 12-Jan-2018 20:18 7.0M open
other boot-qcom-apq8064-ifc6410-qcom-snapdragon-20141126-56.img.gz 12-Jan-2018 20:18 7.0M open
other bootimg.cfg 12-Jan-2018 20:18 248 open
other firmware-qcom-snapdragon-20141126-56.img.gz 12-Jan-2018 20:18 64.0K open
application/octet-stream fixup-qcom-apq8064-cm-qs600.bin 12-Jan-2018 20:18 84 open
application/octet-stream fixup-qcom-apq8064-ifc6410.bin 12-Jan-2018 20:18 84 open
other kernel_config 12-Jan-2018 20:18 98.5K open
other linaro-utopic-developer-qcom-snapdragon-20141126-56.img.gz 26-Feb-2018 20:58 187.5M open
other linaro-utopic-gnome-qcom-snapdragon-20141126-56.img.gz 26-Feb-2018 20:58 511.9M open
other linux-firmware-image-3.17.0-linaro-qcom_3.17.0-linaro-qcom-1_armhf.deb 12-Jan-2018 20:19 9.8K open
other linux-headers-3.17.0-linaro-qcom_3.17.0-linaro-qcom-1_armhf.deb 12-Jan-2018 20:19 6.7M open
other linux-image-3.17.0-linaro-qcom-dbg_3.17.0-linaro-qcom-1_armhf.deb 26-Feb-2018 20:58 26.3M open
other linux-image-3.17.0-linaro-qcom_3.17.0-linaro-qcom-1_armhf.deb 26-Feb-2018 20:58 11.4M open
other linux-libc-dev_3.17.0-linaro-qcom-1_armhf.deb 12-Jan-2018 20:20 730.4K open
other zImage 12-Jan-2018 20:20 4.8M open


The Linaro Qualcomm Landing Team is pleased to announce the new release of the Linaro Linux release for Qualcomm™ Snapdragon® 600 processor. The Linaro Linux release 14.11 is an Ubuntu-based Linaro Member Build that provides developers with a desktop like environment using Ubuntu and the Gnome desktop, as well as a console-only image.

What’s new in this release

  • This release is based on Ubuntu 14.10
  • This release is based on Linux kernel v3.17
  • The release supports the following boards: Inforce IFC6410, Compulab CM-QS600.
  • The graphic stack has been updated and is using Mesa master branch as of 11/12/2014, and libdrm 2.4.58
  • The serial device node name has been changed from ttyHSL to ttyMSM since Linux kernel 3.14
  • Bug fixed:
    • N/A

This is the first release of a new series for the Linaro Linux release for Snapdragon 600 processor. Going forward, the Linaro member monthly builds for Snapdragon 600 processor will be providing a kernel based on the current Linux kernel (www.kernel.org) available at the time of the release. The goals of the Linaro Linux releases for Snapdragon 600 processor are to align with the latest Linux Kernel, close the gaps in features provided and migrate from the existing 3.4 vendor kernel. One immediate consequence of this migration is that some regressions are expected. Current regressions include: lack of audio support, video hardware acceleration, bluetooth and support for running CPU beyond 1Ghz. Developers can continue to use the Linaro Linux release 14.10 for Snapdragon 600 processor, which is based on Linux kernel v3.4 and Ubuntu 14.04 if needed.

Features

The Linaro Linux version 14.11 for the Snapdragon 600 supports the following features:

  • Provides a working Ubuntu environment with access to Ubuntu repositories (apt-get) and updates. It is based on Ubuntu 14.10 (aka utopic).
  • It is based on 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.
  • Android Debug Bridge (adb) can be used to connect to the target
  • Support for the following Snapdragon 600 based boards:
    • Inforce IFC6410 Rev P1 and A1
    • Compulab CM-QS600
  • The following Snapdragon 600 features are supported:
    • Quad Core Krait 300 CPU (up to 1GHz)
    • Adreno 320 GPU, powered by freedreno Mesa/Gallium GPU driver
      • OpenGL 2.1, OpenGLES 2.0
      • xf86-video-freedreno driver v1.3.0, with XA support enabled
    • Cpufreq, using ondemand governor by default
    • HDMI display
    • UART, Ethernet, SD, eMMC, SATA
    • USB2.0 (Mouse, Keyboard, Storage)
    • Wifi using on-board QCA6234x

Information about the IFC6410 board

For more information about Linaro Linux release for Snapdragon 600 processor 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, …).

Information about the Compulab CM-QS600 Board

For more information about Compulab QS600 board, please check Compulab website.

Download the release binaries

To install this release on a Snapdragon 600 based board, you need to download the following files:

firmware-qcom-snapdragon-20141126-56.img.gz
linaro-utopic-developer-qcom-snapdragon-20141126-56.img.gz
linaro-utopic-gnome-qcom-snapdragon-20141126-56.img.gz

You also need to download the proper boot partition, based on the actual board you are using. For the Inforce IFC6410, please download:

boot-qcom-apq8064-ifc6410-qcom-snapdragon-20141126-56.img.gz

for the Compulab CM QS600, please download:

boot-qcom-apq8064-cm-qs600-qcom-snapdragon-20141126-56.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-qcom-snapdragon-20141126-56.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-20141126-56 has been updated, and now contains all the relevant proprietary firmware blobs.

Installing the Gnome based image

Connect your board 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-qcom-apq8064-ifc6410-qcom-snapdragon-20141126-56.img

or

sudo fastboot flash boot boot-qcom-apq8064-cm-qs600-qcom-snapdragon-20141126-56.img

then:

sudo fastboot flash cache firmware-qcom-snapdragon-20141126-56.img
sudo fastboot flash -S 768M userdata linaro-utopic-gnome-qcom-snapdragon-20141126-56.img

Note:

  • Warning: do not flash the .img rootFS images on the Compulab QS-600 board, see “Known issues” section below
  • fastboot should be able to split large files automatically, but it does not work. As such, it is mandatory to add -S 768M, when flashing files larger than 768MB as a workaround.
  • 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.

Flashing the Gnome image takes several minutes. Be patient. You should see the following fastboot traces on the PC while flashing the image:

sudo fastboot flash -S 768M userdata linaro-utopic-gnome-qcom-snapdragon-20141126-56.img
sending sparse 'userdata' (785202 KB)...
OKAY [ 55.368s]
writing 'userdata'...
OKAY [121.134s]
sending sparse 'userdata' (418516 KB)...
OKAY [ 36.508s]
writing 'userdata'...
OKAY [110.017s]
finished. total time: 323.027s

And you should see the following traces on the serial console in the meantime:

[34320] fastboot: getvar:partition-type:userdata
[34510] fastboot: download:2fecc8b4
[89870] fastboot: flash:userdata
[210990] Wrote 524288 blocks, expected to write 524288 blocks
[211020] fastboot: download:198b50a4
[247510] fastboot: flash:userdata
[357520] Wrote 524288 blocks, expected to write 524288 blocks

Do not power off the PC, or the board while flashing.

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, if you are using the Inforce IFC6410 you can run the following command:

sudo fastboot boot boot-qcom-apq8064-ifc6410-qcom-snapdragon-20141126-56.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-qcom-apq8064-ifc6410-qcom-snapdragon-20141126-56.img -c "cmdline=console=ttyHSL0,115200n8 root=/dev/mmcblk0p13 rootwait rw"
sudo fastboot flash boot boot-qcom-apq8064-ifc6410-qcom-snapdragon-20141126-56.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

Installing the Developer based image

Connect the board 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-qcom-apq8064-ifc6410-qcom-snapdragon-20141126-56.img

or

sudo fastboot flash boot boot-qcom-apq8064-cm-qs600-qcom-snapdragon-20141126-56.img

then:

sudo fastboot flash cache firmware-qcom-snapdragon-20141126-56.img
sudo fastboot flash -S 768M userdata linaro-utopic-developer-qcom-snapdragon-20141126-56.img

Note:

  • Warning: do not flash the .img rootFS images on the Compulab QS-600 board, see “Known issues” section below
  • 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: http://git.linaro.org/landing-teams/working/qualcomm/kernel.git
tag: ubuntu-qcom-snapdragon-14.11
defconfig: qcom_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. This release only supports booting with device tree, as such both the device tree blobs need to be built as well. DTBs files need to be appended to the kernel image when the booltloader do not support device tree protocol, such as on the IFC6410 and the CM QS-600.

To build the Linux kernel, you can use the following instructions:

git clone -n http://git.linaro.org/landing-teams/working/qualcomm/kernel.git
cd kernel
git checkout -b kernel-14.11 ubuntu-qcom-snapdragon-14.11
export ARCH=arm
export CROSS_COMPILE=<path to your GCC cross compiler>/arm-linux-gnueabi-
make qcom_defconfig
make -j4 zImage dtbs

Since kernel v3.17 there is a change in the way the kernel is prepared to boot on IFC6410 and CM-QS600. the issue is that bootloaders on these boards use ATAGS to pass the memory information as we use CONFIG_ARM_ATAG_DTB_COMPAT config in kernel this option will extract the memory information from the ATAG list and store it at run time into the appended DTB. But the LK booloader in this case passes an incorrect memory address. The workaround for now is to prepend a binary blob before the kernel, and the responsibility of this binary blob is to fixup the wrong ATAGS. While this is definitely a workaround, and not a proper fix, this is the currently proposed and recommended workaround from people from the Linux MSM community.

This binary blob is available in the Linaro kernel tree, both in source and precompiled format. The files are fixup.bin and fixup.S. You can refer to fixup.txt for instructions on how to rebuilt the binary blob.

To prepare a kernel image one need to prepend fixup.bin to zImage. And as discussed previously, the DTB file needs to be appended to the zImage as well. That leads us to the following command to prepare an image for the IFC6410:

cat fixup.bin arch/arm/boot/zImage arch/arm/boot/dts/qcom-apq8064-ifc6410.dtb  > zImage-dtb

or, similarly, for CM QS-600:

cat fixup.bin arch/arm/boot/zImage arch/arm/boot/dts/qcom-apq8064-cm-qs600.dtb  > zImage-dtb

To boot a custom kernel image, you can run the following fastboot command:

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

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 kernel image, you can update the boot image and reflash it into the boot partition, for example, for IFC6410:

abootimg -u boot-qcom-apq8064-ifc6410-qcom-snapdragon-20141126-56.img -k zImage
sudo fastboot flash boot boot-qcom-apq8064-ifc6410-qcom-snapdragon-20141126-56.img.img

How to get and customize Ubuntu packages source code

This release is based on Ubuntu 14.10 (aka utopic), 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-utopic-gnome-qcom-snapdragon-20141126-56.img linaro-utopic-gnome-qcom-snapdragon-20141126-56.img.raw
mkdir rootfs
sudo mount -o loop linaro-utopic-gnome-qcom-snapdragon-20141126-56.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
cd ..
sudo umount rootfs

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-qcom-apq8064-ifc6410-qcom-snapdragon-20141126-56.img -c "cmdline=console=ttyHSL0,115200n8 root=/dev/sda1 rootwait rw text"
sudo fastboot flash boot boot-qcom-apq8064-ifc6410-qcom-snapdragon-20141126-56.img

Android Debug Bridge

adb can be used to connect to the target, for example it can be used to reboot the board into fastboot mode once the boot partition has been flashed. For more information about how to configure adb on the target, please refer to the Linaro wiki.

Known issues and limitations

  • On Compulab QS-600, do not flash the released root filesystem images (gnome or developer) with fastboot into eMMC. The eMMC partition layout is different than on IFC6410, and userdata partition is too small, and you might end up with corruption, instead you can use the method to install the image on external storage (USB, SATA, SD card).
  • Audio is currently not supported in this release.
  • Some recent IFC6410 or Compulab QS-600 boards come with more recent bootloaders pre flashed (e.g. the bootloaders from Inforce Android Kit Kat release), and display clocks cannot be enabled properly. See this email for more information. The solution is to downgrade the bootloader, as explained in the email above.
  • 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 alternative graphical interface that does not use GPU for composition.
  • Few software codecs are installed by default; you might install additional codecs such as gstreamer1.0-plugins-bad or gstreamer1.0-plugins-ugly.
  • Once you have flashed the boot partition with a valid boot image, the board will automatically boot that image when powered on. To avoid automatically booting you can jumper the board as explained in this page. If you cannot use this method and still needs to reboot into fastboot mode, you can erase the boot partition on a running target using the following command sudo cat /dev/zero > /dev/mmcblk0p7
  • 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-utopic.list with the following content:
deb http://ppa.launchpad.net/linaro-maintainers/qcom-overlay/ubuntu utopic main
deb-src http://ppa.launchpad.net/linaro-maintainers/qcom-overlay/ubuntu utopic main

Feedback and Support

For general question or support request, please go to mydragonboard.org 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”, or simply follow this link.

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).


Qualcomm Snapdragon is product of Qualcomm Technologies, Inc.