Note: Ubuntu flavoured images released as Linaro engineering builds are not for production use, modification or redistribution, but are to be used for evaluation purposes only.


NameLast modifiedSizeLicense

Parent Directory Parent Directory
text README.txt 12-Jan-2018 14:19 337 open
other boot-ifc6410-20140526-15.img.gz 12-Jan-2018 14:19 7.3M open
other bootimg.cfg 12-Jan-2018 14:19 240 open
other firmware-ifc6410-20140526-15.img.gz 12-Jan-2018 14:19 64.0K open
other initrd.img-3.4.0-linaro-ifc6410 12-Jan-2018 14:19 2.3M open
other kernel_config_ifc6410 12-Jan-2018 14:19 95.7K open
other linaro-trusty-developer-ifc6410-20140526-15.img.gz 26-Feb-2018 18:52 180.0M open
other linaro-trusty-gnome-ifc6410-20140526-15.img.gz 26-Feb-2018 18:52 400.2M open
other linux-headers-3.4.0-linaro-ifc6410_3.4.0-linaro-ifc6410-2_armhf.deb 12-Jan-2018 14:20 6.4M open
other linux-image-3.4.0-linaro-ifc6410-dbg_3.4.0-linaro-ifc6410-2_armhf.deb 26-Feb-2018 18:52 30.4M open
other linux-image-3.4.0-linaro-ifc6410_3.4.0-linaro-ifc6410-2_armhf.deb 12-Jan-2018 14:20 5.5M open
other linux-libc-dev_3.4.0-linaro-ifc6410-2_armhf.deb 12-Jan-2018 14:20 716.0K open
other zImage_ifc6410 12-Jan-2018 14:20 5.1M 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.05 release is an Ubuntu-based Linaro Member Build that provides a desktop like environment using Ubuntu and the Gnome desktop.

Features

  • Provides a working Ubuntu environment with access to Ubuntu repositories (apt-get) and updates. It is based on Ubuntu 14.04 (Trusty Tahr).
  • 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 following board features are supported:
    • Quad Core Krait 300 1.7GHz CPU
    • Adreno 320 GPU, powered by freedreno GPU driver (mesa 10.1)
    • Cpufreq
    • Initial, very conservative in-kernel thermal management
    • Audio playback (analog, digital)
    • HDMI display
    • UART, Ethernet, SD, eMMC
    • USB2.0 (Mouse, Keyboard, Storage)
    • Wifi using QCA6234x

Download the release binaries

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

boot-ifc6410-${VERSION}.img.gz
firmware-ifc6410-${VERSION}.img.gz

and at least one of the following files:

linaro-trusty-developer-ifc6410-${VERSION}.img.gz
linaro-trusty-gnome-ifc6410-${VERSION}.img.gz

Where ${VERSION} represents 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 v 1.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-${VERSION}.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-${VERSION} 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-${VERSION}.img
sudo fastboot flash cache firmware-ifc6410-${VERSION}.img
sudo fastboot flash -S 768M userdata linaro-trusty-gnome-ifc6410-${VERSION}.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-${VERSION}.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-${VERSION}.img -c "cmdline=console=ttyHSL0,115200n8 root=/dev/mmcblk0p13 rootwait rw"
sudo fastboot flash boot boot-ifc6410-${VERSION}.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 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-${VERSION}.img
sudo fastboot flash cache firmware-ifc6410-${VERSION}.img
sudo fastboot flash userdata linaro-trusty-developer-ifc6410-${VERSION}.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
tag: ubuntu-ifc6410-14.05
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-${VERSION}.img -k zImage
sudo fastboot flash boot boot-ifc6410-${VERSION}.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: 14.10).

All the packages installed in the root file system are coming either from Ubuntu archives or from Linaro maintained Personal Packages Archives (PPA). The Linaro PPA used for this release are:

The list of packages that were overlaid by Linaro to run for this Snapdragon Linux Platform release are: mesa, cogl, libdrm, xf86-video-freedreno and alsa-lib. These packages are thus the one maintained in the Linaro PPAs.

Since all packages are maintained in proper archives, it is possible for our users to update their environment with commands such as:

apt-get update
apt-get upgrade

For some time, Linaro will maintain these PPAs up-to-date, and whenever a new package version (bug fix) is pushed in the Ubuntu archives, the same fix will be applied and uploaded in the Linaro PPAs. If you face any issue after upgrading the installation, please report it.

All user space software is packaged using Ubuntu or Debian packaging process, since Debian is the rock upon which Ubuntu is built. As such you can find extensive information about using, patching and building packages in the Ubuntu packaging guide or The Debian New Maintainers Guide. If you quickly want to rebuild any package, you can run the following commands to fetch the package source code and install all build dependencies:

apt-get update
apt-get source <pkg>
apt-get build-dep <pkg>

Then you can rebuild the package locally with:

cd <pkg-version>
dpkg-buildpackage -b -us -uc

Notes:

  • you can drop patches in debian/patches/ and update debian/patches/series before building with dpkg-buildpackage to customize the source code.
  • all associated .deb files will be located in the root folder, and can be installed in the system with dpkg -i <pkg>.deb.
  • all these commands should be executed on the target directly, not on the development host. It is generally enough to build packages natively, on the target platform. For most packages, it is possible to cross compile Ubuntu/Debian packages however this goes beyond the scope of these release notes.

How to install the root filesystem on external SD card or USB

The root file system can be installed on SD card or external USB 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-${VERSION}.img linaro-trusty-gnome-ifc6410-${VERSION}.img.raw
mkdir rootfs
sudo mount -o loop linaro-trusty-gnome-ifc6410-${VERSION}.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 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-${VERSION}.img -c "cmdline=console=ttyHSL0,115200n8 root=/dev/sda1 rootwait rw"
sudo fastboot flash boot boot-ifc6410-${VERSION}.img

Known issues and limitations

  • Sometimes networking does not properly configure the DNS entries during the first boot when using Ethernet, if facing network issues, running dhclient eth0 should fix the problem
  • Sometimes the time and date are not set properly during the first boot. Assuming there is network available, you can run ntpdate ntp.ubuntu.com at the command prompt to set the time and date.
  • 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-libav, 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.

Feedback and Support

For any question or support request, please go to My Dragon Board Community. For any bug or issue it is recommended to provide as much information as possible, and at the very list please include the output of dpkg -l to list all packages installed.