For a long time we're now hacking on the Palm Pre device to get FSO working: Time for a short summary were we are and what has do be done in the near future (mickey already pointed out which components are working and which not).
The modem was the big show stopper when we initial began with hacking on the Palm Pre. The protocol Palm uses to communicate with the modem is nothing already known in the FOSS community. Yes, there is even an AT-Port you can use but there are missing some commands we need to make calls or register for so called unsolicited responses. So the only way to bring FSO to the Palm Pre was to reverse engineering the protocol.
Most of the basic reverse engineering is done. We know how the protocol works and how we can use it. We wrote an implementation of the protocol and it is used in FSO's fsogsmd to interact with the modem (checkout msmcommd and libmsmcomm in the msmcomm repository). We can make calls and see when a call is comming in.
Currently we are using both ports (the AT and the binary one) to communicate with the modem. So we have all functionality you want have to on a basic phone (Call, SMS, …) but no GPRS/EDGE/HSDPA connection. Normally webOS uses the AT port to setup up a PPP connection and as we are using it to do some other stuff we cannot create a PPP connection anymore. When we are ready with the msmcomm protocol to support most of the GSM stuff we can disable the AT port in fsogsmd and use it for creating a PPP connection. So you see, this is no real show stopper anymore, just a matter of time 🙂
What have to be done on the modem level? I assume that we currently have about 10% disassembled from the msmcomm protocol. There are many things missing (SIM API, Network related stuff, …). To improve this I am currently writing a little tool called msmsh.
Suspend/Resume works out of the box with the kernel from webOS without any modification. You can do a simple echo mem > /sys/power/state and the device suspends. To resume there are several wakeup sources defined in the kernel (Power Button, Volume Keys, Slider, Headphone …). I already wrote a plugin for FSO's fsodeviced to support suspend/resume within FSO.
This is our current show stopper. Palm implemented a driver in the Linux kernel which only does low level communication with the touchscreen. It forwards all data from the touchscreen to the device node /dev/touchscreen. Some people are trying to find out how this data is structured to use it without requiring any of Palm's tools. But no real progress here.
Currently we are building an uImage with integrated rootfs and then boot it from our local PC on the Pre device to leave everything else on the Pre as it is. When we are ready with basic telephony and touchscreen we will release this uImage so everyone can test it on their device. It will include zhone2 (a rewrite of zhone in vala) to have a simple UI to test FSO's telephony support. Later we want to integrate a bootloader into the device so you can easily switch between webOS and a FSO based linux.
So you may see, many things are already done and we're close to have a full featured FSO framework running. If you are interested in running your Pre without webOS and with a FOSS-only userland then get in contact with us: Use smartphone-userland mailinglist or #openmoko-cdevel/#opemoko-dev on irc.freenode.net.