CyanogenMod 9 for HTC Wildfire S (ALPHA3)


Maybe you already know that I worked since January 2012 on porting CM9 to the HTC Wildfire S (Marvel). It took quite a while to figure out how Android is working and how to get the the OS correctly talking with the hardware. Today I've released ALPHA3 of my work which is a pretty stable version. The Wildfire S is not a supported Android 4.0 device, so you have to workaround a lot of things and use old binary blobs. This also means there will probably never be an official CM9 release for the Wildfire S. However most of the stuff is working pretty well and you can live with the known bugs. Known bugs: Camera isn't fully working, you…

CM9 (Android 4.0 ICS) and deep sleep


I've had the problem that the device didn't want to switch into deep sleep mode if radio was on. What is deep sleep? To make it simple we break it down. Your device has 3 modes. The fisrst is "Screen On and Awake", "Awake" and "Deep Sleep". If you use your device it you're in the first mode and you need a obviously a lot of battery. The second "Awake" means it is doing some background work. Checking for calls, checking Emails, syncing contacts. The last one means it goes for some time into a mode were it uses almost no battery, and this is Deep Sleep. If you don't do anything and your phone is in your pocket you…

libhtc_ril.so and segfaults


If you try to get a new Android version, in this case CyanogenMod9, working on your old phone you have to deal with binary blobs. One of these blobs is the library talking to the radio, libhtc_ril.so. I wanted to document what I learned about libhtc_ril.so. I've wanted to get the library version matching my baseband version working with cm9. This resulted it several segfaults. So I've started to strace the rild process to find what's going wrong, which permissions are missing etc. The library doesn't check return values so it segfaults. One of these segfaults was a missing kernel interface called usb_function_switch. The file should be in /sys/devices/platform/msm_hsusb/usb_function_switch. I've implemented that function in the kernel and it still segfaulted…