1. How time flies…

    Tomorrow there will be 6 (six) years since my first contribution to OpenEmbedded project. It was plugin for OPIE — palmtop environment which I stopped using (and developing) years ago running on device which I no longer own (Sharp Zaurus SL-5500).

    There were interesting moments during those years but I covered most of them year ago so will not repeat here.

    Now I am using OpenEmbedded derived distributions on many devices at home. Some runs Ångström, some runs BUG Linux, some runs random stuff… But I still have one Zaurus in case if I would like to check how does it works those days :D

    Written by Marcin Juszkiewicz on
  2. Transplanting bugLCDs

    As you know from previous post about BUG 2.0 new device require using of new LCD module. I got one but without case.

    Using screen case less is asking for problems — think of all short circuits it can do… So I decided to move new LCD into case of old LCD module (I have two of them).

    So first let’s look at case donor: old LCD module. Front view:

    old LCD module - top view
    old LCD module - top view

    Back view with all tools required (module was signed for FOSDEM as we had two bugs there and I wanted to know which modules/bugs are mine):

    old LCD module - bottom view
    old LCD module - bottom view

    And dissasembled:

    old LCD module - dissasembled
    old LCD module - dissasembled

    PCB view (notice plastic frame between PCB and LCD — it fits new module too but I isolated screen instead):

    old LCD module - PCB view
    old LCD module - PCB view

    New LCD on left, old one on right. Large connector is for screen, smaller for touchscreen. And they are different then in old one:

    PCBs from old and new module
    PCBs from old and new module

    Modules with screens attached. Old bugView modules also were using Sharp screens and I did not looked at my second one.

    old and new modules with screens
    old and new modules with screens

    First problem during mounting — BUG 2.0 video slot is reversed… But few minutes with sharp knife solved that problem.

    new module does not fit old case
    new module does not fit old case

    And this is how result looks. On left side is VonHippel module fitted into BMI adapter, on right new LCD in case from old one:

    BUG 2.0 with LCD module in a case
    BUG 2.0 with LCD module in a case

    Yes — there are two pieces of isolation tape on board. Those blue LEDs are too bright so I had to make them less annoying.

    Now I have screen working, X11 starts — time for touchscreen driver.

    Written by Marcin Juszkiewicz on
  3. BUG 2.0 arrived

    Some time ago there was decision that BUG 1.x will not be supported with next version of BUG Linux. As a result I ended in situation when I worked on handling device which I never saw.

    It was not first time — in OpenedHand times I had this quite often but it is not a problem because my “hardware park” covers nearly whole ARM family:

    • armv4t (s3c2410 in Openmoko GTA01, EP3907 in Sim.One)
    • armv5te (at91sam9263, at91sam9m10 on Atmel boards, PXA255 in Zaurus c760, Sheeva in Marvell Sheevaplug, omap1510 in Nokia 770 tablet, ST88n15 in NHK-15)
    • armv6 (omap24xx in Nokia N810, i.mx31 in BUG 1.2/1.3)
    • armv7a (omap3530 in BeagleBoard B7/C3 and in Nokia N900)

    So I am able to test binaries on other hardware or even in QEMU.

    But few days ago I got information that developer version of BUG 2.0 will be sent to me. To make me more happy I ordered few books from Amazon to get them with package (inside US I got free posting). And today package was delivered by FedEx courier (their tracking page said Friday as delivery day).

    Package reminds why recycling is easy: UPS package from Amazon (the one with books which I ordered) was repacked and got FedEx papers:

    Package closed
    Package closed

    But box itself is not interesting — stuff in matters. After taking books out I got lot of packing bubbles and my eyes were presented with first level of things:

    Package opened
    Package opened

    And then second one:

    Next layer of items
    Next layer of items

    Everything unboxed:

    All items from a box
    All items from a box

    And again but this time without packaging. From left-top to right-left:

    • BUGduino module
    • camera module
    • OMAP3 video module with HDMI and VGA outputs
    • new LCD module
    • LCD screen with touchscreen (for LCD module)
    • battery
    • BUG 2.0 dock with serial (miniUSB), Ethernet, USB host, JTAG connectors
    • BUG 2.0 rev. A
    • two BMI adapters
    • BMI cable extender
    Unpacked items
    Unpacked items

    Look at new modules. First goes BUGduino which is Arduino thing with BUG connection. I do not know how it works but I knew that John Connolly did some programming for it.

    BUGduino module
    BUGduino module

    New LCD module — QVGA like before.

    LCD module
    LCD module

    Video module with HDMI and VGA outputs. This one is BUG 2.0 only as it uses OMAP3 signals and needs BMI slot with video signals. Yes, new BUG has only one slot for video — two screens configuration is not possible anymore. But hey — you can even connect 150” LCD ;)

    Video module
    Video module

    New camera module. I do not remember how many Mpx it has (old one had 2Mpx).

    Camera module
    Camera module

    BUG 2.0 itself. Notice two microSD slots — one will be used for system, second is for user. There are just two buttons now, no LCD, no joystick. Also buzzer got removed in favour of headphone connector.

    BUG 2.0
    BUG 2.0

    New hardware requires new BUGDock. What got changed? Serial is now present as miniUSB connector instead of DB9 so is easier to use with today computers (not everyone has 7 serial ports in desktop). Power and headphones connectors were removed because on-board ones are reachable. And JTAG connector is present. To tell the true I like old dock more then current one. But thats mostly because of angle connector instead of flat one. Anyway before BUG 2.0 will hit market there will be new dock for it.

    BUGDock side view
    BUGDock side view
    BUGDock top view
    BUGDock top view

    And thats how system can look. BUG 2.0 with Dock and two modules connected by adapters.

    Whole system with dock and two modules
    Whole system with dock and two modules

    Now I am waiting for Bug Labs guys to appear in the office to get informations how to boot it ;D

    Written by Marcin Juszkiewicz on
  4. Sheeva SD controller + rootfs on SD == FAIL?

    Few days ago I decided to migrate from Ångström to Debian on my Sheevaplug. Fetched installer images, booted them and installed system to 4GB microSD card. All was fine.

    System was running nicely until today…

    MicroSD card started to generate timeouts, read/write errors and other not nice messages. End effect: not booting system. Now I started Ångström and plan to rescue as much as possible from card. Next attempt will be with rootfs on USB stick.

    Written by Marcin Juszkiewicz on
  5. Gource + OpenEmbedded

    Few days ago I found Gource — a software version control visualization tool. Software projects are displayed as an animated tree with the root directory of the project at its centre. Directories appear as branches with files as leaves. Developers can be seen working on the tree at the times they contributed to the project.

    I started it against OpenEmbedded repository and was amazed. Looks really nice but also shows that we are too big project for that tool. After experimenting with arguments I generated short video which shows how we worked:

    It took over 9 (nine!) hours to generate but was worth it. Especially I suggest to check moment when stable/2009 branch was created (1st April 2009) — it is best seen with frame by frame mode.

    Written by Marcin Juszkiewicz on
  6. Qt under Maemo is pain to develop with

    I have my own Protracker module player written for Maemo5. I used Qt because I am familiar with it and like it. But Maemo5 makes simple things harder…

    First thing: which version of Qt? Yes — there are two of them:

    • 4.5.3 which was ported by community, does not follow Maemo5 look & feel but is present on each Nokia N900 by default
    • 4.6 ported by Nokia, follows Maemo5 look & feel as much as possible but present only in extras-devel repository

    I used Qt 4.6 because of proper look and working Phonon.

    Second problem: moving API. Ok, I know: it is extras-devel so not safe for devices but why I have to rebuild application after each “apt-get update/upgrade” cycle? First it was removal of QMaemo5KineticScroller, then rotation code changed.

    Rotation is 3rd problem. In recent packages there is support for automatic rotation without any code other then setting window attribute for it. It is even documented. But it does not work — even in official example. From one commit to qt/maemo5 repo I got a feeling that automatic rotation needs to wait for next firmware update :(

    Good thing is that my application is small so adapting to changes takes small amount of time. And I hope that PR1.2 will finally give working Qt without many changes.

    Written by Marcin Juszkiewicz on
  7. Maemo -> MeeGo

    During last few days I was offline for most of time. Those who follow me on Twitter noticed that I was traveling. Imagine how surprised I was when I read about Maemo + Moblin -> MeeGo movement.

    First I thought that finally Nokia decided to get rid of terribly maintained base system used for Maemo5 in favor of something working. But wait… Maemo5 is already buried — Maemo6 is on a way. But wait… what is Maemo6? MeeGo rather etc, etc, etc…

    After some reading (on N900 by GPRS mostly + some public hotspots) it looked more clearly but added new questions. What about Nokia N900 support? Will it be added by vendor and supported or rather let community do it? Done by company would be better as this would obligate them to keep development alive (and merge kernel stuff into mainline).

    One is sure: MeeGo will bring many changes. Base system will be updated (good), packaging will be changed to RPM (not so good but acceptable), Qt instead of GTK+ (good), less Nokia developers (very good). Too bad that whole rush to get it done before MWC made few things unclear and that there is nothing to download to play with. There is no information how much code will be free and open (Maemo5 has lot of closed components) and what is a policy for closed components.

    What do I feel after reading blog posts, mailing lists? Time will show. Looks like N900 can have nice future, new applications backported from MeeGo but for it we need to wait as for now nothing is known yet (no code to look at).

    Written by Marcin Juszkiewicz on
  8. MDBus2 for Maemo5

    During FOSDEM I attended few talks in Openmoko devroom. During one of them Mickey ‘mickeyl’ Lauer was using his ‘mdbus’ tool to inspect and play with DBus services and methods. As tool looked interesting I decided to try it.

    Same day I played a bit with it on Nokia N900. Results were nicer then with using “dbus-monitor” or “dbus-send” but speed was a bit slow (due to Python used). But there was a hope: Mickeyl already started rewriting “mickeydbus” in Vala which should give speed boost.

    Yesterday I built “mickeydbus2” for Maemo5 using OpenEmbedded (more about it in next posts) and played with it. Few bugs appeared, but I fixed some, Mickeyl did rest and coded few improvements.

    But what this app really do? It has 2 modes basically: listener and method inspector/caller. Example listen session:

    Nokia-N900-42-11:~# mdbus2 -sl
    [SIGNAL] org.freedesktop.DBus.NameAcquired  /org/freedesktop/DBus  org.freedesktop.DBus
    ( ":1.928" )
    [SIGNAL] com.nokia.mce.signal.tklock_mode_ind  /com/nokia/mce/signal  :1.8
    ( "locked" )
    [SIGNAL] org.freedesktop.Hal.Device.PropertyModified  /org/freedesktop/Hal/devices/platform_slide  :1.12
    ( 1, [ ( "button.state.value", false, false ) ] )
    [SIGNAL] org.freedesktop.Hal.Device.Condition  /org/freedesktop/Hal/devices/platform_slide  :1.12
    ( "ButtonPressed", "cover" )
    [SIGNAL] org.freedesktop.Hal.Device.PropertyModified  /org/freedesktop/Hal/devices/platform_kb_lock  :1.12
    ( 1, [ ( "button.state.value", false, false ) ] )
    [SIGNAL] org.freedesktop.Hal.Device.Condition  /org/freedesktop/Hal/devices/platform_kb_lock  :1.12
    ( "ButtonPressed", "cover" )
    [SIGNAL] com.nokia.mce.signal.tklock_mode_ind  /com/nokia/mce/signal  :1.8
    ( "unlocked" )
    [SIGNAL] com.nokia.mce.signal.system_inactivity_ind  /com/nokia/mce/signal  :1.8
    ( false )
    [SIGNAL] com.nokia.mce.signal.display_status_ind  /com/nokia/mce/signal  :1.8
    ( "on" )
    [SIGNAL] org.freedesktop.Hal.Device.PropertyModified  /org/freedesktop/Hal/devices/bme  :1.12
    ( 2, [ ( "battery.reporting.current", false, false ), ( "battery.charge_level.percentage", false, false ) ] )
    [SIGNAL] org.freedesktop.Hal.Device.PropertyModified  /org/freedesktop/Hal/devices/platform_kb_lock  :1.12
    ( 1, [ ( "button.state.value", false, false ) ] )
    [SIGNAL] org.freedesktop.Hal.Device.Condition  /org/freedesktop/Hal/devices/platform_kb_lock  :1.12
    ( "ButtonPressed", "cover" )
    

    Asking for bus and methods:

    Nokia-N900-42-11:~# mdbus2 -s org.bluez
    /
    /com
    /com/nokia
    /com/nokia/MaemoTelephony
    /org
    /org/bluez
    /org/bluez/899
    /org/bluez/899/any
    /org/bluez/899/hci0
    /org/bluez/899/hci0/dev_00_1D_82_32_0A_22
    Nokia-N900-42-11:~# mdbus2 -s org.bluez /com/nokia/MaemoTelephony
    [METHOD]    org.freedesktop.DBus.Introspectable.Introspect() -> ( s:none )
    [METHOD]    com.nokia.MaemoTelephony.SetCallerId( s:none ) -> ()
    

    And there is also interactive mode with tab completion:

    Nokia-N900-42-11:~# mdbus2 -i -s
    MDBUS2> org.bluez /com/nokia
    /com/nokia                 /com/nokia/MaemoTelephony
    MDBUS2> org.bluez /com/nokia/MaemoTelephony
    [METHOD]    org.freedesktop.DBus.Introspectable.Introspect() -> ( s:none )
    [METHOD]    com.nokia.MaemoTelephony.SetCallerId( s:none ) -> ()
    MDBUS2>
    

    How to get it on your N900? Enable “extras-devel” repository and install “mdbus2” package. Report bugs, send us fixes, ideas, improvements. Git tree is available.

    Written by Marcin Juszkiewicz on
Page 51 / 106