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.

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.

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
  • grapics 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.

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.

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.

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 😀

TI: please fix your USB

I have BeagleBoard in B7 revision. So the only USB port which is available is the OTG one. I use self made host cable which connects 4 port hub (with own power supply). This gives me keyboard, mouse and Ethernet.

Or rather should give… Current situation (2.6.29-angstrom) is that I do not have any USB devices available because kernel do not recognize them — at least not on each reboot. During last 10 reboots nothing was found…

So Texas Instruments engineers: do something about it please about your drivers.

And no, buying C3 revision is not an option — I will rather wait for version with non-USB Ethernet on board.

UPDATE: if you have U-boot 2009.01 then flash 2008.xx one or 2009.06 from Ångström. This will give you back standard behaviour of MUSB: ‘throw a dice, if you will get 5 then USB will rather work’.

EP93xx fight continued…

During my recent OpenEmbedded related work I merged gcc patchset from Martin Guy to add support for Maverick Crunch FP unit present in Cirrus Logic EP93xx ARM cpus. This makes floating point operations faster then it was before.

But does using it has a sense for whole system? Is it possible at all? The answers are No and Yes. I have root filesystem for EDB9301 created with Maverick optimisations but I also have plain armv4t one for same board. They both work but I do not recommend using Crunch optimized one — there are strange errors. For example “HZ=5.33381e-315” is given instead of “HZ=100” in openssl speed test (problem is somewhere in glibc).

Let me quote Martin’s mail:

My current recommendation is to enable crunch only in the floating point intensive libraries and applications that your application system uses, because having more than one crunch-enabled process running in the system makes the context switches slower because the kernel has to save and restore 19 64-bit registers at every context switch. It doesn’t bother doing this if only one process is using the FPU thanks to some clever Buytenhek laziness). I don’t have figures for how much of a difference this makes, but I guess one could calculate it from the context switching rate shown in the output of “vmstat 5” and the instruction times.

I switched “ep93xx” machine in OE back to armv4t optimisations. Also I am working on adding some more EP93xx related patches from Hasjim Williams (he made first set of patches for OpenEmbedded and Martin Guy improved them and moved to newer GCC).

One note for end of story — I am not interested in doing more ep93xx toolchain work. If your device/company need such help then contact Martin Guy for consulting offer.