1. UDS-N day one

    At 4:30 had to get up and ~hour later I was in a bus to Berlin Tegel (TXL) airport. Arrived, met few people from Canonical, got first coffee. Lufthansa did not has so much luck with 10s as Ubuntu did so our flight moved from 10:10 by about hour. Reason was bad weather and traffic jam over Frankfurt airport.

    But finally plane landed there and trip though terminal began. After few minutes I heard that passengers to Orlando should hurry so I did. Just to wait insane amount of time in shuttle bus and then in a plane… Good part of flight was that there were many free seats so we (zyga and me) were able to seat next to each other.

    But long flights are boring… Lufthansa on board entertainment system uses wrong calibrated touch screens with very long reaction time. There were few good movies to choose but seating after the jet engine does not make it comfortable due to amount of background noise. On return trip I will test headphones from Nokia N900 as they should isolate more then Lufthansa ones (or ones which I use with laptop).

    Arrived in Orlando with about 40 minutes delay. Acceptable I think. Customs queue was huge and I did not track how much time we wasted there but everything went fine. We met few other people and took a taxi to hotel. American seat belts are strange - I prefer European way of mounting them instead of “let it hang from ceiling” which is used here.

    Met more people in hotel, got “all american burger” for dinner (was quite good) and went to sleep. Timezones difference kills — I woke up at 3:30 and could not get to sleep again ;(

    Written by Marcin Juszkiewicz on
  2. How to cross compile ARM kernel under Ubuntu 10.10

    So you got ARM device and want to build kernel for it? There are few ways how you can do it under Ubuntu 10.10 (or higher).

    First you need proper cross compiler. After “apt-get install gcc-arm-linux-gnueabi” you will get proper one.

    Next step is compilation of kernel. I will cover 2 things: Ubuntu kernel packages and own kernel.

    So… to cross compile Ubuntu kernel we need to have some libraries installed in ARM versions. Simplest way is to use “xdeb” for it:

    # apt-get install xdeb
    # xdeb -aarmel --only-explicit --apt-source linux-linaro
    

    This will fetch some libraries and install it in host system. But it will not build kernel for us :( Filled bug to not lose track of it.

    NOTE: check “dpkg -l *elf*-armel-cross” after xdeb run. If it does not return anything then you need to edit “/etc/apt/source.list” and add line with “deb-src” so APT will know where to go for sources. Do not forget to run “apt-get update” after edit.

    Next step is quite simple — all is needed is:

    $ cd linux-linaro-2.6.35
    $ CROSS_COMPILE=arm-linux-gnueabi- dpkg-buildpackage -b -aarmel
    

    After some time kernel will be cross compiled and packaged.

    If you want official Ubuntu kernel instead of Linaro one then use:

    $ apt-get source linux-source-2.6.35
    $ cd linux-2.6.35
    $ CROSS_COMPILE=arm-linux-gnueabi- dpkg-buildpackage -b -aarmel
    

    Other way (not supported by Ubuntu developers) is to build kernel from source outside of Ubuntu. Once you got sources unpacked and configured you need just one command: “ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- make uImage modules” to build kernel (replace uImage with zImage if your device does not use U-Boot).

    Written by Marcin Juszkiewicz on
  3. Are Ubuntu developers using Ubuntu?

    Yes, they (usually) do — but which one? And this is what I want to write about.

    Ubuntu 10.10 ‘maverick’ got released week ago. I was using it since UDS-M — especially on my laptop as 2.6.34 kernel worked better on it. Some developers told me that they do not touch it before first Alpha release, others wait for Beta releases even. Fun was with one friend who installed Maverick on his laptop and found that touchpad is not working any more (worked in Lucid)… But it was at RC phase so nearly nothing could be done…

    Now Natty development started. Both my x86-64 machines runs kernels from it, laptop is fully upgraded, desktop uses newer toolchain packages (will upgrade soon). But those are mine computers and I used Debian “sid” since it was created…

    Written by Marcin Juszkiewicz on
  4. PandaBoard: Beagleboard XM killer?

    It was known since previous UDS that there will be OMAP4 based PandaBoard available for developers. And some time ago pandaboard.org was started (for now with temporary website). Boards are still not available at distributors but there are some of them in different projects (like Ubuntu/ARM), some are on a way to new users (mine for example).

    When final price was announced many people said that PandaBoard is BeagleBoard XM killer due to same (179USD) price. But is it? Let have a look.

    First group of users for such boards are software developers. If they do not work for hardware companies then usually want to get more power for same price. So they will choose PandaBoard.

    Second group would be companies which want to produce own hardware based on OMAP3/4. Here it depends on how soon OMAP4 chips will be available in small orders. As OMAP3 can be bought now and BBXM is available to buy many will choose it as this allow to get own hardware ready to market in less then year with having working platform for own developers so final device will start with ready software. One of such is BUG 2.0 which I used at prototype phase. It was designed after using BeagleBoards with BUGBoard extension as base for hardware development.

    And Beagleboard XM is available to buy today — with fast CPU, 512MB ram, Ethernet, few USB ports it is big update to previous versions. I never used it — BB C3 is still my primary ARM development system. But in 2-3 weeks situation will change and BB will meet another C3 and one B7 versions in a box due to arrival of PandaBoard.

    Written by Marcin Juszkiewicz on
  5. Bazaar — what is wrong with it?

    Each time when I have to use Bazaar I feel sick. It takes hours to do things which should not take more then few minutes. Let’s start with today problem and compare it to git.

    I finally got armel-cross-toolchain-base to build with non-sysrooted binutils. It required adding one patch and building binutils twice (once with sysroot for use during build, second without to put it in Ubuntu archive). After whole work I had 2 files to add, 3 hunks of changes in debian/rules and that’s all.

    So I used “bzr add” on new files and “bzr commit -i” to select which hunks goes into which commit and repeated it until all changes landed in local branch. But then I discovered that I forgot to add 1.51 version into debian/changelog file before whole that work. So I did it now and next commit added 1.52 version.

    And this is when whole “fun” started… I wanted to move r131 (the one with 1.51 changelog entry) to be before r128 one. With git it is just a matter or “git rebase -i” and whole work is done. But this was bzr…

    bzr rebase” command (part of “bzr-rewrite” package) supports only rebasing on top of other branch. But it was also useful as my branch was a bit out of sync with upstream one. So I started to ask questions on #linaro channel as Zygmunt was there and his knowledge of Bazaar was a big help in past. There were few ideas and I did some reading in meanwhile.

    One solution was “use pipelines” and you know? They even works but then I needed to cherry pick one commit (r131 one). The only way which I found was “bzr merge -r130..131 :first” and I got all changes but not changeset. Right, git users, you have to commit after merge (and use “bzr log” to find commit message). And when you try “bzr merge” for few revisions they will be squashed… So finally what I did was merging changeset by changeset and commiting with original commit messages. Good that it was just few of them.

    So after more then 10 minutes (“git rebase -i”) I finally got branch ready to be pushed. Next time I will spend that time on checking what is wrong with git-bzr-ng plugin as this will give me working two-way handling of Bazaar repositories without touching “bzr” command.

    Written by Marcin Juszkiewicz on
  6. Coreboot is awesome

    Two weeks ago I was updating Award BIOS on Alix.1c board and failed — computer bricked :(

    But there was a way to get it to working state again — PC Engines (vendor or Alix boards) has LPC1a adapter with extra BIOS chip. I contacted them and few days later it arrived here (I will send it back as it is loaned).

    Use is simple: plug into LPC connector, boot machine, reprogram on-board flash chip, power off, unplug lpc1a, power on. But I decided to make a use of it and decided to migrate from Award BIOS to coreboot with some extra payload.

    As I use only Linux on Alix I tried FILO first. It booted to prompt but refused to see files on CompactFlash card. GRUB v2 supports coreboot but did not run so I tried SeaBIOS instead. And that was it — clean, fast boot to GRUB from CF card.

    There is one problem which I did not solved yet: VGA BIOS rom does not work for me. But I will rather do not spend time on it as framebuffer under Linux works without it and I do not plan to run FreeDOS or other systems which would do VGA BIOS calls. Other option is to use SGABIOS which redirects input/output from video card to serial port — works fine.

    But the nicest moment was still before me. When I disabled all debug output in coreboot and SeaBIOS I got HUGE improvement in boot time. Linux was loading in a time which previously was needed for Award BIOS to make a beep sound…

    Written by Marcin Juszkiewicz on
  7. I am not a filesystem expert

    Dear fsck

    I am not a filesystem expert so when you said to me “filesystem has errors, please run me without -a -p options” I did that. But then you gave me some numbers asked question which I did not had a chance to understand (even Google query did not helped) so I dig for my dusted normal user hat and pressed “Enter” key. Then again and again and again and then I just looked for something heavy and put it on keyboard so you will stop interrupting and just do your work.

    So can you just do what you can next time instead of asking me to keep “Enter” key like any other monkey? That heavy object was hedgehog made by my lovely daughter and I prefer to not use for things like that.

    Sincerely yours, Marcin

    Written by Marcin Juszkiewicz on
  8. Is designing UI simple with Qt?

    I use Qt on my devices since my first LinuxPDA: Sharp Zaurus SL5000 on which I used OpenZaurus with OPIE as primary environment. It was based on Qt/Embedded 2.3.x and was looking ok. UI of most applications work properly in both portrait and landscape modes, adapted to size of fonts (I used smaller then default ones).

    Then Zaurus c760 arrived at my place and I did some UI code tweaks to make everything looking better on VGA screen (not that it looked wrong — I just improved few things). At that time I had nearly every Zaurus model in hands and took care to make all looks proper in both orientations.

    From time to time I was also playing with 3rdparty applications to adapt them to resolutions higher then QVGA (which was sort of standard in palmtops of that era). Usually loading UI files into Qt Designer and reordering them or adding layouts helped. One of them was Mileage which required adding huge amount of layout elements just to make it look properly (all elements were put as X,Y positions originally).

    Some time later I moved to GTK/X11 based environments on portable devices and later my cellphones took PDA place.

    But with Nokia N900 I decided to go back to programming with Qt - 4.6 version this time. First was my module player (which I probably never end) and some time later I decided to play a bit with Vexed released by Paul Romanchenko (rmrfchik on #maemo) where I reorganized UI a bit, added portrait support and did few other tweaks.

    But then I switched to ApMeFo and while idea of application is good the UI is disaster:

    • tabs in main window
    • lack of portrait support
    • unusable UI when forced to portrait mode
    • use of non standard button sizes
    • use of non standard font sizes

    And sources lacked UI files… So one day I decided that it will be good occasion to learn something new. Author was not responding to my sources request so I launched Qt Designer and started to recreate UI from scratch — using existing sources as information what kind of widgets were used. Took me some time but I got new, a bit improved UI which even worked in portrait mode:

    UI in portrait mode
    UI in portrait mode

    But it still was not what I wanted. It still had tabs and small buttons… First I got rid of tabs:

    UI without tabs
    UI without tabs

    Rest of functionality was moved to menu and separate window:

    separate window
    separate window

    I was not too proud of it. OK, it looked better, I even changed some non-UI code but it still was not what I wanted to achieve. But at least I had something what I could give to users for testing.

    How does it look now? Let me show not yet published version:

    First main window — all buttons are finger friendly. I also grouped them a bit — it is visible in portrait mode which is also great when user want to re-order items.

    Main window
    Main window
    Main window in portrait
    Main window in portrait

    Dialog to select applications to add got some changes too. It is maybe not conform with UI style guide (OK not under but on right) but it gave me extra line in list widget. Think of multi selection…

    Add application dialog
    Add application dialog

    As you see (de)activation and folders are now in menu. (De)Activation has also Yes/No requesters :)

    Menu
    Menu

    Folders window is place which needs lot of work. Only delete works now (also with Yes/No requester).

    Folders window
    Folders window
    Folders window in portrait
    Folders window in portrait

    List of things to do is long as users suggested many things. I probably will not add most of them because so far I did not checked how exactly ApMeFo works but once I will read rest of source code I think that something good will come from it.

    And is designing UI simple with Qt? I think that it is — developer does not have to worry what kind of paddings are needed to be used, how to place widgets to make UI conform to style guide rules etc. Once you do design with layout elements application adapts itself to what is available.

    Written by Marcin Juszkiewicz on
Page 48 / 106