1. Hacking UI for small resolutions

    One of devices which I have on desk is BUG on which we are using Connection Manager (connman) to manage Ethernet/WiFi connections. It works nice but there are problems with connman-gnome (small application which shows information from connman).

    The problem is that we have QVGA resolution screen and UI for connman-gnome expects at least VGA. The result is not nice:

    Original look
    Original look

    The main part of screen is occupied by list of network interfaces and nothing more can be seen.

    I lack GTK+ skills to rewrite application to have more sane UI but decided to try anyway. Dropped most of spacings, icons were removed (there is ‘Connected/Not Connected’ text for each interface), changed width of widgets and application is more usable now:

    New look
    New look

    Some spacing should be added in few places but other then that it looks better then it was before.

    Written by Marcin Juszkiewicz on
  2. 2.6.30 on AT91 board from Atmel

    Recently I got my AT91SAM9263-EK board back (it was not booting due to problem with backup battery) and decided to upgrade it to 2.6.30 Linux kernel.

    But I got problem which was UBI subsystem not able to initialize. This looked strange but after checking what is going on I found reason. Before I was using 2.6.28-at91-exp kernel build with OpenEmbedded and at91-exp patch added “Bootstrap” flash partition so I had three of them in NAND and just two under 2.6.30 release. Changing “bootargs” in U-Boot solved problem.

    I also enabled several things in kernel:

    • I²c with eeprom support
    • suspend
    • backlight
    • keyboard (which is just two keys: “left button” and “right button”)
    • leds (all 3 of them)

    To get sound working I updated linux-2.6.28-exp.patch to newer version and also removed most of code from it (which supported newer boards). I did not yet tested too much how resulting kernel works but at least it boots properly and supports most of components.

    Other AT91 boards should work fine with 2.6.30 but I lack access to hardware so no plans for update currently.

    Written by Marcin Juszkiewicz on
  3. Embedded package managers sucks

    Years ago someone wrote IPKG in pure shell. It can be still found in some distributions. Then it was rewritten into C and this version we used in OpenEmbedded derived systems. It had some bugs, we patched some of them, from time to time there was even upstream development done for it.

    Then Openmoko arrived and forked IPKG — new project got OPKG name. It was written by OpenedHand and Openmoko developers. Their main goals were:

    • callbacks for GUI package managers
    • GPG signed repositories
    • fixing bugs

    Many things got changed, OE patches got merged, new bugs was added. Those who use CLI version of opkg (so far the only usable client) lost some functionalities — for example there is no progress bar when packages are fetched.

    For last few months OPKG is in unmaintained mode again and I think that this is some kind of curse on embedded market package managers.

    Some time ago I discovered that when many (>50) packages needs to be upgraded then opkg segfaults during process and this is not a matter of going out of RAM as I have ~400MB free. Today it did not gave value of PATH for post install scripts… I wonder what else can be found ;(

    What are other options? So far I know two — dpkg + apt or rpm + yum. First one costs few megabytes of space, second one require also Python so it is not acceptable for most of our targets. Both also require rebuilding of everything :(

    Written by Marcin Juszkiewicz on
  4. Palm SDK has leaked

    As some of my readers already noticed there is WebOS SDK available for Palm Pre smartphone. Or rather “available” as it is leaked edition not normal release. I will not describe how to get it (using Google is enough) but rather how to get it run under Linux and a bit about what is inside.

    The bad part is that SDK is (so far) available only as MS Windows binary. I did not tried it with WINE but used XP Pro installation on one of my machines to install it. There are two additional installations to be done first — VirtualBox 2.2.x is required by Palm SDK to be installed and Safari is required for “Palm Inspector” tool (which I did not got to work anyway).

    After installation two important files: “palm_emulator_sdk_47.vmdk” and “palm_emulator_sdk_47.iso” can be found in “Documents and Settings/$USER/.VirtualBox/” subdirectories (they are also available in “Program Files/Palm/SDK/share/emulator/sdk47/” directory). There is also “Palm Emulator” icon on desktop which makes use of them.

    So back to Linux. VirtualBox hard drive image and ISO needs to be copied to Linux machine and given for VirtualBox (configuration of virtual machine can be copied from MS Windows too). It is also possible to use QEMU to boot into SDK but it can be harder to find one with working mouse emulation. This is where their changes to QEMU or VirtualBox would be handy to get — adding 320x480px resolution to QEMU is few minutes work anyway (needs to change sources of vga bios and replace system one with tweaked copy).

    What can be seen after boot? First error which I hope will be fixed in final release — “vga=864” kernel parameter results in “unknown video mode” message. Anyway other modes are working and I suggest 640x480x16 as it has the same height as Palm Pre screen. There is a one problem due that — screen has wrong calibration so it is hard to use UI.

    Palm splash
    Palm splash
    WebOS initial screen
    WebOS initial screen
    Launcher
    Launcher
    First use dialog
    First use dialog
    New contact dialog
    New contact dialog
    Dialer with two calls
    Dialer with two calls
    Cards
    Cards
    Google Maps
    Google Maps
    Video player
    Video player
    Calculator with transparent menu opened
    Calculator with transparent menu opened
    Wrong touchscreen calibration effect (I am clicking on blue dot)
    Wrong touchscreen calibration effect (I am clicking on blue dot)

    Some applications are coded in ugly style — seems to have 320x480px resolution hardcoded (Google Maps, Video player, Dialer). But there are also others which resize properly (Contacts, desktop). To play with them few key shortcuts are useful to know:

    • TAB — runs launcher
    • Escape — “minimize” application to a card

    Looks like other keys launch search tool — I have to admit that I did not searched yet for documentation.

    But what is inside of image and why it works? Image was built for “qemux86” device by using OpenEmbedded build system — no new patches added. There is SSH daemon working in emulator so it is possible to login remotely and check what is in system. There are 697 packages installed (285 of them being kernel modules). Image looks like it was built on a same system as WebOS 1.0.3 image for Palm Pre (about which I already wrote few days ago).

    Ah, I would forgot… There are few JavaScript examples in SDK if someone wants to know how to make “hello world” for WebOS.

    Final thoughts — WebOS looks interesting and I would like to play more with it on real device. The bonus part is that it is even able to run classic PalmOS applications (but this is with 3rdparty application). Too bad that there is no GSM version yet.

    Written by Marcin Juszkiewicz on
  5. What defines good laptop?

    Currently I am using Dell D400 laptop. It has few years and battery holds just for about 40 minutes. But it works still and is fast enough even to make OpenEmbedded builds.

    During LinuxTag I played with different machines to check which things bother me most. As a result of that I created some kind of list of things which good laptop needs to have (order do not define priority):

    • 1Gb ethernet card
    • wifi which works ok with mainline driver
    • hardware wifi switch handled by rfkill subsystem
    • wifi status indicator
    • bluetooth built-in
    • hardware bt on/off switch
    • bluetooth status indicator
    • touchpoint (touchpad can even not be installed)
    • comfortable keyboard layout (Fn not first key, cursors under right Shift key)
    • WXGA resolution
    • graphics chip with framebuffer in native resolution + working X11 driver
    • backlight supported by mainline driver
    • card reader (at least SD/MMC)
    • 3 USB ports
    • 4 hour on battery
    • battery used also in few other models
    • everything supported in mainline kernel

    I can live without serial port because I have nicely working FTDI USB-serial dongle and most of time I do not use laptop to connect to developer boards. From the other side I do not like to waste precious port for Bluetooth dongle. FireWire, infrared, pcmcia, expresscard or smartcard are not required — I do not remember when last time I used any of those things. Integrated video camera and microphone are bonus but also do not required (but should work if present).

    It can have any graphics as long it will provide me working framebuffer and X11 (at same time). But after fighting with my current one I would think twice before buying something with Intel chipset… I am afraid that they can forget about it existance like they did with 855GM which I use now (intelfb supports it but refuse to work with it). So it looks more like I need to check how situation looks like with ATI Radeon chipsets.

    What to buy and when to buy is other thingy… Many people recommend Thinkpads, market will also be filled with ARM based netbooks soon which will rather do not cover most of requirements but should give much longer battery live. The choice will be hard but I have few months before my next conference trip.

    Written by Marcin Juszkiewicz on
  6. I am on the LinuxTag

    As in 2008 we (OpenEmbedded project) have a booth at LinuxTag conference in Berlin, Germany. And this time you do not have to go through whole event to meet us — we are at the start of first hall on mobile and embedded area which is sponsored by Tarent company.

    This year most questions is about BeagleBoard (as usual) and FriendlyARM device (the one with WVGA screen). We have more devices available but there is a rotation of devices on a table to show something different each day. For example today we play the Big Buck Bunny movie in a loop using DLP projector.

    We had some problems with USB on BeagleBoard B4 revision. Yesterday Texas Instruments (they have a booth in next hall — you can win BB there) gave us the C3 one and we got it working with our equipment.

    This year I am staying in Avus Motel. This is the closest place to LinuxTag but also has some bad sides — yesterday I had long walk from WestKreuz station due to lack of S-Bahn which would take me to Messe Sud one.

    Written by Marcin Juszkiewicz on
  7. Palm Pre and OpenEmbedded

    Nearly month ago we got information that Palm company uses OpenEmbedded to build software for their Palm Pre smartphone. Two weeks later I read on Matthew Garret blog that there is root filesystem image available on one of Palm websites.

    What is inside? Many interesting things — you can read about it on Matthew’s post so I will not repeat. If someone wants to look inside then please take a look at /usr/lib/ipkg/ directory. It contains packaging informations which shows which packages were installed, which files were used etc. It is clearly visible that they used OpenEmbedded with own overlay separated — OE was in /home/reviewdaemon/projects/nova/oe/foss and Palm overlay in oe/palm directory. The missing thing is IP address of “subversion.palm.com” server which is used to store additional sources (propertiary and free ones). What else we can find? Build information which says that rootfs was built at 2009.05.22 14:00:49. And according to audio setup files development started in September 2008 (if not earlier).

    I wonder what kind of board they used as developer kit (they also used ARM Versatile emulation in QEMU).

    UPDATE: Palm SDK uses “qemux86” device from OpenEmbedded to run WebOS.

    Written by Marcin Juszkiewicz on
  8. Sending files over Bluetooth to S60 devices

    I use Nokia E66 phone. It runs S60 3rd edition FP1 (aka Symbian 9.2). When I switched to it sending files over Bluetooth was easy: obexftp -b BD:AD:RR:EE:SS:00 -p FILE1 FILE2 and files landed as messages in phone Inbox. But for some time it is not working — all I got was “Sending FILE1…failed” like messages.

    Hopefully obexftp tool has some options available so after some tests I got it working. And result is even better as files lands in file system instead of Inbox. The trick is to give path on phone to obexftp: obexftp -b BD:AD:RR:EE:SS:00 -c E:/folder/on/card -p FILE1 FILE2 and files will land there.

    Simple, nice and the most important: working :D

    Written by Marcin Juszkiewicz on
Page 57 / 105