Canonical Voices

Posts tagged with 'linaro'

Marcin Juszkiewicz

Lot of services followed article on EETimes where it was announced that Samsung will present 8-core ARM cpu. What was skipped on some of them is that this is big.LITTLE design so it is made as 4xCortex-A7 + 4xCortex-A15 setup.

Good to know that there will be silicon from other vendors than ARM Ltd. Current development platform is Versatile Express TC2 (Test Chip 2) which shows that amount of A7 cores does not have to match A15 ones (it has 3xA7 + 2xA15).

But amount of cores is one thing. People usually complain about battery life and guess that such setup will suck power like crazy… when it is especially designed to save power.

Take a look at current “war” at mobile market. 2 years ago single core 1GHz Cortex-A8 cpu wit 512MB ram was high end. Then we got dual core cpu (usually Cortex-A9 based like Exynos4, OMAP4, Tegra2) and 512-1024MB of memory. Battery usually had similar capacity and lived similar time. During 2012 we saw move to quad core processors in mobile devices (Exynos4412, Tegra3) with 1-2GB ram. Space for battery was same or smaller. Next year will bring Cortex-A15 cpu (Exynos5, OMAP5, Tegra4) but this eats power…

So phones will probably get big.LITTLE processors to give users with lot of cpu power when needed and battery life otherwise. Cortex-A5/8/9/15 will not disappear from market — will land in normal and cheap devices.

I have dual core Cortex-A15 netbook now (Chromebook) and it works fast. Who knows, maybe in 2014 I will be able to replace it with something powered by 4xA7 + 4xA15 processor (unless ARMv8 will land at same time). And there is a work on getting ALL of cores running at same time…


All rights reserved © Marcin Juszkiewicz
Samsung will have big.LITTLE. So what? was originally posted on Marcin Juszkiewicz website

Read more
Marcin Juszkiewicz

Complaining

People told me many times that I complain a lot (maybe even too much sometimes). But this is who I am and you have to live with it.

When I get new device I usually blog about it — like I told during recent conferences: “give me a device and I will find something to complain about, but also will usually tell something positive as well”. Sometimes those posts even got presented by other people at management meetings as an example of what is good/wrong in described products.

But so far I never got an email with ask to remove any blog post — there were comments outside of blog sometimes but never request to take my opinion down. I edited two posts — first one was before publication because I sent it for review (it was not requested by company), second time when I got some information about product in public space but device had to be announced week later at big event during one of trade shows.

What do you think? Should I write more about devices or rather not?


All rights reserved © Marcin Juszkiewicz
Complaining was originally posted on Marcin Juszkiewicz website

Read more
Marcin Juszkiewicz

Staying at Linaro

Week ago I got message that someone higher in chain decided that Canonical will not get me this year. Took me few days to get it fully confirmed so I can now write about it.

So for another few months I will stay at Linaro. What will be after that time? Will see — Linaro got new members, there is enterprise group now so many interesting things can happen.


All rights reserved © Marcin Juszkiewicz
Staying at Linaro was originally posted on Marcin Juszkiewicz website

Read more
Marcin Juszkiewicz

Some days ago I got Chromebook and have to say that device is amazing. Light, small and fast enough for conference laptop. During Linaro Connect I did some hacking on it with help from Olof Johansson and Andrew Wafaa (he brought Chromebook for me from Cambridge). I also used script from Jay Lee to get all information required to resize STATE partition and fit Ubuntu on internal storage.

Now I am running Ubuntu ‘raring’ on my Chromebook with XFCE as a desktop — all running from internal storage (16GB eMMC from SanDisk). So far I did not remove original Chromium from device as I keep it as a reference system to be able to compare what I got with how it works with system from Google.

So what works? Most of things — suspend/resume, wifi, bluetooth, sound, touchpad, usb ports, sd storage, camera. But why they should not work when I am using same kernel binary as Chromium OS does ;) So far did not yet came to rebuilding kernel — there were more important things to do first.

During Wednesday hacking evening I updated xf86-video-armsoc driver to X11 ABI 13 used by packages in ‘raring’ so I got 2D accelerated environment. Tried to find all sources required to build xf86-input-cmt driver but then got hint from Olof that “evdev” driver is enough — all it needs is small snippet of X11 configuration. And yes — it works but is not precise. Andrew told that he will try to build “cmt” driver for OpenSUSE so we will know how better it is.

What next? I have to create package for “cgpt” (GPT manipulation tool with support for Chromium OS extensions), tools and keys needed to sign kernel and kernel itself. Then some work would be needed for OpenGLES stuff but this can wait. I plan to upload everything needed into Debian and then request syncs to Ubuntu. From yesterday’s discussions I know which mailing lists I should go.

But I do not plan to cover everything. There will be no installation support from me. Users have to do it on their own cause there are several ways of getting other operating systems on Chromebook:

  • boot from SD card
  • boot from USB storage
  • resizing STATE partition to put system on internal eMMC (I did that)
  • removing Chromium OS completely to get more space for own system

Then there are also systems when user has developer firmware installed (that’s different that developer mode) or even setup where normal U-Boot is used as bootloader.


All rights reserved © Marcin Juszkiewicz
Used Chromebook for few days was originally posted on Marcin Juszkiewicz website

Read more
Marcin Juszkiewicz

Time to do hard task — write job description for my replacement at Linaro. Or maybe not replacement but for someone who will take some or most of my duties there.

I did so many things at Linaro during last 2.5 years that it is hard to decide what such person should know. I learnt Bazaar (not hard once you know Subversion), improved Git skills and tried few projects which tried to bridge both. Learnt more about Launchpad than wanted — people at #launchpad channel are really helpful (same with #bzr ones).

There was lot of building involved. From fixing packages in Ubuntu and Debian to building with OpenEmbedded. I even did some build automation with use of Launchpad. Then there was Jenkins where we moved most of our builds.

I became MOTU in Ubuntu and got Debian Maintainer status in Debian. Have to clean some things and take “android tools” package more into shape as there are co-maintainers waiting in queue with patches. Also updated my OpenEmbedded skills to current state as last time I was using it there was no layers ;)

But how to summarise it in short job description? You will see soon at Linaro’s jobs page soon.


All rights reserved © Marcin Juszkiewicz
It is hard to write job description when you are leaving was originally posted on Marcin Juszkiewicz website

Read more
Marcin Juszkiewicz

Today is 2.5 year of my work at Linaro. It was very good time. But good things have one thing in common — they end at some moment. For me that moment will be 30th November — after that I will be working at Canonical.

For me it will be like starting new job because they hired me to work at Linaro so I never really worked “at” Canonical — always “for”. Hope that it will be at least as interesting as Linaro work was.

When I think about all those 30 months few things came to my mind. First one is people. Linaro gathered many good engineers (and non-engineers as well) and it has many stars as well.

For example: Nicolas Pitre. I had big respect for him since I started work on embedded Linux. But until sprint in Prague, July 2010 I did not realise that he is blind… We went for some beers, chatted about things we did at previous jobs, spent good time (and I managed to not fail too much as a guide).

Other example: Few days ago Arnd wrote on Google+ about mold problem which forced him to throw some books into trash. Beside cookbooks and Discworld ones he found one written by David Rusling (CTO of Linaro)… It is hard to check Linux history and not meet someone who works at Linaro.

I learnt a lot during those 30 months. Not only about toolchains, cross toolchains and toolchains (yes, ‘toolchains’ are repeated) but also on Debian/Ubuntu packaging, relations between those two projects, how to get own packages into them, how to get fixes there etc. Now I am member of Ubuntu MOTU team (can upload to ‘universe’ part of Ubuntu) and since this week also Debian Maintainer. But at same time also learnt how OpenEmbedded works today and managed two Linaro layers for it.

AArch64 porting was/is a great project. There were some issues because it was internal only for some time when we had some internal patches which we preferred to not show to public. But that feeling when I got “hello world” compiled as one of first people outside of ARM Ltd. will always be something to remember. And now everyone can check how it works ;)

When I was at ELC/E 2011 in Prague there was a talk by Pawe? Moll about running Linux on non-existing hardware. At that time it sounded like science fiction to me but later when I had to use Fast Models to boot AArch64 kernel I realised that it is not s-f.

But technical things are just one side. I enjoyed Linaro Connect meetings, chatting with people from different countries on technical and non-technical matters. It helped to improve my spoken English which I was not using so much before. I even had discussions about English itself with people like Andrew Stubbs — thanks man!

There were also funny moments. I remember when in Budapest David Rusling told me that I got unofficial title “main complainer at Linaro” due to my post about what is wrong with all those cheap developer boards we supported. We were sitting at a table during “Meet & Greet” and there was one guy sitting there. I did not saw his badge and asked him which boards he used so far. He told: Freescale Quickstart. I answered: Ah, that square one with five edges? And then I told what I like and dislike in it. We had interesting discussion and at the end I saw his badge – he was Freescale person at TSC ;)

Or visit in Computer History Museum. Man, I should follow Paul McKinney there — he recognized probably most of the devices there and know what they are for. We had interesting talk about it next evening in a bus.

So, there are few weeks of Linaro work for me. During this week I am be in Copenhagen at Canonical’s Summit where I met my next team to find out what exactly I will be working on. Then we have Linaro Connect co-hosted with Ubuntu Developer Summit. It will be a strange week for me. Will attend ARMv8 Summit sessions due to work I did in last weeks but other sessions? For sure will attend some, both Linaro and Ubuntu ones but this time not as much as on previous summits. If you need me on you session then add me to the list of attendees or contact me.

Week after LC/UDS I will spend in Spain. There is Embedded Linux Conference Europe in Barcelona where I will have a talk about AArch64 support in OpenEmbedded. There will be also similar session by Wookey about ARMv8 in Debian — check LinuxCon Europe schedule for it.

But Barcelona is also OpenEmbedded related for me. There will be General Assembly of OE e.V. and then Yocto Project Developer’s Day where I plan to discuss with OE developers about merging AArch64 support.

Then few days of holidays at warm country, visit Zygmunt and go back home for another 2-3 weeks of Linaro work.

So lot of work to do. Need to take a look at what exactly I did during those 30 months, which parts of it will need new maintainer, write some notes/documentation for it, check PPAs for things which may need updating etc. So far I did not yet decided will I maintain cross compiler packages in 13.04 and later releases of Ubuntu or not. For sure I will do that to android-tools which are now part of Debian.

But is it end of my Linaro journey? I hope not. Time will show will I stay at Canonical. Today it is hard to tell because there are interesting projects there as well. But I do not want to end my Linaro adventure.

And one more thing. As usual when I end my work at one place I gather recommendations on LinkedIn. If you have few spare minutes and want to write something then it will be appreciated: my LinkedIn profile.


All rights reserved © Marcin Juszkiewicz
So long, and thanks for all the fish was originally posted on Marcin Juszkiewicz website

Read more
Marcin Juszkiewicz

As you may know during last months I was working on adding AArch64 architecture support into OpenEmbedded. During that time we used Versatile Express fast model which requires license. At the end we got Foundation model which can be used by anyone.

And today Linaro published availability of OpenEmbedded based images, Foundation fast model and cross toolchains targetting AArch64 (bare metal and glibc ones).

So if you want to check what I was working on during last months you can do it now. Just go to Linaro ARMv8 downloads page, fetch images, register at ARM website, fetch Foundation fast model and follow instructions.

Remember that this is software emulation so do not expect speed. But SDK image should be enough to start bootstrapping “we build natively” distributions like Debian, Fedora or Ubuntu ;D

I am very interested in feedback.


All rights reserved © Marcin Juszkiewicz
AArch64 for everyone was originally posted on Marcin Juszkiewicz website

Read more
Marcin Juszkiewicz

Today Alan Pope was surprised that I am using Midnight Commander. It was not the first time when I saw such reaction.

Why am I using mc? It is “simple” tool, works fine and I know it. Some of its features are useless today (like /#sh: way of handling copying over ssh which got replaced by sshfs) but if it works why I should abandon it? I can use it remotely (try it with Nautilus/Dolphin/Thunar), on every type of terminal (but was incredibly hardcore on HP2623A one).

But thing which I love it in is “patchfs”. It allows to handle diffs like archives but with read/write operations. I can remove not wanted parts from patch without going into editor. When I was dealing with crazy/huge patches I was able to clean them in few minutes


All rights reserved © Marcin Juszkiewicz
Yes, I am using Midnight Commander was originally posted on Marcin Juszkiewicz website

Read more
Marcin Juszkiewicz

Sometimes it is good to take a look at IRC channel in the evening. There will be new chromebook from Samsung. Someone may say “So what? It’s just yet another chromebook not worth looking at.” but I will disagree.

What is special in this device? Specification of course ;) Exynos5 Dual (5250) which has 2 Cortex-A15 cores, 2GB of memory, 16GB of eMMC (a bit small but 64GB sd cards exist) and all that in 11.6″ netbook case. There is no ARM device on a market which could be compared and run open source operating system.

I hope to get one soon — online stores will sell it on Monday. From what I know there will be a way to run other operating system than ChromeOS — I will switch to Ubuntu or Debian on first day probably.

And finally will replace Efika MX Smartbook.


All rights reserved © Marcin Juszkiewicz
New thing to buy: Samsung Chromebook was originally posted on Marcin Juszkiewicz website

Read more
Marcin Juszkiewicz

As already I wrote during summer I was working mostly on AArch64 (ARM 64-bit) — especially on OpenEmbedded support.

I spent time on reminding myself how OE works, learning new tricks and creating some limited images (we removed unneeded daemons etc) for our next step which would be booting ARM64 images in Fast Models. Yes, there is no existing hardware yet for this architecture :) But we want to have distributions ready for it when it became available.

Last Monday Linaro published glibc patches for AArch64 port so normal cross compiler works (people already built bare metal one) and work got speed up. During previous week I got opportunity to discuss with ARM Ltd. engineers about internal compiler errors in gcc and got some of them fixed next day. During hacking sessions in Linaro office (in Cambridge, UK) we managed to get most of our targets done:

  • oe-core minimal image
  • oe-core base image
  • on device toolchain
  • meta-toolchain based SDK
  • openssl working
  • libgcrypt ICE got work around
  • meta-aarch64 layer for OE-Core got published

Plans for this week are LAMP image and start merging everything usable back into OpenEmbedded. I do have OpenEmbedded Core branch already and need to create such one for OpenEmbedded.


All rights reserved © Marcin Juszkiewicz
ARM 64-bit porting for OpenEmbedded was originally posted on Marcin Juszkiewicz website

Read more
Marcin Juszkiewicz

When I published my last post about ARM boards there were many questions and suggestions with interesting devices. Thank You all for it.

But there were also suggestions about ARM9 or ARM11 based devices. So I decided that it is good time to write what interest me now in ARM world.

But first some inventory. I had/used/have several devices with ARM cpu:

  • StrongARM (armv4) one:

    • Sharp Zaurus SL-5500 (which took me to ARM world)
  • ARM920 (armv4t) ones:

    • Openmoko GTA01 bv3, bv4 (s3c2410)
    • EDB9301 (EP9301 cpu)
    • Sim-One (EP9307)
  • ARM926 (armv5te) ones:

    • Sharp Zaurus sl-5600 (pxa250)
    • Sharp Zaurus c760/sl-6000 (pxa255)
    • Sharp Zaurus sl-c3000 (pxa272)
    • Sheevaplug (kirkwood)
    • Atmel devboards (at91sam9263, at91sam9m10)
    • ST-Microelectronics/ST-Ericsson NDK-15, NHK-15 (st88n15)
    • Nokia 770 (omap1710)
    • Linksys NSLU2 (ixp425 iirc)
  • ARM1136 (armv6) ones:

    • Nokia N810 (omap2430)
    • Bug r1.0, r1.2 (i.mx31)
  • Cortex-A8 (armv7a) ones:

    • Beagleboard B7, B7, C3 (omap3430)
    • Nokia N900 (omap3430)
    • Nexus S (exynos3)
    • Genesi Efika MX Smartbook (i.mx51)
    • Freescale Quickstart (i.mx53)
  • Cortex-A9 (armv7a) ones:

    • Pandaboard EA1, A1 (omap4430)
    • Archos G9 80 (omap4430)

All of that during last 8 years. Most of my ARM live so far was around ARM926 based devices (some of them still can not be listed here) and I do not want to go there again. Kirkwood core was fastest one with 1.2GHz clock and 512MB of RAM it was really fast machine. I only missed Serial ATA in my Sheevaplug (rev 1.0) but even with hard drive on USB it was nice improvement.

Then I played a bit with ARM11 processors. Ok, they were faster than most of ARM9 cpus but I already had experience with Sheevaplug. And after few months first Cortex-a8 board landed on my desk — I got Beagleboard B7 from Bug labs as test platform for their new device. This was improvement!

I still remember my reaction when connected it to normal LCD monitor and saw it used at 720p resolution (1680×1050 was a bit hard for omap3). Moved to Nokia N900 few months later and found that fast cpu means nothing when paired with slow storage and not enough memory for system.

So today I prefer to not look below Cortex-A9 (or comparable cores like ones from Qualcomm or Marvell). Hope to play one day with Cortex-A5 (which should replace ARM926 one day) just to see how low-end armv7a cpu behave.

And wait for ARMv8 to hit market.


All rights reserved © Marcin Juszkiewicz
What interest me in ARM world was originally posted on Marcin Juszkiewicz website

Read more
Marcin Juszkiewicz

Over year ago I wrote post in which I complained about cheap developer boards but concentrated on ones supported by Linaro. This time I want to write about boards which I did not even had occasion to play with.

Most popular one was Rasperry/Pi. But as I already wrote why I’m tired of it I prefer to not discuss it too much. In short: old cpu core (ARM11), not enough memory (256MB), requires closed binaries even to boot (the GPU binary also contains the first stage bootloader).

Then we have a lot of boards based on AllWinner A10/A13 cpus. Single core Cortex-A8, no Linux kernel support in mainline. Fun is that there is Serial ATA controller in SoC but most of the boards does not offer that so users have to use SD or USB storage which is slower. Example devices: Hackberry, Cubieboard, Mele A1000.

Fun stuff starts to appear from Freescale area. i.MX6 cpu has potential and many options available. There are Wandboard, Sabrelite with second one providing interesting addons like mini PCI-Express slot (with PCIe signals) or small board with buttons (Android oriented).

Quad A9 boards are also available with Samsung s3c4412 cpu — like ODroid-X which I described when it was released. But no Serial-ATA in this processor.

So which one to choose? All depends what you want to do with it. Few days ago on debian-arm mailing list someone asked “Workstation based on ARM motherboard, good idea ?” which got me to conclusion that it possible to setup low specification desktop today with ARM cpu.

I wonder how much would I have to pay for mini-ITX compatible board (can be smaller but has to be mountable to normal PC case) with 2-4GB of memory (SO-DIMM preferred) with quad core cpu and Serial ATA. So I could connect usb mouse/keyboard, monitor though HDMI, speakers with 3.5mm jack, Ethernet (1GbE preferred) and boot Debian/Ubuntu straight from SATA hard drive or ssd. 2D/3D acceleration working and recent (max 2 versions old) Linux kernel working with not insane amount of patches. But such day probably will not happen.

UPDATE: Looks like VIA had such idea with their APC board. Neo-ITX format but components few years old ;(


All rights reserved © Marcin Juszkiewicz
Let’s take a look at ARM boards again was originally posted on Marcin Juszkiewicz website

Read more
Michael Hudson-Doyle

I wanted to use PostgreSQL‘s array_agg function from Django to help bound the number of queries a complex page makes.

I managed to make it work, but it was a bit painful. I’d love to hear from anyone else that’s managed to make it work, especially if you didn’t have to hack as hard as me :-)

First, let’s define some models for us to play with:

from django.db import models

class Location(models.Model):
    name = models.CharField(max_length=1024)

class Hurricane(models.Model):
    year = models.IntegerField()
    name = models.CharField(max_length=1024)
    location = models.ForeignKey(Location)
 

The problem I want to solve is: for a given Location, show the hurricanes that occurred for the last ten years in which there were hurricanes.

In this simplified case, this is probably quite easy to solve without being as fancy as I am about to be, but the thing that makes it non-trivial is the bit at the end: displaying from the last ten years is easy (“WHERE YEAR > 2002“) but there may be years where there were not hurricanes. The trick I want to use is to GROUP ON year, use array_agg to collect the ids of the hurricanes for each year, and use LIMIT to ensure I only get 10 years worth. Then I can gather the Hurricane ids up in Python code and issue another query to fetch them all in a single query. I’m aiming for something like this:

hurr=> SELECT year, array_agg(id) FROM hurr_hurricane
hurr-> WHERE hurr_hurricane.location_id = 1
hurr-> GROUP BY year ORDER BY year LIMIT 10;
 year | array_agg
------+-----------
 2004 | {2,1}
 2006 | {3}
 2007 | {4}
(3 rows)
 

I’ve never quite gotten my head around Django’s support for aggregates, but it’s not hard to get Django to emit a query of the right shape:

>>> qs = Hurricane.objects.filter(
...     location=loc).values('year').annotate(Sum('id'))[:10]
>>> print qs.query
SELECT "hurr_hurricane"."year", SUM("hurr_hurricane"."id") AS "id__sum"
FROM "hurr_hurricane" WHERE "hurr_hurricane"."location_id" = 1
GROUP BY "hurr_hurricane"."year", "hurr_hurricane"."year"
ORDER BY "hurr_hurricane"."year" LIMIT 10
>>> pprint(list(qs))
[{'id__sum': 3, 'year': 2004},
 {'id__sum': 3, 'year': 2006},
 {'id__sum': 4, 'year': 2007}]
 

We don’t want to SUM though, we want to array_agg. I don’t really know to what extent it’s actually supported, but googling can find enough of a clue on how to use custom aggregates with Django. Culting the approprate cargo leads to:

from django.db.models.sql.aggregates import Aggregate as SQLAggregate
from django.db.models import Aggregate

class SQLArrayAgg(SQLAggregate):
    sql_function = 'array_agg'

class ArrayAgg(Aggregate):
    name = 'ArrayAgg'
    def add_to_query(self, query, alias, col, source, is_summary):
        klass = SQLArrayAgg
        aggregate = klass(
            col, source=source, is_summary=is_summary, **self.extra)
        query.aggregates[alias] = aggregate
 

and then:

>>> qs = Hurricane.objects.filter(
...     location=loc).values('year').annotate(ArrayAgg('id')).order_by('year')[:10]
>>> print qs.query
SELECT "hurr_hurricane"."year", array_agg("hurr_hurricane"."id") AS "id__arrayagg"
FROM "hurr_hurricane" WHERE "hurr_hurricane"."location_id" = 1
GROUP BY "hurr_hurricane"."year", "hurr_hurricane"."year"
ORDER BY "hurr_hurricane"."year" ASC LIMIT 10
 

Yay! Except:

>>> list(qs)
[]
 

Huh? This sent me around the houses for ages and ages, but it turns out that there is an easy way of seeing the problem:

>>> for hurricane in qs:
...    print hurricane
Traceback (most recent call last):
    ...
    ...
File "/srv/lava/.cache/eggs/Django-1.4.1-py2.7.egg/django/db/models/sql/query.py", line 316, in convert_values
    return connection.ops.convert_values(value, field)
File "/srv/lava/.cache/eggs/Django-1.4.1-py2.7.egg/django/db/backends/__init__.py", line 843, in convert_values
    return int(value)
TypeError: int() argument must be a string or a number, not 'list'
 

(Something in executing list(qs) is swallowing the exception – I presume this is a bug, I’ll file it soon if it’s unreported.)

So let’s look at where the exception comes from (django/db/backends/__init__.py, Django version 1.4.1 below):

def convert_values(self, value, field):
    """Coerce the value returned by the database backend into a consistent type that
    is compatible with the field type.
    """
    internal_type = field.get_internal_type()
    if internal_type == 'DecimalField':
        return value
    elif internal_type and internal_type.endswith('IntegerField') or internal_type == 'AutoField':
        return int(value)
    elif internal_type in ('DateField', 'DateTimeField', 'TimeField'):
        return value
    # No field, or the field isn't known to be a decimal or integer
    # Default to a float
    return float(value)
 

Django appears to assume that all aggregates return numeric types. This is a bit annoying (another bug to file?), but there is a slimy hack we can pull: DecimalFields are assumed to be the correct type already and do not get converted. So here’s the final, working, array_agg support:

from django.db.models import DecimalField

class SQLArrayAgg(SQLAggregate):
    sql_function = 'array_agg'

class ArrayAgg(Aggregate):
    name = 'ArrayAgg'
    def add_to_query(self, query, alias, col, source, is_summary):
        klass = SQLArrayAgg
        aggregate = klass(
            col, source=source, is_summary=is_summary, **self.extra)
        aggregate.field = DecimalField() # vomit
        query.aggregates[alias] = aggregate
 

And to prove it works:

>>> pprint(list(qs))
[{'id__arrayagg': [2, 1], 'year': 2004},
 {'id__arrayagg': [3], 'year': 2006},
 {'id__arrayagg': [4], 'year': 2007}]
 

Yay! Now: does it really have to be this hard?

Read more
Marcin Juszkiewicz

In 2002–2003 I was thinking about becoming Debian Developer as I had some experience with packaging, solving problems with it etc. But then 2004 came, I bought Sharp Zaurus SL-5500 PDA and started using OpenEmbedded…

Time passed, I got even more experience about packaging, different build systems used in FOSS projects and made good use of that in OE, Poky work. And as a result I went to Linaro (though Canonical) and started working on Ubuntu packages…

So now, when I have my own packages: android-tools and powerdebug the time came to finally start work on becoming Debian Developer to give back to community which gave me so much during last 13 years of my use of Debian.

My application on debian-newmaint ML.

Related content:

  1. OpenZaurus 3.5.4 released


All rights reserved © Marcin Juszkiewicz
Finally applied for Debian Maintainer was originally posted on Marcin Juszkiewicz website

Read more
Marcin Juszkiewicz

Few months ago one of my friends borrowed SheevaPlug from me. About two weeks later he gave it back — bricked… I did not had time to play with it so it landed on shelf.

Yesterday I took it and decided to get it back to live. Requirements:

  • bricked SheevaPlug (v1.0 without SATA)
  • power cable
  • mini usb cable
  • usb thumb drive
  • OpenOCD (“apt-get install openocd”)
  • cross compiler (“apt-get install gcc-arm-linux-gnueabi” under Ubuntu)
  • U-Boot sources (HEAD of mainline)
  • Linux sources (also HEAD of mainline)
  • serial terminal (picocom, minicom, screen etc)
  • few terminals or terminal multiplexer (I used tmux)

Then:

  • Connected power and mini usb cables to SheevaPlug. Desktop recognized usb-serial device as /dev/ttyUSB1.
  • Connected to it with serial terminal. Nothing appeared there of course ;)
  • Run OpenOCD: “cd /tmp/;sudo openocd -f /usr/share/openocd/scripts/board/sheevaplug.cfg -s /usr/share/openocd/scripts”. SheevaPlug was detected.
  • Connected to OpenOCD: “telnet localhost 4444″.
  • Built U-boot:
export CROSS_COMPILE=arm-linux-gnueabi-
make mrproper
make sheevaplug_config
make u-boot.kwb
  • Copied “u-boot” to “/tmp/uboot.elf” and used “reset;sheevaplug_init;load_image u-boot.elf;resume 0×00600000″ — landed in U-Boot ;)
  • There is “sheevaplug_reflash_uboot” macro but it was not working for me. So I used U-Boot to flash itself:
Marvell>> usb start
Marvell>> fatload usb 0:1 0x0800000 u-boot.kwb
Marvell>> nand erase 0x0 0xa0000
Marvell>> nand write 0x0800000 0x0 0xa0000
Marvell>> reset
export CROSS_COMPILE=arm-linux-gnueabi-
make mrproper
make kirkwood_config
make menuconfig (set INITRAMFS_SOURCE to /dev/initfs)
make uImage
  • Copied “arch/arm/boot/uImage” to USB thumb drive and inserted it into SheevaPlug.
  • Booted image:
Marvell>> set ethaddr 'c0:ff:ee:c0:ff:ee'
Marvell>> set bootargs 'console /dev/ttyS0,115200 rw'
Marvell>> usb start;fatload usb 0:1 0x800000 /uImage;bootm 0x800000
  • Landed in nice and small Ångström distribution image ;)
  • Went to Ångström online image builder and built console image (task-base based).
  • Built Linux kernel (this time without initramfs):
export CROSS_COMPILE=arm-linux-gnueabi-
make menuconfig (unset INITRAMFS_SOURCE)
make uImage
  • Copied “arch/arm/boot/uImage” to USB thumb drive and inserted it into SheevaPlug.
  • Prepare NAND for UBI:
# mount none /dev -t devtmpfs
# udhcpc eth0
# opkg-cl update
# opkg-cl install mtd-utils
# ubiformat /dev/mtd2
# ubiattach -p /dev/mtd2
# ubimkvol /dev/ubi0 -N rootfs -s 490MiB
# ubiupdatevol /dev/ubi0_0 /media/sda1/angstrom-task-base.ubifs
# mount -t ubifs ubi0:rootfs /media/rootfs
# chown -R root:root /media/rootfs
# cp /media/sda1/uImage /media/rootfs/boot
# sync
# reboot
  • Another reconfiguration in U-Boot:
Marvell>> bootargs 'console=ttyS0,115200 rw ubi.mtd=2 rootfstype=ubifs root=ubi:rootfs'
Marvell>> bootcmd 'ubi part nand0,2; ubifsmount rootfs; ubifsload 0x800000 /boot/uImage;bootm 0x800000'
Marvell>> mtdids 'nand0=orion_nand'
Marvell>> set mtdparts 'mtdparts=orion_nand:512k(uboot),4m@1m(kernel),507m@5m(rootfs)'
Marvell>> save
Marvell>> reset

And now my SheevaPlug is operational again. Boots from NAND with latest U-Boot and Linux. There is around 440MB free still on NAND (not counting 4MB partition where kernel was expected to be). I can put it back on shelf now.

The only parts which I needed to compile were U-Boot and Linux kernel. I could skip bootloader and use binary image from Internet but prefer to know what my machines run (and building U-Boot is really easy). Initramfs support in Linux is real live saver as I did not had to play with initrd etc — just build image and boot it. The only problem was that devtmpfs was not auto mounted (even if option in kernel was selected).

I could also use one of those “easy installers” made by PlugComputer community but I found such solutions more complicated (fetching binaries, finding requirements etc) than the one I used.


All rights reserved © Marcin Juszkiewicz
Unbricked my old SheevaPlug was originally posted on Marcin Juszkiewicz website

Read more
Marcin Juszkiewicz

Day has started as usual. Looked at my Google+, Facebook and Twitter streams and noticed new toy: ODROID-X developer board from HardKernel.

Is it interesting board? Yes, it is:

  • Quad core Exynos4412 CPU (ARM Cortex-A9)
  • 1GB ram
  • 6 x High speed USB2.0 Host port
  • 10/100Mbps Ethernet with RJ-45 LAN Jack
  • Audio codec with headphone jack and microphone jack
  • (micro)HDMI output with audio

Open Exynos4 Quad Mobile Development Platform

As usual some things to complain about:

  • 1.8V serial console with own connector (15USD for cable)
  • microHDMI connector when normal HDMI would fit
  • no Serial ATA (Exynos 4210 has controller, no docs for 4412)
  • 2GB ram would be lovely (Samsung Galaxy S3 has it in Korean version)

Anyway looks like during month I will check does someone from friends wants to buy it and get one for myself. May be good replacement for Pandaboard and/or MX53 Quickstart.


All rights reserved © Marcin Juszkiewicz
ODROID-X developer board was originally posted on Marcin Juszkiewicz website

Read more
Marcin Juszkiewicz

When I moved to Canonical and Linaro I stopped using OpenEmbedded. But recently I got some tasks which involved it. In short: there is a plan to use OE to bootstrap ARMv8 support in some Linux distributions.

2 years ago OE guys started creation of OpenEmbedded Core set of metadata. I have to admit that I never used it at that time but supported idea (first mentions of splitting recipes was at OEDEM 2006.

This time using layers is the only way. So I fetched OE Core, OpenEmbedded and Linaro layers and did some builds to find out how it looks today. Some time later Ken Werner left Linaro team so I took over maintenance of meta-linaro layer. Improved documentation a bit and started creating small LAMP like image.

There were issues with toolchain. I use Linaro branded GCC and found out issue with binutils and then with C++ headers — sent some patches and problems were solved by Khem Raj in a bit other way.

After some tests and patches I got LAMP image working out of box. So moved to some more advanced things…

First was update of qemuarmv7a machine to use Versatile Express emulation instead of hacked Versatile PB one. Ken did work for 3.2 kernel but in meantime Yocto moved to 3.4 one. I looked at issues and tried to get it working.

OMG… Now I know why people say that OpenEmbedded have exponentially steep learning curve… Getting kernel into usable state is nightmare. Years ago defconfig was nearly sacred — there were few small changes done to it in kernel.bbclass/linux.inc but it was easy to understand. Now there are KERNEL_FEATURES which may be ignored, big set of scripts, config parts which may be applied (or removed or something else)… I really tried to understand it but my brain decided to go away.

Maybe other day I will manage to understand this magic stuff or will just go for linux-yocto-custom.bb or will write old style linux_3.4.bb recipe without all that magic.


All rights reserved © Marcin Juszkiewicz
OpenEmbedded again was originally posted on Marcin Juszkiewicz website

Read more
Marcin Juszkiewicz

Another week of conference passed. This time I was at Linaro Connect q2.12 which took place in Hong Kong Gold Coast hotel.

As usual everything started with packing. I have a list for it so it is usually quick job but you know — I was going to Hong Kong, world capital of cheap electronics so better have some space available just in case. So I borrowed bigger bag from friend, put some Linaro stickers on it (to be able to find it at baggage claim) and put all my stuff inside. Of course travel things went to backpack (have to buy more comfortable one).

And then trip began… In short: car, bus, wait at airport, plane, wait at airport, plane, catch Rob Clark, taxi, hotel. Total time: 22 hours.

Hotel was nice. View from room at “15th” floor (which was 12th due to 4, 13, 14 missing):

View from hotel window

Monday went with meeting people, sessions (scheduled and random ones) and some hacking. At end of day we had usual “meet & greet” dinner which was rather “seat & eat” style as we had it in room where we has lunch and there was not enough space to walk and discuss with people. For this I prefer UDS style where you have few points with food/drinks, lot of walking space and some tables here and there so you can grab something to eat and chat with many people during one evening.

Speaking of food… It was great! Breakfasts offered wide choice of Chinese, Japanese, Singapore food with Western options available too (some sausages, boiled eggs, British beans). Add fruits, sweets and all what was there to make sandwiches… Lunches were even more mixed. Something local, something European, salads, sweets — all that made me a bit heavier on return trip :D

Many people were surprised by lack of soda options as only coffee, tea and bottled water were available daily. For me it was not a problem as coffee + water were more than enough.

But back to sessions. There were many ARMv8 (aarch64-gnu-linux) sessions. I attended one of them where we discussed about building cross compilers, bootstrapping distributions etc. As rest of ARMv8 ones this was not broadcasted or recorded. Rest of sessions used Google Hangouts for remote participation. It worked well even with last-minute changes from Google which terribly broke setup we used for earlier Connects. I was on session where leader (Wookey) was remotely so we had “big brother is watching you” effect:

Big Wookey is watching you

Have to admit that this method of remote participation helps as users can just ask questions instead of relying on someone following IRC channel. But it is also limited to who can join so no use for conferences like UDS.

For me interesting sessions were ones around CI process. We have few such systems and each has different use. There is LAVA which gives us ARM boards to run tests on, Jenkins to run builds on x86 instances (Amazon EC2 like). Toolchain Working Group has “cbuild” which they use to build and test toolchain on x86 and ARM machines. And then there is also Launchpad which has daily builds from selected Bazaar branches. We had discussions about merging them and/or sharing resources (like a way to borrow ARM boards from LAVA to run cbuild). Hope that we will get something interesting from it.

But sessions are not the only thing to do. There are also after work activities. We got coaches available on Tue/Wed/Thu to Tsim Sha Tsui (TST in short) district, The Peak (Tue only due to cloudy weather) and somewhere else. I went to TST on Tuesday and we just walked around it, got some food (chopsticks only so we decided to not ask for cutlery and handle it — we managed) and for fun visited one of those shops with “TAX FREE” signs (which in tourist language means “YOU DO NOT WANT TO BUY HERE”).

On next day I went with Zygmunt Krynicki to Golden Computer Shopping Center near the Sham Shui Po station. Lot of computer shops compressed in small area. Everything from SSDs, mainboards etc to normal and weird cables. In one shop I asked for 0.5m long HDMI cables and got them so expect soon post about adding HDMI switcher to my devboards setup. Decided to not spend money on anything more expensive as there is no warranty that it will work and I do not want to ship hardware back to Hong Kong when it fail.

Thursday we want for team dinner. But before we decided to take a ferry from Avenue of Stars to Hong Kong Island and go for ice cream there:

Ice cream selection at

I went for ginger and green tea flavours as both sounded crazy enough and I am sure that will not find them here in Poland. Ginger one was great (even if I do not like ginger) but green tea one was awful — tasted like concentrate of concentrated tea.

Hong Kong Island skyline

Me and Alexandros at Avenue of Stars

Then we went to “Spring Deer” restaurant. Crowdy, long queue (even with earlier registration). As usual in Hong Kong I had to watch my head in few places. When we got table it looked like disaster but got cleaned quickly and were served with food.

For start they give us some oiled peanuts so we had interesting challenge as a way of practising eating with chopsticks. We ordered some pork, fish, vegetables and duck.

Vegetables - no idea which Pork or fish Pork or fish

duck Lotus seeds Bananas

After dinner we were able only to grab taxis and go back hotel ;)

Friday was my last day there. During packing bag I realized that this is my first conference when do not have any extra hardware (cables do not count). But I hope that sooner or later I will put hands on some kind of ARM server hardware (maybe one node Calxeda board which I heard rumours about). As there were nearly no sessions I went to one of hacking rooms for coding and got my patches reviewed by Matthias Klose — have to work on few of them, some were described as “have to merge as look ok”.

After lunch we had usual “Demo Friday” where people presented work of miscellaneous Linaro (but not only) teams. One of interesting ones was comparison of ASOP build of Android 4.0.4 contra Linaro build which was present on two same Pandaboards. Both were running 0xbench and results were cleanly visible. Changes are in review and on a way to ASOP tree (due to usual “Upstream, upstream, upstream” philosophy of Linaro).

Day ended with dinner in Chinese style. Food was good and interesting — especially when we were trying to find out what menu entries mean ;) There was a show of Chinese “Bian lian” art with a guy changing his masks. I was wondering for a moment how we did that but did not bother with it too much.

20:15 was bus to airport. Then usual stuff: wait on airport, plane, wait on airport, plane, wait on airport, bus, car, home. This time 26 hours. Saturday evening was a bit hard but with a help of melatonin I managed to get rid of it with 8h sleep. So this is first trip without jet lag problems.


All rights reserved © Marcin Juszkiewicz
Linaro Connect q2.12 was originally posted on Marcin Juszkiewicz website

Read more
rsalveti

This week I’m proudly participating at the Ubuntu Developer Summit to help planning and defining what will the Quantal Quetzal (12.10) release be in the next following months.

As usual I’m wearing not only the Linaro hat, but also my Ubuntu and Canonical ones, interested and participating actively at most topics that are related with ARM in general.

And what can I say after the first 3 days at UDS-Q? Well, busy as never before and with great opportunities to help getting Ubuntu to rock even more at ARM, with current devices/platforms and with the exciting new ones that will be coming in the next few months.

Here are a few highlights from the first days:

Monday – May 7th

  • Introduction and Keynote
    • Great start as usual by Mark, showing the great opportunities for both Canonical and Ubuntu, describing the new target and use cases, and also showing how important Cloud is now for Ubuntu. After that we had, finally, the announcement of a real hardware availability from Calxeda, proving that ARM server are indeed real! (which is a quite important accomplishment)
  • Schedule displays all working with our member’s boards
    • This was the first time that all the schedule displays available at UDS were all covered by the ARM boards provided by Linaro. This time we got Pandaboard, Origen and also Snowball constantly showing the schedule through all the day. Low power and powerful devices all around :-)
  • Plans for a minimum filesystem for embedded devices
    • Discussion to cover all the possible embedded related use cases for Ubuntu, and trying to understand the real requirements for a minimum filesystem (rootfs) for those devices. While we didn’t decide to generate the smallest-still-apt/dpkg-compatible rootfs for our users (as ubuntu-core is already covering most of the cases), we’ll provide enough tools and documentation on how to easily generate them. At Linaro side the Ubuntu Nano image should probably reflect such suggestions.
  • Identify impact of the switch to pure live images for ARM platforms
    • Here the focus was basically to review and understand if we would really continue providing pre-installed based images instead of just supporting live based ones. Having the images provided only at the SD cards are very useful to make the bootstrap and install quite easy, but it hurts badly the performance. As we’re now getting ARM boards that are very powerful in many ways, the I/O bound shouldn’t limit what the users would be able to get from them. The decision for Quantal is to drop support for the pre-installed images, and provide live based ones at the SD cards (think like the live-sd image as we have with CD on other archs), where the user would install Ubuntu the same way as done with x86, and using USB/Sata based devices as rootfs by default.
  • OpenStack Deployment on ARM Server
    • The focus of this session was basically to better understand what might be the missing pieces for a proper OpenStack support at ARM. Quite a few open questions still, but the missing pkgs enablement, LXC testing and support and KVM for a few platforms will help making sure the support is at least correctly in place. After initial support, continuous test and validation should happen to make sure the ARM platforms keeps well supported over the time (which will be better stressed and tested once MAAS/Juju is also supported properly at ARM).

Tuesday – May 8th

  • Detail and begin the arm64/aarch64 port in Ubuntu
    • Clearly the most important session of the day for ARM. Great discussion on how to prepare and start the ARMv8 port at Ubuntu and Debian, by starting with cross-build support with multiarch and later support with Fast Models and Qemu. A lot is still to be covered once ARM is able to publish the ARMv8 support for Toolchain and Kernel, and session will be reviewed again at Linaro Connect at the end of this month.
  • Ubuntu Kernel Delta Review
    • Usual review of the patches the Ubuntu Kernel team is maintaining at the Ubuntu Kernel tree. At Linaro this is important as we also enable the Ubuntu specific patch-set at the packages provided by the LEB, for proper kernel and user-space support. Luckily this time it seems the delta is really minimum, which should probably also start to be part of Linux Linaro in the following month.
  • Integrate Linaro hwpacks for ARM with the Ubuntu image build infrastructure
    • Usual discussion about trying to avoid replicated work that is strictly related with each ARM board we support at both Ubuntu and Linaro. Decision is to finally sync with the latest flash-kernel available at Debian and try to get the common project/package with the hardware specific bits in place, so it can be used by linaro-image-tools, flash-kernel and debian-cd.

Wednesday – May 9th

  • MAAS Next Steps
    • Session to review and plan what are the next steps for the MAAS project, which is also missing proper ARM support for now. Great discussions on understanding all the requirements, as they will not necessarily match entirely with the usual ARM devices we have at the moment. Here the goal for ARM is to continue improving the PXE support at U-Boot (even with UEFI chainload later), and understanding what might be missing to also have IPMI support (even if not entirely provided by the hardware).
  • System Compositor
    • Great session covering what might be the improvements and development on the graphics side for next release. Goal is to use a system compositor that would be started right at the beginning at the boot, which will then be controlled and used properly once lightdm is up (with X11). This will improve a lot the user experience on normal x86 based desktops, and luckily on ARM we’re also in a quite nice situation with the work done by Linaro helping getting the proper DRM/KMS support for the boards we support, so I hope ARM will be in a great shape here :-)
  • ARM Server general enhancements (for ARMv7 and perhaps v8)
    • At this session we could cover what seems to be the most recurrent and problematically thing at supporting ARM servers, which is the lack of a single and supported boot method and boot loader. UEFI should be able to help on this front soon, but until then the focus will be to keep checking and making sure the current PXE implementation at u-boot works as expected (chainloading UEFI on u-boot is also another possibility Linaro is investigating). There is also the request for IPMI support, which is still unclear in general how it’ll be done generically speaking.
  • Integration testing for the bootloader
    • As Ubuntu is also moving to the direction of continuous validating and testing all important components available, there’s the need for a proper validation of the bootloader, and the effect at the user experience while booting the system. For ARM it’s also a special case, as U-Boot is still the main bootloader used across the boards. Test case descriptions in place, and discussion will probably continue at Linaro Connect as this is also an area where we also want to help validating/testing.
  • ARM Server Benchmarking and Performance
    • Here the Ubuntu Server Team presented how they are benchmarking and checking performance at the server level at x86, and covering what might still be needed to run and validate the ARM boards the same way. For ARM the plan is to run the same test cases on the available scenarios, and also try to get Linaro involved by making sure this is also part of the continuous validation and testing done with LAVA. Another important topic that will probably be extended at Linaro Connect is finding a way to get the power consumption data when running the test cases/benchmarks, so it can be further optimised later on.
  • Compiz GLES2 Handover
    • Last session of the day, trying to find the missing gaps to finally get the OpenGL ES2.0 support merged at the Compiz and Unity upstream branches used by the entire Ubuntu desktop (across all archs). Following work and actions will basically be to fix the remaining and important plugins after merging the changes, and also getting a few test cases to properly validate the support at Ubuntu. Once all done, it should be merged ASAP.

These are just a few topics which I was able to participate. There are a lot of more exciting work coming on, which can all be found at http://summit.ubuntu.com/uds-q/. Remember that you’re still able to participate in a few of them tomorrow and friday, as remote access is provided for all the sessions we have.

I’m sure a lot of more exciting stuff will be discussed for ARM support until the end of this week, and at Linaro Connect, at the end of the month, we’ll be able to review and get our hands dirty as well :-)

Exciting times for ARM!


Read more
Marcin Juszkiewicz

During my stay in Oakland, CA (due to Ubuntu Developer Summit) I decided to attend also Tizen Developers Conference. Not that I have any relations with this platform — just wanted to meet some friends from Maemo times. And I did not had plans for Tuesday evening while Tizen visitors had social event planned in The California Academy of Sciences.

For those which do not know what Tizen is a bit of history. Years ago Nokia made few internet tablet devices (770, n800, n810) and phone (n900) which were running Linux distribution named Maemo. It was loosely based on Debian. In meantime Intel created Moblin which was their distribution for mobile devices. Few years passed and they joined forces and MeeGo was born. Nokia released N9 phone with it, ASUS had netbook running MeeGo and maybe few other devices appeared on market. Then history repeated: MeeGo merged with LiMo and they created Tizen project.

It is hard to tell was conference success or not because I did not attended any sessions there — just opening keynote by Jim Zemlin. On first day I also came for technical showcase and partner demos. But they were squeezed in very small room so it was hard to discuss with people showing their work. Maybe next time organizers will give at least 4m² per demo — this should be a minimum.

But today I got Tizen Developer Platform device and thumbdrive with SDK on it. So decided to play a bit with it. It was not enjoyable experience.

First ugly part was Tizen SDK “so-called” installer. 823MB shell script… I thought that those times passed long time ago. Anyway tried to run it. All I got was message that 64bits systems are not supported. Good to know that, but my x86-64 systems are able to run x86 binaries without problems. Ok, I made workaround and then got message about missing qemu, rpm, libsdl packages. No, I will not install rpm on my Ubuntu systems.

So I decided to cut that crappy shell script and take a look at tarball. Fast “tail -n+122 tizen-sdk-0423.bin >tizen-sdk.tar.gz” and I was able to extract SDK. Got 26 zip archives.

One of them contains rootfs created from packages based on Debian/Ubuntu packages. Some are from times when dinosaurs ruled the Earth (debianutils 2.17 was released in 2006), some are more fresh (like gcc-4.5 based on version from May 2011). In other words tradition started by Maemo is continued in Tizen and developers are given mix of fresh tools with long time forgotten ones. And Scratchbox 2.

To connect with device there is “sdb” tool. It introduces itself as “Smart Development Bridge” but in past it was named “Samsung Development Bridge” (run ‘strings’ on binary). And it’s father has a name “Android Development Bridge” and has some more options.

Anyway if you want to connect to device then few steps are required:

  1. On device go to settings and set USB to ‘USB debugging’ mode. This will switch it into cdc_ether gadget.
  2. On host do “sudo ifconfig usb0 192.168.129.1″ to configure networking.
  3. Connect to device: “ssh root@192.168.129.3″

And then you can enjoy system which is a mixture of few Debian/Ubuntu versions. And forget about updates — unless you know how to get to 165.213.180.233 and know password of “kb0929.kim” user there (taken from /etc/apt/sources.list file).

Device uses Linux 2.6.36 kernel with unknown patches on top including CMA and Android ones. Quite old one but works. Hope to get newer one from someone.

What I do not like is availability of sources. There is review.tizen.org website with git repositories but I want to vomit when I see commits like “let’s add 2.6.36 kernel in one commit”. Lovely lack of ideas how to help developers.

What I will do with device? Not decided yet. Waiting for instructions how to get into bootloader to boot own kernels. Then who knows… replacing Tizen with Android or Ubuntu?


All rights reserved © Marcin Juszkiewicz
Tizen: first impressions was originally posted on Marcin Juszkiewicz website

Read more