1. Started X11 on AArch64

    We are using OpenEmbedded to build software for AArch64 (64-bit ARMv8 architecture). There are some components which do not build and we fix them when time allows.

    So today I looked at stats of my nightly build of “bitbake world -k” and notices 46-49 build failures. Went thought list, removed those which are already reported for porting, tried to build failed ones to find out how much work we need to get it fixed. And one of them was “xserver-xorg”…

    I took a chance and got it built by patching few source files. Few minutes later I got it booted in commercial ARMv8 fast model (foundations one lacks graphics emulation):

    ARMv8 desktop with wrong byte order
    ARMv8 desktop with wrong byte order

    As you see Xterm window in unreadable. So I changed byte order, rebuilt and booted image with new Xserver:

    ARMv8 desktop with proper byte order
    ARMv8 desktop with proper byte order

    I do not plan to test X11 environments in fast model — it takes too much CPU time. But it is nice to see native 64-bit X11 running ;)

    Written by Marcin Juszkiewicz on
  2. 2012 timeline

    Another year passed. It was busy one with some job related turbulence… But let me start.

    January

    February

    • Linaro Connect in Redwood City (San Francisco area) was great event. The walk to Golden Gate was one of best parts of whole trip. Too bad that I decided to not stay for ELC which was few days after — most of US OpenEmbedded developers were there…
    • Went to New York City on return trip. 36 hours is far too small amount of time to visit this town… Met guys from Bug Labs ;)
    • Skipped FOSDEM for second time ;(
    • I bought that Archos 80 G9 Turbo tablet. Most often self asked question during next months was “why???” — it feels slower than my Nexus S… But my daughter likes it as she has some games, books and films on it.
    • My howto about flashing U-Boot on Efika MX Smartbook got re-used somewhere on Genesi website as many people found it useful.

    March

    April

    • Easter. Family etc.
    • Attended local Ubuntu release party.

    May

    This was busy month — just one weekend for family ;(

    • Ubuntu Developer Summit in Oakland (San Francisco area again). Did some sight-seeing, went to cinema — had good spent time. As usual did some shopping at Amazon ;)
    • Attended Tizen Developers Conference as it was just 2 stops from UDS/Q hotel. And some friends from Maemo times were there. And there was great social event on Tuesday…
    • Got Tizen Developer Platform device, played a bit with it and wrote few words about it. Few months later I sent this brick to some guy in Norway — maybe he will do something interesting with it.
    • At end of month I went to Hong Kong…

    June

    • There was Linaro Connect q2.12 at Hong Kong. For me it was first visit in Asia. Did some sight-seeing but hope to see more in March 2013 when Linaro Connect Asia will take place at same hotel.
    • ARMv8 related work started.

    July

    • New stuff, old tools. Or in other words: started using OpenEmbedded again. This time some preparations for ARMv8 work — created some images and Jenkins jobs to build them. Few months later we switched architecture and fun started.
    • Also unbricked my SheevaPlug after my friend’s play. Now it is un-bootable again ;D

    August

    • Spend few weeks on holidays. Good time it was.
    • Some people assigned by Canonical to work on Linaro went back and left our teams. I was on a list too, but convinced management that ARMv8 work may need my skills ;D

    September

    • Applied for Debian Maintainer. Got accepted some time later.
    • Attended SmartDev Conference. I was member of programme committee. Nice event it was. Also met some old friends there ;)
    • Started ARMv8 work in OpenEmbedded. First with some internal patches so I could not tell too much about progress. And there were sad moments due to that — like when I cross compiled first programs but had to wait 2 more weeks before could say that in public…
    • Wrote two posts about ARM devices and why I am not interested in anything below Cortex-A9 ones. This time it was more polite than similar post from 2011.

    October

    • ARMv8 sprint in Cambridge. During that week Linaro published glibc patches for AArch64 so I was able to finally share my work with outside world. And as usual met some old friends ;)
    • 3 weeks later everyone was able to run ARMv8 binaries.
    • Also that month there was decision made that I will move to Canonical at beginning of December. Everything was setup so I sent farewell e-mail to everyone at Linaro. But later it got reverted and I will probably never know why and who made that decision.
    • Went to Copenhagen for Canonical internal event to meet the team which I planned to join. Got lot of information about company plans which I am not allowed to talk about.
    • Another Ubuntu Developers Summit took place.
    • Also Linaro Connect q3.12 started.
    • And Google + Samsung announced new, ARM based, Chromebook. So I bought one ;D

    November

    • During Linaro Connect Andrew Wafaa gave me my Chromebook and I managed to get Ubuntu running on it. Lot of help came from Olof Johansson — without him it would be much harder work. Managed to fry speakers ;(
    • Then I went to Barcelona for ELC/E and Yocto developers day. Met friends, had lot of fun.
    • Got BeagleBone and The Fish River Island 2 devices. Still did not booted second one.
    • Spent few days at Palamos, Spain. Lovely time to relax after 3 weeks of conferences — thanks to Zygmunt Krynicki and his wife.
    • Did last update of cross compilers for Ubuntu. Looks like Matthias Klose will take care of them now.

    December

    • My sister gave birth to two daughters! So now I am uncle at my part of family as well :)
    • Created project and team at Launchpad to unite people hacking on ARM Chromebook support. Mailing list is not so used but we got some bugs and first set of packages. So if you have such device and use Ubuntu on it… join us! If you use other distribution then also join us ;)
    • Snapdragon S4 Plus APQ8060A based DragonBoard arrived on my desk. Waits in queue…
    • Got own kernel working on Chromebook. It is now available in PPA.
    • Went to Silly Venture demoscene party. It was Atari event. Awesome one!

    What will 2013 bring? There will be some changes, new projects, devices… But I will write about them at proper time.

    Written by Marcin Juszkiewicz on
  3. I want to update my mobile phone

    During last few days I played with CyanogenMod 10.1 nightly builds on my Nexus S phone. Then went back to CM 10 as it is more stable. But this also reminded me that I have 2 years old device…

    So I did another round of checking what are options. As it will be for next 2 years I want 2GB of RAM, 720p screen and LTE support. And there is very small amount of those :(

    1. HTC Butterfly. MicrosD slot, 1080p screen, Japan only so far.

    2. LG Nexus 4. Latest Android for few releases granted. But also lack of microSD slot and only 16GB of storage.

    3. LG Optimus G. Base of Nexus 4. Not available outside of few operators (mostly US).

    4. Samsung Galaxy S3 LTE (GT-9305). MicroSD slot, MHL video output.

    5. Samsung Galaxy Note II. MicroSD slot, MHL video output.

    Now it is time to complain :)

    LG Nexus 4 is available only in some stores (or phone operators) for 450+ € — no Google Play Store like it was with earlier models (I do not call current state as selling). Also no LTE on European frequencies. No 32GB storage model.

    Samsung GT-9305 sounds interesting. But… It is Exynos 4412 based. And I read The Saga of a CyanogenMod Exynos4 device maintainer by Andrew Dodd which gives clear message “avoid Exynos4 if you can”. If even Samsung update can break your device then something is going wrong. And so far SGS3 LTE lacks CyanogenMod support which is one of main blockers for me as it shows that there are no custom “ROMs” for it (I do not count images remixed from stock images).

    Galaxy Note II is huge and would take some time to get used to it. Has CM support already. But again — Exynos4 ;(

    So it looks like I need to wait another few months and check will there be something worth buying. In meantime I will stay with last CM10 release running on my Nexus S.

    Written by Marcin Juszkiewicz on
  4. How open Chromebook is?

    Few people already asked me how open Samsung Chromebook is. So let’s take a look.

    Kernel is open. Git tree is available and so are instructions on how to build it. You can check post by Olof Johansonn or take a look at Chromium ebuild. Remember that images need to have DeviceTree attached.

    There are few firmware blobs but most of them are available in “linux-firmware” package in Ubuntu. The only exception is “mrvl/sd8797_uapsta.bin” file which is present in Marvell’s firmware repo.

    You also need to sign kernels. But tools and developer keys are available as well. We have preliminary version of package for it.

    X11 drivers are available as well. Both video (armsoc) and input (cmt) are open. You can run X11 just fine without them even. I provide armsoc one but decided to skip “cmt” one cause “evdev” one works ok.

    So where are those ugly binary blobs? In standard places…

    One is OpenGL ES support. There is “libmali.0.0.35” which works as libEGL and libGLESv2 but no source for it (kernel part is open). Also license is missing. You can copy it from Chromium (I made package for Ubuntu) but results vary. I would love to get it working cause it can make Chromium browser faster.

    Other is video acceleration. Under Chromium there is set of OpenMAX libraries. Under Ubuntu I see only crashes.

    Flash plugin is yet another story. Rune K. Svendsen got it partially working but it is still not like it could be.

    There is also Google Hangouts plugin under Chromium. So far no information will it work under non-Chromium distribution.

    If you have anything to add here then write a comment. And consider joining “Samsung Chromebook (ARM) hackers” team to help us in getting our distros working better and better.

    Written by Marcin Juszkiewicz on
  5. I did not finished with Chromebook

    Some time passed since my earlier post. I had to think about few things and made some decisions.

    I will write an installation instruction for Samsung Chromebook users — about installing other operating system on internal storage. Targeted at advanced users but with more or less exact steps. If you do not know how to enable “developer” mode in Chromium then sorry…

    And in meantime I worked on packaging. Few minutes ago I pushed kernel to my PPA and once it get built I will offer it in Chromebook hackers PPA so users will be able to use it instead of Chromium OS one. It will need signing and putting on proper partition but, like I wrote above, my packages are not only for novice level users.

    Thanks to work started by Antonio Terceiro we have preliminary version of vboot utilities package. I cleaned it a bit and got to state when “cgpt” and “vbutil_kernel” are provided so playing with partitioning will not need files from Chromium OS. Will upload it into PPA as well.

    Left speaker in my Chromebook died totally so I decided to spend some time on getting UCM profiles available in “quantal” and “precise” releases of Ubuntu as well. SRU process in progress…

    Also got 32GB microSD card so one step closer to having other distributions running. Thinking of Debian here of course. But it is in deep freeze now so harder to get new packages there.

    How can you help? Test, file bugs, attach fixes to bugs. And can also replace speaker in my Chromebook so I will not have to use headphones ;D

    Written by Marcin Juszkiewicz on
  6. How to fry speakers in your Chromebook

    Lot of people asked me how I managed to fry left speaker in my Chromebook. There are also few which said that it is Ubuntu fault.

    So today I used recovery to wipe out my installation of Ubuntu from device and decided to check under Chromium OS. And yes, I got nice smell of burnt plastic etc coming from left speaker area.

    Why? Because it is kernel bug. Not Ubuntu, ALSA or user. Ok, it is a bit of user’s fault cause you should not have to play with ALSA mixer. But you can — all binaries are part of Chromium OS stable.

    So let me give you needed steps:

    1. Boot Samsung Chromebook (ARM one) to Chromium OS
    2. Login or use guest session
    3. Run terminal (Ctrl+Alt+t)
    4. Run “alsamixer -c0”
    5. Set “Lineout” to highest value
    6. Unmute everything what starts with “Left” or “Right” (depends which speaker you do not like)
    7. Touch speakers (but better not for long)
    8. Hold “Power” button to shut down before it will burn though your desk.

    In normal situation I would assume that sound driver will take care of combinations which may break your hardware. But looks like Chromebook developers did had such idea.

    Is this howto useful? I think it is. Cause if you have device broken in some way and you want to get it replaced you can just run it and hope for replacement instead of repair.

    And when next time someone will write me “go and fix ubuntu rather than putting blame on samsung. Its Ubuntu which is the cause” like I got in recent comment I will just ban such person from commenting.

    Written by Marcin Juszkiewicz on
  7. Dear Samsung: @#$@%@!!!!11!!$#$# you!

    I bought many Samsung products. There were monitors, cellphones, storage and others. But I am starting to feel that it is time to change vendor…

    All because Chromebook…

    Device pushed to market in a big rush with kernel allowing users to burn devices. I really do not like smell of burnt speakers and plastics. Like Dylan Reid commented my Google+ post:

    I’m guessing that a path was set up from MIC1 (wired to DMIC in) to the left speaker output. Playing the digital mic input as analog at full volume seems like something that might cause speaker failure, and wouldn’t necessarily be audible while it is happening.

    My device runs Ubuntu 13.04, has UCM profiles installed to get sound working on what left from speakers but if application touch ALSA in wrong way then I have to open windows to get some air and get smoke out.

    I never had such problems with all devices I played with. NEVER

    Written by Marcin Juszkiewicz on
  8. There are other compilers than $(CC)

    I do a lot of cross compilations. With different software elements. But sometimes I want to kick their authors into ass…

    There is a good sign when you see $(CC) in Makefiles as it shows that author of code learnt that “gcc” is not the only compiler. But this is not the only compiler you should know about.

    Recently I was adding one component (will save a name) into OpenEmbedded as this is one of dependencies for some bigger project (which I do not want to blog about). Argh… I managed to cross built it but patches are UGLY (will get better).

    Using $(CC) to build everything is just broken. Especially when you need to compile a tool which will generate some code to get everything built. There is $(BUILD_CC) for it but you have to use it wisely. If there are common parts then compile them with $(BUILD_CC) if you need to run it and with $(CC) if you not. This way we, cross compilation guys, can just do “./configure;make;make install;package” is it native or cross build. Autotools (die, die, die) are able to handle that — so is your code if you write Makefiles properly.

    But do not reuse same object files for target and native binaries — let it be “common.o” and “native/common.o” for example. OK, if you do only native builds then it will take a bit more disk space but we have 2012 not 1995… Storage is cheap.

    There is also $(HOST_CC) but that’s for other post…

    Written by Marcin Juszkiewicz on
Page 37 / 106