Free software, open source, copyleft. Freedom.
2010-02-26
This is a continuation to the post about Ubuntu 9.10 in SmartQ 5. I keep getting a constant flood of emails that remind me that I should upload my patches, so here they are :)
Before giving more details I would want to recommend against using Karmic in your SmartQ 5. Installing Ubuntu’s previous version (Jaunty) is straightforward and it performs faster than Karmic.
When I asked in #ubuntu-arm about the performance regression I got no answer. I suspect that default compilation flags are responsible, most likely related to VFP. Slowness is most noticeable and annoying in interpreted languages, like Perl. So, unless some of the new features included in Ubuntu 9.10 (Karmic) are important to you, don’t bother trying.
Anyway, if you are still eager to install Karmic, here is the modified mountall package.
Patches are required because Karmic expects a modern kernel. There are people trying to port SmartQ source and drivers to a recent kernel, which would be the propper way of fixing this issue.
My quick and dirty hack to the mountall package is able to boot with older kernels. It was not meant to be published, but here it is by popular demand. Keep in mind that it is only a workaround and not a proper solution, the contents of /etc/fstab seems to be ignored during boot, other programs may fail or require patches too, and there could be more hidden issues. Fell free to share your fixes.
2009-11-30
I ran a quick test of latest Ubuntu and Kubuntu desktops in the SmartQ5, nothing serious, just installing and launching some applications for curiosity’s sake. KDE 4 feels slower than GNOME, but admittedly, both of them are too bloated for the hardware. Nevertheless, it was fun to play with a full desktop in such a small device.
2009-11-28
A new version of the Qi bootloader for SmartQ is available, now called SmartQi bootloader:
http://zenvoid.org/software/qi-smartq
I’ve included the excellent patch made by David F. Carlson, so the CPU will run now at 666 Mhz in its maximum performance setting (was previously set to 533) and memory timing parameters are optimized. The result is greatly improved performance.
Linux kernel must be named /boot/linux-SMDK6410.bin and there should be 2 MiB of free, unpartitioned space at the end of the SD card. To install the bootloader, use the install-smartq-qi.sh script:
./install-smartq-qi.sh /dev/SD_CARD_DEVICE qi-smartq-20091126.bin
Currently I have tested on a Q5 with the provided kernel only. Feel free to test and give feedback, but please, before doing so be aware that the software is for people who are not afraid of hacking their devices and maybe taking some risks in the process. It distributed in the hope that it will be useful, but without any warranty.
Source code is now on gitorious too, enjoy hacking:
http://gitorious.org/qi-smartq
2009-11-06
This is a cross toolchain for ARM that uses Ubuntu 9.10 compilers and libraries, so it (hopefully) maintains compatibility with the native compiler for ARM. Precompiled binaries for i386 and the complete source code with its build script are here:
http://zenvoid.org/software/cross-compiler/
It works for me but not warranties, remember to run the DejaGnu test suite if required for your project. Tests results and patches are appreciated.
2009-06-12
This release has some fixes and helpful changes for debugging. But remember that it is experimental and unsupported code, so be careful. Source code and binaries are here:
http://zenvoid.org/software/qi-smartq
The kernel is also updated. It is recommended to use the kernel and modules included in that directory as it has been modified to show Linux console messages on the screen (very useful for locating and fixing problems). To install the bootloader, follow the instructions of the previous release.
When booting, it shows a very short red light, followed by a short yellow, followed by green light. If green light is reached, it means that the bootloader has finished its job and Linux is booting. If you are using my modified kernel, you should see the boot messages from this point. This is the meaning of the LED lights:
Blinking red LED should mean that the battery is too low, but it is not implemented yet.
Photos of the boot messages and Mer distribution running from SD card:
If you are interested in cooperating with the Mer project please join to the #mer channel at irc.freenode.net.
2009-06-03
Update: This information is old, please read a more recent post on this topic.
I made a modified Qi bootloader for the SmartQ 5 MID that can boot from the
external SD card, as a convenient way of developping or testing OS, or for system rescue purposes in case of internal flash corruption. This is the bootloader operation:
The SmartQ Qi bootloader is written to the end of the SD card. Create partitions to suit your preferences, make at least one ext2/ext3 partition to install the root filesystem and optionally a swap partition, but always remember to reserve 1 MiB of free, unpartitioned space at the end of the SD card. To be precise, at least the latest 1042 blocks (512 bytes each) must be reserved.
The precompiled bootloader and a kernel, installation script and source code are here:
http://zenvoid.org/software/qi-smartq
Look at the script install-smartq-qi.sh in order to make a bootable SD card:
./install-smartq-qi.sh /dev/SD_CARD_DEVICE qi-smartq-20090603.bin
To boot from the SD card, keep the “move” (also known as fullscreen) button pressed and then press the “power” button.
There is no battery check at the moment, look for the next release, I’m working in that.
2009-03-06
I’ve made a custom cross-compilation toolchain for ARM processors. It works either
as a standalone toolchain or within Scratchbox2.
http://zenvoid.org/software/cross-compiler/
Most precompiled toolchains were not suitable for my own purposes since I needed a very specific version of binutils and glibc, and trying to build CodeSourcery’s toolchains with their included script was too much masochistic.
The source code and build script is included, and unlike the build script
in CodeSourcery toolchains, this one actually works. It is meant to be
hacked, built from source code to create toolchains with custom patches
or with different tool and library versions.
2009-02-09
I was thinking about an automated method for rebuilding a subset of Ubuntu‘s packages. There are reasons for this, like optimized compiler flags for a particular software device or porting to alternative architectures. In particular, it would be interesting to provide a wider hardware support to Mer linux distribution.
So, my experiment started with a flexible script in Ruby that can be used to do the folowing:
At this point, with the help of reprepro, all required source packages can be automatically fetched and uploaded to a custom repository. It should be theoretically possible to compile everything by doing the following:
Manual interaction is expected to fix dependency loops and packages that need to be compiled within the real (not emulated) architecture. That’s the theory, and this is practice and conclusions:
Before starting the massive compilation, it would be better to wait until Jaunty is released. Jaunty is in development in this moment and its repository is broken, there are dependencies that can’t be compiled because the sources do not exist or the version in the repository is not compatible.
A dependency hell was somewhat expected, but I have to admit that I was surprised. In order to compile a minimal system, there are 43 required source packages. Including their dependencies, 626 source packages need to be compiled; among them, several different versions of the programming languages python, tcl, openjdk, mono, ruby; apache, emacs, kde 4, gnome and xorg, just to be able to boot and login into a shell. Not funny. Debian will probably have the same issue.
I suddently became interested in the base system used in fremantle, some packages could be imported into Mer to override some componentes of Ubuntu base system, but it should be done with care, nobody wants to bring back Maemo reduced funcionality. Very hard work ahead.

Unless otherwise stated, articles and their accompanying pictures are licensed under a Creative Commons Attribution 3.0 Spain License.
roberto@zenvoid.org