Qtopia on Siemens SX1

Read here for my adventures to get GNU/Linux with the Qt-based Qtopia user interface running on my Siemens SX1 mobile phone. I use Ubuntu Linux 7.04 / Debian for everything, some things might be different to follow on other platforms. First of all, I am not responsible for anything that happens if you try this for yourself, my tips may not be correct and they could even damage your phone! Before starting, I recommend installing FExplorer file-manager on your phone, it greatly simplifies all tasks.

The two most important sites for further reading are http://forum.oslik.ru/viewforum.php?f=46 and http://www.handhelds.org/moin/moin.cgi/SiemensSX1

The short way
Use this if you don’t want to compile everything and patch your phone (quite dangerous). Make sure that you have the lastest firmware (FW 15 Int.) Then you have to prepare a MMC card,which should have around 128MB. Create the following partition layout:

ext2 ~60MB
fat16 (remaining space)
swap 32MB

We do this with fdisk on a terminal:

$ fdisk /dev/sdb

First of all delete all partitions:

Command (m for help): d
Partition number (1-4): 1

Command (m for help): d
Selected partition 2

Command (m for help): p

Disk /dev/sdb: 128 MB, 128450560 bytes
255 heads, 63 sectors/track, 15 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System

Let us create the 3 new partitions:

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-15, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-15, default 15): +60M

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (9-15, default 9):
Using default value 9
Last cylinder or +size or +sizeM or +sizeK (9-15, default 15): +15M

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (12-15, default 12):
Using default value 12
Last cylinder or +size or +sizeM or +sizeK (12-15, default 15):
Using default value 15

Let’s have a look if all went well:

Command (m for help): p

Now we have to change the partition types:

Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 6
Changed system type of partition 2 to 6 (FAT16)

Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): 82
Changed system type of partition 3 to 82 (Linux swap / Solaris)

It should look like this now:

Command (m for help): p

Disk /dev/sdb: 128 MB, 128450560 bytes
255 heads, 63 sectors/track, 15 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sdb1 1 8 64228+ 83 Linux
/dev/sdb2 9 11 24097+ 6 FAT16
/dev/sdb3 12 15 32130 82 Linux swap / Solaris

Write changes and quit fdisk:

Command (m for help): w

Now unmount the MMC card and remount it again and prepare the partitions like that:

$ mke2fs /dev/sdb1
$ mkfs.vfat /dev/sdb2
$ mkswap /dev/sdb3

Now we are ready to copy some files onto the partitions. Let us start with the FAT16 partition. Create an empty directory and download u-boot.bin.mmc and rename it to u-boot.bin and copy it into our new directory. Then download ubootloader14.zip, extract it’s content and move everything except the u-boot.bin into our directory. Lastly download kernel.tgz, extract and copy uImage.bin into the directory. Then move the content onto the FAT16 partition on the MMC card, so that it’s layout should look like this:

E:\Load_uboot.exe
E:\System\libs\uboot.ldd
E:\u-boot.bin
E:\uImage.bin

If you managed to do that, let us continue with the ext2 partition. Download the file rootfs.tgz , extract it and copy it’s content onto the ext2 partition of the MMC card. The partition then should look like:

/bin
/dev
/etc
/lib
/mnt
/modules

etc…

Unmount the MMC card and put it back into your SX1. Open up the file manager and start “load_uboot.exe”. If your phone crashes, make sure that you have the lastest firmware (FW 15 Int.). You could also try some of the other u-boot.bin or uImage.bin files available on the above mentioned sites.

Have fun and tell me if it worked for you!

The long way (still in development)
Still here? Ok, then lets see, read this site. These guys do a good job at making this possible. I just collect everything to actually get it running. Read everything on this page, especially this pdf and install kermit and minicom and configure them according to the pdf. Use this kermrc and don’t do the rest. Then read this page and install the packages corresponding to your system. Again, make sure that you read and understand everything.

Go back to that howto and download these things:

Open up a terminal and unpack everything and follow these steps:

cd u-boot-1.1.4
cat patch-1.1.4-sx1 | patch -p1
make SX1_config
make

More to come …