jump to navigation

Linux Support for a Gem April 22, 2009

Posted by Florian in Devices, GPE, kernel concepts, Linux, OpenEmbedded.
Tags: , , , ,

Some time ago I got a nice looking and interesting TOPAS910 evaluation board for the ARM based Toshiba TMPA910 series of SoCs. With its black PCB and golden labels for the expansion ports it is definitely the best looking evaluation board I have seen so far. But its interesting from a technical point of view as well and of course you can run Linux on it.

Topas 910 Board

Topas 910 Board

The TMPA910CRAXBG SoC on the board is based of an ARM9 core clocked with 200MHz and a pile of external interfaces such as:

  • TFT controller
  • USB client
  • NAND and NOR flash
  • SPI
  • Touchscreen
  • ADC
  • SD / MMC
  • UART

The board can be powered from the USB port, has Ethernet, a QVGA TFT display and all necessary interfaces to get started with the SoC.  Some details can be found here.

Board Details

Expansion Connectors

The initial Linux port was made by a company called BPlan known for their Amiga projects. They provide two ports: A real port to the hardware platform and one making use of some proprietary OpenFirmware-like bootloader. The latter is quite useless because it depends on calling its firmware for every hardware access but the 2.6.26 patch, bootloader and documentation they provide on their website are a good start. After a deeper look into the kernel patch it was clear that they left a lot of things to do: Only half of the TFT, NOR flash, USB, Ethernet anf the serial port are supported. It among other lacks a driver for SD, NAND, audio, the joypad and all the GPIO ports.

I wasn’t able to resist and started a small project to improve support for it. I have updated the kernel to 2.6.29, added gpiolib support and drivers for joypad and the small LED display which helped testing the GPIO drivers. Of course I have OpenEmbedded support for it ready and pushed upstream today – even if this still uses the old kernel it is useful to build a tiny userland that is able to live in NOR flash. Now I need to get some storage facility sich as SD or NAND flash working in order to deploy a proper filesystem image.

The TMPA910 is the chip in the BGA case in the center of the image.

The TMPA910 is the BGA case in the center of the image

I would be interested in getting to know any hardware that is using this TMPA910. The results of my work: Sources and a small demo image can be found at KC Labs. We haven’t announced it yet, but its there already: KC Labs is the new Open Source projects website at kernel concepts.



A smart BeagleBrick March 29, 2009

Posted by Florian in Devices, GPE, Linux, OpenEmbedded.
Tags: , , , , ,

Some time ago I wrote some lines about the nice combination of projected human interfaces such like the TI PICO projector for visual output and the ‘laser keyboard’ for input. The innovation you can gain from such a combination is a device whose interfaces dimensions can can differ from the dimension of the device quite a lot. After playing around and having an interesting time watching people using these technologies (e.g. at FOSDEM) I finally manged to create a device study combining the components into a single case. It turned out to be more complicated than I thought and the way to a ‘production ready’ device would involve a lot of research and improvement.The main idea was to have something you can touch and try if it can be useful.

But let’s take a look at it first – for now its just a kind of brick with a BeagleBoard and some more components inside.

"The Device" in action

"The Device" in action

From a technical point of view the contruction is quite simple – its just a collection of easy to get components:

  • TI BeagleBoard (Rev. B4 in this case)
  • Celluon CL850 “Laser Keyboard”
  • A tiny USB hub
  • TI PICO projector
  • Some custom USB cables
  • Huawei UMTS modem
  • One Bopla BOS 800 case
  • A small RS-MMC card for the root filesystem

The batteries didn’t fit into the case – the same problem like my GSM evaluation platform I intended to use for connectivity. Instead of this I had to use the Huawei modem but lost an easy to use audio part (I still would like to see these interfaces in some kind of smartphone) and the charger for Li-Ion batteries. The USB connected UMTS modem is advertized to have audio capabilities but there is no Linux support for this feature yet. Another component that caused some headaches is the HDMI cable for the PICO projector: It is thick and its big plugs waste a lot of space in the small case.

I removed the cases of USB hub and keyboard to make them fit into the case. From the BeagleBoard I had to remove the S-Video connector in order to reduce its height.

The current software is way less spectacular than you might think. Its a simple Ångström distribution GPE image built with OpenEmbedded. I had to replace Xorg with Kdrive in order to get the Xrandr extensions working and added some more software for testing such as an additional browser. This is not really the software you wold expect for a modern smart phone but its a good environment to test an uncommon mobile computer.

So what did I find out in the initial tests?

  • It looks very very geek!
  • Its useful to some extend but you need an even surface.
  • The mechanical design needs improvement. This ‘brick’ case is not really flexible and even a better arrangement of components (e.g. projector and keyboard side by side) would save a lot of space on the table.
  • It would be necessary to have a different lense for the projector: You want a wide angle lens to get a large projection area in a short distance drom the device. As you can see in the image the desk space you need is quite high but the image is still small.
  • The power consumption of the projector is a major problem. It is hard to power with batteries and in a plastic case it gets very hot.
  • Someone needs to come up with a clever holder for a sheet of paper to make it a useful screen. Suggestions welcome!
  • If I have the chance to do so I would like to try an improved prototype with a small secondary display, batteries and a keypad.
Typing on the table

Typing on the table

A device I could imagine would be a kind of a stand for a smartphone with built-in projector module. The next generation of projector modules should be small enough for this and comsule less power. The stand would allow the phone to stand upright on the table and provide the keyboard functionality. The advantage of this solution would be that you would not have to carry around the keyboard engine all the time. And because of the orientation of the phone you can get larger ‘screens’ if the projector is in the top end of the phones case. Maybe I should sketch this for the next blog entry… :)

Have a nice time!

The ‘other’ BeagleBoard March 8, 2009

Posted by Florian in Devices, Linux, Maemo.

I visited the Embedded World fair in Nürnberg on Wednesday this week together with some colleagues. Like always on events like this I stumble upon nice devices with Linux support… in fact embedded hardware like development platforms and devices for industrial use or consumer network stuff without running Linux seems to become uncommon. Just a few years back hackers had to search hard for useful devices or invest a lot of time reverse engineering consumer hardware. Unluckily cellphones are still problematic – even the linux ones are usually locked down so that they are not useful for developers.

But let’s stay with the ‘good’ ones: Karo Electronics showed a new low cost DIMM sized embedded module based on a 400MHz ARM9 CPU (The datasheet mentions Freescale, but lacks the name the chip.) A friend bought a similar one (a TX27) which came with full Linux kernel sources.

A real suprise was the booth of EBV: They build and sell their own BeagleBoard called EBVBeagle.

EBVBeagle (image source: EBV)

EBVBeagle (image source: EBV)

Its actually a BeagleBoard revision C2 with green PCB boxed with some useful accessories. It comes as a quite complete starter kit with AC adapter, USB to Ethernet adapter, MMC card, USB hub and some cables. The official press release can be found here. They claim (but not gurantee) to be able to deliver within two weeks. Looks like the only drawback is the minimum order value of 250 EUR which is – of course – more than the EBVBeagle kit.

Apropos Beagle Board – Maemo (which runs on the BeagleBoard too) has released some new bits. First  Maemo 5 alpha SDK is ready and released. This is pretty good for people using it on the Beagle Board because only the Maemo 5 SDKs support the OMAP3 SoC. For people who want to learn about Maemo development or development for Limux mobile devices in general there is a new Maemo Tutorial release. The Maemo Tutorial provides quite easy to understand and detailed information about Maemo platform and application development. It gives a lot of useful information about development for other Linux mobile device platforms as well.


Fun with BeagleBoard and projector devices January 19, 2009

Posted by Florian in Devices, GPE, kernel concepts, Linux, OpenEmbedded.

A PICO projector is a nice thing: An interesting toy, useful tool or whatever you might call it. I got one of these from Textas Instruments in order to prepare small demonstration of an idea… but more about this in a later article. The most intersting question about these PICO projector engines is what they mean for the design of future devices.

From a mechanical point of view they offer a very important improvement: It offers display sizes that are not limited to physical size of a device. This is an interesting perspective for mobile devices. Will we finally get smartphones that provide a display which is useful for office work and internet browsing and still small enough to fit in a pocket. (I have to admit that I carry a quite modern/big smartphone – a Nokia E90 – in my pocket: It fits, but I have to say that there is some room for improvement. :-)

When I read the announcement of the PICO projector at the BeagleBoard mailinglist another device I read about some time ago came to my mind: A projection keyboard.

Keyboard projection on desk

Keyboard projection on desk

Even if it takes a little bit of time to get used to the projection keyboard it is an interesting alternative for mobile use. If its well calibrated for the surface it is a quite usable replacement for a real keyboard and still fits in a pocket. But more important for me: After a closer look at the construction I am convinced that it would be possible to reduce the size quite a lot. You see, I have mobile devices in mind all the time :-)

BeagleBoard with Projector and Keyboard

BeagleBoard with Projector and Keyboard

The BeagleBoard is a nice platform because its performance and interfaces are similar to what we will have in quite some mobile devices soon. Its based on an OMAP3 SoC which is designed for powerful mobile devices and offers all sorts of peripheral controllers like USB host and OTG, TFT controller, SD interface and SPI. Several companies announced OMAP3 based devices already.

For my initial experiments I used the devices you can see in the image above. Apart from the BeagleBoard, a small USB HUB, the projection keyboard and the PICO projector there is a cheap USB Wifi adapter, a serial cable and a sheet of paper. Think about adding a powerful battery (power consumption is a very important topic, especially regarding the projector and the keyboard) – you would end up in a quite small device already. Not too bad, compared to the popular Netbooks but still with some drawbacks and a good mechanical design might be a challenge.

The BeagleBoard here runs a custom Linux filesystem with some GPE and other GTK+ based software built with OpenEmbedded. The latest 2.6.28 kernel OE builds seems to work pretty good, one major improvement seems to be the reliability of the USB OTG port which caused a lot of trouble in my previous tests.

Now I’ll add additional componets to get a more complex environment for playing with components and software I assume to be relevant in near future…

MOTODEV Studio for Linux: A brief review August 27, 2008

Posted by Florian in Devices, Linux, Source.

Knowing several SDKs for mobile devices available in the market such as OpenMoko Freerunner, Nokia N810 and several other I decided to take a look at the new MOTODEV Studio for Linux by Motorola. They published the preview release 0.3 a short time ago. Its quite appealing to write applications for all the MOTOMAGX devies out there. But it turned out that it is not really easy and the fun seems to be limited even if the MOTODEV Studio itself looks and feels quite nice.

The MOTODEV Studio preview comes as a 381MB zip archive which contains install instructions (PDF) and an executable binary installer. Even if the website says that it requires RHEL4 it installed without trouble on my Ubunty 8.04 after switching from GCJ to a SUN JRE. It requires ~900MB of disk space (no 3GB like the website says). There is an installer for Windows as well, but trying this is a job for someone else ;-)

The Eclipse (they use 4.0.3) IDE’s developer perspective looks pretty good and is easy to use even for developers who are not used to Eclipse at all. Only the fact that it needs a big screen to become useful is a problem for the users of many laptop computers which do not offer a screen higher than ~800 pixels. Resolutions below 1280×1024 result in a very small editor window.

Developer Perspective

Note the documetation browser at the right side of the window. There is a lot of documentation included already and integrated into the Eclipse help mechanism.

The VMware set-up and creating a configuration for the device emulator is rather trivial with the step-by-step instructions. Make sure to have VMware player 2.0.4 installed – the website still has 2.0.3 as a requirement which did not work for me.

The device emulator starts a VMware instance booting into a Linux system. Once the emulator is running it opens a tab in the IDE with a virtual device. It somewhat reminds me to Xoo :-)

IDE with emulator

IDE with emulator

With a set of example applications included it is very easy to get an application started. Creating a new project you are offered five application skeletons to choose from which includes a GUI application that shows how to use the contact database API.

So far the whole SDK looks really promising and much more convenient for Linux developers than the Series60 SDKs. But currently there are some bad limitations:

  • No integration of real devices yet – no binaries for a real handset and no debugging on a device.
  • They say that current MOTOMAGX devices won’t be supported by the native SDK and support will be limited to the next generation of devices.
  • Even if Motorola call MOTOMAGX an ‘open’ platform its openness is very limited and does not really compare with an open platform open source developers would like to see. Environmets like OpenMoko or Maemo offer a way higher degree of freedom.
  • The developer community and therefore the number of applications available is quite likely to be small in near future – compared to established platforms at least.
  • Some strange limitations in the IDE like the fact that source files are only usable if they have the extension ‘.cpp’ might make it quite hard to port existing software.

All in all its a big step into the right direction, but there is atill a hell of a lot of work to do. I guess it would be a nice idea for some MOTODEV Studio developers to have a chat with us Maemo people at OSiM next month.

Have a nice time…

OpenEmbedded Devices August 11, 2008

Posted by Florian in Devices, Linux, LinuxToGo, OpenEmbedded.
add a comment

One of the most frequently asked questions at the OpenEmbedded booth at LinuxTag was about the devices supported by OE. In fact this is not the most interesting question people could ask because adding a new device description to OE is really easy. What you need is a basic idea about your hardware platform and the sources of a Linux kernel for your device. (Yes so far its Linux only, but I do not see a real reason not to build other operating systems with OE. What you have to do is to set some basic information about your device such as architecture, device features and a provider for your kernel (which is described in an extra bb file).  An easy to read example how a device description can look like is h5000.conf (for the HP iPAQ h5000 series devices).

But for the people who want to take a look what is supported currently I have extracted (and edited) the description frome OEs machine configuration files. Since the OE web server including the wiki is down I published the list at LinuxToGo wiki.

Have a lot of fun…

Maemo Summit July 22, 2008

Posted by Florian in GPE, kernel concepts, Linux, Maemo, Source.
1 comment so far

Good news for me… after missing GUADEC and other interesting events it looks like I’ll make it to the first Maemo Summit in Berlin. The list of participants is quite impressive – I guess this will be a really interesting event. Just join us there :-)

I read a few lines about odeviced… anyone else who thinks that using something like this for Maemo might be a goo idea?

I do not have much time left for blogging and coding currently – family and work keep me busy these times. But a few good things are in prgress – OpenSync’s roadmap indicates that they are close to a new release. This will be a much better base for MaemoSync than current SVN trunk. Even GPE makes a little bit of progress. Graham continues fixing various PIM bugs and gpe-memo is close to become ready for its first release.

Have a nice time…

LinuxTag 2008 summary May 31, 2008

Posted by Florian in GPE, Linux, Maemo, OpenEmbedded.

Linke every year we had a really good time at LinuxTag! It is always a great event talking to interested users, business people and other developers. For the projects sharing this booth such as MyStep, Jalimo, GPE and OpenEmbedded it was a great success. For me it was the first time representing OpenEmbedded at a fair like this – with good results: We had quite some people who knew OE and asked specific questions and many developers with interest in using it.

LinuxTag always gives a lot of inspiration for new things to do and projects to check out. I know about some interesting software we need in OE soon – things like the Sugar framework for the OLPC and x2go. Other important tasks are to publish a list of evices that are defined in OE metadata and pushing the mobile-linux project forward.

In the Maemo track I had a short talk about GPE applications for Maemo – the slides of my talk can be found here. Unluckily I was not able to attend more of the interesting talks in this track. But I found out that the Mamona people seem to like OpenEmbedded at least :-)


The Tarent and Mobile booth right after opening in the morning… it was way more crowded a short time later.


Many thanks to all the people organizing LinuxTag and Tarent for booth and the big red sofa for sitting down to write my blog.

LinuxTag is (almost) there May 27, 2008

Posted by Florian in Linux, Maemo, OpenEmbedded, Source.
add a comment

In a few hours LinuxTag 2008 will open its gates. There is a large booth for mobile and embedded Open Source projects in hall 7b – I’ll be there for OpenEmbedded. GPE is there and right next to us there is the booth of the OpenMoko folks.

Using CMake for Maemo development April 11, 2008

Posted by Florian in Linux, Maemo, Source.
add a comment

Since OpenSync switched to CMake build system I had to get along with CMake in the Maemo SDK. I have to admit the fun was limited. In fact CMake has some advantages over autotools – most notably: It is much faster. One major drawback is that it is more complicated to use pkg-config with it.

I have never worked with CMake before, but OpenSync had some quite good examples how to check and support additional libraries. So I hacked cmake support for some basic Maemo components (libhildon, libosso) and Maemo-like Debian packages.

My cmake files can be found here:


CMake itself is in the official extras-devel repository at maemo.org. Just add this line to your sources.list:

deb http://repository.maemo.org/extras-devel chinook free

The package is available for all other SDKs from the same location.

The DpkgDeb.cmake file is based on the updated DpkgDeb.cmake by Mehdi Rabah. The other ones are based on random files found in OpenSync SVN.