Wednesday, December 4, 2013

N950 and Jolla Phone Repo's

I've been hacking around with the Jolla phone repos and the N950 for the last few days and wanted to share the kickstart method which avoids much of the manual zypper/ssu stuff 

References are

Nemomobile N950 Installation Instructions -

Using the platform sdk create a filesystem image 

sudo mic create fs sailfish2-armv7hl-n950.ks -o . --pkgmgr=zypp --arch armv7hl  --pack-to=vgrade-sailfish.tar.bz2

Flash to N950

sudo tar --numeric-owner -xjf vgrade-sailfish.tar.bz2 -C /mnt

Please help as things still need fixing, time is not setting correctly audio not working as it was on the previous hacks etc, but this should allow more controlled development.

A pirate pad is operating at you are very welcome to contribute

Saturday, October 19, 2013

Device List

atom - joggler, ExoPc, Fonepad

omap - n900, n950, n9, pandaboard, beaglebone, Archos G9, compulab cm-t3730

tegra - 2- advent vega, trimslice - TK1

amlogic - zenithink c71, c72

exynos - galaxy note 1, tizen lunchbox

a10 - pengpod, cubiaboard, melea1000, H6 netbook

a20 - cubieboard2, eoma68 (kde tablet)

broadcom - Raspberry Pi, Alpha , model B

rk3188 - hudl, qc802. radxa

qualcom - nexus 1, nexus 5, one+, jolla

Thursday, April 18, 2013

Adventures with Libhybris and Andriod

As promised in my tweet at the weekend I'm going to give some more details on the steps required to get Mer based gfxs apps running on top of Android graphics drivers on the Allwinner A10 based cubieboard.  This work was inspired by this blog which sets out the dilemma we face when trying to port regular GNU Linux to fantastic mobile devices.

So, what do you need, well specifically a cubieboard but any Andriod device running a recent version which allows you to boot your own kernel is a potential target for Mer and Libhybris.  On the software side you need an Android development environment, access to the andriod source repo for your device, patch for bionic (android's version of libc) and the libhybris library.  The reason we need all this android stuff is so that we can rebuild the android bionic library with a couple of tweaks which will allow bionic and libc libraries coexist in our final build.

So first follow these instructions to setup your Android build environment, I welcome any questions on this blog post except this section, please beware this is the most frustrating things  I've done in ages and would not like to re-live it.  There are plenty of sources of help on the web, if you're lucky the stars will align and you will have no problems. and the installing repo section from

Now you need access to the Andriod source repo for your device, I will be giving cubieboard specific instructions from now but all Andriod devices have a similar repo structure.  There are a couple of pages with Andriod for cubieboard but this is the one I used,  It does give some instructions on setting up a dev environment which I've not tried but you may be more successful than my attempts.

So following that page

$mkdir openbox && cd openbox
$repo init --no-repo-verify -u git:// -b cb -m jb.xml  
$repo sync

gets the android code and binary blobs for the cubieboard.  Now build with 

$source build/
$lunch 4 (note: select cubieboard option)
$make -j4

You will have time for more than lunch!

So the build should complete with some messages about creating a system.img file.  Congratulations you've just built your first Android ROM.

Next we need to patch the bionic library so descend into the bionic directory and apply this patch and rebuild

$make -j4

Now we have to tar up the android system directory so we can install it on the device.  This will have the patched bionic library plus all the andriod libs (EGL, GLESv2, RIL etc) which we will now be able via libhybris to access from regular glibc apps.  This will be at out/target/product/cubieboard/system.

Ok so next step is to get a minimal Mer image for your device, this is another blog post in itself so I've created a basic image here.  Download this and write to an sdcard and boot in the cubieboard.  It should boot to xterm on hdmi.

Ok, so we don't want X to start anymore so from VT2 login root/mer and remove uxlaunch before rebooting.

$zypper -e uxlaunch

On next boot X will not start so login again from VT2.

Now we can install libhybris.

$zypper ar
$zypper in libhybris
$zypper in libhybris-tests

Next copy the android system dir we made a copy of earlier to /system

Now we can test libhybris is installed correctly


This should give some messages but if all is well it should not crash and print 'stop'


This should show a white diamond shape filled with an animated Catherine wheel.  Congrats you are now running an EGL/GLES glibc application linking to the Android EGL/GLES bionic drivers.

Next we can now run a couple of more interesting demos

$zypper in qt5-plugin-imageformat-jpeg
$zypper in qt5-plugin-platform-eglfs
$zypper in qt5-qtdeclarative-qmlscene
$zypper in qt5-qtdeclarative-import-qtquick2plugin
$zypper in qt5-qtdeclarative-import-window2
$zypper in qt5-plugin-generic-evdev
$curl -O
$zypper in tar
$tar -xf minimer3.tar.gz
$QT_QPA_EGLFS_DEPTH=24 qmlscene -platform eglfs mail.qml

This should give you a rotating and scaling mer logo, now lets install the Qt Cinematic Experience app which I showed in the youtube video. 

$curl -O
$tar -xf Qt5_CinematicExperience_rpi_1.0.tgz
$cd Qt5_CinematicExperience_rpi_1.0
$zypper in vim
$zypper in qt5-qtdeclarative-import-particles2
$zypper in qt5-qtquick*
$vim content/Mainview.qml - and comment out the PathAnimation part with //
$QT_QPA_EGLFS_DEPTH=24 qmlscene -platform eglfs Qt5_CinematicExperience.qml

So if you've reached this far thanks for reading and if you have used a different Android device please let us know on #mer or #libhybris.

As usual in the open source world we are always building "on the shoulders of giants" so a few thanks to the giants.

Stskeeps for his awsome contributions not just with libhybris but all things Mer and also his patience with me.  Thanks to the wider Mer and libhybris teams.

On the cubieboard front thanks to the linux-sunxi team for their work on the bootloader and kernel and to mdfe for his excellent Mer adaptation packaging and awesome Jenkins buld system.


vgrade - catch me in #mer on freenode IRC

Tuesday, March 5, 2013

Ahoy SailfishOS on Exopc


I've been hacking on the Jolla Sailfish SDK which was launched recently to get it running outside of its virtual box environment.

After installation you will find in the Sailfish SDK a sub-directory which contains the emulator virtualbox image (.vdi) which is used by the SDK to allow deployment of apps from QtCreator for testing.  I used this as a basis for creating an image I can boot on the Exopc (and probably other Intel based tablets and netbooks).

To convert the emulator vdi image I used vboxmanage tools to convert to a raw format which could be written to a usb key for booting in the Exo.

Since the emulator was built for running in virtualbox with no hardware acceleration the image includes a version of mesa which is built to use llvmpipe software rendering.  As we are running on Exo we have access to hardware acceleration so I  built the latest versions of mesa and the xorg-intel-drv against mercore

After a few tweaks to remove configuration related to the virtual box environment (xorg.conf, /usr/lib/egl/, /var/lib/environment) I was booting sailfish os, see video for results.

Plan is to integrate with the SDK to allow app deployment to the Exo and in time to extend this to ARM devices once Sailfish components become available for that platform.

More details can be found at where contributions are welcome.

Fair winds!