I first wanted to build the SIP-software myself, but that'd be a lot of work: writing an user-interface, the config-menus, the audio parts... I'd rather have a way that's a bit more speedy. While researching, I reached this forum posting. It seemes SMC has another phone, she SMCWSP-100, which seem to be completely identical, apart from the software. They aren't completely the same though: a WSKP100 flashed with SMCWSP100-firmware flashes OK but won't boot past the bootloader. I decided to download the SMCWSP100-firmware to see if I could find out why.
As soon as I had unzipped, uncabbed and unshielded the archive, the reason became apparent: while my phone only had 16MB of flash to boot from, the SMCWSP100 had a whopping 32MB, which was divided over various partitions. Perhaps it was possible to shrink this to fit inside the 16MB, though?
Luckily, it was. Consolidating all the small partitions into one big one gave me 14MB of free space on my phone. All the data from the SMCWSP100 added up to about 17MB, so I had to get rid of about 3.5MB. I looked around in the filesystem and saw that a few pictures were meant for a PDA-sized screen, so I deleted them. I noticed a few binaries were unstripped, so I stripped them. I noticed a 'host'-binary of about 1MB, which didn't seem to have a function, so I deleted it. The ext2fsck-binary wasn't necessary anymore either, so into the bitbucket with it. Eventually, I ended up with a filesystem which jffs2-image measured no more than 13.5MB.
The kernel, however, still wanted the flash to be in the format of the old partitions. It's source, luckily, is downloadable from SMCs site, so I decided on rebuilding it so I could add some more neat features like NFS support. Unfortunately, the version SMC has on its site has a few drawbacks: it doesn't seem to be 100% the same version as the kernel inside the device itself, so a few modules won't load. Secondly, the WiFi is controlled using a proprietary module, so I had to compile the kernel with exactly the same compiler version as SMC had. Thirdly, there still were a few bugs left in the kernel, which I had to weed out first.